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]

Reply via email to