Changeset: 7e97c2449542 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/7e97c2449542
Modified Files:
        clients/Tests/exports.stable.out
        monetdb5/modules/mal/tablet.c
        sql/backends/monet5/sql.c
        sql/server/rel_updates.c
        sql/storage/bat/bat_logger.c
        sql/storage/store.c
Branch: nested
Log Message:

merged with default


diffs (truncated from 1662 to 300 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -1,14 +1,12 @@
 # gdk
 int ALIGNsynced(BAT *b1, BAT *b2);
 int ATOMallocate(const char *nme);
-void *ATOMdup(int id, const void *val);
 uint8_t ATOMelmshift(int sz) __attribute__((__const__));
 char *ATOMformat(allocator *ma, int id, const void *val) 
__attribute__((__warn_unused_result__));
 gdk_return ATOMheap(int id, Heap *hp, size_t cap) 
__attribute__((__warn_unused_result__));
 int ATOMindex(const char *nme);
 size_t ATOMlen(int id, const void *v);
 const char *ATOMname(int id);
-void *ATOMnil(int id) __attribute__((__malloc__));
 int ATOMprint(int id, const void *val, stream *fd);
 gdk_return BATaggrdigest(allocator *ma, BAT **bnp, char **shap, const char 
*digest, BAT *b, BAT *g, BAT *e, BAT *s, bool skip_nils);
 BAT *BATall_grp(BAT *l, BAT *g, BAT *e, BAT *s);
@@ -975,7 +973,6 @@ void freeException(str);
 void freeInstruction(MalBlkPtr mb, InstrPtr p);
 void freeMalBlk(MalBlkPtr mb);
 void freeModule(Module cur);
-void freeModuleList(Module *list);
 void freeStack(MalStkPtr stk);
 void freeSymbol(Symbol s);
 void freeSymbolList(Symbol s);
@@ -1002,7 +999,7 @@ int getHgeConstant(MalBlkPtr mb, hge val
 int getIntConstant(MalBlkPtr mb, int val);
 int getLngConstant(MalBlkPtr mb, lng val);
 Module getModule(const char *nme);
-void getModuleList(Module **out, int *length);
+void getModuleList(allocator *ma, Module **out, int *length);
 BAT *getModules(void);
 const char *getName(const char *nme);
 const char *getNameLen(const char *nme, size_t len);
diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c
--- a/gdk/gdk_atoms.c
+++ b/gdk/gdk_atoms.c
@@ -339,18 +339,6 @@ const uuid uuid_nil = {0};
 const inet4 inet4_nil = {0};
 const inet6 inet6_nil = {0};
 
-ptr
-ATOMnil(int t)
-{
-       const void *src = ATOMnilptr(t);
-       size_t len = ATOMlen(ATOMtype(t), src);
-       ptr dst = GDKmalloc(len);
-
-       if (dst)
-               memcpy(dst, src, len);
-       return dst;
-}
-
 /*
  * @- Atomic ADT functions
  */
@@ -433,17 +421,6 @@ ATOMformat(allocator *ma, int t, const v
        return ma_strdup(ma, "nil");
 }
 
-ptr
-ATOMdup(int t, const void *p)
-{
-       size_t len = ATOMlen(t, p);
-       ptr n = GDKmalloc(len);
-
-       if (n)
-               memcpy(n, p, len);
-       return n;
-}
-
 /*
  * @* Builtin Atomic Operator Implementations
  *
diff --git a/gdk/gdk_atoms.h b/gdk/gdk_atoms.h
--- a/gdk/gdk_atoms.h
+++ b/gdk/gdk_atoms.h
@@ -72,14 +72,10 @@ gdk_export int ATOMindex(const char *nme
 
 gdk_export const char *ATOMname(int id);
 gdk_export size_t ATOMlen(int id, const void *v);
-gdk_export void *ATOMnil(int id)
-       __attribute__((__malloc__));
 gdk_export int ATOMprint(int id, const void *val, stream *fd);
 gdk_export char *ATOMformat(allocator *ma, int id, const void *val)
        __attribute__((__warn_unused_result__));
 
-gdk_export void *ATOMdup(int id, const void *val);
-
 /*
  * @- maximum atomic string lengths
  */
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1578,8 +1578,10 @@ BBPjson_upgrade(json_storage_conversion 
        bat bid;
        int JSON_type = ATOMindex("json");
        bat nbat = (bat) ATOMIC_GET(&BBPsize);
-       bat *upd = GDKmalloc(sizeof(bat) * (size_t) nbat);
        int nupd = 0;
+       allocator *ta = MT_thread_getallocator();
+       allocator_state ta_state = ma_open(ta);
+       bat *upd = ma_alloc(ta, sizeof(bat) * (size_t) nbat);
 
        if (upd == NULL) {
                TRC_CRITICAL(GDK, "could not create bat\n");
@@ -1611,7 +1613,7 @@ BBPjson_upgrade(json_storage_conversion 
                fprintf(stderr, "Upgrading json bat %d\n", bid);
                if (jsonupgradebat(b, fixJSONStorage) != GDK_SUCCEED) {
                        BBPunlock();
-                       GDKfree(upd);
+                       ma_close(ta, &ta_state);
                        return GDK_FAIL;
                }
                upd[nupd++] = bid;
@@ -1620,10 +1622,10 @@ BBPjson_upgrade(json_storage_conversion 
        if (nupd > 1 &&
            TMsubcommit_list(upd, NULL, nupd, -1) != GDK_SUCCEED) {
                TRC_CRITICAL(GDK, "failed to commit changes\n");
-               GDKfree(upd);
+               ma_close(ta, &ta_state);
                return GDK_FAIL;
        }
-       GDKfree(upd);
+       ma_close(ta, &ta_state);
        return GDK_SUCCEED;
 }
 #endif
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -3447,14 +3447,17 @@ count_unique(BAT *b, BAT *s, BUN *cnt1, 
        } else if (ATOMbasetype(bi.type) == TYPE_sht) {
                unsigned short val;
                uint32_t *seen = NULL;
+               allocator *ta = MT_thread_getallocator();
+               allocator_state ta_state = ma_open(ta);
 
                algomsg = "short-sized atoms";
                assert(bvars == NULL);
-               seen = GDKzalloc((65536 / 32) * sizeof(seen[0]));
+               seen = ma_zalloc(ta, (65536 / 32) * sizeof(seen[0]));
                if (seen == NULL) {
                        MT_rwlock_rdunlock(&pb->thashlock);
                        BBPreclaim(pb);
                        bat_iterator_end(&bi);
+                       ma_close(ta, &ta_state);
                        return GDK_FAIL;
                }
                for (i = 0; i < ci.ncand; i++) {
@@ -3474,7 +3477,7 @@ count_unique(BAT *b, BAT *s, BUN *cnt1, 
                for (int j = 0; j < 65536 / 32; j++)
                        cnt += candmask_pop(seen[j]);
                *cnt2 = cnt;
-               GDKfree(seen);
+               ma_close(ta, &ta_state);
                seen = NULL;
        } else {
                BUN prb;
@@ -3606,6 +3609,8 @@ guess_uniques(BAT *b, struct canditer *c
        double B = cnt1 - n1 * A;
 
        B += A * ci->ncand;
+       if (B > (double) max)
+               B = (double) max;
        MT_lock_set(&b->theaplock);
        if (ci->s == NULL ||
            (ci->tpe == cand_dense && ci->ncand == BATcount(b) && ci->ncand == 
batcount)) {
@@ -3613,8 +3618,6 @@ guess_uniques(BAT *b, struct canditer *c
                        b->tunique_est = B;
        }
        MT_lock_unset(&b->theaplock);
-       if (B > (double) max)
-               B = (double) max;
        return B;
 }
 
@@ -4016,12 +4019,16 @@ bitmaskjoin(BAT *l, BAT *r,
 {
        BAT *r1;
        size_t nmsk = (lci->ncand + 31) / 32;
-       uint32_t *mask = GDKzalloc(nmsk * sizeof(uint32_t));
        BUN cnt = 0;
+       allocator *ta = MT_thread_getallocator();
+       allocator_state ta_state = ma_open(ta);
+       uint32_t *mask = ma_zalloc(ta, nmsk * sizeof(uint32_t));
 
        MT_thread_setalgorithm(__func__);
-       if (mask == NULL)
+       if (mask == NULL) {
+               ma_close(ta, &ta_state);
                return NULL;
+       }
 
        for (BUN n = 0; n < rci->ncand; n++) {
                oid o = canditer_next(rci) - r->hseqbase;
@@ -4042,7 +4049,7 @@ bitmaskjoin(BAT *l, BAT *r,
        if (only_misses)
                cnt = lci->ncand - cnt;
        if (cnt == 0 || cnt == lci->ncand) {
-               GDKfree(mask);
+               ma_close(ta, &ta_state);
                if (cnt == 0)
                        return BATdense(0, 0, 0);
                return BATdense(0, lci->seq, lci->ncand);
@@ -4088,7 +4095,7 @@ bitmaskjoin(BAT *l, BAT *r,
                          ALGOBATPAR(r1),
                          GDKusec() - t0);
        }
-       GDKfree(mask);
+       ma_close(ta, &ta_state);
        return r1;
 }
 
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -673,7 +673,8 @@ log_read_updates(logger *lg, trans *tr, 
                        }
                } else {
                        void *(*rh)(allocator *ma, ptr, size_t *, stream *, 
size_t) = BATatoms[TYPE_oid].atomRead;
-                       void *hv = ATOMnil(TYPE_oid);
+                       oid nil = oid_nil;
+                       void *hv = &nil;
                        offset = 0;
 
                        if (hv == NULL) {
@@ -747,7 +748,6 @@ log_read_updates(logger *lg, trans *tr, 
                                        }
                                }
                        }
-                       GDKfree(hv);
                }
 
                if (res == LOG_OK && !skip_entry) {
diff --git a/gdk/gdk_rsort.c b/gdk/gdk_rsort.c
--- a/gdk/gdk_rsort.c
+++ b/gdk/gdk_rsort.c
@@ -22,7 +22,9 @@
 gdk_return
 GDKrsort(void *restrict h, void *restrict t, size_t n, size_t hs, size_t ts, 
bool reverse, bool bigendian)
 {
-       size_t (*counts)[NBUCKETS] = GDKzalloc(hs * sizeof(counts[0]));
+       allocator *ta = MT_thread_getallocator();
+       allocator_state ta_state = ma_open(ta);
+       size_t (*counts)[NBUCKETS] = ma_zalloc(ta, hs * sizeof(counts[0]));
        size_t pos[NBUCKETS];
        uint8_t *h1 = h;
        uint8_t *h2;
@@ -30,8 +32,10 @@ GDKrsort(void *restrict h, void *restric
        uint8_t *t2 = NULL;
        Heap tmph, tmpt;
 
-       if (counts == NULL)
+       if (counts == NULL) {
+               ma_close(ta, &ta_state);
                return GDK_FAIL;
+       }
 
        tmph = tmpt = (Heap) {
                .farmid = 1,
@@ -40,7 +44,7 @@ GDKrsort(void *restrict h, void *restric
        snprintf(tmph.filename, sizeof(tmph.filename), "%s%crsort%zuh",
                 TEMPDIR_NAME, DIR_SEP, (size_t) MT_getpid());
        if (HEAPalloc(&tmph, n, hs) != GDK_SUCCEED) {
-               GDKfree(counts);
+               ma_close(ta, &ta_state);
                return GDK_FAIL;
        }
        h2 = (uint8_t *) tmph.base;
@@ -49,7 +53,7 @@ GDKrsort(void *restrict h, void *restric
                snprintf(tmpt.filename, sizeof(tmpt.filename), "%s%crsort%zut",
                         TEMPDIR_NAME, DIR_SEP, (size_t) MT_getpid());
                if (HEAPalloc(&tmpt, n, ts) != GDK_SUCCEED) {
-                       GDKfree(counts);
+                       ma_close(ta, &ta_state);
                        HEAPfree(&tmph, true);
                        return GDK_FAIL;
                }
@@ -133,7 +137,7 @@ GDKrsort(void *restrict h, void *restric
                t1 = t2;
                t2 = t;
        }
-       GDKfree(counts);
+       ma_close(ta, &ta_state);
 
        if (h1 != (uint8_t *) h) {
                /* we need to copy the data back to the correct heap */
diff --git a/gdk/gdk_strimps.c b/gdk/gdk_strimps.c
--- a/gdk/gdk_strimps.c
+++ b/gdk/gdk_strimps.c
@@ -320,8 +320,12 @@ STRMPbuildHeader(BAT *b, BAT *s, CharPai
                return false;
        }
 
+       allocator *ta = MT_thread_getallocator();
+       allocator_state ta_state = ma_open(ta);
+
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to