Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
\ ============================================================================== \ \ RubyFORTH -- Copyright (C) 2007-8, Marc Simpson (GPL). \ \ Compiler "inlining" words to account for stray writes to 'here'. \ \ ============================================================================== variable inline-origin ( The following 'inline' words are designed to safely run code known to write ) ( to HERE in the course of compilation. They are so named because anything ) ( falling between the start and end of an inline block might write to data ) ( space. Since this is coincidental with code space, words using comma ) ( operations can ruin the behaviour of the target thread. ) compiler ( These words handle the branching ) : beg-inline compile branch here inline-origin ! 0 , ; : end-inline here inline-origin @ ! ; ( Dispense with '[compile] beg-inline' ) : inline[ ['] beg-inline , ; : ]inline ['] end-inline , ; ( Usage ==> compiler : a-word inline[ word-that-writes-HERE ]inline ; )