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
|