Avoid generating machine specification unecessarily
Bug: b/302055774
Change-Id: Ib578e79ee86b3d5b79253b1b120986feb12ce0e7
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibrarySpecification.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibrarySpecification.java
index de42de1..e0af2eb 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibrarySpecification.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibrarySpecification.java
@@ -26,6 +26,8 @@
boolean isLibraryCompilation();
+ String getIdentifier();
+
String getJsonSource();
String getSynthesizedLibraryClassesPackagePrefix();
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/humanspecification/HumanDesugaredLibrarySpecification.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/humanspecification/HumanDesugaredLibrarySpecification.java
index 325cdb0..fcd5d0a 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/humanspecification/HumanDesugaredLibrarySpecification.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/humanspecification/HumanDesugaredLibrarySpecification.java
@@ -69,6 +69,7 @@
return rewritingFlags;
}
+ @Override
public String getIdentifier() {
return topLevelFlags.getIdentifier();
}
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/legacyspecification/LegacyDesugaredLibrarySpecification.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/legacyspecification/LegacyDesugaredLibrarySpecification.java
index 3507445..419c71e 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/legacyspecification/LegacyDesugaredLibrarySpecification.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/legacyspecification/LegacyDesugaredLibrarySpecification.java
@@ -73,6 +73,7 @@
return topLevelFlags.getSynthesizedLibraryClassesPackagePrefix();
}
+ @Override
public String getIdentifier() {
return topLevelFlags.getIdentifier();
}
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/AbstractGenerateFiles.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/AbstractGenerateFiles.java
index d163832..96e3e18 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/AbstractGenerateFiles.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/AbstractGenerateFiles.java
@@ -38,7 +38,7 @@
.setAllowReadingEmptyArtProfileProvidersMultipleTimesForTesting(true)
.getOptions();
- final MachineDesugaredLibrarySpecification desugaredLibrarySpecification;
+ final DesugaredLibrarySpecification desugaredLibrarySpecification;
final Path desugaredLibrarySpecificationPath;
final Collection<Path> desugaredLibraryImplementation;
final Path output;
@@ -48,8 +48,7 @@
String desugarConfigurationPath,
String desugarImplementationPath,
String output,
- String androidJarPath)
- throws Exception {
+ String androidJarPath) {
this(
desugarConfigurationPath == null ? null : Paths.get(desugarConfigurationPath),
desugarImplementationPath == null
@@ -63,30 +62,21 @@
Path desugarConfigurationPath,
Collection<Path> desugarImplementationPath,
Path output,
- Path androidJar)
- throws Exception {
+ Path androidJar) {
assert androidJar != null;
this.desugaredLibrarySpecificationPath = desugarConfigurationPath;
this.androidJar = androidJar;
- this.desugaredLibrarySpecification = computeMachineSpecification();
+ this.desugaredLibrarySpecification = readDesugaredLibraryConfiguration();
this.desugaredLibraryImplementation = desugarImplementationPath;
this.output = output;
}
- private MachineDesugaredLibrarySpecification computeMachineSpecification() throws IOException {
+ private DesugaredLibrarySpecification readDesugaredLibraryConfiguration() {
if (desugaredLibrarySpecificationPath == null) {
return MachineDesugaredLibrarySpecification.empty();
}
- DexApplication app = createApp(androidJar, options);
- DesugaredLibrarySpecification specification =
- readDesugaredLibraryConfiguration(desugaredLibrarySpecificationPath);
- return specification.toMachineSpecification(app, Timing.empty());
- }
-
- private DesugaredLibrarySpecification readDesugaredLibraryConfiguration(
- Path desugarConfigurationPath) {
return DesugaredLibrarySpecificationParser.parseDesugaredLibrarySpecification(
- StringResource.fromFile(desugarConfigurationPath),
+ StringResource.fromFile(desugaredLibrarySpecificationPath),
factory,
reporter,
false,
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsList.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsList.java
index 0a1a614..cfe94c5 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsList.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsList.java
@@ -21,8 +21,7 @@
String desugarConfigurationPath,
String desugarImplementationPath,
String ouputFile,
- String androidJarPath)
- throws Exception {
+ String androidJarPath) {
super(desugarConfigurationPath, desugarImplementationPath, ouputFile, androidJarPath);
this.minApi = AndroidApiLevel.getAndroidApiLevel(minApi);
}
@@ -36,7 +35,7 @@
.run(desugaredLibraryImplementation, desugaredLibrarySpecificationPath);
System.out.println(
"Generating lint files for "
- + desugaredLibrarySpecification.getIdentifier()
+ + getDebugIdentifier()
+ " (compile API "
+ compilationLevel
+ ")");
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateDesugaredLibraryLintFiles.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateDesugaredLibraryLintFiles.java
index 16e9be8..09abea0 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateDesugaredLibraryLintFiles.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateDesugaredLibraryLintFiles.java
@@ -26,8 +26,7 @@
private static final boolean FORMAT_WITH_FIELD = true;
public static GenerateDesugaredLibraryLintFiles createForTesting(
- Path specification, Set<Path> implementation, Path outputDirectory, Path androidJar)
- throws Exception {
+ Path specification, Set<Path> implementation, Path outputDirectory, Path androidJar) {
return new GenerateDesugaredLibraryLintFiles(
specification, implementation, outputDirectory, androidJar);
}
@@ -36,8 +35,7 @@
String desugarConfigurationPath,
String desugarImplementationPath,
String outputDirectory,
- String androidJarPath)
- throws Exception {
+ String androidJarPath) {
super(desugarConfigurationPath, desugarImplementationPath, outputDirectory, androidJarPath);
}
@@ -45,8 +43,7 @@
Path desugarConfigurationPath,
Collection<Path> desugarImplementationPath,
Path outputDirectory,
- Path androidJar)
- throws Exception {
+ Path androidJar) {
super(desugarConfigurationPath, desugarImplementationPath, outputDirectory, androidJar);
}
@@ -149,6 +146,12 @@
writeLintFiles(compilationApiLevel, minApiLevel, supportedMethods);
}
+ String getDebugIdentifier() {
+ return desugaredLibrarySpecification.getIdentifier() == null
+ ? "backported methods only"
+ : desugaredLibrarySpecification.getIdentifier();
+ }
+
@Override
public AndroidApiLevel run() throws Exception {
AndroidApiLevel compilationLevel =
@@ -158,7 +161,7 @@
.run(desugaredLibraryImplementation, desugaredLibrarySpecificationPath);
System.out.println(
"Generating lint files for "
- + desugaredLibrarySpecification.getIdentifier()
+ + getDebugIdentifier()
+ " (compile API "
+ compilationLevel
+ ")");
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/SupportedClassesGenerator.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/SupportedClassesGenerator.java
index 859abe2..98b73ce 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/SupportedClassesGenerator.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/SupportedClassesGenerator.java
@@ -61,10 +61,7 @@
private final boolean addBackports;
public SupportedClassesGenerator(InternalOptions options, Path androidJar) throws IOException {
- this.options = options;
- this.appForMax = createAppForMax(androidJar);
- this.minApi = AndroidApiLevel.B;
- this.addBackports = false;
+ this(options, androidJar, AndroidApiLevel.B, false);
}
public SupportedClassesGenerator(
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/machinespecification/MachineDesugaredLibrarySpecification.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/machinespecification/MachineDesugaredLibrarySpecification.java
index 985eb29..51253df 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/machinespecification/MachineDesugaredLibrarySpecification.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/machinespecification/MachineDesugaredLibrarySpecification.java
@@ -89,6 +89,7 @@
return topLevelFlags.getSynthesizedLibraryClassesPackagePrefix();
}
+ @Override
public String getIdentifier() {
return topLevelFlags.getIdentifier();
}