Incremental Dynamic Code Generation with Trace Trees
Andreas Gal, Michael Franz · 2006
The unit of compilation for traditional just-in-time compilers is the method. We have explored trace-based compilation, in which the unit of compilation is a loop, potentially spanning multiple methods and even library code. Using a new intermediate representation that is discovered and updated lazily on-demand while the program is being executed, our compiler generates code that is competitive with traditional dynamic compilers, but that uses only a fraction of the compile time and memory footprint. Categories and Subject Descriptors D.3.4 [Programming Languages]: Processors—Incremental compilers; optimization