--- old/src/share/vm/gc/shared/barrierSet.hpp 2015-10-08 22:15:43.226410080 +0200 +++ new/src/share/vm/gc/shared/barrierSet.hpp 2015-10-08 22:15:43.175411298 +0200 @@ -27,11 +27,14 @@ #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 { friend class VMStructs; public: @@ -52,7 +55,8 @@ CardTableForRS, // CardTableModRefBSForCTRS CardTableExtension, // CardTableExtension G1SATBCT, // G1SATBCardTableModRefBS - G1SATBCTLogging // G1SATBCardTableLoggingModRefBS + G1SATBCTLogging, // G1SATBCardTableLoggingModRefBS + ShenandoahBarrierSet // ShenandoahBarrierSet }; protected: @@ -213,6 +217,27 @@ // 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