Diff for /gforth/engine/engine.c between versions 1.51 and 1.61

version 1.51, 2002/12/21 11:59:21 version 1.61, 2003/03/09 15:17:03
Line 1 Line 1
 /* Gforth virtual machine (aka inner interpreter)  /* Gforth virtual machine (aka inner interpreter)
   
   Copyright (C) 1995,1996,1997,1998,2000 Free Software Foundation, Inc.    Copyright (C) 1995,1996,1997,1998,2000,2003 Free Software Foundation, Inc.
   
   This file is part of Gforth.    This file is part of Gforth.
   
Line 64 Line 64
 #define SEEK_SET 0  #define SEEK_SET 0
 #endif  #endif
   
 #define IOR(flag)       ((flag)? -512-errno : 0)  #ifndef HAVE_FSEEKO
   #define fseeko fseek
 struct F83Name {  #endif
   struct F83Name *next;  /* the link field for old hands */  
   char          countetc;  
   char          name[0];  
 };  
   
 #define F83NAME_COUNT(np)       ((np)->countetc & 0x1f)  
   
 struct Longname {  
   struct Longname *next;  /* the link field for old hands */  
   Cell          countetc;  
   char          name[0];  
 };  
   
 #define LONGNAME_COUNT(np)      ((np)->countetc & (((~((UCell)0))<<3)>>3))  #ifndef HAVE_FTELLO
   #define ftello ftell
   #endif
   
 #define NULLC '\0'  #define NULLC '\0'
   
Line 206  extern int gforth_memcmp(const char * s1 Line 196  extern int gforth_memcmp(const char * s1
 #define engine engine2  #define engine engine2
 #define VARIANT(v)      (v)  #define VARIANT(v)      (v)
 #define JUMP(target)    goto I_noop  #define JUMP(target)    goto I_noop
 #define LABEL(name) J_##name: asm(".skip 16"); I_##name:  #define LABEL(name) J_##name: SKIP16; I_##name:
 #define IN_ENGINE2  #define IN_ENGINE2
   
 #elif ENGINE==3  #elif ENGINE==3
Line 262  Label *engine(Xt *ip0, Cell *sp0, Cell * Line 252  Label *engine(Xt *ip0, Cell *sp0, Cell *
     /* the following entry is normally unused;      /* the following entry is normally unused;
        it is there because its index indicates a does-handler */         it is there because its index indicates a does-handler */
     CPU_DEP1,      CPU_DEP1,
 #define INST_ADDR(name) (Label)&&I_##name  #define INST_ADDR(name) ((Label)&&I_##name)
 #include "prim_lab.i"  #include "prim_lab.i"
 #undef INST_ADDR  #undef INST_ADDR
     (Label)&&after_last,      (Label)&&after_last,
     (Label)0,      (Label)0,
 #define INST_ADDR(name) (Label)&&K_##name  #define INST_ADDR(name) ((Label)&&K_##name)
 #include "prim_lab.i"  #include "prim_lab.i"
 #undef INST_ADDR  #undef INST_ADDR
 #define INST_ADDR(name) (Label)&&J_##name  #define INST_ADDR(name) ((Label)&&J_##name)
 #include "prim_lab.i"  #include "prim_lab.i"
 #undef INST_ADDR  #undef INST_ADDR
   };    };
Line 299  Label *engine(Xt *ip0, Cell *sp0, Cell * Line 289  Label *engine(Xt *ip0, Cell *sp0, Cell *
       xts[i] = symbols[i] = (Label)routines[i];        xts[i] = symbols[i] = (Label)routines[i];
     for (; routines[i]!=0; i++) {      for (; routines[i]!=0; i++) {
       if (i>=MAX_SYMBOLS) {        if (i>=MAX_SYMBOLS) {
         fprintf(stderr,"gforth-ditc: more than %d primitives\n",MAX_SYMBOLS);          fprintf(stderr,"gforth-ditc: more than %ld primitives\n",(long)MAX_SYMBOLS);
         exit(1);          exit(1);
       }        }
       xts[i] = symbols[i] = &routines[i];        xts[i] = symbols[i] = &routines[i];

Removed from v.1.51  
changed lines
  Added in v.1.61


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