equal
deleted
inserted
replaced
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(); |