SPUR: a trace-based JIT compiler for CIL

SPUR: a trace-based JIT compiler for CIL
复制标题

SPUR:基于跟踪的 CIL JIT 编译器

DOI:
10.1145/1869459.1869517
复制
发表时间:
2010
期刊:
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
影响因子:
--
通讯作者:
H. Venter
H. Venter
中科院分区:
--
文献类型:
--
作者:
Michael Bebenita;F. Brandner;M. Fähndrich;F. Logozzo;Wolfram Schulte;N. Tillmann;H. Venter

文献摘要

被引文献

相似文献

跟踪即时编译器(TJITS)在运行程序中确定经常执行的轨迹(热路径和循环),并通过排放专门针对这些轨迹的优化机器代码来集中优化工作。先前的工作已经建立了这种策略,对诸如JavaScript之类的动态语言特别有益,例如JavaScript与解释器接口并从JavaScript跟踪中生成机器代码。这种直接耦合与JavaScript解释器使得很难利用未用JavaScript编写的其他组件的TJIT的功能,例如,DOM实现或浏览器内的布局引擎。此外,如果将TJIT与特定的高级语言解释器绑定,则很难将其重用其他输入语言,因为优化可能针对源语言的特定成语。为了解决这些问题,我们为Microsoft的常见中间语言CIL(C#,VisualBasic,F#和许多其他语言)设计并实施了TJIT。在CIL上工作可以针对该平台编译的任何程序进行TJIT优化。此外,为了验证JavaScript的TJIT的性能增长并不取决于翻译为CIL中丢失的JavaScript的特定成语,我们提供了对JavaScript运行时的性能评估,将JavaScript转换为CIL,然后在顶部运行,然后在顶部运行。我们的cil tjit。
Tracing just-in-time compilers (TJITs) determine frequently executed traces (hot paths and loops) in running programs and focus their optimization effort by emitting optimized machine code specialized to these traces. Prior work has established this strategy to be especially beneficial for dynamic languages such as JavaScript, where the TJIT interfaces with the interpreter and produces machine code from the JavaScript trace. This direct coupling with a JavaScript interpreter makes it difficult to harness the power of a TJIT for other components that are not written in JavaScript, e.g., the DOM implementation or the layout engine inside a browser. Furthermore, if a TJIT is tied to a particular high-level language interpreter, it is difficult to reuse it for other input languages as the optimizations are likely targeted at specific idioms of the source language. To address these issues, we designed and implemented a TJIT for Microsoft's Common Intermediate Language CIL (the target language of C#, VisualBasic, F#, and many other languages). Working on CIL enables TJIT optimizations for any program compiled to this platform. In addition, to validate that the performance gains of a TJIT for JavaScript do not depend on specific idioms of JavaScript that are lost in the translation to CIL, we provide a performance evaluation of our JavaScript runtime which translates JavaScript to CIL and then runs on top of our CIL TJIT.