| #endif |
#endif |
| #define SUPER_CONTINUE |
#define SUPER_CONTINUE |
| |
|
| |
#ifdef GFORTH_DEBUGGING |
| |
#define NAME(string) { saved_ip=ip; asm(""); } |
| |
/* the asm here is to avoid reordering of following stuff above the |
| |
assignment; this is an old-style asm (no operands), and therefore |
| |
is treated like "asm volatile ..."; i.e., it prevents most |
| |
reorderings across itself. We want the assignment above first, |
| |
because the stack loads may already cause a stack underflow. */ |
| |
#elif DEBUG |
| |
# define NAME(string) fprintf(stderr,"%08lx depth=%3ld: "string"\n",(Cell)ip,sp0+3-sp); |
| |
#else |
| |
# define NAME(string) |
| |
#endif |
| |
|
| #ifdef DEBUG |
#ifdef DEBUG |
| #define CFA_TO_NAME(__cfa) \ |
#define CFA_TO_NAME(__cfa) \ |
| Cell len, i; \ |
Cell len, i; \ |
| #error illegal ENGINE value |
#error illegal ENGINE value |
| #endif /* ENGINE */ |
#endif /* ENGINE */ |
| |
|
| #define LABEL2(name) K_##name: |
/* the asm(""); is there to get a stop compiled on Itanium */ |
| |
#define LABEL2(name) K_##name: asm(""); |
| |
|
| Label *engine(Xt *ip0, Cell *sp0, Cell *rp0, Float *fp0, Address lp0) |
Label *engine(Xt *ip0, Cell *sp0, Cell *rp0, Float *fp0, Address lp0) |
| /* executes code at ip, if ip!=NULL |
/* executes code at ip, if ip!=NULL |