< prev index next >

src/share/vm/gc/shared/barrierSet.hpp

Print this page

        

*** 25,39 **** --- 25,42 ---- #ifndef SHARE_VM_GC_SHARED_BARRIERSET_HPP #define SHARE_VM_GC_SHARED_BARRIERSET_HPP #include "memory/memRegion.hpp" #include "oops/oopsHierarchy.hpp" + #include "asm/register.hpp" #include "utilities/fakeRttiSupport.hpp" // This class provides the interface between a barrier implementation and // the rest of the system. + class MacroAssembler; + class BarrierSet: public CHeapObj<mtGC> { friend class VMStructs; public: // Fake RTTI support. For a derived class T to participate // - T must have a corresponding Name entry.
*** 50,60 **** ModRef, // ModRefBarrierSet CardTableModRef, // CardTableModRefBS CardTableForRS, // CardTableModRefBSForCTRS CardTableExtension, // CardTableExtension G1SATBCT, // G1SATBCardTableModRefBS ! G1SATBCTLogging // G1SATBCardTableLoggingModRefBS }; protected: typedef FakeRttiSupport<BarrierSet, Name> FakeRtti; --- 53,64 ---- ModRef, // ModRefBarrierSet CardTableModRef, // CardTableModRefBS CardTableForRS, // CardTableModRefBSForCTRS CardTableExtension, // CardTableExtension G1SATBCT, // G1SATBCardTableModRefBS ! G1SATBCTLogging, // G1SATBCardTableLoggingModRefBS ! ShenandoahBarrierSet // ShenandoahBarrierSet }; protected: typedef FakeRttiSupport<BarrierSet, Name> FakeRtti;
*** 211,220 **** --- 215,245 ---- // within the heap, this function tells whether they are met. virtual bool is_aligned(HeapWord* addr) = 0; // Print a description of the memory for the barrier set virtual void print_on(outputStream* st) const = 0; + + virtual oop read_barrier(oop src) { + return src; + } + virtual oop write_barrier(oop src) { + return src; + } + + #ifndef CC_INTERP + virtual void interpreter_read_barrier(MacroAssembler* masm, Register dst) { + // Default implementation does nothing. + } + + virtual void interpreter_read_barrier_not_null(MacroAssembler* masm, Register dst) { + // Default implementation does nothing. + } + + virtual void interpreter_write_barrier(MacroAssembler* masm, Register dst) { + // Default implementation does nothing. + } + #endif }; template<typename T> inline T* barrier_set_cast(BarrierSet* bs) { assert(bs->is_a(BarrierSet::GetName<T>::value), "wrong type of barrier set");
< prev index next >