RFR: JDK-8157141 & JDK-8166454: Solaris getisax(2) and meminfo(2) cleanup
Kim Barrett
kim.barrett at oracle.com
Mon Oct 3 18:24:14 UTC 2016
> On Oct 3, 2016, at 11:04 AM, Alan Burlison <Alan.Burlison at oracle.com> wrote:
>
> On 01/10/2016 01:08, Kim Barrett wrote:
>
>>> They are never going to change value, but if you'd prefer they weren't used let me know and I'll revert to the integer constants.
>>
>> I like the use of symbolic constants. It’s the unnecessary assumptions about their values that I dislike.
>>
>> I’d prefer something like
>>
>> const uint_t av_size = MAX2(AV_HW1_IDX, AV_HW2_IDX) + 1;
>> uint_t* av = alloca(av_size);
>> getisax(av, av_size);
>>
>> So av is known to be big enough to access the desired elements.
>
> The values of AV_HW1_IDX and AV_HW2_IDX can't be changed without breaking binary compatibility, and we simply aren't ever going to do that. We can then assume the values of AV_HW1_IDX and AV_HW2_IDX known, namely 0 and 1 respectively, there's no point in comparing them. Plus if/when we get the 3rd capabilities word it will need changing anyway.
>
> I've therefore changed the code to remove the alloca() call and be just:
>
> // Extract valid instruction set extensions.
> uint_t avs[AV_HW2_IDX + 1];
> uint_t avn = getisax(avs, sizeof(avs));
>
> webrev updated accordingly.
>
> --
> Alan Burlison
> --
Looks good.
More information about the hotspot-runtime-dev
mailing list