Using a cached local variable allows for reentrant calls to identical code that is closed over different bindings. The address of the static environment hook is stored by Eclipse in the closure clObject . Eclipse also defines a globally known pointer to a buffer of multiple clObject values. The macro stores the location of this new buffer in the globally known pointer. The elements of this stack are pointers to data identifying the kind of information.
Shallow binding is used for dynamic variables.
These macros cover such issues as word size, variable argument mechanism, and function prototypes. The system assumes that anything that looks like it could be a pointer to data is live, and the data there is not collected. In addition, the collector recognizes a pointer that appears to point to within a heap allocated datum. Non-relocating garbage collectors do not move heap allocated data during collection. This means that only a small amount of work is done during each collection, which reduces delays.