RFR: Make major GC phases exclusive from each other
Roman Kennke
rkennke at redhat.com
Tue Jan 30 10:51:40 UTC 2018
On Tue, Jan 30, 2018 at 11:07 AM, Aleksey Shipilev <shade at redhat.com> wrote:
> On 01/30/2018 10:54 AM, Roman Kennke wrote:
> > This patch makes all the major phases exclusive (marking, evac,
> > update-refs, partial and traversal). Barriers are always included, and
> > never excluded. This seems cleaner and easier to understand to me.
>
> Yup. Definitely looks better.
>
> > The state bit for 'has-forwarded' is still overlapping. Not sure what to
> do
> > with that.
>
> Nothing, it should be like that by design.
>
>
Ok, good.
> > http://cr.openjdk.java.net/~rkennke/exclusive-gc-phases/webrev.00/
>
> *) The change in shenandoahBarrierSet.cpp is not needed anymore, as the
> two bits are now exclusive?
>
> 283 if (_heap->is_concurrent_mark_in_progress() && !
> _heap->is_concurrent_traversal_in_progress()) {
>
> Right. Good catch.
> *) set_gc_state_bit is now misnomer, I think: it is set_gc_state_mask?
>
>
Fixed.
> *) It also seems possible to put the mask exactly once now?
>
> Instead of:
>
> + set_gc_state_bit(TRAVERSAL, in_progress);
> + set_gc_state_bit(HAS_FORWARDED, in_progress);
>
> Do:
>
> set_gc_state_bit(HAS_FORWARDED | TRAVERSAL, in_progress);
>
>
Fixed.
Differential:
http://cr.openjdk.java.net/~rkennke/exclusive-gc-phases/webrev.01.diff/
Full:
http://cr.openjdk.java.net/~rkennke/exclusive-gc-phases/webrev.01/
Ok now?
Roman
More information about the shenandoah-dev
mailing list