RFR: 8248404: AArch64: Remove uses of long and unsigned long [v4]

Andrew Haley aph at openjdk.java.net
Tue Jan 11 16:25:31 UTC 2022


On Tue, 11 Jan 2022 16:17:15 GMT, Andrew Haley <aph at openjdk.org> wrote:

>> Coleen Phillimore has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Add ULL
>
> src/hotspot/cpu/aarch64/universalUpcallHandler_aarch64.cpp line 74:
> 
>> 72:   // Capture prev stack pointer (stack arguments base)
>> 73:   __ add(rscratch1, rfp, 16);   // Skip saved FP and LR
>> 74:   __ str(rscratch1, Address(sp, checked_cast<int>(layout.stack_args)));  // x86 casts to int also
> 
> Suggestion:
> 
>   __ Address slot = __ legitimize_address(Address(sp, checked_cast<int>(layout.stack_args)), wordSize, rscratch2);
>   __ str(rscratch1, slot);  // x86 casts to int also
> 
> I think this is a real bug: the range of a stack arg from SP can exceed that of the maximum offset of a STR instruction!
> Wherever there's a dubious cast there's probably a bug...

All of this may seem tedious and pedantic, but we have had failures in production caused by stack pointer offsets exceeding the 12-bit range of a STR instruction.

-------------

PR: https://git.openjdk.java.net/jdk/pull/7023


More information about the hotspot-dev mailing list