Mercurial > hg > truffle
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