Optimization of dynamic languages using hierarchical layering of virtual machines
Optimization of dynamic languages using hierarchical layering of virtual machines
复制标题
使用虚拟机分层优化动态语言
DOI:
--
复制
发表时间:
2009
期刊:
影响因子:
--
通讯作者:
M. Franz
中科院分区:
文献类型:
--
作者:
Alexander Yermolovich;Christian Wimmer;M. Franz
Creating an interpreter is a simple and fast way to implement a dynamic programming language. With this ease also come major drawbacks. Interpreters are significantly slower than compiled machine code because they have a high dispatch overhead and cannot perform optimizations. To overcome these limitations, interpreters are commonly combined with just-in-time compilers to improve the overall performance. However, this means that a just-in-time compiler has to be implemented for each language.
We explore the approach of taking an interpreter of a dynamic language and running it on top of an optimizing trace-based virtual machine, i.e., we run a guest VM on top of a host VM. The host VM uses trace recording to observe the guest VM executing the application program. Each recorded trace represents a sequence of guest VM bytecodes corresponding to a given execution path through the application program. The host VM optimizes and compiles these traces to machine code, thus eliminating the need for a custom just-in-time compiler for the guest VM. The guest VM only needs to provide basic information about its interpreter loop to the host VM.