mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 03:24:38 +02:00
7097053: G1: assert(da ? referent->is_oop() : referent->is_oop_or_null()) failed: referenceProcessor.cpp:1054
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
This commit is contained in:
parent
bbfe9c6e25
commit
02e9894454
4 changed files with 12 additions and 57 deletions
|
@ -4618,15 +4618,7 @@ public:
|
|||
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,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue