[atomic] Add XXX items around Solaris ops
authorBehdad Esfahbod <behdad@behdad.org>
Wed, 1 Aug 2018 06:00:15 +0000 (23:00 -0700)
committerBehdad Esfahbod <behdad@behdad.org>
Wed, 1 Aug 2018 06:00:15 +0000 (23:00 -0700)
Since add_int and cas are both read-modify-write, I wonder if we
also need a barrier after them.

src/hb-atomic-private.hh

index ef72872..0d0badf 100644 (file)
@@ -122,11 +122,11 @@ static inline void _hb_memory_barrier (void)      { __sync_synchronize (); }
 #include <mbarrier.h>
 
 typedef unsigned int hb_atomic_int_impl_t;
-#define hb_atomic_int_impl_add(AI, V)          ( ({__machine_rw_barrier ();}), atomic_add_int_nv ((AI), (V)) - (V))
+#define hb_atomic_int_impl_add(AI, V)          ( ({__machine_rw_barrier ();}), atomic_add_int_nv ((AI), (V)) - (V) /* XXX barrier again? */)
 
 static inline void _hb_memory_barrier (void)   { __machine_rw_barrier (); }
 
-#define hb_atomic_ptr_impl_cmpexch(P,O,N)      ( ({__machine_rw_barrier ();}), atomic_cas_ptr ((void **) (P), (void *) (O), (void *) (N)) == (void *) (O) ? true : false)
+#define hb_atomic_ptr_impl_cmpexch(P,O,N)      ( ({__machine_rw_barrier ();}), atomic_cas_ptr ((void **) (P), (void *) (O), (void *) (N)) == (void *) (O) ? true : false /* XXX barrier again? */)
 
 
 #elif !defined(HB_NO_MT) && defined(__APPLE__)