Efficient exception handling in Java bytecode-to-C ahead-of-time compiler for embedded systems

  • Authors:
  • Dong-Heon Jung;JongKuk Park;Sung-Hwan Bae;Jaemok Lee;Soo-Mook Moon

  • Affiliations:
  • School of Electrical Engineering and Computer Science, Seoul National University, Seoul 151-742, Republic of Korea;School of Electrical Engineering and Computer Science, Seoul National University, Seoul 151-742, Republic of Korea;School of Electrical Engineering and Computer Science, Seoul National University, Seoul 151-742, Republic of Korea;School of Electrical Engineering and Computer Science, Seoul National University, Seoul 151-742, Republic of Korea;School of Electrical Engineering and Computer Science, Seoul National University, Seoul 151-742, Republic of Korea

  • Venue:
  • Computer Languages, Systems and Structures
  • Year:
  • 2008

Quantified Score

Hi-index 0.00

Visualization

Abstract

One of the most promising approaches to Java acceleration in embedded systems is a bytecode-to-C ahead-of-time compiler (AOTC). It improves the performance of a Java virtual machine (JVM) by translating bytecode into C code, which is then compiled into machine code via an existing C compiler. One important design issue in AOTC is efficient exception handling. Since the excepting point and the exception handler may locate in different methods on a call stack, control transfer between them should be streamlined, while an exception would be an ''exceptional'' event, so it should not slow down normal execution paths. Previous AOTCs often employed a technique called stack cutting based on a setjmp()/longjmp() pair, which we found is involved with too much performance overheads. Also, when the AOTC and the interpreter are employed concurrently (e.g., some methods are AOTCed while other methods are interpreted), the performance of normal execution paths is affected more seriously. This paper proposes a simpler solution based on an exception check after each method call, merged with garbage collection check for reducing its overhead. Our evaluation results on SPECjvm98 on Sun's CVM indicate that our technique can improve the performance of stack cutting by more than 25%. A similar performance benefit can be noted on a hybrid execution environment of both the AOTC and the interpreter.