Advanced Search

Browse by Discipline

Scientific Societies

E-print Alerts

Add E-prints

E-print Network

  Advanced Search  

Andrew W. Appel 3 Princeton University

Summary: Andrew W. Appel 3
Princeton University
March 1988
Many modern programming environments use tag bits at runtime to
distinguish objects of different types. This is particularly common in sys­
tems 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 can


Source: Appel, Andrew W. - Department of Computer Science, Princeton University


Collections: Computer Technologies and Information Sciences