src/share/vm/c1/c1_LIRAssembler.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/share/vm/c1/c1_LIRAssembler.cpp

src/share/vm/c1/c1_LIRAssembler.cpp

Print this page
rev 6132 : 8032410: compiler/uncommontrap/TestStackBangRbp.java times out on Solaris-Sparc V9
Summary: make compiled code bang the stack by the worst case size of the interpreter frame at deoptimization points.
Reviewed-by:

*** 188,197 **** --- 188,204 ---- address LIR_Assembler::pc() const { return _masm->pc(); } + // To bang the stack of this compiled method we use the stack size + // that the interpreter would need in case of a deoptimization. This + // removes the need to bang the stack in the deoptimization blob which + // in turn simplifies stack overflow handling. + int LIR_Assembler::bang_size_in_bytes() const { + return MAX2(initial_frame_size_in_bytes(), _compilation->interpreter_frame_size()); + } void LIR_Assembler::emit_exception_entries(ExceptionInfoList* info_list) { for (int i = 0; i < info_list->length(); i++) { XHandlers* handlers = info_list->at(i)->exception_handlers();
*** 795,805 **** } } void LIR_Assembler::build_frame() { ! _masm->build_frame(initial_frame_size_in_bytes()); } void LIR_Assembler::roundfp_op(LIR_Opr src, LIR_Opr tmp, LIR_Opr dest, bool pop_fpu_stack) { assert((src->is_single_fpu() && dest->is_single_stack()) || --- 802,812 ---- } } void LIR_Assembler::build_frame() { ! _masm->build_frame(initial_frame_size_in_bytes(), bang_size_in_bytes()); } void LIR_Assembler::roundfp_op(LIR_Opr src, LIR_Opr tmp, LIR_Opr dest, bool pop_fpu_stack) { assert((src->is_single_fpu() && dest->is_single_stack()) ||
src/share/vm/c1/c1_LIRAssembler.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File