src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/PostAllocationOptimizationStage.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.lir/src/org/graalvm/compiler/lir/phases/PostAllocationOptimizationStage.java
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/PostAllocationOptimizationStage.java
Print this page
*** 29,79 ****
import org.graalvm.compiler.lir.NullCheckOptimizer;
import org.graalvm.compiler.lir.RedundantMoveElimination;
import org.graalvm.compiler.lir.phases.PostAllocationOptimizationPhase.PostAllocationOptimizationContext;
import org.graalvm.compiler.lir.profiling.MethodProfilingPhase;
import org.graalvm.compiler.lir.profiling.MoveProfilingPhase;
! import org.graalvm.compiler.options.NestedBooleanOptionValue;
import org.graalvm.compiler.options.Option;
import org.graalvm.compiler.options.OptionType;
! import org.graalvm.compiler.options.OptionValue;
public class PostAllocationOptimizationStage extends LIRPhaseSuite<PostAllocationOptimizationContext> {
public static class Options {
// @formatter:off
@Option(help = "", type = OptionType.Debug)
! public static final NestedBooleanOptionValue LIROptEdgeMoveOptimizer = new NestedBooleanOptionValue(LIROptimization, true);
@Option(help = "", type = OptionType.Debug)
! public static final NestedBooleanOptionValue LIROptControlFlowOptimizer = new NestedBooleanOptionValue(LIROptimization, true);
@Option(help = "", type = OptionType.Debug)
! public static final NestedBooleanOptionValue LIROptRedundantMoveElimination = new NestedBooleanOptionValue(LIROptimization, true);
@Option(help = "", type = OptionType.Debug)
! public static final NestedBooleanOptionValue LIROptNullCheckOptimizer = new NestedBooleanOptionValue(LIROptimization, true);
@Option(help = "Enables profiling of move types on LIR level. " +
"Move types are for example stores (register to stack), " +
"constant loads (constant to register) or copies (register to register).", type = OptionType.Debug)
! public static final OptionValue<Boolean> LIRProfileMoves = new OptionValue<>(false);
@Option(help = "Enables profiling of methods.", type = OptionType.Debug)
! public static final OptionValue<Boolean> LIRProfileMethods = new OptionValue<>(false);
// @formatter:on
}
! public PostAllocationOptimizationStage() {
! if (Options.LIROptEdgeMoveOptimizer.getValue()) {
appendPhase(new EdgeMoveOptimizer());
}
! if (Options.LIROptControlFlowOptimizer.getValue()) {
appendPhase(new ControlFlowOptimizer());
}
! if (Options.LIROptRedundantMoveElimination.getValue()) {
appendPhase(new RedundantMoveElimination());
}
! if (Options.LIROptNullCheckOptimizer.getValue()) {
appendPhase(new NullCheckOptimizer());
}
! if (Options.LIRProfileMoves.getValue()) {
appendPhase(new MoveProfilingPhase());
}
! if (Options.LIRProfileMethods.getValue()) {
appendPhase(new MethodProfilingPhase());
}
}
}
--- 29,80 ----
import org.graalvm.compiler.lir.NullCheckOptimizer;
import org.graalvm.compiler.lir.RedundantMoveElimination;
import org.graalvm.compiler.lir.phases.PostAllocationOptimizationPhase.PostAllocationOptimizationContext;
import org.graalvm.compiler.lir.profiling.MethodProfilingPhase;
import org.graalvm.compiler.lir.profiling.MoveProfilingPhase;
! import org.graalvm.compiler.options.NestedBooleanOptionKey;
import org.graalvm.compiler.options.Option;
+ import org.graalvm.compiler.options.OptionKey;
import org.graalvm.compiler.options.OptionType;
! import org.graalvm.compiler.options.OptionValues;
public class PostAllocationOptimizationStage extends LIRPhaseSuite<PostAllocationOptimizationContext> {
public static class Options {
// @formatter:off
@Option(help = "", type = OptionType.Debug)
! public static final NestedBooleanOptionKey LIROptEdgeMoveOptimizer = new NestedBooleanOptionKey(LIROptimization, true);
@Option(help = "", type = OptionType.Debug)
! public static final NestedBooleanOptionKey LIROptControlFlowOptimizer = new NestedBooleanOptionKey(LIROptimization, true);
@Option(help = "", type = OptionType.Debug)
! public static final NestedBooleanOptionKey LIROptRedundantMoveElimination = new NestedBooleanOptionKey(LIROptimization, true);
@Option(help = "", type = OptionType.Debug)
! public static final NestedBooleanOptionKey LIROptNullCheckOptimizer = new NestedBooleanOptionKey(LIROptimization, true);
@Option(help = "Enables profiling of move types on LIR level. " +
"Move types are for example stores (register to stack), " +
"constant loads (constant to register) or copies (register to register).", type = OptionType.Debug)
! public static final OptionKey<Boolean> LIRProfileMoves = new OptionKey<>(false);
@Option(help = "Enables profiling of methods.", type = OptionType.Debug)
! public static final OptionKey<Boolean> LIRProfileMethods = new OptionKey<>(false);
// @formatter:on
}
! public PostAllocationOptimizationStage(OptionValues options) {
! if (Options.LIROptEdgeMoveOptimizer.getValue(options)) {
appendPhase(new EdgeMoveOptimizer());
}
! if (Options.LIROptControlFlowOptimizer.getValue(options)) {
appendPhase(new ControlFlowOptimizer());
}
! if (Options.LIROptRedundantMoveElimination.getValue(options)) {
appendPhase(new RedundantMoveElimination());
}
! if (Options.LIROptNullCheckOptimizer.getValue(options)) {
appendPhase(new NullCheckOptimizer());
}
! if (Options.LIRProfileMoves.getValue(options)) {
appendPhase(new MoveProfilingPhase());
}
! if (Options.LIRProfileMethods.getValue(options)) {
appendPhase(new MethodProfilingPhase());
}
}
}
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/phases/PostAllocationOptimizationStage.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File