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