Changeset: 56c41dbda55f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=56c41dbda55f
Modified Files:
monetdb5/optimizer/opt_dataflow.c
Branch: default
Log Message:
Look at bit set properly
This solves spurious crashes when variables are used multiple times
without a proper language.pass() finalization action.
diffs (28 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
@@ -236,7 +236,7 @@ OPTdataflowImplementation(Client cntxt,
// collect BAT variables garbage collected
within the block
if( !simple)
for( k=q->retc; k<q->argc; k++){
- if (getState(states,q,k) ==
VAR2READ && getEndScope(mb,getArg(q,k)) == j &&
isaBatType(getVarType(mb,getArg(q,k))) )
+ if (getState(states,q,k) &
VAR2READ && getEndScope(mb,getArg(q,k)) == j &&
isaBatType(getVarType(mb,getArg(q,k))) )
top =
dflowGarbagesink(cntxt, mb, getArg(q,k), sink, top);
}
}
@@ -293,11 +293,11 @@ OPTdataflowImplementation(Client cntxt,
setState(states, p,1, VARBLOCK);
for ( k = p->retc; k< p->argc; k++)
if( !isVarConstant(mb,getArg(p,k)) ){
- if( getState(states, p, k) == VARREAD)
- setState(states, p, k, VAR2READ);
+ if( getState(states, p, k) & VARREAD)
+ setState(states, p, k, (VARREAD | VAR2READ));
else
- if( getState(states, p, k) == VARWRITE)
- setState(states, p ,k, VARREAD);
+ if( getState(states, p, k) & VARWRITE)
+ setState(states, p ,k, (VARREAD | VARWRITE));
}
#ifdef DEBUG_OPT_DATAFLOW
fprintf(stderr,"# variable states\n");
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list