documentation.
This commit is contained in:
@@ -1,379 +1,364 @@
|
||||
#define EXECUTE_INSTINIT \
|
||||
print_instruction((*_PREG), ON_NATIVE); \
|
||||
BLOCKADDRESS = (CELL)(*_PREG); \
|
||||
register CELL d0; \
|
||||
PredEntry *pt0; \
|
||||
register CELL *ENV_YREG = (YREG); \
|
||||
pt0 = (*_PREG)->u.pp.p;
|
||||
|
||||
#define EXECUTE_INSTINIT \
|
||||
print_instruction((*_PREG), ON_NATIVE); \
|
||||
BLOCKADDRESS = (CELL)(*_PREG); \
|
||||
register CELL d0; \
|
||||
PredEntry *pt0; \
|
||||
register CELL *ENV_YREG = (YREG); \
|
||||
pt0 = (*_PREG)->u.Osbpp.p;
|
||||
|
||||
#ifdef LOW_LEVEL_TRACER
|
||||
#define EXECUTE_LOW_LEVEL_TRACER \
|
||||
low_level_trace(enter_pred,pt0,XREGS+1);
|
||||
#define EXECUTE_LOW_LEVEL_TRACER low_level_trace(enter_pred, pt0, XREGS + 1);
|
||||
#endif
|
||||
|
||||
#define EXECUTE_POST_LOW_LEVEL_TRACER \
|
||||
CACHE_A1(); \
|
||||
ALWAYS_LOOKAHEAD(pt0->OpcodeOfPred); \
|
||||
d0 = (CELL)B;
|
||||
|
||||
#define EXECUTE_POST_NOCHECKING \
|
||||
(*_PREG) = pt0->CodeOfPred; \
|
||||
save_pc(); \
|
||||
ENV_YREG[E_CB] = d0;
|
||||
|
||||
#define EXECUTE_POST_LOW_LEVEL_TRACER \
|
||||
CACHE_A1(); \
|
||||
ALWAYS_LOOKAHEAD(pt0->OpcodeOfPred); \
|
||||
d0 = (CELL)B;
|
||||
|
||||
#define EXECUTE_POST_NOCHECKING \
|
||||
(*_PREG) = pt0->CodeOfPred; \
|
||||
save_pc(); \
|
||||
ENV_YREG[E_CB] = d0;
|
||||
|
||||
#ifdef DEPTH_LIMIT
|
||||
#define EXECUTE_DEPTH_MINOR \
|
||||
FAILED = 0; \
|
||||
if (pt0->ModuleOfPred) { \
|
||||
if (DEPTH == MkIntTerm(0)) { \
|
||||
YAAM_FAIL; \
|
||||
} \
|
||||
else { \
|
||||
DEPTH = RESET_DEPTH(); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define EXECUTE_DEPTH_MOFPRED \
|
||||
FAILED = 0; \
|
||||
DEPTH -= MkIntConstant(2);
|
||||
#define EXECUTE_DEPTH_MINOR \
|
||||
FAILED = 0; \
|
||||
if (pt0->ModuleOfPred) { \
|
||||
if (DEPTH == MkIntTerm(0)) { \
|
||||
YAAM_FAIL; \
|
||||
} else { \
|
||||
DEPTH = RESET_DEPTH(); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define EXECUTE_DEPTH_END \
|
||||
FAILED = 0;
|
||||
#define EXECUTE_DEPTH_MOFPRED \
|
||||
FAILED = 0; \
|
||||
DEPTH -= MkIntConstant(2);
|
||||
|
||||
#define EXECUTE_DEPTH_END FAILED = 0;
|
||||
#endif
|
||||
|
||||
#define EXECUTE_END_END \
|
||||
BLOCK = (CELL)EXECUTE_END_END; \
|
||||
if (!FAILED) { \
|
||||
ALWAYS_GONext(); \
|
||||
} \
|
||||
#define EXECUTE_END_END \
|
||||
BLOCK = (CELL)EXECUTE_END_END; \
|
||||
if (!FAILED) { \
|
||||
ALWAYS_GONext(); \
|
||||
}
|
||||
|
||||
#define DEXECUTE_INSTINIT \
|
||||
print_instruction((*_PREG), ON_NATIVE); \
|
||||
BLOCKADDRESS = (CELL)(*_PREG);
|
||||
|
||||
#define DEXECUTE_INSTINIT \
|
||||
print_instruction((*_PREG), ON_NATIVE); \
|
||||
BLOCKADDRESS = (CELL)(*_PREG); \
|
||||
|
||||
#ifdef LOW_LEVEL_TRACER
|
||||
#define DEXECUTE_LOW_LEVEL_TRACER \
|
||||
low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1);
|
||||
#define DEXECUTE_LOW_LEVEL_TRACER \
|
||||
low_level_trace(enter_pred, (*_PREG)->u.Osbpp.p, XREGS + 1);
|
||||
#endif
|
||||
|
||||
#define DEXECUTE_POST_LOW_LEVEL_TRACER \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
PredEntry *pt0; \
|
||||
CACHE_A1(); \
|
||||
pt0 = (*_PREG)->u.pp.p;
|
||||
|
||||
#define DEXECUTE_POST_LOW_LEVEL_TRACER \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
PredEntry *pt0; \
|
||||
CACHE_A1(); \
|
||||
pt0 = (*_PREG)->u.Osbpp.p;
|
||||
|
||||
#ifdef DEPTH_LIMIT
|
||||
#define DEXECUTE_DEPTH_MINOR \
|
||||
FAILED = 0; \
|
||||
if (pt0->ModuleOfPred) { \
|
||||
if (DEPTH == MkIntTerm(0)) { \
|
||||
YAAM_FAIL; \
|
||||
} \
|
||||
else { \
|
||||
DEPTH = RESET_DEPTH(); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define DEXECUTE_DEPTH_MOFPRED \
|
||||
FAILED = 0; \
|
||||
DEPTH -= MkIntConstant(2);
|
||||
|
||||
#define DEXECUTE_DEPTH_END \
|
||||
FAILED = 0;
|
||||
#define DEXECUTE_DEPTH_MINOR \
|
||||
FAILED = 0; \
|
||||
if (pt0->ModuleOfPred) { \
|
||||
if (DEPTH == MkIntTerm(0)) { \
|
||||
YAAM_FAIL; \
|
||||
} else { \
|
||||
DEPTH = RESET_DEPTH(); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define DEXECUTE_DEPTH_MOFPRED \
|
||||
FAILED = 0; \
|
||||
DEPTH -= MkIntConstant(2);
|
||||
|
||||
#define DEXECUTE_DEPTH_END FAILED = 0;
|
||||
#endif
|
||||
|
||||
#ifdef FROZEN_STACKS
|
||||
#ifdef YAPOR_SBA
|
||||
#define DEXECUTE_END_END \
|
||||
BLOCK = (CELL)DEXECUTE_END_END; \
|
||||
if (!FAILED) { \
|
||||
(*_PREG) = pt0->CodeOfPred; \
|
||||
save_pc(); \
|
||||
(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
|
||||
ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
|
||||
ENV_YREG = (CELL *) top_b; \
|
||||
} \
|
||||
else { \
|
||||
ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL) B; \
|
||||
ALWAYS_GONext(); \
|
||||
} \
|
||||
ENDCACHE_Y_AS_ENV();
|
||||
#define DEXECUTE_END_END \
|
||||
BLOCK = (CELL)DEXECUTE_END_END; \
|
||||
if (!FAILED) { \
|
||||
(*_PREG) = pt0->CodeOfPred; \
|
||||
save_pc(); \
|
||||
(*_CPREG) = (yamop *)ENV_YREG[E_CP]; \
|
||||
ENV_YREG = ENV = (CELL *)ENV_YREG[E_E]; \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *)top_b || ENV_YREG < HR) { \
|
||||
ENV_YREG = (CELL *)top_b; \
|
||||
} else { \
|
||||
ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL)B; \
|
||||
ALWAYS_GONext(); \
|
||||
} \
|
||||
ENDCACHE_Y_AS_ENV();
|
||||
#else /* YAPOR_SBA */
|
||||
#define DEXECUTE_END_END \
|
||||
BLOCK = (CELL)DEXECUTE_END_END; \
|
||||
if (!FAILED) { \
|
||||
(*_PREG) = pt0->CodeOfPred; \
|
||||
save_pc(); \
|
||||
(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
|
||||
ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *) top_b) { \
|
||||
ENV_YREG = (CELL *) top_b; \
|
||||
} \
|
||||
else { \
|
||||
ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL) B; \
|
||||
ALWAYS_GONext(); \
|
||||
} \
|
||||
ENDCACHE_Y_AS_ENV();
|
||||
#define DEXECUTE_END_END \
|
||||
BLOCK = (CELL)DEXECUTE_END_END; \
|
||||
if (!FAILED) { \
|
||||
(*_PREG) = pt0->CodeOfPred; \
|
||||
save_pc(); \
|
||||
(*_CPREG) = (yamop *)ENV_YREG[E_CP]; \
|
||||
ENV_YREG = ENV = (CELL *)ENV_YREG[E_E]; \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *)top_b) { \
|
||||
ENV_YREG = (CELL *)top_b; \
|
||||
} else { \
|
||||
ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL)B; \
|
||||
ALWAYS_GONext(); \
|
||||
} \
|
||||
ENDCACHE_Y_AS_ENV();
|
||||
#endif /* YAPOR_SBA */
|
||||
#else /* FROZEN_STACKS */
|
||||
#define DEXECUTE_END_END \
|
||||
BLOCK = (CELL)DEXECUTE_END_END; \
|
||||
if (!FAILED) { \
|
||||
(*_PREG) = pt0->CodeOfPred; \
|
||||
save_pc(); \
|
||||
(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
|
||||
ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
|
||||
if (ENV_YREG > (CELL *)B) { \
|
||||
ENV_YREG = (CELL *)B; \
|
||||
} \
|
||||
else { \
|
||||
ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL) B; \
|
||||
ALWAYS_GONext(); \
|
||||
} \
|
||||
ENDCACHE_Y_AS_ENV();
|
||||
#else /* FROZEN_STACKS */
|
||||
#define DEXECUTE_END_END \
|
||||
BLOCK = (CELL)DEXECUTE_END_END; \
|
||||
if (!FAILED) { \
|
||||
(*_PREG) = pt0->CodeOfPred; \
|
||||
save_pc(); \
|
||||
(*_CPREG) = (yamop *)ENV_YREG[E_CP]; \
|
||||
ENV_YREG = ENV = (CELL *)ENV_YREG[E_E]; \
|
||||
if (ENV_YREG > (CELL *)B) { \
|
||||
ENV_YREG = (CELL *)B; \
|
||||
} else { \
|
||||
ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL)B; \
|
||||
ALWAYS_GONext(); \
|
||||
} \
|
||||
ENDCACHE_Y_AS_ENV();
|
||||
#endif /* FROZEN_STACKS */
|
||||
|
||||
#ifdef DEPTH_LIMIT
|
||||
#define FCALL_INST \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
ENV_YREG[E_CP] = (CELL) (*_CPREG); \
|
||||
ENV_YREG[E_E] = (CELL) ENV; \
|
||||
ENV_YREG[E_DEPTH] = DEPTH; \
|
||||
ENDCACHE_Y_AS_ENV();
|
||||
#define FCALL_INST \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
ENV_YREG[E_CP] = (CELL)(*_CPREG); \
|
||||
ENV_YREG[E_E] = (CELL)ENV; \
|
||||
ENV_YREG[E_DEPTH] = DEPTH; \
|
||||
ENDCACHE_Y_AS_ENV();
|
||||
#else /* DEPTH_LIMIT */
|
||||
#define FCALL_INST \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
ENV_YREG[E_CP] = (CELL) (*_CPREG); \
|
||||
ENV_YREG[E_E] = (CELL) ENV; \
|
||||
ENDCACHE_Y_AS_ENV();
|
||||
#define FCALL_INST \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
ENV_YREG[E_CP] = (CELL)(*_CPREG); \
|
||||
ENV_YREG[E_E] = (CELL)ENV; \
|
||||
ENDCACHE_Y_AS_ENV();
|
||||
#endif /* DEPTH_LIMIT */
|
||||
|
||||
#define CALL_INSTINIT \
|
||||
print_instruction((*_PREG), ON_NATIVE); \
|
||||
BLOCKADDRESS = (CELL)(*_PREG); \
|
||||
if (Yap_op_from_opcode((*_PREG)->opc) == _fcall) { \
|
||||
FCALL_INST; \
|
||||
}
|
||||
|
||||
|
||||
#define CALL_INSTINIT \
|
||||
print_instruction((*_PREG), ON_NATIVE); \
|
||||
BLOCKADDRESS = (CELL)(*_PREG); \
|
||||
if (Yap_op_from_opcode((*_PREG)->opc) == _fcall) { \
|
||||
FCALL_INST; \
|
||||
}
|
||||
|
||||
#ifdef LOW_LEVEL_TRACER
|
||||
#define CALL_LOW_LEVEL_TRACER \
|
||||
low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1);
|
||||
#define CALL_LOW_LEVEL_TRACER \
|
||||
low_level_trace(enter_pred, (*_PREG)->u.Osbpp.p, XREGS + 1);
|
||||
#endif
|
||||
|
||||
#define CALL_POST_LOW_LEVEL_TRACER \
|
||||
register CELL *ENV_YREG = (YREG); \
|
||||
PredEntry *pt; \
|
||||
pt = (*_PREG)->u.Osbpp.p; \
|
||||
CACHE_A1();
|
||||
|
||||
#define CALL_POST_NO_CHECKING \
|
||||
ENV = ENV_YREG; \
|
||||
ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
|
||||
(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
|
||||
(*_PREG) = pt->CodeOfPred; \
|
||||
save_pc(); \
|
||||
|
||||
#define CALL_POST_LOW_LEVEL_TRACER \
|
||||
register CELL *ENV_YREG = (YREG); \
|
||||
PredEntry *pt; \
|
||||
pt = (*_PREG)->u.Osbpp.p; \
|
||||
CACHE_A1();
|
||||
|
||||
#define CALL_POST_NO_CHECKING \
|
||||
ENV = ENV_YREG; \
|
||||
ENV_YREG = (CELL *)(((char *)ENV_YREG) + (*_PREG)->u.Osbpp.s); \
|
||||
(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
|
||||
(*_PREG) = pt->CodeOfPred; \
|
||||
save_pc();
|
||||
|
||||
#ifdef DEPTH_LIMIT
|
||||
#define CALL_DEPTH_MINOR \
|
||||
FAILED = 0; \
|
||||
if (pt->ModuleOfPred) { \
|
||||
if (DEPTH == MkIntTerm(0)){ \
|
||||
YAAM_FAIL; \
|
||||
} else { \
|
||||
DEPTH = RESET_DEPTH(); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define CALL_DEPTH_MOFPRED \
|
||||
FAILED = 0; \
|
||||
DEPTH -= MkIntConstant(2);
|
||||
|
||||
#define CALL_DEPTH_END \
|
||||
FAILED = 0;
|
||||
#define CALL_DEPTH_MINOR \
|
||||
FAILED = 0; \
|
||||
if (pt->ModuleOfPred) { \
|
||||
if (DEPTH == MkIntTerm(0)) { \
|
||||
YAAM_FAIL; \
|
||||
} else { \
|
||||
DEPTH = RESET_DEPTH(); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define CALL_DEPTH_MOFPRED \
|
||||
FAILED = 0; \
|
||||
DEPTH -= MkIntConstant(2);
|
||||
|
||||
#define CALL_DEPTH_END FAILED = 0;
|
||||
#endif
|
||||
|
||||
#ifdef YAPOR
|
||||
#ifdef FROZEN_STACKS
|
||||
#ifdef YAPOR_SBA
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
{ \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
|
||||
ENV_YREG = (CELL *) top_b; \
|
||||
} \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL) B; \
|
||||
SCH_check_requests(); \
|
||||
ALWAYS_GONext(); \
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
{ \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *)top_b || ENV_YREG < HR) { \
|
||||
ENV_YREG = (CELL *)top_b; \
|
||||
} \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL)B; \
|
||||
SCH_check_requests(); \
|
||||
ALWAYS_GONext(); \
|
||||
}
|
||||
#else /* YAPOR_SBA */
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
{ \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *) top_b) { \
|
||||
ENV_YREG = (CELL *) top_b; \
|
||||
} \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL) B; \
|
||||
SCH_check_requests(); \
|
||||
ALWAYS_GONext(); \
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
{ \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *)top_b) { \
|
||||
ENV_YREG = (CELL *)top_b; \
|
||||
} \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL)B; \
|
||||
SCH_check_requests(); \
|
||||
ALWAYS_GONext(); \
|
||||
}
|
||||
#endif /* YAPOR_SBA */
|
||||
#else /* FROZEN_STACKS */
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
if (ENV_YREG > (CELL *) B) { \
|
||||
ENV_YREG = (CELL *) B; \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL) B; \
|
||||
SCH_check_requests(); \
|
||||
ALWAYS_GONext(); \
|
||||
#else /* FROZEN_STACKS */
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
if (ENV_YREG > (CELL *)B) { \
|
||||
ENV_YREG = (CELL *)B; \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL)B; \
|
||||
SCH_check_requests(); \
|
||||
ALWAYS_GONext(); \
|
||||
}
|
||||
#endif /* FROZEN_STACKS */
|
||||
#else /* YAPOR */
|
||||
#else /* YAPOR */
|
||||
#ifdef FROZEN_STACKS
|
||||
#ifdef YAPOR_SBA
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
{ \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
|
||||
ENV_YREG = (CELL *) top_b; \
|
||||
} \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL) B; \
|
||||
ALWAYS_GONext(); \
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
{ \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *)top_b || ENV_YREG < HR) { \
|
||||
ENV_YREG = (CELL *)top_b; \
|
||||
} \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL)B; \
|
||||
ALWAYS_GONext(); \
|
||||
}
|
||||
#else /* YAPOR_SBA */
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
{ \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *) top_b) { \
|
||||
ENV_YREG = (CELL *) top_b; \
|
||||
} \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL) B; \
|
||||
ALWAYS_GONext(); \
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
{ \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *)top_b) { \
|
||||
ENV_YREG = (CELL *)top_b; \
|
||||
} \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL)B; \
|
||||
ALWAYS_GONext(); \
|
||||
}
|
||||
#endif /* YAPOR_SBA */
|
||||
#else /* FROZEN_STACKS */
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
if (ENV_YREG > (CELL *) B) { \
|
||||
ENV_YREG = (CELL *) B; \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL) B; \
|
||||
ALWAYS_GONext(); \
|
||||
#else /* FROZEN_STACKS */
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
if (ENV_YREG > (CELL *)B) { \
|
||||
ENV_YREG = (CELL *)B; \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL)B; \
|
||||
ALWAYS_GONext(); \
|
||||
}
|
||||
#endif /* FROZEN_STACKS */
|
||||
#endif /* YAPOR */
|
||||
|
||||
#define PROCCEED_INSTINIT \
|
||||
print_instruction((*_PREG), ON_NATIVE); \
|
||||
BLOCKADDRESS = (CELL)(*_PREG); \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
(*_PREG) = (*_CPREG); \
|
||||
save_pc(); \
|
||||
ENV_YREG = ENV;
|
||||
|
||||
#define PROCCEED_INSTINIT \
|
||||
print_instruction((*_PREG), ON_NATIVE); \
|
||||
BLOCKADDRESS = (CELL)(*_PREG); \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
(*_PREG) = (*_CPREG); \
|
||||
save_pc(); \
|
||||
ENV_YREG = ENV;
|
||||
|
||||
#ifdef DEPTH_LIMIT
|
||||
#define PROCCEED_DEPTH \
|
||||
DEPTH = ENV_YREG[E_DEPTH];
|
||||
#define PROCCEED_DEPTH DEPTH = ENV_YREG[E_DEPTH];
|
||||
#endif
|
||||
|
||||
#define PROCCEED_END \
|
||||
BLOCK = (CELL)PROCCEED_END; \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENDCACHE_Y_AS_ENV(); \
|
||||
ALWAYS_GONext();
|
||||
#define PROCCEED_END \
|
||||
BLOCK = (CELL)PROCCEED_END; \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENDCACHE_Y_AS_ENV(); \
|
||||
ALWAYS_GONext();
|
||||
|
||||
#define ALLOCATE_INSTINIT \
|
||||
print_instruction((*_PREG), ON_NATIVE); \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
(*_PREG) = NEXTOP((*_PREG), e); \
|
||||
ENV_YREG[E_CP] = (CELL)(*_CPREG); \
|
||||
ENV_YREG[E_E] = (CELL)ENV;
|
||||
|
||||
#define ALLOCATE_INSTINIT \
|
||||
print_instruction((*_PREG), ON_NATIVE); \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
(*_PREG) = NEXTOP((*_PREG), e); \
|
||||
ENV_YREG[E_CP] = (CELL) (*_CPREG); \
|
||||
ENV_YREG[E_E] = (CELL) ENV;
|
||||
|
||||
#ifdef DEPTH_LIMIT
|
||||
#define ALLOCATE_DEPTH \
|
||||
ENV_YREG[E_DEPTH] = DEPTH;
|
||||
#define ALLOCATE_DEPTH ENV_YREG[E_DEPTH] = DEPTH;
|
||||
#endif
|
||||
|
||||
#define ALLOCATE_END \
|
||||
ENV = ENV_YREG; \
|
||||
ENDCACHE_Y_AS_ENV(); \
|
||||
GONext();
|
||||
#define ALLOCATE_END \
|
||||
ENV = ENV_YREG; \
|
||||
ENDCACHE_Y_AS_ENV(); \
|
||||
GONext();
|
||||
|
||||
#define DEALLOCATE_INSTINIT \
|
||||
print_instruction((*_PREG), ON_NATIVE); \
|
||||
#define DEALLOCATE_INSTINIT print_instruction((*_PREG), ON_NATIVE);
|
||||
|
||||
#define DEALLOCATE_POST_CHECK \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
(*_PREG) = NEXTOP((*_PREG), p); \
|
||||
(*_SREG) = YREG; \
|
||||
(*_CPREG) = (yamop *)ENV_YREG[E_CP]; \
|
||||
ENV = ENV_YREG = (CELL *)ENV_YREG[E_E];
|
||||
|
||||
#define DEALLOCATE_POST_CHECK \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
(*_PREG) = NEXTOP((*_PREG), p); \
|
||||
(*_SREG) = YREG; \
|
||||
(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
|
||||
ENV = ENV_YREG = (CELL *) ENV_YREG[E_E];
|
||||
|
||||
#ifdef DEPTH_LIMIT
|
||||
#define DEALLOCATE_DEPTH \
|
||||
DEPTH = ENV_YREG[E_DEPTH];
|
||||
#define DEALLOCATE_DEPTH DEPTH = ENV_YREG[E_DEPTH];
|
||||
#endif
|
||||
|
||||
#ifdef FROZEN_STACKS
|
||||
#ifdef YAPOR_SBA
|
||||
#define DEALLOCATE_FROZEN \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) \
|
||||
ENV_YREG = (CELL *) top_b; \
|
||||
else \
|
||||
ENV_YREG = (CELL *)((CELL) ENV_YREG + ENV_Size(CPREG));
|
||||
#define DEALLOCATE_FROZEN \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *)top_b || ENV_YREG < HR) \
|
||||
ENV_YREG = (CELL *)top_b; \
|
||||
else \
|
||||
ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size(CPREG));
|
||||
#else /* YAPOR_SBA */
|
||||
#define DEALLOCATE_FROZEN \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *) top_b) \
|
||||
ENV_YREG = (CELL *) top_b; \
|
||||
else \
|
||||
ENV_YREG = (CELL *)((CELL) ENV_YREG + ENV_Size(CPREG));
|
||||
#define DEALLOCATE_FROZEN \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *)top_b) \
|
||||
ENV_YREG = (CELL *)top_b; \
|
||||
else \
|
||||
ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size(CPREG));
|
||||
#endif /* YAPOR_SBA */
|
||||
#else /* FROZEN_STACKS */
|
||||
#define DEALLOCATE_FROZEN \
|
||||
if (ENV_YREG > (CELL *) B) \
|
||||
ENV_YREG = (CELL *) B; \
|
||||
else \
|
||||
ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size(CPREG));
|
||||
#else /* FROZEN_STACKS */
|
||||
#define DEALLOCATE_FROZEN \
|
||||
if (ENV_YREG > (CELL *)B) \
|
||||
ENV_YREG = (CELL *)B; \
|
||||
else \
|
||||
ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size(CPREG));
|
||||
#endif /* FROZEN_STACKS */
|
||||
|
||||
#define DEALLOCATE_POST_FROZEN \
|
||||
WRITEBACK_Y_AS_ENV();
|
||||
|
||||
#define DEALLOCATE_END \
|
||||
ENDCACHE_Y_AS_ENV(); \
|
||||
GONext();
|
||||
#define DEALLOCATE_POST_FROZEN WRITEBACK_Y_AS_ENV();
|
||||
|
||||
#define DEALLOCATE_END \
|
||||
ENDCACHE_Y_AS_ENV(); \
|
||||
GONext();
|
||||
|
||||
Reference in New Issue
Block a user