: 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 gene...
|
1295
|
The C++ Programming Language
– Stroustrup
- 1991
|
|
1137
|
Smalltalk-80: The Language and Its Implementation
– Goldberg, Robson
|
|
481
|
Self: The power of simplicity
– Ungar, Smith
- 1987
|
|
306
|
Using Prototypical Objects to Implement Shared Behavior in ObjectOriented Systems
– Lieberman
- 1986
|
|
202
|
Efficient implementation of the Smalltalk-80 system
– Deutsch, Schiffman
- 1984
|
|
200
|
Dimensions of object-based language design
– Wegner
- 1987
|
|
193
|
and Bjarne Stroustrup. The Annotated C++ Reference Manual
– Ellis
- 1990
|
|
185
|
Customization: Optimizing compiler technology for SELF, a dynamically-typed object-oriented programming language
– Chambers, Ungar
- 1989
|
|
145
|
An efficient implementation of self - a dynamically-typed object-oriented language based on prototypes
– Chambers, Ungar, et al.
- 1989
|
|
141
|
Object-oriented programming with Flavors
– Moon
- 1986
|
|
126
|
The Design and Evaluation of a High Performance Smalltalk System. ACM Distinguished Dissertations
– Ungar
- 1987
|
|
118
|
The Design and Implementation of the SELF Compiler, an Optimizing Compiler for Object-Oriented Programming Languages
– Chambers
- 1992
|
|
116
|
Iterative Type Analysis and Extended Message Splitting: Optimizing Dynamically-Typed Object-Oriented
– Chambers, Ungar
- 1990
|
|
116
|
Making Pure Object-Oriented Languages Practical
– Chambers, Ungar
- 1991
|
|
104
|
An Introduction to Trellis/Owl
– Schaffert, Cooper, et al.
- 1986
|
|
86
|
Delegation is inheritance
– Stein
- 1987
|
|
76
|
A simple technique for handling multiple polymorphism
– Ingalls
- 1986
|
|
62
|
A Fast Method Dispatcher for Compiled Languages with Multiple Inheritance
– Dixon, McKee, et al.
- 1989
|
|
62
|
Design of the opportunistic garbage collector
– Wilson, Moher
- 1989
|
|
58
|
Classes Versus Prototypes in Object-Oriented Languages
– Borning
- 1986
|
|
58
|
A type system for Smalltalk
– Graver, Johnson
- 1990
|
|
55
|
Genericity versus Inheritance
– Meyer
- 1986
|
|
48
|
TS: An Optimizing Compiler for Smalltalk
– Johnson, Graver, et al.
- 1988
|
|
48
|
Tenuring policies for generationbased storage reclamation
– Ungar, Jackson
- 1988
|
|
47
|
Inferring Types in Smalltalk
– Suzuki
- 1981
|
|
40
|
A type declaration and inference system for Smalltalk
– Borning, Ingalls
- 1982
|
|
39
|
An Exemplar Based Smalltalk
– LaLonde, Thomas, et al.
- 1986
|
|
37
|
Efficient method dispatch in PCL
– Kiczales, Jr
- 1993
|
|
34
|
the ultimate imperative
– Sussman, Lambda
- 1976
|
|
28
|
Customization in C
– Lea
- 1990
|
|
28
|
Two-Directional Record Layout for Multiple Inheritance
– Pugh, Weddell
- 1990
|
|
28
|
Fast Dispatch Mechanisms for Stock Hardware
– Rose
- 1988
|
|
23
|
Adaptive systems for the dynamic run-time optimization of programs
– Hansen
- 1974
|
|
16
|
Lambda: the ultimate declarative
– Steele
- 1976
|
|
15
|
Design and Construction of Flexible and Efficient Interactive Programming Systems
– Mitchell
- 1970
|
|
14
|
Hurricane: an optimizing compiler for Smalltalk
– Atkinson
- 1986
|
|
14
|
Architecture of SOAR: Smalltalk on a risc
– Ungar, Blau, et al.
- 1984
|
|
12
|
Object Storage and Inheritance for SELF, a Prototype-Based ObjectOriented Programming Language. Engineer’s thesis
– Lee
- 1988
|
|
11
|
D.: Berkeley Smalltalk: Who Knows Where the Time Goes
– Ungar, Patterson
|
|
10
|
The Smalltalk-80 benchmarks
– McCall
- 1983
|
|
10
|
What price Smalltalk
– Ungar, Patterson
- 1987
|
|
9
|
Workshop on Compiling and Optimizing Object-Oriented Programming Languages
– Johnson
- 1987
|
|
8
|
Creating Efficient Systems for Object-Oriented Languages
– Suzuki, Terada
- 1984
|
|
7
|
The Dorado Smalltalk-80 Implementation: Hardware Architecture's Impact on Software Architecture
– Deutsch
- 1983
|
|
6
|
QUICKTALK: a Smalltalk80 dialect for defining primitive methods
– Ballard, Maier, et al.
- 1986
|
|
6
|
Low Level Optimizations for an Object-Oriented Programming Language
– Heintz
- 1990
|
|
5
|
Efficient implementation of the Smalltalk-80
– Deutsch, Schiffman
- 1984
|
|
3
|
integer benchmarks
– Hennessy
- 1988
|
|
2
|
Type inferencing
– Curtis
- 1989
|
|
2
|
and Eduardo Pelegri-Llopart, "An Assessment of Method-Lookup Caches for Smalltalk-80 Implementations
– Conroy
- 1983
|