src/share/vm/c1/c1_LIRAssembler.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/c1/c1_LIRAssembler.cpp Thu Mar 6 11:59:53 2014
--- new/src/share/vm/c1/c1_LIRAssembler.cpp Thu Mar 6 11:59:53 2014
*** 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 ****
--- 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