Abstract:
Existing schemes for object layout and dispatch in the presence of multiple inheritance and separate compilation waste space and are slower than systems with single inheritance. This paper describes the bidirectional object layout, a new scheme for object layout that produces smaller objects and faster method invocations than existing schemes by automatically optimizing particular uses of multiple inheritance. The bidirectional object layout is used for the programming language Theta, and is applicable to languages like C++. This paper also demonstrates how to efficiently implement method dispatch when method signatures are allowed to change in subclasses. Most current statically compiled languages require identical signatures for efficiency.
Citations
|
467
|
A semantics of multiple inheritance
– Cardelli
- 1984
|
|
279
|
The Annotated C ++ Reference Manual
– Ellis, Stroustrop
- 1990
|
|
248
|
The OO7 benchmark
– Carey, Witt, et al.
- 1993
|
|
193
|
and Bjarne Stroustrup. The Annotated C++ Reference Manual
– Ellis
- 1990
|
|
145
|
An efficient implementation of self - a dynamically-typed object-oriented language based on prototypes
– Chambers, Ungar, et al.
- 1989
|
|
118
|
The Design and Implementation of the SELF Compiler, an Optimizing Compiler for Object-Oriented Programming Languages
– Chambers
- 1992
|
|
70
|
Subtypes vs. where clauses: Constraining parametric polymorphism
– Day, Gruber, et al.
- 1995
|
|
62
|
A Fast Method Dispatcher for Compiled Languages with Multiple Inheritance
– Dixon, McKee, et al.
- 1989
|
|
53
|
Multiple Inheritance for C
– Stroustrup
- 1987
|
|
42
|
Optimizing Method Search with Lookup Caches and Incremental Coloring
– Andre, Royer
- 1992
|
|
28
|
Selector table indexing and sparse arrays
– Driesen
- 1993
|
|
28
|
Two-Directional Record Layout for Multiple Inheritance
– Pugh, Weddell
- 1990
|
|
28
|
Fast Dispatch Mechanisms for Stock Hardware
– Rose
- 1988
|
|
28
|
InterViews: A C++ graphical interface toolkit
– LINTON, CALDER, et al.
- 1988
|
|
10
|
Theta reference manual. Programming Methodology Group Memo 88
– Liskov, Curtis, et al.
- 1994
|
|
9
|
Labbase: a database to manage laboratory data in a large-scale genome-mapping project
– Rozen, Stein, et al.
- 1995
|
|
7
|
Fast object operations in a persistent programming system
– Myers
- 1994
|
|
1
|
InterViews: AC++ Graphical Interface Toolkit
– Linton, Calder, et al.
- 1988
|