Login
Computer Science @ Rochester
Friday, January 21, 2011
2:00 PM
Computer Studies Bldg. Room 703
Dr. Peng Wu
IBM Research
The challenges and promises of trace compilation: what we have learned from building a trace-JIT on top of J9 JVM/JIT
Trace-driven compilation is a dramatically new approach to compilation, where the unit of compilation is formed dynamically, out of executed instructions. The past decade has seen significant advances in trace compilation, especially in binary optimizers such as Dynamo and in dynamic compilers such as TraceMonkey (Javascript) and SPUR (Javascript,) and PyPy (Python).

While method-based compilation has matured over decades of compilation research and best engineering practices, trace compilation is still a fledging field. Many research questions remain open among skeptics and advocates alike: What is trace compilation and the theories of trace compilation? How does the best trace JIT today compare to the best method-JIT? Can trace compilation ever compete with method-based compilation? Can trace compilation be better than method compilation and why?

In this talk, I will describe the FIORANO trace-JIT, a Java trace-JIT built on top of IBM's J9 JVM/JIT. This is the first trace-JIT that is built on top of a mature method-based compilation framework and with the goal of competing against one.

I will focus on the design of the most intriguing aspect of trace compilation, trace selection, that is the algorithm to form traces out of execution. We believe trace selection holds the key that distinguish trace compilation from method compilation. And the ability to dynamically form larger compilation regions is the the true promise of trace compilation. As an on-going project, our trace-JIT today achieves almost comparable performance as the original J9 JVM/JIT. I will explain why we view this as a positive result for trace compilation, and describe the challenges that lay ahead.