Profile-Guided Receiver Class Prediction

David Grove, Jeffrey Dean, Charles Garrett, and Craig Chambers
The use of dynamically-dispatched procedure calls is a key mechanism for writing extensible and flexible code in object-oriented languages. Unfortunately, dynamic dispatching imposes a runtime performance penalty. Some recent implementations of pure object-oriented languages have utilized profile-guided receiver class prediction to reduce this performance penalty, and some researchers have argued for applying receiver class prediction in hybrid languages like C++. We performed a detailed examination of the dynamic profiles of eight large object-oriented applications written in C++ and Cecil, determining that the receiver class distributions are strongly peaked and stable across both inputs and program versions through time. We describe techniques for gathering and manipulating profile information at varying degrees of precision, particularly in the presence of optimizations such as inlining. Our implementation of profile-guided receiver class prediction in the Cecil compiler improves the performance of large Cecil applications by a factor of two over solely static optimizations.
Published in the proceedings of OOPSLA'95, Austin, TX, October, 1995.

To get the PostScript file, click here. An earlier version of this paper appeared as UW-CS TR 94-03-05.

Cecil/Vortex Project