58 } else {
59 _heap->maybe_update_with_forwarded(p);
60 }
61 }
62 public:
63 ShenandoahUpdateRefsForOopClosure() : _heap(ShenandoahHeap::heap()), _bs(ShenandoahBarrierSet::barrier_set()) {
64 assert(UseShenandoahGC && ShenandoahCloneBarrier, "should be enabled");
65 }
66
67 virtual void do_oop(oop* p) { do_oop_work(p); }
68 virtual void do_oop(narrowOop* p) { do_oop_work(p); }
69 };
70
71 ShenandoahBarrierSet::ShenandoahBarrierSet(ShenandoahHeap* heap) :
72 BarrierSet(make_barrier_set_assembler<ShenandoahBarrierSetAssembler>(),
73 make_barrier_set_c1<ShenandoahBarrierSetC1>(),
74 make_barrier_set_c2<ShenandoahBarrierSetC2>(),
75 NULL /* barrier_set_nmethod */,
76 BarrierSet::FakeRtti(BarrierSet::ShenandoahBarrierSet)),
77 _heap(heap),
78 _satb_mark_queue_set()
79 {
80 }
81
82 ShenandoahBarrierSetAssembler* ShenandoahBarrierSet::assembler() {
83 BarrierSetAssembler* const bsa = BarrierSet::barrier_set()->barrier_set_assembler();
84 return reinterpret_cast<ShenandoahBarrierSetAssembler*>(bsa);
85 }
86
87 void ShenandoahBarrierSet::print_on(outputStream* st) const {
88 st->print("ShenandoahBarrierSet");
89 }
90
91 bool ShenandoahBarrierSet::is_a(BarrierSet::Name bsn) {
92 return bsn == BarrierSet::ShenandoahBarrierSet;
93 }
94
95 bool ShenandoahBarrierSet::is_aligned(HeapWord* hw) {
96 return true;
97 }
98
|
58 } else {
59 _heap->maybe_update_with_forwarded(p);
60 }
61 }
62 public:
63 ShenandoahUpdateRefsForOopClosure() : _heap(ShenandoahHeap::heap()), _bs(ShenandoahBarrierSet::barrier_set()) {
64 assert(UseShenandoahGC && ShenandoahCloneBarrier, "should be enabled");
65 }
66
67 virtual void do_oop(oop* p) { do_oop_work(p); }
68 virtual void do_oop(narrowOop* p) { do_oop_work(p); }
69 };
70
71 ShenandoahBarrierSet::ShenandoahBarrierSet(ShenandoahHeap* heap) :
72 BarrierSet(make_barrier_set_assembler<ShenandoahBarrierSetAssembler>(),
73 make_barrier_set_c1<ShenandoahBarrierSetC1>(),
74 make_barrier_set_c2<ShenandoahBarrierSetC2>(),
75 NULL /* barrier_set_nmethod */,
76 BarrierSet::FakeRtti(BarrierSet::ShenandoahBarrierSet)),
77 _heap(heap),
78 _satb_mark_queue_buffer_allocator("SATB Buffer Allocator", ShenandoahSATBBufferSize),
79 _satb_mark_queue_set(&_satb_mark_queue_buffer_allocator)
80 {
81 }
82
83 ShenandoahBarrierSetAssembler* ShenandoahBarrierSet::assembler() {
84 BarrierSetAssembler* const bsa = BarrierSet::barrier_set()->barrier_set_assembler();
85 return reinterpret_cast<ShenandoahBarrierSetAssembler*>(bsa);
86 }
87
88 void ShenandoahBarrierSet::print_on(outputStream* st) const {
89 st->print("ShenandoahBarrierSet");
90 }
91
92 bool ShenandoahBarrierSet::is_a(BarrierSet::Name bsn) {
93 return bsn == BarrierSet::ShenandoahBarrierSet;
94 }
95
96 bool ShenandoahBarrierSet::is_aligned(HeapWord* hw) {
97 return true;
98 }
99
|