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