OpenJDK / aarch32-port / jdk8u / hotspot
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");