Changeset: c0a9461c941d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c0a9461c941d
Modified Files:
        MonetDB5/src/mal/mal_interpreter.mx
Branch: Oct2010
Log Message:

cleaned-up & streamlined code in DFLOWeligible()

Only minor improvements for tests sql/src/test/rdf/Tests/q?_v.sql .


diffs (58 lines):

diff -r f5c8a35c3a48 -r c0a9461c941d MonetDB5/src/mal/mal_interpreter.mx
--- a/MonetDB5/src/mal/mal_interpreter.mx       Thu Oct 07 14:18:37 2010 +0200
+++ b/MonetDB5/src/mal/mal_interpreter.mx       Thu Oct 07 14:27:34 2010 +0200
@@ -1240,29 +1240,43 @@
 
        for(j=0; j<p->argc && !blocked; j++) {
                int var = getArg(p,j);
-               if ( j >= p->retc && flow->blocked[var] )
-                       blocked++;
-               if (j < p->retc && flow->inuse[var] )
-                       blocked++;
+               if ( j >= p->retc && flow->blocked[var] ) {
+                       blocked = 1;
+                       break;
+               }
+               else
+               if ( j < p->retc && flow->inuse[var] ) {
+                       blocked = 1;
+                       break;
+               }
                else
                if ( getEndOfLife(flow->mb,var)  == fs[i].pc ) {
                        /* make sure all instructions interested have already 
been executed */
                        /* and the eoscope variables are not used anymore */
 
-                       blocked += flow->inuse[var] != 0;
-                       for ( k=0; k < i && !blocked; k++)
-                               if (fs[k].status != DFLOWwrapup && fs[k].pc >= 
0 ) /* pc = -1 could be the case before wrapup is set*/
-                                       blocked += 
!isNotUsedIn(getInstrPtr(flow->mb, fs[k].pc), 0, var);
+                       if (flow->inuse[var] != 0) {
+                               blocked = 1;
+                               break;
+                       }
+                       else
+                                for ( k=0; k < i ; k++)
+                                        if ( fs[k].status != DFLOWwrapup && 
fs[k].pc >= 0  /* pc = -1 could be the case before wrapup is set*/
+                                            && 
!isNotUsedIn(getInstrPtr(flow->mb, fs[k].pc), 0, var) ) {
+                                               blocked = 1;
+                                               break;
+                                       }
                } else {
                        /* handle the dependencies sketched above */
                        /* search the statement that assigns a value to the 
argument or target */
                        /* it should have been finished already */
-                       for (l = i-1 ; l >= flow->assign[var] && !blocked; l--)
+                       for (l = flow->assign[var]; l < i && !blocked; l++)
                                if ( fs[l].status != DFLOWwrapup && fs[l].pc >= 
0){
                                        q= getInstrPtr(flow->mb, fs[l].pc);
-                                       for ( k=0; k < q->retc && !blocked; k++)
-                                               if ( getArg(q,k) == var )
+                                       for ( k=0; k < q->retc; k++)
+                                               if ( getArg(q,k) == var ) {
                                                        blocked = 1;
+                                                       break;
+                                               }
                                }
                }
        }
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to