Mercurial > hg > truffle
diff graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/ri/HotSpotRuntime.java @ 4453:c0430421d43d
bugfixes for inlining multiple methods
author | Christian Haeubl <christian.haeubl@oracle.com> |
---|---|
date | Fri, 27 Jan 2012 21:17:33 -0800 |
parents | b225da954a32 |
children | 539fca6a3b98 |
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/ri/HotSpotRuntime.java Fri Jan 27 18:16:32 2012 -0800 +++ b/graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/ri/HotSpotRuntime.java Fri Jan 27 21:17:33 2012 -0800 @@ -313,13 +313,12 @@ } else if (n instanceof ArrayHeaderSizeNode) { ArrayHeaderSizeNode arrayHeaderSize = (ArrayHeaderSizeNode) n; graph.replaceFloating(arrayHeaderSize, ConstantNode.forLong(config.getArrayOffset(arrayHeaderSize.elementKind()), n.graph())); - } else if (n instanceof ObjectClassNode) { - ObjectClassNode objectClassNode = (ObjectClassNode) n; + } else if (n instanceof ReadClassNode) { + ReadClassNode objectClassNode = (ReadClassNode) n; LocationNode location = LocationNode.create(LocationNode.FINAL_LOCATION, CiKind.Object, config.hubOffset, graph); - FloatingReadNode memoryRead = graph.add(new FloatingReadNode(CiKind.Object, objectClassNode.object(), null, location)); - // TODO (ch) this fails because ObjectClass is only used as an input value - //memoryRead.setGuard((GuardNode) tool.createGuard(graph.unique(new NullCheckNode(objectClassNode.object(), false)))); - graph.replaceFloating(objectClassNode, memoryRead); + ReadNode memoryRead = graph.add(new ReadNode(CiKind.Object, objectClassNode.object(), location)); + memoryRead.setGuard((GuardNode) tool.createGuard(graph.unique(new NullCheckNode(objectClassNode.object(), false)))); + graph.replaceFixed(objectClassNode, memoryRead); } }