equal
deleted
inserted
replaced
1190 verify_types<decorators, T>(); |
1190 verify_types<decorators, T>(); |
1191 typedef typename Decay<T>::type DecayedT; |
1191 typedef typename Decay<T>::type DecayedT; |
1192 DecayedT decayed_value = value; |
1192 DecayedT decayed_value = value; |
1193 const DecoratorSet expanded_decorators = DecoratorFixup<decorators | |
1193 const DecoratorSet expanded_decorators = DecoratorFixup<decorators | |
1194 (HasDecorator<decorators, INTERNAL_VALUE_IS_OOP>::value ? |
1194 (HasDecorator<decorators, INTERNAL_VALUE_IS_OOP>::value ? |
1195 INTERNAL_CONVERT_COMPRESSED_OOP : INTERNAL_EMPTY)>::value; |
1195 INTERNAL_CONVERT_COMPRESSED_OOP : DECORATORS_NONE)>::value; |
1196 PreRuntimeDispatch::store_at<expanded_decorators>(base, offset, decayed_value); |
1196 PreRuntimeDispatch::store_at<expanded_decorators>(base, offset, decayed_value); |
1197 } |
1197 } |
1198 |
1198 |
1199 template <DecoratorSet decorators, typename P, typename T> |
1199 template <DecoratorSet decorators, typename P, typename T> |
1200 inline T load(P* addr) { |
1200 inline T load(P* addr) { |
1219 typename Decay<T>::type>::type DecayedT; |
1219 typename Decay<T>::type>::type DecayedT; |
1220 // Expand the decorators (figure out sensible defaults) |
1220 // Expand the decorators (figure out sensible defaults) |
1221 // Potentially remember if we need compressed oop awareness |
1221 // Potentially remember if we need compressed oop awareness |
1222 const DecoratorSet expanded_decorators = DecoratorFixup<decorators | |
1222 const DecoratorSet expanded_decorators = DecoratorFixup<decorators | |
1223 (HasDecorator<decorators, INTERNAL_VALUE_IS_OOP>::value ? |
1223 (HasDecorator<decorators, INTERNAL_VALUE_IS_OOP>::value ? |
1224 INTERNAL_CONVERT_COMPRESSED_OOP : INTERNAL_EMPTY)>::value; |
1224 INTERNAL_CONVERT_COMPRESSED_OOP : DECORATORS_NONE)>::value; |
1225 return PreRuntimeDispatch::load_at<expanded_decorators, DecayedT>(base, offset); |
1225 return PreRuntimeDispatch::load_at<expanded_decorators, DecayedT>(base, offset); |
1226 } |
1226 } |
1227 |
1227 |
1228 template <DecoratorSet decorators, typename P, typename T> |
1228 template <DecoratorSet decorators, typename P, typename T> |
1229 inline T atomic_cmpxchg(T new_value, P* addr, T compare_value) { |
1229 inline T atomic_cmpxchg(T new_value, P* addr, T compare_value) { |
1251 (!HasDecorator<decorators, MO_DECORATOR_MASK>::value) ? |
1251 (!HasDecorator<decorators, MO_DECORATOR_MASK>::value) ? |
1252 (MO_SEQ_CST | decorators) : decorators>::value; |
1252 (MO_SEQ_CST | decorators) : decorators>::value; |
1253 // Potentially remember that we need compressed oop awareness |
1253 // Potentially remember that we need compressed oop awareness |
1254 const DecoratorSet final_decorators = expanded_decorators | |
1254 const DecoratorSet final_decorators = expanded_decorators | |
1255 (HasDecorator<decorators, INTERNAL_VALUE_IS_OOP>::value ? |
1255 (HasDecorator<decorators, INTERNAL_VALUE_IS_OOP>::value ? |
1256 INTERNAL_CONVERT_COMPRESSED_OOP : INTERNAL_EMPTY); |
1256 INTERNAL_CONVERT_COMPRESSED_OOP : DECORATORS_NONE); |
1257 return PreRuntimeDispatch::atomic_cmpxchg_at<final_decorators>(new_decayed_value, base, |
1257 return PreRuntimeDispatch::atomic_cmpxchg_at<final_decorators>(new_decayed_value, base, |
1258 offset, compare_decayed_value); |
1258 offset, compare_decayed_value); |
1259 } |
1259 } |
1260 |
1260 |
1261 template <DecoratorSet decorators, typename P, typename T> |
1261 template <DecoratorSet decorators, typename P, typename T> |
1276 typedef typename Decay<T>::type DecayedT; |
1276 typedef typename Decay<T>::type DecayedT; |
1277 DecayedT new_decayed_value = new_value; |
1277 DecayedT new_decayed_value = new_value; |
1278 // atomic_xchg is only available in SEQ_CST flavour. |
1278 // atomic_xchg is only available in SEQ_CST flavour. |
1279 const DecoratorSet expanded_decorators = DecoratorFixup<decorators | MO_SEQ_CST | |
1279 const DecoratorSet expanded_decorators = DecoratorFixup<decorators | MO_SEQ_CST | |
1280 (HasDecorator<decorators, INTERNAL_VALUE_IS_OOP>::value ? |
1280 (HasDecorator<decorators, INTERNAL_VALUE_IS_OOP>::value ? |
1281 INTERNAL_CONVERT_COMPRESSED_OOP : INTERNAL_EMPTY)>::value; |
1281 INTERNAL_CONVERT_COMPRESSED_OOP : DECORATORS_NONE)>::value; |
1282 return PreRuntimeDispatch::atomic_xchg_at<expanded_decorators>(new_decayed_value, base, offset); |
1282 return PreRuntimeDispatch::atomic_xchg_at<expanded_decorators>(new_decayed_value, base, offset); |
1283 } |
1283 } |
1284 |
1284 |
1285 template <DecoratorSet decorators, typename T> |
1285 template <DecoratorSet decorators, typename T> |
1286 inline bool arraycopy(arrayOop src_obj, size_t src_offset_in_bytes, const T* src_raw, |
1286 inline bool arraycopy(arrayOop src_obj, size_t src_offset_in_bytes, const T* src_raw, |