src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/LowTier.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/LowTier.java

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/LowTier.java

Print this page

        

*** 20,90 **** * or visit www.oracle.com if you need additional information or have any * questions. */ package org.graalvm.compiler.core.phases; - import static org.graalvm.compiler.core.common.GraalOptions.ConditionalElimination; import static org.graalvm.compiler.core.common.GraalOptions.ImmutableCode; - import static org.graalvm.compiler.core.common.GraalOptions.UseGraalInstrumentation; import static org.graalvm.compiler.phases.common.DeadCodeEliminationPhase.Optionality.Required; import org.graalvm.compiler.nodes.spi.LoweringTool; import org.graalvm.compiler.options.Option; import org.graalvm.compiler.options.OptionType; ! import org.graalvm.compiler.options.OptionValue; import org.graalvm.compiler.phases.PhaseSuite; import org.graalvm.compiler.phases.common.CanonicalizerPhase; import org.graalvm.compiler.phases.common.DeadCodeEliminationPhase; import org.graalvm.compiler.phases.common.ExpandLogicPhase; ! import org.graalvm.compiler.phases.common.IterativeConditionalEliminationPhase; import org.graalvm.compiler.phases.common.LoweringPhase; import org.graalvm.compiler.phases.common.ProfileCompiledMethodsPhase; ! import org.graalvm.compiler.phases.common.RemoveValueProxyPhase; import org.graalvm.compiler.phases.common.UseTrappingNullChecksPhase; - import org.graalvm.compiler.phases.common.instrumentation.InlineInstrumentationPhase; import org.graalvm.compiler.phases.schedule.SchedulePhase; import org.graalvm.compiler.phases.tiers.LowTierContext; public class LowTier extends PhaseSuite<LowTierContext> { static class Options { // @formatter:off @Option(help = "", type = OptionType.Debug) ! public static final OptionValue<Boolean> ProfileCompiledMethods = new OptionValue<>(false); // @formatter:on } ! public LowTier() { CanonicalizerPhase canonicalizer = new CanonicalizerPhase(); ! if (ImmutableCode.getValue()) { canonicalizer.disableReadCanonicalization(); } ! if (Options.ProfileCompiledMethods.getValue()) { appendPhase(new ProfileCompiledMethodsPhase()); } appendPhase(new LoweringPhase(canonicalizer, LoweringTool.StandardLoweringStage.LOW_TIER)); - if (UseGraalInstrumentation.getValue()) { - appendPhase(new InlineInstrumentationPhase()); - } - - appendPhase(new RemoveValueProxyPhase()); appendPhase(new ExpandLogicPhase()); ! /* Cleanup IsNull checks resulting from MID_TIER/LOW_TIER lowering and ExpandLogic phase. */ ! if (ConditionalElimination.getValue()) { ! appendPhase(new IterativeConditionalEliminationPhase(canonicalizer, false)); ! /* Canonicalizer may create some new ShortCircuitOrNodes so clean them up. */ ! appendPhase(new ExpandLogicPhase()); ! } appendPhase(new UseTrappingNullChecksPhase()); appendPhase(new DeadCodeEliminationPhase(Required)); appendPhase(new SchedulePhase(SchedulePhase.SchedulingStrategy.FINAL_SCHEDULE)); } } --- 20,87 ---- * or visit www.oracle.com if you need additional information or have any * questions. */ package org.graalvm.compiler.core.phases; import static org.graalvm.compiler.core.common.GraalOptions.ImmutableCode; import static org.graalvm.compiler.phases.common.DeadCodeEliminationPhase.Optionality.Required; + import org.graalvm.compiler.core.common.GraalOptions; import org.graalvm.compiler.nodes.spi.LoweringTool; import org.graalvm.compiler.options.Option; + import org.graalvm.compiler.options.OptionKey; import org.graalvm.compiler.options.OptionType; ! import org.graalvm.compiler.options.OptionValues; import org.graalvm.compiler.phases.PhaseSuite; import org.graalvm.compiler.phases.common.CanonicalizerPhase; import org.graalvm.compiler.phases.common.DeadCodeEliminationPhase; import org.graalvm.compiler.phases.common.ExpandLogicPhase; ! import org.graalvm.compiler.phases.common.FixReadsPhase; import org.graalvm.compiler.phases.common.LoweringPhase; import org.graalvm.compiler.phases.common.ProfileCompiledMethodsPhase; ! import org.graalvm.compiler.phases.common.PropagateDeoptimizeProbabilityPhase; import org.graalvm.compiler.phases.common.UseTrappingNullChecksPhase; import org.graalvm.compiler.phases.schedule.SchedulePhase; + import org.graalvm.compiler.phases.schedule.SchedulePhase.SchedulingStrategy; import org.graalvm.compiler.phases.tiers.LowTierContext; public class LowTier extends PhaseSuite<LowTierContext> { static class Options { // @formatter:off @Option(help = "", type = OptionType.Debug) ! public static final OptionKey<Boolean> ProfileCompiledMethods = new OptionKey<>(false); // @formatter:on } ! public LowTier(OptionValues options) { CanonicalizerPhase canonicalizer = new CanonicalizerPhase(); ! CanonicalizerPhase canonicalizerWithoutGVN = new CanonicalizerPhase(); ! canonicalizerWithoutGVN.disableGVN(); ! if (ImmutableCode.getValue(options)) { canonicalizer.disableReadCanonicalization(); + canonicalizerWithoutGVN.disableReadCanonicalization(); } ! if (Options.ProfileCompiledMethods.getValue(options)) { appendPhase(new ProfileCompiledMethodsPhase()); } appendPhase(new LoweringPhase(canonicalizer, LoweringTool.StandardLoweringStage.LOW_TIER)); appendPhase(new ExpandLogicPhase()); ! appendPhase(new FixReadsPhase(true, new SchedulePhase(GraalOptions.StressTestEarlyReads.getValue(options) ? SchedulingStrategy.EARLIEST : SchedulingStrategy.LATEST_OUT_OF_LOOPS))); ! ! appendPhase(canonicalizerWithoutGVN); appendPhase(new UseTrappingNullChecksPhase()); appendPhase(new DeadCodeEliminationPhase(Required)); + appendPhase(new PropagateDeoptimizeProbabilityPhase()); + appendPhase(new SchedulePhase(SchedulePhase.SchedulingStrategy.FINAL_SCHEDULE)); } }
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core/src/org/graalvm/compiler/core/phases/LowTier.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File