changeset 2744:811ec3d0833b

Find changesets by keywords (author, files, the commit message), revision
number or hash, or revset expression.

7097053: G1: assert(da ? referent->is_oop() : referent->is_oop_or_null()) failed: referenceProcessor.cpp:1054
Summary: During remembered set scanning, the reference processor could discover a reference object whose referent was in the process of being copied and so may not be completely initialized. Do not perform reference discovery during remembered set scanning.
Reviewed-by: tonyp, ysr

--- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Wed Sep 28 10:36:31 2011 -0700+++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Mon Oct 03 12:49:53 2011 -0700@@ -4618,15 +4618,7 @@ scan_perm_cl = &scan_mark_perm_cl; }- // The following closure is used to scan RSets looking for reference- // fields that point into the collection set. The actual field iteration- // is performed by a FilterIntoCSClosure, whose do_oop method calls the- // do_oop method of the following closure.- // Therefore we want to record the reference processor in the- // FilterIntoCSClosure. To do so we record the STW reference- // processor into the following closure and pass it to the- // FilterIntoCSClosure in HeapRegionDCTOC::walk_mem_region_with_cl.- G1ParPushHeapRSClosure push_heap_rs_cl(_g1h, &pss, rp);+ G1ParPushHeapRSClosure push_heap_rs_cl(_g1h, &pss); pss.start_strong_roots(); _g1h->g1_process_strong_roots(/* not collecting perm */ false,