fix memory order in AtomicHashMap<>::findInternal()
authorPhilip Pronin <philipp@fb.com>
Tue, 10 Jul 2012 08:27:50 +0000 (01:27 -0700)
committerTudor Bosman <tudorb@fb.com>
Fri, 13 Jul 2012 23:29:03 +0000 (16:29 -0700)
Summary:
Looks like a typo, it should obviously be std::memory_order_relaxed (all
necessary synchronization is done on numMapsAllocated_).

Test Plan: compiled it, ran tests

Reviewed By: sahrens@fb.com

FB internal diff: D515322

folly/AtomicHashMap-inl.h

index f2738649c8c62b04d9f9640778df00f61e9805ca..01919f24032c528f20db83d10020223d0dc342e0 100644 (file)
@@ -163,7 +163,7 @@ findInternal(const KeyT k) const {
   int const numMaps = numMapsAllocated_.load(std::memory_order_acquire);
   FOR_EACH_RANGE(i, 1, numMaps) {
     // Check each map successively.  If one succeeds, we're done!
   int const numMaps = numMapsAllocated_.load(std::memory_order_acquire);
   FOR_EACH_RANGE(i, 1, numMaps) {
     // Check each map successively.  If one succeeds, we're done!
-    SubMap* thisMap = subMaps_[i].load(std::memory_order_release);
+    SubMap* thisMap = subMaps_[i].load(std::memory_order_relaxed);
     ret = thisMap->findInternal(k);
     if (LIKELY(ret.idx != thisMap->capacity_)) {
       return SimpleRetT(i, ret.idx, ret.success);
     ret = thisMap->findInternal(k);
     if (LIKELY(ret.idx != thisMap->capacity_)) {
       return SimpleRetT(i, ret.idx, ret.success);