diff --git a/src/zmalloc.c b/src/zmalloc.c index bd36654fb000f17f0df1e11769351606169740f7..11616e5adb9f62605f365a9c4b18dbe3a1be4f97 100644 --- a/src/zmalloc.c +++ b/src/zmalloc.c @@ -67,7 +67,10 @@ void zlibc_free(void *ptr) { #define free(ptr) je_free(ptr) #endif -#ifdef HAVE_ATOMIC +#if defined(__ATOMIC_RELAXED) +#define update_zmalloc_stat_add(__n) __atomic_add_fetch(&used_memory, (__n), __ATOMIC_RELAXED) +#define update_zmalloc_stat_sub(__n) __atomic_sub_fetch(&used_memory, (__n), __ATOMIC_RELAXED) +#elif defined(HAVE_ATOMIC) #define update_zmalloc_stat_add(__n) __sync_add_and_fetch(&used_memory, (__n)) #define update_zmalloc_stat_sub(__n) __sync_sub_and_fetch(&used_memory, (__n)) #else @@ -219,7 +222,7 @@ size_t zmalloc_used_memory(void) { size_t um; if (zmalloc_thread_safe) { -#ifdef HAVE_ATOMIC +#if defined(__ATOMIC_RELAXED) || defined(HAVE_ATOMIC) um = update_zmalloc_stat_add(0); #else pthread_mutex_lock(&used_memory_mutex);