Diff for /gforth/glocals.fs between versions 1.5 and 1.12

version 1.5, 1994/07/29 11:16:23 version 1.12, 1995/04/29 14:51:19
Line 61 Line 61
 \ 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.
   
 include float.fs  
 include search-order.fs  include search-order.fs
   include float.fs
   
 : compile-@local ( n -- )  : compile-@local ( n -- ) \ new compile-fetch-local
  case   case
     0 of postpone @local0 endof      0       of postpone @local0 endof
     4 of postpone @local4 endof      1 cells of postpone @local1 endof
     8 of postpone @local8 endof      2 cells of postpone @local2 endof
    12 of postpone @local12 endof      3 cells of postpone @local3 endof
    ( otherwise ) dup postpone @local# ,     ( otherwise ) dup postpone @local# ,
  endcase ;   endcase ;
   
 : compile-f@local ( n -- )  : compile-f@local ( n -- ) \ new compile-f-fetch-local
  case   case
     0 of postpone f@local0 endof      0        of postpone f@local0 endof
     8 of postpone f@local8 endof      1 floats of postpone f@local1 endof
    ( otherwise ) dup postpone f@local# ,     ( otherwise ) dup postpone f@local# ,
  endcase ;   endcase ;
   
Line 134  variable locals-dp \ so here's the speci Line 134  variable locals-dp \ so here's the speci
     postpone lp@ postpone c! ;      postpone lp@ postpone c! ;
   
 : create-local ( " name" -- a-addr )  : create-local ( " name" -- a-addr )
         \ defines the local "name"; the offset of the local shall be stored in a-addr      \ defines the local "name"; the offset of the local shall be
       \ stored in a-addr
     create      create
         immediate          immediate restrict
         here 0 , ( place for the offset ) ;          here 0 , ( place for the offset ) ;
   
 : lp-offset ( n1 -- n2 )  : lp-offset ( n1 -- n2 )
Line 263  locals-types definitions Line 264  locals-types definitions
   
 : -- ( addr wid 0 ... -- )  : -- ( addr wid 0 ... -- )
     }      }
     [char] } word drop ;      [char] } parse 2drop ;
   
 forth definitions  forth definitions
   
Line 497  forth definitions Line 498  forth definitions
      OF POSTPONE laddr# >body @ lp-offset, POSTPONE d! ENDOF       OF POSTPONE laddr# >body @ lp-offset, POSTPONE d! ENDOF
      [ ' flocal >definer ] literal       [ ' flocal >definer ] literal
      OF POSTPONE laddr# >body @ lp-offset, POSTPONE f! ENDOF       OF POSTPONE laddr# >body @ lp-offset, POSTPONE f! ENDOF
      abort" can only store TO value or local value"       -&32 throw
    endcase     endcase
  else   else
    [ ' locals-wordlist >definer ] literal =     [ ' locals-wordlist >definer ] literal =
    if     if
      >body !       >body !
    else     else
      abort" can only store TO value"       -&32 throw
    endif     endif
  endif ; immediate   endif ; immediate
   
 \ : locals|  : locals|
 \ !! should lie around somewhere      BEGIN
           name 2dup s" |" compare 0<>
       WHILE
           (local)
       REPEAT
       drop 0 (local) ;  immediate restrict

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


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