< prev index next >
src/hotspot/share/gc/shared/barrierSet.hpp
rename things
#include "oops/oopsHierarchy.hpp"
#include "utilities/fakeRttiSupport.hpp"
#include "utilities/macros.hpp"
class JavaThread;
! class BarrierSetCodeGen;
// This class provides the interface between a barrier implementation and
// the rest of the system.
class BarrierSet: public CHeapObj<mtGC> {
#include "oops/oopsHierarchy.hpp"
#include "utilities/fakeRttiSupport.hpp"
#include "utilities/macros.hpp"
class JavaThread;
! class BarrierSetAssembler;
// This class provides the interface between a barrier implementation and
// the rest of the system.
class BarrierSet: public CHeapObj<mtGC> {
***************
// entry, and pass it up to its base class.
typedef FakeRttiSupport<BarrierSet, Name> FakeRtti;
private:
FakeRtti _fake_rtti;
! BarrierSetCodeGen* _code_gen;
public:
// Metafunction mapping a class derived from BarrierSet to the
// corresponding Name enum tag.
template<typename T> struct GetName;
// entry, and pass it up to its base class.
typedef FakeRttiSupport<BarrierSet, Name> FakeRtti;
private:
FakeRtti _fake_rtti;
! BarrierSetAssembler* _barrier_set_assembler;
public:
// Metafunction mapping a class derived from BarrierSet to the
// corresponding Name enum tag.
template<typename T> struct GetName;
***************
bool is_a(BarrierSet::Name bsn) const { return _fake_rtti.has_tag(bsn); }
// End of fake RTTI support.
protected:
! BarrierSet(BarrierSetCodeGen* code_gen, const FakeRtti& fake_rtti) :
_fake_rtti(fake_rtti),
! _code_gen(code_gen) { }
~BarrierSet() { }
! template <class BarrierSetCodeGenT>
! BarrierSetCodeGen* make_code_gen() {
! return NOT_ZERO(new BarrierSetCodeGenT()) ZERO_ONLY(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.
bool is_a(BarrierSet::Name bsn) const { return _fake_rtti.has_tag(bsn); }
// End of fake RTTI support.
protected:
! BarrierSet(BarrierSetAssembler* barrier_set_assembler, const FakeRtti& fake_rtti) :
_fake_rtti(fake_rtti),
! _barrier_set_assembler(barrier_set_assembler) { }
~BarrierSet() { }
! template <class BarrierSetAssemblerT>
! BarrierSetAssembler* make_barrier_set_assembler() {
! return NOT_ZERO(new BarrierSetAssemblerT()) ZERO_ONLY(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.
***************
// Print a description of the memory for the barrier set
virtual void print_on(outputStream* st) const = 0;
static void set_bs(BarrierSet* bs) { _bs = bs; }
! BarrierSetCodeGen* code_gen() {
! assert(_code_gen != NULL, "should be set");
! return _code_gen;
}
// 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
// Print a description of the memory for the barrier set
virtual void print_on(outputStream* st) const = 0;
static void set_bs(BarrierSet* bs) { _bs = bs; }
! BarrierSetAssembler* barrier_set_assembler() {
! assert(_barrier_set_assembler != NULL, "should be set");
! return _barrier_set_assembler;
}
// 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
< prev index next >