changeset 20138:749ec6114ea0

fix canonicalization of ObjectEqualsNode to TypeCheckNode
author Doug Simon <doug.simon@oracle.com>
date Thu, 02 Apr 2015 12:56:38 +0200
parents 393ccd88c317
children 7de9e37f368d
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java
diffstat 1 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java	Thu Apr 02 12:22:57 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java	Thu Apr 02 12:56:38 2015 +0200
@@ -62,7 +62,12 @@
     protected ValueNode canonicalizeSymmetricConstant(CanonicalizerTool tool, Constant constant, ValueNode nonConstant, boolean mirrored) {
         ResolvedJavaType type = tool.getConstantReflection().asJavaType(constant);
         if (type != null && nonConstant instanceof GetClassNode) {
-            return new TypeCheckNode(type, ((GetClassNode) nonConstant).getObject());
+            if (type.getKind() == Kind.Void) {
+                return LogicConstantNode.forBoolean(false);
+            }
+            if (type.isConcrete() || type.isArray()) {
+                return TypeCheckNode.create(type, ((GetClassNode) nonConstant).getObject());
+            }
         }
         return super.canonicalizeSymmetricConstant(tool, constant, nonConstant, mirrored);
     }