Mercurial > hg > truffle
changeset 21897:ff5074d1fc07
Ensure CheckCast used for store check is canonicalized if possible
author | Gilles Duboscq <gilles.m.duboscq@oracle.com> |
---|---|
date | Wed, 10 Jun 2015 11:51:16 +0200 |
parents | 217b681df88f |
children | 6714387f5323 |
files | graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java |
diffstat | 1 files changed, 7 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java Wed Jun 10 16:06:52 2015 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java Wed Jun 10 11:51:16 2015 +0200 @@ -253,9 +253,13 @@ if (arrayType != null && StampTool.isExactType(array)) { ResolvedJavaType elementType = arrayType.getComponentType(); if (!elementType.isJavaLangObject()) { - checkCastNode = graph.add(new CheckCastNode(elementType, value, null, true)); - graph.addBeforeFixed(storeIndexed, checkCastNode); - value = checkCastNode; + ValueNode storeCheck = CheckCastNode.create(elementType, value, null, true, graph.getAssumptions()); + if (storeCheck.graph() == null) { + checkCastNode = (CheckCastNode) storeCheck; + checkCastNode = graph.add(checkCastNode); + graph.addBeforeFixed(storeIndexed, checkCastNode); + } + value = storeCheck; } } else { ValueNode arrayClass = createReadHub(graph, array, boundsCheck);