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()) || |