comparison src/cpu/sparc/vm/sparc.ad @ 24094:9b69cec6d01b

Merge with jdk8u121-b13
author Gilles Duboscq <gilles.m.duboscq@oracle.com>
date Mon, 06 Feb 2017 17:18:57 +0100
parents dd9cc155639c c3d0bd36ab28
children 719853999215
comparison
equal deleted inserted replaced
23997:9a740aa0d87b 24094:9b69cec6d01b
1773 int HandlerImpl::emit_exception_handler(CodeBuffer& cbuf) { 1773 int HandlerImpl::emit_exception_handler(CodeBuffer& cbuf) {
1774 Register temp_reg = G3; 1774 Register temp_reg = G3;
1775 AddressLiteral exception_blob(OptoRuntime::exception_blob()->entry_point()); 1775 AddressLiteral exception_blob(OptoRuntime::exception_blob()->entry_point());
1776 MacroAssembler _masm(&cbuf); 1776 MacroAssembler _masm(&cbuf);
1777 1777
1778 address base = 1778 address base = __ start_a_stub(size_exception_handler());
1779 __ start_a_stub(size_exception_handler()); 1779 if (base == NULL) {
1780 if (base == NULL) return 0; // CodeBuffer::expand failed 1780 ciEnv::current()->record_failure("CodeCache is full");
1781 return 0; // CodeBuffer::expand failed
1782 }
1781 1783
1782 int offset = __ offset(); 1784 int offset = __ offset();
1783 1785
1784 __ JUMP(exception_blob, temp_reg, 0); // sethi;jmp 1786 __ JUMP(exception_blob, temp_reg, 0); // sethi;jmp
1785 __ delayed()->nop(); 1787 __ delayed()->nop();
1796 // at a poll and everything (including G3) can be live. 1798 // at a poll and everything (including G3) can be live.
1797 Register temp_reg = L0; 1799 Register temp_reg = L0;
1798 AddressLiteral deopt_blob(SharedRuntime::deopt_blob()->unpack()); 1800 AddressLiteral deopt_blob(SharedRuntime::deopt_blob()->unpack());
1799 MacroAssembler _masm(&cbuf); 1801 MacroAssembler _masm(&cbuf);
1800 1802
1801 address base = 1803 address base = __ start_a_stub(size_deopt_handler());
1802 __ start_a_stub(size_deopt_handler()); 1804 if (base == NULL) {
1803 if (base == NULL) return 0; // CodeBuffer::expand failed 1805 ciEnv::current()->record_failure("CodeCache is full");
1806 return 0; // CodeBuffer::expand failed
1807 }
1804 1808
1805 int offset = __ offset(); 1809 int offset = __ offset();
1806 __ save_frame(0); 1810 __ save_frame(0);
1807 __ JUMP(deopt_blob, temp_reg, 0); // sethi;jmp 1811 __ JUMP(deopt_blob, temp_reg, 0); // sethi;jmp
1808 __ delayed()->restore(); 1812 __ delayed()->restore();
2599 emit_call_reloc(cbuf, $meth$$method, relocInfo::opt_virtual_call_type); 2603 emit_call_reloc(cbuf, $meth$$method, relocInfo::opt_virtual_call_type);
2600 } else { 2604 } else {
2601 emit_call_reloc(cbuf, $meth$$method, relocInfo::static_call_type); 2605 emit_call_reloc(cbuf, $meth$$method, relocInfo::static_call_type);
2602 } 2606 }
2603 if (_method) { // Emit stub for static call. 2607 if (_method) { // Emit stub for static call.
2604 CompiledStaticCall::emit_to_interp_stub(cbuf); 2608 address stub = CompiledStaticCall::emit_to_interp_stub(cbuf);
2609 // Stub does not fit into scratch buffer if TraceJumps is enabled
2610 if (stub == NULL && !(TraceJumps && Compile::current()->in_scratch_emit_size())) {
2611 ciEnv::current()->record_failure("CodeCache is full");
2612 return;
2613 }
2605 } 2614 }
2606 %} 2615 %}
2607 2616
2608 enc_class Java_Dynamic_Call (method meth) %{ // JAVA DYNAMIC CALL 2617 enc_class Java_Dynamic_Call (method meth) %{ // JAVA DYNAMIC CALL
2609 MacroAssembler _masm(&cbuf); 2618 MacroAssembler _masm(&cbuf);