Fix L8 Benchmark to use Legacy configurations
Bug: b/288859478
Change-Id: Ie00dd83c89b041495106abaab7580e44801210af
diff --git a/.gitignore b/.gitignore
index 503889a..a71b445 100644
--- a/.gitignore
+++ b/.gitignore
@@ -165,6 +165,8 @@
third_party/openjdk/desugar_jdk_libs_releases/1.1.1.tar.gz
third_party/openjdk/desugar_jdk_libs_releases/1.1.5
third_party/openjdk/desugar_jdk_libs_releases/1.1.5.tar.gz
+third_party/openjdk/desugar_jdk_libs_releases/2.0.3
+third_party/openjdk/desugar_jdk_libs_releases/2.0.3.tar.gz
third_party/openjdk/jdk-[0-9][0-9]/linux
third_party/openjdk/jdk-[0-9][0-9]/linux.tar.gz
third_party/openjdk/jdk-[0-9][0-9]/osx
diff --git a/build.gradle b/build.gradle
index e41cbf1..4b948af 100644
--- a/build.gradle
+++ b/build.gradle
@@ -345,12 +345,12 @@
"openjdk/openjdk-rt-1.8",
"openjdk/desugar_jdk_libs",
"openjdk/desugar_jdk_libs_11",
- "openjdk/desugar_jdk_libs_legacy",
"openjdk/desugar_jdk_libs_releases/1.0.9",
"openjdk/desugar_jdk_libs_releases/1.0.10",
"openjdk/desugar_jdk_libs_releases/1.1.0",
"openjdk/desugar_jdk_libs_releases/1.1.1",
"openjdk/desugar_jdk_libs_releases/1.1.5",
+ "openjdk/desugar_jdk_libs_releases/2.0.3",
"openjdk/jdk-11-test",
"opensource-apps/tivi",
"proguard/proguard5.2.1",
diff --git a/src/test/java/com/android/tools/r8/benchmarks/desugaredlib/L8Benchmark.java b/src/test/java/com/android/tools/r8/benchmarks/desugaredlib/L8Benchmark.java
index 9095f727..3f12fc8 100644
--- a/src/test/java/com/android/tools/r8/benchmarks/desugaredlib/L8Benchmark.java
+++ b/src/test/java/com/android/tools/r8/benchmarks/desugaredlib/L8Benchmark.java
@@ -3,23 +3,19 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.benchmarks.desugaredlib;
-import static com.android.tools.r8.ToolHelper.getDesugarLibConversions;
-import static com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification.CustomConversionVersion.LATEST;
-
import com.android.tools.r8.L8TestBuilder;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestState;
+import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.benchmarks.BenchmarkBase;
import com.android.tools.r8.benchmarks.BenchmarkConfig;
import com.android.tools.r8.benchmarks.BenchmarkDependency;
import com.android.tools.r8.benchmarks.BenchmarkEnvironment;
import com.android.tools.r8.benchmarks.BenchmarkTarget;
-import com.android.tools.r8.desugar.desugaredlibrary.jdk11.DesugaredLibraryJDK11Undesugarer;
import com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification;
import com.android.tools.r8.utils.AndroidApiLevel;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
-import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import org.junit.runner.RunWith;
@@ -29,10 +25,12 @@
@RunWith(Parameterized.class)
public class L8Benchmark extends BenchmarkBase {
- private static final BenchmarkDependency androidJar = BenchmarkDependency.getAndroidJar30();
- private static final BenchmarkDependency jdk11Conf =
+ private static final BenchmarkDependency ANDROID_JAR = BenchmarkDependency.getAndroidJar30();
+ private static final BenchmarkDependency LEGACY_CONF =
new BenchmarkDependency(
- "legacyConf", "desugar_jdk_libs_11", Paths.get("third_party", "openjdk"));
+ "legacyConf",
+ "2.0.3",
+ Paths.get(ToolHelper.THIRD_PARTY_DIR, "openjdk", "desugar_jdk_libs_releases"));
public L8Benchmark(BenchmarkConfig config, TestParameters parameters) {
super(config, parameters);
@@ -50,23 +48,21 @@
.setTarget(BenchmarkTarget.D8)
.setFromRevision(12733)
.setMethod(L8Benchmark::run)
- .addDependency(androidJar)
- .addDependency(jdk11Conf)
+ .addDependency(ANDROID_JAR)
+ .addDependency(LEGACY_CONF)
.measureRunTime()
.build());
}
public static void run(BenchmarkEnvironment environment) throws Exception {
- Path undesugarJdkLib =
- DesugaredLibraryJDK11Undesugarer.undesugaredJarJDK11(
- environment.getTemp().newFolder("undesugar_jdk_lib").toPath(),
- jdk11Conf.getRoot(environment).resolve("desugar_jdk_libs.jar"));
LibraryDesugaringSpecification spec =
new LibraryDesugaringSpecification(
"JDK11_Benchmark",
- ImmutableSet.of(undesugarJdkLib, getDesugarLibConversions(LATEST)),
- Paths.get("src/library_desugar/jdk11/desugar_jdk_libs.json"),
- ImmutableSet.of(androidJar.getRoot(environment).resolve("android.jar")),
+ ImmutableSet.of(
+ LEGACY_CONF.getRoot(environment).resolve("desugar_jdk_libs.jar"),
+ LEGACY_CONF.getRoot(environment).resolve("desugar_jdk_libs_configuration.jar")),
+ LEGACY_CONF.getRoot(environment).resolve("desugar.json"),
+ ImmutableSet.of(ANDROID_JAR.getRoot(environment).resolve("android.jar")),
LibraryDesugaringSpecification.JDK11_DESCRIPTOR,
"");
runner(environment.getConfig())
diff --git a/src/test/java/com/android/tools/r8/benchmarks/desugaredlib/LegacyDesugaredLibraryBenchmark.java b/src/test/java/com/android/tools/r8/benchmarks/desugaredlib/LegacyDesugaredLibraryBenchmark.java
index 0e86477..6b5e4f9 100644
--- a/src/test/java/com/android/tools/r8/benchmarks/desugaredlib/LegacyDesugaredLibraryBenchmark.java
+++ b/src/test/java/com/android/tools/r8/benchmarks/desugaredlib/LegacyDesugaredLibraryBenchmark.java
@@ -24,12 +24,12 @@
@RunWith(Parameterized.class)
public class LegacyDesugaredLibraryBenchmark extends BenchmarkBase {
- private static final BenchmarkDependency androidJar = BenchmarkDependency.getAndroidJar30();
- private static final BenchmarkDependency legacyConf =
+ private static final BenchmarkDependency ANDROID_JAR = BenchmarkDependency.getAndroidJar30();
+ private static final BenchmarkDependency LEGACY_CONF =
new BenchmarkDependency(
"legacyConf",
- "desugar_jdk_libs_legacy",
- Paths.get(ToolHelper.THIRD_PARTY_DIR, "openjdk"));
+ "1.1.5",
+ Paths.get(ToolHelper.THIRD_PARTY_DIR, "openjdk", "desugar_jdk_libs_releases"));
public LegacyDesugaredLibraryBenchmark(BenchmarkConfig config, TestParameters parameters) {
super(config, parameters);
@@ -47,8 +47,8 @@
.setTarget(BenchmarkTarget.D8)
.setFromRevision(12150)
.setMethod(LegacyDesugaredLibraryBenchmark::run)
- .addDependency(androidJar)
- .addDependency(legacyConf)
+ .addDependency(ANDROID_JAR)
+ .addDependency(LEGACY_CONF)
.measureRunTime()
.build());
}
@@ -62,15 +62,13 @@
results ->
testForD8(environment.getTemp(), Backend.DEX)
.setMinApi(AndroidApiLevel.B)
- .addLibraryFiles(androidJar.getRoot(environment).resolve("android.jar"))
+ .addLibraryFiles(ANDROID_JAR.getRoot(environment).resolve("android.jar"))
.apply(
b ->
b.getBuilder()
.addDesugaredLibraryConfiguration(
StringResource.fromFile(
- legacyConf
- .getRoot(environment)
- .resolve("desugar_jdk_libs.json"))))
+ LEGACY_CONF.getRoot(environment).resolve("desugar.json"))))
.benchmarkCompile(results));
}
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/LibraryDesugaringSpecification.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/LibraryDesugaringSpecification.java
index b82ba3e..de43daf 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/LibraryDesugaringSpecification.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/LibraryDesugaringSpecification.java
@@ -29,6 +29,7 @@
import java.util.List;
import java.util.Set;
import java.util.concurrent.ExecutorService;
+import java.util.function.Supplier;
import org.junit.rules.TemporaryFolder;
public class LibraryDesugaringSpecification {
@@ -91,22 +92,27 @@
LATEST
}
- private static final Path tempLibraryJDK11Undesugar = createUndesugaredJdk11LibJarForTesting();
+ private static Path tempLibraryJdk11UndesugarCache;
- private static Path createUndesugaredJdk11LibJarForTesting() {
+ private static synchronized Path ensureUndesugaredJdk11LibJarForTesting() {
+ if (tempLibraryJdk11UndesugarCache != null) {
+ return tempLibraryJdk11UndesugarCache;
+ }
try {
TemporaryFolder staticTemp = ToolHelper.getTemporaryFolderForTest();
staticTemp.create();
Path jdklib_desugaring = staticTemp.newFolder("jdklib_desugaring").toPath();
- return DesugaredLibraryJDK11Undesugarer.undesugaredJarJDK11(
- jdklib_desugaring, DESUGARED_JDK_11_LIB_JAR);
+ tempLibraryJdk11UndesugarCache =
+ DesugaredLibraryJDK11Undesugarer.undesugaredJarJDK11(
+ jdklib_desugaring, DESUGARED_JDK_11_LIB_JAR);
+ return tempLibraryJdk11UndesugarCache;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static Path getTempLibraryJDK11Undesugar() {
- return tempLibraryJDK11Undesugar;
+ return ensureUndesugaredJdk11LibJarForTesting();
}
// Main head specifications.
@@ -121,7 +127,7 @@
public static LibraryDesugaringSpecification JDK11 =
new LibraryDesugaringSpecification(
"JDK11",
- tempLibraryJDK11Undesugar,
+ LibraryDesugaringSpecification::ensureUndesugaredJdk11LibJarForTesting,
"jdk11/desugar_jdk_libs.json",
AndroidApiLevel.R,
JDK11_DESCRIPTOR,
@@ -129,7 +135,7 @@
public static LibraryDesugaringSpecification JDK11_MINIMAL =
new LibraryDesugaringSpecification(
"JDK11_MINIMAL",
- tempLibraryJDK11Undesugar,
+ LibraryDesugaringSpecification::ensureUndesugaredJdk11LibJarForTesting,
"jdk11/desugar_jdk_libs_minimal.json",
AndroidApiLevel.R,
EMPTY_DESCRIPTOR_24,
@@ -137,7 +143,7 @@
public static LibraryDesugaringSpecification JDK11_PATH =
new LibraryDesugaringSpecification(
"JDK11_PATH",
- tempLibraryJDK11Undesugar,
+ LibraryDesugaringSpecification::ensureUndesugaredJdk11LibJarForTesting,
"jdk11/desugar_jdk_libs_nio.json",
AndroidApiLevel.R,
JDK11_PATH_DESCRIPTOR,
@@ -165,7 +171,8 @@
new LibraryDesugaringSpecification("1.1.5", AndroidApiLevel.P);
private final String name;
- private final Set<Path> desugarJdkLibs;
+ private final Set<Supplier<Path>> desugarJdkLibsProvider;
+ private Set<Path> desugarJdkLibs;
private final Path specification;
private final Set<Path> libraryFiles;
private final Descriptor descriptor;
@@ -195,7 +202,36 @@
Set<Path> libraryFiles,
Descriptor descriptor,
String extraKeepRules) {
+ this(name, null, desugarJdkLibs, specification, libraryFiles, descriptor, extraKeepRules);
+ }
+
+ private LibraryDesugaringSpecification(
+ String name,
+ Supplier<Path> desugarJdkLibsSupplier,
+ String specificationPath,
+ AndroidApiLevel androidJarLevel,
+ Descriptor descriptor,
+ CustomConversionVersion legacy) {
+ this(
+ name,
+ ImmutableSet.of(desugarJdkLibsSupplier, () -> ToolHelper.getDesugarLibConversions(legacy)),
+ null,
+ Paths.get(ToolHelper.LIBRARY_DESUGAR_SOURCE_DIR + specificationPath),
+ ImmutableSet.of(ToolHelper.getAndroidJar(androidJarLevel)),
+ descriptor,
+ "");
+ }
+
+ private LibraryDesugaringSpecification(
+ String name,
+ Set<Supplier<Path>> desugarJdkLibsSuppliers,
+ Set<Path> desugarJdkLibs,
+ Path specification,
+ Set<Path> libraryFiles,
+ Descriptor descriptor,
+ String extraKeepRules) {
this.name = name;
+ this.desugarJdkLibsProvider = desugarJdkLibsSuppliers;
this.desugarJdkLibs = desugarJdkLibs;
this.specification = specification;
this.libraryFiles = libraryFiles;
@@ -220,7 +256,14 @@
return name;
}
- public Set<Path> getDesugarJdkLibs() {
+ public synchronized Set<Path> getDesugarJdkLibs() {
+ if (desugarJdkLibs == null) {
+ ImmutableSet.Builder<Path> builder = ImmutableSet.builder();
+ for (Supplier<Path> pathSupplier : desugarJdkLibsProvider) {
+ builder.add(pathSupplier.get());
+ }
+ desugarJdkLibs = builder.build();
+ }
return desugarJdkLibs;
}
diff --git a/third_party/openjdk/desugar_jdk_libs_releases/2.0.3.tar.gz.sha1 b/third_party/openjdk/desugar_jdk_libs_releases/2.0.3.tar.gz.sha1
new file mode 100644
index 0000000..017f318
--- /dev/null
+++ b/third_party/openjdk/desugar_jdk_libs_releases/2.0.3.tar.gz.sha1
@@ -0,0 +1 @@
+82006808a828dcb64726f119ab93402281fa9f17
\ No newline at end of file