Mercurial > hg > graal-jvmci-8
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(); |