RFR: Skip pre-evac verification and pacing on shortcut cycle path

Aleksey Shipilev shade at redhat.com
Mon Oct 22 13:37:47 UTC 2018


On 10/22/2018 03:32 PM, Zhengyu Gu wrote:
> I think we also need "if (VerifyAfterGC) Universe::verify()" after trash_cset_regions() in
> op_final_mark(), if update_ref is piggybacked to marking cycle, where is equivalent to
> op_final_updateref with separate ref-update cycle, no?

No, we do not need anything additional after trash_cset_regions().

We need to do VerifyAfterGC once per final op_*, which is what would happen if cycle shortcuts after
CM in op_final_mark(). If it is not shortcutted after mark, it will continue the cycle, and
VerifyAfterGC block would be invoked either in op_final_evac() or op_final_updaterefs().

See the handy diagram in ShenandoahControlThread::service_concurrent_normal_cycle().

> And I am still puzzled why op_final_evac() is the last op for a GC cycle, cause refs are not updated.

CM-with-UR cycle would coalesce reference updates with next mark in that mode. op_final_evac() would
be the last VMOp in this cycle.

-Aleksey



More information about the shenandoah-dev mailing list