RFR: Rewrite and fix ShenandoahHeap::marked_object_iterate
Zhengyu Gu
zgu at redhat.com
Thu Oct 19 12:56:58 UTC 2017
Good to me.
-Zhengyu
On 10/18/2017 02:10 PM, Aleksey Shipilev wrote:
> 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