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