< prev index next >

src/hotspot/share/oops/accessBackend.inline.hpp

Print this page




 157 template <DecoratorSet ds, typename T>
 158 inline typename EnableIf<
 159   HasDecorator<ds, MO_SEQ_CST>::value>::type
 160 RawAccessBarrier<decorators>::store_internal(void* addr, T value) {
 161   Atomic::release_store_fence(reinterpret_cast<volatile T*>(addr), value);
 162 }
 163 
 164 template <DecoratorSet decorators>
 165 template <DecoratorSet ds, typename T>
 166 inline typename EnableIf<
 167   HasDecorator<ds, MO_RELEASE>::value>::type
 168 RawAccessBarrier<decorators>::store_internal(void* addr, T value) {
 169   Atomic::release_store(reinterpret_cast<volatile T*>(addr), value);
 170 }
 171 
 172 template <DecoratorSet decorators>
 173 template <DecoratorSet ds, typename T>
 174 inline typename EnableIf<
 175   HasDecorator<ds, MO_RELAXED>::value>::type
 176 RawAccessBarrier<decorators>::store_internal(void* addr, T value) {
 177   Atomic::store(value, reinterpret_cast<volatile T*>(addr));
 178 }
 179 
 180 template <DecoratorSet decorators>
 181 template <DecoratorSet ds, typename T>
 182 inline typename EnableIf<
 183   HasDecorator<ds, MO_RELAXED>::value, T>::type
 184 RawAccessBarrier<decorators>::atomic_cmpxchg_internal(T new_value, void* addr, T compare_value) {
 185   return Atomic::cmpxchg(new_value,
 186                          reinterpret_cast<volatile T*>(addr),
 187                          compare_value,
 188                          memory_order_relaxed);
 189 }
 190 
 191 template <DecoratorSet decorators>
 192 template <DecoratorSet ds, typename T>
 193 inline typename EnableIf<
 194   HasDecorator<ds, MO_SEQ_CST>::value, T>::type
 195 RawAccessBarrier<decorators>::atomic_cmpxchg_internal(T new_value, void* addr, T compare_value) {
 196   return Atomic::cmpxchg(new_value,
 197                          reinterpret_cast<volatile T*>(addr),




 157 template <DecoratorSet ds, typename T>
 158 inline typename EnableIf<
 159   HasDecorator<ds, MO_SEQ_CST>::value>::type
 160 RawAccessBarrier<decorators>::store_internal(void* addr, T value) {
 161   Atomic::release_store_fence(reinterpret_cast<volatile T*>(addr), value);
 162 }
 163 
 164 template <DecoratorSet decorators>
 165 template <DecoratorSet ds, typename T>
 166 inline typename EnableIf<
 167   HasDecorator<ds, MO_RELEASE>::value>::type
 168 RawAccessBarrier<decorators>::store_internal(void* addr, T value) {
 169   Atomic::release_store(reinterpret_cast<volatile T*>(addr), value);
 170 }
 171 
 172 template <DecoratorSet decorators>
 173 template <DecoratorSet ds, typename T>
 174 inline typename EnableIf<
 175   HasDecorator<ds, MO_RELAXED>::value>::type
 176 RawAccessBarrier<decorators>::store_internal(void* addr, T value) {
 177   Atomic::store(reinterpret_cast<volatile T*>(addr), value);
 178 }
 179 
 180 template <DecoratorSet decorators>
 181 template <DecoratorSet ds, typename T>
 182 inline typename EnableIf<
 183   HasDecorator<ds, MO_RELAXED>::value, T>::type
 184 RawAccessBarrier<decorators>::atomic_cmpxchg_internal(T new_value, void* addr, T compare_value) {
 185   return Atomic::cmpxchg(new_value,
 186                          reinterpret_cast<volatile T*>(addr),
 187                          compare_value,
 188                          memory_order_relaxed);
 189 }
 190 
 191 template <DecoratorSet decorators>
 192 template <DecoratorSet ds, typename T>
 193 inline typename EnableIf<
 194   HasDecorator<ds, MO_SEQ_CST>::value, T>::type
 195 RawAccessBarrier<decorators>::atomic_cmpxchg_internal(T new_value, void* addr, T compare_value) {
 196   return Atomic::cmpxchg(new_value,
 197                          reinterpret_cast<volatile T*>(addr),


< prev index next >