Changeset: fef11c1d442c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/fef11c1d442c
Modified Files:
        gdk/gdk_align.c
        gdk/gdk_bat.c
        gdk/gdk_batop.c
        gdk/gdk_cand.c
        gdk/gdk_heap.c
        gdk/gdk_logger.c
        gdk/gdk_orderidx.c
        gdk/gdk_rtree.c
        gdk/gdk_system.c
        monetdb5/mal/mal_dataflow.c
        monetdb5/mal/mal_instruction.c
        sql/common/sql_types.c
        sql/storage/bat/bat_storage.c
Branch: default
Log Message:

Use ATOMIC_VAR_INIT and ATOMIC_PTR_VAR_INIT where it makes sense.


diffs (truncated from 524 to 300 lines):

diff --git a/gdk/gdk_align.c b/gdk/gdk_align.c
--- a/gdk/gdk_align.c
+++ b/gdk/gdk_align.c
@@ -258,6 +258,7 @@ BATmaterialize(BAT *b, BUN cap)
                .farmid = BBPselectfarm(b->batRole, TYPE_oid, offheap),
                .parentid = b->batCacheid,
                .dirty = true,
+               .refs = ATOMIC_VAR_INIT(1),
        };
        settailname(tail, BBP_physical(b->batCacheid), TYPE_oid, 0);
        if (HEAPalloc(tail, cap, sizeof(oid)) != GDK_SUCCEED) {
@@ -273,7 +274,6 @@ BATmaterialize(BAT *b, BUN cap)
                for (p = 0; p < q; p++)
                        x[p] = t++;
        }
-       ATOMIC_INIT(&tail->refs, 1);
        /* point of no return */
        MT_lock_set(&b->theaplock);
        assert((ATOMIC_GET(&b->theap->refs) & HEAPREFS) > 0);
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -74,6 +74,7 @@ BATcreatedesc(oid hseq, int tt, bool hea
                *h = (Heap) {
                        .farmid = BBPselectfarm(role, tt, offheap),
                        .dirty = true,
+                       .refs = ATOMIC_VAR_INIT(1),
                };
 
                if (ATOMneedheap(tt)) {
@@ -84,6 +85,7 @@ BATcreatedesc(oid hseq, int tt, bool hea
                        *vh = (Heap) {
                                .farmid = BBPselectfarm(role, tt, varheap),
                                .dirty = true,
+                               .refs = ATOMIC_VAR_INIT(1),
                        };
                }
        }
@@ -124,13 +126,11 @@ BATcreatedesc(oid hseq, int tt, bool hea
 
        if (bn->theap) {
                bn->theap->parentid = bn->batCacheid;
-               ATOMIC_INIT(&bn->theap->refs, 1);
                const char *nme = BBP_physical(bn->batCacheid);
                settailname(bn->theap, nme, tt, width);
 
                if (bn->tvheap) {
                        bn->tvheap->parentid = bn->batCacheid;
-                       ATOMIC_INIT(&bn->tvheap->refs, 1);
                        strconcat_len(bn->tvheap->filename,
                                      sizeof(bn->tvheap->filename),
                                      nme, ".theap", NULL);
@@ -603,6 +603,7 @@ BATclear(BAT *b, bool force)
                                .parentid = b->tvheap->parentid,
                                .dirty = true,
                                .hasfile = b->tvheap->hasfile,
+                               .refs = ATOMIC_VAR_INIT(1),
                        };
                        strcpy_len(th->filename, b->tvheap->filename, 
sizeof(th->filename));
                        if (ATOMheap(b->ttype, th, 0) != GDK_SUCCEED) {
@@ -610,7 +611,6 @@ BATclear(BAT *b, bool force)
                                return GDK_FAIL;
                        }
                        tvp = b->tvheap->parentid;
-                       ATOMIC_INIT(&th->refs, 1);
                        HEAPdecref(b->tvheap, false);
                        b->tvheap = th;
                }
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -34,6 +34,7 @@ unshare_varsized_heap(BAT *b)
                *h = (Heap) {
                        .parentid = b->batCacheid,
                        .farmid = BBPselectfarm(b->batRole, TYPE_str, varheap),
+                       .refs = ATOMIC_VAR_INIT(1),
                };
                strconcat_len(h->filename, sizeof(h->filename),
                              BBP_physical(b->batCacheid), ".theap", NULL);
@@ -42,7 +43,6 @@ unshare_varsized_heap(BAT *b)
                        GDKfree(h);
                        return GDK_FAIL;
                }
-               ATOMIC_INIT(&h->refs, 1);
                MT_lock_set(&b->theaplock);
                Heap *oh = b->tvheap;
                b->tvheap = h;
@@ -415,6 +415,7 @@ append_varsized_bat(BAT *b, BATiter *ni,
                *h = (Heap) {
                        .parentid = b->batCacheid,
                        .farmid = BBPselectfarm(b->batRole, b->ttype, varheap),
+                       .refs = ATOMIC_VAR_INIT(1),
                };
                strconcat_len(h->filename, sizeof(h->filename),
                              BBP_physical(b->batCacheid), ".theap", NULL);
@@ -423,7 +424,6 @@ append_varsized_bat(BAT *b, BATiter *ni,
                        GDKfree(h);
                        return GDK_FAIL;
                }
-               ATOMIC_INIT(&h->refs, 1);
                MT_lock_set(&b->theaplock);
                Heap *oh = b->tvheap;
                b->tvheap = h;
@@ -2731,7 +2731,6 @@ BATsort(BAT **sorted, BAT **order, BAT *
                                               ords,
                                               pbi.count * sizeof(oid));
                                }
-                               ATOMIC_INIT(&m->refs, 1);
                                pb->torderidx = m;
                                persistOIDX(pb);
                        } else {
diff --git a/gdk/gdk_cand.c b/gdk/gdk_cand.c
--- a/gdk/gdk_cand.c
+++ b/gdk/gdk_cand.c
@@ -1320,6 +1320,7 @@ BATnegcands(BUN nr, BAT *odels)
                .farmid = BBPselectfarm(bn->batRole, bn->ttype, varheap),
                .parentid = bn->batCacheid,
                .dirty = true,
+               .refs = ATOMIC_VAR_INIT(1),
        };
        strconcat_len(dels->filename, sizeof(dels->filename),
                      nme, ".theap", NULL);
@@ -1330,7 +1331,6 @@ BATnegcands(BUN nr, BAT *odels)
                BBPreclaim(bn);
                return NULL;
        }
-       ATOMIC_INIT(&dels->refs, 1);
        c = (ccand_t *) dels->base;
        *c = (ccand_t) {
                .type = CAND_NEGOID,
@@ -1388,6 +1388,7 @@ BATmaskedcands(oid hseq, BUN nr, BAT *ma
                .farmid = BBPselectfarm(bn->batRole, bn->ttype, varheap),
                .parentid = bn->batCacheid,
                .dirty = true,
+               .refs = ATOMIC_VAR_INIT(1),
        };
        strconcat_len(msks->filename, sizeof(msks->filename),
                      nme, ".theap", NULL);
@@ -1438,7 +1439,6 @@ BATmaskedcands(oid hseq, BUN nr, BAT *ma
                cnt += candmask_pop(r[i]);
        }
        if (cnt > 0) {
-               ATOMIC_INIT(&msks->refs, 1);
                assert(bn->tvheap == NULL);
                bn->tvheap = msks;
                bn->tseqbase += (oid) c->firstbit;
@@ -1504,6 +1504,7 @@ BATunmask(BAT *b)
                        .farmid = BBPselectfarm(TRANSIENT, TYPE_void, varheap),
                        .parentid = bn->batCacheid,
                        .dirty = true,
+                       .refs = ATOMIC_VAR_INIT(1),
                };
                strconcat_len(dels->filename, sizeof(dels->filename),
                              BBP_physical(bn->batCacheid), ".theap", NULL);
@@ -1538,7 +1539,6 @@ BATunmask(BAT *b)
                } else {
                        dels->free = sizeof(ccand_t) + n * sizeof(oid);
                        dels->dirty = true;
-                       ATOMIC_INIT(&dels->refs, 1);
                        assert(bn->tvheap == NULL);
                        bn->tvheap = dels;
                }
diff --git a/gdk/gdk_heap.c b/gdk/gdk_heap.c
--- a/gdk/gdk_heap.c
+++ b/gdk/gdk_heap.c
@@ -106,10 +106,10 @@ HEAPgrow(Heap **hp, size_t size, bool ma
                        .parentid = old->parentid,
                        .wasempty = old->wasempty,
                        .hasfile = old->hasfile,
+                       .refs = ATOMIC_VAR_INIT(1 | (refs & HEAPREMOVE)),
                };
                memcpy(new->filename, old->filename, sizeof(new->filename));
                if (HEAPalloc(new, size, 1) == GDK_SUCCEED) {
-                       ATOMIC_INIT(&new->refs, 1 | (refs & HEAPREMOVE));
                        new->free = old->free;
                        new->cleanhash = old->cleanhash;
                        if (old->free > 0 &&
@@ -497,6 +497,7 @@ GDKupgradevarheap(BAT *b, var_t v, BUN c
                .dirty = true,
                .parentid = old->parentid,
                .wasempty = old->wasempty,
+               .refs = ATOMIC_VAR_INIT(1 | (ATOMIC_GET(&old->refs) & 
HEAPREMOVE)),
        };
        settailname(new, BBP_physical(b->batCacheid), b->ttype, width);
        if (HEAPalloc(new, newsize, 1) != GDK_SUCCEED) {
@@ -505,7 +506,6 @@ GDKupgradevarheap(BAT *b, var_t v, BUN c
        }
        /* HEAPalloc initialized .free, so we need to set it after */
        new->free = old->free << (shift - b->tshift);
-       ATOMIC_INIT(&new->refs, 1 | (ATOMIC_GET(&old->refs) & HEAPREMOVE));
        /* per the above, width > b->twidth, so certain combinations are
         * impossible */
        switch (width) {
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -2359,6 +2359,11 @@ log_new(int debug, const char *fn, const
                return NULL;
        }
 
+       if (snprintf(filename, sizeof(filename), "%s%c%s%c", logdir, DIR_SEP, 
fn, DIR_SEP) >= FILENAME_MAX) {
+               TRC_CRITICAL(GDK, "filename is too large\n");
+               return NULL;
+       }
+
        lg = GDKmalloc(sizeof(struct logger));
        if (lg == NULL) {
                TRC_CRITICAL(GDK, "allocating logger structure failed\n");
@@ -2380,20 +2385,16 @@ log_new(int debug, const char *fn, const
 
                .id = 0,
                .saved_id = getBBPlogno(),      /* get saved log numer from bbp 
*/
+               .nr_flushers = ATOMIC_VAR_INIT(0),
+               .fn = GDKstrdup(fn),
+               .dir = GDKstrdup(filename),
+               .rbufsize = 64 * 1024,
+               .rbuf = GDKmalloc(64 * 1024),
+               .wbufsize = 64 * 1024,
+               .wbuf = GDKmalloc(64 * 1024),
        };
 
        /* probably open file and check version first, then call call old 
logger code */
-       if (snprintf(filename, sizeof(filename), "%s%c%s%c", logdir, DIR_SEP, 
fn, DIR_SEP) >= FILENAME_MAX) {
-               TRC_CRITICAL(GDK, "filename is too large\n");
-               GDKfree(lg);
-               return NULL;
-       }
-       lg->fn = GDKstrdup(fn);
-       lg->dir = GDKstrdup(filename);
-       lg->rbufsize = 64 * 1024;
-       lg->rbuf = GDKmalloc(lg->rbufsize);
-       lg->wbufsize = 64 * 1024;
-       lg->wbuf = GDKmalloc(lg->wbufsize);
        if (lg->fn == NULL ||
            lg->dir == NULL ||
            lg->rbuf == NULL ||
@@ -2412,7 +2413,6 @@ log_new(int debug, const char *fn, const
        MT_lock_init(&lg->rotation_lock, "rotation_lock");
        MT_lock_init(&lg->flush_lock, "flush_lock");
        MT_cond_init(&lg->excl_flush_cv);
-       ATOMIC_INIT(&lg->nr_flushers, 0);
 
        if (log_load(fn, logdir, lg, filename) == GDK_SUCCEED) {
                return lg;
diff --git a/gdk/gdk_orderidx.c b/gdk/gdk_orderidx.c
--- a/gdk/gdk_orderidx.c
+++ b/gdk/gdk_orderidx.c
@@ -149,6 +149,7 @@ createOIDXheap(BAT *b, bool stable)
                .farmid = BBPselectfarm(b->batRole, b->ttype, orderidxheap),
                .parentid = b->batCacheid,
                .dirty = true,
+               .refs = ATOMIC_VAR_INIT(1),
        };
        strconcat_len(m->filename, sizeof(m->filename),
                      BBP_physical(b->batCacheid), ".torderidx", NULL);
@@ -222,7 +223,6 @@ BATorderidx(BAT *b, bool stable)
                                        return GDK_FAIL;
                                }
                                memcpy((oid *) m->base + ORDERIDXOFF, Tloc(on, 
0), BATcount(on) * sizeof(oid));
-                               ATOMIC_INIT(&m->refs, 1);
                                b->torderidx = m;
                                persistOIDX(b);
                        }
@@ -384,6 +384,7 @@ GDKmergeidx(BAT *b, BAT**a, int n_ar)
                .farmid = BBPselectfarm(b->batRole, bi.type, orderidxheap),
                .parentid = b->batCacheid,
                .dirty = true,
+               .refs = ATOMIC_VAR_INIT(1),
        };
        strconcat_len(m->filename, sizeof(m->filename),
                      nme, ".torderidx", NULL);
@@ -497,7 +498,6 @@ GDKmergeidx(BAT *b, BAT**a, int n_ar)
                GDKfree(q);
        }
 
-       ATOMIC_INIT(&m->refs, 1);
        b->torderidx = m;
 #ifdef PERSISTENTIDX
        if ((BBP_status(b->batCacheid) & BBPEXISTING) &&
diff --git a/gdk/gdk_rtree.c b/gdk/gdk_rtree.c
--- a/gdk/gdk_rtree.c
+++ b/gdk/gdk_rtree.c
@@ -139,9 +139,11 @@ BATcheckrtree(BAT *b)
                        return GDK_FAIL;
                }
                b->trtree = GDKmalloc(sizeof(struct RTree));
-               b->trtree->rtree = rtree;
-               b->trtree->destroy = false;
-               ATOMIC_INIT(&b->trtree->refs, 1);
+               *b->trtree = (struct RTree) {
+                       .rtree = rtree,
+                       .destroy = false,
+                       .refs = ATOMIC_VAR_INIT(1),
+               };
                fclose(file_stream);
                return GDK_SUCCEED;
        }
@@ -253,9 +255,11 @@ BATrtree(BAT *wkb, BAT *mbrb)
                }
                bat_iterator_end(&bi);
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to