article

Optimizing multi-method dispatch using compressed dispatch tables

Abstract

Optimizing method dispatch is a central issue in object-oriented language implementation. The dispatch table scheme, used for example by C++, is the only implementation of method dispatch that offers constant time performance. This property is the main asset of dispatch tables and a major requirement for some languages. However, the major drawback of dispatch tables is the space they require. Reducing the size of dispatch tables has been studied in the case of mono-methods with techniques such as coloring. In the case of multi-methods, dispatch tables are practically unusable as they grow as a power of the number of arguments. In this paper, we propose an algorithm to compress the dispatch tables of multi-methods by analyzing their signatures.

References

  1. ADL91 Rakesh Agrawal, Linda G. DeMichiel. and Bruce G. Lindsay. Static type checking of multi-methods. In Proc. OOPSLA, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. AR92 Pascal Andre and Jean-Claude Royer. Optimizing method search with lookup caches and incremental coloring. In Proc. OOPSLA, pages 110-126, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. BDG+88 Daniel G. Bobrow. Linda G. DeMichiel, Richard P. Gabriel, Sonya. Keene, Gregor Kiczales, and David A. Moon. Common Lisp Object System specification. SIGPLAN Notices. 23, Sept. 1988. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. BKK+86 Daniel G. Bobrow, Kenneth Kahn, Gregor Kiczales, Larry Masinter, Mark Stefik, and Frank Zdybel CommonLoops: Merging lisp and objectoriented programming. In Proc. OOPSLA, 1986. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Cha92 Craig Chambers. Object-oriented multi-methods in Cecil. In Proc. ECOOP, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. CU90 Craig Chambers and David Ungar. Iterative type analysis and extended message splitting. In Proc. SIGPLAN 90, volume 23, pages 27-34, 1990.Google ScholarGoogle Scholar
  7. CU91 Craig Chambers and David Ungar. Making pure object-oriented languages practical. In Proc. OOPSLA, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. CUL89 Craig Chambers, David Ungar, and Elgin Lee. An efficient implementation of SELF, a dynamically typed object-oriented language based on prototypes. In Proc. OOPSLA, pages 49-70, 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Deu83 L. Peter Deutsch. Smalltalk-80: Bits of History and Works of Advice, chapter The Dorado Smalltalk-80 Implementation: Hardware Architecture. Addison Wesley, 1983.Google ScholarGoogle Scholar
  10. DMPM89 R. Dixon, T. McKee, P.Schweizer, and M. Vaughan. A fast method dispatcher for complied languages with multiple inheritance. In Proc. OOPSLA, pages 211-214, 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. DS84 L. Peter Deutsch and Alan Schifman. Efficient implementation of the Smalltalk-80 system. In Proc. ACM POPL, 1984. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. CR83 Adele Goldberg and David Robson. Smalltalk-80: The Language and Its Implementation. Addison Wesley, Reading, MA, 1983. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. HCU91 Urs Holzle, Craig Chambers, and David Ungar. Optimizing dynamically typed object-oriented languages using polymorphic inline caches. In Proc. ECOOP, pages 21-36, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Ing86 Daniel H. H. Ingalls. A simple technique for handling multiple polymorphism. In Proc. OOPSLA, pages 347-349, 1986. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. KR90 Gregor Kiczales and Luis Rodrigrez. Efficient method dispatch in PCL. In Proc. ACM POPL, 1990.Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Mey92 Bertrand Meyer. EIFFEL : The Lnaguage. Prentice Hall Intl., 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. MHH91 Warwick B. Mugridge, John Hamer, and John G. Hosking Multi-methods in a statically-typed programming language. In Proc. ECOOP, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. REJZ88 Justin O. Graver Ralp E. Johnson and Lawrence W. Zurawski. Ts: An optimizing compiler for smalltalk. In Proc. OOPSLA, pages 18-26, 1988. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Ros88 John R. Rose, Fast dispatch mechanism for stock hardware. In Proc. OOPSLA, pages 27-35, 1988. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. SO91 Heinz W. Schmidt and Stephen Omohundro. Clos. Eiffel, and Sather: A comparison. Technical Report TR-91-047, International Computer Science Institute, Berkeley, CA, 1991.Google ScholarGoogle Scholar
  21. Str86 Bjarne Stroustrup. The C++ Programming Language. Addison-Wesley, Reading, Mass., 1986. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Ung86 David Ungar. The Design and Evaluation of a High Performance Smalltalk System. MIT Press, Cambridge, MA, 1986. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. UP83 David Ungar and David Patterson. Smalltalk-80: Bits of History and Words of Advice, chapter Berkeley Smalltalk: Who Knows Where the Time Goes? Addison Wesley, 1983.Google ScholarGoogle Scholar
  24. UP87 David Ungar and David Patterson. What price Smalltalk? IEEE Computer, 20(1), 1987. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. USCH92 David Ungar, Randall B. Smith, Craig Chambers, and Urs Holzle. Object, message and performance: How they coexist in SELF. IEEE Computer, October 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Optimizing multi-method dispatch using compressed dispatch tables

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!