Julian Dolby
dolby@cs.uiuc.edu
Concurrent Systems Architecture Group
Department of Computer Science
University of Illinois
1304 West Springfield Avenue
Urbana, IL 61801
Object-oriented languages like Java and Smalltalk provide a uniform object model that simplifies programming by providing a consistent, abstract model of object behavior. But direct implementations introduce overhead, removal of which requires aggressive implementation techniques (e.g. type inference, function specialization); in this paper, we introduce object inlining, an optimization that automatically inline allocates objects within containers (as is done by hand in C++) within a uniform model. We present our technique, which includes novel program analyses that track how inlinable objects are used throughout the program. We evaluated object inlining on several object-oriented benchmarks. It produces performance up to three times as fast as a dynamic model without inlining and roughly equal to that of manually-inlined codes.
This paper appeared in the 1997 ACM SIGPLAN Conference on Programming Language Design and Implementation, June 1997, Las Vegas, Nevada.