From 01a088bd549fd8bbe8acc3877656bf8dac8a268f Mon Sep 17 00:00:00 2001 From: vsc Date: Wed, 22 Mar 2006 16:14:20 +0000 Subject: [PATCH] don't be too eager at throwing indexing code for static predicates away. git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1573 b08c6af1-5177-4d33-ba66-4b1c6b8b522a --- C/cdmgr.c | 21 ++++++++++++++++++--- C/init.c | 4 ---- changes-5.1.html | 2 ++ 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/C/cdmgr.c b/C/cdmgr.c index a4520ba63..877f75889 100644 --- a/C/cdmgr.c +++ b/C/cdmgr.c @@ -11,8 +11,11 @@ * File: cdmgr.c * * comments: Code manager * * * -* Last rev: $Date: 2006-03-21 17:11:39 $,$Author: vsc $ * +* Last rev: $Date: 2006-03-22 16:14:20 $,$Author: vsc $ * * $Log: not supported by cvs2svn $ +* Revision 1.179 2006/03/21 17:11:39 vsc +* prevent breakage +* * Revision 1.178 2006/03/20 19:51:43 vsc * fix indexing and tabling bugs * @@ -371,6 +374,9 @@ PredForChoicePt(yamop *p_code) { switch(opnum) { case _Nstop: return NULL; + case _retry_me: + case _trust_me: + return p_code->u.ld.p; #ifdef TABLING case _trie_retry_null: case _trie_trust_null: @@ -970,8 +976,17 @@ kill_static_child_indxs(StaticIndex *indx) kill_static_child_indxs(cl); cl = next; } - Yap_InformOfRemoval((CODEADDR)indx); - Yap_FreeCodeSpace((char *)indx); + if (static_in_use(indx->ClPred, TRUE)) { + DeadClause *dcl = (DeadClause *)indx; + UInt sz = indx->ClSize; + dcl->NextCl = DeadClauses; + dcl->ClFlags = 0; + dcl->ClSize = sz; + DeadClauses = dcl; + } else { + Yap_InformOfRemoval((CODEADDR)indx); + Yap_FreeCodeSpace((char *)indx); + } } static void diff --git a/C/init.c b/C/init.c index 8f21ee858..9ea432d2a 100644 --- a/C/init.c +++ b/C/init.c @@ -724,14 +724,10 @@ Yap_InitCPredBack(char *Name, unsigned long int Arity, else { StaticClause *cl; yamop *code = ((StaticClause *)NULL)->ClCode; -#ifdef CUT_C if (flags & UserCPredFlag) pe->PredFlags = UserCPredFlag | CompiledPredFlag | StandardPredFlag; else pe->PredFlags = CompiledPredFlag | StandardPredFlag; -#else /* BUG ?*/ - pe->PredFlags = CompiledPredFlag | StandardPredFlag; -#endif /*CUT_C*/ #ifdef YAPOR pe->PredFlags |= SequentialPredFlag; diff --git a/changes-5.1.html b/changes-5.1.html index 0da0b2385..546983da0 100644 --- a/changes-5.1.html +++ b/changes-5.1.html @@ -16,6 +16,8 @@

Yap-5.1.0: