Multiple-Dispatching Based on Automata

We present a novel technique for multiple-dispatching. In object-oriented programming languages, multiple-dispatching provides increased expressive power over single-dispatching by guiding method lookup using the values of all arguments instead of the receiver only. However, the efficient implementation for multiple-dispatching is still critical with regard to its success as a standard. There have been several time-efficient dispatching techniques proposed, but they are very space consuming. In this paper, we transform multiple-dispatching into a lookup automaton problem. Analysis and experiments show that our approach is space-efficient while providing the same time-efficiency as the previous known techniques. Moreover, we present a technique to further minimize the space-complexity of lookup automata.

[1]  John G. Hosking,et al.  Multi-Methods in a Statically-Typed Programming Language , 1991, ECOOP.

[2]  Bruce G. Lindsay,et al.  Static type checking of multi-methods , 1991, OOPSLA '91.

[3]  David A. Moon,et al.  Object-oriented programming with flavors , 1986, OOPLSA '86.

[4]  Craig Chambers,et al.  Object-Oriented Multi-Methods in Cecil , 1992, ECOOP.

[5]  Alfred V. Aho,et al.  The Theory of Parsing, Translation, and Compiling , 1972 .

[6]  Marie-Laure Mugnier,et al.  Monotonic conflict resolution mechanisms for inheritance , 1992, OOPSLA.

[7]  Olivier Gruber,et al.  Optimizing Multi-Method Dispatch Using Compressed Dispatch Tables , 1994, OOPSLA.

[8]  Jean-Claude Royer,et al.  Optimizing method search with lookup caches and incremental coloring , 1992, OOPSLA '92.

[9]  Terry A. McKee,et al.  A fast method dispatcher for compiled languages with multiple inheritance , 1989, OOPSLA 1989.

[10]  Paul Schweizer,et al.  A fast method dispatcher for compiled languages with multiple inheritance , 1989, OOPSLA '89.

[11]  Christophe Lécluse,et al.  Manipulation of Structured Values in Object-Oriented Databases , 1989, DBPL.

[12]  Luca Cardelli,et al.  On understanding types, data abstraction, and polymorphism , 1985, CSUR.

[13]  Daniel G. Bobrow,et al.  CommonLoops: merging Lisp and object-oriented programming , 1986, OOPLSA '86.

[14]  Patrick H. Dussud TICLOS: an implementation of CLOS for the explorer family , 1989, OOPSLA '89.

[15]  Gregor Kiczales,et al.  Efficient method dispatch in PCL , 1990, LISP and Functional Programming.

[16]  Alexander Borgida,et al.  Efficient management of transitive relationships in large data and knowledge bases , 1989, SIGMOD '89.