Whenever a method is repeatedly invoked, the address of the recipient object may be backpatched in the caller. In some cases, even the result may be inlined to replace the request. Both techniques make it appear that message passing takes place, but at a much lower price. More complicated techniques, involving lazy compilation (by delaying the compilation of infrequently visited code) and message splitting (involving a dataflow analysis and the reduction of redundancies) may be applied to achieve more optimal results.
Benchmark tests have indicated a significant improvement
in execution speed (up to 60% of optimized C code)
for cases where type information could be dynamically obtained.
The reader is referred to
draft version 0.1 (15/7/2001)