--- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/asm/CompilationResultBuilder.java Mon Dec 12 16:16:27 2016 +0300
+++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/asm/CompilationResultBuilder.java Wed Mar 22 13:42:45 2017 -0700
@@ -22,21 +22,19 @@
*/
package org.graalvm.compiler.lir.asm;
+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 static jdk.vm.ci.code.ValueUtil.asStackSlot;
-import static jdk.vm.ci.code.ValueUtil.isStackSlot;
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;
@@ -44,6 +42,7 @@
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;
@@ -53,8 +52,11 @@
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.OptionValue;
+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;
@@ -80,7 +82,7 @@
// @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 {
@@ -142,19 +144,19 @@
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,
- 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<>());
+ OptionValues options, CompilationResult compilationResult) {
+ 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,
- CompilationResult compilationResult, Map<Constant, Data> dataCache) {
+ OptionValues options, CompilationResult compilationResult, EconomicMap<Constant, Data> dataCache) {
this.target = codeCache.getTarget();
this.codeCache = codeCache;
this.foreignCalls = foreignCalls;
@@ -163,12 +165,11 @@
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.
@@ -460,12 +461,13 @@
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));
}
@@ -512,4 +514,8 @@
this.beforeOp = beforeOp;
this.afterOp = afterOp;
}
+
+ public OptionValues getOptions() {
+ return options;
+ }
}