Trace-based compilation in execution environments without interpreters

Michael Bebenita, Mason Chang, Gregor Wagner, A. Gal, Christian Wimmer, M. Franz
{"title":"Trace-based compilation in execution environments without interpreters","authors":"Michael Bebenita, Mason Chang, Gregor Wagner, A. Gal, Christian Wimmer, M. Franz","doi":"10.1145/1852761.1852771","DOIUrl":null,"url":null,"abstract":"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.\n 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.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"19 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2010-09-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"33","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Principles and Practice of Programming in Java","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/1852761.1852771","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 33

Abstract

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.
在没有解释器的执行环境中基于跟踪的编译
基于跟踪的编译是一种在托管语言运行时中用于检测和编译经常执行的程序路径的技术。其目标是通过只考虑编译方法的“热点”部分来减少编译时间并提高代码质量。跟踪编译非常适合基于解释器的执行环境,因为应用程序的控制流是高度可见和可记录的。在本文中,我们展示了跟踪编译在没有解释器的运行时环境中也是可行和有益的,因为在运行时环境中更难以监视应用程序的控制流。我们介绍了Maxpath的实现,Maxpath是一个基于跟踪的Java即时编译器,用于元循环Maxine虚拟机。Maxine使用分层编译策略,首先使用非优化的即时编译器编译方法,以便收集分析信息,然后使用优化的编译器重新编译以获得长期有效的执行。我们通过在非优化方法中动态插入检测代码来记录跟踪。首先将执行跟踪收集到跟踪区域中,然后对其进行编译、优化并将其链接到非优化方法,以实现高效执行。我们表明,基于跟踪的编译是一种有效的方法,可以将稀缺的编译资源集中在性能关键的应用程序区域。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:604180095
Book学术官方微信