Changeset: 0910ef68b0d7 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0910ef68b0d7
Modified Files:
        monetdb5/mal/mal_dataflow.c
        monetdb5/mal/mal_factory.c
        monetdb5/mal/mal_interpreter.c
        monetdb5/mal/mal_interpreter.h
        monetdb5/mal/mal_recycle.c
        monetdb5/optimizer/opt_dataflow.c
        monetdb5/optimizer/opt_evaluate.c
        monetdb5/scheduler/run_pipeline.c
        sql/backends/monet5/datacell/petrinet.c
        sql/backends/monet5/datacell/receptor.c
        sql/backends/monet5/sql_emptyset.c
Branch: default
Log Message:

Reduce number of arguments.
Code cleanup action.


diffs (201 lines):

diff --git a/monetdb5/mal/mal_dataflow.c b/monetdb5/mal/mal_dataflow.c
--- a/monetdb5/mal/mal_dataflow.c
+++ b/monetdb5/mal/mal_dataflow.c
@@ -927,7 +927,7 @@ runDFLOWworker(void *t)
  * blocking counter should be decremented upon finishing it.
  */
 static void
-DFLOWinit(DataFlow flow, Client cntxt, MalBlkPtr mb, MalStkPtr stk, int size)
+DFLOWinitBlk(DataFlow flow, Client cntxt, MalBlkPtr mb, MalStkPtr stk, int 
size)
 {
        int pc, i, j, k, l, n, etop = 0;
        int *assign;
@@ -1227,7 +1227,7 @@ str runMALdataflow(Client cntxt, MalBlkP
        size = DFLOWgraphSize(mb, startpc, stoppc);
        flow->nodes = (int*)GDKzalloc(sizeof(int) * size);
        flow->edges = (int*)GDKzalloc(sizeof(int) * size);
-       DFLOWinit(flow, cntxt, mb, stk, size);
+       DFLOWinitBlk(flow, cntxt, mb, stk, size);
 
        ret = DFLOWscheduler(flow);
 
diff --git a/monetdb5/mal/mal_factory.c b/monetdb5/mal/mal_factory.c
--- a/monetdb5/mal/mal_factory.c
+++ b/monetdb5/mal/mal_factory.c
@@ -383,7 +383,7 @@ runFactory(Client cntxt, MalBlkPtr mb, M
         } else {
                if( cmd && cntxt->timer == 0)
                        mdbStep(cntxt,mb,pl->stk,pl->pc);
-               msg = reenterMAL(cntxt, mb, pl->pc, -1, pl->stk, 0, 0);
+               msg = reenterMAL(cntxt, mb, pl->pc, -1, pl->stk);
        }
        /* propagate change in debugging status */
        if (cmd && pl->stk && pl->stk->cmd != cmd && cmd != 'x')
@@ -458,7 +458,7 @@ callFactory(Client cntxt, MalBlkPtr mb, 
        }
        if( flag && cntxt->timer == 0)
                mdbStep(cntxt,mb,pl->stk,pl->pc);
-       ret=  reenterMAL(cntxt, mb, pl->pc, -1, pl->stk, 0, 0);
+       ret=  reenterMAL(cntxt, mb, pl->pc, -1, pl->stk);
        /* garbage collect the string arguments, these positions
           will simply be overwritten the next time.
        for (i = psig->retc; i < psig->argc; i++)
diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c
--- a/monetdb5/mal/mal_interpreter.c
+++ b/monetdb5/mal/mal_interpreter.c
@@ -445,8 +445,7 @@ str runMAL(Client cntxt, MalBlkPtr mb, M
  * answer to direct their actions. Or, a dataflow scheduler could step in
  * to enforce a completely different execution order.
  */
-str reenterMAL(Client cntxt, MalBlkPtr mb, int startpc, int stoppc,
-                          MalStkPtr stk, MalStkPtr env, InstrPtr pcicaller)
+str reenterMAL(Client cntxt, MalBlkPtr mb, int startpc, int stoppc, MalStkPtr 
stk)
 {
        str ret;
        int keepAlive;
@@ -454,14 +453,11 @@ str reenterMAL(Client cntxt, MalBlkPtr m
        if (stk == NULL)
                throw(MAL, "mal.interpreter", MAL_STACK_FAIL);
        keepAlive = stk->keepAlive;
-       if (env && stk && stk->cmd != 'f') stk->cmd = env->cmd;
-
-       ret = runMALsequence(cntxt, mb, startpc, stoppc, stk, env, pcicaller);
+       ret = runMALsequence(cntxt, mb, startpc, stoppc, stk, 0, 0);
 
        /* pass the new debug mode to the caller */
-       if (env && stk->cmd != 'f') env->cmd = stk->cmd;
        if (keepAlive == 0 && garbageControl(getInstrPtr(mb, 0)))
-               garbageCollector(cntxt, mb, stk, env != stk);
+               garbageCollector(cntxt, mb, stk, stk != 0);
        return ret;
 }
 
diff --git a/monetdb5/mal/mal_interpreter.h b/monetdb5/mal/mal_interpreter.h
--- a/monetdb5/mal/mal_interpreter.h
+++ b/monetdb5/mal/mal_interpreter.h
@@ -40,7 +40,7 @@ mal_export void showErrors(Client cntxt)
 mal_export MalStkPtr prepareMALstack(MalBlkPtr mb, int size);
 mal_export str runMAL(Client c, MalBlkPtr mb, MalBlkPtr mbcaller, MalStkPtr 
env);
 mal_export str runMALsequence(Client cntxt, MalBlkPtr mb, int startpc, int 
stoppc, MalStkPtr stk, MalStkPtr env, InstrPtr pcicaller);
-mal_export str reenterMAL(Client cntxt, MalBlkPtr mb, int startpc, int stoppc, 
MalStkPtr stk, MalStkPtr env, InstrPtr pcicaller);
+mal_export str reenterMAL(Client cntxt, MalBlkPtr mb, int startpc, int stoppc, 
MalStkPtr stk);
 mal_export str callMAL(Client cntxt, MalBlkPtr mb, MalStkPtr *glb, ValPtr 
argv[], char debug);
 mal_export void garbageElement(Client cntxt, ValPtr v);
 mal_export void garbageCollector(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
int flag);
diff --git a/monetdb5/mal/mal_recycle.c b/monetdb5/mal/mal_recycle.c
--- a/monetdb5/mal/mal_recycle.c
+++ b/monetdb5/mal/mal_recycle.c
@@ -2220,7 +2220,7 @@ RECYCLEreuse(Client cntxt, MalBlkPtr mb,
         s->keepAlive = TRUE;
         k = p->recycle;
         p->recycle = NO_RECYCLING; /* No recycling for instructions with       
 subsumption */
-        (void) reenterMAL(cntxt,mb,i,i+1,s,0,0);
+        (void) reenterMAL(cntxt,mb,i,i+1,s);
         /* restore the situation */
 /*        ticks = GDKusec() - ticks; */
         p->recycle= k;
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
@@ -92,6 +92,23 @@ dflowAssignTest(Lifespan span, InstrPtr 
        return 0;
 }
 
+/* a limited set of MAL instructions may appear in the dataflow block*/
+static int
+dflowInstruction(InstrPtr p) {
+       switch(p->token){
+       case ASSIGNsymbol:
+       case PATcall:
+       case CMDcall:
+       case FACcall:
+       case FCNcall:
+       case NOOPsymbol:
+       case REMsymbol:
+               return ! (      hasSideEffects(p,FALSE) || isUnsafeFunction(p) 
|| 
+                                       blockCntrl(p) || (getModuleId(p) != 
sqlRef && isUpdateInstruction(p)));
+       }
+       return 0;
+}
+
 int
 OPTdataflowImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
p)
 {
@@ -140,7 +157,7 @@ OPTdataflowImplementation(Client cntxt, 
 
                if (p->token == ENDsymbol)
                        break;
-               if (hasSideEffects(p,FALSE) || isUnsafeFunction(p) || 
blockCntrl(p) || (!dumbcopy && blockExit(p)) || (getModuleId(p) != sqlRef && 
isUpdateInstruction(p)) || dflowAssignTest(span,p,i) ){
+               if (!dflowInstruction(p) || (!dumbcopy && blockExit(p)) || 
dflowAssignTest(span,p,i) ){
                        /* close old flow block */
                        if (flowblock){
                                int sf = simpleFlow(old,start,i);
diff --git a/monetdb5/optimizer/opt_evaluate.c 
b/monetdb5/optimizer/opt_evaluate.c
--- a/monetdb5/optimizer/opt_evaluate.c
+++ b/monetdb5/optimizer/opt_evaluate.c
@@ -143,7 +143,7 @@ OPTevaluateImplementation(Client cntxt, 
                        p->barrier = 0;
                        profiler = malProfileMode;      /* we don't trace it */
                        malProfileMode = 0;
-                       msg = reenterMAL(cntxt, mb, i, i + 1, env, 0, 0);
+                       msg = reenterMAL(cntxt, mb, i, i + 1, env);
                        malProfileMode= profiler;
                        p->barrier = barrier;
                        OPTDEBUGevaluate {
diff --git a/monetdb5/scheduler/run_pipeline.c 
b/monetdb5/scheduler/run_pipeline.c
--- a/monetdb5/scheduler/run_pipeline.c
+++ b/monetdb5/scheduler/run_pipeline.c
@@ -278,7 +278,7 @@ RUNsqlbind(Client cntxt, MalBlkPtr mb, M
        for (i = 0; i < mb->stop; i++) {
                p = getInstrPtr(mb, i);
                if (p->fcn == f) {
-                       if ((msg = reenterMAL(cntxt, mb, i, i + 1, stk, 0, 0)))
+                       if ((msg = reenterMAL(cntxt, mb, i, i + 1, stk)))
                                break;
                        /* fetch the BAT properties and turn off this 
instruction */
                        p->token = NOOPsymbol;
diff --git a/sql/backends/monet5/datacell/petrinet.c 
b/sql/backends/monet5/datacell/petrinet.c
--- a/sql/backends/monet5/datacell/petrinet.c
+++ b/sql/backends/monet5/datacell/petrinet.c
@@ -592,7 +592,7 @@ reinit:
                                (void) 
MTIMEcurrent_timestamp(&baskets[idx].seen);
                                t = GDKusec();
                                pnet[i].cycles++;
-                               msg = reenterMAL(cntxt, mb, pnet[i].pc, 
pnet[i].pc + 1, glb, 0, 0);
+                               msg = reenterMAL(cntxt, mb, pnet[i].pc, 
pnet[i].pc + 1, glb);
                                pnet[i].time += GDKusec() - t + analysis;   /* 
keep around in microseconds */
                                if (msg != MAL_SUCCEED && !strstr(msg, "too 
early")) {
                                        char buf[BUFSIZ];
@@ -604,7 +604,7 @@ reinit:
                                        pnet[i].enabled = -1;
                                        /* abort current transaction  */
                                        if ( abortpc )
-                                               msg = reenterMAL(cntxt, mb, 
abortpc, abortpc + 1, glb, 0, 0);
+                                               msg = reenterMAL(cntxt, mb, 
abortpc, abortpc + 1, glb);
                                } else {
                                        (void) 
MTIMEcurrent_timestamp(&pnet[i].seen);
                                        for (j = 0; j < pnet[i].srctop; j++) {
diff --git a/sql/backends/monet5/datacell/receptor.c 
b/sql/backends/monet5/datacell/receptor.c
--- a/sql/backends/monet5/datacell/receptor.c
+++ b/sql/backends/monet5/datacell/receptor.c
@@ -635,7 +635,7 @@ RCgeneratorInternal(Receptor rc)
                case BSKTERROR:
                        return;
                case BSKTRUNNING:
-                       reenterMAL(cntxt, mb, pc, pc + 1, glb, 0, 0);
+                       reenterMAL(cntxt, mb, pc, pc + 1, glb);
                }
 
 }
diff --git a/sql/backends/monet5/sql_emptyset.c 
b/sql/backends/monet5/sql_emptyset.c
--- a/sql/backends/monet5/sql_emptyset.c
+++ b/sql/backends/monet5/sql_emptyset.c
@@ -316,7 +316,7 @@ SQLemptyset(Client cntxt, MalBlkPtr mb, 
                                actions, mb->errors,start+1);
                        printFunction(cntxt->fdout, mb,0, LIST_MAL_STMT | 
LIST_MAPI);
 #endif
-                       msg= reenterMAL(cntxt,mb,start+1,0,stk,0,0);
+                       msg= reenterMAL(cntxt,mb,start+1,0,stk);
                }
 #ifdef DEBUG_SQL_EMPTYSET
                else mnstr_printf(cntxt->fdout,"#optimizer fails:%s\n",msg);
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to