version 1.10, 2002/08/20 07:59:02
|
version 1.11, 2002/08/21 08:58:36
|
Line 40
|
Line 40
|
|
|
/* here you select the threading scheme; I have only set this up for |
/* here you select the threading scheme; I have only set this up for |
386 and generic, because I don't know what preprocessor macros to |
386 and generic, because I don't know what preprocessor macros to |
test for (Gforth uses config.guess instead). |
test for (Gforth uses config.guess instead). Anyway, it's probably |
Anyway, it's probably best to build them all and select the fastest |
best to build them all and select the fastest instead of hardwiring |
instead of hardwiring a specific scheme for an architecture. */ |
a specific scheme for an architecture. E.g., scheme 8 is fastest |
|
for Gforth "make bench" on a 486, whereas scheme 5 is fastest for |
|
"mini fib.mini" on an Athlon */ |
#ifndef THREADING_SCHEME |
#ifndef THREADING_SCHEME |
#ifdef i386 |
|
#define THREADING_SCHEME 8 |
|
#else |
|
#define THREADING_SCHEME 5 |
#define THREADING_SCHEME 5 |
#endif |
|
#endif /* defined(THREADING_SCHEME) */ |
#endif /* defined(THREADING_SCHEME) */ |
|
|
#ifdef __GNUC__ |
#ifdef __GNUC__ |
Line 80
|
Line 78
|
/* direct threading scheme 5: early fetching (Alpha, MIPS) */ |
/* direct threading scheme 5: early fetching (Alpha, MIPS) */ |
# define CFA_NEXT |
# define CFA_NEXT |
# define NEXT_P0 ({cfa=*ip;}) |
# define NEXT_P0 ({cfa=*ip;}) |
# define IP ((Cell *)ip) |
# define IP (ip) |
# define SET_IP(p) ({ip=(Inst *)(p); NEXT_P0;}) |
# define SET_IP(p) ({ip=(p); NEXT_P0;}) |
# define NEXT_INST ((Cell)cfa) |
# define NEXT_INST (cfa) |
# define INC_IP(const_inc) ({cfa=ip[const_inc]; ip+=(const_inc);}) |
# define INC_IP(const_inc) ({cfa=ip[const_inc]; ip+=(const_inc);}) |
# define DEF_CA |
# define DEF_CA |
# define NEXT_P1 (ip++) |
# define NEXT_P1 (ip++) |