Changeset: d6a2130470e0 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d6a2130470e0
Modified Files:
monetdb5/optimizer/opt_emptybind.c
monetdb5/optimizer/opt_jit.c
monetdb5/optimizer/opt_pipes.c
Branch: jit
Log Message:
Skeleton for jit peephole optimizer
diffs (100 lines):
diff --git a/monetdb5/optimizer/opt_emptybind.c
b/monetdb5/optimizer/opt_emptybind.c
--- a/monetdb5/optimizer/opt_emptybind.c
+++ b/monetdb5/optimizer/opt_emptybind.c
@@ -77,7 +77,7 @@ OPTemptybindImplementation(Client cntxt,
(void) pci;
OPTDEBUGemptybind{
- mnstr_printf(GDKout, "Optimize Query Emptybind\n");
+ mnstr_printf(GDKout, "#Optimize Query Emptybind\n");
printFunction(GDKout, mb, 0, LIST_MAL_DEBUG);
}
@@ -277,7 +277,7 @@ OPTemptybindImplementation(Client cntxt,
OPTDEBUGemptybind{
chkTypes(cntxt->fdout, cntxt->nspace,mb,TRUE);
- mnstr_printf(GDKout, "Optimize Query Emptybind done\n");
+ mnstr_printf(GDKout, "#Optimize Query Emptybind done\n");
printFunction(GDKout, mb, 0, LIST_MAL_DEBUG);
}
diff --git a/monetdb5/optimizer/opt_jit.c b/monetdb5/optimizer/opt_jit.c
--- a/monetdb5/optimizer/opt_jit.c
+++ b/monetdb5/optimizer/opt_jit.c
@@ -38,39 +38,56 @@ OPTjitImplementation(Client cntxt, MalBl
{
int i,actions = 0;
int limit = mb->stop;
- InstrPtr p, *old = mb->stmt;
+ InstrPtr p, q, *old = mb->stmt;
char buf[256];
lng usec = GDKusec();
(void) stk;
(void) cntxt;
(void) pci;
- return 0; // CURRENTLY NOT ENABLED
+
OPTDEBUGjit{
- mnstr_printf(GDKout, "Optimize JIT\n");
+ mnstr_printf(GDKout, "#Optimize JIT\n");
printFunction(GDKout, mb, 0, LIST_MAL_DEBUG);
}
+ return 0; // temporary disabled
if ( newMalBlkStmt(mb, mb->ssize) < 0)
return 0;
- /* Symbolic evaluation of the empty BAT variables */
- /* by looking at empty BAT arguments */
+ /* peephole optimization */
for (i = 0; i < limit; i++) {
p = old[i];
- pushInstruction(mb,p);
if (p->token == ENDsymbol){
- for(i++; i<limit; i++)
+ for(; i<limit; i++)
if (old[i])
pushInstruction(mb,old[i]);
break;
}
+ /* case 1
+ * X_527 := algebra.projection(C_353, X_329);
+ * X_535 := batcalc.-(100:lng, X_527);
+ */
+ if( getModuleId(p) == batcalcRef && *getFunctionId(p) == '-' &&
p->argc == 3 && isVarConstant(mb, getArg(p,1)) ){
+ q= getInstrPtr(mb, getVar(mb,getArg(p,2))->updated);
+ if ( q == 0)
+ q= getInstrPtr(mb,
getVar(mb,getArg(p,2))->declared);
+ if( q && getArg(q,0) == getArg(p,2) ){
+ getArg(p,2)= getArg(q,2);
+ p= pushArgument(mb,p, getArg(q,1));
+ OPTDEBUGjit{
+ mnstr_printf(GDKout, "#Optimize JIT
case 1\n");
+ printInstruction(cntxt->fdout,
mb,0,p,LIST_MAL_DEBUG);
+ }
+ }
+ }
+ pushInstruction(mb,p);
}
OPTDEBUGjit{
chkTypes(cntxt->fdout, cntxt->nspace,mb,TRUE);
- mnstr_printf(GDKout, "Optimize JIT done\n");
+ mnstr_printf(GDKout, "#Optimize JIT done\n");
printFunction(GDKout, mb, 0, LIST_MAL_DEBUG);
}
diff --git a/monetdb5/optimizer/opt_pipes.c b/monetdb5/optimizer/opt_pipes.c
--- a/monetdb5/optimizer/opt_pipes.c
+++ b/monetdb5/optimizer/opt_pipes.c
@@ -87,6 +87,7 @@ static struct PIPELINES {
"optimizer.generator();"
"optimizer.profiler();"
"optimizer.candidates();"
+ "optimizer.jit();"
"optimizer.garbageCollector();",
"stable", NULL, NULL, 1},
/*
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list