< prev index next >

src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp

Print this page
rev 11110 : 8155949: Support relaxed semantics in cmpxchg
Reviewed-by:
Contributed-by: HORII@jp.ibm.com, mdoerr

*** 262,272 **** (volatile intptr_t*) dest); } inline jint Atomic::cmpxchg(jint exchange_value, volatile jint* dest, ! jint compare_value) { #ifdef ARM return arm_compare_and_swap(dest, compare_value, exchange_value); #else #ifdef M68K return m68k_compare_and_swap(dest, compare_value, exchange_value); --- 262,272 ---- (volatile intptr_t*) dest); } inline jint Atomic::cmpxchg(jint exchange_value, volatile jint* dest, ! jint compare_value, cmpxchg_memory_order order) { #ifdef ARM return arm_compare_and_swap(dest, compare_value, exchange_value); #else #ifdef M68K return m68k_compare_and_swap(dest, compare_value, exchange_value);
*** 276,293 **** #endif // ARM } inline jlong Atomic::cmpxchg(jlong exchange_value, volatile jlong* dest, ! jlong compare_value) { return __sync_val_compare_and_swap(dest, compare_value, exchange_value); } inline intptr_t Atomic::cmpxchg_ptr(intptr_t exchange_value, volatile intptr_t* dest, ! intptr_t compare_value) { #ifdef ARM return arm_compare_and_swap(dest, compare_value, exchange_value); #else #ifdef M68K return m68k_compare_and_swap(dest, compare_value, exchange_value); --- 276,293 ---- #endif // ARM } inline jlong Atomic::cmpxchg(jlong exchange_value, volatile jlong* dest, ! jlong compare_value, cmpxchg_memory_order order) { return __sync_val_compare_and_swap(dest, compare_value, exchange_value); } inline intptr_t Atomic::cmpxchg_ptr(intptr_t exchange_value, volatile intptr_t* dest, ! intptr_t compare_value, cmpxchg_memory_order order) { #ifdef ARM return arm_compare_and_swap(dest, compare_value, exchange_value); #else #ifdef M68K return m68k_compare_and_swap(dest, compare_value, exchange_value);
*** 297,311 **** #endif // ARM } inline void* Atomic::cmpxchg_ptr(void* exchange_value, volatile void* dest, ! void* compare_value) { return (void *) cmpxchg_ptr((intptr_t) exchange_value, (volatile intptr_t*) dest, ! (intptr_t) compare_value); } inline jlong Atomic::load(volatile jlong* src) { volatile jlong dest; os::atomic_copy64(src, &dest); --- 297,311 ---- #endif // ARM } inline void* Atomic::cmpxchg_ptr(void* exchange_value, volatile void* dest, ! void* compare_value, cmpxchg_memory_order order) { return (void *) cmpxchg_ptr((intptr_t) exchange_value, (volatile intptr_t*) dest, ! (intptr_t) compare_value, order); } inline jlong Atomic::load(volatile jlong* src) { volatile jlong dest; os::atomic_copy64(src, &dest);
< prev index next >