Zur Hauptnavigation wechseln Zur Suche wechseln Zum Hauptinhalt wechseln

Array Bounds Check Elimination in the Context of Deoptimization

Publikation: Beitrag in Buch/Bericht/KonferenzbandKonferenzbeitragBegutachtung

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 and also significant improvements for some Java Grande benchmarks. The algorithm slightly increases the execution speed for the SPECjvm98 benchmark suite. The evaluation of the DaCapo benchmarks shows that array bounds checks do not have a significant impact on the performance of object-oriented applications.
OriginalspracheEnglisch
TitelScience of Computer Programming
Seiten279-295
Seitenumfang17
Band74
Auflage5-6
DOIs
PublikationsstatusVeröffentlicht - März 2009

Publikationsreihe

NameScience of Computer Programming
VerlagElsevier North-Holland, Inc. Amsterdam, The Netherlands, The Netherlands
ISSN (Print)0167-6423

Wissenschaftszweige

  • 102 Informatik
  • 102009 Computersimulation
  • 102011 Formale Sprachen
  • 102013 Human-Computer Interaction
  • 102029 Praktische Informatik
  • 102022 Softwareentwicklung
  • 102024 Usability Research

Dieses zitieren