1.1 --- a/src/share/vm/c1/c1_LIR.cpp Wed Oct 09 11:05:17 2013 -0700 1.2 +++ b/src/share/vm/c1/c1_LIR.cpp Wed Oct 09 16:32:21 2013 +0200 1.3 @@ -1001,6 +1001,17 @@ 1.4 assert(opProfileCall->_tmp1->is_valid(), "used"); do_temp(opProfileCall->_tmp1); 1.5 break; 1.6 } 1.7 + 1.8 +// LIR_OpProfileType: 1.9 + case lir_profile_type: { 1.10 + assert(op->as_OpProfileType() != NULL, "must be"); 1.11 + LIR_OpProfileType* opProfileType = (LIR_OpProfileType*)op; 1.12 + 1.13 + do_input(opProfileType->_mdp); do_temp(opProfileType->_mdp); 1.14 + do_input(opProfileType->_obj); 1.15 + do_temp(opProfileType->_tmp); 1.16 + break; 1.17 + } 1.18 default: 1.19 ShouldNotReachHere(); 1.20 } 1.21 @@ -1151,6 +1162,10 @@ 1.22 masm->emit_profile_call(this); 1.23 } 1.24 1.25 +void LIR_OpProfileType::emit_code(LIR_Assembler* masm) { 1.26 + masm->emit_profile_type(this); 1.27 +} 1.28 + 1.29 // LIR_List 1.30 LIR_List::LIR_List(Compilation* compilation, BlockBegin* block) 1.31 : _operations(8) 1.32 @@ -1803,6 +1818,8 @@ 1.33 case lir_cas_int: s = "cas_int"; break; 1.34 // LIR_OpProfileCall 1.35 case lir_profile_call: s = "profile_call"; break; 1.36 + // LIR_OpProfileType 1.37 + case lir_profile_type: s = "profile_type"; break; 1.38 // LIR_OpAssert 1.39 #ifdef ASSERT 1.40 case lir_assert: s = "assert"; break; 1.41 @@ -2086,6 +2103,15 @@ 1.42 tmp1()->print(out); out->print(" "); 1.43 } 1.44 1.45 +// LIR_OpProfileType 1.46 +void LIR_OpProfileType::print_instr(outputStream* out) const { 1.47 + out->print("exact = "); exact_klass()->print_name_on(out); 1.48 + out->print("current = "); ciTypeEntries::print_ciklass(out, current_klass()); 1.49 + mdp()->print(out); out->print(" "); 1.50 + obj()->print(out); out->print(" "); 1.51 + tmp()->print(out); out->print(" "); 1.52 +} 1.53 + 1.54 #endif // PRODUCT 1.55 1.56 // Implementation of LIR_InsertionBuffer