Mercurial > hg > graal-compiler
changeset 23061:0f5b5f94448c
Change compiler plugin for accessing node edges to avoid creating pi nodes.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Sun, 22 Nov 2015 20:15:41 +0100 |
parents | 4e72c50bb9c1 |
children | 731796219d95 |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java |
diffstat | 2 files changed, 7 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java Sun Nov 22 19:53:38 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java Sun Nov 22 20:15:41 2015 +0100 @@ -128,18 +128,19 @@ GuardingNode g = getGuard(); if (g == null) { + // Try to merge the pi node with a load node. if (o instanceof LoadFieldNode) { LoadFieldNode loadFieldNode = (LoadFieldNode) o; - loadFieldNode.setStamp(loadFieldNode.stamp().improveWith(this.stamp())); + loadFieldNode.setStamp(loadFieldNode.stamp().improveWith(this.piStamp)); return loadFieldNode; } else if (o instanceof UnsafeLoadNode) { UnsafeLoadNode unsafeLoadNode = (UnsafeLoadNode) o; - unsafeLoadNode.setStamp(unsafeLoadNode.stamp().improveWith(this.stamp())); + unsafeLoadNode.setStamp(unsafeLoadNode.stamp().improveWith(this.piStamp)); return unsafeLoadNode; } else if (o instanceof LoadIndexedNode) { LoadIndexedNode loadIndexedNode = (LoadIndexedNode) o; - loadIndexedNode.setStamp(loadIndexedNode.stamp().improveWith(this.stamp())); + loadIndexedNode.setStamp(loadIndexedNode.stamp().improveWith(this.piStamp)); return loadIndexedNode; } } else {
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java Sun Nov 22 19:53:38 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java Sun Nov 22 20:15:41 2015 +0100 @@ -488,10 +488,9 @@ for (Class<?> c : new Class<?>[]{Node.class, NodeList.class}) { r.register2("get" + c.getSimpleName() + "Unsafe", Node.class, long.class, new InvocationPlugin() { public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode node, ValueNode offset) { - ValueNode value = b.add(new UnsafeLoadNode(node, offset, JavaKind.Object, LocationIdentity.any())); - boolean exactType = false; - boolean nonNull = false; - b.addPush(JavaKind.Object, new PiNode(value, metaAccess.lookupJavaType(c), exactType, nonNull)); + UnsafeLoadNode value = b.add(new UnsafeLoadNode(node, offset, JavaKind.Object, LocationIdentity.any())); + value.setStamp(StampFactory.declared(metaAccess.lookupJavaType(c))); + b.addPush(JavaKind.Object, value); return true; } });