Update of /cvsroot/monetdb/MonetDB5/src/mal
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv2985
Modified Files:
mal_recycle.mx
Log Message:
Check if the recycle block exists...
Index: mal_recycle.mx
===================================================================
RCS file: /cvsroot/monetdb/MonetDB5/src/mal/mal_recycle.mx,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- mal_recycle.mx 11 Mar 2008 21:27:38 -0000 1.33
+++ mal_recycle.mx 11 Mar 2008 21:32:54 -0000 1.34
@@ -243,42 +243,44 @@
InstrPtr pc;
int mem= RECYCLEfootprint() > recycleMemory;
- recycleBlk->profiler[k].clk= 1; /* most recently used */
- max= 0;
- for(i=0; i< recycleBlk->stop; i++){
- recycleBlk->profiler[i].clk++;
- switch(rcachePolicy){
- case RCACHE_LRU:
- if( recycleBlk->profiler[max].clk
<recycleBlk->profiler[i].clk)
- max = i;
- break;
- case RCACHE_CREDIT:
- if( recycleBlk->profiler[max].counter *
recycleCost(max) >
- recycleBlk->profiler[i].counter *
recycleCost(i) )
- max = i;
- break;
- case RCACHE_MEMLRU:
- if(mem && recycleBlk->profiler[max].clk
<recycleBlk->profiler[i].clk)
- max = i;
- break;
- case RCACHE_MEMCRD:
- if(mem && recycleBlk->profiler[max].counter *
recycleCost(max) >
- recycleBlk->profiler[i].counter *
recycleCost(i) )
- max = i;
+ if (recycleBlk) {
+ recycleBlk->profiler[k].clk= 1; /* most recently used */
+ max= 0;
+ for(i=0; i< recycleBlk->stop; i++){
+ recycleBlk->profiler[i].clk++;
+ switch(rcachePolicy){
+ case RCACHE_LRU:
+ if( recycleBlk->profiler[max].clk
<recycleBlk->profiler[i].clk)
+ max = i;
+ break;
+ case RCACHE_CREDIT:
+ if( recycleBlk->profiler[max].counter *
recycleCost(max) >
+
recycleBlk->profiler[i].counter * recycleCost(i) )
+ max = i;
+ break;
+ case RCACHE_MEMLRU:
+ if(mem && recycleBlk->profiler[max].clk
<recycleBlk->profiler[i].clk)
+ max = i;
+ break;
+ case RCACHE_MEMCRD:
+ if(mem &&
recycleBlk->profiler[max].counter * recycleCost(max) >
+
recycleBlk->profiler[i].counter * recycleCost(i) )
+ max = i;
+ }
}
- }
- if( recycleBlk->stop > recycleCacheLimit && recycleClaim <= 1){
+ if( recycleBlk->stop > recycleCacheLimit && recycleClaim <= 1){
#ifdef _DEBUG_RECYCLE_
- stream_printf(GDKout,"RECYCLE cache, remove %d \n",max);
+ stream_printf(GDKout,"RECYCLE cache, remove %d \n",max);
#endif
- mal_set_lock(recycleLock,"recycle");
- pc= getInstrPtr(recycleBlk,max);
- for(i=0; i< pc->argc; i++)
- if( isaBatType(getVarType(recycleBlk, getArg(pc,i))) )
- BBPdecref(getVarConstant(recycleBlk,i).val.bval,TRUE);
- removeInstruction(recycleBlk,getInstrPtr(recycleBlk,max));
- recycleVersion++;
- mal_unset_lock(recycleLock,"recycle");
+ mal_set_lock(recycleLock,"recycle");
+ pc= getInstrPtr(recycleBlk,max);
+ for(i=0; i< pc->argc; i++)
+ if( isaBatType(getVarType(recycleBlk,
getArg(pc,i))) )
+
BBPdecref(getVarConstant(recycleBlk,i).val.bval,TRUE);
+
removeInstruction(recycleBlk,getInstrPtr(recycleBlk,max));
+ recycleVersion++;
+ mal_unset_lock(recycleLock,"recycle");
+ }
}
}
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Monetdb-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-checkins