RFR: 8139674: aarch64: guarantee failure in TestOptionsWithRanges.java

Andrew Haley aph at redhat.com
Thu Oct 15 15:55:23 UTC 2015


On 10/15/2015 04:51 PM, Edward Nevill wrote:

> Please review the following webrev
> 
> http://cr.openjdk.java.net/~enevill/8139674/webrev/
> 
> JIRA issue: https://bugs.openjdk.java.net/browse/JDK-8139674
> 
> 
> The hotspot jtreg test runtime/CommandLine/OptionsValidation/TestOptionsWithRanges.java fails with a guarantee failure.
> 
> # A fatal error has been detected by the Java Runtime Environment:
> #
> # Internal Error (assembler_aarch64.hpp:256), pid=22842, tid=22845
> # guarantee(chk == -1 || chk == 0) failed: Field too big for insn 
> 
> What is happening is that the code in InterpreterMacroAssembler::profile_arguments_type adjusts mdp to point past the arguments and uses negative offsets to index fields at the start of the method data structure.
> 
> However, negative ldr offsets are very limited on aarch64 (-256 bytes) so this easily overflows when TypeProfileArgsLimit is large (>=16).
> 
> The solution is to defer incrementing mdp until we are finished with all the args and use positive offsets instead.
> 
> Tested with hotspot jtreg
> 
> Before: Test results: passed: 896; failed: 6; error: 10
> After: Test results: passed: 896; failed: 5; error: 10

Thanks.  Do we know that it cannot overflow even the +ve offset range?

Andrew.




More information about the hotspot-compiler-dev mailing list