Trace-based compilation in execution environments without interpreters

Trace-based compilation in execution environments without interpreters
复制标题

在没有解释器的执行环境中基于跟踪的编译

DOI:
--
复制
发表时间:
2010
期刊:
Principles and Practice of Programming in Java
影响因子:
--
通讯作者:
M. Franz
M. Franz
中科院分区:
--
文献类型:
--
作者:
Michael Bebenita;Mason Chang;Gregor Wagner;A. Gal;Christian Wimmer;M. Franz

文献摘要

被引文献

相似文献

基于跟踪的汇编是一种用于托管语言运行时间的技术,用于检测和编译经常执行的程序路径。目的是仅考虑编译方法的“热”部分,以减少编译时间并提高代码质量。跟踪汇编非常适合基于解释的执行环境,因为应用程序的控制流非常可见且可记录。在本文中,我们表明,在没有解释器的情况下,在运行时环境中,痕量汇编也是可行的和有益的,而没有解释器来监视应用程序的控制流程。 我们介绍了MaxPath的实现,MaxPath是一种基于跟踪的Java,适用于元圆形maxine虚拟机。 Maxine使用分层的策略,其中首先使用不优化的即时编译器进行编译,以收集分析信息,然后用优化编译器重新编译以进行长期有效执行。我们通过在非优化方法中动态插入仪器代码来记录跟踪。首先将执行跟踪收集到跟踪区域,然后将其编译,优化并链接到非优化方法以进行有效执行。我们表明,基于跟踪的汇编是将稀缺汇编资源集中在绩效关键应用区域的有效方法。
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.