Changeset: e75706836c37 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e75706836c37
Modified Files:
monetdb5/optimizer/opt_dataflow.c
monetdb5/optimizer/opt_dataflow.h
monetdb5/optimizer/opt_multiplex.c
Branch: default
Log Message:
Make private function static, allow manifold in dataflow
diffs (73 lines):
diff --git a/monetdb5/optimizer/opt_dataflow.c
b/monetdb5/optimizer/opt_dataflow.c
--- a/monetdb5/optimizer/opt_dataflow.c
+++ b/monetdb5/optimizer/opt_dataflow.c
@@ -23,6 +23,7 @@
#include "opt_dataflow.h"
#include "mal_instruction.h"
#include "mal_interpreter.h"
+#include "manifold.h"
/*
* dataflow processing incurs overhead and is only
@@ -155,9 +156,9 @@ dflowAssignConflict(InstrPtr p, int pc,
*/
/* a limited set of MAL instructions may appear in the dataflow block*/
-int
-dataflowConflict(InstrPtr p) {
- if ( p->token == ENDsymbol || getFunctionId(p) == multiplexRef ||
blockCntrl(p) || blockStart(p) || blockExit(p))
+static int
+dataflowConflict(Client cntxt, MalBlkPtr mb,InstrPtr p) {
+ if ( p->token == ENDsymbol || (getFunctionId(p) == multiplexRef &&
MANIFOLDtypecheck(cntxt,mb,p)== NULL) || blockCntrl(p) || blockStart(p) ||
blockExit(p))
return TRUE;
switch(p->token){
case ASSIGNsymbol:
@@ -240,7 +241,7 @@ OPTdataflowImplementation(Client cntxt,
assert(p);
conflict = 0;
- if ( dataflowConflict(p) || (conflict =
dflowAssignConflict(p,i,assigned,eolife)) ) {
+ if ( dataflowConflict(cntxt,mb,p) || (conflict =
dflowAssignConflict(p,i,assigned,eolife)) ) {
/* close previous flow block */
if ( !(simple = simpleFlow(old,start,i))){
for( j=start ; j<i; j++){
diff --git a/monetdb5/optimizer/opt_dataflow.h
b/monetdb5/optimizer/opt_dataflow.h
--- a/monetdb5/optimizer/opt_dataflow.h
+++ b/monetdb5/optimizer/opt_dataflow.h
@@ -25,7 +25,6 @@
#define OPTDEBUGdataflow if ( optDebug & (1 <<DEBUG_OPT_DATAFLOW) )
opt_export void removeDataflow(MalBlkPtr mb);
-opt_export int dataflowConflict(InstrPtr p);
opt_export int OPTdataflowImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr
stk, InstrPtr p);
#endif
diff --git a/monetdb5/optimizer/opt_multiplex.c
b/monetdb5/optimizer/opt_multiplex.c
--- a/monetdb5/optimizer/opt_multiplex.c
+++ b/monetdb5/optimizer/opt_multiplex.c
@@ -229,7 +229,12 @@ OPTmultiplexImplementation(Client cntxt,
if (msg == MAL_SUCCEED && getModuleId(p) == malRef &&
getFunctionId(p) == multiplexRef) {
-
+ if ( MANIFOLDtypecheck(cntxt,mb,p) != NULL){
+ setFunctionId(p, manifoldRef);
+ pushInstruction(mb, p);
+ actions++;
+ continue;
+ }
msg = OPTexpandMultiplex(cntxt, mb, stk, p);
if( msg== MAL_SUCCEED){
freeInstruction(p);
@@ -237,11 +242,6 @@ OPTmultiplexImplementation(Client cntxt,
actions++;
continue;
}
- if ( MANIFOLDtypecheck(cntxt,mb,stk,p) != NULL){
- setFunctionId(p, manifoldRef);
- actions++;
- continue;
- }
pushInstruction(mb, p);
actions++;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list