--- gforth/engine/engine.c 2007/12/31 18:40:25 1.105 +++ gforth/engine/engine.c 2008/07/15 16:11:49 1.109 @@ -1,6 +1,6 @@ /* 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. @@ -70,10 +70,6 @@ #include #endif -#ifdef HAS_LIBFFI -#include -#endif - #ifndef SEEK_SET /* should be defined in stdio.h, but some systems don't have it */ #define SEEK_SET 0 @@ -312,14 +308,18 @@ void throw(int code) /* the asm(""); is there to get a stop compiled on Itanium */ #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 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; -#endif +#endif /* !defined(GFORTH_DEBUGGING) */ #ifndef NO_IP register Xt *ip IPREG = ip0; #endif @@ -340,12 +340,8 @@ Label *gforth_engine(Xt *ip0, Cell *sp0, long long llrv; void * prv; #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; +#if !defined(GFORTH_DEBUGGING) register Cell MAYBE_UNUSED spTOS TOSREG; register Cell MAYBE_UNUSED spb spbREG; register Cell MAYBE_UNUSED spc spcREG; @@ -355,6 +351,7 @@ Label *gforth_engine(Xt *ip0, Cell *sp0, register Cell MAYBE_UNUSED spg speREG; register Cell MAYBE_UNUSED sph speREG; IF_fpTOS(register Float fpTOS FTOSREG;) +#endif /* !defined(GFORTH_DEBUGGING) */ #if defined(DOUBLY_INDIRECT) static Label *symbols; static void *routines[]= {