O. Zendra et al., EFFICIENT DYNAMIC DISPATCH WITHOUT VIRTUAL FUNCTION TABLES - THE SMALLEIFFEL COMPILER, ACM SIGPLAN NOTICES, 32(10), 1997, pp. 125-141
SmallEiffel is an Eiffel compiler which uses a fast simple type infere
nce mechanism to remove most late binding calls, replacing them by sta
tic bindings. Starting from the system's entry point, it compiles only
statically living code, which saves compiling and then removing dead
code. As the whole system is analyzed at compile time, multiple inheri
tance and genericity do not cause any overhead. SmallEiffel features a
coding scheme which eliminates the need for virtual function tables.
Dynamic dispatch is implemented without any array access but uses a si
mple static binary branch code. We show that this implementation makes
it possible to use modern hardware very efficiently. It also allows u
s to inline more calls even when dynamic dispatch is required. Some mo
re dispatch sites are removed after the type inference algorithm has b
een performed, if the different branches of a dispatch site lead to th
e same code. The advantage of this approach is that it greatly speeds
up execution time and considerably decreases the amount of generated c
ode.