-
Notifications
You must be signed in to change notification settings - Fork 103
Glossary
R. Matthew Emerson edited this page May 22, 2024
·
2 revisions
- acode
- An intermediate representation of Lisp code produced by the compiler front-end. Short for "alphatized code", meaning "has undergone alpha reduction", which in turn means "all lambda-bound variables have been consistently renamed".
- dnode
- Two native words. Lisp heap memory is allocated in units of dnodes.
- gvector
- A uvector whose elements are nodes.
- immediate
- A value in memory or a register that is a raw, untagged value.
- ivector
- A uvector whose elements are immediates.
- node
- A value in memory or a register that is a tagged lisp datum.
- punt, puntable
- If a variable is bound to a simple expression and is never setq'd, then all references to the variable can be replaced by references to the simple expression in question. This process is called "punting".
- tagged return address
- On x86, the call instruction unconditionally pushes a return address onto the stack. The compiler aligns the call instruction (via insertion of nop instructions) such that the pushed return address will have a special tag that the GC can recognize.
- uuo
- An "unimplemented user operation". Sometimes called a trap (after the PowerPC instructions). An illegal instruction used as a way for lisp code to request service from the lisp kernel (such as allocate more memory, initiate a GC, and so forth).
- uvector
- A memory-allocated object with a header word that describes the object's type and the number of elements it contains. (The name comes from Spice Lisp.)
- value stack
- A stack that contains tagged lisp objects (nodes) such as function arguments, local variables, and other stack-allocated lisp objects. The contents of the value stack between its bottom and top are always unambiguously nodes.