src/hotspot/share/oops/accessBackend.inline.hpp
changeset 59247 56bf71d64d51
parent 53244 9807daeb47c4
child 59248 e92153ed8bdc
equal deleted inserted replaced
59246:fcad92f425c5 59247:56bf71d64d51
   132   HasDecorator<ds, MO_SEQ_CST>::value, T>::type
   132   HasDecorator<ds, MO_SEQ_CST>::value, T>::type
   133 RawAccessBarrier<decorators>::load_internal(void* addr) {
   133 RawAccessBarrier<decorators>::load_internal(void* addr) {
   134   if (support_IRIW_for_not_multiple_copy_atomic_cpu) {
   134   if (support_IRIW_for_not_multiple_copy_atomic_cpu) {
   135     OrderAccess::fence();
   135     OrderAccess::fence();
   136   }
   136   }
   137   return OrderAccess::load_acquire(reinterpret_cast<const volatile T*>(addr));
   137   return Atomic::load_acquire(reinterpret_cast<const volatile T*>(addr));
   138 }
   138 }
   139 
   139 
   140 template <DecoratorSet decorators>
   140 template <DecoratorSet decorators>
   141 template <DecoratorSet ds, typename T>
   141 template <DecoratorSet ds, typename T>
   142 inline typename EnableIf<
   142 inline typename EnableIf<
   143   HasDecorator<ds, MO_ACQUIRE>::value, T>::type
   143   HasDecorator<ds, MO_ACQUIRE>::value, T>::type
   144 RawAccessBarrier<decorators>::load_internal(void* addr) {
   144 RawAccessBarrier<decorators>::load_internal(void* addr) {
   145   return OrderAccess::load_acquire(reinterpret_cast<const volatile T*>(addr));
   145   return Atomic::load_acquire(reinterpret_cast<const volatile T*>(addr));
   146 }
   146 }
   147 
   147 
   148 template <DecoratorSet decorators>
   148 template <DecoratorSet decorators>
   149 template <DecoratorSet ds, typename T>
   149 template <DecoratorSet ds, typename T>
   150 inline typename EnableIf<
   150 inline typename EnableIf<
   156 template <DecoratorSet decorators>
   156 template <DecoratorSet decorators>
   157 template <DecoratorSet ds, typename T>
   157 template <DecoratorSet ds, typename T>
   158 inline typename EnableIf<
   158 inline typename EnableIf<
   159   HasDecorator<ds, MO_SEQ_CST>::value>::type
   159   HasDecorator<ds, MO_SEQ_CST>::value>::type
   160 RawAccessBarrier<decorators>::store_internal(void* addr, T value) {
   160 RawAccessBarrier<decorators>::store_internal(void* addr, T value) {
   161   OrderAccess::release_store_fence(reinterpret_cast<volatile T*>(addr), value);
   161   Atomic::release_store_fence(reinterpret_cast<volatile T*>(addr), value);
   162 }
   162 }
   163 
   163 
   164 template <DecoratorSet decorators>
   164 template <DecoratorSet decorators>
   165 template <DecoratorSet ds, typename T>
   165 template <DecoratorSet ds, typename T>
   166 inline typename EnableIf<
   166 inline typename EnableIf<
   167   HasDecorator<ds, MO_RELEASE>::value>::type
   167   HasDecorator<ds, MO_RELEASE>::value>::type
   168 RawAccessBarrier<decorators>::store_internal(void* addr, T value) {
   168 RawAccessBarrier<decorators>::store_internal(void* addr, T value) {
   169   OrderAccess::release_store(reinterpret_cast<volatile T*>(addr), value);
   169   Atomic::release_store(reinterpret_cast<volatile T*>(addr), value);
   170 }
   170 }
   171 
   171 
   172 template <DecoratorSet decorators>
   172 template <DecoratorSet decorators>
   173 template <DecoratorSet ds, typename T>
   173 template <DecoratorSet ds, typename T>
   174 inline typename EnableIf<
   174 inline typename EnableIf<