# HG changeset patch # User Gilles Duboscq # Date 1433929876 -7200 # Node ID ff5074d1fc07baa7f7c22eb7ed5a43e00cc10127 # Parent 217b681df88f7183fd63abfcb18696e29cf67444 Ensure CheckCast used for store check is canonicalized if possible diff -r 217b681df88f -r ff5074d1fc07 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java --- 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);