src/hotspot/os_cpu/bsd_zero/atomic_bsd_zero.hpp
changeset 59252 623722a6aeb9
parent 59251 4cbfa5077d68
equal deleted inserted replaced
59251:4cbfa5077d68 59252:623722a6aeb9
   237 template<>
   237 template<>
   238 struct Atomic::PlatformCmpxchg<1> : Atomic::CmpxchgByteUsingInt {};
   238 struct Atomic::PlatformCmpxchg<1> : Atomic::CmpxchgByteUsingInt {};
   239 
   239 
   240 template<>
   240 template<>
   241 template<typename T>
   241 template<typename T>
   242 inline T Atomic::PlatformCmpxchg<4>::operator()(T exchange_value,
   242 inline T Atomic::PlatformCmpxchg<4>::operator()(T volatile* dest,
   243                                                 T volatile* dest,
       
   244                                                 T compare_value,
   243                                                 T compare_value,
       
   244                                                 T exchange_value,
   245                                                 atomic_memory_order order) const {
   245                                                 atomic_memory_order order) const {
   246   STATIC_ASSERT(4 == sizeof(T));
   246   STATIC_ASSERT(4 == sizeof(T));
   247 #ifdef ARM
   247 #ifdef ARM
   248   return cmpxchg_using_helper<int>(arm_compare_and_swap, exchange_value, dest, compare_value);
   248   return cmpxchg_using_helper<int>(arm_compare_and_swap, dest, compare_value, exchange_value);
   249 #else
   249 #else
   250 #ifdef M68K
   250 #ifdef M68K
   251   return cmpxchg_using_helper<int>(m68k_compare_and_swap, exchange_value, dest, compare_value);
   251   return cmpxchg_using_helper<int>(m68k_compare_and_swap, dest, compare_value, exchange_value);
   252 #else
   252 #else
   253   return __sync_val_compare_and_swap(dest, compare_value, exchange_value);
   253   return __sync_val_compare_and_swap(dest, compare_value, exchange_value);
   254 #endif // M68K
   254 #endif // M68K
   255 #endif // ARM
   255 #endif // ARM
   256 }
   256 }
   257 
   257 
   258 template<>
   258 template<>
   259 template<typename T>
   259 template<typename T>
   260 inline T Atomic::PlatformCmpxchg<8>::operator()(T exchange_value,
   260 inline T Atomic::PlatformCmpxchg<8>::operator()(T volatile* dest,
   261                                                 T volatile* dest,
       
   262                                                 T compare_value,
   261                                                 T compare_value,
       
   262                                                 T exchange_value,
   263                                                 atomic_memory_order order) const {
   263                                                 atomic_memory_order order) const {
   264   STATIC_ASSERT(8 == sizeof(T));
   264   STATIC_ASSERT(8 == sizeof(T));
   265   return __sync_val_compare_and_swap(dest, compare_value, exchange_value);
   265   return __sync_val_compare_and_swap(dest, compare_value, exchange_value);
   266 }
   266 }
   267 
   267