src/hotspot/os_cpu/solaris_x86/atomic_solaris_x86.hpp
changeset 59251 4cbfa5077d68
parent 59249 29b0d0b61615
child 59252 623722a6aeb9
equal deleted inserted replaced
59250:a6deb69743d4 59251:4cbfa5077d68
    72                      reinterpret_cast<int64_t volatile*>(dest)));
    72                      reinterpret_cast<int64_t volatile*>(dest)));
    73 }
    73 }
    74 
    74 
    75 template<>
    75 template<>
    76 template<typename T>
    76 template<typename T>
    77 inline T Atomic::PlatformXchg<4>::operator()(T exchange_value,
    77 inline T Atomic::PlatformXchg<4>::operator()(T volatile* dest,
    78                                              T volatile* dest,
    78                                              T exchange_value,
    79                                              atomic_memory_order order) const {
    79                                              atomic_memory_order order) const {
    80   STATIC_ASSERT(4 == sizeof(T));
    80   STATIC_ASSERT(4 == sizeof(T));
    81   return PrimitiveConversions::cast<T>(
    81   return PrimitiveConversions::cast<T>(
    82     _Atomic_xchg(PrimitiveConversions::cast<int32_t>(exchange_value),
    82     _Atomic_xchg(PrimitiveConversions::cast<int32_t>(exchange_value),
    83                  reinterpret_cast<int32_t volatile*>(dest)));
    83                  reinterpret_cast<int32_t volatile*>(dest)));
    85 
    85 
    86 extern "C" int64_t _Atomic_xchg_long(int64_t exchange_value, volatile int64_t* dest);
    86 extern "C" int64_t _Atomic_xchg_long(int64_t exchange_value, volatile int64_t* dest);
    87 
    87 
    88 template<>
    88 template<>
    89 template<typename T>
    89 template<typename T>
    90 inline T Atomic::PlatformXchg<8>::operator()(T exchange_value,
    90 inline T Atomic::PlatformXchg<8>::operator()(T volatile* dest,
    91                                              T volatile* dest,
    91                                              T exchange_value,
    92                                              atomic_memory_order order) const {
    92                                              atomic_memory_order order) const {
    93   STATIC_ASSERT(8 == sizeof(T));
    93   STATIC_ASSERT(8 == sizeof(T));
    94   return PrimitiveConversions::cast<T>(
    94   return PrimitiveConversions::cast<T>(
    95     _Atomic_xchg_long(PrimitiveConversions::cast<int64_t>(exchange_value),
    95     _Atomic_xchg_long(PrimitiveConversions::cast<int64_t>(exchange_value),
    96                       reinterpret_cast<int64_t volatile*>(dest)));
    96                       reinterpret_cast<int64_t volatile*>(dest)));