Abstract:
. We have developed and implemented techniques that double the performance of dynamically-typed object-oriented languages. Our SELF implementation runs twice as fast as the fastest Smalltalk implementation, despite SELF's lack of classes and explicit variables. To compensate for the absence of classes, our system uses implementation-level maps to transparently group objects cloned from the same prototype, providing data type information and eliminating the apparent space overhead for prototype-based systems. To compensate for dynamic typing, user-defined control structures, and the lack of explicit variables, our system dynamically compiles multiple versions of a source method, each customized according to its receiver's map. Within each version the type of the receiver is fixed, and thus the compiler can statically bind and inline all messages sent to self. Message splitting and type prediction extract and preserve even more static type information, allowing the compiler to inline ma...
Citations
|
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
|
|
185
|
Customization: Optimizing compiler technology for SELF, a dynamically-typed object-oriented programming language
– Chambers, Ungar
- 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
|
|
116
|
Iterative Type Analysis and Extended Message Splitting: Optimizing Dynamically-Typed Object-Oriented
– Chambers, Ungar
- 1990
|
|
104
|
An Introduction to Trellis/Owl
– Schaffert, Cooper, et al.
- 1986
|
|
86
|
Delegation is inheritance
– Stein
- 1987
|
|
58
|
Classes Versus Prototypes in Object-Oriented Languages
– Borning
- 1986
|
|
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
|
|
34
|
the ultimate imperative
– Sussman, Lambda
- 1976
|
|
16
|
Lambda: the ultimate declarative
– Steele
- 1976
|
|
14
|
Hurricane: an optimizing compiler for Smalltalk
– Atkinson
- 1986
|
|
12
|
Object Storage and Inheritance for SELF, a Prototype-Based ObjectOriented Programming Language. Engineer’s thesis
– Lee
- 1988
|
|
10
|
The Smalltalk-80 benchmarks
– McCall
- 1983
|
|
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
|
|
3
|
integer benchmarks
– Hennessy
- 1988
|
|
2
|
Type inferencing
– Curtis
- 1989
|