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]