--- old/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.hpp 2019-09-17 11:35:41.666897405 +0200 +++ new/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.hpp 2019-09-17 11:35:41.561897409 +0200 @@ -63,14 +63,14 @@ bool is_aligned(HeapWord* hw); - void write_ref_array(HeapWord* start, size_t count); - template void - write_ref_array_pre_work(T* dst, size_t count); - - void write_ref_array_pre(oop* dst, size_t count, bool dest_uninitialized); + write_ref_array_pre_work(T* src, T* dst, size_t count, bool dest_uninitialized); - void write_ref_array_pre(narrowOop* dst, size_t count, bool dest_uninitialized); + inline void arraycopy_pre(oop* src, oop* dst, size_t count); + inline void arraycopy_pre(narrowOop* src, narrowOop* dst, size_t count); + inline void arraycopy_update(oop* src, size_t count); + inline void arraycopy_update(narrowOop* src, size_t count); + inline void clone_barrier(oop src); // We export this to make it available in cases where the static // type of the barrier set is known. Note that it is non-virtual. @@ -82,7 +82,6 @@ void write_ref_field_pre_work(void* field, oop new_val); void write_ref_field_work(void* v, oop o, bool release = false); - void write_region(MemRegion mr); oop oop_load_from_native_barrier(oop obj); @@ -104,8 +103,12 @@ void enqueue(oop obj); private: - template - void write_ref_array_loop(HeapWord* start, size_t count); + template + inline void arraycopy_pre_work(T* src, T* dst, size_t count); + template + inline void arraycopy_work(T* src, size_t count); + template + inline void arraycopy_update_impl(T* src, size_t count); oop load_reference_barrier_impl(oop obj); @@ -118,24 +121,6 @@ } } - template - bool arraycopy_loop_1(T* src, T* dst, size_t length, Klass* bound, - bool checkcast, bool satb, bool disjoint, ShenandoahBarrierSet::ArrayCopyStoreValMode storeval_mode); - - template - bool arraycopy_loop_2(T* src, T* dst, size_t length, Klass* bound, - bool satb, bool disjoint, ShenandoahBarrierSet::ArrayCopyStoreValMode storeval_mode); - - template - bool arraycopy_loop_3(T* src, T* dst, size_t length, Klass* bound, - bool disjoint, ShenandoahBarrierSet::ArrayCopyStoreValMode storeval_mode); - - template - bool arraycopy_loop(T* src, T* dst, size_t length, Klass* bound, bool disjoint); - - template - bool arraycopy_element(T* cur_src, T* cur_dst, Klass* bound, Thread* const thread, ShenandoahMarkingContext* const ctx); - public: // Callbacks for runtime accesses. template