hotspot/src/share/vm/c1/c1_LIR.cpp
changeset 13742 9180987e305d
parent 13728 882756847a04
child 13886 8d82c4dfa722
equal deleted inserted replaced
13741:e4395deb8597 13742:9180987e305d
    87   switch (tag) {
    87   switch (tag) {
    88   case metaDataTag : {
    88   case metaDataTag : {
    89     ClassConstant* c = type->as_ClassConstant();
    89     ClassConstant* c = type->as_ClassConstant();
    90     if (c != NULL && !c->value()->is_loaded()) {
    90     if (c != NULL && !c->value()->is_loaded()) {
    91       return LIR_OprFact::metadataConst(NULL);
    91       return LIR_OprFact::metadataConst(NULL);
       
    92     } else if (c != NULL) {
       
    93       return LIR_OprFact::metadataConst(c->value()->constant_encoding());
    92     } else {
    94     } else {
    93       return LIR_OprFact::metadataConst(c->value()->constant_encoding());
    95       MethodConstant* m = type->as_MethodConstant();
       
    96       assert (m != NULL, "not a class or a method?");
       
    97       return LIR_OprFact::metadataConst(m->value()->constant_encoding());
    94     }
    98     }
    95   }
    99   }
    96   case objectTag : {
   100   case objectTag : {
    97       return LIR_OprFact::oopConst(type->as_ObjectType()->encoding());
   101       return LIR_OprFact::oopConst(type->as_ObjectType()->encoding());
    98     }
   102     }
  1164   buffer->finish();
  1168   buffer->finish();
  1165 }
  1169 }
  1166 
  1170 
  1167 
  1171 
  1168 void LIR_List::oop2reg_patch(jobject o, LIR_Opr reg, CodeEmitInfo* info) {
  1172 void LIR_List::oop2reg_patch(jobject o, LIR_Opr reg, CodeEmitInfo* info) {
       
  1173   assert(reg->type() == T_OBJECT, "bad reg");
  1169   append(new LIR_Op1(lir_move, LIR_OprFact::oopConst(o),  reg, T_OBJECT, lir_patch_normal, info));
  1174   append(new LIR_Op1(lir_move, LIR_OprFact::oopConst(o),  reg, T_OBJECT, lir_patch_normal, info));
  1170 }
  1175 }
  1171 
  1176 
  1172 void LIR_List::klass2reg_patch(Metadata* o, LIR_Opr reg, CodeEmitInfo* info) {
  1177 void LIR_List::klass2reg_patch(Metadata* o, LIR_Opr reg, CodeEmitInfo* info) {
       
  1178   assert(reg->type() == T_METADATA, "bad reg");
  1173   append(new LIR_Op1(lir_move, LIR_OprFact::metadataConst(o), reg, T_METADATA, lir_patch_normal, info));
  1179   append(new LIR_Op1(lir_move, LIR_OprFact::metadataConst(o), reg, T_METADATA, lir_patch_normal, info));
  1174 }
  1180 }
  1175 
  1181 
  1176 void LIR_List::load(LIR_Address* addr, LIR_Opr src, CodeEmitInfo* info, LIR_PatchCode patch_code) {
  1182 void LIR_List::load(LIR_Address* addr, LIR_Opr src, CodeEmitInfo* info, LIR_PatchCode patch_code) {
  1177   append(new LIR_Op1(
  1183   append(new LIR_Op1(