RFR: Rewrite and fix ShenandoahHeap::marked_object_iterate
Aleksey Shipilev
shade at redhat.com
Wed Oct 18 18:10:07 UTC 2017
On 10/18/2017 07:19 PM, Aleksey Shipilev wrote:
> On 10/18/2017 04:34 PM, Zhengyu Gu wrote:
>> 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.
>
> I don't see performance regressions, but we can indeed make smarter bitmap scans:
> http://cr.openjdk.java.net/~shade/shenandoah/markscan-tams-bug/webrev.03/
>
> Have still to convince myself it works. Added the test.
Still incorrect. This is better:
http://cr.openjdk.java.net/~shade/shenandoah/markscan-tams-bug/webrev.04/
"cb < bitmap_limit" guarantees we never pass bitmap left > right, and it dubs the termination
condition in the loops, so it would obviously exit after first failed attempt to scan.
-Aleksey
More information about the shenandoah-dev
mailing list