Replay Compilation: Improving Debuggability of a Just-in-Time Compiler |
Replay Compilation: Improving Debuggability of a Just-in-Time CompilerResearch Paper Wednesday, Oct 25, from 13:30 to 15:00
The performance of Java has been tremendously improved by the advance of dynamic compilation technologies. 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 processes later. We reduced the overhead to save the input by using the system dump and by categorizing the input based on how its value changes. In our experiment, the performance degradation by saving the input was only 1%, and the size of the additional memory area needed for saving input was only 10% of the compiler-generated code. Kazunori Ogata, IBM Research, Tokyo Research Laboratory Tamiya Onodera, IBM Research, Tokyo Research Laboratory Kiyokuni Kawachiya, IBM Research, Tokyo Research Laboratory Hideaki Komatsu, IBM Research, Tokyo Research Laboratory Toshio Nakatani, IBM Research, Tokyo Research Laboratory
|