From 7ce9c02fd40796e4392892c0d413a0ac3462d112 Mon Sep 17 00:00:00 2001 From: daan Date: Mon, 26 Aug 2019 08:20:26 -0700 Subject: [PATCH] make cas weak use release memory order; improve free assembly --- include/mimalloc-atomic.h | 2 +- src/alloc.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/mimalloc-atomic.h b/include/mimalloc-atomic.h index 3a289feb..8b254d3e 100644 --- a/include/mimalloc-atomic.h +++ b/include/mimalloc-atomic.h @@ -179,7 +179,7 @@ static inline intptr_t mi_atomic_add(volatile _Atomic(intptr_t)* p, intptr_t add } static inline bool mi_atomic_cas_weak(volatile _Atomic(uintptr_t)* p, uintptr_t desired, uintptr_t expected) { MI_USING_STD - return atomic_compare_exchange_weak_explicit(p, &expected, desired, memory_order_acq_rel, memory_order_relaxed); + return atomic_compare_exchange_weak_explicit(p, &expected, desired, memory_order_release, memory_order_relaxed); } static inline bool mi_atomic_cas_strong(volatile _Atomic(uintptr_t)* p, uintptr_t desired, uintptr_t expected) { MI_USING_STD diff --git a/src/alloc.c b/src/alloc.c index 7e89a591..afc181dd 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -226,7 +226,7 @@ void mi_free(void* p) mi_attr_noexcept #endif const mi_segment_t* const segment = _mi_ptr_segment(p); - if (segment == NULL) return; // checks for (p==NULL) + if (mi_unlikely(segment == NULL)) return; // checks for (p==NULL) #if (MI_DEBUG>0) if (mi_unlikely(!mi_is_in_heap_region(p))) {