RFR: AArch64: 8203699 java/lang/invoke/SpecialInterfaceCall fails with SIGILL on aarch64
Aleksey Shipilev
shade at redhat.com
Fri May 25 14:34:21 UTC 2018
On 05/25/2018 11:01 AM, Andrew Haley wrote:
> On 05/25/2018 01:40 AM, White, Derek wrote:
>> OK, fine. Although I see no pragmatic reason to spend more time on
>> polishing this code, and forcing reviewers to re-review and re-test. I assume
>> you have tested the new change?
>
> OK, but if you've not committed it yet please move this comment next
> to the instruction:
>
> // Get super_klass value into r0 (even if it was in r5 or r2).
Haven't pushed yet, just retested. Is this what you want?
diff -r 5f4f5b52ee39 src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp
--- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp Fri May 25 15:34:45 2018 +0530
+++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp Fri May 25 16:34:13 2018 +0200
@@ -1224,7 +1224,6 @@
assert(sub_klass != r0, "killed reg"); // killed by mov(r0, super)
assert(sub_klass != r2, "killed reg"); // killed by lea(r2, &pst_counter)
- // Get super_klass value into r0 (even if it was in r5 or r2).
RegSet pushed_registers;
if (!IS_A_TEMP(r2)) pushed_registers += r2;
if (!IS_A_TEMP(r5)) pushed_registers += r5;
@@ -1235,6 +1234,11 @@
push(pushed_registers, sp);
+ // Get super_klass value into r0 (even if it was in r5 or r2).
+ if (super_klass != r0) {
+ mov(r0, super_klass);
+ }
+
#ifndef PRODUCT
mov(rscratch2, (address)&SharedRuntime::_partial_subtype_ctr);
Address pst_counter_addr(rscratch2);
-Aleksey
More information about the hotspot-dev
mailing list