diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-01-07 00:39:51 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-01-07 00:39:51 +0100 |
commit | df9289b224d4730341a8c6c9eceab62c41be360f (patch) | |
tree | 3fa921211756f4a624d97679565bf333d23be567 /vespamalloc | |
parent | 83ff7c8f7a503137e34dd279baa294bcc58a155d (diff) |
No need for explicit load as old value is reference.
- Use release on linkIn and acquire on linkOut.
Diffstat (limited to 'vespamalloc')
-rw-r--r-- | vespamalloc/src/vespamalloc/malloc/allocchunk.cpp | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/vespamalloc/src/vespamalloc/malloc/allocchunk.cpp b/vespamalloc/src/vespamalloc/malloc/allocchunk.cpp index 12f680bac88..ac9da6a26af 100644 --- a/vespamalloc/src/vespamalloc/malloc/allocchunk.cpp +++ b/vespamalloc/src/vespamalloc/malloc/allocchunk.cpp @@ -17,7 +17,6 @@ void AFListBase::linkIn(AtomicHeadPtr & head, AFListBase * csl, AFListBase * tai HeadPtr newHead(csl, oldHead._tag + 1); tail->_next = static_cast<AFListBase *>(oldHead._ptr); while ( ! head.compare_exchange_weak(oldHead, newHead, std::memory_order_release, std::memory_order_relaxed) ) { - oldHead = head.load(std::memory_order_relaxed); newHead._tag = oldHead._tag + 1; tail->_next = static_cast<AFListBase *>(oldHead._ptr); } @@ -31,8 +30,7 @@ AFListBase * AFListBase::linkOut(AtomicHeadPtr & head) return NULL; } HeadPtr newHead(csl->_next, oldHead._tag + 1); - while ( ! head.compare_exchange_weak(oldHead, newHead, std::memory_order_release, std::memory_order_relaxed) ) { - oldHead = head.load(std::memory_order_relaxed); + while ( ! head.compare_exchange_weak(oldHead, newHead, std::memory_order_acquire, std::memory_order_relaxed) ) { csl = static_cast<AFListBase *>(oldHead._ptr); if (csl == NULL) { return NULL; |