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;
                 }
             });