< prev index next >
src/cpu/sparc/vm/sparc.ad
Print this page
*** 1773,1785 ****
int HandlerImpl::emit_exception_handler(CodeBuffer& cbuf) {
Register temp_reg = G3;
AddressLiteral exception_blob(OptoRuntime::exception_blob()->entry_point());
MacroAssembler _masm(&cbuf);
! address base =
! __ start_a_stub(size_exception_handler());
! if (base == NULL) return 0; // CodeBuffer::expand failed
int offset = __ offset();
__ JUMP(exception_blob, temp_reg, 0); // sethi;jmp
__ delayed()->nop();
--- 1773,1787 ----
int HandlerImpl::emit_exception_handler(CodeBuffer& cbuf) {
Register temp_reg = G3;
AddressLiteral exception_blob(OptoRuntime::exception_blob()->entry_point());
MacroAssembler _masm(&cbuf);
! address base = __ start_a_stub(size_exception_handler());
! if (base == NULL) {
! ciEnv::current()->record_failure("CodeCache is full");
! return 0; // CodeBuffer::expand failed
! }
int offset = __ offset();
__ JUMP(exception_blob, temp_reg, 0); // sethi;jmp
__ delayed()->nop();
*** 1796,1808 ****
// at a poll and everything (including G3) can be live.
Register temp_reg = L0;
AddressLiteral deopt_blob(SharedRuntime::deopt_blob()->unpack());
MacroAssembler _masm(&cbuf);
! address base =
! __ start_a_stub(size_deopt_handler());
! if (base == NULL) return 0; // CodeBuffer::expand failed
int offset = __ offset();
__ save_frame(0);
__ JUMP(deopt_blob, temp_reg, 0); // sethi;jmp
__ delayed()->restore();
--- 1798,1812 ----
// at a poll and everything (including G3) can be live.
Register temp_reg = L0;
AddressLiteral deopt_blob(SharedRuntime::deopt_blob()->unpack());
MacroAssembler _masm(&cbuf);
! address base = __ start_a_stub(size_deopt_handler());
! if (base == NULL) {
! ciEnv::current()->record_failure("CodeCache is full");
! return 0; // CodeBuffer::expand failed
! }
int offset = __ offset();
__ save_frame(0);
__ JUMP(deopt_blob, temp_reg, 0); // sethi;jmp
__ delayed()->restore();
*** 2599,2609 ****
emit_call_reloc(cbuf, $meth$$method, relocInfo::opt_virtual_call_type);
} else {
emit_call_reloc(cbuf, $meth$$method, relocInfo::static_call_type);
}
if (_method) { // Emit stub for static call.
! CompiledStaticCall::emit_to_interp_stub(cbuf);
}
%}
enc_class Java_Dynamic_Call (method meth) %{ // JAVA DYNAMIC CALL
MacroAssembler _masm(&cbuf);
--- 2603,2618 ----
emit_call_reloc(cbuf, $meth$$method, relocInfo::opt_virtual_call_type);
} else {
emit_call_reloc(cbuf, $meth$$method, relocInfo::static_call_type);
}
if (_method) { // Emit stub for static call.
! address stub = CompiledStaticCall::emit_to_interp_stub(cbuf);
! // Stub does not fit into scratch buffer if TraceJumps is enabled
! if (stub == NULL && !(TraceJumps && Compile::current()->in_scratch_emit_size())) {
! ciEnv::current()->record_failure("CodeCache is full");
! return;
! }
}
%}
enc_class Java_Dynamic_Call (method meth) %{ // JAVA DYNAMIC CALL
MacroAssembler _masm(&cbuf);
< prev index next >