Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Unity-Technologies/libatomic_ops.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2017-12-21 00:52:57 +0300
committerIvan Maidanski <ivmai@mail.ru>2017-12-22 10:47:10 +0300
commit165173c9761220e7d75312258b43c4c24c9f8113 (patch)
tree041967ea003ac7f6171561131b85ffc0284ff62f
parentaf76b0c9a9a94b1a8f1b4f845a7906a047af12ef (diff)
New macro to select stack implementation based on CAS-double
The macro is AO_STACK_PREFER_CAS_DOUBLE. This is only for testing. * src/atomic_ops_stack.c [!USE_ALMOST_LOCK_FREE && AO_HAVE_compare_double_and_swap_double && AO_STACK_PREFER_CAS_DOUBLE && AO_HAVE_compare_and_swap_double] (AO_stack_pop_acquire, AO_stack_pop_acquire): Use implementation based compare_and_swap_double instead of compare_double_and_swap_double); remove #error directive.
-rw-r--r--src/atomic_ops_stack.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/atomic_ops_stack.c b/src/atomic_ops_stack.c
index 1f70269..c364b67 100644
--- a/src/atomic_ops_stack.c
+++ b/src/atomic_ops_stack.c
@@ -201,7 +201,9 @@ AO_stack_pop_explicit_aux_acquire(volatile AO_t *list, AO_stack_aux * a)
#define ptr AO_val2
#define version AO_val1
-#if defined(AO_HAVE_compare_double_and_swap_double)
+#if defined(AO_HAVE_compare_double_and_swap_double) \
+ && !(defined(AO_STACK_PREFER_CAS_DOUBLE) \
+ && defined(AO_HAVE_compare_and_swap_double))
#ifdef LINT2
volatile /* non-static */ AO_t AO_noop_sink;
@@ -256,10 +258,7 @@ AO_t *AO_stack_pop_acquire(AO_stack_t *list)
#elif defined(AO_HAVE_compare_and_swap_double)
/* Needed for future IA64 processors. No current clients? */
-
-#if !defined(CPPCHECK)
-# error Untested! Probably does not work.
-#endif
+/* TODO: Not tested thoroughly. */
/* We have a wide CAS, but only does an AO_t-wide comparison. */
/* We can't use the Treiber optimization, since we only check */