X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=concurrent-hashmap%2Fhashmap.h;h=8e6f196cb0e8c73d8a02f9dee01b152dddea7cc9;hb=1438eb7c0715e53611a717e593bfa3fe1bd30588;hp=a66005ccbe9d66039029e3574795fc4d4aff06a0;hpb=4e0f2d853f0fba6224b1fe29a36ba8139dd50958;p=model-checker-benchmarks.git diff --git a/concurrent-hashmap/hashmap.h b/concurrent-hashmap/hashmap.h index a66005c..8e6f196 100644 --- a/concurrent-hashmap/hashmap.h +++ b/concurrent-hashmap/hashmap.h @@ -14,7 +14,8 @@ #include #include -#include "cdsannotate.h" +#include "common.h" +#include "sc_annotation.h" #define relaxed memory_order_relaxed #define release memory_order_release @@ -164,7 +165,11 @@ class HashMap { // lock, we ignore this operation for the SC analysis, and otherwise we // take it into consideration + //SC_BEGIN(); Entry *firstPtr = first->load(acquire); + //SC_KEEP(); + //SC_END(); + e = firstPtr; while (e != NULL) { if (e->hash == hash && eq(key, e->key)) { @@ -173,9 +178,9 @@ class HashMap { return res; else break; - // Loading the next entry - e = e->next.load(acquire); } + // Loading the next entry + e = e->next.load(acquire); } // Recheck under synch if key apparently not there or interference