Default.png

Java JIT Compiler (at Tokyo)

Overview

Java™ is one of the most dominant programming languages, and used for a wide range of applications including games and pervasive devices and mission-critical e-business applications. A Java program is compiled into an intermediate language called bytecodes, and it can be downloaded through the network and executed on any computers that have Java execution environment. However, the overhead for interpreting bytecodes is a serious bottleneck.

We have been researching and developing various techniques for the Java Just-In-Time Compiler, which allows much faster execution by compiling bytecodes into native machine code on the fly. Our JIT compiler is used on almost all Java platforms of IBM, ranging from network computers (NC) to mainframes.

Optimization techniques

  • Mixed-mode execution of the interpreter and compiled code
  • Singly-atomic, busy-wait-free locking algorithm
  • Code-patching devirtualization
  • Control flow restructuring for improving dataflow analyses
  • Iterative nullcheck elimination utilizing hardware traps
  • Dynamic optimization framework with sampling and instrumenting profilers
  • Feedback-directed optimization of exception handling
  • Idiom recongsition for exploiting special instructions
  • Lock reservation
  • Memory management techniques for NUMA machines