• Title/Summary/Keyword: Array Bounds Check Elimination

Search Result 2, Processing Time 0.016 seconds

Array bounds check elimination using Inequality Graphs in Just-in-time compiler (대소관계 그래프를 이용한 Just-in-time 컴파일 환경에서의 array bounds check elimination)

  • 최선일;문수묵
    • Proceedings of the Korean Information Science Society Conference
    • /
    • 2004.10a
    • /
    • pp.529-531
    • /
    • 2004
  • 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한 환경에서 동작하는 알고리즘을 제안한다.

  • PDF

Array Bounds Check Elimination using Ineguality Graph in Java Just-in-Time Compiler (대소관계 그래프를 이용한 Just-in-Time 컴파일 환경에서의 배열 경계 검사 제거)

  • Choi Sun-il;Moon Soo-mook
    • Journal of KIISE:Software and Applications
    • /
    • v.32 no.12
    • /
    • pp.1283-1291
    • /
    • 2005
  • One of the problems in boosting Java performance using a Just-in-Time (JIT) compiler is removing redundant array bound checks. In conventional static compilers, many powerful algorithms have been developed, yet they are not directly applicable to JIT compilation where the compilation time is part of the whole running time. In the current JIT compilers, we tan use either a naive algorithm that is not powerful enough or an aggressive algorithm which requires the transformation into a static single assignment (SSA) form of programs (and back to the original form after optimization), thus causing too much overhead not appropriate for JIT compilation This paper proposes a new algorithm based on an inequality graph which can eliminate array bounds check codes aggressively without resorting to the SSA form. When we actually perform this type of optimization, there are many constraints in code motion caused by the precise exception rule in Java specification, which would cause the algorithm to miss many opportunities for eliminating away bound checks. We also propose a new method to overcome these constraints.