hotspot/src/share/vm/c1/c1_GraphBuilder.cpp
changeset 5882 6b2aecc4f7d8
parent 5707 6c66849ed24e
child 6453 970dc585ab63
equal deleted inserted replaced
5708:e92b3d8118f1 5882:6b2aecc4f7d8
   876       case T_DOUBLE : t = new DoubleConstant  (con.as_double ()); break;
   876       case T_DOUBLE : t = new DoubleConstant  (con.as_double ()); break;
   877       case T_ARRAY  : t = new ArrayConstant   (con.as_object ()->as_array   ()); break;
   877       case T_ARRAY  : t = new ArrayConstant   (con.as_object ()->as_array   ()); break;
   878       case T_OBJECT :
   878       case T_OBJECT :
   879        {
   879        {
   880         ciObject* obj = con.as_object();
   880         ciObject* obj = con.as_object();
   881         if (obj->is_klass()) {
   881         if (!obj->is_loaded()
   882           ciKlass* klass = obj->as_klass();
   882             || (PatchALot && obj->klass() != ciEnv::current()->String_klass())) {
   883           if (!klass->is_loaded() || PatchALot) {
   883           patch_state = state()->copy();
   884             patch_state = state()->copy();
   884           t = new ObjectConstant(obj);
   885             t = new ObjectConstant(obj);
       
   886           } else {
       
   887             t = new InstanceConstant(klass->java_mirror());
       
   888           }
       
   889         } else {
   885         } else {
       
   886           assert(!obj->is_klass(), "must be java_mirror of klass");
   890           t = new InstanceConstant(obj->as_instance());
   887           t = new InstanceConstant(obj->as_instance());
   891         }
   888         }
   892         break;
   889         break;
   893        }
   890        }
   894       default       : ShouldNotReachHere();
   891       default       : ShouldNotReachHere();