From 20773a109029ba4464d7749d38a311f880a73293 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Mon, 20 Apr 2020 10:44:52 +0900 Subject: Bail out if no atomic operation found As atomic operations are mandatory now, not-working phony fallback definitions are not only useless but confusing and harmful. --- ruby_atomic.h | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/ruby_atomic.h b/ruby_atomic.h index d4d56da424..d2338677ea 100644 --- a/ruby_atomic.h +++ b/ruby_atomic.h @@ -121,30 +121,7 @@ typedef unsigned int rb_atomic_t; # endif #else -typedef int rb_atomic_t; -#define NEED_RUBY_ATOMIC_OPS -extern rb_atomic_t ruby_atomic_exchange(rb_atomic_t *ptr, rb_atomic_t val); -extern rb_atomic_t ruby_atomic_compare_and_swap(rb_atomic_t *ptr, - rb_atomic_t cmp, - rb_atomic_t newval); - -# define ATOMIC_SET(var, val) (void)((var) = (val)) -# define ATOMIC_INC(var) ((var)++) -# define ATOMIC_DEC(var) ((var)--) -# define ATOMIC_OR(var, val) ((var) |= (val)) -# define ATOMIC_EXCHANGE(var, val) ruby_atomic_exchange(&(var), (val)) -# define ATOMIC_CAS(var, oldval, newval) ruby_atomic_compare_and_swap(&(var), (oldval), (newval)) - -# define ATOMIC_SIZE_ADD(var, val) (void)((var) += (val)) -# define ATOMIC_SIZE_SUB(var, val) (void)((var) -= (val)) -# define ATOMIC_SIZE_EXCHANGE(var, val) ruby_atomic_size_exchange(&(var), (val)) -static inline size_t -ruby_atomic_size_exchange(size_t *ptr, size_t val) -{ - size_t old = *ptr; - *ptr = val; - return old; -} +# error No atomic operation found #endif #ifndef ATOMIC_SIZE_INC -- cgit v1.2.3