Changeset: c476ed5ed3a7 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c476ed5ed3a7
Modified Files:
monetdb5/optimizer/opt_remap.c
Branch: default
Log Message:
also remap batmal multiplex functions (fixes rapi12)
diffs (70 lines):
diff --git a/monetdb5/optimizer/opt_remap.c b/monetdb5/optimizer/opt_remap.c
--- a/monetdb5/optimizer/opt_remap.c
+++ b/monetdb5/optimizer/opt_remap.c
@@ -20,15 +20,15 @@ static int
OPTremapDirect(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci, Module
scope){
str mod,fcn;
char buf[1024];
- int i;
+ int i, retc = pci->retc;
InstrPtr p;
(void) stk;
- mod = VALget(&getVar(mb, getArg(pci, 1))->value);
- fcn = VALget(&getVar(mb, getArg(pci, 2))->value);
+ mod = VALget(&getVar(mb, getArg(pci, retc+0))->value);
+ fcn = VALget(&getVar(mb, getArg(pci, retc+1))->value);
if(strncmp(mod,"bat",3)==0)
- return 0;
+ mod+=3;
OPTDEBUGremap
mnstr_printf(cntxt->fdout,"#Found a candidate %s.%s\n",mod,fcn);
@@ -99,11 +99,14 @@ OPTmultiplexInline(Client cntxt, MalBlkP
InstrPtr q = NULL, sig;
char buf[1024];
int i,j,k, actions=0;
- int refbat=0;
+ int refbat=0, retc = p->retc;
bit *upgrade;
Symbol s;
- s= findSymbol(cntxt->nspace, VALget(&getVar(mb, getArg(p, 1))->value),
- VALget(&getVar(mb, getArg(p, 2))->value));
+
+
+ s= findSymbol(cntxt->nspace,
+ VALget(&getVar(mb, getArg(p, retc+0))->value),
+ VALget(&getVar(mb, getArg(p, retc+1))->value));
if( s== NULL || !isSideEffectFree(s->def) ||
getInstrPtr(s->def,0)->retc != p->retc ) {
@@ -347,14 +350,14 @@ OPTremapImplementation(Client cntxt, Mal
for (i = 0; i < limit; i++) {
p = old[i];
- if (isMultiplex(p) && getModuleId(p) != batmalRef /* for now
only simple mal.multiplex */){
+ if (isMultiplex(p)){
/*
* The next step considered is to handle inlined
functions.
* It means we have already skipped the most obvious
ones,
* such as the calculator functions. It is particularly
* geared at handling the PSM code.
*/
- if ( varGetProp(mb,getArg(p,0),inlineProp)!= NULL) {
+ if (varGetProp(mb,getArg(p,0),inlineProp)!= NULL) {
OPTDEBUGremap{
mnstr_printf(cntxt->fdout,"#Multiplex
inline\n");
printInstruction(cntxt->fdout,mb,0,p,LIST_MAL_ALL);
@@ -364,9 +367,8 @@ OPTremapImplementation(Client cntxt, Mal
doit++;
OPTDEBUGremap
mnstr_printf(cntxt->fdout,"#doit
%d\n",doit);
- } else
- if( OPTremapDirect(cntxt, mb, stk, p, scope) ||
- OPTremapSwitched(cntxt, mb, stk, p, scope)){
+ } else if (OPTremapDirect(cntxt, mb, stk, p, scope) ||
+ OPTremapSwitched(cntxt, mb, stk, p, scope)) {
freeInstruction(p);
doit++;
} else {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list