RFR (XS): Non-updateref closures should not update refs
Roman Kennke
rkennke at redhat.com
Fri Feb 10 14:20:15 UTC 2017
Am Freitag, den 10.02.2017, 15:17 +0100 schrieb Aleksey Shipilev:
> On 02/10/2017 03:08 PM, Roman Kennke wrote:
> > Am Freitag, den 10.02.2017, 14:57 +0100 schrieb Aleksey Shipilev:
> > > http://cr.openjdk.java.net/~shade/shenandoah/markref-resolve/we
> > > brev
> > > .01/
> > >
> > > Testing: hotspot_gc_shenandoah
> >
> > Not quite. It should be NONE, not RESOLVE.
>
> Right. I changed to NONE and tests are fine.
>
> > This happens only for the very first GC cycles, and after full-gcs.
> > In
> > these situations, every brooks ptr should only point to self.
> >
> > BTW: ShenandoahInitMarkRootsClosure could also avoid RESOLVEing.
>
> Not sure about that. Changed RESOLVE -> NONE there, and tests started
> crashing.
> Are you sure the roots are never forwarded?
Ok, I wasn't clear. We can avoid RESOLVE only when
need_update_refs==false. This means adding another closure (or
template) for this case.
> > But I am tempted to rather remove this whole no-update logic
> > altogether. It should happen so rarely, many apps would probably
> > see it
> > only once (at the very beginning), it's very likely not noticable,
> > and
> > it adds considerable amount of complexity all over the place.
>
> My current refactoring should remove a significant part of it, and we
> can retain
> non-updaterefs if we want to ever reinstate a separate update-ref
> phase (and
> then mark can avoid updating).
Yeah right. This was the reason why I kept this around for all this
time :-) Thanks for reminding me...
Roman
More information about the shenandoah-dev
mailing list