Mercurial > hg > graal-jvmci-8
diff src/share/vm/gc_implementation/g1/concurrentMark.hpp @ 23030:399885e13e90
8075215: SATB buffer processing found reclaimed humongous object
Summary: Don't assume SATB buffer entries are valid objects
Reviewed-by: brutisso, ecaspole
author | kbarrett |
---|---|
date | Fri, 01 May 2015 17:38:12 -0400 |
parents | 0f8f1250fed5 |
children | dd9cc155639c |
line wrap: on
line diff
--- a/src/share/vm/gc_implementation/g1/concurrentMark.hpp Wed Apr 22 14:06:49 2015 -0400 +++ b/src/share/vm/gc_implementation/g1/concurrentMark.hpp Fri May 01 17:38:12 2015 -0400 @@ -1103,9 +1103,9 @@ void regular_clock_call(); bool concurrent() { return _concurrent; } - // Test whether objAddr might have already been passed over by the + // 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(HeapWord* objAddr, HeapWord* global_finger) const; + bool is_below_finger(oop obj, HeapWord* global_finger) const; template<bool scan> void process_grey_object(oop obj); @@ -1156,8 +1156,18 @@ 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 + // 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.