--- old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/gen/LIRGenerator.java 2017-03-20 17:40:04.000000000 -0700 +++ new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/gen/LIRGenerator.java 2017-03-20 17:40:04.000000000 -0700 @@ -22,16 +22,14 @@ */ package org.graalvm.compiler.lir.gen; -import static org.graalvm.compiler.lir.LIRValueUtil.asConstant; -import static org.graalvm.compiler.lir.LIRValueUtil.asJavaConstant; -import static org.graalvm.compiler.lir.LIRValueUtil.isConstantValue; -import static org.graalvm.compiler.lir.LIRValueUtil.isJavaConstant; -import static org.graalvm.compiler.lir.LIRValueUtil.isVariable; -import static org.graalvm.compiler.lir.LIRValueUtil.isVirtualStackSlot; import static jdk.vm.ci.code.ValueUtil.asAllocatableValue; import static jdk.vm.ci.code.ValueUtil.isAllocatableValue; import static jdk.vm.ci.code.ValueUtil.isLegal; import static jdk.vm.ci.code.ValueUtil.isStackSlot; +import static org.graalvm.compiler.lir.LIRValueUtil.asConstant; +import static org.graalvm.compiler.lir.LIRValueUtil.isConstantValue; +import static org.graalvm.compiler.lir.LIRValueUtil.isVariable; +import static org.graalvm.compiler.lir.LIRValueUtil.isVirtualStackSlot; import java.util.ArrayList; import java.util.List; @@ -60,8 +58,9 @@ import org.graalvm.compiler.lir.SwitchStrategy; import org.graalvm.compiler.lir.Variable; import org.graalvm.compiler.options.Option; +import org.graalvm.compiler.options.OptionKey; import org.graalvm.compiler.options.OptionType; -import org.graalvm.compiler.options.OptionValue; +import org.graalvm.compiler.options.OptionValues; import jdk.vm.ci.code.CallingConvention; import jdk.vm.ci.code.CodeCacheProvider; @@ -86,9 +85,9 @@ public static class Options { // @formatter:off @Option(help = "Print HIR along side LIR as the latter is generated", type = OptionType.Debug) - public static final OptionValue PrintIRWithLIR = new OptionValue<>(false); + public static final OptionKey PrintIRWithLIR = new OptionKey<>(false); @Option(help = "The trace level for the LIR generator", type = OptionType.Debug) - public static final OptionValue TraceLIRGeneratorLevel = new OptionValue<>(0); + public static final OptionKey TraceLIRGeneratorLevel = new OptionKey<>(0); // @formatter:on } @@ -103,11 +102,17 @@ protected final ArithmeticLIRGenerator arithmeticLIRGen; private final MoveFactory moveFactory; + private final boolean printIrWithLir; + private final int traceLIRGeneratorLevel; + public LIRGenerator(LIRKindTool lirKindTool, ArithmeticLIRGenerator arithmeticLIRGen, MoveFactory moveFactory, CodeGenProviders providers, LIRGenerationResult res) { this.lirKindTool = lirKindTool; this.arithmeticLIRGen = arithmeticLIRGen; this.res = res; this.providers = providers; + OptionValues options = res.getLIR().getOptions(); + this.printIrWithLir = !TTY.isSuppressed() && Options.PrintIRWithLIR.getValue(options); + this.traceLIRGeneratorLevel = TTY.isSuppressed() ? 0 : Options.TraceLIRGeneratorLevel.getValue(options); assert arithmeticLIRGen.lirGen == null; arithmeticLIRGen.lirGen = this; @@ -219,7 +224,7 @@ @Override public Value emitConstant(LIRKind kind, Constant constant) { - if (constant instanceof JavaConstant && moveFactory.canInlineConstant((JavaConstant) constant)) { + if (moveFactory.canInlineConstant(constant)) { return new ConstantValue(toRegisterKind(kind), constant); } else { return emitLoadConstant(kind, constant); @@ -259,7 +264,7 @@ @Override public Value loadNonConst(Value value) { - if (isJavaConstant(value) && !moveFactory.canInlineConstant(asJavaConstant(value))) { + if (isConstantValue(value) && !moveFactory.canInlineConstant(asConstant(value))) { return emitMove(value); } return value; @@ -297,12 +302,12 @@ @Override public I append(I op) { - if (Options.PrintIRWithLIR.getValue() && !TTY.isSuppressed()) { + if (printIrWithLir) { TTY.println(op.toStringWithIdPrefix()); TTY.println(); } assert LIRVerifier.verify(op); - List lirForBlock = res.getLIR().getLIRforBlock(getCurrentBlock()); + ArrayList lirForBlock = res.getLIR().getLIRforBlock(getCurrentBlock()); op.setPosition(currentPosition); lirForBlock.add(op); return op; @@ -310,7 +315,7 @@ @Override public boolean hasBlockEnd(AbstractBlockBase block) { - List ops = getResult().getLIR().getLIRforBlock(block); + ArrayList ops = getResult().getLIR().getLIRforBlock(block); if (ops.size() == 0) { return false; } @@ -324,7 +329,7 @@ } private void doBlockStart() { - if (Options.PrintIRWithLIR.getValue()) { + if (printIrWithLir) { TTY.print(currentBlock.toString()); } @@ -334,17 +339,17 @@ append(new LabelOp(new Label(currentBlock.getId()), currentBlock.isAligned())); - if (Options.TraceLIRGeneratorLevel.getValue() >= 1) { + if (traceLIRGeneratorLevel >= 1) { TTY.println("BEGIN Generating LIR for block B" + currentBlock.getId()); } } private void doBlockEnd() { - if (Options.TraceLIRGeneratorLevel.getValue() >= 1) { + if (traceLIRGeneratorLevel >= 1) { TTY.println("END Generating LIR for block B" + currentBlock.getId()); } - if (Options.PrintIRWithLIR.getValue()) { + if (printIrWithLir) { TTY.println(); } currentBlock = null;