993 case lir_profile_call: { 994 assert(op->as_OpProfileCall() != NULL, "must be"); 995 LIR_OpProfileCall* opProfileCall = (LIR_OpProfileCall*)op; 996 997 if (opProfileCall->_recv->is_valid()) do_temp(opProfileCall->_recv); 998 assert(opProfileCall->_mdo->is_valid(), "used"); do_temp(opProfileCall->_mdo); 999 assert(opProfileCall->_tmp1->is_valid(), "used"); do_temp(opProfileCall->_tmp1); 1000 break; 1001 } 1002 1003 // LIR_OpProfileType: 1004 case lir_profile_type: { 1005 assert(op->as_OpProfileType() != NULL, "must be"); 1006 LIR_OpProfileType* opProfileType = (LIR_OpProfileType*)op; 1007 1008 do_input(opProfileType->_mdp); do_temp(opProfileType->_mdp); 1009 do_input(opProfileType->_obj); 1010 do_temp(opProfileType->_tmp); 1011 break; 1012 } 1013 default: 1014 ShouldNotReachHere(); 1015 } 1016 } 1017 1018 1019 void LIR_OpVisitState::do_stub(CodeStub* stub) { 1020 if (stub != NULL) { 1021 stub->visit(this); 1022 } 1023 } 1024 1025 XHandlers* LIR_OpVisitState::all_xhandler() { 1026 XHandlers* result = NULL; 1027 1028 int i; 1029 for (i = 0; i < info_count(); i++) { 1030 if (info_at(i)->exception_handlers() != NULL) { 1031 result = info_at(i)->exception_handlers(); 1032 break; 1091 void LIR_Op0::emit_code(LIR_Assembler* masm) { 1092 masm->emit_op0(this); 1093 } 1094 1095 void LIR_Op1::emit_code(LIR_Assembler* masm) { 1096 masm->emit_op1(this); 1097 } 1098 1099 void LIR_OpAllocObj::emit_code(LIR_Assembler* masm) { 1100 masm->emit_alloc_obj(this); 1101 masm->append_code_stub(stub()); 1102 } 1103 1104 void LIR_OpBranch::emit_code(LIR_Assembler* masm) { 1105 masm->emit_opBranch(this); 1106 if (stub()) { 1107 masm->append_code_stub(stub()); 1108 } 1109 } 1110 1111 void LIR_OpConvert::emit_code(LIR_Assembler* masm) { 1112 masm->emit_opConvert(this); 1113 if (stub() != NULL) { 1114 masm->append_code_stub(stub()); 1115 } 1116 } 1117 1118 void LIR_Op2::emit_code(LIR_Assembler* masm) { 1119 masm->emit_op2(this); 1120 } 1121 1122 void LIR_OpAllocArray::emit_code(LIR_Assembler* masm) { 1123 masm->emit_alloc_array(this); 1124 masm->append_code_stub(stub()); 1125 } 1126 1127 void LIR_OpTypeCheck::emit_code(LIR_Assembler* masm) { 1128 masm->emit_opTypeCheck(this); 1129 if (stub()) { 1130 masm->append_code_stub(stub()); 1799 case lir_arraycopy: s = "arraycopy"; break; 1800 // LIR_OpUpdateCRC32 1801 case lir_updatecrc32: s = "updatecrc32"; break; 1802 // LIR_OpLock 1803 case lir_lock: s = "lock"; break; 1804 case lir_unlock: s = "unlock"; break; 1805 // LIR_OpDelay 1806 case lir_delay_slot: s = "delay"; break; 1807 // LIR_OpTypeCheck 1808 case lir_instanceof: s = "instanceof"; break; 1809 case lir_checkcast: s = "checkcast"; break; 1810 case lir_store_check: s = "store_check"; break; 1811 // LIR_OpCompareAndSwap 1812 case lir_cas_long: s = "cas_long"; break; 1813 case lir_cas_obj: s = "cas_obj"; break; 1814 case lir_cas_int: s = "cas_int"; break; 1815 // LIR_OpProfileCall 1816 case lir_profile_call: s = "profile_call"; break; 1817 // LIR_OpProfileType 1818 case lir_profile_type: s = "profile_type"; break; 1819 // LIR_OpAssert 1820 #ifdef ASSERT 1821 case lir_assert: s = "assert"; break; 1822 #endif 1823 case lir_none: ShouldNotReachHere();break; 1824 default: s = "illegal_op"; break; 1825 } 1826 return s; 1827 } 1828 1829 // LIR_OpJavaCall 1830 void LIR_OpJavaCall::print_instr(outputStream* out) const { 1831 out->print("call: "); 1832 out->print("[addr: " INTPTR_FORMAT "]", p2i(address())); 1833 if (receiver()->is_valid()) { 1834 out->print(" [recv: "); receiver()->print(out); out->print("]"); 1835 } 1836 if (result_opr()->is_valid()) { 1837 out->print(" [result: "); result_opr()->print(out); out->print("]"); 1838 } 1839 } 1840 1841 // LIR_OpLabel 1842 void LIR_OpLabel::print_instr(outputStream* out) const { 1843 out->print("[label:" INTPTR_FORMAT "]", p2i(_label)); 1844 } 1845 1846 // LIR_OpArrayCopy | 993 case lir_profile_call: { 994 assert(op->as_OpProfileCall() != NULL, "must be"); 995 LIR_OpProfileCall* opProfileCall = (LIR_OpProfileCall*)op; 996 997 if (opProfileCall->_recv->is_valid()) do_temp(opProfileCall->_recv); 998 assert(opProfileCall->_mdo->is_valid(), "used"); do_temp(opProfileCall->_mdo); 999 assert(opProfileCall->_tmp1->is_valid(), "used"); do_temp(opProfileCall->_tmp1); 1000 break; 1001 } 1002 1003 // LIR_OpProfileType: 1004 case lir_profile_type: { 1005 assert(op->as_OpProfileType() != NULL, "must be"); 1006 LIR_OpProfileType* opProfileType = (LIR_OpProfileType*)op; 1007 1008 do_input(opProfileType->_mdp); do_temp(opProfileType->_mdp); 1009 do_input(opProfileType->_obj); 1010 do_temp(opProfileType->_tmp); 1011 break; 1012 } 1013 case lir_shenandoah_wb: { 1014 assert(op->as_OpShenandoahWriteBarrier() != NULL, "must be"); 1015 LIR_OpShenandoahWriteBarrier* opShenandoahWB = (LIR_OpShenandoahWriteBarrier*) op; 1016 do_input(opShenandoahWB->_opr); 1017 do_output(opShenandoahWB->_result); 1018 do_temp(opShenandoahWB->_tmp1); 1019 do_temp(opShenandoahWB->_tmp2); 1020 break; 1021 } 1022 default: 1023 ShouldNotReachHere(); 1024 } 1025 } 1026 1027 1028 void LIR_OpVisitState::do_stub(CodeStub* stub) { 1029 if (stub != NULL) { 1030 stub->visit(this); 1031 } 1032 } 1033 1034 XHandlers* LIR_OpVisitState::all_xhandler() { 1035 XHandlers* result = NULL; 1036 1037 int i; 1038 for (i = 0; i < info_count(); i++) { 1039 if (info_at(i)->exception_handlers() != NULL) { 1040 result = info_at(i)->exception_handlers(); 1041 break; 1100 void LIR_Op0::emit_code(LIR_Assembler* masm) { 1101 masm->emit_op0(this); 1102 } 1103 1104 void LIR_Op1::emit_code(LIR_Assembler* masm) { 1105 masm->emit_op1(this); 1106 } 1107 1108 void LIR_OpAllocObj::emit_code(LIR_Assembler* masm) { 1109 masm->emit_alloc_obj(this); 1110 masm->append_code_stub(stub()); 1111 } 1112 1113 void LIR_OpBranch::emit_code(LIR_Assembler* masm) { 1114 masm->emit_opBranch(this); 1115 if (stub()) { 1116 masm->append_code_stub(stub()); 1117 } 1118 } 1119 1120 void LIR_OpShenandoahWriteBarrier::emit_code(LIR_Assembler* masm) { 1121 masm->emit_opShenandoahWriteBarrier(this); 1122 } 1123 1124 void LIR_OpConvert::emit_code(LIR_Assembler* masm) { 1125 masm->emit_opConvert(this); 1126 if (stub() != NULL) { 1127 masm->append_code_stub(stub()); 1128 } 1129 } 1130 1131 void LIR_Op2::emit_code(LIR_Assembler* masm) { 1132 masm->emit_op2(this); 1133 } 1134 1135 void LIR_OpAllocArray::emit_code(LIR_Assembler* masm) { 1136 masm->emit_alloc_array(this); 1137 masm->append_code_stub(stub()); 1138 } 1139 1140 void LIR_OpTypeCheck::emit_code(LIR_Assembler* masm) { 1141 masm->emit_opTypeCheck(this); 1142 if (stub()) { 1143 masm->append_code_stub(stub()); 1812 case lir_arraycopy: s = "arraycopy"; break; 1813 // LIR_OpUpdateCRC32 1814 case lir_updatecrc32: s = "updatecrc32"; break; 1815 // LIR_OpLock 1816 case lir_lock: s = "lock"; break; 1817 case lir_unlock: s = "unlock"; break; 1818 // LIR_OpDelay 1819 case lir_delay_slot: s = "delay"; break; 1820 // LIR_OpTypeCheck 1821 case lir_instanceof: s = "instanceof"; break; 1822 case lir_checkcast: s = "checkcast"; break; 1823 case lir_store_check: s = "store_check"; break; 1824 // LIR_OpCompareAndSwap 1825 case lir_cas_long: s = "cas_long"; break; 1826 case lir_cas_obj: s = "cas_obj"; break; 1827 case lir_cas_int: s = "cas_int"; break; 1828 // LIR_OpProfileCall 1829 case lir_profile_call: s = "profile_call"; break; 1830 // LIR_OpProfileType 1831 case lir_profile_type: s = "profile_type"; break; 1832 case lir_shenandoah_wb: s = "shenandoah_wb"; break; 1833 // LIR_OpAssert 1834 #ifdef ASSERT 1835 case lir_assert: s = "assert"; break; 1836 #endif 1837 case lir_none: ShouldNotReachHere();break; 1838 default: s = "illegal_op"; break; 1839 } 1840 return s; 1841 } 1842 1843 void LIR_OpShenandoahWriteBarrier::print_instr(outputStream* out) const { 1844 out->print("[obj: "); in_opr()->print(out); out->print("]"); 1845 out->print("[res: "); result_opr()->print(out); out->print("]"); 1846 out->print("[tmp1: "); tmp1_opr()->print(out); out->print("]"); 1847 out->print("[tmp2: "); tmp2_opr()->print(out); out->print("]"); 1848 } 1849 1850 // LIR_OpJavaCall 1851 void LIR_OpJavaCall::print_instr(outputStream* out) const { 1852 out->print("call: "); 1853 out->print("[addr: " INTPTR_FORMAT "]", p2i(address())); 1854 if (receiver()->is_valid()) { 1855 out->print(" [recv: "); receiver()->print(out); out->print("]"); 1856 } 1857 if (result_opr()->is_valid()) { 1858 out->print(" [result: "); result_opr()->print(out); out->print("]"); 1859 } 1860 } 1861 1862 // LIR_OpLabel 1863 void LIR_OpLabel::print_instr(outputStream* out) const { 1864 out->print("[label:" INTPTR_FORMAT "]", p2i(_label)); 1865 } 1866 1867 // LIR_OpArrayCopy |