Recompilation for debugging support in a JIT-compiler

TitleRecompilation for debugging support in a JIT-compiler
Publication TypeConference Papers
Year of Publication2002
AuthorsTikir MM, Hollingsworth J, Lueh G-Y
Conference NameProceedings of the 2002 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Date Published2002///
Conference LocationCharleston, South Carolina, USA
ISBN Number1-58113-479-7
Keywordsalgorithms, debug information, debugging aids, dynamic recompilation, field access watch, java, java virtual machine debugger interface, just-in-time compilation, measurement, performance

A static Java compiler converts Java source code into a verifiably secure and compact architecture-neutral intermediate format, called Java byte codes. The Java byte codes can be either interpreted by a Java Virtual Machine or translated into native code by Java Just-In-Time compilers. Static Java compilers embed debug information in the Java class files to be used by the source level debuggers. However, the debug information is generated for architecture independent byte codes and most of the debug information is valid only when the byte codes are interpreted. Translating byte codes into native instructions puts a limitation on the amount of usable debug information that can be used by source level debuggers. In this paper, we present a new technique to generate valid debug information when Just-In-Time compilers are used. Our approach is based on the dynamic recompilation of Java methods by a fast code generator and lazily generates debug information when it is required. We also present three implementations for field watch support in the Java Virtual Machine Debugger Interface to investigate the runtime overhead and code size growth by our approach.