[9] RFR(S): 8071818: incorrect addressing mode used for ldf in SPARC assembler

Dean Long dean.long at oracle.com
Thu Jan 29 21:41:48 UTC 2015


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.

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