Array Bounds Check Elimination for the Java HotSpot™ Client Compiler

Research output: Chapter in Book/Report/Conference proceedingConference proceedingspeer-review

Abstract

Whenever an array element is accessed, Java virtual machines execute a compare instruction to ensure that the index value is within the valid bounds. This reduces the execution speed of Java programs. Array bounds check elimination identifies situations in which such checks are redundant and can be removed. We present an array bounds check elimination algorithm for the Java HotSpot™ VM based on static analysis in the just-in-time compiler. The algorithm works on an intermediate representation in static single assignment form and maintains conditions for index expressions. It fully removes bounds checks if it can be proven that they never fail. Whenever possible, it moves bounds checks out of loops. The static number of checks remains the same, but a check inside a loop is likely to be executed more often. If such a check fails, the executing program falls back to interpreted mode, avoiding the problem that an exception is thrown at the wrong place. The evaluation shows a speedup near to the theoretical maximum for the scientific SciMark benchmark suite (40% on average). The algorithm also improves the execution speed for the SPECjvm98 benchmark suite (2% on average, 12% maximum).
Original languageEnglish
Title of host publicationProceedings of the International Conference on Principles and Practice of Programming in Java (PPPJ'07)
PublisherACM Press
Pages125-133
Number of pages9
ISBN (Print)978-1-59593-672-1
DOIs
Publication statusPublished - Sept 2007

Publication series

NameACM International Conference Proceeding Series
Volume272

Fields of science

  • 102 Computer Sciences
  • 102009 Computer simulation
  • 102011 Formal languages
  • 102013 Human-computer interaction
  • 102029 Practical computer science
  • 102022 Software development
  • 102024 Usability research

Cite this