Diff for /gforth/except.fs between versions 1.10 and 1.12

version 1.10, 2006/05/26 21:18:45 version 1.12, 2006/10/11 19:18:51
Line 76  Defer store-backtrace Line 76  Defer store-backtrace
   
 \ !! explain handler on-stack structure  \ !! explain handler on-stack structure
   
   Variable first-throw
   : nothrow ( -- )  first-throw on ;
   
 : (try) ( ahandler -- )  : (try) ( ahandler -- )
       first-throw on
     r>      r>
     swap >r \ recovery address      swap >r \ recovery address
     rp@ 'catch >r      rp@ 'catch >r
Line 125  is catch Line 129  is catch
 :noname ( y1 .. ym error/0 -- y1 .. ym / z1 .. zn error ) \ exception  :noname ( y1 .. ym error/0 -- y1 .. ym / z1 .. zn error ) \ exception
     ?DUP IF      ?DUP IF
         [ here forthstart 9 cells + ! ]          [ here forthstart 9 cells + ! ]
         store-backtrace error-stack off          first-throw @ IF
               store-backtrace error-stack off
               first-throw off
           THEN
         handler @ ?dup-0=-IF          handler @ ?dup-0=-IF
             >stderr cr ." uncaught exception: " .error cr              >stderr cr ." uncaught exception: " .error cr
             2 (bye)              2 (bye)
Line 139  is catch Line 146  is catch
         rdrop 'throw r> perform          rdrop 'throw r> perform
     THEN ;      THEN ;
 is throw  is throw
 [IFDEF] throw>error  [IFDEF] rethrow
 :noname ( y1 .. ym error/0 -- y1 .. ym / z1 .. zn error ) \ exception  :noname ( y1 .. ym error/0 -- y1 .. ym / z1 .. zn error ) \ exception
     ?DUP IF      ?DUP IF
         handler @ ?dup-0=-IF          handler @ ?dup-0=-IF
Line 154  is throw Line 161  is throw
         r> swap >r sp! drop r>          r> swap >r sp! drop r>
         rdrop 'throw r> perform          rdrop 'throw r> perform
     THEN ;      THEN ;
 is throw>error  is rethrow
 [THEN]  [THEN]
   

Removed from v.1.10  
changed lines
  Added in v.1.12


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>