Mercurial > hg > graal-compiler
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); }