diff --git a/src/hotspot/share/gc/shared/barrierSet.hpp b/src/hotspot/share/gc/shared/barrierSet.hpp index 3972ddc..748f33b 100644 --- a/src/hotspot/share/gc/shared/barrierSet.hpp +++ b/src/hotspot/share/gc/shared/barrierSet.hpp @@ -35,6 +35,7 @@ class BarrierSetAssembler; class BarrierSetC1; +class BarrierSetC2; class JavaThread; // This class provides the interface between a barrier implementation and @@ -70,6 +71,7 @@ private: FakeRtti _fake_rtti; BarrierSetAssembler* _barrier_set_assembler; BarrierSetC1* _barrier_set_c1; + BarrierSetC2* _barrier_set_c2; public: // Metafunction mapping a class derived from BarrierSet to the @@ -92,10 +94,12 @@ public: protected: BarrierSet(BarrierSetAssembler* barrier_set_assembler, BarrierSetC1* barrier_set_c1, + BarrierSetC2* barrier_set_c2, const FakeRtti& fake_rtti) : _fake_rtti(fake_rtti), _barrier_set_assembler(barrier_set_assembler), - _barrier_set_c1(barrier_set_c1) {} + _barrier_set_c1(barrier_set_c1), + _barrier_set_c2(barrier_set_c2) {} ~BarrierSet() { } template @@ -108,6 +112,11 @@ protected: return COMPILER1_PRESENT(new BarrierSetC1T()) NOT_COMPILER1(NULL); } + template + BarrierSetC2* make_barrier_set_c2() { + return COMPILER2_PRESENT(new BarrierSetC2T()) NOT_COMPILER2(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. @@ -138,6 +147,11 @@ public: return _barrier_set_c1; } + BarrierSetC2* barrier_set_c2() { + assert(_barrier_set_c2 != NULL, "should be set"); + return _barrier_set_c2; + } + // 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