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.