提交 e61e6e10 编写于 作者: I iveresov

7131288: COMPILE SKIPPED: deopt handler overflow (retry at different tier)

Summary: Fix exception handler stub size, enable guarantees to check for the correct deopt and exception stub sizes in the future
Reviewed-by: kvn, never, twisti
上级 40b1343a
...@@ -391,7 +391,7 @@ int LIR_Assembler::emit_exception_handler() { ...@@ -391,7 +391,7 @@ int LIR_Assembler::emit_exception_handler() {
__ call(Runtime1::entry_for(Runtime1::handle_exception_from_callee_id), relocInfo::runtime_call_type); __ call(Runtime1::entry_for(Runtime1::handle_exception_from_callee_id), relocInfo::runtime_call_type);
__ delayed()->nop(); __ delayed()->nop();
__ should_not_reach_here(); __ should_not_reach_here();
assert(code_offset() - offset <= exception_handler_size, "overflow"); guarantee(code_offset() - offset <= exception_handler_size, "overflow");
__ end_a_stub(); __ end_a_stub();
return offset; return offset;
...@@ -474,8 +474,7 @@ int LIR_Assembler::emit_deopt_handler() { ...@@ -474,8 +474,7 @@ int LIR_Assembler::emit_deopt_handler() {
AddressLiteral deopt_blob(SharedRuntime::deopt_blob()->unpack()); AddressLiteral deopt_blob(SharedRuntime::deopt_blob()->unpack());
__ JUMP(deopt_blob, G3_scratch, 0); // sethi;jmp __ JUMP(deopt_blob, G3_scratch, 0); // sethi;jmp
__ delayed()->nop(); __ delayed()->nop();
assert(code_offset() - offset <= deopt_handler_size, "overflow"); guarantee(code_offset() - offset <= deopt_handler_size, "overflow");
debug_only(__ stop("should have gone to the caller");)
__ end_a_stub(); __ end_a_stub();
return offset; return offset;
......
...@@ -69,7 +69,7 @@ enum { ...@@ -69,7 +69,7 @@ enum {
#else #else
call_stub_size = 20, call_stub_size = 20,
#endif // _LP64 #endif // _LP64
exception_handler_size = DEBUG_ONLY(1*K) NOT_DEBUG(10*4), exception_handler_size = DEBUG_ONLY(1*K) NOT_DEBUG(128),
deopt_handler_size = DEBUG_ONLY(1*K) NOT_DEBUG(10*4) }; deopt_handler_size = DEBUG_ONLY(1*K) NOT_DEBUG(64) };
#endif // CPU_SPARC_VM_C1_LIRASSEMBLER_SPARC_HPP #endif // CPU_SPARC_VM_C1_LIRASSEMBLER_SPARC_HPP
...@@ -406,7 +406,7 @@ int LIR_Assembler::emit_exception_handler() { ...@@ -406,7 +406,7 @@ int LIR_Assembler::emit_exception_handler() {
// search an exception handler (rax: exception oop, rdx: throwing pc) // search an exception handler (rax: exception oop, rdx: throwing pc)
__ call(RuntimeAddress(Runtime1::entry_for(Runtime1::handle_exception_from_callee_id))); __ call(RuntimeAddress(Runtime1::entry_for(Runtime1::handle_exception_from_callee_id)));
__ should_not_reach_here(); __ should_not_reach_here();
assert(code_offset() - offset <= exception_handler_size, "overflow"); guarantee(code_offset() - offset <= exception_handler_size, "overflow");
__ end_a_stub(); __ end_a_stub();
return offset; return offset;
...@@ -490,8 +490,7 @@ int LIR_Assembler::emit_deopt_handler() { ...@@ -490,8 +490,7 @@ int LIR_Assembler::emit_deopt_handler() {
__ pushptr(here.addr()); __ pushptr(here.addr());
__ jump(RuntimeAddress(SharedRuntime::deopt_blob()->unpack())); __ jump(RuntimeAddress(SharedRuntime::deopt_blob()->unpack()));
guarantee(code_offset() - offset <= deopt_handler_size, "overflow");
assert(code_offset() - offset <= deopt_handler_size, "overflow");
__ end_a_stub(); __ end_a_stub();
return offset; return offset;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册