RFR (XS): Non-updateref closures should not update refs
Roman Kennke
rkennke at redhat.com
Fri Feb 10 14:08:04 UTC 2017
Am Freitag, den 10.02.2017, 14:57 +0100 schrieb Aleksey Shipilev:
> Hi,
>
> This is a (performance) regression caused by recent oop iterators
> consolidation.
> Non-updateref closures should do RESOLVE (just read through read
> barrier),
> instead of CONCURRENT (update references):
> http://cr.openjdk.java.net/~shade/shenandoah/markref-resolve/webrev
> .01/
>
> Testing: hotspot_gc_shenandoah
Not quite. It should be NONE, not RESOLVE.
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.
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.
Roman
More information about the shenandoah-dev
mailing list