Diff for /gforth/glocals.fs between versions 1.29 and 1.30

version 1.29, 1997/01/01 16:26:02 version 1.30, 1997/03/04 17:49:51
Line 497  forth definitions Line 497  forth definitions
 \ ELSE. However, if ELSE generates an appropriate "lp+!#" before the  \ ELSE. However, if ELSE generates an appropriate "lp+!#" before the
 \ branch, there will be none after the target <then>.  \ branch, there will be none after the target <then>.
   
 : (then-like) ( orig -- addr )  : (then-like) ( orig -- )
     swap -rot dead-orig =      dead-orig =
     if      if
         drop          >resolve drop
     else      else
         dead-code @          dead-code @
         if          if
             set-locals-size-list dead-code off              >resolve set-locals-size-list dead-code off
         else \ both live          else \ both live
             dup list-size adjust-locals-size              over list-size adjust-locals-size
               >resolve
             locals-list @ common-list dup list-size adjust-locals-size              locals-list @ common-list dup list-size adjust-locals-size
             locals-list !              locals-list !
         then          then
Line 616  forth definitions Line 617  forth definitions
     \ this gives a unique identifier for the way the xt was defined      \ this gives a unique identifier for the way the xt was defined
     \ words defined with different does>-codes have different definers      \ words defined with different does>-codes have different definers
     \ the definer can be used for comparison and in definer!      \ the definer can be used for comparison and in definer!
     dup >code-address [ ' spaces >code-address ] Literal =      dup >does-code
     \ !! this definition will not work on some implementations for `bits'      ?dup-if
     if  \ if >code-address delivers the same value for all does>-def'd words          nip 1 or
         >does-code 1 or \ bit 0 marks special treatment for does codes  
     else      else
         >code-address          >code-address
     then ;      then ;
Line 643  forth definitions Line 643  forth definitions
     0 0 0. 0.0e0 { c: clocal w: wlocal d: dlocal f: flocal }      0 0 0. 0.0e0 { c: clocal w: wlocal d: dlocal f: flocal }
     comp' drop dup >definer      comp' drop dup >definer
     case      case
         [ ' locals-wordlist >definer ] literal \ value          [ ' locals-wordlist ] literal >definer \ value
         OF >body POSTPONE Aliteral POSTPONE ! ENDOF          OF >body POSTPONE Aliteral POSTPONE ! ENDOF
         [ comp' clocal drop >definer ] literal          [ comp' clocal drop ] literal >definer
         OF POSTPONE laddr# >body @ lp-offset, POSTPONE c! ENDOF          OF POSTPONE laddr# >body @ lp-offset, POSTPONE c! ENDOF
         [ comp' wlocal drop >definer ] literal          [ comp' wlocal drop ] literal >definer
         OF POSTPONE laddr# >body @ lp-offset, POSTPONE ! ENDOF          OF POSTPONE laddr# >body @ lp-offset, POSTPONE ! ENDOF
         [ comp' dlocal drop >definer ] literal          [ comp' dlocal drop ] literal >definer
         OF POSTPONE laddr# >body @ lp-offset, POSTPONE 2! ENDOF          OF POSTPONE laddr# >body @ lp-offset, POSTPONE 2! ENDOF
         [ comp' flocal drop >definer ] literal          [ comp' flocal drop ] literal >definer
         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.29  
changed lines
  Added in v.1.30


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