# HG changeset patch # User Thomas Wuerthinger # Date 1423828107 -3600 # Node ID 8d09a572da84f37e3f8139ff682b702fdb3dafa0 # Parent ba7bd60a874404c2c6edb0fb5dad147022752b07 Improve Class#cast graph builder plugin. diff -r ba7bd60a8744 -r 8d09a572da84 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java Thu Feb 12 23:28:47 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java Fri Feb 13 12:48:27 2015 +0100 @@ -65,11 +65,10 @@ r = new Registration(plugins, metaAccess, Class.class); r.register2("cast", Receiver.class, Object.class, new InvocationPlugin() { public boolean apply(GraphBuilderContext builder, ValueNode rcvr, ValueNode object) { - if (rcvr.isConstant() && !rcvr.isNullConstant() && object.isConstant()) { + if (rcvr.isConstant() && !rcvr.isNullConstant()) { ResolvedJavaType type = builder.getConstantReflection().asJavaType(rcvr.asConstant()); - if (type != null && !type.isPrimitive() && type.isInstance(object.asJavaConstant())) { - builder.push(Kind.Object, object); - return true; + if (type != null && !type.isPrimitive()) { + builder.push(Kind.Object, CheckCastNode.create(type, object, null, false, builder.getAssumptions())); } } return false;