Efficient Exception Handling in Java Ahead-of-Time Compilation

자바 Ahead-of-Time 컴파일러에서의 효율적인 예외처리 방법

  • Jung Dong-Heon (School of Electrical Engineering and Computer Science, Seoul National University) ;
  • Park JongKuk (School of Electrical Engineering and Computer Science, Seoul National University) ;
  • Lee Jaemok (School of Electrical Engineering and Computer Science, Seoul National University) ;
  • Bae SungHwan (School of Electrical Engineering and Computer Science, Seoul National University) ;
  • Moon Soo-Mook (School of Electrical Engineering and Computer Science, Seoul National University)
  • 정동헌 (서울대학교 전기컴퓨터공학부) ;
  • 박종국 (서울대학교 전기컴퓨터공학부) ;
  • 이재목 (서울대학교 전기컴퓨터공학부) ;
  • 배성환 (서울대학교 전기컴퓨터공학부) ;
  • 문수묵 (서울대학교 전기컴퓨터공학부)
  • Published : 2005.11.01

Abstract

자바는 이식성과 보안의 장점으로 인하여 내장형 시스템에서 널리 사용되고 있으나 인터프리터를 통한 바이트코드의 수행으로 인하여 성능이 저하되는 문제를 포함하고 있다. 이를 해결하기 위한 한 방법으로 수행시간 전에 바이트코드를 기계어 코드로 미리 번역하여 수행시간에는 기계어 코드가 수행되도록 하는 Ahead-of-Time 컴파일러 (AOTC)가 사용되고 있다. 특히 바이트코드를 C코드로 변환한 다음 기존의 컴파일러를 이용하여 기계어 코드를 생성하는 방식을 많이 택하고 있다. 본 논문에서는 AOTC에서 효율적인 예외처리 (exception handling) 기법을 제안한다. 기존의 AOTC 에서는 예외를 발생하는 메쏘드와 예외를 처리하는 메쏘드가 다른 경우 setjmp/longjmp를 이용하여 예외처리를 수행하고 있으나 우리는 메쏘드 호출 후의 예외 검사를 통해 예외처리를 수행한다. 우리는 제안된 예외처리 방법은 Sun의 CDC 가상 머신을 위해 개발된 AOTC 에 구현되었으며 SPECjvm98 벤치마크에서의 실험을 통해 setjmp/longjmp 방식에 비해 $1.3\%$에서 $154\%$까지의 성능향상이 가능함이 확인되었다.

Keywords