RFR: Make partial GC concurrent

Christine Flood cflood at redhat.com
Mon Oct 9 17:40:11 UTC 2017


Couple of quick high level questions to be sure I understand....

If we have a partial collection in the middle of concurrent marking, we
ignore pointers into the collection set (from regions) and we treat all
pointers into the to-regions as live?  Or do we do something more clever?
It seems like this can leave garbage on the table.

What happens if we cancel a conc partial gc?  Do we have to do a complete
update-refs phase?

I'm worried that there's a window where these flags are inconsistent.  Are
we sure that nothing bad can happen?

+ void ShenandoahHeap::set_concurrent_partial_in_progress(bool
in_progress) {+   _concurrent_partial_in_progress = in_progress;+
JavaThread::satb_mark_queue_set().set_active_all_threads(in_progress,
!in_progress);+
set_evacuation_in_progress_at_safepoint(in_progress);+ }+

Christine


On Mon, Oct 9, 2017 at 12:36 PM, Aleksey Shipilev <shade at redhat.com> wrote:

> On 10/09/2017 06:07 PM, Roman Kennke wrote:
> > Differential webrev:
> > http://cr.openjdk.java.net/~rkennke/concpartial/webrev.03.diff/
> > <http://cr.openjdk.java.net/%7Erkennke/concpartial/webrev.03.diff/>
> > Full webrev:
> > http://cr.openjdk.java.net/~rkennke/concpartial/webrev.03/
> > <http://cr.openjdk.java.net/%7Erkennke/concpartial/webrev.03/>
> >
> > Good now?
>
> Good now.
>
> Thanks,
> -Aleksey
>
>
>


More information about the shenandoah-dev mailing list