improve notion of standadard predicate
This commit is contained in:
parent
5ea3fcd08f
commit
9b6bcdde16
2
C/exec.c
2
C/exec.c
@ -366,7 +366,7 @@ do_execute_n(Term t, Term mod, unsigned int n USES_REGS)
|
||||
CalculateStackGap( PASS_REGS1 );
|
||||
}
|
||||
t = copy_execn_to_heap(f, pt, n, arity, mod PASS_REGS);
|
||||
return CallMetaCall(t, mod PASS_REGS);
|
||||
return CallMetaCall(t, mod PASS_REGS);
|
||||
} else if (Yap_has_a_signal() &&
|
||||
!LOCAL_InterruptsDisabled) {
|
||||
return EnterCreepMode(copy_execn_to_heap(f, pt, n, arity, CurrentModule PASS_REGS), mod PASS_REGS);
|
||||
|
6
C/init.c
6
C/init.c
@ -479,6 +479,8 @@ update_flags_from_prolog(UInt flags, PredEntry *pe)
|
||||
flags |= UDIPredFlag;
|
||||
if (pe->PredFlags & ModuleTransparentPredFlag)
|
||||
flags |= ModuleTransparentPredFlag;
|
||||
if (pe->PredFlags & StandardPredFlag)
|
||||
flags |= StandardPredFlag;
|
||||
return flags;
|
||||
}
|
||||
|
||||
@ -685,7 +687,7 @@ Yap_InitCmpPred(const char *Name, UInt Arity, CmpPredicate cmp_code, pred_flags_
|
||||
}
|
||||
} else {
|
||||
Yap_ClauseSpace += sz;
|
||||
cl->ClFlags = StaticMask;
|
||||
cl->ClFlags = StaticMask|StandardPredFlag;
|
||||
cl->ClNext = NULL;
|
||||
cl->ClSize = sz;
|
||||
cl->usc.ClLine = Yap_source_line_no();
|
||||
@ -910,7 +912,7 @@ Yap_InitCPredBack_(const char *Name, UInt Arity,
|
||||
yamop *code = ((StaticClause *)NULL)->ClCode;
|
||||
UInt sz = (CELL)NEXTOP(NEXTOP(NEXTOP(NEXTOP(code,OtapFs),OtapFs),OtapFs),l);
|
||||
if (flags & UserCPredFlag)
|
||||
pe->PredFlags = UserCPredFlag | BackCPredFlag| CompiledPredFlag | StandardPredFlag | flags;
|
||||
pe->PredFlags = UserCPredFlag | BackCPredFlag| CompiledPredFlag | flags;
|
||||
else
|
||||
pe->PredFlags = CompiledPredFlag | StandardPredFlag | BackCPredFlag;
|
||||
|
||||
|
10
C/qlyr.c
10
C/qlyr.c
@ -58,7 +58,7 @@ qlyr_error[] = { "out of temporary space",
|
||||
"unknown YAAM opcode in saved space",
|
||||
"unknown data-base reference in saved space",
|
||||
"corrupted atom in saved space",
|
||||
"formatting mismatch in saved space",
|
||||
"formatting mismatch in saved space",
|
||||
"foreign predicate has different definition in saved space",
|
||||
"bad read" };
|
||||
|
||||
@ -1015,10 +1015,10 @@ read_pred(IOSTREAM *stream, Term mod) {
|
||||
if (ap->PredFlags & IndexedPredFlag) {
|
||||
Yap_RemoveIndexation(ap);
|
||||
}
|
||||
//if (ap->ArityOfPE && ap->ModuleOfPred != IDB_MODULE)
|
||||
// printf(" %s/%ld\n", NameOfFunctor(ap->FunctorOfPred)->StrOfAE, ap->ArityOfPE);
|
||||
//else if (ap->ModuleOfPred != IDB_MODULE)
|
||||
// printf(" %s/%ld\n", ((Atom)(ap->FunctorOfPred))->StrOfAE, ap->ArityOfPE);
|
||||
/* if (ap->ArityOfPE && ap->ModuleOfPred != IDB_MODULE) */
|
||||
/* printf(" %s/%ld %lx\n", NameOfFunctor(ap->FunctorOfPred)->StrOfAE, ap->ArityOfPE, flags); */
|
||||
/* else if (ap->ModuleOfPred != IDB_MODULE) */
|
||||
/* printf(" %s/%ld %lx\n", ((Atom)(ap->FunctorOfPred))->StrOfAE, ap->ArityOfPE, flags); */
|
||||
fl1 = flags & ((UInt)STATIC_PRED_FLAGS|(UInt)EXTRA_PRED_FLAGS);
|
||||
ap->PredFlags &= ~((UInt)STATIC_PRED_FLAGS|(UInt)EXTRA_PRED_FLAGS);
|
||||
ap->PredFlags |= fl1;
|
||||
|
@ -962,7 +962,7 @@ static Int cont_current_predicate(USES_REGS1) {
|
||||
if (!pp)
|
||||
cut_fail();
|
||||
else
|
||||
EXTRA_CBACK_ARG(4, 2) = MkAddressTerm(pp->NextPredOfModule);
|
||||
EXTRA_CBACK_ARG(4, 1) = MkAddressTerm(pp->NextPredOfModule);
|
||||
}
|
||||
if (pp->ModuleOfPred != IDB_MODULE) {
|
||||
f = pp->FunctorOfPred;
|
||||
|
2
H/qly.h
2
H/qly.h
@ -104,7 +104,7 @@ typedef enum {
|
||||
#define STATIC_PRED_FLAGS (SourcePredFlag|DynamicPredFlag|LogUpdatePredFlag|CompiledPredFlag|MultiFileFlag|TabledPredFlag|MegaClausePredFlag|CountPredFlag|ProfiledPredFlag|ThreadLocalPredFlag|AtomDBPredFlag|ModuleTransparentPredFlag|NumberDBPredFlag|MetaPredFlag|SyncPredFlag|BackCPredFlag)
|
||||
#define EXTRA_PRED_FLAGS (QuasiQuotationPredFlag|NoTracePredFlag|NoSpyPredFlag)
|
||||
|
||||
#define SYSTEM_PRED_FLAGS (BackCPredFlag|UserCPredFlag|CArgsPredFlag|AsmPredFlag|CPredFlag|BinaryPredFlag)
|
||||
#define SYSTEM_PRED_FLAGS (BackCPredFlag|UserCPredFlag|CArgsPredFlag|AsmPredFlag|CPredFlag|BinaryPredFlag|StandardPredFlag)
|
||||
|
||||
#define CHECK(F) { size_t r = (F); if (!r) return r; }
|
||||
#define RCHECK(F) if(!(F)) { QLYR_ERROR(MISMATCH); return; }
|
||||
|
Reference in New Issue
Block a user