Array bounds check elimination using Inequality Graphs in Just-in-time compiler

대소관계 그래프를 이용한 Just-in-time 컴파일 환경에서의 array bounds check elimination

  • 최선일 (서울대학교 전기컴퓨터공학부) ;
  • 문수묵 (서울대학교 전기컴퓨터공학부)
  • Published : 2004.10.01

Abstract

Just-Just-in-Time 컴파일러를 이용하여 자바의 성능을 향상시키려면 여러 문제들을 극복하여야 한다. 이 문제 중 중요한 부분을 차지하는 것이 null check 코드와 array bound check코드를 어떻게 최적화하느냐는 것이다. Static한 컴파일 환경에서는 이미 많은 연구가 진행되어 매우 강력한 성능을 가지는 알고리즘이 알려져 있으나 이를 컴파일 시간이 수행시간의 일부인 Just-in-Time 컴파일 환경에 적응하기에는 컴파일 오버헤드가 너무 커서 적절하지 않다. 현재 Just-in-Time 컴파일러들은 가볍고 단순한 알고리즘을 적용하지만 중복된 array bounds check를 충분히 제거하지 못하거나 아니면 강력하지만 flow-insensitive한 SSA form을 기반으로 해야 하는 알고리즘을 사용하고 있다. SSA form의 적용은 SSA form으로의 변환과 되돌림에 의한 overhead로 가볍고 빠른 컴파일러를 지향하는 Just-in-Time 컴파일러에 부합되지 않는다. 본 논문은 변수간의 대소관계를 표현하는 그래프를 array bounds check 알고리즘에 적용해 충분한 power를 내면서도 flow-sensitive한 환경에서 동작하는 알고리즘을 제안한다.

Keywords