Dynamic Type Checking in Jalapeño
Authors: Bowen Alpern, Anthony Cocchi, and David Grove.
Citation: Proceedings of the USENIX Java Virtual Machine Research and Technology Symposium.
A Java virtual machine (JVM) must sometimes check whether a value of
one type can be can be treated as a value of another type. The
overhead for such dynamic type checking can be a significant factor in
the running time of some Java programs. This paper presents a variety
of techniques for performing these checks, each tailored to a
particular restricted case that commonly arises in Java programs. By
exploiting compile-time information to select the most applicable
technique to implement each dynamic type check, the run-time overhead
of dynamic type checking can be significantly reduced.
This paper suggests maintaining three data structures operationally
close to every Java object. The most important of these is a display
of identifiers for the superclasses of the object's class. With this
array, most dynamic type checks can be performed in four instructions.
It also suggests that an equality test of the run-time type of an
array and the declared type of the variable that contains it can
be an important short-circuit check for object array stores. Together
these techniques result in significant performance improvements on some
USENIX Definitive Copy
USENIX - Copyright © 2001.