improve performance
This commit is contained in:
parent
0eac6ac20b
commit
55c83fc2c8
@ -1680,9 +1680,17 @@ static Term attvars_in_complex_term(register CELL *pt0, register CELL *pt0_end,
|
|||||||
attvars_in_term_nvar:
|
attvars_in_term_nvar:
|
||||||
{
|
{
|
||||||
if (IsPairTerm(d0)) {
|
if (IsPairTerm(d0)) {
|
||||||
if (to_visit + 1024 >= (CELL **)AuxSp) {
|
if (to_visit + 1024 >= (CELL **)AuxSp) {
|
||||||
goto aux_overflow;
|
goto aux_overflow;
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
CELL *npt0 = RepPair(d0);
|
||||||
|
if(IsAtomicTerm(Deref(npt0[0]))) {
|
||||||
|
pt0 = npt0;
|
||||||
|
pt0_end = pt0 + 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
#ifdef RATIONAL_TREES
|
#ifdef RATIONAL_TREES
|
||||||
to_visit[0] = pt0;
|
to_visit[0] = pt0;
|
||||||
to_visit[1] = pt0_end;
|
to_visit[1] = pt0_end;
|
||||||
@ -1697,7 +1705,7 @@ static Term attvars_in_complex_term(register CELL *pt0, register CELL *pt0_end,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
pt0 = RepPair(d0) - 1;
|
pt0 = RepPair(d0) - 1;
|
||||||
pt0_end = RepPair(d0) + 1;
|
pt0_end = pt0+2;
|
||||||
} else if (IsApplTerm(d0)) {
|
} else if (IsApplTerm(d0)) {
|
||||||
register Functor f;
|
register Functor f;
|
||||||
register CELL *ap2;
|
register CELL *ap2;
|
||||||
@ -1739,14 +1747,14 @@ static Term attvars_in_complex_term(register CELL *pt0, register CELL *pt0_end,
|
|||||||
/* next make sure noone will see this as a variable again */
|
/* next make sure noone will see this as a variable again */
|
||||||
if (TR > (tr_fr_ptr)LOCAL_TrailTop - 256) {
|
if (TR > (tr_fr_ptr)LOCAL_TrailTop - 256) {
|
||||||
/* Trail overflow */
|
/* Trail overflow */
|
||||||
if (!Yap_growtrail((TR-TR0)*sizeof(tr_fr_ptr *), TRUE)) {
|
if (!Yap_growtrail((TR-TR0)*sizeof(tr_fr_ptr *), TRUE)) {
|
||||||
goto trail_overflow;
|
goto trail_overflow;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
TrailTerm(TR++) = (CELL)ptd0;
|
TrailTerm(TR++) = (CELL)ptd0;
|
||||||
/* leave an empty slot to fill in later */
|
/* leave an empty slot to fill in later */
|
||||||
if (HR+1024 > ASP) {
|
if (HR+1024 > ASP) {
|
||||||
goto global_overflow;
|
goto global_overflow;
|
||||||
}
|
}
|
||||||
HR[1] = AbsPair(HR+2);
|
HR[1] = AbsPair(HR+2);
|
||||||
HR += 2;
|
HR += 2;
|
||||||
|
Reference in New Issue
Block a user