Adaptive multi-level compilation in a trace-based Java JIT compiler
Adaptive multi-level compilation in a trace-based Java JIT compiler
复制标题
基于跟踪的 Java JIT 编译器中的自适应多级编译
DOI:
--
复制
发表时间:
2012
期刊:
影响因子:
--
通讯作者:
T. Nakatani
中科院分区:
文献类型:
--
作者:
H. Inoue;H. Hayashizaki;Peng Wu;T. Nakatani
This paper describes our multi-level compilation techniques implemented in a trace-based Java JIT compiler (trace-JIT). Like existing multi-level compilation for method-based compilers, we start JIT compilation with a small compilation scope and a low optimization level so the program can start running quickly. Then we identify hot paths with a timer-based sampling profiler, generate long traces that capture the hot paths, and recompile them with a high optimization level to improve the peak performance. A key to high performance is selecting long traces that effectively capture the entire hot paths for upgrade recompilations. To do this, we introduce a new technique to generate a directed graph representing the control flow, a TTgraph, and use the TTgraph in the trace selection engine to efficiently select long traces. We show that our multi-level compilation improves the peak performance of programs by up to 58.5% and 22.2% on average compared to compiling all of the traces only at a low optimization level. Comparing the performance with our multi-level compilation to the performance when compiling all of the traces at a high optimization level, our technique can reduce the startup times of programs by up to 61.1% and 31.3% on average without significant reduction in the peak performance. Our results show that our adaptive multi-level compilation can balance the peak performance and startup time by taking advantage of different optimization levels.