Bidirectional Object Layout for Separate Compilation
Bidirectional Object Layout for Separate Compilation
Andrew C. Myers
MIT Laboratory for Computer Science
545 Technology Square
Cambridge, MA 02139, USA
andru@lcs.mit.edu
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.
This paper is also available in PostScript.
This paper appeared in the proceedings of OOPSLA '95. It also appeared in
ACM SIGPLAN Notices 30(10), pp. 124-139.
This research was supported in part
by the Advanced Research Projects Agency of the Department of Defense,
monitored by the Office of Naval Research under contract
N00014-91-J-4136 and in part by the National Science Foundation under
grant CCR-8822158.
Copyright ©1995 by the Association for Computing Machinery,
Inc. Permission to make digital or hard copies of part or all of this
work for personal or classroom use is granted without fee provided that
copies are not made or distributed for profit or commercial advantage
and that new copies bear this notice and the full citation on the first
page. Copyrights for components of this work owned by others than ACM
must be honored. Abstracting with credit is permitted. To copy
otherwise, to republish, to post on servers, or to redistribute to
lists, requires prior specific permission and/or a fee. Request
permissions from Publications Dept, ACM Inc., fax +1 (212) 869-0481, or
"permissions@acm.org".