Changeset: e1ffb973e73b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e1ffb973e73b
Modified Files:
MonetDB5/src/mal/mal_interpreter.mx
Branch: default
Log Message:
Merge head
Prepare the dataflow for proper return to queue.
diffs (32 lines):
diff -r ddd6173a3338 -r e1ffb973e73b MonetDB5/src/mal/mal_interpreter.mx
--- a/MonetDB5/src/mal/mal_interpreter.mx Sun Oct 24 10:00:14 2010 +0200
+++ b/MonetDB5/src/mal/mal_interpreter.mx Mon Oct 25 16:46:03 2010 +0200
@@ -576,6 +576,7 @@
#define DFLOWpending 0 /* runnable */
#define DFLOWrunning 1 /* currently in progress */
#define DFLOWwrapup 2 /* done! */
+#define DFLOWretry 3 /* reschedule */
typedef struct queue {
int size; /* size of queue */
@@ -1051,6 +1052,7 @@
mnstr_printf(GDKout,"#DFLOWrequeue
instr %d pool " LLFMT " claim "LLFMT"\n#", THRgettid(), memorypool,
argclaim+retclaim);
printInstruction(GDKstdout, mb, 0, pci,
LIST_MAL_STMT | LIST_MAPI);
}
+ /* actually should use DFLOWretry status */
throw(MAL,"DFLOWadmission","failed");
}
}
@@ -1346,6 +1348,12 @@
while(queued || todo != done){
PARDEBUG mnstr_printf(GDKstdout,"#waiting for results, queued
%d todo %d done %d\n", queued,todo,done);
f = q_dequeue(flow->done);
+ if ( f->status == DFLOWretry ){
+ /* reschedule the instruction */
+ f->status = DFLOWrunning;
+ q_requeue(flow->todo, f);
+ continue;
+ }
if ( f->flow->stk->wrapup ) /* clean up whatever is called for
*/
(*f->flow->stk->wrapup)(f->flow->cntxt, f->flow->mb,
f->flow->stk, getInstrPtr(flow->mb, abs(f->pc)));
f->status = DFLOWwrapup;
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list