--- gforth/engine/main.c 2002/01/16 10:40:26 1.55 +++ gforth/engine/main.c 2002/01/20 19:04:11 1.56 @@ -57,13 +57,10 @@ jmp_buf throw_jmp_buf; #endif -#if defined(DIRECT_THREADED) -/*# define CA(n) (symbols[(n)])*/ -# define CA(n) (symbols[(n)&~0x4000UL]) -#elif defined(DOUBLY_INDIRECT) -# define CA(n) ({Cell _n = (n); ((Cell)(((_n & 0x4000) ? symbols : xts)+(_n&~0x4000UL)));}) +#if defined(DOUBLY_INDIRECT) +# define CFA(n) ({Cell _n = (n); ((Cell)(((_n & 0x4000) ? symbols : xts)+(_n&~0x4000UL)));}) #else -# define CA(n) ((Cell)(symbols+((n)&~0x4000UL))) +# define CFA(n) ((Cell)(symbols+((n)&~0x4000UL))) #endif #define maxaligned(n) (typeof(n))((((Cell)n)+sizeof(Float)-1)&-sizeof(Float)) @@ -181,10 +178,14 @@ void relocate(Cell *image, const char *b MAKE_DOES_CF(image+i,(Xt *)(image[i+1]+((Cell)start))); break; default : -/* printf("Code field generation image[%x]:=CA(%x)\n", +/* printf("Code field generation image[%x]:=CFA(%x)\n", i, CF(image[i])); */ if (CF((token | 0x4000))=npriminfos) { /* not a relocatable prim */ if (last_jump) { /* make sure the last sequence is complete */ @@ -535,6 +528,7 @@ Label compile_prim(Label prim) last_jump = (priminfos[i].super_end) ? 0 : (prim+priminfos[i].length); return (Label)old_code_here; #else + prim = *(Xt)prim; return prim; #endif #endif /* !defined(DOUBLY_INDIRECT) */ @@ -652,7 +646,8 @@ Address loader(FILE *imagefile, char* fi alloc_stacks((ImageHeader *)imp); - CACHE_FLUSH(imp, header.image_size); + /* unnecessary, except maybe for CODE words */ + /* FLUSH_ICACHE(imp, header.image_size);*/ return imp; } @@ -856,7 +851,7 @@ int main(int argc, char **argv, char **e #endif int retvalue; -#if defined(i386) && defined(ALIGNMENT_CHECK) && !defined(DIRECT_THREADED) +#if defined(i386) && defined(ALIGNMENT_CHECK) /* turn on alignment checks on the 486. * on the 386 this should have no effect. */ __asm__("pushfl; popl %eax; orl $0x40000, %eax; pushl %eax; popfl;");