version 1.9, 2000/12/24 15:54:18
|
version 1.13, 2002/01/14 08:40:24
|
Line 103
|
Line 103
|
# define NEXT_INST (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 Label ca; |
# define DEF_CA Label ca; |
# define NEXT_P1 ({ip++; ca=**cfa;}) |
# define NEXT_P1 ({\ |
|
if (cfa<=vm_prims+DOESJUMP || cfa>=vm_prims+sizeof(routines)) \ |
|
fprintf(stderr,"NEXT encountered prim %p at ip=%p\n", cfa, ip); \ |
|
ip++; ca=**cfa;}) |
# define NEXT_P2 ({goto *ca;}) |
# define NEXT_P2 ({goto *ca;}) |
# define EXEC(XT) ({DEF_CA cfa=(XT); ca=**cfa; goto *ca;}) |
# define EXEC(XT) ({DEF_CA cfa=(XT);\ |
# define NEXT1_P1 ({ca = **cfa;}) |
if (cfa>vm_prims+DOESJUMP && cfa<vm_prims+sizeof(routines)) \ |
# define NEXT1_P2 ({goto *ca;}) |
fprintf(stderr,"EXEC encountered xt %p at ip=%p\n", cfa, ip); \ |
|
ca=**cfa; goto *ca;}) |
|
|
#else /* !defined(DOUBLY_INDIRECT) */ |
#else /* !defined(DOUBLY_INDIRECT) */ |
|
|
Line 393
|
Line 397
|
#endif /* !defined(DOUBLY_INDIRECT) */ |
#endif /* !defined(DOUBLY_INDIRECT) */ |
|
|
#define NEXT ({DEF_CA NEXT_P1; NEXT_P2;}) |
#define NEXT ({DEF_CA NEXT_P1; NEXT_P2;}) |
#define ipTOS NEXT_INST |
#define IPTOS NEXT_INST |