| ' noop IS store-backtrace |
' noop IS store-backtrace |
| \ [THEN] |
\ [THEN] |
| |
|
| : (try) ( -- ) |
: (try) ( ahandler -- ) |
| \ inline argument: address of the handler |
|
| r> |
r> |
| dup @ >r \ recovery address |
swap >r \ recovery address |
| rp@ 'catch >r |
rp@ 'catch >r |
| sp@ >r |
sp@ >r |
| fp@ >r |
fp@ >r |
| handler @ >r |
handler @ >r |
| rp@ handler ! |
rp@ handler ! |
| backtrace-empty on |
backtrace-empty on |
| cell+ >r ; |
>r ; |
| |
|
| : try ( compilation -- orig ; run-time -- ) \ gforth |
: try ( compilation -- orig ; run-time -- ) \ gforth |
| POSTPONE (try) >mark ; immediate compile-only |
\ !! does not work correctly for gforth-native |
| |
POSTPONE lit >mark POSTPONE (try) ; immediate compile-only |
| |
|
| : (recover) ( -- ) |
: (recover) ( -- ) |
| \ normal end of try block: restore handler, forget rest |
\ normal end of try block: restore handler, forget rest |