comparison src/share/vm/c1/c1_LIRAssembler.cpp @ 17980:0bf37f737702

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: twisti, kvn
author roland
date Tue, 01 Apr 2014 09:36:49 +0200
parents 15766b73dc1d
children 52b4284cb496
comparison
equal deleted inserted replaced
17978:ad51f24671c2 17980:0bf37f737702
183 183
184 address LIR_Assembler::pc() const { 184 address LIR_Assembler::pc() const {
185 return _masm->pc(); 185 return _masm->pc();
186 } 186 }
187 187
188 // To bang the stack of this compiled method we use the stack size
189 // that the interpreter would need in case of a deoptimization. This
190 // removes the need to bang the stack in the deoptimization blob which
191 // in turn simplifies stack overflow handling.
192 int LIR_Assembler::bang_size_in_bytes() const {
193 return MAX2(initial_frame_size_in_bytes(), _compilation->interpreter_frame_size());
194 }
188 195
189 void LIR_Assembler::emit_exception_entries(ExceptionInfoList* info_list) { 196 void LIR_Assembler::emit_exception_entries(ExceptionInfoList* info_list) {
190 for (int i = 0; i < info_list->length(); i++) { 197 for (int i = 0; i < info_list->length(); i++) {
191 XHandlers* handlers = info_list->at(i)->exception_handlers(); 198 XHandlers* handlers = info_list->at(i)->exception_handlers();
192 199
790 } 797 }
791 } 798 }
792 799
793 800
794 void LIR_Assembler::build_frame() { 801 void LIR_Assembler::build_frame() {
795 _masm->build_frame(initial_frame_size_in_bytes()); 802 _masm->build_frame(initial_frame_size_in_bytes(), bang_size_in_bytes());
796 } 803 }
797 804
798 805
799 void LIR_Assembler::roundfp_op(LIR_Opr src, LIR_Opr tmp, LIR_Opr dest, bool pop_fpu_stack) { 806 void LIR_Assembler::roundfp_op(LIR_Opr src, LIR_Opr tmp, LIR_Opr dest, bool pop_fpu_stack) {
800 assert((src->is_single_fpu() && dest->is_single_stack()) || 807 assert((src->is_single_fpu() && dest->is_single_stack()) ||