Diff for /gforth/Attic/engine.c between versions 1.13 and 1.14

version 1.13, 1994/08/31 19:42:44 version 1.14, 1994/09/08 17:20:05
Line 41  typedef struct F83Name { Line 41  typedef struct F83Name {
 #define F83NAME_SMUDGE(np)      (((np)->countetc & 0x40) != 0)  #define F83NAME_SMUDGE(np)      (((np)->countetc & 0x40) != 0)
 #define F83NAME_IMMEDIATE(np)   (((np)->countetc & 0x20) != 0)  #define F83NAME_IMMEDIATE(np)   (((np)->countetc & 0x20) != 0)
   
 /* NEXT and NEXT1 are split into several parts to help scheduling */  /* NEXT and NEXT1 are split into several parts to help scheduling,
      unless CISC_NEXT is defined */
   #ifdef CISC_NEXT
   #define NEXT1_P1
   #define NEXT_P1
   #define DEF_CA
 #ifdef DIRECT_THREADED  #ifdef DIRECT_THREADED
 #       define NEXT1_P1  #define NEXT1_P2 ({goto *cfa;})
 #       ifdef i386  
 #               define NEXT1_P2 ({cfa=*ip++; goto *cfa;})  
 #       else  
 #               define NEXT1_P2 ({goto *cfa;})  
 #       endif  
 #       define DEF_CA  
 #else  #else
 #       define NEXT1_P1 ({ca = *cfa;})  #define NEXT1_P2 ({goto **cfa;})
 #       define NEXT1_P2 ({goto *ca;})  #endif /* DIRECT_THREADED */
 #       define DEF_CA   Label ca;  #define NEXT_P2 ({cfa = *ip++; NEXT1_P2;})
 #endif  #else /* CISC_NEXT */
 #if defined(i386) && defined(DIRECT_THREADED)  #ifdef DIRECT_THREADED
 #       define NEXT_P1  #define NEXT1_P1
 #       define NEXT1 ({goto *cfa;})  #define NEXT1_P2 ({goto *cfa;})
 #else  #define DEF_CA
 #       define NEXT_P1 ({cfa = *ip++; NEXT1_P1;})  #else /* DIRECT_THREADED */
 #       define NEXT1 ({DEF_CA NEXT1_P1; NEXT1_P2;})  #define NEXT1_P1 ({ca = *cfa;})
 #endif  #define NEXT1_P2 ({goto *ca;})
   #define DEF_CA  Label ca;
   #endif /* DIRECT_THREADED */
   #define NEXT_P1 ({cfa=*ip++; NEXT1_P1;})
   #define NEXT_P2 NEXT1_P2
   #endif /* CISC_NEXT */
   
 #define NEXT ({DEF_CA NEXT_P1; NEXT1_P2;})  #define NEXT1 ({DEF_CA NEXT1_P1; NEXT1_P2;})
   #define NEXT ({DEF_CA NEXT_P1; NEXT_P2;})
   
 #ifdef USE_TOS  #ifdef USE_TOS
 #define IF_TOS(x) x  #define IF_TOS(x) x
Line 82  typedef struct F83Name { Line 87  typedef struct F83Name {
 int emitcounter;  int emitcounter;
 #define NULLC '\0'  #define NULLC '\0'
   
 #ifdef copycstr  char *cstr(Char *from, UCell size, int clear)
 #   define cstr(to,from,size)\  /* if clear is true, scratch can be reused, otherwise we want more of
         {       memcpy(to,from,size);\     the same */
                 to[size]=NULLC;}  {
 #else    static char *scratch=NULL;
 char scratch[1024];    static unsigned scratchsize=0;
 int soffset;    static char *nextscratch;
 #   define cstr(from,size) \    char *oldnextscratch;
            ({ char * to = scratch; \  
               memcpy(to,from,size); \    if (clear)
               to[size] = NULLC; \      nextscratch=scratch;
               soffset = size+1; \    if (scratch==NULL) {
               to; \      scratch=malloc(size+1);
            })      nextscratch=scratch;
 #   define cstr1(from,size) \      scratchsize=size;
            ({ char * to = scratch+soffset; \    }
               memcpy(to,from,size); \    else if (nextscratch+size>scratch+scratchsize) {
               to[size] = NULLC; \      char *oldscratch=scratch;
               soffset += size+1; \      scratch = realloc(scratch, (nextscratch-scratch)+size+1);
               to; \      nextscratch=scratch+(nextscratch-oldscratch);
            })      scratchsize=size;
 #endif    }
     memcpy(nextscratch,from,size);
     nextscratch[size]='\0';
     oldnextscratch = nextscratch;
     nextscratch += size+1;
     return oldnextscratch;
   }
   
 #define NEWLINE '\n'  #define NEWLINE '\n'
   

Removed from v.1.13  
changed lines
  Added in v.1.14


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