summaryrefslogtreecommitdiffstats
path: root/vespamalloc
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-01-07 00:39:51 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2017-01-07 00:39:51 +0100
commitdf9289b224d4730341a8c6c9eceab62c41be360f (patch)
tree3fa921211756f4a624d97679565bf333d23be567 /vespamalloc
parent83ff7c8f7a503137e34dd279baa294bcc58a155d (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.cpp4
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;