[buddy] avoid costly calls to setjmp() when BDD_REORDER_NONE
* src/reorder.c, src/kernel.h: Expose bddreordermethod. * src/bddop.c: Test bddreordermethod before ever calling setjmp().
This commit is contained in:
parent
2e6297c26a
commit
0ac14e9ca2
3 changed files with 26 additions and 12 deletions
|
|
@ -415,7 +415,8 @@ BDD bdd_not(BDD r)
|
||||||
CHECKa(r, bddfalse);
|
CHECKa(r, bddfalse);
|
||||||
|
|
||||||
again:
|
again:
|
||||||
if (__likely(setjmp(bddexception) == 0))
|
if (__likely(bddreordermethod == BDD_REORDER_NONE)
|
||||||
|
|| setjmp(bddexception) == 0)
|
||||||
{
|
{
|
||||||
INITREF;
|
INITREF;
|
||||||
|
|
||||||
|
|
@ -534,7 +535,8 @@ BDD bdd_apply(BDD l, BDD r, int op)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
again:
|
again:
|
||||||
if (__likely(setjmp(bddexception) == 0))
|
if (__likely(bddreordermethod == BDD_REORDER_NONE)
|
||||||
|
|| setjmp(bddexception) == 0)
|
||||||
{
|
{
|
||||||
INITREF;
|
INITREF;
|
||||||
applyop = op;
|
applyop = op;
|
||||||
|
|
@ -1001,7 +1003,8 @@ BDD bdd_ite(BDD f, BDD g, BDD h)
|
||||||
CHECKa(h, bddfalse);
|
CHECKa(h, bddfalse);
|
||||||
|
|
||||||
again:
|
again:
|
||||||
if (__likely(setjmp(bddexception) == 0))
|
if (__likely(bddreordermethod == BDD_REORDER_NONE)
|
||||||
|
|| setjmp(bddexception) == 0)
|
||||||
{
|
{
|
||||||
INITREF;
|
INITREF;
|
||||||
|
|
||||||
|
|
@ -1177,7 +1180,8 @@ BDD bdd_restrict(BDD r, BDD var)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
again:
|
again:
|
||||||
if (__likely(setjmp(bddexception) == 0))
|
if (__likely(bddreordermethod == BDD_REORDER_NONE)
|
||||||
|
|| setjmp(bddexception) == 0)
|
||||||
{
|
{
|
||||||
if (varset2svartable(var) < 0)
|
if (varset2svartable(var) < 0)
|
||||||
return bddfalse;
|
return bddfalse;
|
||||||
|
|
@ -1274,7 +1278,8 @@ BDD bdd_constrain(BDD f, BDD c)
|
||||||
CHECKa(c,bddfalse);
|
CHECKa(c,bddfalse);
|
||||||
|
|
||||||
again:
|
again:
|
||||||
if (__likely(setjmp(bddexception) == 0))
|
if (__likely(bddreordermethod == BDD_REORDER_NONE)
|
||||||
|
|| setjmp(bddexception) == 0)
|
||||||
{
|
{
|
||||||
INITREF;
|
INITREF;
|
||||||
miscid = CACHEID_CONSTRAIN;
|
miscid = CACHEID_CONSTRAIN;
|
||||||
|
|
@ -1399,7 +1404,8 @@ BDD bdd_replace(BDD r, bddPair *pair)
|
||||||
CHECKa(r, bddfalse);
|
CHECKa(r, bddfalse);
|
||||||
|
|
||||||
again:
|
again:
|
||||||
if (__likely(setjmp(bddexception) == 0))
|
if (__likely(bddreordermethod == BDD_REORDER_NONE)
|
||||||
|
|| setjmp(bddexception) == 0)
|
||||||
{
|
{
|
||||||
INITREF;
|
INITREF;
|
||||||
replacepair = pair->result;
|
replacepair = pair->result;
|
||||||
|
|
@ -1534,7 +1540,8 @@ BDD bdd_compose(BDD f, BDD g, int var)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
again:
|
again:
|
||||||
if (__likely(setjmp(bddexception) == 0))
|
if (__likely(bddreordermethod == BDD_REORDER_NONE) ||
|
||||||
|
setjmp(bddexception) == 0)
|
||||||
{
|
{
|
||||||
INITREF;
|
INITREF;
|
||||||
composelevel = bddvar2level[var];
|
composelevel = bddvar2level[var];
|
||||||
|
|
@ -1651,7 +1658,8 @@ BDD bdd_veccompose(BDD f, bddPair *pair)
|
||||||
CHECKa(f, bddfalse);
|
CHECKa(f, bddfalse);
|
||||||
|
|
||||||
again:
|
again:
|
||||||
if (__likely(setjmp(bddexception) == 0))
|
if (__likely(bddreordermethod == BDD_REORDER_NONE) ||
|
||||||
|
setjmp(bddexception) == 0)
|
||||||
{
|
{
|
||||||
INITREF;
|
INITREF;
|
||||||
replacepair = pair->result;
|
replacepair = pair->result;
|
||||||
|
|
@ -1739,7 +1747,8 @@ BDD bdd_simplify(BDD f, BDD d)
|
||||||
CHECKa(d, bddfalse);
|
CHECKa(d, bddfalse);
|
||||||
|
|
||||||
again:
|
again:
|
||||||
if (__likely(setjmp(bddexception) == 0))
|
if (__likely(bddreordermethod == BDD_REORDER_NONE)
|
||||||
|
|| setjmp(bddexception) == 0)
|
||||||
{
|
{
|
||||||
INITREF;
|
INITREF;
|
||||||
applyop = bddop_or;
|
applyop = bddop_or;
|
||||||
|
|
@ -1848,7 +1857,8 @@ static BDD quantify(BDD r, BDD var, int op, int comp, int id)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
again:
|
again:
|
||||||
if (__likely(setjmp(bddexception) == 0))
|
if (__likely(bddreordermethod == BDD_REORDER_NONE)
|
||||||
|
|| setjmp(bddexception) == 0)
|
||||||
{
|
{
|
||||||
if (varset2vartable(var, comp) < 0)
|
if (varset2vartable(var, comp) < 0)
|
||||||
return bddfalse;
|
return bddfalse;
|
||||||
|
|
@ -2039,7 +2049,8 @@ static BDD appquantify(BDD l, BDD r, int opr, BDD var,
|
||||||
return bdd_apply(l,r,opr);
|
return bdd_apply(l,r,opr);
|
||||||
|
|
||||||
again:
|
again:
|
||||||
if (__likely(setjmp(bddexception) == 0))
|
if (__likely(bddreordermethod == BDD_REORDER_NONE)
|
||||||
|
|| setjmp(bddexception) == 0)
|
||||||
{
|
{
|
||||||
if (varset2vartable(var, comp) < 0)
|
if (varset2vartable(var, comp) < 0)
|
||||||
return bddfalse;
|
return bddfalse;
|
||||||
|
|
|
||||||
|
|
@ -132,6 +132,9 @@ extern int bddreorderdisabled;
|
||||||
extern int bddresized;
|
extern int bddresized;
|
||||||
extern bddCacheStat bddcachestats;
|
extern bddCacheStat bddcachestats;
|
||||||
|
|
||||||
|
/* from reorder.c */
|
||||||
|
extern int bddreordermethod;
|
||||||
|
|
||||||
#ifdef CPLUSPLUS
|
#ifdef CPLUSPLUS
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@
|
||||||
#define __USERESIZE /* FIXME */
|
#define __USERESIZE /* FIXME */
|
||||||
|
|
||||||
/* Current auto reord. method and number of automatic reorderings left */
|
/* Current auto reord. method and number of automatic reorderings left */
|
||||||
static int bddreordermethod;
|
int bddreordermethod;
|
||||||
static int bddreordertimes;
|
static int bddreordertimes;
|
||||||
|
|
||||||
/* Flag for disabling reordering temporarily */
|
/* Flag for disabling reordering temporarily */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue