RFR: JDK-8157141 & JDK-8166454: Solaris getisax(2) and meminfo(2) cleanup
Alan Burlison
Alan.Burlison at oracle.com
Mon Oct 3 15:04:51 UTC 2016
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
--
More information about the hotspot-runtime-dev
mailing list