changeset 7684:684639c9ac90

8148355: aarch32: JVM bugfix for failing to running JTreg test 'hotspot/test/compiler/7116216/StackOverflow.java' Summary: Fix stack pointer adjustment in generate_throw_exception Reviewed-by: duke Contributed-by: mingliang.yi@linaro.org
author enevill
date Wed, 27 Jan 2016 11:38:31 +0000
parents e6e2e6a7a4c2
children 49c2278ec735
files src/cpu/aarch32/vm/stubGenerator_aarch32.cpp src/cpu/aarch32/vm/templateInterpreter_aarch32.cpp
diffstat 2 files changed, 3 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/src/cpu/aarch32/vm/stubGenerator_aarch32.cpp	Wed Jan 20 21:28:47 2016 +0000
+++ b/src/cpu/aarch32/vm/stubGenerator_aarch32.cpp	Wed Jan 27 11:38:31 2016 +0000
@@ -1614,10 +1614,8 @@
     // if they expect all registers to be preserved.
     // n.b. aarch32 asserts that frame::arg_reg_save_area_bytes == 0
     enum layout {
-      rfp_off = 0,
-      rfp_off2,
+      rbp_off = frame::arg_reg_save_area_bytes/BytesPerInt,
       return_off,
-      return_off2,
       framesize // inclusive of return address
     };
 
@@ -1637,10 +1635,9 @@
 
     __ enter(); // Save FP and LR before call
 
-    assert(is_even(framesize/2), "sp not 16-byte aligned");
-
     // lr and fp are already in place
-    __ sub(sp, rfp, ((unsigned)framesize-4) << LogBytesPerInt); // prolog
+    assert(frame::arg_reg_save_area_bytes == 0, "please modify this code");
+    // __ sub(sp, rfp, frame::arg_reg_save_area_bytes + wordSize); // prolog
 
     int frame_complete = __ pc() - start;
 
--- a/src/cpu/aarch32/vm/templateInterpreter_aarch32.cpp	Wed Jan 20 21:28:47 2016 +0000
+++ b/src/cpu/aarch32/vm/templateInterpreter_aarch32.cpp	Wed Jan 27 11:38:31 2016 +0000
@@ -511,15 +511,6 @@
   __ cmp(sp, r0);
   __ b(after_frame_check, Assembler::HI);
 
-  // Remove the incoming args, peeling the machine SP back to where it
-  // was in the caller.  This is not strictly necessary, but unless we
-  // do so the stack frame may have a garbage FP; this ensures a
-  // correct call stack that we can always unwind.  The ANDR should be
-  // unnecessary because the sender SP in r13 is always aligned, but
-  // it doesn't hurt.
-  //__ bic(sp, r13, 7);
-  __ stop("no r13 to peel back");
-
   // Note: the restored frame is not necessarily interpreted.
   // Use the shared runtime version of the StackOverflowError.
   assert(StubRoutines::throw_StackOverflowError_entry() != NULL, "stub not yet generated");