COOTS 2001 Abstract
Multi-Dispatch in the Java Virtual
Machine: Design and Implementation
Christopher Dutchyn, Paul Lu, Duane Szafron, and Steven Bromling, University of Alberta, Canada; Wade Holst, The University of Western Ontario, Canada
Mainstream object-oriented languages, such as C++ and
provide only a restricted form of polymorphic methods, namely
uni-receiver dispatch. In common programming situations, developers
must work around this limitation. We describe how to extend the
Java Virtual Machine to support multi-dispatch and examine the
complications that Java imposes on multi-dispatch in practice.
Our technique avoids changes to the Java programming language
itself, maintains source code and library compatibility, and isolates
the performance penalty and semantic changes of multi-method dispatch
to the program sections which use it. We have micro-benchmark
and application-level performance results for a dynamic Most
Specific Applicable (MSA) dispatcher, a framework-based Single
Receiver Projections (SRP) dispatcher, and a tuned SRP dispatcher.
Our general-purpose technique provides smaller dispatch latency
than programmer-written double-dispatch code with equivalent functionality.