src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/LowTier.java
changeset 58877 aec7bf35d6f5
parent 58299 6df94ce3ab2f
equal deleted inserted replaced
58876:1a8d65e71a66 58877:aec7bf35d6f5
    22  */
    22  */
    23 
    23 
    24 
    24 
    25 package org.graalvm.compiler.core.phases;
    25 package org.graalvm.compiler.core.phases;
    26 
    26 
    27 import static org.graalvm.compiler.core.common.GraalOptions.ImmutableCode;
    27 import static org.graalvm.compiler.core.common.GraalOptions.LateMembars;
    28 import static org.graalvm.compiler.phases.common.DeadCodeEliminationPhase.Optionality.Required;
    28 import static org.graalvm.compiler.phases.common.DeadCodeEliminationPhase.Optionality.Required;
    29 
    29 
    30 import org.graalvm.compiler.core.common.GraalOptions;
    30 import org.graalvm.compiler.core.common.GraalOptions;
    31 import org.graalvm.compiler.nodes.spi.LoweringTool;
    31 import org.graalvm.compiler.nodes.spi.LoweringTool;
    32 import org.graalvm.compiler.options.Option;
    32 import org.graalvm.compiler.options.Option;
    33 import org.graalvm.compiler.options.OptionKey;
    33 import org.graalvm.compiler.options.OptionKey;
    34 import org.graalvm.compiler.options.OptionType;
    34 import org.graalvm.compiler.options.OptionType;
    35 import org.graalvm.compiler.options.OptionValues;
    35 import org.graalvm.compiler.options.OptionValues;
    36 import org.graalvm.compiler.phases.PhaseSuite;
       
    37 import org.graalvm.compiler.phases.common.CanonicalizerPhase;
    36 import org.graalvm.compiler.phases.common.CanonicalizerPhase;
    38 import org.graalvm.compiler.phases.common.DeadCodeEliminationPhase;
    37 import org.graalvm.compiler.phases.common.DeadCodeEliminationPhase;
    39 import org.graalvm.compiler.phases.common.ExpandLogicPhase;
    38 import org.graalvm.compiler.phases.common.ExpandLogicPhase;
    40 import org.graalvm.compiler.phases.common.FixReadsPhase;
    39 import org.graalvm.compiler.phases.common.FixReadsPhase;
       
    40 import org.graalvm.compiler.phases.common.InsertMembarsPhase;
    41 import org.graalvm.compiler.phases.common.LoweringPhase;
    41 import org.graalvm.compiler.phases.common.LoweringPhase;
    42 import org.graalvm.compiler.phases.common.ProfileCompiledMethodsPhase;
    42 import org.graalvm.compiler.phases.common.ProfileCompiledMethodsPhase;
    43 import org.graalvm.compiler.phases.common.PropagateDeoptimizeProbabilityPhase;
    43 import org.graalvm.compiler.phases.common.PropagateDeoptimizeProbabilityPhase;
    44 import org.graalvm.compiler.phases.common.UseTrappingNullChecksPhase;
    44 import org.graalvm.compiler.phases.common.UseTrappingNullChecksPhase;
    45 import org.graalvm.compiler.phases.schedule.SchedulePhase;
    45 import org.graalvm.compiler.phases.schedule.SchedulePhase;
    46 import org.graalvm.compiler.phases.schedule.SchedulePhase.SchedulingStrategy;
    46 import org.graalvm.compiler.phases.schedule.SchedulePhase.SchedulingStrategy;
    47 import org.graalvm.compiler.phases.tiers.LowTierContext;
    47 import org.graalvm.compiler.phases.tiers.LowTierContext;
    48 
    48 
    49 public class LowTier extends PhaseSuite<LowTierContext> {
    49 public class LowTier extends BaseTier<LowTierContext> {
    50 
    50 
    51     static class Options {
    51     static class Options {
    52 
    52 
    53         // @formatter:off
    53         // @formatter:off
    54         @Option(help = "", type = OptionType.Debug)
    54         @Option(help = "", type = OptionType.Debug)
    56         // @formatter:on
    56         // @formatter:on
    57 
    57 
    58     }
    58     }
    59 
    59 
    60     public LowTier(OptionValues options) {
    60     public LowTier(OptionValues options) {
    61         CanonicalizerPhase canonicalizer = new CanonicalizerPhase();
    61         CanonicalizerPhase canonicalizer = createCanonicalizerPhase(options);
    62         CanonicalizerPhase canonicalizerWithoutGVN = new CanonicalizerPhase();
    62         CanonicalizerPhase canonicalizerWithoutGVN = canonicalizer.copyWithoutGVN();
    63         canonicalizerWithoutGVN.disableGVN();
       
    64         if (ImmutableCode.getValue(options)) {
       
    65             canonicalizer.disableReadCanonicalization();
       
    66             canonicalizerWithoutGVN.disableReadCanonicalization();
       
    67         }
       
    68 
    63 
    69         if (Options.ProfileCompiledMethods.getValue(options)) {
    64         if (Options.ProfileCompiledMethods.getValue(options)) {
    70             appendPhase(new ProfileCompiledMethodsPhase());
    65             appendPhase(new ProfileCompiledMethodsPhase());
    71         }
    66         }
    72 
    67 
    83 
    78 
    84         appendPhase(new DeadCodeEliminationPhase(Required));
    79         appendPhase(new DeadCodeEliminationPhase(Required));
    85 
    80 
    86         appendPhase(new PropagateDeoptimizeProbabilityPhase());
    81         appendPhase(new PropagateDeoptimizeProbabilityPhase());
    87 
    82 
       
    83         if (LateMembars.getValue(options)) {
       
    84             appendPhase(new InsertMembarsPhase());
       
    85         }
    88         appendPhase(new SchedulePhase(SchedulePhase.SchedulingStrategy.LATEST_OUT_OF_LOOPS));
    86         appendPhase(new SchedulePhase(SchedulePhase.SchedulingStrategy.LATEST_OUT_OF_LOOPS));
    89     }
    87     }
    90 }
    88 }