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

Reply via email to