Diff for /gforth/engine/engine.c between versions 1.88 and 1.94

version 1.88, 2006/01/05 01:37:32 version 1.94, 2006/10/27 21:47:02
Line 46 Line 46
 #include <unistd.h>  #include <unistd.h>
 #include <pwd.h>  #include <pwd.h>
 #include <dirent.h>  #include <dirent.h>
   #include <wchar.h>
 #include <sys/resource.h>  #include <sys/resource.h>
 #ifdef HAVE_FNMATCH_H  #ifdef HAVE_FNMATCH_H
 #include <fnmatch.h>  #include <fnmatch.h>
Line 97  extern int gforth_memcmp(const char * s1 Line 98  extern int gforth_memcmp(const char * s1
   
 #define NEWLINE '\n'  #define NEWLINE '\n'
   
   /* These two flags control whether divisions are checked by software.
      The CHECK_DIVISION_SW is for those cases where the event is a
      division by zero or overflow on the C level, and might be reported
      by hardware; we might check forr that in autoconf and set the
      switch appropriately, but currently don't.  The CHECK_DIVISION flag
      is for the other cases. */
   #ifdef GFORTH_DEBUGGING
   #define CHECK_DIVISION_SW 1
   #define CHECK_DIVISION 1
   #else
   #define CHECK_DIVISION_SW 0
   #define CHECK_DIVISION 0
   #endif
   
 /* conversion on fetch */  /* conversion on fetch */
   
 #define vm_Cell2f(_cell,_x)             ((_x)=(Bool)(_cell))  #define vm_Cell2f(_cell,_x)             ((_x)=(Bool)(_cell))
Line 255  extern int gforth_memcmp(const char * s1 Line 270  extern int gforth_memcmp(const char * s1
 #elif ENGINE==2  #elif ENGINE==2
 /* variant with padding between VM instructions for finding out  /* variant with padding between VM instructions for finding out
    cross-inst jumps (for dynamic code) */     cross-inst jumps (for dynamic code) */
 #define engine engine2  #define gforth_engine gforth_engine2
 #define VARIANT(v)      (v)  #define VARIANT(v)      (v)
 #define JUMP(target)    goto I_noop  #define JUMP(target)    goto I_noop
 #define LABEL(name) H_##name: SKIP16; I_##name:  #define LABEL(name) H_##name: SKIP16; I_##name:
Line 263  extern int gforth_memcmp(const char * s1 Line 278  extern int gforth_memcmp(const char * s1
 #elif ENGINE==3  #elif ENGINE==3
 /* variant with different immediate arguments for finding out  /* variant with different immediate arguments for finding out
    immediate arguments (for native code) */     immediate arguments (for native code) */
 #define engine engine3  #define gforth_engine gforth_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) H_##name: asm(""); I_##name:  #define LABEL(name) H_##name: asm(""); I_##name:
Line 275  extern int gforth_memcmp(const char * s1 Line 290  extern int gforth_memcmp(const char * s1
 #define LABEL2(name) K_##name: asm("");  #define LABEL2(name) K_##name: asm("");
 #define LABEL3(name) J_##name: asm("");  #define LABEL3(name) J_##name: asm("");
   
 Label *engine(Xt *ip0, Cell *sp0, Cell *rp0, Float *fp0, Address lp0)  Label *gforth_engine(Xt *ip0, Cell *sp0, Cell *rp0, Float *fp0, Address lp0)
 /* executes code at ip, if ip!=NULL  /* executes code at ip, if ip!=NULL
    returns array of machine code labels (for use in a loader), if ip==NULL     returns array of machine code labels (for use in a loader), if ip==NULL
 */  */
Line 296  Label *engine(Xt *ip0, Cell *sp0, Cell * Line 311  Label *engine(Xt *ip0, Cell *sp0, Cell *
 #endif  #endif
 #ifdef HAS_FFCALL  #ifdef HAS_FFCALL
   av_alist alist;    av_alist alist;
   extern va_alist clist;    extern va_alist gforth_clist;
   float frv;    float frv;
   int irv;    int irv;
   double drv;    double drv;
Line 304  Label *engine(Xt *ip0, Cell *sp0, Cell * Line 319  Label *engine(Xt *ip0, Cell *sp0, Cell *
   void * prv;    void * prv;
 #endif  #endif
 #ifdef HAS_LIBFFI  #ifdef HAS_LIBFFI
   extern void * ritem;    extern void * gforth_ritem;
   extern void ** clist;    extern void ** gforth_clist;
   extern void ffi_callback(ffi_cif * cif, void * resp, void ** args, Xt * ip);    extern void ffi_callback(ffi_cif * cif, void * resp, void ** args, Xt * ip);
 #endif  #endif
   register Address up UPREG = gforth_UP;    register Address up UPREG = gforth_UP;

Removed from v.1.88  
changed lines
  Added in v.1.94


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