Problem Determination for a Java JIT Compiler using Replay Compilation

The performance of Java has been tremendously improved by the advance of the compilation technology. However, debugging a dynamic compiler is much harder than a static compiler. Recompiling the problematic method again to produce a diagnostic output does not necessarily work because the compilation of a method depends on the runtime information at the time of compilation.
In this paper, we propose a new approach, called replay JIT compilation, to reproduce the same compilation process remotely using two compilers: the state-saving compiler saves all the input to the JIT compiler in the production environment, and the replaying compiler reproduces the same compilation process later. We reduced the overhead to save the input by using the system dump and categorizing the input based on the constancy. In our preliminary experiment, the overhead of running the state-saving compiler was negligible, and the size of the additional memory area needed for saving input was only 10% of the compiler-generated code.

By: Kazunori Ogata, Tamiya Onodera, Kiyokuni Kawachiya, Hideaki Komatsu, Toshio Nakatani

Published in: RT0641 in 2007


This Research Report is available. This report has been submitted for publication outside of IBM and will probably be copyrighted if accepted for publication. It has been issued as a Research Report for early dissemination of its contents. In view of the transfer of copyright to the outside publisher, its distribution outside of IBM prior to publication should be limited to peer communications and specific requests. After outside publication, requests should be filled only by reprints or legally obtained copies of the article (e.g., payment of royalties). I have read and understand this notice and am a member of the scientific community outside or inside of IBM seeking a single copy only.


Questions about this service can be mailed to .