fix clause to support new execute_cpred
This commit is contained in:
parent
83ebf097df
commit
84ad9adff0
32
C/cdmgr.c
32
C/cdmgr.c
@ -5044,12 +5044,18 @@ p_log_update_clause(void)
|
|||||||
PredEntry *pe;
|
PredEntry *pe;
|
||||||
Term t1 = Deref(ARG1);
|
Term t1 = Deref(ARG1);
|
||||||
Int ret;
|
Int ret;
|
||||||
|
yamop *new_cp;
|
||||||
|
|
||||||
|
if (P->opc == Yap_opcode(_execute_cpred)) {
|
||||||
|
new_cp = CP;
|
||||||
|
} else {
|
||||||
|
new_cp = P;
|
||||||
|
}
|
||||||
pe = get_pred(t1, Deref(ARG2), "clause/3");
|
pe = get_pred(t1, Deref(ARG2), "clause/3");
|
||||||
if (pe == NULL || EndOfPAEntr(pe))
|
if (pe == NULL || EndOfPAEntr(pe))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
LOCK(pe->PELock);
|
LOCK(pe->PELock);
|
||||||
ret = fetch_next_lu_clause(pe, pe->CodeOfPred, t1, ARG3, ARG4, P, TRUE);
|
ret = fetch_next_lu_clause(pe, pe->CodeOfPred, t1, ARG3, ARG4, new_cp, TRUE);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5183,12 +5189,18 @@ p_log_update_clause_erase(void)
|
|||||||
PredEntry *pe;
|
PredEntry *pe;
|
||||||
Term t1 = Deref(ARG1);
|
Term t1 = Deref(ARG1);
|
||||||
Int ret;
|
Int ret;
|
||||||
|
yamop *new_cp;
|
||||||
|
|
||||||
|
if (P->opc == Yap_opcode(_execute_cpred)) {
|
||||||
|
new_cp = CP;
|
||||||
|
} else {
|
||||||
|
new_cp = P;
|
||||||
|
}
|
||||||
pe = get_pred(t1, Deref(ARG2), "clause/3");
|
pe = get_pred(t1, Deref(ARG2), "clause/3");
|
||||||
if (pe == NULL || EndOfPAEntr(pe))
|
if (pe == NULL || EndOfPAEntr(pe))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
LOCK(pe->PELock);
|
LOCK(pe->PELock);
|
||||||
ret = fetch_next_lu_clause_erase(pe, pe->CodeOfPred, t1, ARG3, ARG4, P, TRUE);
|
ret = fetch_next_lu_clause_erase(pe, pe->CodeOfPred, t1, ARG3, ARG4, new_cp, TRUE);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5287,12 +5299,18 @@ p_log_update_clause0(void)
|
|||||||
PredEntry *pe;
|
PredEntry *pe;
|
||||||
Term t1 = Deref(ARG1);
|
Term t1 = Deref(ARG1);
|
||||||
Int ret;
|
Int ret;
|
||||||
|
yamop *new_cp;
|
||||||
|
|
||||||
|
if (P->opc == Yap_opcode(_execute_cpred)) {
|
||||||
|
new_cp = CP;
|
||||||
|
} else {
|
||||||
|
new_cp = P;
|
||||||
|
}
|
||||||
pe = get_pred(t1, Deref(ARG2), "clause/3");
|
pe = get_pred(t1, Deref(ARG2), "clause/3");
|
||||||
if (pe == NULL || EndOfPAEntr(pe))
|
if (pe == NULL || EndOfPAEntr(pe))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
LOCK(pe->PELock);
|
LOCK(pe->PELock);
|
||||||
ret = fetch_next_lu_clause0(pe, pe->CodeOfPred, t1, ARG3, P, TRUE);
|
ret = fetch_next_lu_clause0(pe, pe->CodeOfPred, t1, ARG3, new_cp, TRUE);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5612,12 +5630,18 @@ p_static_clause(void)
|
|||||||
{
|
{
|
||||||
PredEntry *pe;
|
PredEntry *pe;
|
||||||
Term t1 = Deref(ARG1);
|
Term t1 = Deref(ARG1);
|
||||||
|
yamop * new_cp;
|
||||||
|
|
||||||
|
if (P->opc == Yap_opcode(_execute_cpred)) {
|
||||||
|
new_cp = CP;
|
||||||
|
} else {
|
||||||
|
new_cp = P;
|
||||||
|
}
|
||||||
pe = get_pred(t1, Deref(ARG2), "clause/3");
|
pe = get_pred(t1, Deref(ARG2), "clause/3");
|
||||||
if (pe == NULL || EndOfPAEntr(pe))
|
if (pe == NULL || EndOfPAEntr(pe))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
LOCK(pe->PELock);
|
LOCK(pe->PELock);
|
||||||
return fetch_next_static_clause(pe, pe->CodeOfPred, ARG1, ARG3, ARG4, P, TRUE);
|
return fetch_next_static_clause(pe, pe->CodeOfPred, ARG1, ARG3, ARG4, new_cp, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Int /* $hidden_predicate(P) */
|
static Int /* $hidden_predicate(P) */
|
||||||
|
Reference in New Issue
Block a user