< prev index next >
src/share/vm/gc_implementation/g1/concurrentMark.hpp
Print this page
rev 7327 : 8075215: SATB buffer processing found reclaimed humongous object
Summary: Don't assume SATB buffer entries are valid objects
Reviewed-by: brutisso, ecaspole
*** 1101,1113 ****
// it checks a bunch of conditions that might cause the marking step
// to abort
void regular_clock_call();
bool concurrent() { return _concurrent; }
! // Test whether objAddr might have already been passed over by the
// mark bitmap scan, and so needs to be pushed onto the mark stack.
! bool is_below_finger(HeapWord* objAddr, HeapWord* global_finger) const;
template<bool scan> void process_grey_object(oop obj);
public:
// It resets the task; it should be called right at the beginning of
--- 1101,1113 ----
// it checks a bunch of conditions that might cause the marking step
// to abort
void regular_clock_call();
bool concurrent() { return _concurrent; }
! // Test whether obj might have already been passed over by the
// mark bitmap scan, and so needs to be pushed onto the mark stack.
! bool is_below_finger(oop obj, HeapWord* global_finger) const;
template<bool scan> void process_grey_object(oop obj);
public:
// It resets the task; it should be called right at the beginning of
*** 1154,1165 ****
bool has_timed_out() { return _has_timed_out; }
bool claimed() { return _claimed; }
void set_cm_oop_closure(G1CMOopClosure* cm_oop_closure);
! // It grays the object by marking it and, if necessary, pushing it
! // on the local queue
inline void deal_with_reference(oop obj);
// It scans an object and visits its children.
void scan_object(oop obj) { process_grey_object<true>(obj); }
--- 1154,1175 ----
bool has_timed_out() { return _has_timed_out; }
bool claimed() { return _claimed; }
void set_cm_oop_closure(G1CMOopClosure* cm_oop_closure);
! // Increment the number of references this task has visited.
! void increment_refs_reached() { ++_refs_reached; }
!
! // Grey the object by marking it. If not already marked, push it on
! // the local queue if below the finger.
! // Precondition: obj is in region.
! // Precondition: obj is below region's NTAMS.
! inline void make_reference_grey(oop obj, HeapRegion* region);
!
! // Grey the object (by calling make_grey_reference) if required,
! // e.g. obj is below its containing region's NTAMS.
! // Precondition: obj is a valid heap object.
inline void deal_with_reference(oop obj);
// It scans an object and visits its children.
void scan_object(oop obj) { process_grey_object<true>(obj); }
< prev index next >