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

Edward Nevill edward.nevill at gmail.com
Thu Oct 15 15:51:05 UTC 2015


Please review the following 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 for your help,

More information about the hotspot-compiler-dev mailing list