--- old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/alloc/trace/TraceBuilderPhase.java 2017-03-20 17:39:53.000000000 -0700 +++ new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/alloc/trace/TraceBuilderPhase.java 2017-03-20 17:39:53.000000000 -0700 @@ -24,7 +24,7 @@ import static org.graalvm.compiler.lir.alloc.trace.TraceUtil.isTrivialTrace; -import java.util.List; +import java.util.ArrayList; import org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder; import org.graalvm.compiler.core.common.alloc.SingleBlockTraceBuilder; @@ -39,10 +39,11 @@ import org.graalvm.compiler.lir.LIR; import org.graalvm.compiler.lir.gen.LIRGenerationResult; import org.graalvm.compiler.lir.phases.AllocationPhase; -import org.graalvm.compiler.options.EnumOptionValue; +import org.graalvm.compiler.options.EnumOptionKey; import org.graalvm.compiler.options.Option; import org.graalvm.compiler.options.OptionType; -import org.graalvm.compiler.options.OptionValue; +import org.graalvm.compiler.options.OptionValues; +import org.graalvm.compiler.options.OptionKey; import jdk.vm.ci.code.TargetDescription; @@ -57,9 +58,9 @@ public static class Options { // @formatter:off @Option(help = "Trace building algorithm.", type = OptionType.Debug) - public static final EnumOptionValue TraceBuilding = new EnumOptionValue<>(TraceBuilder.UniDirectional); + public static final EnumOptionKey TraceBuilding = new EnumOptionKey<>(TraceBuilder.UniDirectional); @Option(help = "Schedule trivial traces as early as possible.", type = OptionType.Debug) - public static final OptionValue TraceRAScheduleTrivialTracesEarly = new OptionValue<>(true); + public static final OptionKey TraceRAScheduleTrivialTracesEarly = new OptionKey<>(true); // @formatter:on } @@ -76,7 +77,7 @@ final TraceBuilderResult traceBuilderResult = getTraceBuilderResult(lir, startBlock, linearScanOrder); if (Debug.isLogEnabled(TRACE_LOG_LEVEL)) { - List traces = traceBuilderResult.getTraces(); + ArrayList traces = traceBuilderResult.getTraces(); for (int i = 0; i < traces.size(); i++) { Trace trace = traces.get(i); Debug.log(TRACE_LOG_LEVEL, "Trace %5d: %s%s", i, trace, isTrivialTrace(lirGenRes.getLIR(), trace) ? " (trivial)" : ""); @@ -90,9 +91,10 @@ private static TraceBuilderResult getTraceBuilderResult(LIR lir, AbstractBlockBase startBlock, AbstractBlockBase[] linearScanOrder) { TraceBuilderResult.TrivialTracePredicate pred = getTrivialTracePredicate(lir); - TraceBuilder selectedTraceBuilder = Options.TraceBuilding.getValue(); + OptionValues options = lir.getOptions(); + TraceBuilder selectedTraceBuilder = Options.TraceBuilding.getValue(options); Debug.log(TRACE_LOG_LEVEL, "Building Traces using %s", selectedTraceBuilder); - switch (Options.TraceBuilding.getValue()) { + switch (Options.TraceBuilding.getValue(options)) { case SingleBlock: return SingleBlockTraceBuilder.computeTraces(startBlock, linearScanOrder, pred); case BiDirectional: @@ -100,11 +102,11 @@ case UniDirectional: return UniDirectionalTraceBuilder.computeTraces(startBlock, linearScanOrder, pred); } - throw GraalError.shouldNotReachHere("Unknown trace building algorithm: " + Options.TraceBuilding.getValue()); + throw GraalError.shouldNotReachHere("Unknown trace building algorithm: " + Options.TraceBuilding.getValue(options)); } public static TraceBuilderResult.TrivialTracePredicate getTrivialTracePredicate(LIR lir) { - if (!Options.TraceRAScheduleTrivialTracesEarly.getValue()) { + if (!Options.TraceRAScheduleTrivialTracesEarly.getValue(lir.getOptions())) { return null; } return new TrivialTracePredicate() {