RFR: 8139674: aarch64: guarantee failure in TestOptionsWithRanges.java
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