[HarfBuzz] harfbuzz: Branch 'master' - 2 commits

Behdad Esfahbod behdad at kemper.freedesktop.org
Wed Aug 1 06:02:34 UTC 2018


 src/hb-atomic-private.hh |   12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

New commits:
commit ad275627425c9b3c4fb1e69aa408067bd0bb77da
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Tue Jul 31 23:01:05 2018 -0700

    [atomic] On IBM, use light-weight sync for everything
    
    lwsync() is a full read/write-barrier.  That's all we need, never
    need sync().  I'm not sure why an isync() was used in fetch_and_add,
    but since that's a read-modify-write, I just changed it to have
    lwsync() on both sides.

diff --git a/src/hb-atomic-private.hh b/src/hb-atomic-private.hh
index 0d0badfb..f60c46e3 100644
--- a/src/hb-atomic-private.hh
+++ b/src/hb-atomic-private.hh
@@ -163,20 +163,20 @@ static inline void _hb_memory_barrier (void)	{ OSMemoryBarrier (); }
 static inline int _hb_fetch_and_add(volatile int* AI, unsigned int V) {
   __lwsync();
   int result = __fetch_and_add(AI, V);
-  __isync();
+  __lwsync();
   return result;
 }
 static inline int _hb_compare_and_swaplp(volatile long* P, long O, long N) {
-  __sync();
+  __lwsync();
   int result = __compare_and_swaplp (P, &O, N);
-  __sync();
+  __lwsync();
   return result;
 }
 
 typedef int hb_atomic_int_impl_t;
 #define hb_atomic_int_impl_add(AI, V)           _hb_fetch_and_add ((AI), (V))
 
-static inline void _hb_memory_barrier (void)	{ __sync(); }
+static inline void _hb_memory_barrier (void)	{ __lwsync(); }
 
 #define hb_atomic_ptr_impl_cmpexch(P,O,N)       _hb_compare_and_swaplp ((long*)(P), (long)(O), (long)(N))
 
commit fd638d215feb058c2294e447cc68f6f50e2b481d
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Tue Jul 31 23:00:15 2018 -0700

    [atomic] Add XXX items around Solaris ops
    
    Since add_int and cas are both read-modify-write, I wonder if we
    also need a barrier after them.

diff --git a/src/hb-atomic-private.hh b/src/hb-atomic-private.hh
index ef72872a..0d0badfb 100644
--- a/src/hb-atomic-private.hh
+++ b/src/hb-atomic-private.hh
@@ -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__)


More information about the HarfBuzz mailing list