Diff for /gforth/engine/engine.c between versions 1.27 and 1.28

version 1.27, 2001/02/24 13:44:39 version 1.28, 2001/02/27 21:17:11
Line 285  static int ufileattr[6]= { Line 285  static int ufileattr[6]= {
 #define DOCFA   Xt cfa; GETCFA(cfa)  #define DOCFA   Xt cfa; GETCFA(cfa)
 #endif  #endif
   
   /* instructions containing these must be the last instruction of a
      super-instruction (e.g., branches, EXECUTE, and other instructions
      ending the basic block). Instructions containing SET_IP get this
      automatically, so you usually don't have to write it.  If you have
      to write it, write it after IP points to the next instruction.
      Used for profiling.  Don't write it in a word containing SET_IP, or
      the following block will be counted twice. */
   #ifdef VM_PROFILING
   #define SUPER_END  vm_count_block(IP)
   #else
   #define SUPER_END
   #endif
   
 #ifdef GFORTH_DEBUGGING  #ifdef GFORTH_DEBUGGING
 /* define some VM registers as global variables, so they survive exceptions;  /* define some VM registers as global variables, so they survive exceptions;
    global register variables are not up to the task (according to the      global register variables are not up to the task (according to the 
Line 371  Label *engine(Xt *ip0, Cell *sp0, Cell * Line 384  Label *engine(Xt *ip0, Cell *sp0, Cell *
   IF_fpTOS(fpTOS = fp[0]);    IF_fpTOS(fpTOS = fp[0]);
 /*  prep_terminal(); */  /*  prep_terminal(); */
   SET_IP(ip);    SET_IP(ip);
     SUPER_END; /* count the first block, too */
   NEXT;    NEXT;
   
   
Line 388  Label *engine(Xt *ip0, Cell *sp0, Cell * Line 402  Label *engine(Xt *ip0, Cell *sp0, Cell *
     /* this is the simple version */      /* this is the simple version */
     *--rp = (Cell)ip;      *--rp = (Cell)ip;
     SET_IP((Xt *)PFA1(cfa));      SET_IP((Xt *)PFA1(cfa));
       SUPER_END;
     NEXT;      NEXT;
 #else  #else
     /* this one is important, so we help the compiler optimizing */      /* this one is important, so we help the compiler optimizing */
Line 395  Label *engine(Xt *ip0, Cell *sp0, Cell * Line 410  Label *engine(Xt *ip0, Cell *sp0, Cell *
       DEF_CA        DEF_CA
       rp[-1] = (Cell)ip;        rp[-1] = (Cell)ip;
       SET_IP((Xt *)PFA1(cfa));        SET_IP((Xt *)PFA1(cfa));
         SUPER_END;
       NEXT_P1;        NEXT_P1;
       rp--;        rp--;
       NEXT_P2;        NEXT_P2;
Line 456  Label *engine(Xt *ip0, Cell *sp0, Cell * Line 472  Label *engine(Xt *ip0, Cell *sp0, Cell *
 #ifdef DEBUG  #ifdef DEBUG
     fprintf(stderr,"%08lx: defer: %08lx\n",(Cell)ip,*(Cell*)PFA1(cfa));      fprintf(stderr,"%08lx: defer: %08lx\n",(Cell)ip,*(Cell*)PFA1(cfa));
 #endif  #endif
       SUPER_END;
     EXEC(*(Xt *)PFA1(cfa));      EXEC(*(Xt *)PFA1(cfa));
   }    }
   
Line 505  Label *engine(Xt *ip0, Cell *sp0, Cell * Line 522  Label *engine(Xt *ip0, Cell *sp0, Cell *
     *--sp = (Cell)PFA(cfa);      *--sp = (Cell)PFA(cfa);
 #endif  #endif
     SET_IP(DOES_CODE1(cfa));      SET_IP(DOES_CODE1(cfa));
       SUPER_END;
     /*    fprintf(stderr,"TOS = %08lx, IP=%08lx\n", spTOS, IP);*/      /*    fprintf(stderr,"TOS = %08lx, IP=%08lx\n", spTOS, IP);*/
   }    }
   NEXT;    NEXT;

Removed from v.1.27  
changed lines
  Added in v.1.28


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