Mercurial > hg > truffle
diff graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/ri/HotSpotRuntime.java @ 5372:4485e0edd1af
made CheckCastNode be a FixedNode instead of a BooleanNode
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Thu, 10 May 2012 00:36:12 +0200 |
parents | 6cc970203f30 |
children | c862951e769d b6aaf6de4053 |
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/ri/HotSpotRuntime.java Thu May 10 00:33:58 2012 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/ri/HotSpotRuntime.java Thu May 10 00:36:12 2012 +0200 @@ -336,21 +336,21 @@ if (array.exactType() != null) { RiResolvedType elementType = array.exactType().componentType(); if (elementType.superType() != null) { - AnchorNode anchor = graph.add(new AnchorNode()); - graph.addBeforeFixed(storeIndexed, anchor); ConstantNode type = ConstantNode.forCiConstant(elementType.getEncoding(Representation.ObjectHub), this, graph); - value = graph.unique(new CheckCastNode(anchor, type, elementType, value)); + CheckCastNode checkcast = graph.add(new CheckCastNode(type, elementType, value)); + graph.addBeforeFixed(storeIndexed, checkcast); + value = checkcast; } else { assert elementType.name().equals("Ljava/lang/Object;") : elementType.name(); } } else { - AnchorNode anchor = graph.add(new AnchorNode()); - graph.addBeforeFixed(storeIndexed, anchor); GuardNode guard = (GuardNode) tool.createGuard(graph.unique(new NullCheckNode(array, false)), RiDeoptReason.NullCheckException, RiDeoptAction.InvalidateReprofile, StructuredGraph.INVALID_GRAPH_ID); FloatingReadNode arrayClass = graph.unique(new FloatingReadNode(array, null, LocationNode.create(LocationNode.FINAL_LOCATION, CiKind.Object, config.hubOffset, graph), StampFactory.objectNonNull())); arrayClass.setGuard(guard); FloatingReadNode arrayElementKlass = graph.unique(new FloatingReadNode(arrayClass, null, LocationNode.create(LocationNode.FINAL_LOCATION, CiKind.Object, config.arrayClassElementOffset, graph), StampFactory.objectNonNull())); - value = graph.unique(new CheckCastNode(anchor, arrayElementKlass, null, value)); + CheckCastNode checkcast = graph.add(new CheckCastNode(arrayElementKlass, null, value)); + graph.addBeforeFixed(storeIndexed, checkcast); + value = checkcast; } } WriteNode memoryWrite = graph.add(new WriteNode(array, value, arrayLocation));