< prev index next >
src/hotspot/share/gc/shared/cardTableBarrierSet.hpp
8199604_cardtablemodrefbs_rename
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
! #ifndef SHARE_VM_GC_SHARED_CARDTABLEMODREFBS_HPP
! #define SHARE_VM_GC_SHARED_CARDTABLEMODREFBS_HPP
#include "gc/shared/modRefBarrierSet.hpp"
#include "utilities/align.hpp"
class CardTable;
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
! #ifndef SHARE_VM_GC_SHARED_CARDTABLEBARRIERSET_HPP
! #define SHARE_VM_GC_SHARED_CARDTABLEBARRIERSET_HPP
#include "gc/shared/modRefBarrierSet.hpp"
#include "utilities/align.hpp"
class CardTable;
***************
// modified field itself. For object arrays, however, the barrier *is*
// precise; only the card containing the modified element is dirtied.
// Closures used to scan dirty cards should take these
// considerations into account.
! class CardTableModRefBS: public ModRefBarrierSet {
// Some classes get to look at some private stuff.
friend class VMStructs;
protected:
// Used in support of ReduceInitialCardMarks; only consulted if COMPILER2
// or INCLUDE_JVMCI is being used
bool _defer_initial_card_mark;
CardTable* _card_table;
! CardTableModRefBS(CardTable* card_table, const BarrierSet::FakeRtti& fake_rtti);
public:
! CardTableModRefBS(CardTable* card_table);
! ~CardTableModRefBS();
CardTable* card_table() const { return _card_table; }
virtual void initialize();
// modified field itself. For object arrays, however, the barrier *is*
// precise; only the card containing the modified element is dirtied.
// Closures used to scan dirty cards should take these
// considerations into account.
! class CardTableBarrierSet: public ModRefBarrierSet {
// Some classes get to look at some private stuff.
friend class VMStructs;
protected:
// Used in support of ReduceInitialCardMarks; only consulted if COMPILER2
// or INCLUDE_JVMCI is being used
bool _defer_initial_card_mark;
CardTable* _card_table;
! CardTableBarrierSet(CardTable* card_table, const BarrierSet::FakeRtti& fake_rtti);
public:
! CardTableBarrierSet(CardTable* card_table);
! ~CardTableBarrierSet();
CardTable* card_table() const { return _card_table; }
virtual void initialize();
***************
virtual void make_parsable(JavaThread* thread) { flush_deferred_card_mark_barrier(thread); }
virtual void print_on(outputStream* st) const;
! template <DecoratorSet decorators, typename BarrierSetT = CardTableModRefBS>
class AccessBarrier: public ModRefBarrierSet::AccessBarrier<decorators, BarrierSetT> {};
};
template<>
! struct BarrierSet::GetName<CardTableModRefBS> {
! static const BarrierSet::Name value = BarrierSet::CardTableModRef;
};
template<>
! struct BarrierSet::GetType<BarrierSet::CardTableModRef> {
! typedef CardTableModRefBS type;
};
! #endif // SHARE_VM_GC_SHARED_CARDTABLEMODREFBS_HPP
virtual void make_parsable(JavaThread* thread) { flush_deferred_card_mark_barrier(thread); }
virtual void print_on(outputStream* st) const;
! template <DecoratorSet decorators, typename BarrierSetT = CardTableBarrierSet>
class AccessBarrier: public ModRefBarrierSet::AccessBarrier<decorators, BarrierSetT> {};
};
template<>
! struct BarrierSet::GetName<CardTableBarrierSet> {
! static const BarrierSet::Name value = BarrierSet::CardTableBarrierSet;
};
template<>
! struct BarrierSet::GetType<BarrierSet::CardTableBarrierSet> {
! typedef ::CardTableBarrierSet type;
};
! #endif // SHARE_VM_GC_SHARED_CARDTABLEBARRIERSET_HPP
< prev index next >