Changeset: f78387989bf2 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f78387989bf2
Modified Files:
        monetdb5/mal/mal_builder.c
        monetdb5/mal/mal_builder.h
        monetdb5/optimizer/opt_octopus.mx
Branch: default
Log Message:

Add newReturnStmt wrapper


diffs (70 lines):

diff --git a/monetdb5/mal/mal_builder.c b/monetdb5/mal/mal_builder.c
--- a/monetdb5/mal/mal_builder.c
+++ b/monetdb5/mal/mal_builder.c
@@ -99,6 +99,17 @@ newStmtId(MalBlkPtr mb, char *id, char *
 }
 
 InstrPtr
+newReturnStmt(MalBlkPtr mb)
+{
+       InstrPtr q = newInstruction(mb,ASSIGNsymbol);
+
+       getArg(q,0)= newTmpVariable(mb,TYPE_any);
+       pushInstruction(mb, q);
+       q->barrier= RETURNsymbol;
+       return q;
+}
+
+InstrPtr
 newFcnCall(MalBlkPtr mb, char *mod, char *fcn)
 {
        InstrPtr q = newAssignment(mb);
diff --git a/monetdb5/mal/mal_builder.h b/monetdb5/mal/mal_builder.h
--- a/monetdb5/mal/mal_builder.h
+++ b/monetdb5/mal/mal_builder.h
@@ -34,6 +34,7 @@ mal_export InstrPtr newComment(MalBlkPtr
 mal_export InstrPtr newCatchStmt(MalBlkPtr mb, str nme);
 mal_export InstrPtr newRaiseStmt(MalBlkPtr mb, str nme);
 mal_export InstrPtr newExitStmt(MalBlkPtr mb, str nme);
+mal_export InstrPtr newReturnStmt(MalBlkPtr mb);
 mal_export InstrPtr newFcnCall(MalBlkPtr mb, char *mod, char *fcn);
 mal_export InstrPtr pushInt(MalBlkPtr mb, InstrPtr q, int val);
 mal_export InstrPtr pushWrd(MalBlkPtr mb, InstrPtr q, wrd val);
diff --git a/monetdb5/optimizer/opt_octopus.mx 
b/monetdb5/optimizer/opt_octopus.mx
--- a/monetdb5/optimizer/opt_octopus.mx
+++ b/monetdb5/optimizer/opt_octopus.mx
@@ -466,13 +466,12 @@ OCTnewTentacle(Client cntxt, MalBlkPtr m
        }
 
        /* return stmt */
-       tp = newAssignment(tmb);
+       tp = newReturnStmt(tmb);
        getArg(tp,0) = getArg(tsig,0);
        for ( i = 1; i < tsig->retc; i++)
                tp = pushReturn(tmb, tp, getArg(tsig,i));
        for ( i = 0; i < ocl->retcnt; i++)
                tp = pushArgument(tmb, tp, alias[ocl->ret[i]]);
-       tp->barrier = RETURNsymbol;
 
        pushEndInstruction(tmb);
        tp = newStmt(tmb, optimizerRef, putName("deadcode", 8));
@@ -815,8 +814,7 @@ OCTnewBidding(Client cntxt, int tcnt)
        getArg(q,0) = bexit;
 
        /* return (res0, ...) := (lres0, ...); */
-       q = newAssignment(sm);
-       q->barrier= RETURNsymbol;
+       q = newReturnStmt(sm);
        getArg(q,0)= getArg(sig,0);
        for (i = 1; i < sig->retc; i++ )
                q = pushReturn(sm,q,getArg(sig,i));
@@ -944,8 +942,7 @@ OCTnewExec(Client cntxt, MalBlkPtr mb, M
        newExitStmt(sm, "ANYexception");
 
        /* return exec_qry; */
-       q= newAssignment(sm);
-       q->barrier= RETURNsymbol;
+       q= newReturnStmt(sm);
        getArg(q,0)= res[0];
        for (i = 1; i < sig->retc; i++ )
                q = pushReturn(sm,q,res[i]);
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to