A trace-based Java JIT compiler retrofitted from a method-based compiler

A trace-based Java JIT compiler retrofitted from a method-based compiler
复制标题

基于跟踪的 Java JIT 编译器由基于方法的编译器改造而来

DOI:
10.1109/cgo.2011.5764692
复制
发表时间:
2011
期刊:
International Symposium on Code Generation and Optimization (CGO 2011)
影响因子:
--
通讯作者:
T. Nakatani
T. Nakatani
中科院分区:
--
文献类型:
--
作者:
H. Inoue;H. Hayashizaki;Peng Wu;T. Nakatani

文献摘要

被引文献

相似文献

本文介绍了我们的基于痕量的JIT编译器(Trace-jit),用于从基于生产质量的JIT编译器(Method-jit)开发的Java。我们首先描述了痕迹的设计和实现,重点是我们如何将方法重新装饰作为基于跟踪的编译器。然后,我们证明,通过扩展汇编范围,痕迹速度通常会产生比方法jit更好的质量代码。形成跨越多种方法的较长迹线比在扩展汇编范围时内置的方法更强大。它减少了方法发动机开销,还提供了更多的编译器优化机会。但是,与改进的代码质量所获得的方法相比,痕迹吉他会产生额外的运行时开销。总体而言,我们的痕迹达到的性能与基线方法吉他大致相当。从编译器优化的角度来看,我们还讨论了基于跟踪的编译中的问题。我们的结果表明,基于痕量的编译是使用基于方法的编译器编译语言的替代或补充方法的潜力。
This paper describes our trace-based JIT compiler (trace-JIT) for Java developed from a production-quality method-based JIT compiler (method-JIT). We first describe the design and implementation of our trace-JIT with emphasis on how we retrofitted a method-JIT as a trace-based compiler. Then we show that the trace-JIT often produces better quality code than the method-JIT by extending the compilation scope. Forming longer traces that span multiple methods turns out to be more powerful than method inlining in extending the compilation scope. It reduces method-invocation overhead and also offers more compiler optimization opportunities. However, the trace-JIT incurs additional runtime overhead compared to the method-JIT that may be offset by gains from the improved code quality. Overall, our trace-JIT achieved performance roughly comparable to the baseline method-JIT. We also discuss the issues in trace-based compilation from the viewpoint of compiler optimizations. Our results show the potentials of trace-based compilation as an alternative or complementary approach to compiling languages with mature method-based compilers.