RFR: Rewrite and fix ShenandoahHeap::marked_object_iterate
Zhengyu Gu
zgu at redhat.com
Wed Oct 18 14:34:01 UTC 2017
547 if (cb < tams) {
548 cb = mark_bit_map->getNextMarkedWordAddress(cb, end);
549 }
I recall when I added additional test/branch with avoiding filler
evacuation experiment, I saw noticeable performance regression.
By replacing line #548:
cb = mark_bit_map->getNextMarkedWordAddress(cb, bitmap_limit +
skip_bitmap_delta);
we can avoid cb < tams check.
-Zhengyu
On 10/18/2017 10:07 AM, Aleksey Shipilev 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