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