comparison src/share/vm/c1/c1_GraphBuilder.cpp @ 1602:136b78722a08

6939203: JSR 292 needs method handle constants Summary: Add new CP types CONSTANT_MethodHandle, CONSTANT_MethodType; extend 'ldc' bytecode. Reviewed-by: twisti, never
author jrose
date Wed, 09 Jun 2010 18:50:45 -0700
parents b812ff5abc73
children d5d065957597
comparison
equal deleted inserted replaced
1585:49fac4acd688 1602:136b78722a08
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();