Recompilation for debugging support in a JIT-compiler

  • Authors:
  • Mustafa M. Tikir;Jeffrey K. Hollingsworth;Guei-Yuan Lueh

  • Affiliations:
  • University of Maryland, College Park, MD;University of Maryland, College Park, MD;Intel Corporation, Santa Clara, CA

  • Venue:
  • Proceedings of the 2002 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
  • Year:
  • 2002

Quantified Score

Hi-index 0.00

Visualization

Abstract

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.