src/share/vm/c1/c1_LIR.cpp

changeset 5914
d13d7aba8c12
parent 5353
b800986664f4
child 5994
9acbfe04b5c3
     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

mercurial