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 -- [email protected]
To unsubscribe send an email to [email protected]