Changeset: 53920a0f4f9a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/53920a0f4f9a
Modified Files:
        gdk/gdk_strimps.c
Branch: string_imprints
Log Message:

Initialize heap ref counts on contstruction


diffs (53 lines):

diff --git a/gdk/gdk_strimps.c b/gdk/gdk_strimps.c
--- a/gdk/gdk_strimps.c
+++ b/gdk/gdk_strimps.c
@@ -447,6 +447,8 @@ BATcheckstrimps(BAT *b)
                                                hp->bitstrings_base = 
hp->strimps.base + hsize;        /* bitmasks just after the pairs */
 
                                                close(fd);
+                                               ATOMIC_INIT(&hp->strimps.refs, 
1);
+                                               // STRMPincref(hp);
                                                hp->strimps.parentid = 
b->batCacheid;
                                                b->tstrimps = hp;
                                                TRC_DEBUG(ACCELERATOR, 
"BATcheckstrimps(" ALGOBATFMT "): reusing persisted strimp\n", ALGOBATPAR(b));
@@ -666,7 +668,7 @@ STRMPcreateStrimpHeap(BAT *b, BAT *s)
                r->bitstrings_base = h2;
                r->strimps.free = sz;
                r->rec_cnt = 0;
-
+               ATOMIC_INIT(&r->strimps.refs, 1);
        }
        return r;
 }
@@ -677,6 +679,7 @@ STRMPcreate(BAT *b, BAT *s)
        lng t0 = 0;
        BAT *pb;
 
+       MT_thread_setalgorithm("create strimp index");
        TRC_DEBUG_IF(ACCELERATOR) t0 = GDKusec();
        if (ATOMstorage(b->ttype) != TYPE_str) {
                GDKerror("Cannot create strimps index for non string bats\n");
@@ -709,7 +712,6 @@ STRMPcreate(BAT *b, BAT *s)
                                 MT_lock_unset(&b->batIdxLock);
                                return GDK_FAIL;
                         }
-                       HEAPincref(&r->strimps);
                        dh = (uint64_t *)r->bitstrings_base;
 
                        /* Compute bitstrings */
@@ -810,6 +812,7 @@ void
 STRMPdestroy(BAT *b)
 {
        if (b && b->tstrimps) {
+               TRC_DEBUG(ACCELERATOR, "Destroying strimp %s\n", 
b->tstrimps->strimps.filename);
                MT_lock_set(&b->batIdxLock);
                if (b->tstrimps == (Strimps *)1) {
                        b->tstrimps = NULL;
@@ -829,6 +832,7 @@ void
 STRMPfree(BAT *b)
 {
        if (b && b->tstrimps) {
+               TRC_DEBUG(ACCELERATOR, "Freeing strimp for BAT %s\n", 
b->tstrimps->strimps.filename);
                Strimps *s;
                MT_lock_set(&b->batIdxLock);
                if ((s = b->tstrimps) != NULL && s != (Strimps *)1) {
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to