[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,


> 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 
>> The patch was originally contributed by Andrew Gross.
>> Thank you!
>> Best regards,
>> Zoltan

More information about the hotspot-compiler-dev mailing list