A compact set of garbage collection tables takes advantage of the
redundancies often inherent in live pointer information: multiple call
sites in a call stack often share common live pointer information. A call
site table lists call site identifiers associated with call stack
locations having pointers to heap-allocated data. An associated
indirection table (i.e., a descriptor reference table) provides a
reference (e.g., an index or a pointer) into a descriptor table, which
stores unique descriptors of the call stack locations of interest. The
aggregate memory space used by the three tables (i.e., the call site
table, the indirection table, and the descriptor table) is typically less
than the memory space used by the monolithic live pointer information
table.