Implementing array bytecode in MicroJIT

Thumbnail Image



Journal Title

Journal ISSN

Volume Title


University of New Brunswick


Eclipse OpenJ9 is a Java virtual machine (JVM), which initially interprets Java programs. OpenJ9 uses Just-in-Time (JIT) compilers—like the default Testarossa JIT (TRJIT)—to translate the program into native code, which executes faster than interpreting. TRJIT is an optimizing compiler that can introduce overhead during runtime but generally improves startup time compared to interpretation. MicroJIT is a non-optimizing, template-based compiler that aims to reduce compilation overhead and startup time. Bytecodes dealing with array operations were not supported in the initial implementation of MicroJIT, forcing them to either be interpreted or compiled using TRJIT. This work implements 18 arrays and 3 non-array bytecodes in MicroJIT. The implementation is tested with a regression test suite and the experiments are performed on the DaCapo benchmark suite and Micro-benchmarks. The results show that MicroJIT, including array bytecodes support, is 4.81x faster than the interpreter and 1.11x faster than the MicroJIT without array bytecodes support.