RFR: Rewrite and fix ShenandoahHeap::marked_object_iterate

Dominik Inführ dominik.infuehr at gmail.com
Wed Oct 18 16:30:28 UTC 2017


In Step 1 the non-prefetch-path does use obj->size() while walking but the
prefetch-path doesn't. Since this code seems to be very performance
sensitive, is it possible/beneficial to unify this to one or the other?
Although there might be a reason for this dissimilarity I am not aware of.

Dominik

On Oct 18, 2017 16:08, "Aleksey Shipilev" <shade at redhat.com> wrote:

> http://cr.openjdk.java.net/~shade/shenandoah/markscan-tams-bug/webrev.02/
>
> This is the follow-up for the bug that Zhengyu found:
>   http://mail.openjdk.java.net/pipermail/shenandoah-dev/2017-
> October/004049.html
>
> Our attempts to fix it in current code makes the code even more messy, so
> it makes sense to rewrite
> that method completely, in a saner structure. It fixes the bug Zhengyu
> originally found by having
> the explicit past-TAMS scanning step that restarts at TAMS. This also
> covers the non-prefetched
> path, as Dominik suggested. The bitmap scan is rewritten to guarantee to
> touch below-TAMS objects only.
>
> Please take a hard look at the code. I am thinking if it is possible to
> unit-test this thing...
>
> Testing: hotspot_gc_shenandoah {fastdebug|release}
>
> Thanks,
> -Aleksey
>
>


More information about the shenandoah-dev mailing list