Efficient dynamic dispatch without virtual function tables: the SmallEiffel compiler

Robert Fraser fraserofthenight at gmail.com
Fri Mar 7 09:50:27 PST 2008


Craig Black wrote:
> I found this article on the internet.  It concurs with my theories about the 
> overhead of virtual function calls.  Here's the abstract:
> 
> SmallEiffel is an Eiffel compiler which uses a fast simple type inference 
> mechanism to remove most late binding calls, replacing them by static 
> 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 inheritance 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 simple static binary branch 
> code. We show that this implementation makes it possible to use modern 
> hardware very efficiently. It also allows us to inline more calls even when 
> dynamic dispatch is required. Some more dispatch sites are removed after the 
> type inference algorithm has been performed, if the different branches of a 
> dispatch site lead to the same code.The advantage of this approach is that 
> it greatly speeds up execution time and considerably decreases the amount of 
> generated code.
> -Craig

This has been something I always wondered whether it was possible or 
not, and I guess it is ;-P. I would *love* to see this in D.




More information about the Digitalmars-d mailing list