Compact dispatch tables for dynamically typed object oriented languages

  • Jan Vitek
  • R. Nigel Horspool
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1060)


Dynamically typed object-oriented languages must perform dynamic binding for most message sends. Typically this is slow. A number of papers have reported on attempts to adapt C++-style selector table indexing to dynamically typed languages, but it is difficul to generate space-efficient tables. Our algorithm generates considerably smaller dispatch tables for languages with single inheritance than its predecessors at the cost of a small dispatch time penalty.


Hash Table Message Passing Code Size Dynamic Binding Partition Size 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. [1]
    André, P., Royer, J.-C.: Optimizing Method Search with Lookup Caches and Incremental Coloring. In OOPSLA '92, 1992.Google Scholar
  2. [2]
    Conroy, T., Pelegri-Llopart, E.: An Assessment of Method-Lookup Caches for Smalltalk-80 Implementations. In Smalltalk-80: The Language and its Implementation, Addison-Wesley, 1985.Google Scholar
  3. [3]
    Deutsch, L.P., Schiffman, A.: Efficient Implementation of the Smalltalk-80 System. In Proc. 11th POPL, Salt Lake City, UT, 1984.Google Scholar
  4. [4]
    Dixon, R., McKee, T., Schweitzer, P., Vaughan, M.: A Fast Method Dispatcher for Compiled Languages with Multiple Inheritance. Proc. OOPSLA'89, New Orleans, LA, Oct. 1989.Google Scholar
  5. [5]
    Driesen, K.: Selector Table Indexing & Sparse Arrays. Proc. OOPSLA'93, Washington, DC, 1993.Google Scholar
  6. [6]
    Driesen, K.: Method Lookup Strategies in Dynamically Typed Object-Oriented Programming Languages. M.Sc., Vrije Univ. Brussel, 1993.Google Scholar
  7. [7]
    Driesen, K., Hölzle, U., Vitek, J.: Message Dispatch on Pipelined Processors. In ECOOP 95.Google Scholar
  8. [8]
    Karel Driesen, Urs Hölzle, “Minimizing Row Displacement Dispatch Tables”. In OOPSLA'95.Google Scholar
  9. [9]
    Ellis, M.A., Stroustrup, B.: The Annotated C++ Reference Manual. Addison-Wesley, 1990.Google Scholar
  10. [10]
    Hölzle, U., Chambers, C., Ungar, D.: Optimizing Dynamically-Typed Object-Oriented Languages With Polymorphic Inline Caches. Proc. ECOOP'93, Springer-Verlag, 1993.Google Scholar
  11. [11]
    Kiczales, G., Rodriguez, L.: Efficient Method Dispatch in PCL. In LFP '90, 1990.Google Scholar
  12. [12]
    Plevyak, J., Chien, A.A.: Precise Concrete Type Inference for Object-Oriented Languages, Proc. OOPSLA'94, Portland, Oregon, October 1994.Google Scholar
  13. [13]
    Ungar, D.: The Design and Evaluation of a High Performance Smalltalk System. PhD Thesis, The MIT Press, 1987.Google Scholar
  14. [14]
    Vitek, J, Horspool, R.N., Uhl, J.: Compile-time analysis of object-oriented programs, Proc. CC'92, Paderborn, Germany, 1992, LNCS 641.Google Scholar
  15. [15]
    Vitek, J, Horspool, R.N: Taming Message Passing: Efficient method lookup for dynamically typed object-oriented languages. In ECOOP '94, LNCS 821, Springer-Verlag, 1994.Google Scholar
  16. [16]
    Vitek, J: Compact Dispatch Tables for Dynamically Typed Programming Language. M.Sc. Thesis, University of Victoria, 1995.Google Scholar
  17. [17]
    Vitek, J., Horspool, R.N.: Fast Constant Time Type Inclusion Testing. Submitted, Sept. 1995.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1996

Authors and Affiliations

  • Jan Vitek
    • 1
  • R. Nigel Horspool
    • 2
  1. 1.Object Systems Group, CUIUniv. of GenevaGeneva 4Switzerland
  2. 2.Dept. of Computer ScienceUniv. of VictoriaVictoriaCanada

Personalised recommendations