src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.cpp
changeset 59296 9186be5c78ba
parent 59270 d5a1c6545a2b
equal deleted inserted replaced
59295:8b6cc0bb93d0 59296:9186be5c78ba
    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 {