RFR: Make major GC phases exclusive from each other
Aleksey Shipilev
shade at redhat.com
Tue Jan 30 10:07:49 UTC 2018
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.
> 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()) {
*) set_gc_state_bit is now misnomer, I think: it is set_gc_state_mask?
*) 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);
Thanks,
-Aleksey
More information about the shenandoah-dev
mailing list