8214128: ARM32: wrong stack alignment on Deoptimization::unpack_frames
Reviewed-by: dsamersoff
--- a/src/hotspot/cpu/arm/sharedRuntime_arm.cpp Mon Dec 10 15:31:36 2018 +0100
+++ b/src/hotspot/cpu/arm/sharedRuntime_arm.cpp Mon Dec 10 17:34:49 2018 +0300
@@ -1580,9 +1580,9 @@
__ mov(R0, Rthread);
__ mov(R1, Rkind);
- pc_offset = __ set_last_Java_frame(SP, FP, false, Rtemp);
+ pc_offset = __ set_last_Java_frame(SP, FP, true, Rtemp);
assert(((__ pc()) - start) == __ offset(), "warning: start differs from code_begin");
- __ call(CAST_FROM_FN_PTR(address, Deoptimization::unpack_frames));
+ __ call_VM_leaf(CAST_FROM_FN_PTR(address, Deoptimization::unpack_frames));
if (pc_offset == -1) {
pc_offset = __ offset();
}
@@ -1747,8 +1747,8 @@
// Call unpack_frames with proper arguments
__ mov(R0, Rthread);
__ mov(R1, Deoptimization::Unpack_uncommon_trap);
- __ set_last_Java_frame(SP, FP, false, Rtemp);
- __ call(CAST_FROM_FN_PTR(address, Deoptimization::unpack_frames));
+ __ set_last_Java_frame(SP, FP, true, Rtemp);
+ __ call_VM_leaf(CAST_FROM_FN_PTR(address, Deoptimization::unpack_frames));
// oop_maps->add_gc_map(__ pc() - start, new OopMap(frame_size_in_words, 0));
__ reset_last_Java_frame(Rtemp);