Multimethods and separate static typechecking in a language with C++-like object model

The goal of this paper is the description and analysis of multimethod implementation in a new object-oriented, class-based programming language called OOLANG. The implementation of the multimethod typecheck and selection, deeply analyzed in the paper, is performed in two phases in order to allow static typechecking and separate compilation of modules. The first phase is performed at compile time, while the second is executed at link time and does not require the modules' source code. OOLANG has syntax similar to C++; the main differences are the absence of pointers and the realization of polymorphism through subsumption. It adopts the C++ object model and supports multiple inheritance as well as virtual base classes. For this reason, it has been necessary to define techniques for realigning argument and return value addresses when performing multimethod invocations.

[1]  David Grove,et al.  Vortex: an optimizing compiler for object-oriented languages , 1996, OOPSLA '96.

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

[3]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[4]  Todd D. Millstein,et al.  Modular Statically Typed Multimethods , 1999, Inf. Comput..

[5]  John Tang Boyland,et al.  Parasitic methods: an implementation of multi-methods for Java , 1997, OOPSLA '97.

[6]  Bjarne Stroustrup,et al.  The C++ programming language (3. ed.) , 1997 .

[7]  David Grove,et al.  A Framework for Selective Recompilation in the Presence of Complex Intermodule Dependencies , 1995, 1995 17th International Conference on Software Engineering.

[8]  John R. Rose,et al.  Fast dispatch mechanisms for stock hardware , 1988, OOPSLA '88.

[9]  William R. Cook,et al.  Inheritance is not subtyping , 1989, POPL '90.

[10]  Giuseppe Castagna,et al.  Covariance and contravariance: conflict without a cause , 1995, TOPL.

[11]  Raffaele Tripiccione,et al.  The teraflop supercomputer APEmille : architecture, software and project status report , 1998 .

[12]  Craig Chambers,et al.  The cecil language: specification and rationale , 1993 .

[13]  Todd D. Millstein,et al.  Modular Statically Typed Multimethods , 1999, ECOOP.

[14]  Ronald Morrison,et al.  An object addressing mechanism for statically typed languages with multiple inheritance , 1989, OOPSLA '89.

[15]  Gerald Baumgartner,et al.  Implementing signatures for C++ , 1994, TOPL.

[16]  Stanley B. Lippman,et al.  Inside the C++ Object Model , 1996 .

[17]  G. Magazzu,et al.  Progress and status of APEmille , 1998 .

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

[19]  Gary T. Leavens,et al.  Typechecking and Modules for Multimethods , 1995, ACM Trans. Program. Lang. Syst..

[20]  Martín Abadi,et al.  A Theory of Objects , 1996, Monographs in Computer Science.

[21]  Eric Simon,et al.  Fast algorithms for compressed multimethod dispatch table generation , 1998, TOPL.

[22]  Daniel H. H. Ingalls A Simple Technique for Handling Multiple Polymorphism , 1986, OOPSLA.

[23]  Luca Cardelli,et al.  On Binary Methods , 1995, Theory Pract. Object Syst..

[24]  Emanuele Panizzi,et al.  On the return types of virtual functions , 1999, SIGP.

[25]  Linda G. DeMichiel,et al.  The Common Lisp Object System: An Overview , 1987, ECOOP.