8198439: Fix aarch64 code for handling generate_code_for after FastTLABFill obsolete code
authorjcbeyler
Tue, 20 Feb 2018 09:46:48 -0800
changeset 49032 c1353f585fc3
parent 49031 e4a0cc16b050
child 49033 3acc342c0738
8198439: Fix aarch64 code for handling generate_code_for after FastTLABFill obsolete code Summary: Fix aarch64 issue when moving the stp down and to a str Reviewed-by: adinn, smonteith Contributed-by: jcbeyler@google.com
src/hotspot/cpu/aarch64/c1_Runtime1_aarch64.cpp
--- a/src/hotspot/cpu/aarch64/c1_Runtime1_aarch64.cpp	Wed Feb 21 07:50:33 2018 +0100
+++ b/src/hotspot/cpu/aarch64/c1_Runtime1_aarch64.cpp	Tue Feb 20 09:46:48 2018 -0800
@@ -691,6 +691,8 @@
           Register t2       = r4;
           assert_different_registers(klass, obj, obj_size, t1, t2);
 
+          __ stp(r19, zr, Address(__ pre(sp, -2 * wordSize)));
+
           if (id == fast_new_instance_init_check_id) {
             // make sure the klass is initialized
             __ ldrb(rscratch1, Address(klass, InstanceKlass::init_state_offset()));
@@ -717,18 +719,16 @@
           // get the instance size (size is postive so movl is fine for 64bit)
           __ ldrw(obj_size, Address(klass, Klass::layout_helper_offset()));
 
-          __ str(r19, Address(__ pre(sp, -wordSize)));
-
           __ eden_allocate(obj, obj_size, 0, t1, slow_path);
           __ incr_allocated_bytes(rthread, obj_size, 0, rscratch1);
 
           __ initialize_object(obj, klass, obj_size, 0, t1, t2, /* is_tlab_allocated */ false);
           __ verify_oop(obj);
-          __ ldr(r19, Address(__ post(sp, wordSize)));
+          __ ldp(r19, zr, Address(__ post(sp, 2 * wordSize)));
           __ ret(lr);
 
           __ bind(slow_path);
-          __ ldr(r19, Address(__ post(sp, wordSize)));
+          __ ldp(r19, zr, Address(__ post(sp, 2 * wordSize)));
         }
 
         __ enter();