Diff for /gforth/prim between versions 1.74 and 1.81

version 1.74, 2001/02/24 13:44:39 version 1.81, 2001/04/08 13:48:12
Line 74 Line 74
 \ xt.*          XT  \ xt.*          XT
 \ f83name.*     F83Name *  \ f83name.*     F83Name *
   
   \E stack data-stack   sp Cell
   \E stack fp-stack     fp Float
   \E stack return-stack rp Cell
   \E
 \E get-current prefixes set-current  \E get-current prefixes set-current
 \E   \E 
 \E s" Bool"             single data-stack type-prefix f  \E s" Bool"             single data-stack type-prefix f
Line 126 Line 130
 \ these m4 macros would collide with identifiers  \ these m4 macros would collide with identifiers
 undefine(`index')  undefine(`index')
 undefine(`shift')  undefine(`shift')
   undefine(`symbols')
   
 noop    ( -- )          gforth  noop    ( -- )          gforth
 :  :
Line 139  execute ( xt -- )  core Line 144  execute ( xt -- )  core
 ""Perform the semantics represented by the execution token, @i{xt}.""  ""Perform the semantics represented by the execution token, @i{xt}.""
 ip=IP;  ip=IP;
 IF_spTOS(spTOS = sp[0]);  IF_spTOS(spTOS = sp[0]);
   SUPER_END;
 EXEC(xt);  EXEC(xt);
   
 perform ( a_addr -- )   gforth  perform ( a_addr -- )   gforth
Line 146  perform ( a_addr -- ) gforth Line 152  perform ( a_addr -- ) gforth
 /* and pfe */  /* and pfe */
 ip=IP;  ip=IP;
 IF_spTOS(spTOS = sp[0]);  IF_spTOS(spTOS = sp[0]);
   SUPER_END;
 EXEC(*(Xt *)a_addr);  EXEC(*(Xt *)a_addr);
 :  :
  @ execute ;   @ execute ;
Line 1422  cache."" Line 1429  cache.""
 FLUSH_ICACHE(c_addr,u);  FLUSH_ICACHE(c_addr,u);
   
 (bye)   ( n -- )        gforth  paren_bye  (bye)   ( n -- )        gforth  paren_bye
   SUPER_END;
 return (Label *)n;  return (Label *)n;
   
 (system)        ( c_addr u -- wretval wior )    gforth  peren_system  (system)        ( c_addr u -- wretval wior )    gforth  peren_system
Line 2135  Variable UP Line 2143  Variable UP
 wcall   ( u -- )        gforth  wcall   ( u -- )        gforth
 IF_fpTOS(fp[0]=fpTOS);  IF_fpTOS(fp[0]=fpTOS);
 FP=fp;  FP=fp;
 sp=(SYSCALL(Cell(*)(Cell *, void *))u)(sp, &FP);  sp=(Cell*)(SYSCALL(Cell(*)(Cell *, void *))u)(sp, &FP);
 fp=FP;  fp=FP;
 IF_spTOS(spTOS=sp[0];)  IF_spTOS(spTOS=sp[0];)
 IF_fpTOS(fpTOS=fp[0]);  IF_fpTOS(fpTOS=fp[0]);
Line 2343  while(a_addr != NULL) Line 2351  while(a_addr != NULL)
   
 \+  \+
   
   \+peephole
   
 primtable       ( -- wprimtable )       new  primtable       ( -- wprimtable )       new
 ""wprimtable is a table containing the xts of the primitives indexed  ""wprimtable is a table containing the xts of the primitives indexed
 by sequence-number in prim (for use in prepare-peephole-table).""  by sequence-number in prim (for use in prepare-peephole-table).""
 wprimtable = (Cell)primtable(symbols+DOESJUMP+1,MAX_SYMBOLS);  wprimtable = (Cell)primtable(symbols+DOESJUMP+1,MAX_SYMBOLS-DOESJUMP-1);
   
 prepare-peephole-table  ( wprimtable -- wpeeptable ) new prepare_peephole_opt  prepare-peephole-table  ( wprimtable -- wpeeptable ) new prepare_peephole_opt
 ""wpeeptable is a data structure used by @code{peephole-opt}; it is  ""wpeeptable is a data structure used by @code{peephole-opt}; it is
Line 2360  they cannot be combined, xt is 0."" Line 2370  they cannot be combined, xt is 0.""
 xt = peephole_opt(xt1, xt2, wpeeptable);  xt = peephole_opt(xt1, xt2, wpeeptable);
   
 lit_plus = lit +  lit_plus = lit +
   
   call    ( #a_callee -- R:a_retaddr )
   ""Call callee (a variant of docol with inline argument).""
   a_retaddr = (Cell *)IP;
   SET_IP((Xt *)a_callee);
   
   useraddr        ( #u -- a_addr )
   a_addr = (Cell *)(up+u);
   
   \+

Removed from v.1.74  
changed lines
  Added in v.1.81


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