Mercurial > hg > graal-jvmci-8
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); |