Changeset: 132974f2cc5a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/132974f2cc5a
Modified Files:
        clients/Tests/exports.stable.out
        gdk/gdk.h
        gdk/gdk_storage.c
        monetdb5/modules/mal/mal_io.c
        monetdb5/modules/mal/mdb.c
Branch: default
Log Message:

Use thread-local allocator in BATprint.
BATprint is used a lot for debugging, so having an allocator argument is
really inconvenient.


diffs (153 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
@@ -173,8 +173,8 @@ bool BATordered_rev(BAT *b);
 gdk_return BATorderidx(BAT *b, bool stable);
 gdk_return BAToutercross(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT 
*sr, bool max_one) __attribute__((__access__(write_only, 1))) 
__attribute__((__access__(write_only, 2))) 
__attribute__((__warn_unused_result__));
 gdk_return BATouterjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT 
*sr, bool nil_matches, bool match_one, BUN estimate) 
__attribute__((__access__(write_only, 1))) 
__attribute__((__access__(write_only, 2))) 
__attribute__((__warn_unused_result__));
-gdk_return BATprint(allocator *ma, stream *s, BAT *b);
-gdk_return BATprintcolumns(allocator *ma, stream *s, int argc, BAT *argv[]);
+gdk_return BATprint(stream *s, BAT *b);
+gdk_return BATprintcolumns(stream *s, int argc, BAT *argv[]);
 gdk_return BATprod(void *res, int tp, BAT *b, BAT *s, bool skip_nils, bool 
nil_if_empty);
 BAT *BATproject(BAT *restrict l, BAT *restrict r);
 BAT *BATproject2(BAT *restrict l, BAT *restrict r1, BAT *restrict r2);
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -881,8 +881,8 @@ gdk_export gdk_return GDKcreatedir(const
 
 gdk_export void OIDXdestroy(BAT *b);
 
-gdk_export gdk_return BATprintcolumns(allocator *ma, stream *s, int argc, BAT 
*argv[]);
-gdk_export gdk_return BATprint(allocator *ma, stream *s, BAT *b);
+gdk_export gdk_return BATprintcolumns(stream *s, int argc, BAT *argv[]);
+gdk_export gdk_return BATprint(stream *s, BAT *b);
 
 gdk_export bool BATordered(BAT *b);
 gdk_export bool BATordered_rev(BAT *b);
diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c
--- a/gdk/gdk_storage.c
+++ b/gdk/gdk_storage.c
@@ -888,9 +888,8 @@ BATdelete(BAT *b)
  */
 
 gdk_return
-BATprintcolumns(allocator *ma, stream *s, int argc, BAT *argv[])
+BATprintcolumns(stream *s, int argc, BAT *argv[])
 {
-       (void) ma;
        int i;
        BUN n, cnt;
        struct colinfo {
@@ -914,7 +913,9 @@ BATprintcolumns(allocator *ma, stream *s
                }
        }
 
-       if ((colinfo = ma_alloc(ma, argc * sizeof(*colinfo))) == NULL) {
+       allocator *ta = MT_thread_getallocator();
+       allocator_state ta_state = ma_open(ta);
+       if ((colinfo = ma_alloc(ta, argc * sizeof(*colinfo))) == NULL) {
                GDKerror("Cannot allocate memory\n");
                return GDK_FAIL;
        }
@@ -939,7 +940,7 @@ BATprintcolumns(allocator *ma, stream *s
        for (n = 0, cnt = BATcount(argv[0]); n < cnt; n++) {
                mnstr_write(s, "[ ", 1, 2);
                for (i = 0; i < argc; i++) {
-                       len = colinfo[i].s(ma, &buf, &buflen, 
BUNtail(colinfo[i].i, n), true);
+                       len = colinfo[i].s(ta, &buf, &buflen, 
BUNtail(colinfo[i].i, n), true);
                        if (len < 0) {
                                rc = GDK_FAIL;
                                goto bailout;
@@ -955,15 +956,13 @@ BATprintcolumns(allocator *ma, stream *s
        for (i = 0; i < argc; i++) {
                bat_iterator_end(&colinfo[i].i);
        }
-       // buf came from allocator
-       // GDKfree(buf);
-       //GDKfree(colinfo);
+       ma_close(ta, &ta_state);
 
        return rc;
 }
 
 gdk_return
-BATprint(allocator *ma, stream *fdout, BAT *b)
+BATprint(stream *fdout, BAT *b)
 {
        if (complex_cand(b)) {
                struct canditer ci;
@@ -989,7 +988,7 @@ BATprint(allocator *ma, stream *fdout, B
        argv[0] = BATdense(b->hseqbase, b->hseqbase, BATcount(b));
        if (argv[0]) {
                argv[1] = b;
-               ret = BATprintcolumns(ma, fdout, 2, argv);
+               ret = BATprintcolumns(fdout, 2, argv);
                BBPunfix(argv[0]->batCacheid);
        }
        return ret;
diff --git a/monetdb5/modules/mal/mal_io.c b/monetdb5/modules/mal/mal_io.c
--- a/monetdb5/modules/mal/mal_io.c
+++ b/monetdb5/modules/mal/mal_io.c
@@ -117,7 +117,7 @@ IOprintBoth(Client cntxt, MalBlkPtr mb, 
                        if (tl)
                                mnstr_printf(fp, "%s", tl);
                } else {
-                       BATprint(mb->ma, cntxt->fdout, b);
+                       BATprint(cntxt->fdout, b);
                }
                BBPunfix(b->batCacheid);
                return MAL_SUCCEED;
@@ -609,7 +609,7 @@ IOtable(Client cntxt, MalBlkPtr mb, MalS
                        BBPunfix(piv[i]->batCacheid);
                throw(MAL, "io.table", SQLSTATE(HY013) MAL_MALLOC_FAIL);
        }
-       BATprintcolumns(mb->ma, cntxt->fdout, pci->argc, piv);
+       BATprintcolumns(cntxt->fdout, pci->argc, piv);
        for (i = 0; i < pci->argc; i++)
                BBPunfix(piv[i]->batCacheid);
        return MAL_SUCCEED;
diff --git a/monetdb5/modules/mal/mdb.c b/monetdb5/modules/mal/mdb.c
--- a/monetdb5/modules/mal/mdb.c
+++ b/monetdb5/modules/mal/mdb.c
@@ -518,16 +518,18 @@ printBATproperties(stream *f, BAT *b)
 }
 
 static void
-printBATelm(allocator *ma, stream *f, bat i, BUN cnt, BUN first)
+printBATelm(stream *f, bat i, BUN cnt, BUN first)
 {
        BAT *b, *bs = NULL;
        str tpe;
 
        b = BATdescriptor(i);
        if (b) {
-               tpe = getTypeName(ma, newBatType(b->ttype));
+               allocator *ta = MT_thread_getallocator();
+               allocator_state ta_state = ma_open(ta);
+               tpe = getTypeName(ta, newBatType(b->ttype));
                mnstr_printf(f, ":%s ", tpe);
-               //GDKfree(tpe);
+               ma_close(ta, &ta_state);
                printBATproperties(f, b);
                /* perform property checking */
                BATassertProps(b);
@@ -543,7 +545,7 @@ printBATelm(allocator *ma, stream *f, ba
                        if (bs == NULL)
                                mnstr_printf(f, "Failed to take chunk\n");
                        else {
-                               if (BATprint(ma, f, bs) != GDK_SUCCEED)
+                               if (BATprint(f, bs) != GDK_SUCCEED)
                                         mnstr_printf(f, "Failed to print 
chunk\n");
                                BBPunfix(bs->batCacheid);
                        }
@@ -588,7 +590,7 @@ printStackElm(stream *f, MalBlkPtr mb, c
        //GDKfree(nmeOnStk);
 
        if (cnt && v && (isaBatType(n->type) || v->bat) && 
!is_bat_nil(v->val.bval)) {
-               printBATelm(mb->ma, f, v->val.bval, cnt, first);
+               printBATelm(f, v->val.bval, cnt, first);
        }
 }
 
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to