RFR (XS): Non-updateref closures should not update refs
Aleksey Shipilev
shade at redhat.com
Fri Feb 10 14:17:23 UTC 2017
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/webrev
>> .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?
> 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).
Thanks,
-Aleksey
More information about the shenandoah-dev
mailing list