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