--- gforth/engine/engine.c 2004/12/31 13:24:03 1.75 +++ gforth/engine/engine.c 2005/01/22 21:06:03 1.76 @@ -268,6 +268,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; #ifdef MORE_VARS MORE_VARS #endif @@ -303,7 +304,9 @@ Label *engine(Xt *ip0, Cell *sp0, Cell * #define INST_ADDR(name) ((Label)&&J_##name) #include PRIM_LAB_I #undef INST_ADDR - (Label)&&after_last + (Label)&&after_last, + (Label)&&before_goto, + (Label)&&after_goto }; #ifdef CPU_DEP2 CPU_DEP2 @@ -354,6 +357,10 @@ Label *engine(Xt *ip0, Cell *sp0, Cell * CPU_DEP3 #endif + before_goto: + goto *real_ca; + after_goto: + #include PRIM_I after_last: return (Label *)0; /*needed only to get the length of the last primitive */