Back to Search Start Over

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

Authors :
Sung-Hwan Bae
Jaemok Lee
Jongkuk Park
Soo-Mook Moon
Dong-Heon Jung
Source :
Computer Languages, Systems & Structures. 34:170-183
Publication Year :
2008
Publisher :
Elsevier BV, 2008.

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.

Details

ISSN :
14778424
Volume :
34
Database :
OpenAIRE
Journal :
Computer Languages, Systems & Structures
Accession number :
edsair.doi...........268eb2017ec9db52e88a6c5060c3e31f
Full Text :
https://doi.org/10.1016/j.cl.2007.06.004