Changeset: ff6a60c00d6c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ff6a60c00d6c
Modified Files:
monetdb5/modules/mal/language.c
monetdb5/modules/mal/language.h
monetdb5/modules/mal/language.mal
Branch: xid
Log Message:
Introduce dataflow wait primitive
BAT decompression should be postponed until the next instruction
is ready for execution. In a dataflow setting, this means we have
to wait for all arguments to be ready, otherwise, the decompressed
column stays alive to long.
diffs (55 lines):
diff --git a/monetdb5/modules/mal/language.c b/monetdb5/modules/mal/language.c
--- a/monetdb5/modules/mal/language.c
+++ b/monetdb5/modules/mal/language.c
@@ -138,6 +138,26 @@ MALstartDataflow( Client cntxt, MalBlkPt
return msg;
}
+str
+MALsyncDataflow( Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{
+ BAT *b;
+ int *ret;
+ int i;
+
+ (void) cntxt;
+ (void) mb;
+ if ( pci->retc * 2 != pci->argc )
+ throw(MAL,"language.sync","Input/output arguments unbalanced");
+ for ( i =0; i < pci->retc; i++){
+ if ((b = BATdescriptor(*(int*) getArgReference(stk, pci,
pci->retc + i))) == NULL)
+ throw(MAL, "language.sync", RUNTIME_OBJECT_MISSING);
+ ret = (int*) getArgReference(stk,pci,i);
+ BBPkeepref(*ret = b->batCacheid);
+ }
+ return MAL_SUCCEED;
+}
+
str
CMDregisterFunction(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
diff --git a/monetdb5/modules/mal/language.h b/monetdb5/modules/mal/language.h
--- a/monetdb5/modules/mal/language.h
+++ b/monetdb5/modules/mal/language.h
@@ -47,6 +47,7 @@ language_export str MALassertSht(int *re
language_export str MALassertInt(int *ret, int *val, str *msg);
language_export str MALassertLng(int *ret, lng *val, str *msg);
language_export str MALstartDataflow( Client cntxt, MalBlkPtr mb, MalStkPtr
stk, InstrPtr pci);
+language_export str MALsyncDataflow( Client cntxt, MalBlkPtr mb, MalStkPtr
stk, InstrPtr pci);
language_export str CMDregisterFunction(Client cntxt, MalBlkPtr mb, MalStkPtr
stk, InstrPtr pci);
language_export str CMDsetMemoryTrace(Client cntxt, MalBlkPtr mb, MalStkPtr
stk, InstrPtr pci);
language_export str CMDsetThreadTrace(Client cntxt, MalBlkPtr mb, MalStkPtr
stk, InstrPtr pci);
diff --git a/monetdb5/modules/mal/language.mal
b/monetdb5/modules/mal/language.mal
--- a/monetdb5/modules/mal/language.mal
+++ b/monetdb5/modules/mal/language.mal
@@ -34,6 +34,10 @@ pattern dataflow():bit
address MALstartDataflow
comment "The current guarded block is executed using dataflow control. ";
+pattern sync(b:bat[:any,:any]...) :bat[:any,:any]...
+address MALsyncDataflow
+comment "Introduce a dataflow synchronisation wait before continuing";
+
pattern register(m:str,f:str,code:str,help:str):void
address CMDregisterFunction
comment"Compile the code string to MAL and register it as a function.";
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list