Diff for /gforth/prim between versions 1.95 and 1.98

version 1.95, 2002/06/17 12:34:41 version 1.98, 2002/09/24 16:16:43
Line 104 Line 104
 \E inst-stream  stack-prefix #  \E inst-stream  stack-prefix #
 \E   \E 
 \E set-current  \E set-current
   \E store-optimization on
   
 \   \ 
 \   \ 
Line 182  SET_IP((Xt *)(((Cell)(IP-1))+ndisp)); Line 183  SET_IP((Xt *)(((Cell)(IP-1))+ndisp));
 define(condbranch,  define(condbranch,
 $1 ( `#'ndisp $2 ) $3  $1 ( `#'ndisp $2 ) $3
 $4      SET_IP((Xt *)(((Cell)(IP-1))+ndisp));  $4      SET_IP((Xt *)(((Cell)(IP-1))+ndisp));
 TAIL;  INST_TAIL;
 }  }
 SUPER_CONTINUE;  SUPER_CONTINUE;
 $5  $5
Line 192  $5 Line 193  $5
 $1-lp+!`#' ( `#'ndisp `#'nlocals $2 ) $3_lp_plus_store_number  $1-lp+!`#' ( `#'ndisp `#'nlocals $2 ) $3_lp_plus_store_number
 $4    lp += nlocals;  $4    lp += nlocals;
 SET_IP((Xt *)(((Cell)(IP-2))+ndisp));  SET_IP((Xt *)(((Cell)(IP-2))+ndisp));
 TAIL;  INST_TAIL;
 }  }
 SUPER_CONTINUE;  SUPER_CONTINUE;
   
Line 219  if (f==0) { Line 220  if (f==0) {
   sp++;    sp++;
   IF_spTOS(spTOS = sp[0]);    IF_spTOS(spTOS = sp[0]);
   SET_IP((Xt *)(((Cell)(IP-1))+ndisp));    SET_IP((Xt *)(((Cell)(IP-1))+ndisp));
   TAIL;    INST_TAIL;
 }  }
 SUPER_CONTINUE;  SUPER_CONTINUE;
   
Line 314  nlimit=0; Line 315  nlimit=0;
 (?do)   ( #ndisp nlimit nstart -- R:nlimit R:nstart )   gforth  paren_question_do  (?do)   ( #ndisp nlimit nstart -- R:nlimit R:nstart )   gforth  paren_question_do
 if (nstart == nlimit) {  if (nstart == nlimit) {
     SET_IP((Xt *)(((Cell)(IP-1))+ndisp));      SET_IP((Xt *)(((Cell)(IP-1))+ndisp));
     TAIL;      INST_TAIL;
 }  }
 SUPER_CONTINUE;  SUPER_CONTINUE;
 :  :
Line 330  SUPER_CONTINUE; Line 331  SUPER_CONTINUE;
 (+do)   ( #ndisp nlimit nstart -- R:nlimit R:nstart )   gforth  paren_plus_do  (+do)   ( #ndisp nlimit nstart -- R:nlimit R:nstart )   gforth  paren_plus_do
 if (nstart >= nlimit) {  if (nstart >= nlimit) {
     SET_IP((Xt *)(((Cell)(IP-1))+ndisp));      SET_IP((Xt *)(((Cell)(IP-1))+ndisp));
     TAIL;      INST_TAIL;
 }  }
 SUPER_CONTINUE;  SUPER_CONTINUE;
 :  :
Line 346  SUPER_CONTINUE; Line 347  SUPER_CONTINUE;
 (u+do)  ( #ndisp ulimit ustart -- R:ulimit R:ustart )   gforth  paren_u_plus_do  (u+do)  ( #ndisp ulimit ustart -- R:ulimit R:ustart )   gforth  paren_u_plus_do
 if (ustart >= ulimit) {  if (ustart >= ulimit) {
     SET_IP((Xt *)(((Cell)(IP-1))+ndisp));      SET_IP((Xt *)(((Cell)(IP-1))+ndisp));
     TAIL;      INST_TAIL;
 }  }
 SUPER_CONTINUE;  SUPER_CONTINUE;
 :  :
Line 362  SUPER_CONTINUE; Line 363  SUPER_CONTINUE;
 (-do)   ( #ndisp nlimit nstart -- R:nlimit R:nstart )   gforth  paren_minus_do  (-do)   ( #ndisp nlimit nstart -- R:nlimit R:nstart )   gforth  paren_minus_do
 if (nstart <= nlimit) {  if (nstart <= nlimit) {
     SET_IP((Xt *)(((Cell)(IP-1))+ndisp));      SET_IP((Xt *)(((Cell)(IP-1))+ndisp));
     TAIL;      INST_TAIL;
 }  }
 SUPER_CONTINUE;  SUPER_CONTINUE;
 :  :
Line 378  SUPER_CONTINUE; Line 379  SUPER_CONTINUE;
 (u-do)  ( #ndisp ulimit ustart -- R:ulimit R:ustart )   gforth  paren_u_minus_do  (u-do)  ( #ndisp ulimit ustart -- R:ulimit R:ustart )   gforth  paren_u_minus_do
 if (ustart <= ulimit) {  if (ustart <= ulimit) {
     SET_IP((Xt *)(((Cell)(IP-1))+ndisp));      SET_IP((Xt *)(((Cell)(IP-1))+ndisp));
     TAIL;      INST_TAIL;
 }  }
 SUPER_CONTINUE;  SUPER_CONTINUE;
 :  :
Line 2426  a_addr = (Cell *)(up+u); Line 2427  a_addr = (Cell *)(up+u);
 compile-prim ( xt1 -- xt2 )     new     compile_prim  compile-prim ( xt1 -- xt2 )     new     compile_prim
 xt2 = (Xt)compile_prim((Label)xt1);  xt2 = (Xt)compile_prim((Label)xt1);
   
 lit@ / lit_fetch = lit @  \ lit@ / lit_fetch = lit @
   
   lit@            ( #a_addr -- w ) new    lit_fetch
   w = *a_addr;
   
 lit-perform     ( #a_addr -- )  new     lit_perform  lit-perform     ( #a_addr -- )  new     lit_perform
 ip=IP;  ip=IP;
 SUPER_END;  SUPER_END;
 EXEC(*(Xt *)a_addr);  EXEC(*(Xt *)a_addr);
   
 lit+ / lit_plus = lit +  \ lit+ / lit_plus = lit +
   
   lit+    ( n1 #n2 -- n )         new     lit_plus
   n=n1+n2;
   
 does-exec ( #a_cfa -- R:nest a_pfa )    new     does_exec  does-exec ( #a_cfa -- R:nest a_pfa )    new     does_exec
 a_pfa = PFA(a_cfa);  a_pfa = PFA(a_cfa);

Removed from v.1.95  
changed lines
  Added in v.1.98


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