comparison graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java @ 9001:94583d9eead8

HighTier phase suite.
author Roland Schatz <roland.schatz@oracle.com>
date Thu, 11 Apr 2013 12:17:17 +0200
parents 6c4ac1a8cd20
children 6d376d09880b
comparison
equal deleted inserted replaced
9000:c32173f91d0e 9001:94583d9eead8
29 import com.oracle.graal.alloc.*; 29 import com.oracle.graal.alloc.*;
30 import com.oracle.graal.api.code.*; 30 import com.oracle.graal.api.code.*;
31 import com.oracle.graal.api.meta.*; 31 import com.oracle.graal.api.meta.*;
32 import com.oracle.graal.compiler.alloc.*; 32 import com.oracle.graal.compiler.alloc.*;
33 import com.oracle.graal.compiler.gen.*; 33 import com.oracle.graal.compiler.gen.*;
34 import com.oracle.graal.compiler.phases.*;
34 import com.oracle.graal.compiler.target.*; 35 import com.oracle.graal.compiler.target.*;
35 import com.oracle.graal.debug.*; 36 import com.oracle.graal.debug.*;
36 import com.oracle.graal.lir.*; 37 import com.oracle.graal.lir.*;
37 import com.oracle.graal.lir.asm.*; 38 import com.oracle.graal.lir.asm.*;
38 import com.oracle.graal.loop.phases.*; 39 import com.oracle.graal.loop.phases.*;
41 import com.oracle.graal.nodes.spi.*; 42 import com.oracle.graal.nodes.spi.*;
42 import com.oracle.graal.phases.*; 43 import com.oracle.graal.phases.*;
43 import com.oracle.graal.phases.PhasePlan.PhasePosition; 44 import com.oracle.graal.phases.PhasePlan.PhasePosition;
44 import com.oracle.graal.phases.common.*; 45 import com.oracle.graal.phases.common.*;
45 import com.oracle.graal.phases.schedule.*; 46 import com.oracle.graal.phases.schedule.*;
47 import com.oracle.graal.phases.tiers.*;
46 import com.oracle.graal.virtual.phases.ea.*; 48 import com.oracle.graal.virtual.phases.ea.*;
47 49
48 public class GraalCompiler { 50 public class GraalCompiler {
49 51
50 public static CompilationResult compileMethod(final GraalCodeCacheProvider runtime, final Replacements replacements, final Backend backend, final TargetDescription target, 52 public static CompilationResult compileMethod(final GraalCodeCacheProvider runtime, final Replacements replacements, final Backend backend, final TargetDescription target,
153 155
154 if (GraalOptions.PartialEscapeAnalysis && !plan.isPhaseDisabled(PartialEscapeAnalysisPhase.class)) { 156 if (GraalOptions.PartialEscapeAnalysis && !plan.isPhaseDisabled(PartialEscapeAnalysisPhase.class)) {
155 new PartialEscapeAnalysisPhase(runtime, assumptions, true, GraalOptions.OptEarlyReadElimination).apply(graph); 157 new PartialEscapeAnalysisPhase(runtime, assumptions, true, GraalOptions.OptEarlyReadElimination).apply(graph);
156 } 158 }
157 159
158 if (GraalOptions.OptConvertDeoptsToGuards) { 160 HighTierContext highTierContext = new HighTierContext(runtime, assumptions);
159 new ConvertDeoptimizeToGuardPhase().apply(graph); 161 Suites.HIGH_TIER.apply(graph, highTierContext);
160 }
161
162 new LockEliminationPhase().apply(graph);
163
164 if (GraalOptions.OptLoopTransform) {
165 new LoopTransformHighPhase().apply(graph);
166 new LoopTransformLowPhase().apply(graph);
167 }
168 new RemoveValueProxyPhase().apply(graph);
169
170 if (GraalOptions.CullFrameStates) {
171 new CullFrameStatesPhase().apply(graph);
172 }
173 162
174 if (GraalOptions.OptCanonicalizer) { 163 if (GraalOptions.OptCanonicalizer) {
175 new CanonicalizerPhase(runtime, assumptions).apply(graph); 164 new CanonicalizerPhase(runtime, assumptions).apply(graph);
176 } 165 }
177 166