Diff for /gforth/engine/engine.c between versions 1.105 and 1.109

version 1.105, 2007/12/31 18:40:25 version 1.109, 2008/07/15 16:11:49
Line 1 Line 1
 /* Gforth virtual machine (aka inner interpreter)  /* Gforth virtual machine (aka inner interpreter)
   
   Copyright (C) 1995,1996,1997,1998,2000,2003,2004,2005,2006,2007 Free Software Foundation, Inc.    Copyright (C) 1995,1996,1997,1998,2000,2003,2004,2005,2006,2007,2008 Free Software Foundation, Inc.
   
   This file is part of Gforth.    This file is part of Gforth.
   
Line 70 Line 70
 #include <callback.h>  #include <callback.h>
 #endif  #endif
   
 #ifdef HAS_LIBFFI  
 #include <ffi.h>  
 #endif  
   
 #ifndef SEEK_SET  #ifndef SEEK_SET
 /* should be defined in stdio.h, but some systems don't have it */  /* should be defined in stdio.h, but some systems don't have it */
 #define SEEK_SET 0  #define SEEK_SET 0
Line 312  void throw(int code) Line 308  void throw(int code)
 /* the asm(""); is there to get a stop compiled on Itanium */  /* the asm(""); is there to get a stop compiled on Itanium */
 #define LABEL2(name) K_##name: asm("");  #define LABEL2(name) K_##name: asm("");
   
 Label *gforth_engine(Xt *ip0, Cell *sp0, Cell *rp0, Float *fp0, Address lp0)  Label *gforth_engine(Xt *ip0, Cell *sp0, Cell *rp0, Float *fp0, Address lp0 sr_proto)
 /* 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
 */  */
 {  {
 #ifndef GFORTH_DEBUGGING  #if defined(GFORTH_DEBUGGING)
   #if defined(GLOBALS_NONRELOC)
     register saved_regs *saved_regs_p TOSREG = saved_regs_p0;
   #endif /* defined(GLOBALS_NONRELOC) */
   #else /* !defined(GFORTH_DEBUGGING) */
   register Cell *rp RPREG;    register Cell *rp RPREG;
 #endif  #endif /* !defined(GFORTH_DEBUGGING) */
 #ifndef NO_IP  #ifndef NO_IP
   register Xt *ip IPREG = ip0;    register Xt *ip IPREG = ip0;
 #endif  #endif
Line 340  Label *gforth_engine(Xt *ip0, Cell *sp0, Line 340  Label *gforth_engine(Xt *ip0, Cell *sp0,
   long long llrv;    long long llrv;
   void * prv;    void * prv;
 #endif  #endif
 #ifdef HAS_LIBFFI  
   extern void * gforth_ritem;  
   extern void ** gforth_clist;  
   extern void ffi_callback(ffi_cif * cif, void * resp, void ** args, Xt * ip);  
 #endif  
   register Address up UPREG = gforth_UP;    register Address up UPREG = gforth_UP;
   #if !defined(GFORTH_DEBUGGING)
   register Cell MAYBE_UNUSED spTOS TOSREG;    register Cell MAYBE_UNUSED spTOS TOSREG;
   register Cell MAYBE_UNUSED spb spbREG;    register Cell MAYBE_UNUSED spb spbREG;
   register Cell MAYBE_UNUSED spc spcREG;    register Cell MAYBE_UNUSED spc spcREG;
Line 355  Label *gforth_engine(Xt *ip0, Cell *sp0, Line 351  Label *gforth_engine(Xt *ip0, Cell *sp0,
   register Cell MAYBE_UNUSED spg speREG;    register Cell MAYBE_UNUSED spg speREG;
   register Cell MAYBE_UNUSED sph speREG;    register Cell MAYBE_UNUSED sph speREG;
   IF_fpTOS(register Float fpTOS FTOSREG;)    IF_fpTOS(register Float fpTOS FTOSREG;)
   #endif /* !defined(GFORTH_DEBUGGING) */
 #if defined(DOUBLY_INDIRECT)  #if defined(DOUBLY_INDIRECT)
   static Label *symbols;    static Label *symbols;
   static void *routines[]= {    static void *routines[]= {

Removed from v.1.105  
changed lines
  Added in v.1.109


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