version 1.15, 2002/01/20 19:04:11
|
version 1.16, 2002/11/24 13:54:02
|
Line 91
|
Line 91
|
|
|
*/ |
*/ |
|
|
|
|
|
|
#ifdef DOUBLY_INDIRECT |
#ifdef DOUBLY_INDIRECT |
# define NEXT_P0 ({cfa=*ip;}) |
# define NEXT_P0 ({cfa=*ip;}) |
# define IP (ip) |
# define IP (ip) |
Line 108
|
Line 110
|
fprintf(stderr,"EXEC encountered xt %p at ip=%p, vm_prims=%p, xts=%p\n", cfa, ip, vm_prims, xts); \ |
fprintf(stderr,"EXEC encountered xt %p at ip=%p, vm_prims=%p, xts=%p\n", cfa, ip, vm_prims, xts); \ |
ca=**cfa; goto *ca;}) |
ca=**cfa; goto *ca;}) |
|
|
#else /* !defined(DOUBLY_INDIRECT) */ |
#elif defined(NO_IP) |
|
|
|
#define NEXT_P0 |
|
#define SET_IP(target) assert(0) |
|
#define INC_IP(n) ((void)0) |
|
#define DEF_CA |
|
#define NEXT_P1 |
|
#define NEXT_P2 ({goto *next_code;}) |
|
/* set next_code to the return address before performing EXEC */ |
|
#define EXEC(XT) ({cfa=(XT); goto **cfa;}) |
|
|
|
#else /* !defined(DOUBLY_INDIRECT) && !defined(NO_IP) */ |
|
|
#if defined(DIRECT_THREADED) |
#if defined(DIRECT_THREADED) |
|
|
Line 361
|
Line 374
|
/* indirect threaded */ |
/* indirect threaded */ |
#endif |
#endif |
|
|
#endif /* !defined(DOUBLY_INDIRECT) */ |
#endif /* !defined(DOUBLY_INDIRECT) && !defined(NO_IP) */ |
|
|
#define NEXT ({DEF_CA NEXT_P1; NEXT_P2;}) |
#define NEXT ({DEF_CA NEXT_P1; NEXT_P2;}) |
#define IPTOS NEXT_INST |
#define IPTOS NEXT_INST |