src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/asm/CompilationResultBuilder.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/asm/CompilationResultBuilder.java	Mon Mar 20 17:40:01 2017
--- new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/asm/CompilationResultBuilder.java	Mon Mar 20 17:40:01 2017

*** 20,62 **** --- 20,64 ---- * or visit www.oracle.com if you need additional information or have any * questions. */ package org.graalvm.compiler.lir.asm; import static org.graalvm.compiler.lir.LIRValueUtil.asJavaConstant; import static org.graalvm.compiler.lir.LIRValueUtil.isJavaConstant; import static jdk.vm.ci.code.ValueUtil.asStackSlot; import static jdk.vm.ci.code.ValueUtil.isStackSlot; + import static org.graalvm.compiler.lir.LIRValueUtil.asJavaConstant; + import static org.graalvm.compiler.lir.LIRValueUtil.isJavaConstant; import java.util.ArrayList; import java.util.Arrays; import java.util.IdentityHashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; import org.graalvm.compiler.asm.AbstractAddress; import org.graalvm.compiler.asm.Assembler; ! import org.graalvm.compiler.asm.NumUtil; ! import org.graalvm.compiler.core.common.NumUtil; import org.graalvm.compiler.code.CompilationResult; import org.graalvm.compiler.code.CompilationResult.CodeAnnotation; import org.graalvm.compiler.code.DataSection.Data; import org.graalvm.compiler.code.DataSection.RawData; import org.graalvm.compiler.core.common.cfg.AbstractBlockBase; import org.graalvm.compiler.core.common.spi.ForeignCallsProvider; import org.graalvm.compiler.core.common.type.DataPointerConstant; + import org.graalvm.compiler.debug.Assertions; import org.graalvm.compiler.debug.Debug; import org.graalvm.compiler.debug.GraalError; import org.graalvm.compiler.graph.NodeSourcePosition; import org.graalvm.compiler.lir.LIR; import org.graalvm.compiler.lir.LIRFrameState; import org.graalvm.compiler.lir.LIRInstruction; import org.graalvm.compiler.lir.LabelRef; import org.graalvm.compiler.lir.framemap.FrameMap; 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.util.EconomicMap; + import org.graalvm.util.Equivalence; import jdk.vm.ci.code.CodeCacheProvider; import jdk.vm.ci.code.DebugInfo; import jdk.vm.ci.code.StackSlot; import jdk.vm.ci.code.TargetDescription;
*** 78,88 **** --- 80,90 ---- */ public class CompilationResultBuilder { // @formatter:off @Option(help = "Include the LIR as comments with the final assembly.", type = OptionType.Debug) ! public static final OptionValue<Boolean> PrintLIRWithAssembly = new OptionValue<>(false); ! public static final OptionKey<Boolean> PrintLIRWithAssembly = new OptionKey<>(false); // @formatter:on private static class ExceptionInfo { public final int codeOffset;
*** 140,176 **** --- 142,177 ---- */ public final FrameContext frameContext; private List<ExceptionInfo> exceptionInfoList; ! private final Map<Constant, Data> dataCache; ! private final OptionValues options; + private final EconomicMap<Constant, Data> dataCache; private Consumer<LIRInstruction> beforeOp; private Consumer<LIRInstruction> afterOp; public CompilationResultBuilder(CodeCacheProvider codeCache, ForeignCallsProvider foreignCalls, FrameMap frameMap, Assembler asm, DataBuilder dataBuilder, FrameContext frameContext, ! OptionValues options, CompilationResult compilationResult) { // constants are already GVNed in the high level graph, so we can use an IdentityHashMap this(codeCache, foreignCalls, frameMap, asm, dataBuilder, frameContext, compilationResult, new IdentityHashMap<>()); + this(codeCache, foreignCalls, frameMap, asm, dataBuilder, frameContext, options, compilationResult, EconomicMap.create(Equivalence.DEFAULT)); } public CompilationResultBuilder(CodeCacheProvider codeCache, ForeignCallsProvider foreignCalls, FrameMap frameMap, Assembler asm, DataBuilder dataBuilder, FrameContext frameContext, ! OptionValues options, CompilationResult compilationResult, EconomicMap<Constant, Data> dataCache) { this.target = codeCache.getTarget(); this.codeCache = codeCache; this.foreignCalls = foreignCalls; this.frameMap = frameMap; this.asm = asm; this.dataBuilder = dataBuilder; this.compilationResult = compilationResult; this.frameContext = frameContext; + this.options = options; assert frameContext != null; this.dataCache = dataCache; boolean assertionsEnabled = false; assert (assertionsEnabled = true) == true; if (dataBuilder.needDetailedPatchingInformation() || assertionsEnabled) { + if (dataBuilder.needDetailedPatchingInformation() || Assertions.ENABLED) { /* * Always enabled in debug mode, even when the VM does not request detailed information, * to increase test coverage. */ asm.setCodePatchingAnnotationConsumer(assemblerCodeAnnotation -> compilationResult.addAnnotation(new AssemblerAnnotation(assemblerCodeAnnotation)));
*** 458,473 **** --- 459,475 ---- private void emitBlock(AbstractBlockBase<?> block) { if (block == null) { return; } if (Debug.isDumpEnabled(Debug.BASIC_LOG_LEVEL) || PrintLIRWithAssembly.getValue()) { + boolean emitComment = Debug.isDumpEnabled(Debug.BASIC_LOG_LEVEL) || PrintLIRWithAssembly.getValue(getOptions()); + if (emitComment) { blockComment(String.format("block B%d %s", block.getId(), block.getLoop())); } for (LIRInstruction op : lir.getLIRforBlock(block)) { ! if (Debug.isDumpEnabled(Debug.BASIC_LOG_LEVEL) || PrintLIRWithAssembly.getValue()) { ! if (emitComment) { blockComment(String.format("%d %s", op.id(), op)); } try { if (beforeOp != null) {
*** 510,515 **** --- 512,521 ---- public void setOpCallback(Consumer<LIRInstruction> beforeOp, Consumer<LIRInstruction> afterOp) { this.beforeOp = beforeOp; this.afterOp = afterOp; } + + public OptionValues getOptions() { + return options; + } }

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/asm/CompilationResultBuilder.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File