RFR: 8139674: aarch64: guarantee failure in TestOptionsWithRanges.java
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
> 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?
More information about the hotspot-compiler-dev