Polymorphic inline caches (PICs) provide a new way to reduce the overhead of polymorphic message sends by extending inline caches to include more than
one cached lookup result per call site. For a set of typical object-oriented SELF programs, PICs achieve a median speedup
of 11%.
As an important side effect, PICs collect type information by recording all of the receiver types actually used at a given
call site. The compiler can exploit this type information to generate better code when recompiling a method. An experimental version of such a system achieves a median speedup of 27% for our set of SELF programs, reducing
the number of non-inlined message sends by a factor of two.
Implementations of dynamically-typed object-oriented languages have been limited by the paucity of type information available
to the compiler. The abundance of the type information provided by PICs suggests a new compilation approach for these languages,
adaptive compilation. Such compilers may succeed in generating very efficient code for the time-critical parts of a program without incurring
distracting compilation pauses.
This work has been supported in part by the Swiss National Science Foundation (Nationalfonds), an IBM graduate student fellowship,
NSF Presidential Young Investigator Grant # CCR-8657631 and by Sun, IBM, Apple, Cray, Tandem, TI, and DEC.