Trace-based compilation in execution environments without interpreters
Trace-based compilation in execution environments without interpreters
复制标题
在没有解释器的执行环境中基于跟踪的编译
DOI:
--
复制
发表时间:
2010
期刊:
影响因子:
--
通讯作者:
M. Franz
中科院分区:
文献类型:
--
作者:
Michael Bebenita;Mason Chang;Gregor Wagner;A. Gal;Christian Wimmer;M. Franz
Trace-based compilation is a technique used in managed language runtimes to detect and compile frequently executed program paths. The goal is to reduce compilation time and improve code quality by only considering "hot" parts of methods for compilation. Trace compilation is well suited for interpreter-based execution environments because the control flow of an application program is highly visible and recordable. In this paper, we show that trace compilation is also feasible and beneficial in runtime environments without interpreters where it is more difficult to monitor the control flow of an application.
We present the implementation of Maxpath, a trace-based Java just-in-time compiler for the meta-circular Maxine virtual machine. Maxine uses a tiered compilation strategy where methods are first compiled with a non-optimizing just-in-time compiler in order to collect profiling information, and then recompiled with an optimizing compiler for long-term efficient execution. We record traces by dynamically inserting instrumentation code in non-optimized methods. Execution traces are first collected into trace regions, after which they are compiled, optimized and linked to non-optimized methods for efficient execution. We show that trace-based compilation is an effective way to focus scarce compilation resources on performance critical application regions.