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