--- a/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.hpp Wed Sep 18 20:56:18 2019 +0200
+++ b/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.hpp Wed Sep 18 20:56:19 2019 +0200
@@ -63,14 +63,14 @@
bool is_aligned(HeapWord* hw);
- void write_ref_array(HeapWord* start, size_t count);
+ template <class T> void
+ write_ref_array_pre_work(T* src, T* dst, size_t count, bool dest_uninitialized);
- template <class T> void
- write_ref_array_pre_work(T* dst, size_t count);
-
- void write_ref_array_pre(oop* 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 <class T, bool STOREVAL_WRITE_BARRIER>
- void write_ref_array_loop(HeapWord* start, size_t count);
+ template <class T>
+ inline void arraycopy_pre_work(T* src, T* dst, size_t count);
+ template <class T, bool HAS_FWD, bool EVAC, bool ENQUEUE>
+ inline void arraycopy_work(T* src, size_t count);
+ template <class T>
+ inline void arraycopy_update_impl(T* src, size_t count);
oop load_reference_barrier_impl(oop obj);
@@ -118,24 +121,6 @@
}
}
- template <typename T>
- bool arraycopy_loop_1(T* src, T* dst, size_t length, Klass* bound,
- bool checkcast, bool satb, bool disjoint, ShenandoahBarrierSet::ArrayCopyStoreValMode storeval_mode);
-
- template <typename T, bool CHECKCAST>
- bool arraycopy_loop_2(T* src, T* dst, size_t length, Klass* bound,
- bool satb, bool disjoint, ShenandoahBarrierSet::ArrayCopyStoreValMode storeval_mode);
-
- template <typename T, bool CHECKCAST, bool SATB>
- bool arraycopy_loop_3(T* src, T* dst, size_t length, Klass* bound,
- bool disjoint, ShenandoahBarrierSet::ArrayCopyStoreValMode storeval_mode);
-
- template <typename T, bool CHECKCAST, bool SATB, ShenandoahBarrierSet::ArrayCopyStoreValMode STOREVAL_MODE>
- bool arraycopy_loop(T* src, T* dst, size_t length, Klass* bound, bool disjoint);
-
- template <typename T, bool CHECKCAST, bool SATB, ShenandoahBarrierSet::ArrayCopyStoreValMode STOREVAL_MODE>
- bool arraycopy_element(T* cur_src, T* cur_dst, Klass* bound, Thread* const thread, ShenandoahMarkingContext* const ctx);
-
public:
// Callbacks for runtime accesses.
template <DecoratorSet decorators, typename BarrierSetT = ShenandoahBarrierSet>