[aarch64-port-dev ] RFR: 8139674: aarch64: guarantee failure in TestOptionsWithRanges.java

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


Hi,

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 for your help,
Ed.




More information about the aarch64-port-dev mailing list