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

Reply via email to