< 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 >