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