# HG changeset patch # User Bernhard Urban # Date 1380551322 -7200 # Node ID 1ce74467ab518fe16b28a144f45214c968dc3da8 # Parent 372bacc13022367e0ceab3e9c7fca13f78eb321f SnippetTemplate: remove canonicalizer. remove loop for return node. copy Set on user side diff -r 372bacc13022 -r 1ce74467ab51 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FloatingReadPhase.java --- 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 getLocations() { - return new HashSet<>(lastMemorySnapshot.keySet()); + return lastMemorySnapshot.keySet(); } } diff -r 372bacc13022 -r 1ce74467ab51 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java --- 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 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 kills = ((MemoryMapImpl) memoryMap).getLocations(); + Set kills = new HashSet<>(((MemoryMapImpl) memoryMap).getLocations()); if (replacee instanceof MemoryCheckpoint.Single) { // check if some node in snippet graph also kills the same location