mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 03:24:38 +02:00
8032410: compiler/uncommontrap/TestStackBangRbp.java times out on Solaris-Sparc V9
Make compiled code bang the stack by the worst case size of the interpreter frame at deoptimization points. Reviewed-by: twisti, kvn
This commit is contained in:
parent
bce45e9222
commit
f5adc57f94
44 changed files with 1209 additions and 760 deletions
|
@ -3014,11 +3014,15 @@ void SharedRuntime::generate_deopt_blob() {
|
|||
// restore rbp before stack bang because if stack overflow is thrown it needs to be pushed (and preserved)
|
||||
__ movptr(rbp, Address(rdi, Deoptimization::UnrollBlock::initial_info_offset_in_bytes()));
|
||||
|
||||
// Stack bang to make sure there's enough room for these interpreter frames.
|
||||
#ifdef ASSERT
|
||||
// Compilers generate code that bang the stack by as much as the
|
||||
// interpreter would need. So this stack banging should never
|
||||
// trigger a fault. Verify that it does not on non product builds.
|
||||
if (UseStackBanging) {
|
||||
__ movl(rbx, Address(rdi ,Deoptimization::UnrollBlock::total_frame_sizes_offset_in_bytes()));
|
||||
__ bang_stack_size(rbx, rcx);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Load array of frame pcs into ECX
|
||||
__ movptr(rcx,Address(rdi,Deoptimization::UnrollBlock::frame_pcs_offset_in_bytes()));
|
||||
|
@ -3240,12 +3244,15 @@ void SharedRuntime::generate_uncommon_trap_blob() {
|
|||
// restore rbp before stack bang because if stack overflow is thrown it needs to be pushed (and preserved)
|
||||
__ movptr(rbp, Address(rdi, Deoptimization::UnrollBlock::initial_info_offset_in_bytes()));
|
||||
|
||||
// Stack bang to make sure there's enough room for these interpreter frames.
|
||||
#ifdef ASSERT
|
||||
// Compilers generate code that bang the stack by as much as the
|
||||
// interpreter would need. So this stack banging should never
|
||||
// trigger a fault. Verify that it does not on non product builds.
|
||||
if (UseStackBanging) {
|
||||
__ movl(rbx, Address(rdi ,Deoptimization::UnrollBlock::total_frame_sizes_offset_in_bytes()));
|
||||
__ bang_stack_size(rbx, rcx);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// Load array of frame pcs into ECX
|
||||
__ movl(rcx,Address(rdi,Deoptimization::UnrollBlock::frame_pcs_offset_in_bytes()));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue