< prev index next >
src/os_cpu/linux_x86/vm/atomic_linux_x86.inline.hpp
Print this page
rev 7555 : Improved metaprogramming
*** 82,97 ****
: "0" (exchange_value), "r" (dest)
: "memory");
return exchange_value;
}
! inline void* Atomic::xchg_ptr(void* exchange_value, volatile void* dest) {
return (void*)xchg_ptr((intptr_t)exchange_value, (volatile intptr_t*)dest);
}
! #define VM_HAS_SPECIALIZED_CMPXCHG_BYTE
! inline jbyte Atomic::cmpxchg (jbyte exchange_value, volatile jbyte* dest, jbyte compare_value) {
int mp = os::is_MP();
__asm__ volatile (LOCK_IF_MP(%4) "cmpxchgb %1,(%3)"
: "=a" (exchange_value)
: "q" (exchange_value), "a" (compare_value), "r" (dest), "r" (mp)
: "cc", "memory");
--- 82,96 ----
: "0" (exchange_value), "r" (dest)
: "memory");
return exchange_value;
}
! inline void* Atomic::xchg_ptr (void* exchange_value, volatile void* dest) {
return (void*)xchg_ptr((intptr_t)exchange_value, (volatile intptr_t*)dest);
}
! inline jbyte AtomicPlatform::cmpxchg(jbyte exchange_value, volatile jbyte* dest, jbyte compare_value) {
int mp = os::is_MP();
__asm__ volatile (LOCK_IF_MP(%4) "cmpxchgb %1,(%3)"
: "=a" (exchange_value)
: "q" (exchange_value), "a" (compare_value), "r" (dest), "r" (mp)
: "cc", "memory");
< prev index next >