< prev index next >

src/hotspot/share/gc/g1/g1BarrierSet.hpp

G1BarrierSet_merge

*** 20,53 **** * or visit www.oracle.com if you need additional information or have any * questions. * */ ! #ifndef SHARE_VM_GC_G1_G1SATBCARDTABLEMODREFBS_HPP ! #define SHARE_VM_GC_G1_G1SATBCARDTABLEMODREFBS_HPP - #include "gc/g1/g1RegionToSpaceMapper.hpp" #include "gc/shared/cardTableModRefBS.hpp" - #include "memory/memRegion.hpp" - #include "oops/oop.hpp" - #include "utilities/macros.hpp" class DirtyCardQueueSet; - class G1SATBCardTableLoggingModRefBS; class CardTable; class G1CardTable; // This barrier is specialized to use a logging barrier to support // snapshot-at-the-beginning marking. ! class G1SATBCardTableModRefBS: public CardTableModRefBS { friend class VMStructs; ! protected: ! G1SATBCardTableModRefBS(G1CardTable* table, const BarrierSet::FakeRtti& fake_rtti); ! ~G1SATBCardTableModRefBS() { } - public: // Add "pre_val" to a set of objects that may have been disconnected from the // pre-marking object graph. static void enqueue(oop pre_val); static void enqueue_if_weak_or_archive(DecoratorSet decorators, oop value); --- 20,50 ---- * or visit www.oracle.com if you need additional information or have any * questions. * */ ! #ifndef SHARE_VM_GC_G1_G1BARRIERSET_HPP ! #define SHARE_VM_GC_G1_G1BARRIERSET_HPP #include "gc/shared/cardTableModRefBS.hpp" class DirtyCardQueueSet; class CardTable; class G1CardTable; // This barrier is specialized to use a logging barrier to support // snapshot-at-the-beginning marking. ! class G1BarrierSet: public CardTableModRefBS { friend class VMStructs; ! private: ! DirtyCardQueueSet& _dcqs; ! ! public: ! G1BarrierSet(G1CardTable* table); ! ~G1BarrierSet() { } // Add "pre_val" to a set of objects that may have been disconnected from the // pre-marking object graph. static void enqueue(oop pre_val); static void enqueue_if_weak_or_archive(DecoratorSet decorators, oop value); ***************
*** 56,85 **** virtual void write_ref_array_pre(oop* dst, int count, bool dest_uninitialized); virtual void write_ref_array_pre(narrowOop* dst, int count, bool dest_uninitialized); template <DecoratorSet decorators, typename T> void write_ref_field_pre(T* field); - }; - - template<> - struct BarrierSet::GetName<G1SATBCardTableModRefBS> { - static const BarrierSet::Name value = BarrierSet::G1SATBCT; - }; - - template<> - struct BarrierSet::GetType<BarrierSet::G1SATBCT> { - typedef G1SATBCardTableModRefBS type; - }; - - // Adds card-table logging to the post-barrier. - // Usual invariant: all dirty cards are logged in the DirtyCardQueueSet. - class G1SATBCardTableLoggingModRefBS: public G1SATBCardTableModRefBS { - private: - DirtyCardQueueSet& _dcqs; - - public: - G1SATBCardTableLoggingModRefBS(G1CardTable* card_table); // NB: if you do a whole-heap invalidation, the "usual invariant" defined // above no longer applies. void invalidate(MemRegion mr); --- 53,62 ---- ***************
*** 92,102 **** virtual void on_thread_attach(JavaThread* thread); virtual void on_thread_detach(JavaThread* thread); // Callbacks for runtime accesses. ! template <DecoratorSet decorators, typename BarrierSetT = G1SATBCardTableLoggingModRefBS> class AccessBarrier: public ModRefBarrierSet::AccessBarrier<decorators, BarrierSetT> { typedef ModRefBarrierSet::AccessBarrier<decorators, BarrierSetT> ModRef; typedef BarrierSet::AccessBarrier<decorators, BarrierSetT> Raw; public: --- 69,79 ---- virtual void on_thread_attach(JavaThread* thread); virtual void on_thread_detach(JavaThread* thread); // Callbacks for runtime accesses. ! template <DecoratorSet decorators, typename BarrierSetT = G1BarrierSet> class AccessBarrier: public ModRefBarrierSet::AccessBarrier<decorators, BarrierSetT> { typedef ModRefBarrierSet::AccessBarrier<decorators, BarrierSetT> ModRef; typedef BarrierSet::AccessBarrier<decorators, BarrierSetT> Raw; public: ***************
*** 116,130 **** static oop oop_load_in_heap(T* addr); }; }; template<> ! struct BarrierSet::GetName<G1SATBCardTableLoggingModRefBS> { ! static const BarrierSet::Name value = BarrierSet::G1SATBCTLogging; }; template<> ! struct BarrierSet::GetType<BarrierSet::G1SATBCTLogging> { ! typedef G1SATBCardTableLoggingModRefBS type; }; ! #endif // SHARE_VM_GC_G1_G1SATBCARDTABLEMODREFBS_HPP --- 93,107 ---- static oop oop_load_in_heap(T* addr); }; }; template<> ! struct BarrierSet::GetName<G1BarrierSet> { ! static const BarrierSet::Name value = BarrierSet::G1BarrierSet; }; template<> ! struct BarrierSet::GetType<BarrierSet::G1BarrierSet> { ! typedef ::G1BarrierSet type; }; ! #endif // SHARE_VM_GC_G1_G1BARRIERSET_HPP
< prev index next >