RFR: Refactor conc-mark-in-progress/satb-active flags to use gc-phase-in-progress

Aleksey Shipilev shade at redhat.com
Mon Oct 2 08:16:29 UTC 2017


On 09/29/2017 04:59 PM, Roman Kennke wrote:
> http://cr.openjdk.java.net/~rkennke/satb-concmark-flag/webrev.04/

 *) This still touches the G1 codepath in g1_pre_barrier_slow_id, please revert. Is this the
optimization you wanted to upstream? Upstream it then, and it will come back to us via the regular
channel;

 *) I don't understand the change of is_concurrent_mark_in_progress() to static function. This is
inconsistent with other flags in the heap. Is this for performance? Because in most uses I can see
ShenandoahHeap* is already available. ShenandoahBarrierSet::enqueue might just use
ShenandoahHeap::heap(), because it does not seem very heavy.

 *) I wonder if changing the poll from SATB_MQ_set().is_active() to is_conc_mark_in_progress() is
actually correct? Can we have the disparity between these two flags, causing us to lose values when
SATB is still supposed to be active? E.g. some weird weak references / keep-alive barrier interaction?

Thanks,
-Aleksey



More information about the shenandoah-dev mailing list