--- gforth/engine/engine.c 2005/01/23 09:55:12 1.78 +++ gforth/engine/engine.c 2005/01/23 13:56:13 1.79 @@ -151,6 +151,9 @@ extern int gforth_memcmp(const char * s1 #ifndef LPREG #define LPREG #endif +#ifndef CAREG +#define CAREG +#endif #ifndef CFAREG #define CFAREG #endif @@ -269,7 +272,7 @@ Label *engine(Xt *ip0, Cell *sp0, Cell * register Float *fp FPREG = fp0; register Address lp LPREG = lp0; register Xt cfa CFAREG; - register Label real_ca; + register Label real_ca CAREG; #ifdef MORE_VARS MORE_VARS #endif @@ -352,10 +355,13 @@ Label *engine(Xt *ip0, Cell *sp0, Cell * /* prep_terminal(); */ #ifdef NO_IP goto *(*(Label *)ip0); + before_goto: + goto *real_ca; + after_goto:; #else SET_IP(ip); SUPER_END; /* count the first block, too */ - NEXT; + FIRST_NEXT; #endif #ifdef CPU_DEP3 @@ -366,8 +372,5 @@ Label *engine(Xt *ip0, Cell *sp0, Cell * after_last: return (Label *)0; /*needed only to get the length of the last primitive */ - before_goto: - goto *real_ca; - after_goto: return (Label *)0; }