MetaCart Sign in to MyCiteSeerX

Include Citations | Advanced Search | Help

Disambiguated Search | Include Citations | Advanced Search | Help

Runtime Tags Aren't Necessary (1988) [62 citations — 4 self]

by Andrew W. Appel ,  Andrew W
Add To MetaCart

Abstract:

Many modern programming environments use tag bits at runtime to distinguish objects of different types. This is particularly common in systems with garbage collection, since the garbage collector must be able to distinguish pointers from non-pointers, and to learn the length of records pointed to. The use of tag bits leads to inefficiency. In addition to the obvious space overhead (tag bits and record descriptors occupy memory space), there is a time overhead: tag bits must be stripped off of data before arithmetic operations are performed, and re-attached to the data when it is stored into memory. This takes either extra instructions at runtime, or special tag-handling hardware, or both. This paper shows how the use of tag bits, record descriptor words, explicit type parameters, and the like can be avoided in languages (like ML) with static polymorphic typechecking. Though a form of tag will still be required for user-defined variant records, all other type information ...

Citations

1415 The Definition of Standard ML – Milner, Tofte, et al. - 1990
806 A Theory of Type Polymorphism in Programming – Milner - 1978
288 Generation scavenging: A non-disruptive high performance storage management reclamation algorithm – Ungar - 1984
217 A real-time garbage collector based on the lifetimes of objects – Lieberman, Hewitt - 1983
126 The Design and Evaluation of a High Performance Smalltalk System. ACM Distinguished Dissertations – Ungar - 1987
101 Garbage collection can be faster than stack allocation – Appel - 1987
84 A Standard ML compiler – Appel, MacQueen - 1987
77 Real-time concurrent collection on stock mul-tiprocessors – APPEL, ELLIS, et al. - 1988
71 On Extending Modula-2 for Building Large, Integrated Systems – Rovner, Levin, et al. - 1985
20 Heap storage management for the programming language Pascal – Britton - 1975