Diff for /gforth/engine/forth.h between versions 1.29 and 1.30

version 1.29, 2002/08/28 17:50:29 version 1.30, 2002/09/14 08:34:03
Line 166  typedef Label *Xt; Line 166  typedef Label *Xt;
 #endif /* !defined(DOUBLY_INDIRECT) */  #endif /* !defined(DOUBLY_INDIRECT) */
   
 #ifdef GFORTH_DEBUGGING  #ifdef GFORTH_DEBUGGING
 /* #define NAME(string) saved_ip=ip;*/  #define NAME(string) { saved_ip=ip; asm(""); }
 #define NAME(string) *(Cell *)&saved_ip=(Cell)ip;  /* the asm here is to avoid reordering of following stuff above the
 /* the casting is there to get aliasing with loads at the start of the     assignment; this is an old-style asm (no operands), and therefore
    primitives, so the store is not moved down across them; does not     is treated like "asm volatile ..."; i.e., it prevents most
    work for FP-stack loads; ideally the -fno-strict-aliasing flag     reorderings across itself.  We want the assignment above first,
    should do this for us, but at least in gcc-2.95 it does not */     because the stack loads may already cause a stack underflow. */
 #elif DEBUG  #elif DEBUG
 #       define  NAME(string)    fprintf(stderr,"%08lx: "string"\n",(Cell)ip);  #       define  NAME(string)    fprintf(stderr,"%08lx: "string"\n",(Cell)ip);
 #else  #else

Removed from v.1.29  
changed lines
  Added in v.1.30


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