Implementing optimizations in the Joeq virtual machine

David J. Sullivan, The College of Wooster


Virtual machines are becoming more and more prominent in both the business and consumer worlds. They provide flexibility and cost-efficiency, however they can sometimes have a serious drawback: performance. The main focus here is the implementation and comparison of various optimization strategies for high level languages, particularly Java, using Joeq as a testing platform. These techniques will be built into Joeq, then sample Java programs will be run, and the performance measured. This paper also examines some other virtual machines and how they work, current virtual machines on the market today, and current optimization techniques, and attempts to use those to highlight new ways to optimize virtual machines today. Dispelling the notion that virtual machines always carry a significant performance price is another goal. Some of the optimization strategies and virtual machines discussed actually give better performance than natively compiled code. TransmetaÍs Crusoe, HPÍs Dynamo, the Java Virtual Machine, Jikes, and Joeq will be examined, as will interpreters, binary translators, dynamic binary optimization, and related optimization strategies such as profiling, predecoding, direct and indirect threading, code reordering, translation blocks, and staged emulation.


© Copyright 2008 David J. Sullivan