Mercurial > hg > graal-compiler
changeset 11829:0ffb6ed18ea4
omit canonicalization in IncrementalCanonicalizerPhase if none of the contained phases changed the graph
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Mon, 30 Sep 2013 10:03:05 +0200 |
parents | e1a1264cb0a7 |
children | 6ce3677f09f5 |
files | graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/IncrementalCanonicalizerPhase.java graal/com.oracle.graal.phases/src/com/oracle/graal/phases/PhaseSuite.java |
diffstat | 2 files changed, 10 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/IncrementalCanonicalizerPhase.java Mon Sep 30 09:47:41 2013 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/IncrementalCanonicalizerPhase.java Mon Sep 30 10:03:05 2013 +0200 @@ -30,6 +30,10 @@ import com.oracle.graal.phases.*; import com.oracle.graal.phases.tiers.*; +/** + * A phase suite that applies {@linkplain CanonicalizerPhase canonicalization} to a graph after all + * phases in the suite have been applied if any of the phases changed the graph. + */ public class IncrementalCanonicalizerPhase<C extends PhaseContext> extends PhaseSuite<C> { private final CanonicalizerPhase canonicalizer; @@ -58,6 +62,8 @@ graph.stopTrackingInputChange(); graph.stopTrackingUsagesDroppedZero(); - canonicalizer.applyIncremental(graph, context, changedNodes, newNodesMark, false); + if (graph.getMark() != newNodesMark || !changedNodes.isEmpty()) { + canonicalizer.applyIncremental(graph, context, changedNodes, newNodesMark, false); + } } }
--- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/PhaseSuite.java Mon Sep 30 09:47:41 2013 +0200 +++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/PhaseSuite.java Mon Sep 30 10:03:05 2013 +0200 @@ -26,6 +26,9 @@ import com.oracle.graal.nodes.*; +/** + * A compiler phase that can apply an ordered collection of phases to a graph. + */ public class PhaseSuite<C> extends BasePhase<C> { private final List<BasePhase<? super C>> phases;