--- gforth/engine/engine.c 2007/03/04 22:39:37 1.97 +++ gforth/engine/engine.c 2007/03/17 19:14:57 1.98 @@ -225,9 +225,18 @@ extern int gforth_memcmp(const char * s1 #endif #define SUPER_CONTINUE +#ifdef ASMCOMMENT +/* an individualized asm statement so that (hopefully) gcc's optimizer + does not do cross-jumping */ +#define asmcomment(string) asm(ASMCOMMENT string) +#else +/* we don't know how to do an asm comment, so we just do an empty asm */ +#define asmcomment(string) asm("") +#endif + #ifdef GFORTH_DEBUGGING #if DEBUG -#define NAME(string) { saved_ip=ip; asm("# "string); fprintf(stderr,"%08lx depth=%3ld: "string"\n",(Cell)ip,sp0+3-sp);} +#define NAME(string) { saved_ip=ip; asmcomment(string); fprintf(stderr,"%08lx depth=%3ld: "string"\n",(Cell)ip,sp0+3-sp);} #else /* !DEBUG */ #define NAME(string) { saved_ip=ip; asm(""); } /* the asm here is to avoid reordering of following stuff above the @@ -239,7 +248,7 @@ extern int gforth_memcmp(const char * s1 #elif DEBUG # define NAME(string) {Cell __depth=sp0+3-sp; int i; fprintf(stderr,"%08lx depth=%3ld: "string,(Cell)ip,sp0+3-sp); for (i=__depth-1; i>0; i--) fprintf(stderr, " $%lx",sp[i]); fprintf(stderr, " $%lx\n",spTOS); } #else -# define NAME(string) asm("# "string); +# define NAME(string) asmcomment(string); #endif #ifdef DEBUG