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

Reply via email to