RFR(XS): Fix live data accounting for humongous region

Zhengyu Gu zgu at redhat.com
Thu Jun 15 18:57:22 UTC 2017


Updated: 
http://cr.openjdk.java.net/~zgu/shenandoah/humongous_ld_acct/webrev.01/index.html

Thanks,

-Zhengyu


On 06/15/2017 02:44 PM, Aleksey Shipilev wrote:
> On 06/15/2017 08:27 PM, Zhengyu Gu wrote:
>> We count a humongous region's live data in humongous start region, which can
>> well exceed the size of the region. When calculating the region's garbage (used
>> - live data), can result scary numbers.
>>
>> Also, consolidated logic for finding humongous start region.
>>
>> Webrev: http://cr.openjdk.java.net/~zgu/shenandoah/humongous_ld_acct/webrev.00/
>
> Ah, intended to do this some time later! So now it should report "used" for
> humongous continuations.
>
>  *) Please do parentheses to stick the evaluation order:
>
>  105       return (live_data == 0) ? 0 : used() / HeapWordSize;
>  108       return start->get_live_data_words() == 0 ? 0 : used() / HeapWordSize;
>
>  *) Move this assert to humongous_start_region(), and remove at uses:
>
>  542       assert(region->is_humongous_start(), "Must be humongous start region");
>
>  *) Move out the decrement to a separate line:
>
>  257     r = _heap->regions()->get(-- reg_num);
>
>  *) Drop the "humongous" part of the check in Verifier:
>
>     verify(r, (r->get_live_data_bytes() <= r->capacity()) ||
> (r->is_humongous_start()), "Live data cannot be larger than capacity");
>
> Thanks,
> -Aleksey
>


More information about the shenandoah-dev mailing list