...
首页> 外文期刊>ACM SIGPLAN Notices: A Monthly Publication of the Special Interest Group on Programming Languages >Deoptimization for Dynamic Language JITs on Typed, Stack-based Virtual Machines
【24h】

Deoptimization for Dynamic Language JITs on Typed, Stack-based Virtual Machines

机译:在基于类型的基于堆栈的虚拟机上对动态语言JIT进行反优化

获取原文
获取原文并翻译 | 示例

摘要

We are interested in implementing dynamic language runtimes on top of language-level virtual machines. Type specialization is a critical optimization for dynamic language runtimes: generic code that handles any type of data is replaced with specialized code for particular types observed during execution. However, types can change, and the runtime must recover whenever unexpected types are encountered. The state-of-the-art recovery mechanism is called deoptimization. Deoptimization is a well-known technique for dynamic language runtimes implemented in low-level languages like C. However, no dynamic language runtime implemented on top of a virtual machine such as the Common Language Runtime (CLR) or the Java Virtual Machine (JVM) uses deoptimization, because the implementation thereof used in low-level languages is not possible. In this paper we propose a novel technique that enables deoptimization for dynamic language runtimes implemented on top of typed, stack-based virtual machines. Our technique does not require any changes to the underlying virtual machine. We implement our proposed technique in a JavaScript language implementation, MCJS, running on top of the Mono runtime (CLR). We evaluate our implementation against the current state-of-the-art recovery mechanism for virtual machine-based runtimes, as implemented both in MCJS and in IronJS. We show that deoptimization provides significant performance benefits, even for runtimes running on top of a virtual machine.
机译:我们对在语言级虚拟机上实现动态语言运行时感兴趣。类型专用化是动态语言运行时的关键优化:处理执行任何类型的数据的通用代码将替换为在执行过程中观察到的特定类型的专用代码。但是,类型可以更改,并且遇到意外类型时,运行时必须恢复。最新的恢复机制称为去优化。对于以低级语言(如C)实现的动态语言运行时,去优化是一种众所周知的技术。但是,没有在诸如通用语言运行时(CLR)或Java虚拟机(JVM)的虚拟机之上实现动态语言运行时。使用deoptimization,因为不可能在低级语言中使用其实现。在本文中,我们提出了一种新颖的技术,可以对基于类型的,基于堆栈的虚拟机之上实现的动态语言运行时进行反优化。我们的技术不需要对基础虚拟机进行任何更改。我们以在Mono运行时(CLR)之上运行的JavaScript语言实现MCJS来实现我们提出的技术。我们根据在MCJS和IronJS中实现的基于虚拟机的运行时的当前最新恢复机制,评估我们的实现。我们证明,即使对于在虚拟机之上运行的运行时,取消优化也可以带来显着的性能优势。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号