changeset 5449:56f4afcf71f7

Merge
author Gilles Duboscq <duboscq@ssw.jku.at>
date Fri, 25 May 2012 13:22:45 +0200
parents 0368c19fc175 (current diff) f67b71c0e9e5 (diff)
children e1f45fcddb49 a899a40a7ddf
files graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/FloatingReadPhase.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/ri/HotSpotRuntime.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ValueAnchorNode.java
diffstat 6 files changed, 23 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java	Fri May 25 11:44:44 2012 +0200
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java	Fri May 25 13:22:45 2012 +0200
@@ -175,14 +175,12 @@
         if (GraalOptions.CullFrameStates) {
             new CullFrameStatesPhase().apply(graph);
         }
-        if (GraalOptions.Lower) {
-            new FloatingReadPhase().apply(graph);
-            if (GraalOptions.OptGVN) {
-                new GlobalValueNumberingPhase().apply(graph);
-            }
-            if (GraalOptions.OptReadElimination) {
-                new ReadEliminationPhase().apply(graph);
-            }
+        new FloatingReadPhase().apply(graph);
+        if (GraalOptions.OptGVN) {
+            new GlobalValueNumberingPhase().apply(graph);
+        }
+        if (GraalOptions.OptReadElimination) {
+            new ReadEliminationPhase().apply(graph);
         }
 
         if (GraalOptions.PropagateTypes) {
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalOptions.java	Fri May 25 11:44:44 2012 +0200
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalOptions.java	Fri May 25 13:22:45 2012 +0200
@@ -37,7 +37,6 @@
     // Checkstyle: resume
 
     public static int     Threads                            = 4;
-    public static boolean Lower                              = true;
 
     // inlining settings
     public static boolean Inline                             = true;
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/FloatingReadPhase.java	Fri May 25 11:44:44 2012 +0200
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/FloatingReadPhase.java	Fri May 25 13:22:45 2012 +0200
@@ -152,6 +152,7 @@
             } else {
                 floatingRead = graph.unique(new FloatingReadNode(readNode.object(), readNode.location(), getLocationForRead(readNode), readNode.stamp(), readNode.dependencies()));
             }
+            floatingRead.setNullCheck(readNode.getNullCheck());
             ValueAnchorNode anchor = null;
             for (GuardNode guard : readNode.dependencies().filter(GuardNode.class)) {
                 if (anchor == null) {
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java	Fri May 25 11:44:44 2012 +0200
+++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java	Fri May 25 13:22:45 2012 +0200
@@ -209,11 +209,22 @@
                             return usage;
                         }
                     }
-                    break;
+                    return null;
                 }
             }
         }
-        return null;
+        CacheEntry key = new CacheEntry(node);
+        Node cachedNode = cachedNodes.get(key);
+        if (cachedNode != null) {
+            if (!cachedNode.isAlive()) {
+                cachedNodes.remove(key);
+                return null;
+            }
+            return cachedNode != node ? cachedNode : null;
+        } else {
+            cachedNodes.put(key, node);
+            return null;
+        }
     }
 
     private static boolean checkValueNumberable(Node node) {
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/ri/HotSpotRuntime.java	Fri May 25 11:44:44 2012 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/ri/HotSpotRuntime.java	Fri May 25 13:22:45 2012 +0200
@@ -270,9 +270,6 @@
 
     @Override
     public void lower(Node n, CiLoweringTool tool) {
-        if (!GraalOptions.Lower) {
-            return;
-        }
         StructuredGraph graph = (StructuredGraph) n.graph();
 
         if (n instanceof ArrayLengthNode) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ValueAnchorNode.java	Fri May 25 11:44:44 2012 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ValueAnchorNode.java	Fri May 25 13:22:45 2012 +0200
@@ -22,6 +22,8 @@
  */
 package com.oracle.graal.nodes.extended;
 
+import static com.oracle.graal.graph.iterators.NodePredicates.*;
+
 import com.oracle.graal.graph.*;
 import com.oracle.graal.nodes.*;
 import com.oracle.graal.nodes.calc.*;
@@ -60,7 +62,7 @@
             }
             return null;
         }
-        for (Node node : dependencies().nonNull()) {
+        for (Node node : dependencies().nonNull().and(isNotA(BeginNode.class))) {
             if (node instanceof ConstantNode) {
                 continue;
             }