Diff for /gforth/engine/forth.h between versions 1.92 and 1.93

version 1.92, 2008/01/13 22:13:08 version 1.93, 2008/01/16 14:13:58
Line 25 Line 25
 #include <unistd.h>  #include <unistd.h>
 #include <ltdl.h>  #include <ltdl.h>
   
   #if !defined(FORCE_LL) && !defined(BUGGY_LONG_LONG)
   #define BUGGY_LONG_LONG
   #endif
   
 #if defined(DOUBLY_INDIRECT)||defined(INDIRECT_THREADED)||defined(VM_PROFILING)  #if defined(DOUBLY_INDIRECT)||defined(INDIRECT_THREADED)||defined(VM_PROFILING)
 #define NO_DYNAMIC  #define NO_DYNAMIC
 #endif  #endif
Line 132  typedef unsigned TETRABYTE_TYPE UTetraby Line 136  typedef unsigned TETRABYTE_TYPE UTetraby
 #define FLOORED_DIV ((1%-3)>0)  #define FLOORED_DIV ((1%-3)>0)
 #endif  #endif
   
 #ifdef BUGGY_LONG_LONG  #if defined(BUGGY_LONG_LONG)
   
 #define BUGGY_LL_CMP    /* compares not possible */  #define BUGGY_LL_CMP    /* compares not possible */
 #define BUGGY_LL_MUL    /* multiplication not possible */  #define BUGGY_LL_MUL    /* multiplication not possible */
Line 175  typedef struct { Line 179  typedef struct {
 #endif /* !SMALL_OFF_T */  #endif /* !SMALL_OFF_T */
 #define DZERO           ((DCell){0,0})  #define DZERO           ((DCell){0,0})
   
 #else /* ! defined(BUGGY_LONG_LONG) */  #else /* !defined(BUGGY_LONG_LONG) */
   
 /* DCell and UDCell must be twice as large as Cell */  /* DCell and UDCell must be twice as large as Cell */
 typedef DOUBLE_CELL_TYPE DCell;  typedef DOUBLE_CELL_TYPE DCell;
 typedef DOUBLE_UCELL_TYPE UDCell;  typedef DOUBLE_UCELL_TYPE UDCell;
   
   #define DHI(x) ({ Double_Store _d; _d.d=(x); _d.cells.high; })
   #define DLO(x) ({ Double_Store _d; _d.d=(x); _d.cells.low;  })
   
   /* beware with the assignment: x is referenced twice! */
   #define DHI_IS(x,y) ({ Double_Store _d; _d.d=(x); _d.cells.high=(y); (x)=_d.d; })
   #define DLO_IS(x,y) ({ Double_Store _d; _d.d=(x); _d.cells.low =(y); (x)=_d.d; })
   
   #define UD2D(ud)        ((DCell)(ud))
   #define D2UD(d)         ((UDCell)(d))
 #define OFF2UD(o)       ((UDCell)(o))  #define OFF2UD(o)       ((UDCell)(o))
 #define UD2OFF(ud)      ((off_t)(ud))  #define UD2OFF(ud)      ((off_t)(ud))
 #define DZERO           ((DCell)0)  #define DZERO           ((DCell)0)
Line 188  typedef DOUBLE_UCELL_TYPE UDCell; Line 201  typedef DOUBLE_UCELL_TYPE UDCell;
 #define DLSHIFT(d,u)  ((d)<<(u))  #define DLSHIFT(d,u)  ((d)<<(u))
 #define UDLSHIFT(d,u)  ((d)<<(u))  #define UDLSHIFT(d,u)  ((d)<<(u))
   
 #endif /* ! defined(BUGGY_LONG_LONG) */  #endif /* !defined(BUGGY_LONG_LONG) */
   
 typedef union {  typedef union {
   struct {    struct {
Line 204  typedef union { Line 217  typedef union {
   UDCell ud;    UDCell ud;
 } Double_Store;  } Double_Store;
   
 #ifndef BUGGY_LONG_LONG  
 #define DHI(x) ({ Double_Store _d; _d.d=(x); _d.cells.high; })  
 #define DLO(x) ({ Double_Store _d; _d.d=(x); _d.cells.low;  })  
   
 /* beware with the assignment: x is referenced twice! */  
 #define DHI_IS(x,y) ({ Double_Store _d; _d.d=(x); _d.cells.high=(y); (x)=_d.d; })  
 #define DLO_IS(x,y) ({ Double_Store _d; _d.d=(x); _d.cells.low =(y); (x)=_d.d; })  
   
 #define UD2D(ud)        ((DCell)(ud))  
 #define D2UD(d)         ((UDCell)(d))  
 #endif  
   
 #define FETCH_DCELL_T(d_,lo,hi,t_)      ({ \  #define FETCH_DCELL_T(d_,lo,hi,t_)      ({ \
                                      Double_Store _d; \                                       Double_Store _d; \
                                      _d.cells.low = (lo); \                                       _d.cells.low = (lo); \

Removed from v.1.92  
changed lines
  Added in v.1.93


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