54 }
55
56 static ShenandoahSATBMarkQueueSet& satb_mark_queue_set() {
57 return barrier_set()->_satb_mark_queue_set;
58 }
59
60 void print_on(outputStream* st) const;
61
62 bool is_a(BarrierSet::Name bsn);
63
64 bool is_aligned(HeapWord* hw);
65
66 template <class T> void
67 write_ref_array_pre_work(T* src, T* dst, size_t count, bool dest_uninitialized);
68
69 inline void arraycopy_pre(oop* src, oop* dst, size_t count);
70 inline void arraycopy_pre(narrowOop* src, narrowOop* dst, size_t count);
71 inline void arraycopy_update(oop* src, size_t count);
72 inline void arraycopy_update(narrowOop* src, size_t count);
73 inline void clone_barrier(oop src);
74
75 // We export this to make it available in cases where the static
76 // type of the barrier set is known. Note that it is non-virtual.
77 template <class T> inline void inline_write_ref_field_pre(T* field, oop new_val);
78
79 // These are the more general virtual versions.
80 void write_ref_field_pre_work(oop* field, oop new_val);
81 void write_ref_field_pre_work(narrowOop* field, oop new_val);
82 void write_ref_field_pre_work(void* field, oop new_val);
83
84 void write_ref_field_work(void* v, oop o, bool release = false);
85
86 oop oop_load_from_native_barrier(oop obj);
87
88 virtual void on_thread_create(Thread* thread);
89 virtual void on_thread_destroy(Thread* thread);
90 virtual void on_thread_attach(Thread* thread);
91 virtual void on_thread_detach(Thread* thread);
92
93 static inline oop resolve_forwarded_not_null(oop p);
|
54 }
55
56 static ShenandoahSATBMarkQueueSet& satb_mark_queue_set() {
57 return barrier_set()->_satb_mark_queue_set;
58 }
59
60 void print_on(outputStream* st) const;
61
62 bool is_a(BarrierSet::Name bsn);
63
64 bool is_aligned(HeapWord* hw);
65
66 template <class T> void
67 write_ref_array_pre_work(T* src, T* dst, size_t count, bool dest_uninitialized);
68
69 inline void arraycopy_pre(oop* src, oop* dst, size_t count);
70 inline void arraycopy_pre(narrowOop* src, narrowOop* dst, size_t count);
71 inline void arraycopy_update(oop* src, size_t count);
72 inline void arraycopy_update(narrowOop* src, size_t count);
73 inline void clone_barrier(oop src);
74 void clone_barrier_runtime(oop src);
75
76 // We export this to make it available in cases where the static
77 // type of the barrier set is known. Note that it is non-virtual.
78 template <class T> inline void inline_write_ref_field_pre(T* field, oop new_val);
79
80 // These are the more general virtual versions.
81 void write_ref_field_pre_work(oop* field, oop new_val);
82 void write_ref_field_pre_work(narrowOop* field, oop new_val);
83 void write_ref_field_pre_work(void* field, oop new_val);
84
85 void write_ref_field_work(void* v, oop o, bool release = false);
86
87 oop oop_load_from_native_barrier(oop obj);
88
89 virtual void on_thread_create(Thread* thread);
90 virtual void on_thread_destroy(Thread* thread);
91 virtual void on_thread_attach(Thread* thread);
92 virtual void on_thread_detach(Thread* thread);
93
94 static inline oop resolve_forwarded_not_null(oop p);
|