# HG changeset patch # User jcbeyler # Date 1519148808 28800 # Node ID c1353f585fc304c037940acd36d23813c40c1d4f # Parent e4a0cc16b0502f0754f494b26c52d5d039faf0c2 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 diff -r e4a0cc16b050 -r c1353f585fc3 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();