ACM Home Page
Please provide us with feedback. Feedback
Two-dimensional bidirectional object layout
Full text PdfPdf (617 KB)
Source
ACM Transactions on Programming Languages and Systems (TOPLAS) archive
Volume 30 ,  Issue 5  (August 2008) table of contents
Article No. 28  
Year of Publication: 2008
ISSN:0164-0925
Authors
Joseph (Yossi) Gil  Technion—Israel Institute of Technology
William Pugh  Dept. of Computer Science, University of Maryland, College Park
Grant E. Weddell  University of Waterloo
Yoav Zibin  Technion—Israel Institute of Technology
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 10,   Downloads (12 Months): 110,   Citation Count: 0
Additional Information:

abstract   references   index terms   review   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1387673.1387677
What is a DOI?

ABSTRACT

Object layout schemes used in C++ and other languages rely on (sometimes numerous) compiler generated fields. We describe a language-independent object layout scheme, which is space optimal, that is, objects are contiguous, and contain no compiler generated fields other than a single type identifier. As in C++ and other multiple inheritance languages such as CECIL and DYLAN, the new scheme sometimes requires extra levels of indirection to access some of the fields. Using a data set of 28 hierarchies, totaling almost 50,000 types, we show that this scheme improves field access efficiency over standard implementations, and competes favorably with (the non-space-optimal) highly optimized C++ specific implementations. The benchmark includes an analytical model for computing the frequency of indirections in a sequence of field access operations. Our layout scheme relies on whole-program analysis, which requires about 10 microseconds per type on a contemporary architecture (Pentium III, 900Mhz, 256MB machine), even in very large hierarchies. We also present a layout scheme for separate compilation using the user-annotation of virtual inheritance edge that is used in C++.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
 
2
Borning, A. H. and Ingalls, D. H. H. 1982. Multiple inheritance in Smalltalk80. In Proceedings of the 2nd National Conference on Artificial Intelligence. MIT Press, Cambridge, MA, 234--238.
3
 
4
Chambers, C. 1993. The Cecil language, specification and rationale. Tech. rep. TR-93-03-05, University of Washington, Seattle.
5
 
6
7
 
8
 
9
 
10
Magnussun, B., Meyer, B., et al. 1994. Who needs need multiple inheritance. In Proceedings of the International Conference on Technology of Object-Oriented Languages and Systems (TOOLS'94). Prentice-Hall, Englewood Cliffs, NJ.
11
12
13
14
 
15
Pugh, W. and Weddell, G. 1993. On object layout for multiple inheritance. Tech. rep. CS-93-22, Department of Computer Science, University of Waterloo.
 
16
 
17
 
18
 
19
 
20
Trotter, W. T. 1992. Combinatorics and Partially Ordered Sets: Dimension Theory. Johns Hopkins University Press, Baltimore, MD.
21
22
23
24


REVIEW

"Jan De Beule : Reviewer"

Inheritance is one of the fundamental paradigms of object-oriented programming. This paradigm allows classes to inherit features and behaviors from a superclass. Multiple inheritance allows classes to inherit from more than one superclass. The pro  more...

Collaborative Colleagues:
Joseph (Yossi) Gil: colleagues
William Pugh: colleagues
Grant E. Weddell: colleagues
Yoav Zibin: colleagues