< prev index next >

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

erik arraycopy

*** 116,127 **** return oop_atomic_xchg(new_value, field_addr(base, offset)); } template <DecoratorSet decorators> template <typename T> ! inline bool RawAccessBarrier<decorators>::oop_arraycopy(arrayOop src_obj, size_t src_offset_in_bytes, const T* src_raw, arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw, size_t length) { ! return arraycopy(src_obj, src_offset_in_bytes, src_raw, dst_obj, dst_offset_in_bytes, dst_raw, length); } template <DecoratorSet decorators> template <DecoratorSet ds, typename T> inline typename EnableIf< --- 116,131 ---- return oop_atomic_xchg(new_value, field_addr(base, offset)); } template <DecoratorSet decorators> template <typename T> ! inline bool RawAccessBarrier<decorators>::oop_arraycopy(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw, ! arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw, ! size_t length) { ! return arraycopy(src_obj, src_offset_in_bytes, src_raw, ! dst_obj, dst_offset_in_bytes, dst_raw, ! length); } template <DecoratorSet decorators> template <DecoratorSet ds, typename T> inline typename EnableIf< ***************
*** 245,265 **** class RawAccessBarrierArrayCopy: public AllStatic { public: template <DecoratorSet decorators, typename T> static inline typename EnableIf< HasDecorator<decorators, INTERNAL_VALUE_IS_OOP>::value>::type ! arraycopy(arrayOop src_obj, size_t src_offset_in_bytes, const T* src_raw, arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw, size_t length) { src_raw = arrayOopDesc::obj_offset_to_raw(src_obj, src_offset_in_bytes, src_raw); dst_raw = arrayOopDesc::obj_offset_to_raw(dst_obj, dst_offset_in_bytes, dst_raw); // We do not check for ARRAYCOPY_ATOMIC for oops, because they are unconditionally always atomic. if (HasDecorator<decorators, ARRAYCOPY_ARRAYOF>::value) { ! AccessInternal::arraycopy_arrayof_conjoint_oops(const_cast<T*>(src_raw), dst_raw, length); } else { typedef typename HeapOopType<decorators>::type OopType; ! AccessInternal::arraycopy_conjoint_oops(reinterpret_cast<OopType*>(const_cast<T*>(src_raw)), reinterpret_cast<OopType*>(dst_raw), length); } } template <DecoratorSet decorators, typename T> --- 249,271 ---- class RawAccessBarrierArrayCopy: public AllStatic { public: template <DecoratorSet decorators, typename T> static inline typename EnableIf< HasDecorator<decorators, INTERNAL_VALUE_IS_OOP>::value>::type ! arraycopy(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw, ! arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw, ! size_t length) { src_raw = arrayOopDesc::obj_offset_to_raw(src_obj, src_offset_in_bytes, src_raw); dst_raw = arrayOopDesc::obj_offset_to_raw(dst_obj, dst_offset_in_bytes, dst_raw); // We do not check for ARRAYCOPY_ATOMIC for oops, because they are unconditionally always atomic. if (HasDecorator<decorators, ARRAYCOPY_ARRAYOF>::value) { ! AccessInternal::arraycopy_arrayof_conjoint_oops(src_raw, dst_raw, length); } else { typedef typename HeapOopType<decorators>::type OopType; ! AccessInternal::arraycopy_conjoint_oops(reinterpret_cast<OopType*>(src_raw), reinterpret_cast<OopType*>(dst_raw), length); } } template <DecoratorSet decorators, typename T> ***************
*** 289,299 **** } template <DecoratorSet decorators> static inline typename EnableIf< !HasDecorator<decorators, INTERNAL_VALUE_IS_OOP>::value>::type ! arraycopy(arrayOop src_obj, size_t src_offset_in_bytes, const void* src_raw, arrayOop dst_obj, size_t dst_offset_in_bytes, void* dst_raw, size_t length) { src_raw = arrayOopDesc::obj_offset_to_raw(src_obj, src_offset_in_bytes, src_raw); dst_raw = arrayOopDesc::obj_offset_to_raw(dst_obj, dst_offset_in_bytes, dst_raw); if (HasDecorator<decorators, ARRAYCOPY_ATOMIC>::value) { --- 295,307 ---- } template <DecoratorSet decorators> static inline typename EnableIf< !HasDecorator<decorators, INTERNAL_VALUE_IS_OOP>::value>::type ! arraycopy(arrayOop src_obj, size_t src_offset_in_bytes, const void* src_raw, ! arrayOop dst_obj, size_t dst_offset_in_bytes, void* dst_raw, ! size_t length) { src_raw = arrayOopDesc::obj_offset_to_raw(src_obj, src_offset_in_bytes, src_raw); dst_raw = arrayOopDesc::obj_offset_to_raw(dst_obj, dst_offset_in_bytes, dst_raw); if (HasDecorator<decorators, ARRAYCOPY_ATOMIC>::value) { ***************
*** 304,315 **** } }; template <DecoratorSet decorators> template <typename T> ! inline bool RawAccessBarrier<decorators>::arraycopy(arrayOop src_obj, size_t src_offset_in_bytes, const T* src_raw, arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw, size_t length) { ! RawAccessBarrierArrayCopy::arraycopy<decorators>(src_obj, src_offset_in_bytes, src_raw, dst_obj, dst_offset_in_bytes, dst_raw, length); return true; } template <DecoratorSet decorators> inline void RawAccessBarrier<decorators>::clone(oop src, oop dst, size_t size) { --- 312,327 ---- } }; template <DecoratorSet decorators> template <typename T> ! inline bool RawAccessBarrier<decorators>::arraycopy(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw, ! arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw, ! size_t length) { ! RawAccessBarrierArrayCopy::arraycopy<decorators>(src_obj, src_offset_in_bytes, src_raw, ! dst_obj, dst_offset_in_bytes, dst_raw, ! length); return true; } template <DecoratorSet decorators> inline void RawAccessBarrier<decorators>::clone(oop src, oop dst, size_t size) {
< prev index next >