HACK to make things work
[IRC.git] / Robust / src / Runtime / DSTM / interface / prelookup.c
index 05c2c2b3b013a211c9db589ecbcdae775359de7c..7e81d5f394fce7c65afbaa7755a7df8326399fd4 100644 (file)
@@ -1,5 +1,6 @@
 /* LOCK THE ENTIRE HASH TABLE */
 #include "prelookup.h"
+extern objstr_t *prefetchcache;
 
 prehashtable_t pflookup; //Global prefetch cache table
 
@@ -12,7 +13,8 @@ unsigned int prehashCreate(unsigned int size, float loadfactor) {
     printf("Calloc error %s %d\n", __FILE__, __LINE__);
     return 1;
   }
-  
+  pflookup.hack=NULL;
+  pflookup.hack2=NULL;
   pflookup.table = nodes;
   pflookup.size = size; 
   pflookup.numelements = 0; // Initial number of elements in the hash
@@ -192,6 +194,9 @@ void prehashClear() {
   int i, isFirstBin;
   prehashlistnode_t *ptr, *prev, *curr;
   
+  objstr_t *oldcache=prefetchcache;
+  prefetchcache=objstrCreate(prefetchcache->size);
+
   pthread_mutex_lock(&pflookup.lock);
   ptr = pflookup.table; 
   for(i = 0; i < pflookup.size; i++) {
@@ -209,5 +214,11 @@ void prehashClear() {
     }
   }
   pthread_mutex_unlock(&pflookup.lock);
+
+  if (pflookup.hack2!=NULL) {
+    objstrDelete(pflookup.hack2);
+  }
+  pflookup.hack2=pflookup.hack;
+  pflookup.hack=oldcache;
 }