| : (does>1) ( addr r:retaddr -- ) |
: (does>1) ( addr r:retaddr -- ) |
| rdrop cfaligned /does-handler + !does ; \ !! no tail-call optimization |
rdrop cfaligned /does-handler + !does ; \ !! no tail-call optimization |
| |
|
| |
: (does>2) ( addr -- ) |
| |
cfaligned /does-handler + !does ; |
| |
|
| : dodoes, ( -- ) |
: dodoes, ( -- ) |
| cfalign here /does-handler allot does-handler! ; |
cfalign here /does-handler allot does-handler! ; |
| |
|
| :noname |
:noname |
| ;-hook ?struc |
;-hook ?struc |
| [ has? xconds [IF] ] exit-like [ [THEN] ] |
[ has? xconds [IF] ] exit-like [ [THEN] ] |
| here 4 cells + postpone aliteral postpone (does>1) dodoes, |
here 5 cells + postpone aliteral postpone (does>2) [compile] exit |
| |
finish-code dodoes, |
| defstart :-hook ; |
defstart :-hook ; |
| interpret/compile: DOES> ( compilation colon-sys1 -- colon-sys2 ; run-time nest-sys -- ) \ core does |
interpret/compile: DOES> ( compilation colon-sys1 -- colon-sys2 ; run-time nest-sys -- ) \ core does |
| |
|