LaTTe: A Java VM Just-in-Time Compiler with Fast and Efficient Register Allocation

Byungsun Yang, Soo‐Mook Moon, Seong-Bae Park, Jinpyo Park, Seungil Lee, Jinpyo Park, Yoo Chung, Suhyun Kim, Kemal Ebci̇oğlu, Erik Altman · 1999

For network computing on desktop machines, fast execution of Java bytecode programs is essential because these machines are expected to run substantial application programs written in Java. Higher Java performance can be achieved by Just-in-Time (JIT) compilers which translate the stack-based bytecode into registerbased machine code on demand. One crucial problem in Java JIT compilation is how to map and allocate stack entries and local variables into registers e ciently and quickly, so as to improve the Java performance. This paper introduces LaTTe, a Java JIT compiler that performs fast and e cient register mapping and allocation for RISC machines. LaTTe rst translates the bytecode into pseudo RISC code with symbolic registers, which is then register allocated while coalescing those copies corresponding to pushes and pops between local variables and the stack. The LaTTe JVM also includes an enhanced object model, a lightweight monitor, a fast mark-and-sweep garbage collector, and an on-demand exception handling mechanism, all of which are closely coordinated with LaTTe's JIT compilation. Our experimental results on the SPARC platform with SPECJVM98 benchmarks and 15 non-trivial Java programs indicate that the current LaTTe JVMs achieve performance better than or comparable to the latest SUN JIT compilers (JDK 1.1.6 and HotSpot). It is also shown that LaTTe makes a reasonable trade-o between quality and speed ofregister allocation (i.e., the translation overhead consistently takes 1-2 seconds for SPECJVM98 which runs 40-80 seconds on LaTTe).

Read the paper · More papers on PaperTik