diff --git a/C/cdmgr.c b/C/cdmgr.c index 355cf9c2a..c263e47a6 100644 --- a/C/cdmgr.c +++ b/C/cdmgr.c @@ -11,8 +11,12 @@ * File: cdmgr.c * * comments: Code manager * * * -* Last rev: $Date: 2007-01-25 22:11:55 $,$Author: vsc $ * +* Last rev: $Date: 2007-03-26 15:18:43 $,$Author: vsc $ * * $Log: not supported by cvs2svn $ +* Revision 1.204 2007/01/25 22:11:55 vsc +* all/3 should fail on no solutions. +* get rid of annoying gcc complaints. +* * Revision 1.203 2007/01/24 10:01:38 vsc * fix matrix mess * @@ -1970,7 +1974,7 @@ addclause(Term t, yamop *cp, int mode, Term mod, Term *t4ref) } else { StaticClause *clp = ClauseCodeToStaticClause(cp); clp->ClFlags |= StaticMask; - if (is_fact(t)) { + if (is_fact(t) && !(p->PredFlags & TabledPredFlag)) { clp->ClFlags |= FactMask; clp->usc.ClPred = p; } @@ -5364,9 +5368,15 @@ fetch_next_static_clause(PredEntry *pe, yamop *i_code, Term th, Term tb, Term tr } } rtn = Yap_MkStaticRefTerm(cl); - return(Yap_unify(th, ArgOfTerm(1,t)) && - Yap_unify(tb, ArgOfTerm(2,t)) && - Yap_unify(tr, rtn)); + if (!IsApplTerm(t) || FunctorOfTerm(t) != FunctorAssert) { + return(Yap_unify(th, t) && + Yap_unify(tb, MkAtomTerm(AtomTrue)) && + Yap_unify(tr, rtn)); + } else { + return(Yap_unify(th, ArgOfTerm(1,t)) && + Yap_unify(tb, ArgOfTerm(2,t)) && + Yap_unify(tr, rtn)); + } } } diff --git a/C/compiler.c b/C/compiler.c index 062675e5b..1490cbb22 100644 --- a/C/compiler.c +++ b/C/compiler.c @@ -11,8 +11,11 @@ * File: compiler.c * * comments: Clause compiler * * * -* Last rev: $Date: 2006-11-06 18:35:03 $,$Author: vsc $ * +* Last rev: $Date: 2007-03-26 15:18:43 $,$Author: vsc $ * * $Log: not supported by cvs2svn $ +* Revision 1.82 2006/11/06 18:35:03 vsc +* 1estranha +* * Revision 1.81 2006/10/11 15:08:03 vsc * fix bb entries * comment development code for timestamp overflow. @@ -3225,7 +3228,7 @@ Yap_cclause(volatile Term inp_clause, int NOfArgs, int mod, volatile Term src) #endif /* phase 3: assemble code */ - acode = Yap_assemble(ASSEMBLING_CLAUSE, src, cglobs.cint.CurrentPred, (cglobs.is_a_fact && !cglobs.hasdbrefs), &cglobs.cint); + acode = Yap_assemble(ASSEMBLING_CLAUSE, src, cglobs.cint.CurrentPred, (cglobs.is_a_fact && !cglobs.hasdbrefs && !(cglobs.cint.CurrentPred->PredFlags & TabledPredFlag)), &cglobs.cint); /* check first if there was space for us */ if (acode == NULL) { return NULL; diff --git a/C/index.c b/C/index.c index e94a5e47b..7000acaa2 100644 --- a/C/index.c +++ b/C/index.c @@ -11,8 +11,11 @@ * File: index.c * * comments: Indexing a Prolog predicate * * * -* Last rev: $Date: 2007-03-21 23:23:46 $,$Author: vsc $ * +* Last rev: $Date: 2007-03-26 15:18:43 $,$Author: vsc $ * * $Log: not supported by cvs2svn $ +* Revision 1.183 2007/03/21 23:23:46 vsc +* fix excessive trail cleaning in gc tr overflow. +* * Revision 1.182 2007/01/28 14:26:36 vsc * WIN32 support * @@ -6457,15 +6460,18 @@ static StaticClause * static_clause(yamop *ipc, PredEntry *ap) { StaticClause *c; - CELL *p = (CELL *)ipc; + CELL *p; if (ipc == FAILCODE) return NULL; if (ap->PredFlags & MegaClausePredFlag) return (StaticClause *)ipc; + if (ap->PredFlags & TabledPredFlag) + ipc = PREVOP(ipc, ld); + p = (CELL *)ipc; while ((c = ClauseCodeToStaticClause(p))) { UInt fls = c->ClFlags & ~HasBlobsMask; - if (fls == StaticMask) { + if ((fls & StaticMask) == StaticMask) { if (ap->PredFlags & SourcePredFlag) { if ((char *)c->usc.ClSource < (char *)c+c->ClSize && valid_instructions(ipc, c->ClCode)) diff --git a/changes-5.1.html b/changes-5.1.html index d60cfe0a5..fd3c9f531 100644 --- a/changes-5.1.html +++ b/changes-5.1.html @@ -16,6 +16,7 @@

Yap-5.1.2: