changeset 10807:8c532622ac0b

8203699, PR3797: java/lang/invoke/SpecialInterfaceCall fails with SIGILL on aarch64 Summary: fastdebug build fails with SIGILL Reviewed-by: shade, drwhite, aph
author fyang
date Wed, 12 Aug 2020 19:59:24 +0800
parents 7cd0ae703ffd
children b58d341cef20
files src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
diffstat 1 files changed, 5 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp	Sun Jun 24 15:02:08 2018 +0300
+++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp	Wed Aug 12 19:59:24 2020 +0800
@@ -1192,7 +1192,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;
@@ -1203,6 +1202,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);