Vocabularycompiler.unitsInputsalist | an association list with words as keys |
update-existing? | a boolean |
reset-pics? | a boolean |
OutputsNone
Word descriptionLowest-level primitive for defining words. Associates words with code blocks in the code heap.
The alist maps words to one of the following:
• | a quotation - in this case, the quotation is compiled with the non-optimizing compiler and the word will call the quotation when executed. |
• | a 6-element array { parameters literals relocation labels code stack-frame-size } - in this case, a code heap block is allocated with the given data and the word will call the code block when executed. This is used by the optimizing compiler. |
If any of the redefined words may already be referenced by other words in the code heap, from outside of the compilation unit, then a scan of the code heap must be performed to update all word call sites. Passing
t as the
update-existing? parameter enables this code path.
If classes, methods or generic words were redefined, then inline cache call sites need to be updated as well. Passing
t as the
reset-pics? parameter enables this code path.
ExamplesManually creating a word using the non-optimizing compiler:
USING: compiler.units io ;
IN: scratchpad
: foo ( -- ) ;
{ { foo [ "hello!" write nl ] } } t t modify-code-heap foo
hello!
NotesThis word is called at the end of
with-compilation-unit.
Definition