Diff for /gforth/kernel/cond.fs between versions 1.8 and 1.19

version 1.8, 2000/06/17 12:01:55 version 1.19, 2004/12/31 13:24:04
Line 1 Line 1
 \ Structural Conditionals                              12dec92py  \ Structural Conditionals                              12dec92py
   
 \ Copyright (C) 1995,1996,1997 Free Software Foundation, Inc.  \ Copyright (C) 1995,1996,1997,2000,2003,2004 Free Software Foundation, Inc.
   
 \ This file is part of Gforth.  \ This file is part of Gforth.
   
Line 16 Line 16
   
 \ You should have received a copy of the GNU General Public License  \ You should have received a copy of the GNU General Public License
 \ along with this program; if not, write to the Free Software  \ along with this program; if not, write to the Free Software
 \ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  \ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
   
 here 0 , \ just a dummy, the real value of locals-list is patched into it in glocals.fs  here 0 , \ just a dummy, the real value of locals-list is patched into it in glocals.fs
 AConstant locals-list \ acts like a variable that contains  AConstant locals-list \ acts like a variable that contains
Line 105  variable backedge-locals Line 105  variable backedge-locals
   
 \ Structural Conditionals                              12dec92py  \ Structural Conditionals                              12dec92py
   
   defer other-control-flow ( -- )
   \ hook for control-flow stuff that's not handled by begin-like etc.
   
 : ?struc      ( flag -- )       abort" unstructured " ;  : ?struc      ( flag -- )       abort" unstructured " ;
 : sys?        ( sys -- )        dup 0= ?struc ;  : sys?        ( sys -- )        dup 0= ?struc ;
 : >mark ( -- orig )  : >mark ( -- orig )
  cs-push-orig 0 , ;   cs-push-orig 0 , other-control-flow ;
 : >resolve    ( addr -- )        here over - swap ! ;  : >resolve    ( addr -- )
 : <resolve    ( addr -- )        here - , ;      here swap !
       basic-block-end ;
   : <resolve    ( addr -- )        , ;
   
 : BUT  : BUT
     1 cs-roll ;                      immediate restrict      1 cs-roll ;                      immediate restrict
Line 155  Defer begin-like ( -- ) Line 160  Defer begin-like ( -- )
 ' noop IS begin-like  ' noop IS begin-like
   
 : BEGIN ( compilation -- dest ; run-time -- ) \ core  : BEGIN ( compilation -- dest ; run-time -- ) \ core
     begin-like cs-push-part dest ; immediate restrict      begin-like cs-push-part dest
       basic-block-end ; immediate restrict
   
 Defer again-like ( dest -- addr )  Defer again-like ( dest -- addr )
 ' nip IS again-like  ' nip IS again-like
Line 299  Defer exit-like ( -- ) Line 305  Defer exit-like ( -- )
 ' noop IS exit-like  ' noop IS exit-like
   
 : EXIT ( compilation -- ; run-time nest-sys -- ) \ core  : EXIT ( compilation -- ; run-time nest-sys -- ) \ core
     \G Return to the calling definition; usually used as a way of  \G Return to the calling definition; usually used as a way of
     \G forcing an early return from a definition. Before  \G forcing an early return from a definition. Before
     \G @code{EXIT}ing you must clean up the return stack and  \G @code{EXIT}ing you must clean up the return stack and
     \G @code{UNLOOP} any outstanding @code{?DO}...@code{LOOP}s.  \G @code{UNLOOP} any outstanding @code{?DO}...@code{LOOP}s.
     exit-like      exit-like
     POSTPONE ;s      POSTPONE ;s
       basic-block-end
     POSTPONE unreachable ; immediate restrict      POSTPONE unreachable ; immediate restrict
   
 : ?EXIT ( -- ) ( compilation -- ; run-time nest-sys f -- | nest-sys ) \ gforth  : ?EXIT ( -- ) ( compilation -- ; run-time nest-sys f -- | nest-sys ) \ gforth

Removed from v.1.8  
changed lines
  Added in v.1.19


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