< prev index next >

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

Print this page
rev 49182 : 8198445: Access API for primitive/native arraycopy

*** 116,126 **** } template <DecoratorSet decorators> template <typename T> inline bool RawAccessBarrier<decorators>::oop_arraycopy(arrayOop src_obj, arrayOop dst_obj, T* src, T* dst, size_t length) { ! return arraycopy(src, dst, length); } template <DecoratorSet decorators> inline bool RawAccessBarrier<decorators>::oop_arraycopy(arrayOop src_obj, arrayOop dst_obj, HeapWord* src, HeapWord* dst, size_t length) { bool needs_oop_compress = HasDecorator<decorators, INTERNAL_CONVERT_COMPRESSED_OOP>::value && --- 116,126 ---- } template <DecoratorSet decorators> template <typename T> inline bool RawAccessBarrier<decorators>::oop_arraycopy(arrayOop src_obj, arrayOop dst_obj, T* src, T* dst, size_t length) { ! return arraycopy(src_obj, dst_obj, src, dst, length); } template <DecoratorSet decorators> inline bool RawAccessBarrier<decorators>::oop_arraycopy(arrayOop src_obj, arrayOop dst_obj, HeapWord* src, HeapWord* dst, size_t length) { bool needs_oop_compress = HasDecorator<decorators, INTERNAL_CONVERT_COMPRESSED_OOP>::value &&
*** 255,265 **** class RawAccessBarrierArrayCopy: public AllStatic { public: template <DecoratorSet decorators, typename T> static inline typename EnableIf< HasDecorator<decorators, INTERNAL_VALUE_IS_OOP>::value>::type ! arraycopy(T* src, T* dst, size_t length) { // 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, dst, length); } else { typedef typename HeapOopType<decorators>::type OopType; --- 255,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 s, arrayOop d, T* src, T* dst, size_t length) { // 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, dst, length); } else { typedef typename HeapOopType<decorators>::type OopType;
*** 269,279 **** } template <DecoratorSet decorators, typename T> static inline typename EnableIf< !HasDecorator<decorators, INTERNAL_VALUE_IS_OOP>::value>::type ! arraycopy(T* src, T* dst, size_t length) { if (HasDecorator<decorators, ARRAYCOPY_ARRAYOF>::value) { AccessInternal::arraycopy_arrayof_conjoint(src, dst, length); } else if (HasDecorator<decorators, ARRAYCOPY_DISJOINT>::value && sizeof(T) == HeapWordSize) { // There is only a disjoint optimization for word granularity copying if (HasDecorator<decorators, ARRAYCOPY_ATOMIC>::value) { --- 269,279 ---- } template <DecoratorSet decorators, typename T> static inline typename EnableIf< !HasDecorator<decorators, INTERNAL_VALUE_IS_OOP>::value>::type ! arraycopy(arrayOop s, arrayOop d, T* src, T* dst, size_t length) { if (HasDecorator<decorators, ARRAYCOPY_ARRAYOF>::value) { AccessInternal::arraycopy_arrayof_conjoint(src, dst, length); } else if (HasDecorator<decorators, ARRAYCOPY_DISJOINT>::value && sizeof(T) == HeapWordSize) { // There is only a disjoint optimization for word granularity copying if (HasDecorator<decorators, ARRAYCOPY_ATOMIC>::value) {
*** 291,302 **** } }; template <DecoratorSet decorators> template <typename T> ! inline bool RawAccessBarrier<decorators>::arraycopy(T* src, T* dst, size_t length) { ! RawAccessBarrierArrayCopy::arraycopy<decorators>(src, dst, length); return true; } template <DecoratorSet decorators> inline void RawAccessBarrier<decorators>::clone(oop src, oop dst, size_t size) { --- 291,302 ---- } }; template <DecoratorSet decorators> template <typename T> ! inline bool RawAccessBarrier<decorators>::arraycopy(arrayOop s, arrayOop d, T* src, T* dst, size_t length) { ! RawAccessBarrierArrayCopy::arraycopy<decorators>(s, d, src, dst, length); return true; } template <DecoratorSet decorators> inline void RawAccessBarrier<decorators>::clone(oop src, oop dst, size_t size) {
< prev index next >