Safe bounds check annotations

  • Authors:
  • Jeffery von Ronne;Andreas Gampe;David Niedzielski;Kleanthis Psarris

  • Affiliations:
  • Department of Computer Science, The University of Texas at San Antonio, San Antonio, TX, U.S.A.;Department of Computer Science, The University of Texas at San Antonio, San Antonio, TX, U.S.A.;Department of Computer Science, The University of Texas at San Antonio, San Antonio, TX, U.S.A.;Department of Computer Science, The University of Texas at San Antonio, San Antonio, TX, U.S.A.

  • Venue:
  • Concurrency and Computation: Practice & Experience - Compilers for Parallel Computers 2007 Workshop (CPC 2007)
  • Year:
  • 2009

Quantified Score

Hi-index 0.00

Visualization

Abstract

The semantics of the Java programming language require that the out-of-bounds array accesses be caught at runtime. In general, this requires dynamic checks at the time the array element is accessed. Some of these checks can be eliminated statically during just-in-time (JIT) compilation, but the most precise analyses are too expensive to run in JIT compilers. This paper presents a framework in which thorough static range analyses can be used safely during the less-performance-critical compilation of Java source into machine-independent mobile code. In this framework, the static analysis results are used to derive proofs that certain linear inequality constraints hold. These linear constraints and their proofs are then added to the mobile code as annotations. The annotation framework is designed so that proofs can be verified efficiently. This allows the JIT compiler to safely eliminate array bounds checks during compilation without an expensive runtime analysis. Experiments with a prototype system that can generate and verify these annotations demonstrate that this framework is more precise than prior work and that verification is efficient. Copyright © 2008 John Wiley & Sons, Ltd.