further optimisations to execute a,b.
cleanups. git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@176 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
		
							
								
								
									
										123
									
								
								C/absmi.c
									
									
									
									
									
								
							
							
						
						
									
										123
									
								
								C/absmi.c
									
									
									
									
									
								
							@@ -11380,6 +11380,129 @@ absmi(int inp)
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
      ENDBOp();
 | 
					      ENDBOp();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      BOp(p_last_execute_within, sla);
 | 
				
			||||||
 | 
					      { 
 | 
				
			||||||
 | 
						PredEntry *pen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						CACHE_Y_AS_ENV(Y);
 | 
				
			||||||
 | 
						BEGD(d0);
 | 
				
			||||||
 | 
						d0 = ARG1;
 | 
				
			||||||
 | 
						if (PredGoalExpansion->OpcodeOfPred != UNDEF_OPCODE) {
 | 
				
			||||||
 | 
						  d0 = ExecuteCallMetaCall();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						deref_head(d0, last_execute_within_unk);
 | 
				
			||||||
 | 
					      last_execute_within_nvar:
 | 
				
			||||||
 | 
						if (IsApplTerm(d0)) {
 | 
				
			||||||
 | 
						  Functor f = FunctorOfTerm(d0);
 | 
				
			||||||
 | 
						  if (IsExtensionFunctor(f)) {
 | 
				
			||||||
 | 
						    d0 = ExecuteCallMetaCall();
 | 
				
			||||||
 | 
						    goto last_execute_within_nvar;
 | 
				
			||||||
 | 
						  }
 | 
				
			||||||
 | 
						  pen = RepPredProp(PredPropByFunc(f, *CurrentModulePtr));
 | 
				
			||||||
 | 
						  if (pen->PredFlags & MetaPredFlag) {
 | 
				
			||||||
 | 
						    d0 = ExecuteCallMetaCall();
 | 
				
			||||||
 | 
						    goto last_execute_within_nvar;
 | 
				
			||||||
 | 
						  }
 | 
				
			||||||
 | 
						  BEGP(pt1);
 | 
				
			||||||
 | 
						  pt1 = RepAppl(d0);
 | 
				
			||||||
 | 
						  BEGD(d2);
 | 
				
			||||||
 | 
						  for (d2 = ArityOfFunctor(f); d2; d2--) {
 | 
				
			||||||
 | 
					#if SBA
 | 
				
			||||||
 | 
						    BEGD(d1);
 | 
				
			||||||
 | 
						    d1 = pt1[d2];
 | 
				
			||||||
 | 
						    if (d1 == 0)
 | 
				
			||||||
 | 
						      XREGS[d2] = (CELL)(pt1+d2);
 | 
				
			||||||
 | 
						    else
 | 
				
			||||||
 | 
						      XREGS[d2] = d1;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						    XREGS[d2] = pt1[d2];
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						  }
 | 
				
			||||||
 | 
						  ENDD(d2);
 | 
				
			||||||
 | 
						  ENDP(pt1);
 | 
				
			||||||
 | 
						  CACHE_A1();
 | 
				
			||||||
 | 
						} else if (IsAtomTerm(d0)) {
 | 
				
			||||||
 | 
						  if (AtomOfTerm(d0) == AtomCut) {
 | 
				
			||||||
 | 
						    choiceptr pt0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						    pt0 = (choiceptr)(ENV[E_CB]);
 | 
				
			||||||
 | 
						    if (TopB != NULL && YOUNGER_CP(TopB,pt0)) {  
 | 
				
			||||||
 | 
						      pt0 = TopB;
 | 
				
			||||||
 | 
						      if (DelayedB == NULL || YOUNGER_CP(pt0,DelayedB))
 | 
				
			||||||
 | 
							DelayedB = pt0;
 | 
				
			||||||
 | 
						    }
 | 
				
			||||||
 | 
						    /* find where to cut to */
 | 
				
			||||||
 | 
						    if (SHOULD_CUT_UP_TO(B,pt0)) {
 | 
				
			||||||
 | 
					#ifdef YAPOR
 | 
				
			||||||
 | 
						      /* Wow, we're gonna cut!!! */
 | 
				
			||||||
 | 
						      CUT_prune_to(pt0);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						      /* Wow, we're gonna cut!!! */
 | 
				
			||||||
 | 
						      B = pt0;
 | 
				
			||||||
 | 
					#endif /* YAPOR */
 | 
				
			||||||
 | 
						      HB = PROTECT_FROZEN_H(B);
 | 
				
			||||||
 | 
						    }
 | 
				
			||||||
 | 
						    PREG = NEXTOP(PREG, sla);
 | 
				
			||||||
 | 
						    JMPNext();
 | 
				
			||||||
 | 
						  }else
 | 
				
			||||||
 | 
						    pen = RepPredProp(PredPropByAtom(AtomOfTerm(d0), *CurrentModulePtr));
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
						  d0 = ExecuteCallMetaCall();
 | 
				
			||||||
 | 
						  goto last_execute_within_nvar;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ALWAYS_LOOKAHEAD(pen->OpcodeOfPred);
 | 
				
			||||||
 | 
						BEGD(d0);
 | 
				
			||||||
 | 
						d0 = ENV[E_CB];
 | 
				
			||||||
 | 
					#ifndef NO_CHECKING
 | 
				
			||||||
 | 
						check_stack(NoStackPWLExec, H);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						PREG = (yamop *) pen->CodeOfPred;
 | 
				
			||||||
 | 
						/* do deallocate */
 | 
				
			||||||
 | 
						CPREG = (yamop *) E_Y[E_CP];
 | 
				
			||||||
 | 
						E_Y = ENV = (CELL *) E_Y[E_E];
 | 
				
			||||||
 | 
					#ifdef FROZEN_REGS
 | 
				
			||||||
 | 
						{ 
 | 
				
			||||||
 | 
						  choiceptr top_b = PROTECT_FROZEN_B(B);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef SBA
 | 
				
			||||||
 | 
						  if (E_Y > (CELL *) top_b || E_Y < H) E_Y = (CELL *) top_b;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						  if (E_Y > (CELL *) top_b) E_Y = (CELL *) top_b;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						  else E_Y = (CELL *)((CELL)E_Y + ENV_Size(CPREG));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						if (E_Y > (CELL *)B) {
 | 
				
			||||||
 | 
						  E_Y = (CELL *)B;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else {
 | 
				
			||||||
 | 
						  E_Y = (CELL *) ((CELL) E_Y + ENV_Size(CPREG));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					#endif /* FROZEN_REGS */
 | 
				
			||||||
 | 
						WRITEBACK_Y_AS_ENV();
 | 
				
			||||||
 | 
						/* setup GB */
 | 
				
			||||||
 | 
						E_Y[E_CB] = d0;
 | 
				
			||||||
 | 
						ENDD(d0);
 | 
				
			||||||
 | 
						ALWAYS_GONext();
 | 
				
			||||||
 | 
						ALWAYS_END_PREFETCH();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						BEGP(pt1);
 | 
				
			||||||
 | 
						deref_body(d0, pt1, last_execute_within_unk, last_execute_within_nvar);
 | 
				
			||||||
 | 
						d0 = ExecuteCallMetaCall();
 | 
				
			||||||
 | 
						goto last_execute_within_nvar;
 | 
				
			||||||
 | 
						ENDP(pt1);
 | 
				
			||||||
 | 
						ENDD(d0);
 | 
				
			||||||
 | 
						ENDCACHE_Y_AS_ENV();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    NoStackPWLExec:
 | 
				
			||||||
 | 
						/* on X86 machines S will not actually be holding the pointer to pred */
 | 
				
			||||||
 | 
						SREG = (CELL *) pen;
 | 
				
			||||||
 | 
						goto NoStackCallGotS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      ENDBOp();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !USE_THREADED_CODE
 | 
					#if !USE_THREADED_CODE
 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
      PREG = Error(SYSTEM_ERROR, MkIntegerTerm(opcode), "trying to execute invalid YAAM instruction %d", opcode);
 | 
					      PREG = Error(SYSTEM_ERROR, MkIntegerTerm(opcode), "trying to execute invalid YAAM instruction %d", opcode);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -772,6 +772,8 @@ a_p(op_numbers opcode)
 | 
				
			|||||||
	    code_p->opc = emit_op(_p_execute);
 | 
						    code_p->opc = emit_op(_p_execute);
 | 
				
			||||||
	  else if (RepPredProp(fe)->FunctorOfPred == FunctorExecuteWithin)
 | 
						  else if (RepPredProp(fe)->FunctorOfPred == FunctorExecuteWithin)
 | 
				
			||||||
	    code_p->opc = emit_op(_p_execute_within);
 | 
						    code_p->opc = emit_op(_p_execute_within);
 | 
				
			||||||
 | 
						  else if (RepPredProp(fe)->FunctorOfPred == FunctorLastExecuteWithin)
 | 
				
			||||||
 | 
						    code_p->opc = emit_op(_p_last_execute_within);
 | 
				
			||||||
	  else
 | 
						  else
 | 
				
			||||||
	    code_p->opc = emit_op(_call_cpred);
 | 
						    code_p->opc = emit_op(_call_cpred);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								C/exec.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								C/exec.c
									
									
									
									
									
								
							@@ -64,7 +64,6 @@ inline static Int
 | 
				
			|||||||
CallMetaCall(void) {
 | 
					CallMetaCall(void) {
 | 
				
			||||||
  ARG2 = current_cp_as_integer(); /* p_save_cp */
 | 
					  ARG2 = current_cp_as_integer(); /* p_save_cp */
 | 
				
			||||||
  ARG3 = ARG1;
 | 
					  ARG3 = ARG1;
 | 
				
			||||||
  WRITE_LOCK(PredMetaCall->PRWLock);
 | 
					 | 
				
			||||||
  return (CallPredicate(PredMetaCall, B));
 | 
					  return (CallPredicate(PredMetaCall, B));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -195,7 +194,6 @@ EnterCreepMode(PredEntry *pen) {
 | 
				
			|||||||
  ARG1 = MkPairTerm(Module_Name((CODEADDR)(pen)),ARG1);
 | 
					  ARG1 = MkPairTerm(Module_Name((CODEADDR)(pen)),ARG1);
 | 
				
			||||||
  CreepFlag = CalculateStackGap();
 | 
					  CreepFlag = CalculateStackGap();
 | 
				
			||||||
  P_before_spy = P;
 | 
					  P_before_spy = P;
 | 
				
			||||||
  WRITE_LOCK(PredSpy->PRWLock);
 | 
					 | 
				
			||||||
  return (CallPredicate(PredSpy, B));
 | 
					  return (CallPredicate(PredSpy, B));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -291,7 +289,6 @@ p_execute_in_mod(void)
 | 
				
			|||||||
inline static Int
 | 
					inline static Int
 | 
				
			||||||
CallMetaCallWithin(void)
 | 
					CallMetaCallWithin(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  WRITE_LOCK(PredMetaCall->PRWLock);
 | 
					 | 
				
			||||||
  return (CallPredicate(PredMetaCall, B));
 | 
					  return (CallPredicate(PredMetaCall, B));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1330,6 +1327,7 @@ InitExecFs(void)
 | 
				
			|||||||
  InitCPred("$execute_in_mod", 2, p_execute_in_mod, 0);
 | 
					  InitCPred("$execute_in_mod", 2, p_execute_in_mod, 0);
 | 
				
			||||||
  InitCPred("$execute_within", 3, p_execute_within, 0);
 | 
					  InitCPred("$execute_within", 3, p_execute_within, 0);
 | 
				
			||||||
  InitCPred("$execute_within", 1, p_execute_within2, 0);
 | 
					  InitCPred("$execute_within", 1, p_execute_within2, 0);
 | 
				
			||||||
 | 
					  InitCPred("$last_execute_within", 1, p_execute_within2, 0);
 | 
				
			||||||
  InitCPred("$execute", 2, p_at_execute, 0);
 | 
					  InitCPred("$execute", 2, p_at_execute, 0);
 | 
				
			||||||
  InitCPred("$call_with_args", 1, p_execute_0, 0);
 | 
					  InitCPred("$call_with_args", 1, p_execute_0, 0);
 | 
				
			||||||
  InitCPred("$call_with_args", 2, p_execute_1, 0);
 | 
					  InitCPred("$call_with_args", 2, p_execute_1, 0);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										3
									
								
								C/init.c
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								C/init.c
									
									
									
									
									
								
							@@ -722,7 +722,7 @@ InitFlags(void)
 | 
				
			|||||||
  yap_flags[SOURCE_MODE_FLAG] = FALSE;
 | 
					  yap_flags[SOURCE_MODE_FLAG] = FALSE;
 | 
				
			||||||
  yap_flags[CHARACTER_ESCAPE_FLAG] = ISO_CHARACTER_ESCAPES;
 | 
					  yap_flags[CHARACTER_ESCAPE_FLAG] = ISO_CHARACTER_ESCAPES;
 | 
				
			||||||
  yap_flags[WRITE_QUOTED_STRING_FLAG] = FALSE;
 | 
					  yap_flags[WRITE_QUOTED_STRING_FLAG] = FALSE;
 | 
				
			||||||
#if (defined(YAPOR) || defined(THREADS)) && PURE_YAPOR
 | 
					#if (defined(YAPOR) || defined(THREADS)) && PUREe_YAPOR
 | 
				
			||||||
  yap_flags[ALLOW_ASSERTING_STATIC_FLAG] = FALSE;
 | 
					  yap_flags[ALLOW_ASSERTING_STATIC_FLAG] = FALSE;
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
  yap_flags[ALLOW_ASSERTING_STATIC_FLAG] = TRUE;
 | 
					  yap_flags[ALLOW_ASSERTING_STATIC_FLAG] = TRUE;
 | 
				
			||||||
@@ -953,6 +953,7 @@ InitCodes(void)
 | 
				
			|||||||
  heap_regs->functor_g_number = MkFunctor(LookupAtom("number"), 1);
 | 
					  heap_regs->functor_g_number = MkFunctor(LookupAtom("number"), 1);
 | 
				
			||||||
  heap_regs->functor_g_primitive = MkFunctor(LookupAtom("primitive"), 1);
 | 
					  heap_regs->functor_g_primitive = MkFunctor(LookupAtom("primitive"), 1);
 | 
				
			||||||
  heap_regs->functor_g_var = MkFunctor(AtomGVar, 1);
 | 
					  heap_regs->functor_g_var = MkFunctor(AtomGVar, 1);
 | 
				
			||||||
 | 
					  heap_regs->functor_last_execute_within = MkFunctor(LookupAtom("$last_execute_within"), 1);
 | 
				
			||||||
  heap_regs->functor_list = MkFunctor(LookupAtom("."), 2);
 | 
					  heap_regs->functor_list = MkFunctor(LookupAtom("."), 2);
 | 
				
			||||||
  heap_regs->functor_module = MkFunctor(LookupAtom(":"), 2);
 | 
					  heap_regs->functor_module = MkFunctor(LookupAtom(":"), 2);
 | 
				
			||||||
#ifdef MULTI_ASSIGNMENT_VARIABLES
 | 
					#ifdef MULTI_ASSIGNMENT_VARIABLES
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								C/save.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								C/save.c
									
									
									
									
									
								
							@@ -1081,6 +1081,7 @@ restore_codes(void)
 | 
				
			|||||||
  heap_regs->functor_g_number = FuncAdjust(heap_regs->functor_g_number);
 | 
					  heap_regs->functor_g_number = FuncAdjust(heap_regs->functor_g_number);
 | 
				
			||||||
  heap_regs->functor_g_primitive = FuncAdjust(heap_regs->functor_g_primitive);
 | 
					  heap_regs->functor_g_primitive = FuncAdjust(heap_regs->functor_g_primitive);
 | 
				
			||||||
  heap_regs->functor_g_var = FuncAdjust(heap_regs->functor_g_var);
 | 
					  heap_regs->functor_g_var = FuncAdjust(heap_regs->functor_g_var);
 | 
				
			||||||
 | 
					  heap_regs->functor_last_execute_within = FuncAdjust(heap_regs->functor_last_execute_within);
 | 
				
			||||||
  heap_regs->functor_list = FuncAdjust(heap_regs->functor_list);
 | 
					  heap_regs->functor_list = FuncAdjust(heap_regs->functor_list);
 | 
				
			||||||
  heap_regs->functor_module = FuncAdjust(heap_regs->functor_module);
 | 
					  heap_regs->functor_module = FuncAdjust(heap_regs->functor_module);
 | 
				
			||||||
#ifdef MULTI_ASSIGNMENT_VARIABLES
 | 
					#ifdef MULTI_ASSIGNMENT_VARIABLES
 | 
				
			||||||
@@ -1731,6 +1732,7 @@ RestoreClause(Clause *Cl)
 | 
				
			|||||||
    case _or_else:
 | 
					    case _or_else:
 | 
				
			||||||
    case _p_execute:
 | 
					    case _p_execute:
 | 
				
			||||||
    case _p_execute_within:
 | 
					    case _p_execute_within:
 | 
				
			||||||
 | 
					    case _p_last_execute_within:
 | 
				
			||||||
#ifdef YAPOR
 | 
					#ifdef YAPOR
 | 
				
			||||||
    case _or_last:
 | 
					    case _or_last:
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								H/Heap.h
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								H/Heap.h
									
									
									
									
									
								
							@@ -10,7 +10,7 @@
 | 
				
			|||||||
* File:		Heap.h         						 *
 | 
					* File:		Heap.h         						 *
 | 
				
			||||||
* mods:									 *
 | 
					* mods:									 *
 | 
				
			||||||
* comments:	Heap Init Structure					 *
 | 
					* comments:	Heap Init Structure					 *
 | 
				
			||||||
* version:      $Id: Heap.h,v 1.11 2001-10-30 20:35:19 vsc Exp $	 *
 | 
					* version:      $Id: Heap.h,v 1.12 2001-10-31 20:16:48 vsc Exp $	 *
 | 
				
			||||||
*************************************************************************/
 | 
					*************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* information that can be stored in Code Space */
 | 
					/* information that can be stored in Code Space */
 | 
				
			||||||
@@ -237,6 +237,7 @@ typedef struct various_codes {
 | 
				
			|||||||
    functor_g_number,
 | 
					    functor_g_number,
 | 
				
			||||||
    functor_g_primitive,
 | 
					    functor_g_primitive,
 | 
				
			||||||
    functor_g_var,
 | 
					    functor_g_var,
 | 
				
			||||||
 | 
					    functor_last_execute_within,
 | 
				
			||||||
    functor_list,
 | 
					    functor_list,
 | 
				
			||||||
    functor_module,
 | 
					    functor_module,
 | 
				
			||||||
#ifdef MULTI_ASSIGNMENT_VARIABLES
 | 
					#ifdef MULTI_ASSIGNMENT_VARIABLES
 | 
				
			||||||
@@ -426,6 +427,7 @@ typedef struct various_codes {
 | 
				
			|||||||
#define  FunctorGNumber           heap_regs->functor_g_number
 | 
					#define  FunctorGNumber           heap_regs->functor_g_number
 | 
				
			||||||
#define  FunctorGPrimitive        heap_regs->functor_g_primitive
 | 
					#define  FunctorGPrimitive        heap_regs->functor_g_primitive
 | 
				
			||||||
#define  FunctorGVar              heap_regs->functor_g_var
 | 
					#define  FunctorGVar              heap_regs->functor_g_var
 | 
				
			||||||
 | 
					#define  FunctorLastExecuteWithin     heap_regs->functor_last_execute_within
 | 
				
			||||||
#define  FunctorList              heap_regs->functor_list
 | 
					#define  FunctorList              heap_regs->functor_list
 | 
				
			||||||
#define  FunctorModule            heap_regs->functor_module
 | 
					#define  FunctorModule            heap_regs->functor_module
 | 
				
			||||||
#ifdef MULTI_ASSIGNMENT_VARIABLES
 | 
					#ifdef MULTI_ASSIGNMENT_VARIABLES
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -355,5 +355,6 @@
 | 
				
			|||||||
    OPCODE(p_func2f_yx             ,yxx),
 | 
					    OPCODE(p_func2f_yx             ,yxx),
 | 
				
			||||||
    OPCODE(p_func2f_yy             ,yyx),
 | 
					    OPCODE(p_func2f_yy             ,yyx),
 | 
				
			||||||
    OPCODE(p_execute               ,sla),
 | 
					    OPCODE(p_execute               ,sla),
 | 
				
			||||||
    OPCODE(p_execute_within        ,sla)
 | 
					    OPCODE(p_execute_within        ,sla),
 | 
				
			||||||
 | 
					    OPCODE(p_last_execute_within   ,sla)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -151,7 +151,7 @@ int  STD_PROTO(iequ_complex, (CELL *, CELL *,CELL *));
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#ifdef ANALYST
 | 
					#ifdef ANALYST
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static char *op_names[_p_execute_within + 1] =
 | 
					static char *op_names[_std_top + 1] =
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#define OPCODE(OP,TYPE) #OP
 | 
					#define OPCODE(OP,TYPE) #OP
 | 
				
			||||||
#include "YapOpcodes.h"
 | 
					#include "YapOpcodes.h"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -54,7 +54,7 @@ typedef enum {
 | 
				
			|||||||
} op_numbers;
 | 
					} op_numbers;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define _std_top	_p_execute_within
 | 
					#define _std_top	_p_last_execute_within
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef enum {
 | 
					typedef enum {
 | 
				
			||||||
	_atom,
 | 
						_atom,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -643,7 +643,7 @@ incore(G) :- '$execute'(G).
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
','(A,B) :-
 | 
					','(A,B) :-
 | 
				
			||||||
	'$execute_within'(A),
 | 
						'$execute_within'(A),
 | 
				
			||||||
	'$execute_within'(B).
 | 
						'$last_execute_within'(B).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
';'(A,B) :-
 | 
					';'(A,B) :-
 | 
				
			||||||
	( '$execute_within'(A) ;
 | 
						( '$execute_within'(A) ;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user