Diff for /gforth/engine/engine.c between versions 1.50 and 1.56

version 1.50, 2002/12/19 23:12:07 version 1.56, 2003/01/19 23:35:33
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-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
   
   #ifndef HAVE_FSEEKO
   #define fseeko fseek
   #endif
   
   #ifndef HAVE_FTELLO
   #define ftello ftell
   #endif
   
 #define IOR(flag)       ((flag)? -512-errno : 0)  #define IOR(flag)       ((flag)? -512-errno : 0)
   
 struct F83Name {  struct F83Name {
Line 198  extern int gforth_memcmp(const char * s1 Line 206  extern int gforth_memcmp(const char * s1
 /* normal engine */  /* normal engine */
 #define VARIANT(v)      (v)  #define VARIANT(v)      (v)
 #define JUMP(target)    goto I_noop  #define JUMP(target)    goto I_noop
 #define LABEL(name) I_##name:  #define LABEL(name) J_##name: asm(""); I_##name:
   
 #elif ENGINE==2  #elif ENGINE==2
 /* variant with padding between VM instructions for finding out  /* variant with padding between VM instructions for finding out
Line 206  extern int gforth_memcmp(const char * s1 Line 214  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 215  extern int gforth_memcmp(const char * s1 Line 223  extern int gforth_memcmp(const char * s1
 #define engine engine3  #define engine engine3
 #define VARIANT(v)      ((v)^0xffffffff)  #define VARIANT(v)      ((v)^0xffffffff)
 #define JUMP(target)    goto K_lit  #define JUMP(target)    goto K_lit
 #define LABEL(name) I_##name:  #define LABEL(name) J_##name: asm(""); I_##name:
 #else  #else
 #error illegal ENGINE value  #error illegal ENGINE value
 #endif /* ENGINE */  #endif /* ENGINE */
Line 262  Label *engine(Xt *ip0, Cell *sp0, Cell * Line 270  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
 #ifdef IN_ENGINE2  #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
 #endif  
   };    };
 #ifdef CPU_DEP2  #ifdef CPU_DEP2
   CPU_DEP2    CPU_DEP2

Removed from v.1.50  
changed lines
  Added in v.1.56


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