diff --git a/src/hotspot/share/gc/shared/barrierSet.hpp b/src/hotspot/share/gc/shared/barrierSet.hpp index 1ee37cd..3972ddc 100644 --- a/src/hotspot/share/gc/shared/barrierSet.hpp +++ b/src/hotspot/share/gc/shared/barrierSet.hpp @@ -33,8 +33,9 @@ #include "utilities/fakeRttiSupport.hpp" #include "utilities/macros.hpp" -class JavaThread; class BarrierSetAssembler; +class BarrierSetC1; +class JavaThread; // This class provides the interface between a barrier implementation and // the rest of the system. @@ -68,6 +69,7 @@ protected: private: FakeRtti _fake_rtti; BarrierSetAssembler* _barrier_set_assembler; + BarrierSetC1* _barrier_set_c1; public: // Metafunction mapping a class derived from BarrierSet to the @@ -88,9 +90,12 @@ public: // End of fake RTTI support. protected: - BarrierSet(BarrierSetAssembler* barrier_set_assembler, const FakeRtti& fake_rtti) : + BarrierSet(BarrierSetAssembler* barrier_set_assembler, + BarrierSetC1* barrier_set_c1, + const FakeRtti& fake_rtti) : _fake_rtti(fake_rtti), - _barrier_set_assembler(barrier_set_assembler) { } + _barrier_set_assembler(barrier_set_assembler), + _barrier_set_c1(barrier_set_c1) {} ~BarrierSet() { } template @@ -98,6 +103,11 @@ protected: return NOT_ZERO(new BarrierSetAssemblerT()) ZERO_ONLY(NULL); } + template + BarrierSetC1* make_barrier_set_c1() { + return COMPILER1_PRESENT(new BarrierSetC1T()) NOT_COMPILER1(NULL); + } + public: // Support for optimizing compilers to call the barrier set on slow path allocations // that did not enter a TLAB. Used for e.g. ReduceInitialCardMarks. @@ -123,6 +133,11 @@ public: return _barrier_set_assembler; } + BarrierSetC1* barrier_set_c1() { + assert(_barrier_set_c1 != NULL, "should be set"); + return _barrier_set_c1; + } + // The AccessBarrier of a BarrierSet subclass is called by the Access API // (cf. oops/access.hpp) to perform decorated accesses. GC implementations // may override these default access operations by declaring an