Mercurial > hg > graal-jvmci-8
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, |