< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.cpp

Print this page

        

*** 24,34 **** --- 24,36 ---- #include "precompiled.hpp" #include "gc/shenandoah/shenandoahAsserts.hpp" #include "gc/shenandoah/shenandoahBarrierSet.hpp" #include "gc/shenandoah/shenandoahBarrierSetClone.inline.hpp" #include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp" + #include "gc/shenandoah/shenandoahBarrierSetNMethod.hpp" #include "gc/shenandoah/shenandoahCollectorPolicy.hpp" + #include "gc/shenandoah/shenandoahConcurrentRoots.hpp" #include "gc/shenandoah/shenandoahHeap.inline.hpp" #include "gc/shenandoah/shenandoahHeuristics.hpp" #include "gc/shenandoah/shenandoahTraversalGC.hpp" #include "memory/iterator.inline.hpp" #include "runtime/interfaceSupport.inline.hpp"
*** 40,54 **** #endif class ShenandoahBarrierSetC1; class ShenandoahBarrierSetC2; ShenandoahBarrierSet::ShenandoahBarrierSet(ShenandoahHeap* heap) : BarrierSet(make_barrier_set_assembler<ShenandoahBarrierSetAssembler>(), make_barrier_set_c1<ShenandoahBarrierSetC1>(), make_barrier_set_c2<ShenandoahBarrierSetC2>(), ! NULL /* barrier_set_nmethod */, BarrierSet::FakeRtti(BarrierSet::ShenandoahBarrierSet)), _heap(heap), _satb_mark_queue_buffer_allocator("SATB Buffer Allocator", ShenandoahSATBBufferSize), _satb_mark_queue_set(&_satb_mark_queue_buffer_allocator) { --- 42,64 ---- #endif class ShenandoahBarrierSetC1; class ShenandoahBarrierSetC2; + static BarrierSetNMethod* make_barrier_set_nmethod(ShenandoahHeap* heap) { + // NMethod barriers are only used when concurrent nmethod unloading is enabled + if (!ShenandoahConcurrentRoots::can_do_concurrent_class_unloading()) { + return NULL; + } + return new ShenandoahBarrierSetNMethod(heap); + } + ShenandoahBarrierSet::ShenandoahBarrierSet(ShenandoahHeap* heap) : BarrierSet(make_barrier_set_assembler<ShenandoahBarrierSetAssembler>(), make_barrier_set_c1<ShenandoahBarrierSetC1>(), make_barrier_set_c2<ShenandoahBarrierSetC2>(), ! make_barrier_set_nmethod(heap), BarrierSet::FakeRtti(BarrierSet::ShenandoahBarrierSet)), _heap(heap), _satb_mark_queue_buffer_allocator("SATB Buffer Allocator", ShenandoahSATBBufferSize), _satb_mark_queue_set(&_satb_mark_queue_buffer_allocator) {
< prev index next >