| OCR Text |
Show objects in ToSpace are traversed only once, as a result some white objects may not be copied to ToSpace. This restriction can be removed by using execution stream. The execution stream contains information which parts of the mutator's state were modified. This information is used to catch new references to FromSpace. A special list of these references is maintained. After all objects in ToSpace are traversed, references from the list are taken to copy additional white objects. The details how the collector detects references to FromSpace are as follows. A critical case is when a reference to FromSpace is written in a black object in ToSpace. This can be detected if a location in ToSpace is modified so that it points to FromSpace. An event in the execution stream provides information on instruction executed, the address of the result and the value of the result which is needed to detect critical cases. An event filter, discussed later, can be used to filter out redundant information from the execution stream dynamically at run time. Events that pass through the filter contain references to critical objects which are stored and processed later. The real time algorithm using introspection thus removes both main limitations of existing real time algorithms for garbage collection. First, the latency of the new algorithm does not depend on the size of the largest object. Second, the mutator can proceed concurrently with the collector without being subjected to extensive limitations. 3.3.4 Memoing Although events in the execution stream are low level, the director can use them to construct high level events. A function call provides an example of a high level event that can be recognized by the director. The ability to recognize function calls leads to an interesting application, called memoing. For each function call, the director remembers its 56 |