[9] RFR(S): 8071818: incorrect addressing mode used for ldf in SPARC assembler
Zoltán Majó
zoltan.majo at oracle.com
Fri Jan 30 09:28:25 UTC 2015
Hi Dean,
thank you for the feedback!
On 01/29/2015 10:41 PM, Dean Long wrote:
> This looks consistent with ld and st, but I'm wondering if in all of
> them, the assert would be
> better as offset == 0 && !a.has_disp(). It does appear that
> has_index() and has_disp()
> are mutually exclusive, however, so feel free to ignore this minor issue.
Yes, they are mutually exclusive but I think is a good idea to have
stronger asserts. We need update all instructions in the 'ld' and 'st'
family, so I've filed a separate RFE for that (JDK-8071986).
Thank you and best regards,
Zoltan
>
> dl
>
> On 1/29/2015 11:00 AM, Zoltán Majó wrote:
>> Hi,
>>
>>
>> please review the following small patch.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8071818
>>
>> Problem: For the 'ldf' instruction, the SPARC assembler uses only the
>> addressing mode with 'base + displacement + offset'. In some cases,
>> however, an addressing mode with 'base + index' is needed. The
>> necessary functionality is not in place, which results in a VM crash.
>>
>> Solution: Add support for index-based addressing to
>> MacroAssembler::ldf. 'ldf' determines the addressing mode needed by
>> using Address::has_index(). The resulting code is analogous to the
>> code in 'ld', 'st', and variations of them.
>>
>> Webrev: http://cr.openjdk.java.net/~zmajo/8071818/webrev.00/
>>
>> Testing: manual testing of failing test case, JPRT tests on Solaris
>> SPARC.
>>
>> The patch was originally contributed by Andrew Gross.
>>
>> Thank you!
>>
>> Best regards,
>>
>>
>> Zoltan
>
More information about the hotspot-compiler-dev
mailing list