< prev index next >

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

RFE_8195103_reduce_initial_card_marks

*** 30,39 **** --- 30,41 ---- #include "oops/access.hpp" #include "oops/accessBackend.hpp" #include "oops/oopsHierarchy.hpp" #include "utilities/fakeRttiSupport.hpp" + class JavaThread; + // This class provides the interface between a barrier implementation and // the rest of the system. class BarrierSet: public CHeapObj<mtGC> { friend class VMStructs; ***************
*** 105,125 **** // count is # array elements being written, starting with "start", // which may not necessarily be HeapWord-aligned. static void static_write_ref_array_pre(HeapWord* start, size_t count); static void static_write_ref_array_post(HeapWord* start, size_t count); ! protected: ! virtual void write_ref_array_work(MemRegion mr) = 0; ! ! public: ! // (For efficiency reasons, this operation is specialized for certain ! // barrier types. Semantically, it should be thought of as a call to the ! // virtual "_work" function below, which must implement the barrier.) ! void write_region(MemRegion mr); protected: ! virtual void write_region_work(MemRegion mr) = 0; public: // Inform the BarrierSet that the the covered heap region that starts // with "base" has been changed to have the given size (possibly from 0, // for initialization.) --- 107,127 ---- // count is # array elements being written, starting with "start", // which may not necessarily be HeapWord-aligned. static void static_write_ref_array_pre(HeapWord* start, size_t count); static void static_write_ref_array_post(HeapWord* start, size_t count); ! // Support for optimizing compilers to call the barrier set on slow path allocations ! // that did not enter a TLAB. Used for e.g. ReduceInitialCardMarks. ! // The allocation is safe to use iff it returns true. If not, the slow-path allocation ! // is redone until it succeeds. This can e.g. prevent allocations from the slow path ! // to be in old. ! virtual void on_slowpath_allocation_exit(JavaThread* thread, oop new_obj) {} ! virtual void flush_deferred_barriers(JavaThread* thread) {} ! virtual void make_parsable(JavaThread* thread) {} protected: ! virtual void write_ref_array_work(MemRegion mr) = 0; public: // Inform the BarrierSet that the the covered heap region that starts // with "base" has been changed to have the given size (possibly from 0, // for initialization.)
< prev index next >