mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-20 02:54:35 +02:00
8242643: Shenandoah: split concurrent weak and strong root processing
Reviewed-by: shade
This commit is contained in:
parent
346d09e7aa
commit
23709c830e
9 changed files with 80 additions and 55 deletions
|
@ -342,8 +342,8 @@ void ShenandoahControlThread::service_concurrent_normal_cycle(GCCause::Cause cau
|
|||
// Complete marking under STW, and start evacuation
|
||||
heap->vmop_entry_final_mark();
|
||||
|
||||
// Evacuate concurrent roots
|
||||
heap->entry_roots();
|
||||
// Process weak roots that might still point to regions that would be broken by cleanup
|
||||
heap->entry_weak_roots();
|
||||
|
||||
// Final mark might have reclaimed some immediate garbage, kick cleanup to reclaim
|
||||
// the space. This would be the last action if there is nothing to evacuate.
|
||||
|
@ -354,6 +354,13 @@ void ShenandoahControlThread::service_concurrent_normal_cycle(GCCause::Cause cau
|
|||
heap->free_set()->log_status();
|
||||
}
|
||||
|
||||
// Processing strong roots
|
||||
// This may be skipped if there is nothing to update/evacuate.
|
||||
// If so, strong_root_in_progress would be unset.
|
||||
if (heap->is_concurrent_strong_root_in_progress()) {
|
||||
heap->entry_strong_roots();
|
||||
}
|
||||
|
||||
// Continue the cycle with evacuation and optional update-refs.
|
||||
// This may be skipped if there is nothing to evacuate.
|
||||
// If so, evac_in_progress would be unset by collection set preparation code.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue