# HG changeset patch # User Doug Simon # Date 1424117571 -3600 # Node ID 7d3140f2de2e30f458deee658e1867ce16c780d1 # Parent 042f0a8ebce2b73402f9ec0910818196bfb38514 reuse a single NodeIntrinsificationPhase instance in ReplacementsImpl (since the former is stateless) diff -r 042f0a8ebce2 -r 7d3140f2de2e graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Mon Feb 16 21:10:14 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Mon Feb 16 21:12:51 2015 +0100 @@ -64,6 +64,7 @@ public final Providers providers; public final SnippetReflectionProvider snippetReflection; public final TargetDescription target; + public final NodeIntrinsificationPhase nodeIntrinsificationPhase; /** * The preprocessed replacement graphs. @@ -227,6 +228,7 @@ this.target = target; this.graphs = new ConcurrentHashMap<>(); this.snippetTemplateCache = CollectionsFactory.newMap(); + this.nodeIntrinsificationPhase = createNodeIntrinsificationPhase(); } private static final boolean UseSnippetGraphCache = Boolean.parseBoolean(System.getProperty("graal.useSnippetGraphCache", "true")); @@ -285,7 +287,7 @@ // Do deferred intrinsification of node intrinsics - createNodeIntrinsificationPhase().apply(specializedSnippet); + nodeIntrinsificationPhase.apply(specializedSnippet); new CanonicalizerPhase(true).apply(specializedSnippet, new PhaseContext(providers)); NodeIntrinsificationVerificationPhase.verify(specializedSnippet); } @@ -531,7 +533,7 @@ * Does final processing of a snippet graph. */ protected void finalizeGraph(StructuredGraph graph) { - replacements.createNodeIntrinsificationPhase().apply(graph); + replacements.nodeIntrinsificationPhase.apply(graph); if (!SnippetTemplate.hasConstantParameter(method)) { NodeIntrinsificationVerificationPhase.verify(graph); } @@ -666,7 +668,7 @@ * Called after all inlining for a given graph is complete. */ protected void afterInlining(StructuredGraph graph) { - replacements.createNodeIntrinsificationPhase().apply(graph); + replacements.nodeIntrinsificationPhase.apply(graph); new DeadCodeEliminationPhase(Optional).apply(graph); if (OptCanonicalizer.getValue()) { new CanonicalizerPhase(true).apply(graph, new PhaseContext(replacements.providers));