Diff for /gforth/glocals.fs between versions 1.31 and 1.35

version 1.31, 1997/03/11 16:00:39 version 1.35, 1997/10/04 17:33:53
Line 85 Line 85
 \ Currently locals may only be  \ Currently locals may only be
 \ defined at the outer level and TO is not supported.  \ defined at the outer level and TO is not supported.
   
 require search-order.fs  require search.fs
 require float.fs  require float.fs
   
 : compile-@local ( n -- ) \ gforth compile-fetch-local  : compile-@local ( n -- ) \ gforth compile-fetch-local
Line 322  create new-locals-map ( -- wordlist-map Line 322  create new-locals-map ( -- wordlist-map
 ' new-locals-find A,  ' new-locals-find A,
 ' new-locals-reveal A,  ' new-locals-reveal A,
 ' drop A, \ rehash method  ' drop A, \ rehash method
   ' drop A,
   
 slowvoc @  slowvoc @
 slowvoc on  slowvoc on
Line 332  new-locals-map ' new-locals >body cell+ Line 333  new-locals-map ' new-locals >body cell+
 variable old-dpp  variable old-dpp
   
 \ and now, finally, the user interface words  \ and now, finally, the user interface words
 : { ( -- addr wid 0 ) \ gforth open-brace  : { ( -- lastxt wid 0 ) \ gforth open-brace
     dp old-dpp !      dp old-dpp !
     locals-dp dpp !      locals-dp dpp !
       lastxt get-current
     also new-locals      also new-locals
     also get-current locals definitions  locals-types      also locals definitions locals-types
     0 TO locals-wordlist      0 TO locals-wordlist
     0 postpone [ ; immediate      0 postpone [ ; immediate
   
 locals-types definitions  locals-types definitions
   
 : } ( addr wid 0 a-addr1 xt1 ... -- ) \ gforth close-brace  : } ( lastxt wid 0 a-addr1 xt1 ... -- ) \ gforth close-brace
     \ ends locals definitions      \ ends locals definitions
     ] old-dpp @ dpp !      ] old-dpp @ dpp !
     begin      begin
Line 352  locals-types definitions Line 354  locals-types definitions
     repeat      repeat
     drop      drop
     locals-size @ alignlp-f locals-size ! \ the strictest alignment      locals-size @ alignlp-f locals-size ! \ the strictest alignment
     set-current  
     previous previous      previous previous
       set-current lastcfa !
     locals-list TO locals-wordlist ;      locals-list TO locals-wordlist ;
   
 : -- ( addr wid 0 ... -- ) \ gforth dash-dash  : -- ( addr wid 0 ... -- ) \ gforth dash-dash
Line 645  forth definitions Line 647  forth definitions
     case      case
         [ ' locals-wordlist ] literal >definer \ value          [ ' locals-wordlist ] literal >definer \ value
         OF >body POSTPONE Aliteral POSTPONE ! ENDOF          OF >body POSTPONE Aliteral POSTPONE ! ENDOF
         [ comp' clocal drop ] literal >definer          \ !! dependent on c: etc. being does>-defining words
           \ this works, because >definer uses >does-code in this case,
           \ which produces a relocatable address
           [ comp' clocal drop >definer ] literal
         OF POSTPONE laddr# >body @ lp-offset, POSTPONE c! ENDOF          OF POSTPONE laddr# >body @ lp-offset, POSTPONE c! ENDOF
         [ comp' wlocal drop ] literal >definer          [ comp' wlocal drop >definer ] literal
         OF POSTPONE laddr# >body @ lp-offset, POSTPONE ! ENDOF          OF POSTPONE laddr# >body @ lp-offset, POSTPONE ! ENDOF
         [ comp' dlocal drop ] literal >definer          [ comp' dlocal drop >definer ] literal
         OF POSTPONE laddr# >body @ lp-offset, POSTPONE 2! ENDOF          OF POSTPONE laddr# >body @ lp-offset, POSTPONE 2! ENDOF
         [ comp' flocal drop ] literal >definer          [ comp' flocal drop >definer ] literal
         OF POSTPONE laddr# >body @ lp-offset, POSTPONE f! ENDOF          OF POSTPONE laddr# >body @ lp-offset, POSTPONE f! ENDOF
         -&32 throw          -&32 throw
     endcase ;      endcase ;

Removed from v.1.31  
changed lines
  Added in v.1.35


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