RFR: Merge draining SATB and task queues

Roman Kennke rkennke at redhat.com
Wed Nov 23 15:06:34 UTC 2016


Am Mittwoch, den 23.11.2016, 14:42 +0100 schrieb Aleksey Shipilev:
> On 11/23/2016 02:39 PM, Roman Kennke wrote:
> > 
> > Am Mittwoch, den 23.11.2016, 14:34 +0100 schrieb Aleksey Shipilev:
> > > 
> > > On 11/23/2016 11:35 AM, Roman Kennke wrote:
> > > > 
> > > > 
> > > > http://cr.openjdk.java.net/~rkennke/mergedrainsatb/webrev/
> > > 
> > > Um. I don't understand why did we drop "Drain Queues", and do
> > > this:
> > > 
> > >  policy->record_phase_start(full_gc ?
> > >       ShenandoahCollectorPolicy::full_gc_mark_drain_queues :
> > >       ShenandoahCollectorPolicy::drain_satb);
> > > 
> > > I would have expected we keep "Drain Queues", and drop "Drain
> > > SATB"
> > > counters, because we still do queue work.
> > 
> > Yeah, I was undecided about this.
> > 
> > For concurrent marking, it's draining the SATB queues, and then
> > process
> > all oops that came out of the SATB queues, so it's all SATB post-
> > processing, that's why I kept 'Drain SATB' and dropped 'Drain
> > Queues'.
> > 
> > However, for mark-compact, it has nothing to do with draining SATB.
> > It's basically the normal marking queue after seeding the task
> > queues
> > with root oops. That's why I kept 'Full GC drain queues'.
> > 
> > Do you want me to change it back to 'Drain Queues' for conc
> > marking?
> 
> Ah, that explains it. I thought the queues still have leftover work
> before final mark in concurrent mode. This deserves a comment in
> SCM::shared_finish_mark_from_roots().
> 
> Looks good then.


Thanks, committed with a little comment.

I also pushed a fixlet that replaces == with the proper barrier in
javaClasses.cpp, this was so trivial I thought it wouldn't warrant a
review.

Roman



More information about the shenandoah-dev mailing list