| Borrow, copy or steal?: loans and larceny in the orthodox canonical form |
| Full text |
Pdf
(2.09 MB)
|
| Source
|
Conference on Object Oriented Programming Systems Languages and Applications
archive
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
table of contents
Vancouver, British Columbia, Canada
Pages: 65 - 83
Year of Publication: 1998
ISBN:1-58113-005-8
Also published in ...
|
|
Author
|
|
Anthony J. H. Simons
|
Department of Computer Science, University of Sheffield, Regent Court, 211 Portobello Street, Sheffield, S1 4DP UK
|
|
| Sponsor |
|
| Publisher |
|
| Bibliometrics |
Downloads (6 Weeks): 4, Downloads (12 Months): 22, Citation Count: 1
|
|
|
ABSTRACT
Dynamic memory management in C++ is complex, especially across the boundaries of library abstract data types. C++ libraries designed in the orthodox canonical form (OCF) alleviate some of the problems by ensuring that classes which manage any kind of heap structures faithfully copy and delete these. However, in certain common circumstances, OCF heap structures are wastefully copied multiple times. General reference counting is not an option in OCF, since a shared body violates the intended value semantics; although a copy-on-write policy can be made to work with borrowed heap structures. A simpler ownership policy, based on larceny, allows low-level memory manager objects to steal heap structures from temporary variables, in properly isolated circumstances. Various strategies for regulating theft are presented, ranging from pilfer-constructors to locks on heap data. Larceny has similarities with other transfer of ownership patterns, but is more a core implementation technique designed to improve the efficiency and effectiveness of OCF-conformant libraries.
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.
| |
Alme97
|
P S Almeida, "Balloon types: controlling sharing of state in data types", Proc. l lth European Conf. Object-Oriented Prog. (1997), Springer Verlag, 32-59.
|
| |
Booc94
|
|
| |
BrLo97
|
|
| |
CABD94
|
Derek Coleman , Patrick Arnold , Stephanie Bodoff , Chris Dollin , Helena Gilchrist , Fiona Hayes , Paul Jeremaes, Object-oriented development: the fusion method, Prentice-Hall, Inc., Upper Saddle River, NJ, 1994
|
| |
Carg96
|
|
| |
Colv98
|
G Colvin, "Why is auto_ptr defined the way it is?", The comp.std.c++ FAQ, question C2, http.'//real ity. s g i. com/auste rn_mti/std-c + + /faq.html, 13 May (1998).
|
| |
Cope92
|
|
| |
GHJV95
|
|
| |
GOP90
|
|
 |
HLHW92
|
|
 |
Hogg91
|
|
| |
Hors95
|
|
| |
Lea 93
|
D Lea, "The GNU C++ Library", C++ Report, June (1993); reprinted in {Lipp96}; revised as: http://gee.cs.oswego.edu/dl/libg+ +paper/ libg++/libg++.html, (1995).
|
| |
Lea96
|
|
| |
Lipp96
|
|
| |
Meye92
|
|
| |
Mins96
|
|
| |
Rati93
|
Rational, C++ Booch Components Class Catalog, version 2.3 (1993), Rational.
|
| |
Rogu95
|
Rogue Wave, Tools.h++ Foundation Class Library for C++ Programming, version 6 (1995), Rogue Wave Software, Inc.
|
| |
SaCa96
|
|
| |
SBGL91
|
Robert E. Strom , David F. Bacon , Arthur P. Goldberg , Andy Lowry , Daniel M. Yellin , Shaula Alexander Yemini, Hermes: a language for distributed computing, Prentice-Hall, Inc., Upper Saddle River, NJ, 1991
|
| |
Stee86
|
G L Steele, The Common Lisp Reference Manual (1986), Digital Press.
|
| |
StLe94
|
A Stepanov and M Lee, "The standard template library", Technical Report, Hewlett- Packard Laboratories, May (1994).
|
| |
Stro91
|
|
| |
VCK96
|
|
| |
Wild96
|
F Wild, "Instantiating code patterns", Dr Dobb's Journal, June (1996), 72.
|
INDEX TERMS
Primary Classification:
D.
Software
D.3
PROGRAMMING LANGUAGES
D.3.2
Language Classifications
Nouns:
C++
Additional Classification:
D.
Software
D.2
SOFTWARE ENGINEERING
D.2.2
Design Tools and Techniques
Subjects:
Software libraries
D.4
OPERATING SYSTEMS
General Terms:
Design,
Languages,
Performance,
Theory
Keywords:
C++,
borrowing,
copy-on-write,
implementation strategies,
larceny,
memory management,
stealing,
transfer of ownership
|