RFR: Handle old, pinned regions [v7]

William Kemper wkemper at openjdk.org
Fri Aug 5 22:56:42 UTC 2022


On Fri, 5 Aug 2022 08:40:31 GMT, Y. Srinivas Ramakrishna <ysr at openjdk.org> wrote:

> One thing I did not manage to figure out is how the work of coalesce and fill is resumed when it is interrupted.

The outer loop that drives the state machine for the old generation marking is the `ShenandoahControlThread::run_service` loop. When this thread runs its loop it will inspect the state of things:
 * was there an allocation failure? 
 * was there a system.gc request?
 * is an old generation mark in progress?
When the control thread detects an old generation mark is still in progress, it will invoke `service_concurrent_old_cycle`, which will in turn either resume filling dead objects or marking live objects.

-------------

PR: https://git.openjdk.org/shenandoah/pull/149


More information about the shenandoah-dev mailing list