List Processing in Real Time on a Serial Computer
A real-time list processing system is one
in which the time required by the elementary list 
operations (e.g. CONS, CAR, CDR, RPLACA, REPLACD, EQ,
and ATOM in LISP) is bounded by a (small) constant. 
 Classical implementations of list processing systems
lack this property because allocating a list cell 
from the heap may cause a garbage collection, which process
requires time proportional to the heap size 
to finish.  A real-time list processing system is presented
which continuously reclaims garbage, including 
directed cycles, while linearizing and compacting the
accessible cells into contiguous locations to avoid 
fragmenting the free storage pool.  The program is small
and requires no time-sharing interrupts, making 
it suitable for microcode.  Finally, the system requires
the same average time, and not more than twice 
the space, of a classical implementation, and those
space requirements can be reduced to approximately 
classical proportions by compact list representation.
 Arrays of different sizes, a program stack, and 
hash linking are simple extensions to our system, and
reference counting is found to be inferior for 
many applications.
CACM April, 1978
Baker, H.G.
