comparison src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @ 3983:811ec3d0833b

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
author johnc
date Mon, 03 Oct 2011 12:49:53 -0700
parents 273b46400613
children 65a8ff39a6da
comparison
equal deleted inserted replaced
3982:273b46400613 3983:811ec3d0833b
4616 // We also need to mark copied objects. 4616 // We also need to mark copied objects.
4617 scan_root_cl = &scan_mark_root_cl; 4617 scan_root_cl = &scan_mark_root_cl;
4618 scan_perm_cl = &scan_mark_perm_cl; 4618 scan_perm_cl = &scan_mark_perm_cl;
4619 } 4619 }
4620 4620
4621 // The following closure is used to scan RSets looking for reference 4621 G1ParPushHeapRSClosure push_heap_rs_cl(_g1h, &pss);
4622 // fields that point into the collection set. The actual field iteration
4623 // is performed by a FilterIntoCSClosure, whose do_oop method calls the
4624 // do_oop method of the following closure.
4625 // Therefore we want to record the reference processor in the
4626 // FilterIntoCSClosure. To do so we record the STW reference
4627 // processor into the following closure and pass it to the
4628 // FilterIntoCSClosure in HeapRegionDCTOC::walk_mem_region_with_cl.
4629 G1ParPushHeapRSClosure push_heap_rs_cl(_g1h, &pss, rp);
4630 4622
4631 pss.start_strong_roots(); 4623 pss.start_strong_roots();
4632 _g1h->g1_process_strong_roots(/* not collecting perm */ false, 4624 _g1h->g1_process_strong_roots(/* not collecting perm */ false,
4633 SharedHeap::SO_AllClasses, 4625 SharedHeap::SO_AllClasses,
4634 scan_root_cl, 4626 scan_root_cl,