24 #include "precompiled.hpp" |
24 #include "precompiled.hpp" |
25 #include "gc/shenandoah/shenandoahAsserts.hpp" |
25 #include "gc/shenandoah/shenandoahAsserts.hpp" |
26 #include "gc/shenandoah/shenandoahBarrierSet.hpp" |
26 #include "gc/shenandoah/shenandoahBarrierSet.hpp" |
27 #include "gc/shenandoah/shenandoahBarrierSetClone.inline.hpp" |
27 #include "gc/shenandoah/shenandoahBarrierSetClone.inline.hpp" |
28 #include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp" |
28 #include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp" |
|
29 #include "gc/shenandoah/shenandoahBarrierSetNMethod.hpp" |
29 #include "gc/shenandoah/shenandoahCollectorPolicy.hpp" |
30 #include "gc/shenandoah/shenandoahCollectorPolicy.hpp" |
30 #include "gc/shenandoah/shenandoahConcurrentRoots.hpp" |
31 #include "gc/shenandoah/shenandoahConcurrentRoots.hpp" |
31 #include "gc/shenandoah/shenandoahHeap.inline.hpp" |
32 #include "gc/shenandoah/shenandoahHeap.inline.hpp" |
32 #include "gc/shenandoah/shenandoahHeuristics.hpp" |
33 #include "gc/shenandoah/shenandoahHeuristics.hpp" |
33 #include "gc/shenandoah/shenandoahTraversalGC.hpp" |
34 #include "gc/shenandoah/shenandoahTraversalGC.hpp" |
41 #endif |
42 #endif |
42 |
43 |
43 class ShenandoahBarrierSetC1; |
44 class ShenandoahBarrierSetC1; |
44 class ShenandoahBarrierSetC2; |
45 class ShenandoahBarrierSetC2; |
45 |
46 |
|
47 static BarrierSetNMethod* make_barrier_set_nmethod(ShenandoahHeap* heap) { |
|
48 // NMethod barriers are only used when concurrent nmethod unloading is enabled |
|
49 if (!ShenandoahConcurrentRoots::can_do_concurrent_class_unloading()) { |
|
50 return NULL; |
|
51 } |
|
52 return new ShenandoahBarrierSetNMethod(heap); |
|
53 } |
|
54 |
46 ShenandoahBarrierSet::ShenandoahBarrierSet(ShenandoahHeap* heap) : |
55 ShenandoahBarrierSet::ShenandoahBarrierSet(ShenandoahHeap* heap) : |
47 BarrierSet(make_barrier_set_assembler<ShenandoahBarrierSetAssembler>(), |
56 BarrierSet(make_barrier_set_assembler<ShenandoahBarrierSetAssembler>(), |
48 make_barrier_set_c1<ShenandoahBarrierSetC1>(), |
57 make_barrier_set_c1<ShenandoahBarrierSetC1>(), |
49 make_barrier_set_c2<ShenandoahBarrierSetC2>(), |
58 make_barrier_set_c2<ShenandoahBarrierSetC2>(), |
50 NULL /* barrier_set_nmethod */, |
59 make_barrier_set_nmethod(heap), |
51 BarrierSet::FakeRtti(BarrierSet::ShenandoahBarrierSet)), |
60 BarrierSet::FakeRtti(BarrierSet::ShenandoahBarrierSet)), |
52 _heap(heap), |
61 _heap(heap), |
53 _satb_mark_queue_buffer_allocator("SATB Buffer Allocator", ShenandoahSATBBufferSize), |
62 _satb_mark_queue_buffer_allocator("SATB Buffer Allocator", ShenandoahSATBBufferSize), |
54 _satb_mark_queue_set(&_satb_mark_queue_buffer_allocator) |
63 _satb_mark_queue_set(&_satb_mark_queue_buffer_allocator) |
55 { |
64 { |