OpenJDK / jdk9 / jdk9 / jdk
changeset 13294:4d367c763183
8145077: AIX: fix harfbuzz support
Reviewed-by: prr
author | simonis |
---|---|
date | Fri, 11 Dec 2015 16:16:55 +0100 |
parents | 0d85be66e940 |
children | fdd84b2265dd |
files | src/java.desktop/share/native/libfontmanager/harfbuzz/hb-atomic-private.hh |
diffstat | 1 files changed, 25 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-atomic-private.hh Fri Dec 11 09:34:56 2015 -0500 +++ b/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-atomic-private.hh Fri Dec 11 16:16:55 2015 +0100 @@ -119,6 +119,31 @@ #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) +#elif !defined(HB_NO_MT) && defined(_AIX) && defined(__IBMCPP__) + +#include <builtins.h> + + +static inline int hb_fetch_and_add(volatile int* AI, unsigned int V) { + __lwsync(); + int result = __fetch_and_add(AI, V); + __isync(); + return result; +} +static inline int hb_compare_and_swaplp(volatile long* P, long O, long N) { + __sync(); + int result = __compare_and_swaplp (P, &O, N); + __sync(); + return result; +} + +typedef int hb_atomic_int_impl_t; +#define HB_ATOMIC_INT_IMPL_INIT(V) (V) +#define hb_atomic_int_impl_add(AI, V) hb_fetch_and_add (&(AI), (V)) + +#define hb_atomic_ptr_impl_get(P) (__sync(), (void *) *(P)) +#define hb_atomic_ptr_impl_cmpexch(P,O,N) hb_compare_and_swaplp ((long*)(P), (long)(O), (long)(N)) + #elif !defined(HB_NO_MT) #define HB_ATOMIC_INT_NIL 1 /* Warn that fallback implementation is in use. */