--- old/src/hotspot/share/gc/shared/modRefBarrierSet.hpp 2019-08-29 16:29:07.478598461 +0200 +++ new/src/hotspot/share/gc/shared/modRefBarrierSet.hpp 2019-08-29 16:29:07.082591527 +0200 @@ -68,7 +68,6 @@ protected: virtual void write_ref_array_work(MemRegion mr) = 0; - public: // The ModRef abstraction introduces pre and post barriers template @@ -84,10 +83,14 @@ static oop oop_atomic_xchg_in_heap(oop new_value, T* addr); template - static bool oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw, + static void oop_arraycopy_in_heap(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); - + private: + // Failing checkcast or check null during copy, still needs barrier + template + static inline void oop_arraycopy_partial_barrier(BarrierSetT *bs, T* dst_raw, T* p); + public: static void clone_in_heap(oop src, oop dst, size_t size); static void oop_store_in_heap_at(oop base, ptrdiff_t offset, oop value) {