2875 lines
		
	
	
		
			73 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			2875 lines
		
	
	
		
			73 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#if (defined(YAPOR_SBA) && defined(YAPOR)) || defined(TABLING)
 | 
						|
#define check_stack_on_call \
 | 
						|
  if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0)  ) return external_labels[6];
 | 
						|
#else
 | 
						|
#define check_stack_on_call \
 | 
						|
  if  (__builtin_expect(((Int)(Unsigned(ENV_YREG) - Unsigned(HR)) < CreepFlag ), 0) ) return external_labels[6];
 | 
						|
#endif /* YAPOR_SBA && YAPOR */
 | 
						|
 | 
						|
#if (defined(YAPOR_SBA) && defined(YAPOR)) || defined(TABLING)
 | 
						|
#define check_stack_on_execute \
 | 
						|
  if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0)  ) return external_labels[5];
 | 
						|
#else
 | 
						|
#define check_stack_on_execute \
 | 
						|
  if  (__builtin_expect(((Int)(Unsigned(ENV_YREG) - Unsigned(HR)) < CreepFlag ), 0) ) return external_labels[5];
 | 
						|
#endif /* YAPOR_SBA && YAPOR */
 | 
						|
 | 
						|
#if (defined(YAPOR_SBA) && defined(YAPOR)) || defined(TABLING)
 | 
						|
#define check_stack_on_dexecute \
 | 
						|
  if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0)  ) return external_labels[7];
 | 
						|
#else
 | 
						|
#define check_stack_on_dexecute \
 | 
						|
  if  (__builtin_expect(((Int)(Unsigned(ENV_YREG) - Unsigned(HR)) < CreepFlag ), 0) ) return external_labels[7];
 | 
						|
#endif /* YAPOR_SBA && YAPOR */
 | 
						|
 | 
						|
#if (defined(YAPOR_SBA) && defined(YAPOR)) || defined(TABLING)
 | 
						|
#define check_stack_on_deallocate \
 | 
						|
  if (__builtin_expect( ((Int)(Unsigned(YOUNGEST_CP((choiceptr)ENV_YREG,B_FZ)) - Unsigned(YOUNGEST_H(H_FZ,H))) < CreepFlag), 0)  ) return external_labels[8];
 | 
						|
#else
 | 
						|
#define check_stack_on_deallocate \
 | 
						|
  if  (__builtin_expect(((Int)(Unsigned(ENV_YREG) - Unsigned(HR)) < CreepFlag ), 0) ) return external_labels[8];
 | 
						|
#endif /* YAPOR_SBA && YAPOR */
 | 
						|
 | 
						|
#ifdef DEPTH_LIMIT
 | 
						|
#define _procceed_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      (*_PREG) = (*_CPREG); \
 | 
						|
      save_pc(); \
 | 
						|
      ENV_YREG = ENV; \
 | 
						|
      DEPTH = ENV_YREG[E_DEPTH]; \
 | 
						|
      WRITEBACK_Y_AS_ENV(); \
 | 
						|
      GONEXT(); \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* DEPTH_LIMIT */
 | 
						|
#define _procceed_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      (*_PREG) = (*_CPREG); \
 | 
						|
      save_pc(); \
 | 
						|
      ENV_YREG = ENV; \
 | 
						|
      WRITEBACK_Y_AS_ENV(); \
 | 
						|
      GONEXT(); \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* DEPTH_LIMIT */
 | 
						|
 | 
						|
#ifdef DEPTH_LIMIT
 | 
						|
#define _fcall_instinit \
 | 
						|
      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(); \
 | 
						|
      _call_instinit;
 | 
						|
#else /* DEPTH_LIMIT */
 | 
						|
#define _fcall_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      ENV_YREG[E_CP] = (CELL) (*_CPREG); \
 | 
						|
      ENV_YREG[E_E] = (CELL) ENV; \
 | 
						|
      ENDCACHE_Y_AS_ENV(); \
 | 
						|
      _call_instinit;
 | 
						|
#endif /* DEPTH_LIMIT */
 | 
						|
 | 
						|
#ifdef LOW_LEVEL_TRACER
 | 
						|
#ifdef NO_CHECKING
 | 
						|
#ifdef DEPTH_LIMIT
 | 
						|
#ifdef FROZEN_STACKS
 | 
						|
#ifdef YAPOR_SBA
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	{ \
 | 
						|
	  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(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	{ \
 | 
						|
	  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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#else /* YAPOR_SBA */
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	{ \
 | 
						|
	  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(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	{ \
 | 
						|
	  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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#endif /* YAPOR_SBA */
 | 
						|
#else /* FROZEN_STACKS */
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	if (ENV_YREG > (CELL *) B) { \
 | 
						|
	  ENV_YREG = (CELL *) B; \
 | 
						|
	} \
 | 
						|
	WRITEBACK_Y_AS_ENV(); \
 | 
						|
	ENV_YREG[E_CB] = (CELL) B; \
 | 
						|
	SCH_check_requests(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	if (ENV_YREG > (CELL *) B) { \
 | 
						|
	  ENV_YREG = (CELL *) B; \
 | 
						|
	} \
 | 
						|
	WRITEBACK_Y_AS_ENV(); \
 | 
						|
	ENV_YREG[E_CB] = (CELL) B; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#endif /* FROZEN_STACKS */
 | 
						|
#else /* DEPTH_LIMIT */
 | 
						|
#ifdef FROZEN_STACKS
 | 
						|
#ifdef YAPOR_SBA
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	{ \
 | 
						|
	  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(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	{ \
 | 
						|
	  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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#else /* YAPOR_SBA */
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	{ \
 | 
						|
	  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(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	{ \
 | 
						|
	  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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#endif /* YAPOR_SBA */
 | 
						|
#else /* FROZEN_STACKS */
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (ENV_YREG > (CELL *) B) { \
 | 
						|
	  ENV_YREG = (CELL *) B; \
 | 
						|
	} \
 | 
						|
	WRITEBACK_Y_AS_ENV(); \
 | 
						|
	ENV_YREG[E_CB] = (CELL) B; \
 | 
						|
	SCH_check_requests(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (ENV_YREG > (CELL *) B) { \
 | 
						|
	  ENV_YREG = (CELL *) B; \
 | 
						|
	} \
 | 
						|
	WRITEBACK_Y_AS_ENV(); \
 | 
						|
	ENV_YREG[E_CB] = (CELL) B; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#endif /* FROZEN_STACKS */
 | 
						|
#endif /* DEPTH_LIMIT */
 | 
						|
#else /* NO_CHECKING */
 | 
						|
#ifdef DEPTH_LIMIT
 | 
						|
#ifdef FROZEN_STACKS
 | 
						|
#ifdef YAPOR_SBA
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	{ \
 | 
						|
	  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(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	{ \
 | 
						|
	  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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#else /* YAPOR_SBA */
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	{ \
 | 
						|
	  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(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	{ \
 | 
						|
	  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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#endif /* YAPOR_SBA */
 | 
						|
#else /* FROZEN_STACKS */
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	if (ENV_YREG > (CELL *) B) { \
 | 
						|
	  ENV_YREG = (CELL *) B; \
 | 
						|
	} \
 | 
						|
	WRITEBACK_Y_AS_ENV(); \
 | 
						|
	ENV_YREG[E_CB] = (CELL) B; \
 | 
						|
	SCH_check_requests(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	if (ENV_YREG > (CELL *) B) { \
 | 
						|
	  ENV_YREG = (CELL *) B; \
 | 
						|
	} \
 | 
						|
	WRITEBACK_Y_AS_ENV(); \
 | 
						|
	ENV_YREG[E_CB] = (CELL) B; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#endif /* FROZEN_STACKS */
 | 
						|
#else /* DEPTH_LIMIT */
 | 
						|
#ifdef FROZEN_STACKS
 | 
						|
#ifdef YAPOR_SBA
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	{ \
 | 
						|
	  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(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	{ \
 | 
						|
	  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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#else /* YAPOR_SBA */
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	{ \
 | 
						|
	  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(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	{ \
 | 
						|
	  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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#endif /* YAPOR_SBA */
 | 
						|
#else /* FROZEN_STACKS */
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (ENV_YREG > (CELL *) B) { \
 | 
						|
	  ENV_YREG = (CELL *) B; \
 | 
						|
	} \
 | 
						|
	WRITEBACK_Y_AS_ENV(); \
 | 
						|
	ENV_YREG[E_CB] = (CELL) B; \
 | 
						|
	SCH_check_requests(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1); \
 | 
						|
      } \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (ENV_YREG > (CELL *) B) { \
 | 
						|
	  ENV_YREG = (CELL *) B; \
 | 
						|
	} \
 | 
						|
	WRITEBACK_Y_AS_ENV(); \
 | 
						|
	ENV_YREG[E_CB] = (CELL) B; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#endif /* FROZEN_STACKS */
 | 
						|
#endif /* DEPTH_LIMIT */
 | 
						|
#endif /* NO_CHECKING */
 | 
						|
#else /* LOW_LEVEL_TRACER */
 | 
						|
#ifdef NO_CHECKING
 | 
						|
#ifdef DEPTH_LIMIT
 | 
						|
#ifdef FROZEN_STACKS
 | 
						|
#ifdef YAPOR_SBA
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	{ \
 | 
						|
	  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(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	{ \
 | 
						|
	  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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#else /* YAPOR_SBA */
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	{ \
 | 
						|
	  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(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	{ \
 | 
						|
	  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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#endif /* YAPOR_SBA */
 | 
						|
#else /* FROZEN_STACKS */
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	if (ENV_YREG > (CELL *) B) { \
 | 
						|
	  ENV_YREG = (CELL *) B; \
 | 
						|
	} \
 | 
						|
	WRITEBACK_Y_AS_ENV(); \
 | 
						|
	ENV_YREG[E_CB] = (CELL) B; \
 | 
						|
	SCH_check_requests(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	if (ENV_YREG > (CELL *) B) { \
 | 
						|
	  ENV_YREG = (CELL *) B; \
 | 
						|
	} \
 | 
						|
	WRITEBACK_Y_AS_ENV(); \
 | 
						|
	ENV_YREG[E_CB] = (CELL) B; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#endif /* FROZEN_STACKS */
 | 
						|
#else /* DEPTH_LIMIT */
 | 
						|
#ifdef FROZEN_STACKS
 | 
						|
#ifdef YAPOR_SBA
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	{ \
 | 
						|
	  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(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	{ \
 | 
						|
	  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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#else /* YAPOR_SBA */
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	{ \
 | 
						|
	  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(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	{ \
 | 
						|
	  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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#endif /* YAPOR_SBA */
 | 
						|
#else /* FROZEN_STACKS */
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (ENV_YREG > (CELL *) B) { \
 | 
						|
	  ENV_YREG = (CELL *) B; \
 | 
						|
	} \
 | 
						|
	WRITEBACK_Y_AS_ENV(); \
 | 
						|
	ENV_YREG[E_CB] = (CELL) B; \
 | 
						|
	SCH_check_requests(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (ENV_YREG > (CELL *) B) { \
 | 
						|
	  ENV_YREG = (CELL *) B; \
 | 
						|
	} \
 | 
						|
	WRITEBACK_Y_AS_ENV(); \
 | 
						|
	ENV_YREG[E_CB] = (CELL) B; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#endif /* FROZEN_STACKS */
 | 
						|
#endif /* DEPTH_LIMIT */
 | 
						|
#else /* NO_CHECKING */
 | 
						|
#ifdef DEPTH_LIMIT
 | 
						|
#ifdef FROZEN_STACKS
 | 
						|
#ifdef YAPOR_SBA
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	{ \
 | 
						|
	  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(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	{ \
 | 
						|
	  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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#else /* YAPOR_SBA */
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	{ \
 | 
						|
	  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(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	{ \
 | 
						|
	  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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#endif /* YAPOR_SBA */
 | 
						|
#else /* FROZEN_STACKS */
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	if (ENV_YREG > (CELL *) B) { \
 | 
						|
	  ENV_YREG = (CELL *) B; \
 | 
						|
	} \
 | 
						|
	WRITEBACK_Y_AS_ENV(); \
 | 
						|
	ENV_YREG[E_CB] = (CELL) B; \
 | 
						|
	SCH_check_requests(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)){ \
 | 
						|
	        FAIL(); \
 | 
						|
	    } else { \
 | 
						|
	        DEPTH = RESET_DEPTH(); \
 | 
						|
	    } \
 | 
						|
	  } \
 | 
						|
	} else if (pt->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	} \
 | 
						|
	if (ENV_YREG > (CELL *) B) { \
 | 
						|
	  ENV_YREG = (CELL *) B; \
 | 
						|
	} \
 | 
						|
	WRITEBACK_Y_AS_ENV(); \
 | 
						|
	ENV_YREG[E_CB] = (CELL) B; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#endif /* FROZEN_STACKS */
 | 
						|
#else /* DEPTH_LIMIT */
 | 
						|
#ifdef FROZEN_STACKS
 | 
						|
#ifdef YAPOR_SBA
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	{ \
 | 
						|
	  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(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	{ \
 | 
						|
	  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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#else /* YAPOR_SBA */
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	{ \
 | 
						|
	  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(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	{ \
 | 
						|
	  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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#endif /* YAPOR_SBA */
 | 
						|
#else /* FROZEN_STACKS */
 | 
						|
#ifdef YAPOR
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (ENV_YREG > (CELL *) B) { \
 | 
						|
	  ENV_YREG = (CELL *) B; \
 | 
						|
	} \
 | 
						|
	WRITEBACK_Y_AS_ENV(); \
 | 
						|
	ENV_YREG[E_CB] = (CELL) B; \
 | 
						|
	SCH_check_requests(); \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR */
 | 
						|
#define _call_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt; \
 | 
						|
	pt = (*_PREG)->u.Osbpp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	check_stack_on_call; \
 | 
						|
	ENV = ENV_YREG; \
 | 
						|
	ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
 | 
						|
	(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
 | 
						|
	(*_PREG) = pt->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	if (ENV_YREG > (CELL *) B) { \
 | 
						|
	  ENV_YREG = (CELL *) B; \
 | 
						|
	} \
 | 
						|
	WRITEBACK_Y_AS_ENV(); \
 | 
						|
	ENV_YREG[E_CB] = (CELL) B; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR */
 | 
						|
#endif /* FROZEN_STACKS */
 | 
						|
#endif /* DEPTH_LIMIT */
 | 
						|
#endif /* NO_CHECKING */
 | 
						|
#endif /* LOW_LEVEL_TRACER */
 | 
						|
 | 
						|
#ifdef LOW_LEVEL_TRACER
 | 
						|
#ifdef NO_CHECKING
 | 
						|
#ifdef DEPTH_LIMIT
 | 
						|
#define _execute_instinit \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_Y_AS_ENV(YREG); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	if (Yap_do_low_level_trace) { \
 | 
						|
	  low_level_trace(enter_pred,pt0,XREGS+1); \
 | 
						|
	} \
 | 
						|
	CACHE_A1(); \
 | 
						|
	BEGD(d0); \
 | 
						|
	d0 = (CELL)B; \
 | 
						|
	(*_PREG) = pt0->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	ENV_YREG[E_CB] = d0; \
 | 
						|
	ENDD(d0); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt0->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)) { \
 | 
						|
          FAIL(); \
 | 
						|
        } \
 | 
						|
	    else { \
 | 
						|
          DEPTH = RESET_DEPTH(); \
 | 
						|
        } \
 | 
						|
	  } \
 | 
						|
	} else if (pt0->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
    } \
 | 
						|
	GONEXT(); \
 | 
						|
	ENDCACHE_Y_AS_ENV(); \
 | 
						|
      }
 | 
						|
#else /* DEPTH_LIMIT */
 | 
						|
#define _execute_instinit \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_Y_AS_ENV(YREG); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	if (Yap_do_low_level_trace) { \
 | 
						|
	  low_level_trace(enter_pred,pt0,XREGS+1); \
 | 
						|
	} \
 | 
						|
	CACHE_A1(); \
 | 
						|
	BEGD(d0); \
 | 
						|
	d0 = (CELL)B; \
 | 
						|
	(*_PREG) = pt0->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	ENV_YREG[E_CB] = d0; \
 | 
						|
	ENDD(d0); \
 | 
						|
	GONEXT(); \
 | 
						|
	ENDCACHE_Y_AS_ENV(); \
 | 
						|
      }
 | 
						|
#endif /* DEPTH_LIMIT */
 | 
						|
#else /* NO_CHECKING */
 | 
						|
#ifdef DEPTH_LIMIT
 | 
						|
#define _execute_instinit \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_Y_AS_ENV(YREG); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	if (Yap_do_low_level_trace) { \
 | 
						|
	  low_level_trace(enter_pred,pt0,XREGS+1); \
 | 
						|
	} \
 | 
						|
	CACHE_A1(); \
 | 
						|
	BEGD(d0); \
 | 
						|
	d0 = (CELL)B; \
 | 
						|
	check_stack_on_execute; \
 | 
						|
	(*_PREG) = pt0->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	ENV_YREG[E_CB] = d0; \
 | 
						|
	ENDD(d0); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt0->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)) { \
 | 
						|
          FAIL(); \
 | 
						|
        } \
 | 
						|
	    else { \
 | 
						|
          DEPTH = RESET_DEPTH(); \
 | 
						|
        } \
 | 
						|
	  } \
 | 
						|
	} else if (pt0->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
    } \
 | 
						|
	GONEXT(); \
 | 
						|
	ENDCACHE_Y_AS_ENV(); \
 | 
						|
      }
 | 
						|
#else /* DEPTH_LIMIT */
 | 
						|
#define _execute_instinit \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_Y_AS_ENV(YREG); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	if (Yap_do_low_level_trace) { \
 | 
						|
	  low_level_trace(enter_pred,pt0,XREGS+1); \
 | 
						|
	} \
 | 
						|
	CACHE_A1(); \
 | 
						|
	BEGD(d0); \
 | 
						|
	d0 = (CELL)B; \
 | 
						|
	check_stack_on_execute; \
 | 
						|
	(*_PREG) = pt0->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	ENV_YREG[E_CB] = d0; \
 | 
						|
	ENDD(d0); \
 | 
						|
	GONEXT(); \
 | 
						|
	ENDCACHE_Y_AS_ENV(); \
 | 
						|
      }
 | 
						|
#endif /* DEPTH_LIMIT */
 | 
						|
#endif /* NO_CHECKING */
 | 
						|
#else /* LOW_LEVEL_TRACER */
 | 
						|
#ifdef NO_CHECKING
 | 
						|
#ifdef DEPTH_LIMIT
 | 
						|
#define _execute_instinit \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_Y_AS_ENV(YREG); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	BEGD(d0); \
 | 
						|
	d0 = (CELL)B; \
 | 
						|
	(*_PREG) = pt0->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	ENV_YREG[E_CB] = d0; \
 | 
						|
	ENDD(d0); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt0->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)) { \
 | 
						|
          FAIL(); \
 | 
						|
        } \
 | 
						|
	    else { \
 | 
						|
          DEPTH = RESET_DEPTH(); \
 | 
						|
        } \
 | 
						|
	  } \
 | 
						|
	} else if (pt0->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
    } \
 | 
						|
	GONEXT(); \
 | 
						|
	ENDCACHE_Y_AS_ENV(); \
 | 
						|
      }
 | 
						|
#else /* DEPTH_LIMIT */
 | 
						|
#define _execute_instinit \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_Y_AS_ENV(YREG); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	BEGD(d0); \
 | 
						|
	d0 = (CELL)B; \
 | 
						|
	(*_PREG) = pt0->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	ENV_YREG[E_CB] = d0; \
 | 
						|
	ENDD(d0); \
 | 
						|
	GONEXT(); \
 | 
						|
	ENDCACHE_Y_AS_ENV(); \
 | 
						|
      }
 | 
						|
#endif /* DEPTH_LIMIT */
 | 
						|
#else /* NO_CHECKING */
 | 
						|
#ifdef DEPTH_LIMIT
 | 
						|
#define _execute_instinit \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_Y_AS_ENV(YREG); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	BEGD(d0); \
 | 
						|
	d0 = (CELL)B; \
 | 
						|
	check_stack_on_execute; \
 | 
						|
	(*_PREG) = pt0->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	ENV_YREG[E_CB] = d0; \
 | 
						|
	ENDD(d0); \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt0->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)) { \
 | 
						|
          FAIL(); \
 | 
						|
        } \
 | 
						|
	    else { \
 | 
						|
          DEPTH = RESET_DEPTH(); \
 | 
						|
        } \
 | 
						|
	  } \
 | 
						|
	} else if (pt0->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
    } \
 | 
						|
	GONEXT(); \
 | 
						|
	ENDCACHE_Y_AS_ENV(); \
 | 
						|
      }
 | 
						|
#else /* DEPTH_LIMIT */
 | 
						|
#define _execute_instinit \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_Y_AS_ENV(YREG); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	BEGD(d0); \
 | 
						|
	d0 = (CELL)B; \
 | 
						|
	check_stack_on_execute; \
 | 
						|
	(*_PREG) = pt0->CodeOfPred; \
 | 
						|
	save_pc(); \
 | 
						|
	ENV_YREG[E_CB] = d0; \
 | 
						|
	ENDD(d0); \
 | 
						|
	GONEXT(); \
 | 
						|
	ENDCACHE_Y_AS_ENV(); \
 | 
						|
      }
 | 
						|
#endif /* DEPTH_LIMIT */
 | 
						|
#endif /* NO_CHECKING */
 | 
						|
#endif /* LOW_LEVEL_TRACER */
 | 
						|
 | 
						|
#ifdef LOW_LEVEL_TRACER
 | 
						|
#ifdef NO_CHECKING
 | 
						|
#ifdef DEPTH_LIMIT
 | 
						|
#ifdef FROZEN_STACKS
 | 
						|
#ifdef YAPOR_SBA
 | 
						|
#define _dexecute_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
 | 
						|
	  } \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt0->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)) { \
 | 
						|
	      FAIL(); \
 | 
						|
		} \
 | 
						|
	    else { \
 | 
						|
		  DEPTH = RESET_DEPTH(); \
 | 
						|
		} \
 | 
						|
	  } \
 | 
						|
	} else if (pt0->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	 } \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR_SBA */
 | 
						|
#define _dexecute_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
 | 
						|
	  } \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt0->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)) { \
 | 
						|
	      FAIL(); \
 | 
						|
		} \
 | 
						|
	    else { \
 | 
						|
		  DEPTH = RESET_DEPTH(); \
 | 
						|
		} \
 | 
						|
	  } \
 | 
						|
	} else if (pt0->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	 } \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR_SBA */
 | 
						|
#else /* FROZEN_STACKS */
 | 
						|
#define _dexecute_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
 | 
						|
	  } \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt0->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)) { \
 | 
						|
	      FAIL(); \
 | 
						|
		} \
 | 
						|
	    else { \
 | 
						|
		  DEPTH = RESET_DEPTH(); \
 | 
						|
		} \
 | 
						|
	  } \
 | 
						|
	} else if (pt0->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	 } \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* FROZEN_STACKS */
 | 
						|
#else /* DEPTH_LIMIT */
 | 
						|
#ifdef FROZEN_STACKS
 | 
						|
#ifdef YAPOR_SBA
 | 
						|
#define _dexecute_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
 | 
						|
	  } \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR_SBA */
 | 
						|
#define _dexecute_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
 | 
						|
	  } \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR_SBA */
 | 
						|
#else /* FROZEN_STACKS */
 | 
						|
#define _dexecute_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
 | 
						|
	  } \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* FROZEN_STACKS */
 | 
						|
#endif /* DEPTH_LIMIT */
 | 
						|
#else /* NO_CHECKING */
 | 
						|
#ifdef DEPTH_LIMIT
 | 
						|
#ifdef FROZEN_STACKS
 | 
						|
#ifdef YAPOR_SBA
 | 
						|
#define _dexecute_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
 | 
						|
	  } \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	check_stack_on_dexecute; \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt0->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)) { \
 | 
						|
	      FAIL(); \
 | 
						|
		} \
 | 
						|
	    else { \
 | 
						|
		  DEPTH = RESET_DEPTH(); \
 | 
						|
		} \
 | 
						|
	  } \
 | 
						|
	} else if (pt0->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	 } \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR_SBA */
 | 
						|
#define _dexecute_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
 | 
						|
	  } \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	check_stack_on_dexecute; \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt0->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)) { \
 | 
						|
	      FAIL(); \
 | 
						|
		} \
 | 
						|
	    else { \
 | 
						|
		  DEPTH = RESET_DEPTH(); \
 | 
						|
		} \
 | 
						|
	  } \
 | 
						|
	} else if (pt0->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	 } \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR_SBA */
 | 
						|
#else /* FROZEN_STACKS */
 | 
						|
#define _dexecute_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
 | 
						|
	  } \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	check_stack_on_dexecute; \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt0->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)) { \
 | 
						|
	      FAIL(); \
 | 
						|
		} \
 | 
						|
	    else { \
 | 
						|
		  DEPTH = RESET_DEPTH(); \
 | 
						|
		} \
 | 
						|
	  } \
 | 
						|
	} else if (pt0->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	 } \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* FROZEN_STACKS */
 | 
						|
#else /* DEPTH_LIMIT */
 | 
						|
#ifdef FROZEN_STACKS
 | 
						|
#ifdef YAPOR_SBA
 | 
						|
#define _dexecute_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
 | 
						|
	  } \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	check_stack_on_dexecute; \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR_SBA */
 | 
						|
#define _dexecute_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
 | 
						|
	  } \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	check_stack_on_dexecute; \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR_SBA */
 | 
						|
#else /* FROZEN_STACKS */
 | 
						|
#define _dexecute_instinit \
 | 
						|
      if (Yap_do_low_level_trace) { \
 | 
						|
	low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1); \
 | 
						|
	  } \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	check_stack_on_dexecute; \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* FROZEN_STACKS */
 | 
						|
#endif /* DEPTH_LIMIT */
 | 
						|
#endif /* NO_CHECKING */
 | 
						|
#else /* LOW_LEVEL_TRACER */
 | 
						|
#ifdef NO_CHECKING
 | 
						|
#ifdef DEPTH_LIMIT
 | 
						|
#ifdef FROZEN_STACKS
 | 
						|
#ifdef YAPOR_SBA
 | 
						|
#define _dexecute_instinit \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt0->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)) { \
 | 
						|
	      FAIL(); \
 | 
						|
		} \
 | 
						|
	    else { \
 | 
						|
		  DEPTH = RESET_DEPTH(); \
 | 
						|
		} \
 | 
						|
	  } \
 | 
						|
	} else if (pt0->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	 } \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR_SBA */
 | 
						|
#define _dexecute_instinit \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt0->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)) { \
 | 
						|
	      FAIL(); \
 | 
						|
		} \
 | 
						|
	    else { \
 | 
						|
		  DEPTH = RESET_DEPTH(); \
 | 
						|
		} \
 | 
						|
	  } \
 | 
						|
	} else if (pt0->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	 } \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR_SBA */
 | 
						|
#else /* FROZEN_STACKS */
 | 
						|
#define _dexecute_instinit \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt0->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)) { \
 | 
						|
	      FAIL(); \
 | 
						|
		} \
 | 
						|
	    else { \
 | 
						|
		  DEPTH = RESET_DEPTH(); \
 | 
						|
		} \
 | 
						|
	  } \
 | 
						|
	} else if (pt0->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	 } \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* FROZEN_STACKS */
 | 
						|
#else /* DEPTH_LIMIT */
 | 
						|
#ifdef FROZEN_STACKS
 | 
						|
#ifdef YAPOR_SBA
 | 
						|
#define _dexecute_instinit \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR_SBA */
 | 
						|
#define _dexecute_instinit \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR_SBA */
 | 
						|
#else /* FROZEN_STACKS */
 | 
						|
#define _dexecute_instinit \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* FROZEN_STACKS */
 | 
						|
#endif /* DEPTH_LIMIT */
 | 
						|
#else /* NO_CHECKING */
 | 
						|
#ifdef DEPTH_LIMIT
 | 
						|
#ifdef FROZEN_STACKS
 | 
						|
#ifdef YAPOR_SBA
 | 
						|
#define _dexecute_instinit \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	check_stack_on_dexecute; \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt0->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)) { \
 | 
						|
	      FAIL(); \
 | 
						|
		} \
 | 
						|
	    else { \
 | 
						|
		  DEPTH = RESET_DEPTH(); \
 | 
						|
		} \
 | 
						|
	  } \
 | 
						|
	} else if (pt0->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	 } \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR_SBA */
 | 
						|
#define _dexecute_instinit \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	check_stack_on_dexecute; \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt0->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)) { \
 | 
						|
	      FAIL(); \
 | 
						|
		} \
 | 
						|
	    else { \
 | 
						|
		  DEPTH = RESET_DEPTH(); \
 | 
						|
		} \
 | 
						|
	  } \
 | 
						|
	} else if (pt0->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	 } \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR_SBA */
 | 
						|
#else /* FROZEN_STACKS */
 | 
						|
#define _dexecute_instinit \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	check_stack_on_dexecute; \
 | 
						|
	if (DEPTH <= MkIntTerm(1)) { \
 | 
						|
	  if (pt0->ModuleOfPred) { \
 | 
						|
	    if (DEPTH == MkIntTerm(0)) { \
 | 
						|
	      FAIL(); \
 | 
						|
		} \
 | 
						|
	    else { \
 | 
						|
		  DEPTH = RESET_DEPTH(); \
 | 
						|
		} \
 | 
						|
	  } \
 | 
						|
	} else if (pt0->ModuleOfPred) { \
 | 
						|
	  DEPTH -= MkIntConstant(2); \
 | 
						|
	 } \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* FROZEN_STACKS */
 | 
						|
#else /* DEPTH_LIMIT */
 | 
						|
#ifdef FROZEN_STACKS
 | 
						|
#ifdef YAPOR_SBA
 | 
						|
#define _dexecute_instinit \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	check_stack_on_dexecute; \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#else /* YAPOR_SBA */
 | 
						|
#define _dexecute_instinit \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	check_stack_on_dexecute; \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* YAPOR_SBA */
 | 
						|
#else /* FROZEN_STACKS */
 | 
						|
#define _dexecute_instinit \
 | 
						|
     CACHE_Y_AS_ENV(YREG); \
 | 
						|
      { \
 | 
						|
	PredEntry *pt0; \
 | 
						|
	CACHE_A1(); \
 | 
						|
	pt0 = (*_PREG)->u.pp.p; \
 | 
						|
	check_stack_on_dexecute; \
 | 
						|
	(*_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; \
 | 
						|
	GONEXT(); \
 | 
						|
      } \
 | 
						|
      ENDCACHE_Y_AS_ENV();
 | 
						|
#endif /* FROZEN_STACKS */
 | 
						|
#endif /* DEPTH_LIMIT */
 | 
						|
#endif /* NO_CHECKING */
 | 
						|
#endif /* LOW_LEVEL_TRACER */
 | 
						|
 | 
						|
#ifdef DEPTH_LIMIT
 | 
						|
#define _allocate_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      (*_PREG) = NEXTOP((*_PREG), e); \
 | 
						|
      ENV_YREG[E_CP] = (CELL) (*_CPREG); \
 | 
						|
      ENV_YREG[E_E] = (CELL) ENV; \
 | 
						|
      ENV_YREG[E_DEPTH] = DEPTH; \
 | 
						|
      ENV = ENV_YREG; \
 | 
						|
      ENDCACHE_Y_AS_ENV(); \
 | 
						|
      GONEXT();
 | 
						|
#else /* DEPTH_LIMIT */
 | 
						|
#define _allocate_instinit \
 | 
						|
      CACHE_Y_AS_ENV(YREG); \
 | 
						|
      (*_PREG) = NEXTOP((*_PREG), e); \
 | 
						|
      ENV_YREG[E_CP] = (CELL) (*_CPREG); \
 | 
						|
      ENV_YREG[E_E] = (CELL) ENV; \
 | 
						|
      ENV = ENV_YREG; \
 | 
						|
      ENDCACHE_Y_AS_ENV(); \
 | 
						|
      GONEXT();
 | 
						|
#endif /* DEPTH_LIMIT */
 | 
						|
 | 
						|
#ifdef DEPTH_LIMIT
 | 
						|
#ifdef FROZEN_STACKS
 | 
						|
#ifdef YAPOR_SBA
 | 
						|
#ifdef NO_CHECKING
 | 
						|
#define _deallocate_instinit \
 | 
						|
      check_trail(TR); \
 | 
						|
      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]; \
 | 
						|
      DEPTH = ENV_YREG[E_DEPTH]; \
 | 
						|
      { \
 | 
						|
	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(); \
 | 
						|
      ENDCACHE_Y_AS_ENV(); \
 | 
						|
      GONEXT();
 | 
						|
#else /* NO_CHECKING */
 | 
						|
#define _deallocate_instinit \
 | 
						|
      check_trail(TR); \
 | 
						|
      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]; \
 | 
						|
      DEPTH = ENV_YREG[E_DEPTH]; \
 | 
						|
      { \
 | 
						|
	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(); \
 | 
						|
      check_stack_on_deallocate; \
 | 
						|
      ENDCACHE_Y_AS_ENV(); \
 | 
						|
      GONEXT();
 | 
						|
#endif /* NO_CHECKING */
 | 
						|
#else /* YAPOR_SBA */
 | 
						|
#ifdef NO_CHECKING
 | 
						|
#define _deallocate_instinit \
 | 
						|
      check_trail(TR); \
 | 
						|
      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]; \
 | 
						|
      DEPTH = ENV_YREG[E_DEPTH]; \
 | 
						|
      { \
 | 
						|
	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(); \
 | 
						|
      ENDCACHE_Y_AS_ENV(); \
 | 
						|
      GONEXT();
 | 
						|
#else /* NO_CHECKING */
 | 
						|
#define _deallocate_instinit \
 | 
						|
      check_trail(TR); \
 | 
						|
      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]; \
 | 
						|
      DEPTH = ENV_YREG[E_DEPTH]; \
 | 
						|
      { \
 | 
						|
	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(); \
 | 
						|
      check_stack_on_deallocate; \
 | 
						|
      ENDCACHE_Y_AS_ENV(); \
 | 
						|
      GONEXT();
 | 
						|
#endif /* NO_CHECKING */
 | 
						|
#endif /* YAPOR_SBA */
 | 
						|
#else /* FROZEN_STACKS */
 | 
						|
#ifdef NO_CHECKING
 | 
						|
#define _deallocate_instinit \
 | 
						|
      check_trail(TR); \
 | 
						|
      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]; \
 | 
						|
      DEPTH = ENV_YREG[E_DEPTH]; \
 | 
						|
      if (ENV_YREG > (CELL *) B) \
 | 
						|
	ENV_YREG = (CELL *) B; \
 | 
						|
      else \
 | 
						|
	ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
 | 
						|
      WRITEBACK_Y_AS_ENV(); \
 | 
						|
      ENDCACHE_Y_AS_ENV(); \
 | 
						|
      GONEXT();
 | 
						|
#else /* NO_CHECKING */
 | 
						|
#define _deallocate_instinit \
 | 
						|
      check_trail(TR); \
 | 
						|
      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]; \
 | 
						|
      DEPTH = ENV_YREG[E_DEPTH]; \
 | 
						|
      if (ENV_YREG > (CELL *) B) \
 | 
						|
	ENV_YREG = (CELL *) B; \
 | 
						|
      else \
 | 
						|
	ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
 | 
						|
      WRITEBACK_Y_AS_ENV(); \
 | 
						|
      check_stack_on_deallocate; \
 | 
						|
      ENDCACHE_Y_AS_ENV(); \
 | 
						|
      GONEXT();
 | 
						|
#endif /* NO_CHECKING */
 | 
						|
#endif /* FROZEN_STACKS */
 | 
						|
#else /* DEPTH_LIMIT */
 | 
						|
#ifdef FROZEN_STACKS
 | 
						|
#ifdef YAPOR_SBA
 | 
						|
#ifdef NO_CHECKING
 | 
						|
#define _deallocate_instinit \
 | 
						|
      check_trail(TR); \
 | 
						|
      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]; \
 | 
						|
      { \
 | 
						|
	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(); \
 | 
						|
      ENDCACHE_Y_AS_ENV(); \
 | 
						|
      GONEXT();
 | 
						|
#else /* NO_CHECKING */
 | 
						|
#define _deallocate_instinit \
 | 
						|
      check_trail(TR); \
 | 
						|
      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]; \
 | 
						|
      { \
 | 
						|
	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(); \
 | 
						|
      check_stack_on_deallocate; \
 | 
						|
      ENDCACHE_Y_AS_ENV(); \
 | 
						|
      GONEXT();
 | 
						|
#endif /* NO_CHECKING */
 | 
						|
#else /* YAPOR_SBA */
 | 
						|
#ifdef NO_CHECKING
 | 
						|
#define _deallocate_instinit \
 | 
						|
      check_trail(TR); \
 | 
						|
      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]; \
 | 
						|
      { \
 | 
						|
	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(); \
 | 
						|
      ENDCACHE_Y_AS_ENV(); \
 | 
						|
      GONEXT();
 | 
						|
#else /* NO_CHECKING */
 | 
						|
#define _deallocate_instinit \
 | 
						|
      check_trail(TR); \
 | 
						|
      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]; \
 | 
						|
      { \
 | 
						|
	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(); \
 | 
						|
      check_stack_on_deallocate; \
 | 
						|
      ENDCACHE_Y_AS_ENV(); \
 | 
						|
      GONEXT();
 | 
						|
#endif /* NO_CHECKING */
 | 
						|
#endif /* YAPOR_SBA */
 | 
						|
#else /* FROZEN_STACKS */
 | 
						|
#ifdef NO_CHECKING
 | 
						|
#define _deallocate_instinit \
 | 
						|
      check_trail(TR); \
 | 
						|
      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]; \
 | 
						|
      if (ENV_YREG > (CELL *) B) \
 | 
						|
	ENV_YREG = (CELL *) B; \
 | 
						|
      else \
 | 
						|
	ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
 | 
						|
      WRITEBACK_Y_AS_ENV(); \
 | 
						|
      ENDCACHE_Y_AS_ENV(); \
 | 
						|
      GONEXT();
 | 
						|
#else /* NO_CHECKING */
 | 
						|
#define _deallocate_instinit \
 | 
						|
      check_trail(TR); \
 | 
						|
      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]; \
 | 
						|
      if (ENV_YREG > (CELL *) B) \
 | 
						|
	ENV_YREG = (CELL *) B; \
 | 
						|
      else \
 | 
						|
	ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
 | 
						|
      WRITEBACK_Y_AS_ENV(); \
 | 
						|
      check_stack_on_deallocate; \
 | 
						|
      ENDCACHE_Y_AS_ENV(); \
 | 
						|
      GONEXT();
 | 
						|
#endif /* NO_CHECKING */
 | 
						|
#endif /* FROZEN_STACKS */
 | 
						|
#endif /* DEPTH_LIMIT */
 |