62 virtual void write_ref_array_pre(narrowOop* dst, size_t count, bool dest_uninitialized);
63
64 template <DecoratorSet decorators, typename T>
65 void write_ref_field_pre(T* field);
66
67 // NB: if you do a whole-heap invalidation, the "usual invariant" defined
68 // above no longer applies.
69 void invalidate(MemRegion mr);
70
71 void write_region(MemRegion mr) { invalidate(mr); }
72 void write_ref_array_work(MemRegion mr) { invalidate(mr); }
73
74 template <DecoratorSet decorators, typename T>
75 void write_ref_field_post(T* field, oop new_val);
76 void write_ref_field_post_slow(volatile jbyte* byte);
77
78 virtual void on_thread_create(Thread* thread);
79 virtual void on_thread_destroy(Thread* thread);
80 virtual void on_thread_attach(Thread* thread);
81 virtual void on_thread_detach(Thread* thread);
82
83 BufferNode::Allocator& satb_mark_queue_buffer_allocator();
84 BufferNode::Allocator& dirty_card_queue_buffer_allocator();
85
86 static G1SATBMarkQueueSet& satb_mark_queue_set() {
87 return g1_barrier_set()->_satb_mark_queue_set;
88 }
89
90 static G1DirtyCardQueueSet& dirty_card_queue_set() {
91 return g1_barrier_set()->_dirty_card_queue_set;
92 }
93
94 // Callbacks for runtime accesses.
95 template <DecoratorSet decorators, typename BarrierSetT = G1BarrierSet>
96 class AccessBarrier: public ModRefBarrierSet::AccessBarrier<decorators, BarrierSetT> {
97 typedef ModRefBarrierSet::AccessBarrier<decorators, BarrierSetT> ModRef;
98 typedef BarrierSet::AccessBarrier<decorators, BarrierSetT> Raw;
99
100 public:
101 // Needed for loads on non-heap weak references
|
62 virtual void write_ref_array_pre(narrowOop* dst, size_t count, bool dest_uninitialized);
63
64 template <DecoratorSet decorators, typename T>
65 void write_ref_field_pre(T* field);
66
67 // NB: if you do a whole-heap invalidation, the "usual invariant" defined
68 // above no longer applies.
69 void invalidate(MemRegion mr);
70
71 void write_region(MemRegion mr) { invalidate(mr); }
72 void write_ref_array_work(MemRegion mr) { invalidate(mr); }
73
74 template <DecoratorSet decorators, typename T>
75 void write_ref_field_post(T* field, oop new_val);
76 void write_ref_field_post_slow(volatile jbyte* byte);
77
78 virtual void on_thread_create(Thread* thread);
79 virtual void on_thread_destroy(Thread* thread);
80 virtual void on_thread_attach(Thread* thread);
81 virtual void on_thread_detach(Thread* thread);
82 virtual bool needs_sts_sync_on_attach_detach() { return true; }
83
84 BufferNode::Allocator& satb_mark_queue_buffer_allocator();
85 BufferNode::Allocator& dirty_card_queue_buffer_allocator();
86
87 static G1SATBMarkQueueSet& satb_mark_queue_set() {
88 return g1_barrier_set()->_satb_mark_queue_set;
89 }
90
91 static G1DirtyCardQueueSet& dirty_card_queue_set() {
92 return g1_barrier_set()->_dirty_card_queue_set;
93 }
94
95 // Callbacks for runtime accesses.
96 template <DecoratorSet decorators, typename BarrierSetT = G1BarrierSet>
97 class AccessBarrier: public ModRefBarrierSet::AccessBarrier<decorators, BarrierSetT> {
98 typedef ModRefBarrierSet::AccessBarrier<decorators, BarrierSetT> ModRef;
99 typedef BarrierSet::AccessBarrier<decorators, BarrierSetT> Raw;
100
101 public:
102 // Needed for loads on non-heap weak references
|