[gforth] / gforth / engine / main.c  

gforth: gforth/engine/main.c

Diff for /gforth/engine/main.c between version 1.17 and 1.18

version 1.17, Fri Jan 1 15:20:37 1999 UTC version 1.18, Fri Jan 8 16:58:31 1999 UTC
Line 297 
Line 297 
   
 int go_forth(Address image, int stack, Cell *entries)  int go_forth(Address image, int stack, Cell *entries)
 {  {
   Cell *sp=(Cell*)(((ImageHeader *)image)->data_stack_base + dsize);    ImageHeader *image_header = (ImageHeader *)image;
   Float *fp=(Float *)(((ImageHeader *)image)->fp_stack_base + fsize);    Cell *sp0=(Cell*)(image_header->data_stack_base + dsize);
   Cell *rp=(Cell *)(((ImageHeader *)image)->return_stack_base + rsize);    Float *fp0=(Float *)(image_header->fp_stack_base + fsize);
   Address lp=((ImageHeader *)image)->locals_stack_base + lsize;    Cell *rp0=(Cell *)(image_header->return_stack_base + rsize);
   Xt *ip=(Xt *)(((ImageHeader *)image)->boot_entry);    Address lp0=image_header->locals_stack_base + lsize;
     Xt *ip0=(Xt *)(image_header->boot_entry);
 #ifdef SYSSIGNALS  #ifdef SYSSIGNALS
   int throw_code;    int throw_code;
 #endif  #endif
   
   /* ensure that the cached elements (if any) are accessible */    /* ensure that the cached elements (if any) are accessible */
   IF_TOS(sp--);    IF_TOS(sp0--);
   IF_FTOS(fp--);    IF_FTOS(fp0--);
   
   for(;stack>0;stack--)    for(;stack>0;stack--)
     *--sp=entries[stack-1];      *--sp0=entries[stack-1];
   
 #if !defined(MSDOS) && !defined(SHARC) && !defined(_WIN32) && !defined(__EMX__)  #if !defined(MSDOS) && !defined(SHARC) && !defined(_WIN32) && !defined(__EMX__)
   get_winsize();    get_winsize();
Line 327 
Line 328 
   
     signal_data_stack[7]=throw_code;      signal_data_stack[7]=throw_code;
   
     return((int)engine(((ImageHeader *)image)->throw_entry,signal_data_stack+7,  #ifdef GFORTH_DEBUGGING
                        signal_return_stack+8,signal_fp_stack,0));      if (rp <= rp0 && rp > (Cell *)(image_header->return_stack_base+5)) {
         /* no rstack overflow or underflow */
         rp0 = rp;
         *--rp0 = ip;
   }    }
       else /* I love non-syntactic ifdefs :-) */
 #endif  #endif
       rp0 = signal_return_stack+8;
   
   return((int)engine(ip,sp,rp,fp,lp));      return((int)engine(image_header->throw_entry, signal_data_stack+7,
                          rp0, signal_fp_stack, 0));
     }
   #endif
   
     return((int)engine(ip0,sp0,rp0,fp0,lp0));
 }  }
   
 #ifndef INCLUDE_IMAGE  #ifndef INCLUDE_IMAGE


Generate output suitable for use with a patch program
Legend:
Removed from v.1.17  
changed lines
  Added in v.1.18

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help