1.1 --- a/src/share/vm/c1/c1_LIRAssembler.cpp Mon Jun 09 15:42:31 2014 -0700 1.2 +++ b/src/share/vm/c1/c1_LIRAssembler.cpp Tue Apr 01 09:36:49 2014 +0200 1.3 @@ -185,6 +185,13 @@ 1.4 return _masm->pc(); 1.5 } 1.6 1.7 +// To bang the stack of this compiled method we use the stack size 1.8 +// that the interpreter would need in case of a deoptimization. This 1.9 +// removes the need to bang the stack in the deoptimization blob which 1.10 +// in turn simplifies stack overflow handling. 1.11 +int LIR_Assembler::bang_size_in_bytes() const { 1.12 + return MAX2(initial_frame_size_in_bytes(), _compilation->interpreter_frame_size()); 1.13 +} 1.14 1.15 void LIR_Assembler::emit_exception_entries(ExceptionInfoList* info_list) { 1.16 for (int i = 0; i < info_list->length(); i++) { 1.17 @@ -792,7 +799,7 @@ 1.18 1.19 1.20 void LIR_Assembler::build_frame() { 1.21 - _masm->build_frame(initial_frame_size_in_bytes()); 1.22 + _masm->build_frame(initial_frame_size_in_bytes(), bang_size_in_bytes()); 1.23 } 1.24 1.25