Changeset: adb2fc1ebbdc for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=adb2fc1ebbdc
Modified Files:
MonetDB5/src/modules/mal/trader.mx
MonetDB5/src/scheduler/run_octopus.mx
Branch: default
Log Message:
Fixed memory allocation in cost estimate function
diffs (106 lines):
diff -r e034e2d4a3c3 -r adb2fc1ebbdc MonetDB5/src/modules/mal/trader.mx
--- a/MonetDB5/src/modules/mal/trader.mx Wed Jun 30 10:28:21 2010 +0200
+++ b/MonetDB5/src/modules/mal/trader.mx Wed Jun 30 11:37:36 2010 +0200
@@ -71,14 +71,14 @@
#include <mal_recycle.h>
#include "trader.h"
-
+/*
static lng estimateSavings0(MalBlkPtr mb, sht bidtype)
{
(void) mb;
(void) bidtype;
return (lng)100;
}
-
+*/
lng estimateSavings(MalBlkPtr mb, sht bidtype)
{
@@ -98,14 +98,13 @@
return 0;
/* Create a phony exec. stack */
- newStack(stk,mb->vsize);
- memset((char *) stk, 0, stackSize(mb->vtop));
- stk->stktop = mb->vtop;
- stk->stksize = mb->vsize;
+ stk = newGlobalStack(mb->vsize);
+ stk->stktop = mb->vtop;
+ stk->stkbot = 0;
stk->blk = mb;
/* Init symbol table of the phony stack */
- for(i= 1; i< mb->vtop; i++) {
+ for(i= 0; i< mb->vtop; i++) {
lhs = &stk->stk[i];
if( isVarConstant(mb,i) > 0 ){
/* assert(!isVarCleanup(mb,i)); */
@@ -159,7 +158,7 @@
for( j=0; j<p->retc; j++){
VALcopy(&stk->stk[getArg(p,j)],
&getVarConstant(recycleBlk,getArg(q,j)) );
- }
+ }
if ( bidtype == BID_TRANS )
savedKB +=
recycleBlk->profiler[i].wbytes;
@@ -178,7 +177,9 @@
continue;
}
+ /* clean up the phony stack */
freeStack(stk);
+
if ( bidtype == BID_TRANS )
return savedKB;
return (marked? (lng)100*savedInstr/marked: 0) ;
@@ -197,7 +198,7 @@
if ( sym == NULL)
throw(MAL,"trader.makeBid", RUNTIME_SIGNATURE_MISSING "%s", fnname);
- *c = estimateSavings0(sym->def, bidtype);
+ *c = estimateSavings(sym->def, bidtype);
return MAL_SUCCEED;
}
diff -r e034e2d4a3c3 -r adb2fc1ebbdc MonetDB5/src/scheduler/run_octopus.mx
--- a/MonetDB5/src/scheduler/run_octopus.mx Wed Jun 30 10:28:21 2010 +0200
+++ b/MonetDB5/src/scheduler/run_octopus.mx Wed Jun 30 11:37:36 2010 +0200
@@ -431,23 +431,23 @@
str
OCTOPUSbidding(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
- bit *res = (bit*) getArgReference(stk,pci,0);
- int j, start;
- InstrPtr p;
+ bit *res = (bit*) getArgReference(stk,pci,0);
+ int j, start;
+ InstrPtr p;
str msg = MAL_SUCCEED;
- *res = 1; /* execute the block */
+ *res = 1; /* execute the block */
- start = getPC(mb,pci);
- for (j = start + 1; j< mb->stop ; j++){
- p = getInstrPtr(mb,j);
- if ( p->barrier == EXITsymbol )
- break;
- }
+ start = getPC(mb,pci);
+ for (j = start + 1; j< mb->stop ; j++){
+ p = getInstrPtr(mb,j);
+ if ( p->barrier == EXITsymbol )
+ break;
+ }
- msg = runMALdataflow(cntxt,mb,start,j,stk,0,pci);
+ msg = runMALdataflow(cntxt,mb,start,j,stk,0,pci);
*res = 0;
- return msg;
+ return msg;
}
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list