Check out the new USENIX Web site.

Home About USENIX Events Membership Publications Students
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 Java, 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.
?Need help? Use our Contacts page.

Last changed: 4 Jan. 2002 ml
Technical Program
COOTS 2001 Home