YENV may be an HW register (breaks some tabling code)

All YAAM instructions are now brackedted, so Op introduced an { and EndOp introduces an }. This is because Ricardo assumes that.
Fix attvars when COROUTING is undefined.


git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1516 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
vsc
2006-01-17 14:10:42 +00:00
parent 92f6922f40
commit 9618c90255
14 changed files with 482 additions and 420 deletions

View File

@@ -5,7 +5,7 @@
Copyright: R. Rocha and NCC - University of Porto, Portugal
File: tab.insts.i
version: $Id: tab.insts.i,v 1.21 2005-11-15 00:50:49 vsc Exp $
version: $Id: tab.insts.i,v 1.22 2006-01-17 14:10:41 vsc Exp $
**********************************************************************/
@@ -342,6 +342,7 @@
code_ap = PREG->u.ld.d;
PREG = NEXTOP(PREG,ld);
}
PREFETCH_OP(PREG);
restore_generator_node(SgFr_arity(sg_fr), code_ap);
YENV = (CELL *) PROTECT_FROZEN_B(B);
set_cut(YENV, B->cp_b);
@@ -349,6 +350,10 @@
allocate_environment();
GONext();
}
#else
PREG = PREG->u.ld.d;
PREFETCH_OP(PREG);
GONext();
#endif /* INCOMPLETE_TABLING */
ENDPBOp();
@@ -357,10 +362,13 @@
PBOp(table_try_single, ld)
tab_ent_ptr tab_ent;
sg_fr_ptr sg_fr;
check_trail(TR);
tab_ent = PREG->u.ld.te;
sg_fr = subgoal_search(PREG, &YENV);
YENV2MEM;
sg_fr = subgoal_search(PREG, YENV_ADDRESS);
MEM2YENV;
LOCK(SgFr_lock(sg_fr));
if (SgFr_state(sg_fr) == ready) {
/* subgoal new */
@@ -470,7 +478,9 @@
check_trail(TR);
tab_ent = PREG->u.ld.te;
sg_fr = subgoal_search(PREG, &YENV);
YENV2MEM;
sg_fr = subgoal_search(PREG, YENV_ADDRESS);
MEM2YENV;
LOCK(SgFr_lock(sg_fr));
if (SgFr_state(sg_fr) == ready) {
/* subgoal new */
@@ -580,7 +590,9 @@
check_trail(TR);
tab_ent = PREG->u.ld.te;
sg_fr = subgoal_search(PREG, &YENV);
YENV2MEM;
sg_fr = subgoal_search(PREG, YENV_ADDRESS);
MEM2YENV;
LOCK(SgFr_lock(sg_fr));
if (SgFr_state(sg_fr) == ready) {
/* subgoal new */

View File

@@ -5,7 +5,7 @@
Copyright: R. Rocha and NCC - University of Porto, Portugal
File: tab.tries.insts.i
version: $Id: tab.tries.insts.i,v 1.10 2005-07-06 19:34:11 ricroc Exp $
version: $Id: tab.tries.insts.i,v 1.11 2006-01-17 14:10:41 vsc Exp $
**********************************************************************/
@@ -996,19 +996,19 @@
ENDPBOp();
PBOp(trie_try_float, e)
Yap_Error(INTERNAL_ERROR, TermNil, "invalid instruction (trie_try_float)");
ENDPBOp();
BOp(trie_try_float, e)
Yap_Error(INTERNAL_ERROR, TermNil, "invalid instruction (trie_try_float)");
ENDBOp();
PBOp(trie_retry_float, e)
BOp(trie_retry_float, e)
Yap_Error(INTERNAL_ERROR, TermNil, "invalid instruction (trie_retry_float)");
ENDPBOp();
ENDBOp();
PBOp(trie_trust_float, e)
BOp(trie_trust_float, e)
Yap_Error(INTERNAL_ERROR, TermNil, "invalid instruction (trie_trust_float)");
ENDPBOp();
ENDBOp();
PBOp(trie_do_long, e)
@@ -1024,16 +1024,16 @@
ENDPBOp();
PBOp(trie_try_long, e)
BOp(trie_try_long, e)
Yap_Error(INTERNAL_ERROR, TermNil, "invalid instruction (trie_try_long)");
ENDPBOp();
ENDBOp();
PBOp(trie_retry_long, e)
BOp(trie_retry_long, e)
Yap_Error(INTERNAL_ERROR, TermNil, "invalid instruction (trie_retry_long)");
ENDPBOp();
ENDBOp();
PBOp(trie_trust_long, e)
BOp(trie_trust_long, e)
Yap_Error(INTERNAL_ERROR, TermNil, "invalid instruction (trie_trust_long)");
ENDPBOp();
ENDBOp();