Minimizing Row Displacement Dispatch Tables


Karel Driesen, Urs Hölzle
Abstract: Row displacement dispatch tables implement message dispatching for dynamically-typed languages with a run time overhead of one memory indirection plus an equality test. The technique is similar to virtual function table lookup, which is, however, restricted to statically typed languages like C++. We show how to reduce the space requirements of dispatch tables to approximately the same size as virtual function tables. The scheme is then generalized for multiple inheritance. Experiments on a number of class libraries from five different languages demonstrate that the technique is effective for a broad range of programs. Finally, we discuss optimizations of the row displacement algorithm that allow dispatch table construction of these large samples to take place in a few seconds.
Technical Report TRCS95-05, Computer Science Department, University of California, Santa Barbara, July 1995, also in Proceedings of OOPSLA'95 Conference, Austin, Texas, October 1995.

To get the PostScript file, click here (or uncompressed PostScript or PDF).