changeset 11844:1ce74467ab51

SnippetTemplate: remove canonicalizer. remove loop for return node. copy Set on user side
author Bernhard Urban <bernhard.urban@jku.at>
date Mon, 30 Sep 2013 16:28:42 +0200
parents 372bacc13022
children 7b51e43b05cd
files graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FloatingReadPhase.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java
diffstat 2 files changed, 9 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FloatingReadPhase.java	Mon Sep 30 21:46:41 2013 +0200
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FloatingReadPhase.java	Mon Sep 30 16:28:42 2013 +0200
@@ -92,7 +92,7 @@
         }
 
         public Set<LocationIdentity> getLocations() {
-            return new HashSet<>(lastMemorySnapshot.keySet());
+            return lastMemorySnapshot.keySet();
         }
 
     }
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java	Mon Sep 30 21:46:41 2013 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java	Mon Sep 30 16:28:42 2013 +0200
@@ -34,6 +34,7 @@
 import com.oracle.graal.debug.*;
 import com.oracle.graal.debug.internal.*;
 import com.oracle.graal.graph.*;
+import com.oracle.graal.graph.iterators.*;
 import com.oracle.graal.loop.*;
 import com.oracle.graal.nodes.*;
 import com.oracle.graal.nodes.StructuredGraph.GuardsStage;
@@ -540,7 +541,6 @@
         }
 
         new DeadCodeEliminationPhase().apply(snippetCopy);
-        new CanonicalizerPhase(true).apply(snippetCopy, context);
 
         assert checkAllVarargPlaceholdersAreDeleted(parameterCount, placeholders);
 
@@ -560,10 +560,12 @@
                 nodes.add(node);
                 if (node instanceof ReturnNode) {
                     retNode = (ReturnNode) node;
-                    for (MemoryState memstate : retNode.usages().filter(MemoryState.class).snapshot()) {
-                        this.memoryMap = memstate.getMemoryMap();
-                        memstate.safeDelete();
-                    }
+                    NodeIterable<MemoryState> memstates = retNode.usages().filter(MemoryState.class);
+                    assert memstates.count() == 1;
+                    MemoryState memstate = memstates.first();
+                    this.memoryMap = memstate.getMemoryMap();
+                    memstate.safeDelete();
+
                     assert !seenReturn : "can handle only one ReturnNode";
                     seenReturn = true;
                 } else if (node instanceof MemoryState) {
@@ -792,7 +794,7 @@
             return true;
         }
 
-        Set<LocationIdentity> kills = ((MemoryMapImpl) memoryMap).getLocations();
+        Set<LocationIdentity> kills = new HashSet<>(((MemoryMapImpl) memoryMap).getLocations());
 
         if (replacee instanceof MemoryCheckpoint.Single) {
             // check if some node in snippet graph also kills the same location