JVM 2001 Abstract
Dynamic Type Checking in Jalapeño
Bowen Alpern, Anthony Cocchi, and David Grove, IBM T.J. Watson Research Center
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 checkingcan be sigfinicantly 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 typeof 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