Changeset: 17b6cb0c1cf5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=17b6cb0c1cf5
Modified Files:
        monetdb5/optimizer/opt_jit.c
        monetdb5/optimizer/opt_mergetable.c
Branch: default
Log Message:

Use addArgument in the situation where you have constructed
a MAL instruction not part of a MAL block


diffs (truncated from 401 to 300 lines):

diff --git a/monetdb5/optimizer/opt_jit.c b/monetdb5/optimizer/opt_jit.c
--- a/monetdb5/optimizer/opt_jit.c
+++ b/monetdb5/optimizer/opt_jit.c
@@ -65,7 +65,7 @@ OPTjitImplementation(Client cntxt, MalBl
                                q= getInstrPtr(mb, 
getVar(mb,getArg(p,2))->declared);
                        if( q && getArg(q,0) == getArg(p,2) && getModuleId(q) 
== algebraRef && getFunctionId(q) == projectionRef ){
                                getArg(p,2)=  getArg(q,2);
-                               p= pushArgument(mb,p, getArg(q,1));
+                               p= addArgument(mb, p, getArg(q,1));
                                if( OPTdebug &  OPTjit){
                                        fprintf(stderr, "#Optimize JIT case 
1\n");
                                        fprintInstruction(stderr, 
mb,0,p,LIST_MAL_ALL);
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
@@ -167,7 +167,7 @@ mat_pack(MalBlkPtr mb, matlist_t *ml, in
                r = newInstruction(mb, matRef, packRef);
                getArg(r,0) = getArg(ml->v[m].mi, 0);
                for(l=ml->v[m].mi->retc; l< ml->v[m].mi->argc; l++)
-                       r= pushArgument(mb,r, getArg(ml->v[m].mi,l));
+                       r= addArgument(mb,r, getArg(ml->v[m].mi,l));
        }
        matlist_pack(ml, m);
        pushInstruction(mb, r);
@@ -369,9 +369,9 @@ mat_delta(matlist_t *ml, MalBlkPtr mb, I
                if (evar == 1 && e >= 0 && mat[e].type == mat_slc && 
is_projectdelta) {
                        InstrPtr q = newInstruction(mb, algebraRef, 
projectionRef);
                        getArg(q, 0) = getArg(r, 0);
-                       q = pushArgument(mb, q, getArg(mat[e].mi, 0));
+                       q = addArgument(mb, q, getArg(mat[e].mi, 0));
                        getArg(r, 0) = newTmpVariable(mb, tpe);
-                       q = pushArgument(mb, q, getArg(r, 0));
+                       q = addArgument(mb, q, getArg(r, 0));
                        pushInstruction(mb, r);
                        pushInstruction(mb, q);
                        pushed = 1;
@@ -614,7 +614,7 @@ mat_setop(MalBlkPtr mb, InstrPtr p, matl
                        ttpe = getArgType(mb, mat[n].mi, 0);
                        for (j=1; j<mat[n].mi->argc; j++) {
                                if (getBatType(ttpe) != TYPE_oid || overlap(ml, 
getArg(mat[m].mi, k), getArg(mat[n].mi, j), k, j, 1)){
-                                       s = 
pushArgument(mb,s,getArg(mat[n].mi,j));
+                                       s = 
addArgument(mb,s,getArg(mat[n].mi,j));
                                }
                        }
                        if (s->retc == 1 && s->argc == 2){ /* only one input, 
change into an assignment */
@@ -1013,14 +1013,14 @@ mat_aggr(MalBlkPtr mb, InstrPtr p, mat_t
                getArg(q,0) = newTmpVariable(mb, tp);
                if (isAvg) 
                        q = pushReturn(mb, q, newTmpVariable(mb, tp2));
-               q = pushArgument(mb,q,getArg(mat[m].mi,k));
+               q = addArgument(mb,q,getArg(mat[m].mi,k));
                for (i = q->argc; i<p->argc; i++)
-                       q = pushArgument(mb,q,getArg(p,i));
+                       q = addArgument(mb,q,getArg(p,i));
                pushInstruction(mb,q);
                
-               r = pushArgument(mb,r,getArg(q,0));
+               r = addArgument(mb,r,getArg(q,0));
                if (isAvg) 
-                       u = pushArgument(mb,u,getArg(q,1));
+                       u = addArgument(mb,u,getArg(q,1));
        }
        pushInstruction(mb,r);
        if (isAvg)
@@ -1030,7 +1030,7 @@ mat_aggr(MalBlkPtr mb, InstrPtr p, mat_t
        if (getModuleId(p) == aggrRef && !isAvg) {
                s = newInstruction(mb, algebraRef, selectNotNilRef);
                getArg(s,0) = newTmpVariable(mb, battp);
-               s = pushArgument(mb, s, getArg(r,0));
+               s = addArgument(mb, s, getArg(r,0));
                pushInstruction(mb, s);
                r = s;
        }
@@ -1042,41 +1042,41 @@ mat_aggr(MalBlkPtr mb, InstrPtr p, mat_t
                /* lng w = sum counts */
                w = newInstruction(mb, aggrRef, sumRef);
                getArg(w,0) = newTmpVariable(mb, tp2);
-               w = pushArgument(mb, w, getArg(u, 0));
+               w = addArgument(mb, w, getArg(u, 0));
                pushInstruction(mb, w);
 
                /*  y=count = ifthenelse(w=count==0,NULL,w=count)  */
                cond = newInstruction(mb, calcRef, eqRef);
                getArg(cond,0) = newTmpVariable(mb, TYPE_bit);
-               cond = pushArgument(mb, cond, getArg(w, 0));
+               cond = addArgument(mb, cond, getArg(w, 0));
                cond = pushLng(mb, cond, 0);
                pushInstruction(mb,cond);
 
                y = newInstruction(mb, calcRef, ifthenelseRef);
                getArg(y,0) = newTmpVariable(mb, tp2);
-               y = pushArgument(mb, y, getArg(cond, 0));
+               y = addArgument(mb, y, getArg(cond, 0));
                y = pushNil(mb, y, tp2);
-               y = pushArgument(mb, y, getArg(w, 0));
+               y = addArgument(mb, y, getArg(w, 0));
                pushInstruction(mb,y);
 
                /* dbl v = double(count) */
                v = newInstruction(mb,  batcalcRef, dblRef);
                getArg(v,0) = newTmpVariable(mb, newBatType(TYPE_dbl));
-               v = pushArgument(mb, v, getArg(u, 0));
+               v = addArgument(mb, v, getArg(u, 0));
                pushInstruction(mb, v);
 
                /* dbl x = v / y */
                x = newInstruction(mb, batcalcRef, divRef);
                getArg(x,0) = newTmpVariable(mb, newBatType(TYPE_dbl));
-               x = pushArgument(mb, x, getArg(v, 0));
-               x = pushArgument(mb, x, getArg(y, 0));
+               x = addArgument(mb, x, getArg(v, 0));
+               x = addArgument(mb, x, getArg(y, 0));
                pushInstruction(mb, x);
 
                /* dbl w = avg * x */
                w = newInstruction(mb, batcalcRef, mulRef);
                getArg(w,0) = newTmpVariable(mb, battp);
-               w = pushArgument(mb, w, getArg(r, 0));
-               w = pushArgument(mb, w, getArg(x, 0));
+               w = addArgument(mb, w, getArg(r, 0));
+               w = addArgument(mb, w, getArg(x, 0));
                pushInstruction(mb, w);
 
                r = w;
@@ -1084,14 +1084,14 @@ mat_aggr(MalBlkPtr mb, InstrPtr p, mat_t
                /* filter nils */
                s = newInstruction(mb, algebraRef, selectNotNilRef);
                getArg(s,0) = newTmpVariable(mb, battp);
-               s = pushArgument(mb, s, getArg(r,0));
+               s = addArgument(mb, s, getArg(r,0));
                pushInstruction(mb, s);
                r = s;
        }
 
        s = newInstruction(mb, getModuleId(p), aggr_phase2(getFunctionId(p)));
        getArg(s,0) = getArg(p,0);
-       s = pushArgument(mb, s, getArg(r,0));
+       s = addArgument(mb, s, getArg(r,0));
        pushInstruction(mb, s);
 }
 
@@ -1160,7 +1160,7 @@ mat_group_project(MalBlkPtr mb, InstrPtr
                        return -1;
 
                /* pack the result into a mat */
-               ai1 = pushArgument(mb,ai1,getArg(q,0));
+               ai1 = addArgument(mb,ai1,getArg(q,0));
        }
        pushInstruction(mb, ai1);
 
@@ -1208,7 +1208,7 @@ mat_group_aggr(MalBlkPtr mb, InstrPtr p,
                getArg(q,0) = newTmpVariable(mb, tp);
                if (isAvg) {
                        getArg(q,1) = newTmpVariable(mb, tp2);
-                       q = pushArgument(mb, q, getArg(q,1)); /* push at end, 
create space */
+                       q = addArgument(mb, q, getArg(q,1)); /* push at end, 
create space */
                        q->retc = 2;
                        getArg(q,q->argc-1) = getArg(q,q->argc-2);
                        getArg(q,q->argc-2) = getArg(q,q->argc-3);
@@ -1219,9 +1219,9 @@ mat_group_aggr(MalBlkPtr mb, InstrPtr p,
                pushInstruction(mb,q);
 
                /* pack the result into a mat */
-               ai1 = pushArgument(mb,ai1,getArg(q,0));
+               ai1 = addArgument(mb,ai1,getArg(q,0));
                if (isAvg)
-                       ai10 = pushArgument(mb,ai10,getArg(q,1));
+                       ai10 = addArgument(mb,ai10,getArg(q,1));
        }
        pushInstruction(mb, ai1);
        if (isAvg)
@@ -1234,9 +1234,9 @@ mat_group_aggr(MalBlkPtr mb, InstrPtr p,
                /* lng s = sum counts */
                s = newInstruction(mb, aggrRef, subsumRef);
                getArg(s,0) = newTmpVariable(mb, tp2);
-               s = pushArgument(mb, s, getArg(ai10, 0));
-               s = pushArgument(mb, s, mat[g].mv);
-               s = pushArgument(mb, s, mat[e].mv);
+               s = addArgument(mb, s, getArg(ai10, 0));
+               s = addArgument(mb, s, mat[g].mv);
+               s = addArgument(mb, s, mat[e].mv);
                s = pushBit(mb, s, 1); /* skip nils */
                s = pushBit(mb, s, 1);
                pushInstruction(mb,s);
@@ -1244,52 +1244,52 @@ mat_group_aggr(MalBlkPtr mb, InstrPtr p,
                /*  w=count = ifthenelse(s=count==0,NULL,s=count)  */
                cond = newInstruction(mb, batcalcRef, eqRef);
                getArg(cond,0) = newTmpVariable(mb, newBatType(TYPE_bit));
-               cond = pushArgument(mb, cond, getArg(s, 0));
+               cond = addArgument(mb, cond, getArg(s, 0));
                cond = pushLng(mb, cond, 0);
                pushInstruction(mb,cond);
 
                w = newInstruction(mb, batcalcRef, ifthenelseRef);
                getArg(w,0) = newTmpVariable(mb, tp2);
-               w = pushArgument(mb, w, getArg(cond, 0));
+               w = addArgument(mb, w, getArg(cond, 0));
                w = pushNil(mb, w, TYPE_lng);
-               w = pushArgument(mb, w, getArg(s, 0));
+               w = addArgument(mb, w, getArg(s, 0));
                pushInstruction(mb,w);
 
                /* fetchjoin with groups */
                r = newInstruction(mb, algebraRef, projectionRef);
                getArg(r, 0) = newTmpVariable(mb, tp2);
-               r = pushArgument(mb, r, mat[g].mv);
-               r = pushArgument(mb, r, getArg(w,0));
+               r = addArgument(mb, r, mat[g].mv);
+               r = addArgument(mb, r, getArg(w,0));
                pushInstruction(mb,r);
                s = r;
 
                /* dbl v = double(count) */
                v = newInstruction(mb, batcalcRef, dblRef);
                getArg(v,0) = newTmpVariable(mb, newBatType(TYPE_dbl));
-               v = pushArgument(mb, v, getArg(ai10, 0));
+               v = addArgument(mb, v, getArg(ai10, 0));
                pushInstruction(mb, v);
 
                /* dbl r = v / s */
                r = newInstruction(mb, batcalcRef, divRef);
                getArg(r,0) = newTmpVariable(mb, newBatType(TYPE_dbl));
-               r = pushArgument(mb, r, getArg(v, 0));
-               r = pushArgument(mb, r, getArg(s, 0));
+               r = addArgument(mb, r, getArg(v, 0));
+               r = addArgument(mb, r, getArg(s, 0));
                pushInstruction(mb,r);
 
                /* dbl s = avg * r */
                s = newInstruction(mb, batcalcRef, mulRef);
                getArg(s,0) = newTmpVariable(mb, tp);
-               s = pushArgument(mb, s, getArg(ai1, 0));
-               s = pushArgument(mb, s, getArg(r, 0));
+               s = addArgument(mb, s, getArg(ai1, 0));
+               s = addArgument(mb, s, getArg(r, 0));
                pushInstruction(mb,s);
 
                ai1 = s;
        }
        ai2 = newInstruction(mb, aggrRef, aggr2);
        getArg(ai2,0) = getArg(p,0);
-       ai2 = pushArgument(mb, ai2, getArg(ai1, 0));
-       ai2 = pushArgument(mb, ai2, mat[g].mv);
-       ai2 = pushArgument(mb, ai2, mat[e].mv);
+       ai2 = addArgument(mb, ai2, getArg(ai1, 0));
+       ai2 = addArgument(mb, ai2, mat[g].mv);
+       ai2 = addArgument(mb, ai2, mat[e].mv);
        ai2 = pushBit(mb, ai2, 1); /* skip nils */
        if (getFunctionId(p) != subminRef && getFunctionId(p) != submaxRef)
                ai2 = pushBit(mb, ai2, 1);
@@ -1317,9 +1317,9 @@ mat_pack_group(MalBlkPtr mb, matlist_t *
                getArg(grp,0) = mat[ogrp].mv;
                grp = pushReturn(mb, grp, mat[oext].mv);
                grp = pushReturn(mb, grp, newTmpVariable(mb, 
newBatType(TYPE_lng)));
-               grp = pushArgument(mb, grp, getArg(mat[attr].mi, 0));
+               grp = addArgument(mb, grp, getArg(mat[attr].mi, 0));
                if (cur) 
-                       grp = pushArgument(mb, grp, getArg(cur, 0));
+                       grp = addArgument(mb, grp, getArg(cur, 0));
                pushInstruction(mb, grp);
                cur = grp;
        }
@@ -1353,16 +1353,16 @@ mat_group_attr(MalBlkPtr mb, matlist_t *
                        InstrPtr q = newInstruction(mb, algebraRef, 
projectionRef);
 
                        getArg(r, 0) = newTmpVariable(mb, newBatType(TYPE_oid));
-                       r = pushArgument(mb, r, getArg(cext,k));
-                       r = pushArgument(mb, r, getArg(ml->v[ogrp].mi,k));
+                       r = addArgument(mb, r, getArg(cext,k));
+                       r = addArgument(mb, r, getArg(ml->v[ogrp].mi,k));
                        pushInstruction(mb,r);
 
                        getArg(q, 0) = newTmpVariable(mb, atp);
-                       q = pushArgument(mb, q, getArg(r,0));
-                       q = pushArgument(mb, q, getArg(ml->v[a].mi,k));
+                       q = addArgument(mb, q, getArg(r,0));
+                       q = addArgument(mb, q, getArg(ml->v[a].mi,k));
                        pushInstruction(mb,q);
        
-                       attr = pushArgument(mb, attr, getArg(q, 0)); 
+                       attr = addArgument(mb, attr, getArg(q, 0)); 
                }
                if (push)
                        pushInstruction(mb,attr);
@@ -1421,19 +1421,19 @@ mat_group_new(MalBlkPtr mb, InstrPtr p, 
                        return -1;
 
                /* add result to mats */
-               r0 = pushArgument(mb,r0,getArg(q,0));
-               r1 = pushArgument(mb,r1,getArg(q,1));
-               r2 = pushArgument(mb,r2,getArg(q,2));
+               r0 = addArgument(mb,r0,getArg(q,0));
+               r1 = addArgument(mb,r1,getArg(q,1));
+               r2 = addArgument(mb,r2,getArg(q,2));
 
                r = newInstruction(mb, algebraRef, projectionRef);
                getArg(r, 0) = newTmpVariable(mb, atp);
-               r = pushArgument(mb, r, getArg(q,1));
-               r = pushArgument(mb, r, getArg(ml->v[b].mi,i));
+               r = addArgument(mb, r, getArg(q,1));
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to