Mercurial > hg > truffle
changeset 19435:cb470d088b74
Make array types exact types in unsafe casts.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Mon, 16 Feb 2015 22:19:41 +0100 |
parents | 6bea4acf9f2d |
children | fa20f31fead0 |
files | graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/substitutions/TruffleGraphBuilderPlugins.java |
diffstat | 1 files changed, 10 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/substitutions/TruffleGraphBuilderPlugins.java Mon Feb 16 20:01:40 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/substitutions/TruffleGraphBuilderPlugins.java Mon Feb 16 22:19:41 2015 +0100 @@ -211,7 +211,16 @@ if (javaType == null) { builder.push(Kind.Object, object); } else { - Stamp piStamp = StampFactory.declaredTrusted(javaType, nonNull.asJavaConstant().asInt() != 0); + Stamp piStamp = null; + if (javaType.isArray()) { + if (nonNull.asJavaConstant().asInt() != 0) { + piStamp = StampFactory.exactNonNull(javaType); + } else { + piStamp = StampFactory.exact(javaType); + } + } else { + piStamp = StampFactory.declaredTrusted(javaType, nonNull.asJavaConstant().asInt() != 0); + } LogicNode compareNode = CompareNode.createCompareNode(object.graph(), Condition.EQ, condition, ConstantNode.forBoolean(true, object.graph()), constantReflection); boolean skipAnchor = false; if (compareNode instanceof LogicConstantNode) {