| |
|
| defer basic-block-end ( -- ) |
defer basic-block-end ( -- ) |
| |
|
| : bb-end ( -- ) |
:noname ( -- ) |
| 0 last-compiled ! ; |
0 last-compiled ! ; |
| ' bb-end is basic-block-end |
is basic-block-end |
| |
|
| has? peephole [IF] |
has? peephole [IF] |
| |
|
| last-compiled @ if |
last-compiled @ if |
| last-compiled @ dyn-compile! |
last-compiled @ dyn-compile! |
| 0 last-compiled ! |
0 last-compiled ! |
| then ; |
then |
| |
finish-code ; |
| is basic-block-end |
is basic-block-end |
| |
|
| : static-compile, ( xt -- ) |
: static-compile, ( xt -- ) |
| dodefer: OF >body POSTPONE lit-perform , EXIT ENDOF |
dodefer: OF >body POSTPONE lit-perform , EXIT ENDOF |
| dofield: OF >body @ POSTPONE lit+ , EXIT ENDOF |
dofield: OF >body @ POSTPONE lit+ , EXIT ENDOF |
| \ dofield: OF >body @ POSTPONE literal POSTPONE + EXIT ENDOF |
\ dofield: OF >body @ POSTPONE literal POSTPONE + EXIT ENDOF |
| |
\ code words and ;code-defined words (code words could be optimized): |
| |
dup in-dictionary? IF drop POSTPONE literal POSTPONE execute EXIT THEN |
| ENDCASE |
ENDCASE |
| static-compile, ; |
static-compile, ; |
| |
|
| |
|
| : POSTPONE ( "name" -- ) \ core |
: POSTPONE ( "name" -- ) \ core |
| \g Compiles the compilation semantics of @i{name}. |
\g Compiles the compilation semantics of @i{name}. |
| COMP' postpone, ; immediate restrict |
COMP' postpone, ; immediate |
| |
|
| \ \ recurse 17may93jaw |
\ \ recurse 17may93jaw |
| |
|