RFR 8204947: Port ShenandoahTaskTerminator to mainline and make it default

Thomas Schatzl thomas.schatzl at oracle.com
Wed Dec 5 17:59:49 UTC 2018


On Wed, 2018-12-05 at 12:40 -0500, zgu at redhat.com wrote:
> Hi Thomas,
> 
> Thanks for the updates.
> 
> On Wed, 2018-12-05 at 17:21 +0100, Thomas Schatzl wrote:
> > Hi Zhengyu,
> > 
> > On Fri, 2018-11-30 at 10:00 -0500, Zhengyu Gu wrote:
> > > Hi Thomas,
> > > 
> > > Thanks for testing and cleaning it up.
> > 
> >   I think that change is good.
> > 
> > What I was trying to do was getting rid of the assignment operator
> > in TaskTerminator, because of its semantics. It's a "move", not an
> > assignment.
> > 
> > So I created the change at
> > 
> > http://cr.openjdk.java.net/~tschatzl/8204947/webrev.1_to_2
> > 
> > which does that, and simply provides a reset_for_reuse() method
> > which should do the same.
> > 
> > However, when trying this out I rarely get an assertion failure in
> > taskqueue.cpp:234.
> 
> Looks like that G1 concurrent mark can abort the termination (e.g.
> G1CMTask::do_marking_step), which leaves the terminator into this
> state?
> 

I think this is exactly the issue - it also occurs within the Mark
Roots phase, when being aborted by a full gc.

Thanks,
  Thomas





More information about the hotspot-gc-dev mailing list