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