disable inlining in tabled predicates (maybe a bit too harsh).
This commit is contained in:
parent
014209c22f
commit
d9a48c4014
@ -1438,7 +1438,7 @@ a_p(op_numbers opcode, clause_info *clinfo, yamop *code_p, int pass_no, struct i
|
|||||||
{ /* emit opcode & predicate code address */
|
{ /* emit opcode & predicate code address */
|
||||||
Prop fe = (Prop) (cip->cpc->rnd1);
|
Prop fe = (Prop) (cip->cpc->rnd1);
|
||||||
CELL Flags = RepPredProp(fe)->PredFlags;
|
CELL Flags = RepPredProp(fe)->PredFlags;
|
||||||
if (Flags & AsmPredFlag) {
|
if (Flags & AsmPredFlag && !(cip->CurrentPred->PredFlags & TabledPredFlag)) {
|
||||||
op_numbers op;
|
op_numbers op;
|
||||||
int is_test = FALSE;
|
int is_test = FALSE;
|
||||||
|
|
||||||
|
@ -1758,7 +1758,7 @@ c_goal(Term Goal, Term mod, compiler_struct *cglobs)
|
|||||||
c_goal(ArgOfTerm(2, Goal), mod, cglobs);
|
c_goal(ArgOfTerm(2, Goal), mod, cglobs);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (f == FunctorEq) {
|
else if (f == FunctorEq && !(cglobs->cint.CurrentPred->PredFlags & TabledPredFlag)) {
|
||||||
if (profiling)
|
if (profiling)
|
||||||
Yap_emit(enter_profiling_op, (CELL)p, Zero, &cglobs->cint);
|
Yap_emit(enter_profiling_op, (CELL)p, Zero, &cglobs->cint);
|
||||||
else if (call_counting)
|
else if (call_counting)
|
||||||
@ -1785,7 +1785,7 @@ c_goal(Term Goal, Term mod, compiler_struct *cglobs)
|
|||||||
v->FlagsOfVE |= SafeVar;
|
v->FlagsOfVE |= SafeVar;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (p->PredFlags & AsmPredFlag) {
|
else if (p->PredFlags & AsmPredFlag && !(cglobs->cint.CurrentPred->PredFlags & TabledPredFlag)) {
|
||||||
int op = p->PredFlags & 0x7f;
|
int op = p->PredFlags & 0x7f;
|
||||||
|
|
||||||
if (profiling)
|
if (profiling)
|
||||||
@ -1850,7 +1850,7 @@ c_goal(Term Goal, Term mod, compiler_struct *cglobs)
|
|||||||
#ifdef BEAM
|
#ifdef BEAM
|
||||||
else if (p->PredFlags & BinaryPredFlag && !EAM) {
|
else if (p->PredFlags & BinaryPredFlag && !EAM) {
|
||||||
#else
|
#else
|
||||||
else if (p->PredFlags & BinaryPredFlag) {
|
else if (p->PredFlags & BinaryPredFlag && !(cglobs->cint.CurrentPred->PredFlags & TabledPredFlag)) {
|
||||||
#endif
|
#endif
|
||||||
Term a1 = ArgOfTerm(1,Goal);
|
Term a1 = ArgOfTerm(1,Goal);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user