Changeset: c5a70ba2c3f1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c5a70ba2c3f1
Modified Files:
gdk/gdk_bat.c
gdk/gdk_bbp.c
gdk/gdk_private.h
Branch: default
Log Message:
Merge with Sep2022 branch.
diffs (105 lines):
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -130,7 +130,7 @@ BATcreatedesc(oid hseq, int tt, bool hea
if (ATOMneedheap(tt)) {
if ((bn->tvheap = GDKmalloc(sizeof(Heap))) == NULL) {
- BBPclear(bn->batCacheid, true);
+ BBPclear(bn->batCacheid);
HEAPfree(bn->theap, true);
GDKfree(bn->theap);
GDKfree(bn);
@@ -296,7 +296,7 @@ COLnew2(oid hseq, int tt, BUN cap, role_
TRC_DEBUG(ALGO, "-> " ALGOBATFMT "\n", ALGOBATPAR(bn));
return bn;
bailout:
- BBPclear(bn->batCacheid, true);
+ BBPclear(bn->batCacheid);
return NULL;
}
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -2606,10 +2606,10 @@ bbpclear(bat i, bool lock)
}
void
-BBPclear(bat i, bool lock)
+BBPclear(bat i)
{
- lock &= locked_by == 0 || locked_by != MT_getpid();
if (BBPcheck(i)) {
+ bool lock = locked_by == 0 || locked_by != MT_getpid();
bbpclear(i, lock);
}
}
@@ -2943,7 +2943,7 @@ decref(bat i, bool logical, bool lock, c
} else if (lrefs == 0 && (BBP_status(i) & BBPDELETED) == 0) {
if ((b = BBP_desc(i)) != NULL)
BATdelete(b);
- BBPclear(i, true);
+ BBPclear(i);
} else {
BBP_status_off(i, BBPUNLOADING);
}
@@ -3162,7 +3162,7 @@ BBPdestroy(BAT *b)
}
BATdelete(b);
- BBPclear(b->batCacheid, true); /* if destroyed; de-register from BBP */
+ BBPclear(b->batCacheid); /* if destroyed; de-register from BBP */
}
static gdk_return
@@ -4146,7 +4146,7 @@ getdesc(bat bid)
if (bid < (bat) ATOMIC_GET(&BBPsize) && BBP_logical(bid))
b = BBP_desc(bid);
if (b == NULL)
- BBPclear(bid, true);
+ BBPclear(bid);
return b;
}
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -102,7 +102,7 @@ gdk_return BBPcacheit(BAT *bn, bool lock
gdk_return BBPchkfarms(void)
__attribute__((__warn_unused_result__))
__attribute__((__visibility__("hidden")));
-void BBPclear(bat bid, bool lock)
+void BBPclear(bat bid)
__attribute__((__visibility__("hidden")));
void BBPdump(void) /* never called: for debugging only */
__attribute__((__cold__));
diff --git a/gdk/gdk_tm.c b/gdk/gdk_tm.c
--- a/gdk/gdk_tm.c
+++ b/gdk/gdk_tm.c
@@ -95,6 +95,8 @@ epilogue(int cnt, bat *subcommit, bool l
if (!locked)
MT_lock_set(&GDKswapLock(bid));
if ((BBP_status(bid) & BBPDELETED) && BBP_refs(bid) <= 0 &&
BBP_lrefs(bid) <= 0) {
+ if (!locked)
+ MT_lock_unset(&GDKswapLock(bid));
b = BBPquickdesc(bid);
/* the unloaded ones are deleted without
@@ -102,11 +104,12 @@ epilogue(int cnt, bat *subcommit, bool l
if (b) {
BATdelete(b);
}
- BBPclear(bid, false);
+ BBPclear(bid); /* also clears BBP_status */
+ } else {
+ BBP_status_off(bid, BBPDELETED | BBPSWAPPED | BBPNEW);
+ if (!locked)
+ MT_lock_unset(&GDKswapLock(bid));
}
- BBP_status_off(bid, BBPDELETED | BBPSWAPPED | BBPNEW);
- if (!locked)
- MT_lock_unset(&GDKswapLock(bid));
}
GDKclrerr();
}
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]