changeset 10930:655498b9a44d

8264171: Missing aarch64 parts of JDK-8236179 (C1 register allocation failure with T_ADDRESS) Reviewed-by: rkennke, vlivanov, roland, mdoerr, shade, aph Contributed-by: Aditya Mandaleeka <adityam@microsoft.com>
author mdoerr
date Thu, 25 Mar 2021 14:55:04 +0800
parents 85c5bc8157df
children 65907019826a
files src/cpu/aarch64/vm/c1_FrameMap_aarch64.cpp src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp
diffstat 2 files changed, 4 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/cpu/aarch64/vm/c1_FrameMap_aarch64.cpp	Thu Jan 18 19:21:11 2018 +0100
+++ b/src/cpu/aarch64/vm/c1_FrameMap_aarch64.cpp	Thu Mar 25 14:55:04 2021 +0800
@@ -54,6 +54,8 @@
       opr = as_oop_opr(reg);
     } else if (type == T_METADATA) {
       opr = as_metadata_opr(reg);
+    } else if (type == T_ADDRESS) {
+      opr = as_address_opr(reg);
     } else {
       opr = as_opr(reg);
     }
--- a/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp	Thu Jan 18 19:21:11 2018 +0100
+++ b/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp	Thu Mar 25 14:55:04 2021 +0800
@@ -791,7 +791,7 @@
     if (type == T_ARRAY || type == T_OBJECT) {
       __ str(src->as_register(), frame_map()->address_for_slot(dest->single_stack_ix()));
       __ verify_oop(src->as_register());
-    } else if (type == T_METADATA || type == T_DOUBLE) {
+    } else if (type == T_METADATA || type == T_DOUBLE || type == T_ADDRESS) {
       __ str(src->as_register(), frame_map()->address_for_slot(dest->single_stack_ix()));
     } else {
       __ strw(src->as_register(), frame_map()->address_for_slot(dest->single_stack_ix()));
@@ -904,7 +904,7 @@
     if (type == T_ARRAY || type == T_OBJECT) {
       __ ldr(dest->as_register(), frame_map()->address_for_slot(src->single_stack_ix()));
       __ verify_oop(dest->as_register());
-    } else if (type == T_METADATA) {
+    } else if (type == T_METADATA || type == T_ADDRESS) {
       __ ldr(dest->as_register(), frame_map()->address_for_slot(src->single_stack_ix()));
     } else {
       __ ldrw(dest->as_register(), frame_map()->address_for_slot(src->single_stack_ix()));