Changeset: 3e0c978b0eaf for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/3e0c978b0eaf
Modified Files:
gdk/gdk_utils.c
monetdb5/optimizer/opt_mergetable.c
Branch: resource_management
Log Message:
use tmp allocator in mergetable optimizer
diffs (truncated from 756 to 300 lines):
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -2328,12 +2328,13 @@ sa_close( allocator *sa )
{
assert(sa->tmp_active);
sa->tmp_active = 0;
- while (sa->tmp_used) {
- assert(sa->used >= sa->tmp_used);
- if (sa->used >= sa->tmp_used) {
- sa->used -= sa->tmp_used;
- sa->usedmem -= sa->tmp_used;
- sa->tmp_used = 0;
- }
- }
+ sa_reset(sa);
+ //while (sa->tmp_used) {
+ // assert(sa->used >= sa->tmp_used);
+ // if (sa->used >= sa->tmp_used) {
+ // sa->used -= sa->tmp_used;
+ // sa->usedmem -= sa->tmp_used;
+ // sa->tmp_used = 0;
+ // }
+ //}
}
diff --git a/monetdb5/optimizer/opt_mergetable.c
b/monetdb5/optimizer/opt_mergetable.c
--- a/monetdb5/optimizer/opt_mergetable.c
+++ b/monetdb5/optimizer/opt_mergetable.c
@@ -98,16 +98,16 @@ nr_of_nilbats(MalBlkPtr mb, InstrPtr p)
/* some mat's have intermediates (with intermediate result variables),
* therefore we pass the old output mat variable */
inline static int
-mat_add_var(matlist_t *ml, InstrPtr q, InstrPtr p, int var, mat_type_t type,
+mat_add_var(Client c, matlist_t *ml, InstrPtr q, InstrPtr p, int var,
mat_type_t type,
int inputmat, int parentmat, int pushed)
{
if (ml->top == ml->size) {
int s = ml->size * 2;
- mat_t *v = (mat_t *) GDKzalloc(s * sizeof(mat_t));
+ mat_t *v = (mat_t *) ma_zalloc(c->ta, s * sizeof(mat_t));
if (!v)
return -1;
memcpy(v, ml->v, ml->top * sizeof(mat_t));
- GDKfree(ml->v);
+ // GDKfree(ml->v);
ml->size = s;
ml->v = v;
}
@@ -131,11 +131,11 @@ mat_add_var(matlist_t *ml, InstrPtr q, I
}
inline static int
-mat_add(matlist_t *ml, InstrPtr q, mat_type_t type, const char *func)
+mat_add(Client c, matlist_t *ml, InstrPtr q, mat_type_t type, const char *func)
{
(void) func;
//printf (" ml.top %d %s\n", ml.top, func);
- return mat_add_var(ml, q, NULL, getArg(q, 0), type, -1, -1, 0);
+ return mat_add_var(c, ml, q, NULL, getArg(q, 0), type, -1, -1, 0);
}
static void
@@ -313,7 +313,7 @@ mat_set_prop(matlist_t *ml, MalBlkPtr mb
}
static InstrPtr
-mat_delta(matlist_t *ml, MalBlkPtr mb, InstrPtr p, mat_t *mat, int m, int n,
+mat_delta(Client c, matlist_t *ml, MalBlkPtr mb, InstrPtr p, mat_t *mat, int
m, int n,
int o, int e, int mvar, int nvar, int ovar, int evar)
{
int tpe, k, j, is_subdelta = (getFunctionId(p) == subdeltaRef),
@@ -408,7 +408,7 @@ mat_delta(matlist_t *ml, MalBlkPtr mb, I
r = q;
}
}
- if (mat_add_var(ml, r, NULL, getArg(r, 0), mat_type(mat, m), -1, -1,
pushed)) {
+ if (mat_add_var(c, ml, r, NULL, getArg(r, 0), mat_type(mat, m), -1, -1,
pushed)) {
freeInstruction(r);
return NULL;
}
@@ -418,7 +418,7 @@ mat_delta(matlist_t *ml, MalBlkPtr mb, I
}
static InstrPtr
-mat_assign(MalBlkPtr mb, InstrPtr p, matlist_t *ml)
+mat_assign(Client c, MalBlkPtr mb, InstrPtr p, matlist_t *ml)
{
InstrPtr r = NULL;
mat_t *mat = ml->v;
@@ -438,7 +438,7 @@ mat_assign(MalBlkPtr mb, InstrPtr p, mat
return NULL;
}
}
- if (mat_add(ml, r, mat_none, getFunctionId(p))) {
+ if (mat_add(c, ml, r, mat_none, getFunctionId(p))) {
freeInstruction(r);
return NULL;
}
@@ -447,7 +447,7 @@ mat_assign(MalBlkPtr mb, InstrPtr p, mat
}
static int
-mat_apply1(MalBlkPtr mb, InstrPtr p, matlist_t *ml, int m, int var)
+mat_apply1(Client c, MalBlkPtr mb, InstrPtr p, matlist_t *ml, int m, int var)
{
int tpe, k, is_select = isSelect(p),
is_mirror = (getFunctionId(p) == mirrorRef);
@@ -535,7 +535,7 @@ mat_apply1(MalBlkPtr mb, InstrPtr p, mat
freeInstruction(r);
return -1;
}
- if (!r || mat_add(ml, r, mat_type(ml->v, m), getFunctionId(p))) {
+ if (!r || mat_add(c, ml, r, mat_type(ml->v, m), getFunctionId(p))) {
freeInstruction(r);
return -1;
}
@@ -543,14 +543,14 @@ mat_apply1(MalBlkPtr mb, InstrPtr p, mat
}
static int
-mat_apply(MalBlkPtr mb, InstrPtr p, matlist_t *ml, int nrmats)
+mat_apply(Client c, MalBlkPtr mb, InstrPtr p, matlist_t *ml, int nrmats)
{
int matvar[8], fargument[8], k, l, parts = 0;
if (nrmats == 1
&& ((getModuleId(p) == batcalcRef && getFunctionId(p) ==
identityRef)
|| (getModuleId(p) == batRef && getFunctionId(p) ==
mirrorRef)))
- return mat_apply1(mb, p, ml, is_a_mat(getArg(p, 1), ml), 1);
+ return mat_apply1(c, mb, p, ml, is_a_mat(getArg(p, 1), ml), 1);
assert(nrmats <= 8);
assert(p->retc < p->argc); /* i.e. matvar[0] gets initialized */
@@ -567,14 +567,13 @@ mat_apply(MalBlkPtr mb, InstrPtr p, matl
}
}
- InstrPtr *r = (InstrPtr *) GDKmalloc(sizeof(InstrPtr) * p->retc);
+ InstrPtr *r = (InstrPtr *) ma_alloc(c->ta, sizeof(InstrPtr) * p->retc);
if (!r)
return -1;
for (k = 0; k < p->retc; k++) {
if ((r[k] = newInstructionArgs(mb, matRef, packRef, parts)) ==
NULL) {
while (k > 0)
freeInstruction(r[--k]);
- GDKfree(r);
return -1;
}
getArg(r[k], 0) = getArg(p, k);
@@ -586,7 +585,6 @@ mat_apply(MalBlkPtr mb, InstrPtr p, matl
if (q == NULL) {
for (k = 0; k < p->retc; k++)
freeInstruction(r[k]);
- GDKfree(r);
return -1;
}
@@ -601,7 +599,6 @@ mat_apply(MalBlkPtr mb, InstrPtr p, matl
if (setPartnr(ml, -1, getArg(q, l), k)) {
for (k = 0; k < p->retc; k++)
freeInstruction(r[k]);
- GDKfree(r);
return -1;
}
r[l] = pushArgument(mb, r[l], getArg(q, l));
@@ -609,26 +606,23 @@ mat_apply(MalBlkPtr mb, InstrPtr p, matl
if (mb->errors) {
for (k = 0; k < p->retc; k++)
freeInstruction(r[k]);
- GDKfree(r);
return -1;
}
}
for (k = 0; k < p->retc; k++) {
- if (mat_add_var(ml, r[k], NULL, getArg(r[k], 0),
+ if (mat_add_var(c, ml, r[k], NULL, getArg(r[k], 0),
mat_type(ml->v, matvar[0]), -1,
-1, 0)) {
for (l = k; l < p->retc; l++)
freeInstruction(r[l]);
- GDKfree(r);
return -1;
}
}
- GDKfree(r);
return 0;
}
static int
-mat_setop(MalBlkPtr mb, InstrPtr p, matlist_t *ml, int m, int n, int o)
+mat_setop(Client c, MalBlkPtr mb, InstrPtr p, matlist_t *ml, int m, int n, int
o)
{
int tpe = getArgType(mb, p, 0), k, j;
mat_t *mat = ml->v;
@@ -726,7 +720,7 @@ mat_setop(MalBlkPtr mb, InstrPtr p, matl
}
}
- if (mb->errors || mat_add(ml, r, mat_none, getFunctionId(p))) {
+ if (mb->errors || mat_add(c, ml, r, mat_none, getFunctionId(p))) {
freeInstruction(r);
return -1;
}
@@ -734,7 +728,7 @@ mat_setop(MalBlkPtr mb, InstrPtr p, matl
}
static int
-mat_projection(MalBlkPtr mb, InstrPtr p, matlist_t *ml, int m, int n)
+mat_projection(Client c, MalBlkPtr mb, InstrPtr p, matlist_t *ml, int m, int n)
{
int tpe = getArgType(mb, p, 0), k, j;
mat_t *mat = ml->v;
@@ -816,7 +810,7 @@ mat_projection(MalBlkPtr mb, InstrPtr p,
}
}
- if (mb->errors || mat_add(ml, r, mat_none, getFunctionId(p))) {
+ if (mb->errors || mat_add(c, ml, r, mat_none, getFunctionId(p))) {
freeInstruction(r);
return -1;
}
@@ -824,7 +818,7 @@ mat_projection(MalBlkPtr mb, InstrPtr p,
}
static int
-mat_join2(MalBlkPtr mb, InstrPtr p, matlist_t *ml, int m, int n, int lc, int
rc)
+mat_join2(Client c, MalBlkPtr mb, InstrPtr p, matlist_t *ml, int m, int n, int
lc, int rc)
{
int tpe1 = getArgType(mb, p, 0), tpe2 = getArgType(mb, p, 1), j, k, nr
= 1;
mat_t *mat = ml->v;
@@ -931,12 +925,12 @@ mat_join2(MalBlkPtr mb, InstrPtr p, matl
r = pushArgument(mb, r, getArg(q, 1));
}
}
- if (mb->errors || mat_add(ml, l, mat_none, getFunctionId(p))) {
+ if (mb->errors || mat_add(c, ml, l, mat_none, getFunctionId(p))) {
freeInstruction(l);
freeInstruction(r);
return -1;
}
- if (mat_add(ml, r, mat_none, getFunctionId(p))) {
+ if (mat_add(c, ml, r, mat_none, getFunctionId(p))) {
freeInstruction(r);
return -1;
}
@@ -944,7 +938,7 @@ mat_join2(MalBlkPtr mb, InstrPtr p, matl
}
static int
-mat_rangejoin(MalBlkPtr mb, InstrPtr p, matlist_t *ml, int m, int n)
+mat_rangejoin(Client c, MalBlkPtr mb, InstrPtr p, matlist_t *ml, int m, int n)
{
int tpe1 = getArgType(mb, p, 0), tpe2 = getArgType(mb, p, 1), k, nr = 1;
mat_t *mat = ml->v;
@@ -993,12 +987,12 @@ mat_rangejoin(MalBlkPtr mb, InstrPtr p,
r = pushArgument(mb, r, getArg(q, 1));
nr++;
}
- if (mb->errors || mat_add(ml, l, mat_none, getFunctionId(p))) {
+ if (mb->errors || mat_add(c, ml, l, mat_none, getFunctionId(p))) {
freeInstruction(l);
freeInstruction(r);
return -1;
}
- if (mat_add(ml, r, mat_none, getFunctionId(p))) {
+ if (mat_add(c, ml, r, mat_none, getFunctionId(p))) {
freeInstruction(r);
return -1;
}
@@ -1019,7 +1013,7 @@ join_split(Client cntxt, InstrPtr p, int
return 1;
len = strlen(getFunctionId(p));
- name = GDKmalloc(len + 3);
+ name = ma_alloc(cntxt->ta, len + 3);
if (!name)
return -2;
strncpy(name, getFunctionId(p), len - 7);
@@ -1037,7 +1031,6 @@ join_split(Client cntxt, InstrPtr p, int
else
break;
}
- GDKfree(name);
return res - 1;
}
@@ -1054,7 +1047,7 @@ mat_joinNxM(Client cntxt, MalBlkPtr mb,
InstrPtr l;
InstrPtr r;
mat_t *mat = ml->v;
- int *mats = (int *) GDKzalloc(sizeof(int) * args);
+ int *mats = (int *) ma_zalloc(cntxt->ta, sizeof(int) * args);
int nr_mats = 0, first = -1, res = 0;
if (!mats) {
@@ -1079,11 +1072,9 @@ mat_joinNxM(Client cntxt, MalBlkPtr mb,
int nr_mv1 = split;
if (split == -2) {
- GDKfree(mats);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]