Warning: this is an htmlized version!
The original is across this link,
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 ; )