24 #ifndef SHARE_GC_SHENANDOAH_SHENANDOAHBARRIERSET_HPP
25 #define SHARE_GC_SHENANDOAH_SHENANDOAHBARRIERSET_HPP
26
27 #include "gc/shared/accessBarrierSupport.hpp"
28 #include "gc/shared/barrierSet.hpp"
29 #include "gc/shenandoah/shenandoahHeap.hpp"
30 #include "gc/shenandoah/shenandoahSATBMarkQueueSet.hpp"
31
32 class ShenandoahBarrierSetAssembler;
33
34 class ShenandoahBarrierSet: public BarrierSet {
35 public:
36 enum ArrayCopyStoreValMode {
37 NONE,
38 RESOLVE_BARRIER,
39 EVAC_BARRIER
40 };
41 private:
42
43 ShenandoahHeap* _heap;
44 ShenandoahSATBMarkQueueSet _satb_mark_queue_set;
45
46 public:
47 ShenandoahBarrierSet(ShenandoahHeap* heap);
48
49 static ShenandoahBarrierSetAssembler* assembler();
50
51 inline static ShenandoahBarrierSet* barrier_set() {
52 return barrier_set_cast<ShenandoahBarrierSet>(BarrierSet::barrier_set());
53 }
54
55 static ShenandoahSATBMarkQueueSet& satb_mark_queue_set() {
56 return barrier_set()->_satb_mark_queue_set;
57 }
58
59 void print_on(outputStream* st) const;
60
61 bool is_a(BarrierSet::Name bsn);
62
63 bool is_aligned(HeapWord* hw);
|
24 #ifndef SHARE_GC_SHENANDOAH_SHENANDOAHBARRIERSET_HPP
25 #define SHARE_GC_SHENANDOAH_SHENANDOAHBARRIERSET_HPP
26
27 #include "gc/shared/accessBarrierSupport.hpp"
28 #include "gc/shared/barrierSet.hpp"
29 #include "gc/shenandoah/shenandoahHeap.hpp"
30 #include "gc/shenandoah/shenandoahSATBMarkQueueSet.hpp"
31
32 class ShenandoahBarrierSetAssembler;
33
34 class ShenandoahBarrierSet: public BarrierSet {
35 public:
36 enum ArrayCopyStoreValMode {
37 NONE,
38 RESOLVE_BARRIER,
39 EVAC_BARRIER
40 };
41 private:
42
43 ShenandoahHeap* _heap;
44 BufferNode::Allocator _satb_mark_queue_buffer_allocator;
45 ShenandoahSATBMarkQueueSet _satb_mark_queue_set;
46
47 public:
48 ShenandoahBarrierSet(ShenandoahHeap* heap);
49
50 static ShenandoahBarrierSetAssembler* assembler();
51
52 inline static ShenandoahBarrierSet* barrier_set() {
53 return barrier_set_cast<ShenandoahBarrierSet>(BarrierSet::barrier_set());
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);
|