define-transform ( word quot n -- ) (original) (raw)
Vocabulary
stack-checker.transforms
Inputs
word | a word |
---|---|
quot | a quotation taking n inputs from the stack and producing another quotation as output |
n | a non-negative integer |
Outputs
None
Word description
Defines a compiler transform for the optimizing compiler. When a call to word is being compiled, the compiler first checks that the top n stack values are literal, and if so, calls the quotation with those inputs at compile time. The quotation can output a new quotation, or f.
If the quotation outputs f, or if not all inputs are literal, a call to the word is compiled as usual, or compilation fails if the word does not have a static stack effect.
Otherwise, if the transform output a new quotation, the quotation replaces the word's call site.
Examples
The cond word compiles to efficient code because it is transformed using cond>quot:
\ cond [ cond>quot ] 1 define-transform
Definition