Add tool to options for writing it to map file
Change-Id: Ieffb7c411fcff890a48ce18c8c66310af7d1440c
diff --git a/src/main/java/com/android/tools/r8/D8.java b/src/main/java/com/android/tools/r8/D8.java
index 1acbd0c..8cf01de 100644
--- a/src/main/java/com/android/tools/r8/D8.java
+++ b/src/main/java/com/android/tools/r8/D8.java
@@ -10,7 +10,6 @@
import com.android.tools.r8.dex.ApplicationReader;
import com.android.tools.r8.dex.ApplicationWriter;
import com.android.tools.r8.dex.Marker;
-import com.android.tools.r8.dex.Marker.Tool;
import com.android.tools.r8.experimental.startup.instrumentation.StartupInstrumentation;
import com.android.tools.r8.graph.AppInfo;
import com.android.tools.r8.graph.AppServices;
@@ -275,7 +274,7 @@
boolean hasClassResources = appView.appInfo().app().getFlags().hasReadProgramClassFromCf();
boolean hasDexResources = appView.appInfo().app().getFlags().hasReadProgramClassFromDex();
- Marker marker = hasClassResources ? options.getMarker(Tool.D8) : null;
+ Marker marker = hasClassResources ? options.getMarker() : null;
timing.time(
"Run inspections",
diff --git a/src/main/java/com/android/tools/r8/D8Command.java b/src/main/java/com/android/tools/r8/D8Command.java
index 115471f..0f8380d 100644
--- a/src/main/java/com/android/tools/r8/D8Command.java
+++ b/src/main/java/com/android/tools/r8/D8Command.java
@@ -709,6 +709,7 @@
ProgramClassCollection.wrappedConflictResolver(
getClassConflictResolver(), internal.reporter);
+ internal.tool = Tool.D8;
internal.setDumpInputFlags(getDumpInputFlags());
internal.dumpOptions = dumpOptions();
diff --git a/src/main/java/com/android/tools/r8/L8.java b/src/main/java/com/android/tools/r8/L8.java
index 56558ed..69714e7 100644
--- a/src/main/java/com/android/tools/r8/L8.java
+++ b/src/main/java/com/android/tools/r8/L8.java
@@ -105,6 +105,7 @@
options.enableStringSwitchConversion = false;
assert !options.enableVarHandleDesugaring;
options.enableVarHandleDesugaring = true;
+ options.tool = Tool.L8;
desugar(app, options, executorService);
@@ -149,8 +150,7 @@
appView));
new GenericSignatureRewriter(appView).run(appView.appInfo().classes(), executor);
- new CfApplicationWriter(appView, options.getMarker(Tool.L8))
- .write(options.getClassFileConsumer());
+ new CfApplicationWriter(appView, options.getMarker()).write(options.getClassFileConsumer());
options.printWarnings();
} catch (ExecutionException e) {
throw unwrapExecutionException(e);
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index 70dc6f3..d9e374d 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -11,7 +11,6 @@
import com.android.tools.r8.dex.ApplicationReader;
import com.android.tools.r8.dex.ApplicationWriter;
import com.android.tools.r8.dex.Marker;
-import com.android.tools.r8.dex.Marker.Tool;
import com.android.tools.r8.errors.CheckDiscardDiagnostic;
import com.android.tools.r8.experimental.graphinfo.GraphConsumer;
import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
@@ -208,7 +207,7 @@
InternalOptions options = appView.options();
InspectorImpl.runInspections(options.outputInspections, appView.appInfo().classes());
try {
- Marker marker = options.getMarker(Tool.R8);
+ Marker marker = options.getMarker();
assert marker != null;
if (options.isGeneratingClassFiles()) {
new CfApplicationWriter(appView, marker).write(options.getClassFileConsumer(), inputApp);
diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java
index 9f5c949..c874ba9 100644
--- a/src/main/java/com/android/tools/r8/R8Command.java
+++ b/src/main/java/com/android/tools/r8/R8Command.java
@@ -1156,6 +1156,8 @@
internal.threadCount = getThreadCount();
}
+ internal.tool = Tool.R8;
+
internal.setDumpInputFlags(getDumpInputFlags());
internal.dumpOptions = dumpOptions();
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateLintFiles.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateLintFiles.java
index 18ab413..422be3d 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateLintFiles.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateLintFiles.java
@@ -80,7 +80,8 @@
private final DexItemFactory factory = new DexItemFactory();
private final Reporter reporter = new Reporter();
- private final InternalOptions options = new InternalOptions(factory, reporter);
+ private final InternalOptions options =
+ new InternalOptions(factory, reporter).withModifications(options -> options.tool = Tool.L8);
private final MachineDesugaredLibrarySpecification desugaredLibrarySpecification;
private final Collection<Path> desugaredLibraryImplementation;
@@ -380,7 +381,7 @@
AppView.createForD8(
AppInfo.createInitialAppInfo(
builder.build(), GlobalSyntheticsStrategy.forNonSynthesizing()));
- CfApplicationWriter writer = new CfApplicationWriter(appView, options.getMarker(Tool.L8));
+ CfApplicationWriter writer = new CfApplicationWriter(appView, options.getMarker());
ClassFileConsumer consumer =
new ClassFileConsumer.ArchiveConsumer(
lintFile(compilationApiLevel, minApiLevel, FileUtils.JAR_EXTENSION));
diff --git a/src/main/java/com/android/tools/r8/naming/ProguardMapSupplier.java b/src/main/java/com/android/tools/r8/naming/ProguardMapSupplier.java
index af66d9e..a7f62dd 100644
--- a/src/main/java/com/android/tools/r8/naming/ProguardMapSupplier.java
+++ b/src/main/java/com/android/tools/r8/naming/ProguardMapSupplier.java
@@ -8,6 +8,7 @@
import com.android.tools.r8.MapIdProvider;
import com.android.tools.r8.StringConsumer;
import com.android.tools.r8.Version;
+import com.android.tools.r8.dex.Marker.Tool;
import com.android.tools.r8.errors.Unreachable;
import com.android.tools.r8.utils.ChainableStringConsumer;
import com.android.tools.r8.utils.ExceptionUtils;
@@ -22,7 +23,6 @@
public class ProguardMapSupplier {
public static final String MARKER_KEY_COMPILER = "compiler";
- public static final String MARKER_VALUE_COMPILER = "R8";
public static final String MARKER_KEY_COMPILER_VERSION = "compiler_version";
public static final String MARKER_KEY_COMPILER_HASH = "compiler_hash";
public static final String MARKER_KEY_MIN_API = "min_api";
@@ -59,8 +59,9 @@
private final StringConsumer consumer;
private final InternalOptions options;
private final Reporter reporter;
+ private final Tool compiler;
- private ProguardMapSupplier(ClassNameMapper classNameMapper, InternalOptions options) {
+ private ProguardMapSupplier(ClassNameMapper classNameMapper, Tool tool, InternalOptions options) {
assert classNameMapper != null;
this.classNameMapper = classNameMapper.sorted();
// TODO(b/217111432): Validate Proguard using ProguardMapChecker without building the entire
@@ -68,11 +69,13 @@
this.consumer = options.proguardMapConsumer;
this.options = options;
this.reporter = options.reporter;
+ this.compiler = tool;
}
public static ProguardMapSupplier create(
ClassNameMapper classNameMapper, InternalOptions options) {
- return new ProguardMapSupplier(classNameMapper, options);
+ assert options.tool != null;
+ return new ProguardMapSupplier(classNameMapper, options.tool, options);
}
public ProguardMapId writeProguardMap() {
@@ -99,7 +102,7 @@
"# "
+ MARKER_KEY_COMPILER
+ ": "
- + MARKER_VALUE_COMPILER
+ + compiler.name()
+ "\n"
+ "# "
+ MARKER_KEY_COMPILER_VERSION
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index b4ca863..bb90099 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -252,6 +252,11 @@
protoShrinking.enableEnumLiteProtoShrinking = true;
}
+ public InternalOptions withModifications(Consumer<InternalOptions> consumer) {
+ consumer.accept(this);
+ return this;
+ }
+
void disableAllOptimizations() {
disableGlobalOptimizations();
enableNameReflectionOptimization = false;
@@ -432,6 +437,8 @@
// Contain the contents of the build properties file from the compiler command.
public DumpOptions dumpOptions;
+ public Tool tool = null;
+
// Hidden marker for classes.dex
private boolean hasMarker = false;
private Marker marker;
@@ -441,7 +448,8 @@
this.marker = marker;
}
- public Marker getMarker(Tool tool) {
+ public Marker getMarker() {
+ assert tool != null;
if (hasMarker) {
return marker;
}
diff --git a/src/test/java/com/android/tools/r8/ProguardMapMarkerTest.java b/src/test/java/com/android/tools/r8/ProguardMapMarkerTest.java
index deaaef4..f0b68de 100644
--- a/src/test/java/com/android/tools/r8/ProguardMapMarkerTest.java
+++ b/src/test/java/com/android/tools/r8/ProguardMapMarkerTest.java
@@ -154,7 +154,7 @@
String key = comment.substring(0, colonIndex).trim();
String value = comment.substring(colonIndex + 1).trim();
if (key.equals(ProguardMapSupplier.MARKER_KEY_COMPILER)) {
- assertEquals(ProguardMapSupplier.MARKER_VALUE_COMPILER, value);
+ assertEquals("R8", value);
} else if (key.equals(ProguardMapSupplier.MARKER_KEY_COMPILER_VERSION)) {
assertEquals(Version.LABEL, value);
} else if (key.equals(ProguardMapSupplier.MARKER_KEY_MIN_API)) {
diff --git a/src/test/java/com/android/tools/r8/ToolHelper.java b/src/test/java/com/android/tools/r8/ToolHelper.java
index 5cd98c6..2ee694f 100644
--- a/src/test/java/com/android/tools/r8/ToolHelper.java
+++ b/src/test/java/com/android/tools/r8/ToolHelper.java
@@ -17,6 +17,7 @@
import com.android.tools.r8.benchmarks.BenchmarkResults;
import com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification.CustomConversionVersion;
import com.android.tools.r8.dex.ApplicationReader;
+import com.android.tools.r8.dex.Marker.Tool;
import com.android.tools.r8.errors.Unimplemented;
import com.android.tools.r8.errors.Unreachable;
import com.android.tools.r8.graph.AppView;
@@ -2330,8 +2331,8 @@
return builder;
}
- public static void writeApplication(AppView<?> appView, InternalOptions options)
- throws ExecutionException {
+ public static void writeApplication(AppView<?> appView) throws ExecutionException {
+ appView.options().tool = Tool.R8;
R8.writeApplication(appView, null, Executors.newSingleThreadExecutor());
}
diff --git a/src/test/java/com/android/tools/r8/ir/IrInjectionTestBase.java b/src/test/java/com/android/tools/r8/ir/IrInjectionTestBase.java
index 8b89088..4f4e1a8 100644
--- a/src/test/java/com/android/tools/r8/ir/IrInjectionTestBase.java
+++ b/src/test/java/com/android/tools/r8/ir/IrInjectionTestBase.java
@@ -91,7 +91,7 @@
private AndroidApp writeDex() {
try {
InternalOptions options = appView.options();
- ToolHelper.writeApplication(appView, options);
+ ToolHelper.writeApplication(appView);
options.signalFinishedToConsumers();
return consumers.build();
} catch (ExecutionException e) {