Add master build of next Art version (Android T)
Built from commit e208b04cc2efaf707390d7acbe8f978142701d72.
Bug: 217158412
Change-Id: Ic9c473cd6b7d0032b4b8299938ca42294a210b43
diff --git a/build.gradle b/build.gradle
index 7f4bcb1..02f53e1 100644
--- a/build.gradle
+++ b/build.gradle
@@ -387,6 +387,7 @@
"linux/art-9.0.0",
"linux/art-10.0.0",
"linux/host/art-12.0.0-beta4",
+ "linux/host/art-13-master",
"linux/dalvik",
"linux/dalvik-4.0.4",
"${osString}/dx",
diff --git a/src/test/java/com/android/tools/r8/CompileWithJdkClassFileProviderTest.java b/src/test/java/com/android/tools/r8/CompileWithJdkClassFileProviderTest.java
index accc8af..318b3c2 100644
--- a/src/test/java/com/android/tools/r8/CompileWithJdkClassFileProviderTest.java
+++ b/src/test/java/com/android/tools/r8/CompileWithJdkClassFileProviderTest.java
@@ -9,6 +9,7 @@
import com.android.tools.r8.TestRuntime.CfRuntime;
import com.android.tools.r8.TestRuntime.CfVm;
+import com.android.tools.r8.ToolHelper.DexVm;
import com.android.tools.r8.diagnostic.MissingDefinitionsDiagnostic;
import com.android.tools.r8.utils.AndroidApiLevel;
import java.util.List;
@@ -109,23 +110,28 @@
// java.util.concurrent.Flow$Subscriber is not present on Android.
testBuilder
.run(parameters.getRuntime(), "MySubscriber")
- .assertFailureWithErrorThatMatches(
- anyOf(
- // Dalvik 4.0.4
- containsString("java.lang.NoClassDefFoundError: MySubscriber"),
- // Other Dalviks.
- containsString(
- "java.lang.ClassNotFoundException: Didn't find class \"MySubscriber\""),
- // Art.
- containsString(
- "java.lang.NoClassDefFoundError: "
- + "Failed resolution of: Ljava/util/concurrent/Flow$Subscriber;"),
- // Art 10.
- containsString("java.lang.ClassNotFoundException: MySubscriber"),
- // Art 11+.
- containsString(
- "java.lang.ClassNotFoundException: "
- + "java.util.concurrent.SubmissionPublisher")));
+ .applyIf(
+ parameters.asDexRuntime().getVersion().isOlderThan(DexVm.Version.V13_MASTER),
+ b ->
+ b.assertFailureWithErrorThatMatches(
+ anyOf(
+ // Dalvik 4.0.4
+ containsString("java.lang.NoClassDefFoundError: MySubscriber"),
+ // Other Dalviks.
+ containsString(
+ "java.lang.ClassNotFoundException: Didn't find class"
+ + " \"MySubscriber\""),
+ // Art.
+ containsString(
+ "java.lang.NoClassDefFoundError: Failed resolution of:"
+ + " Ljava/util/concurrent/Flow$Subscriber;"),
+ // Art 10.
+ containsString("java.lang.ClassNotFoundException: MySubscriber"),
+ // Art 11+.
+ containsString(
+ "java.lang.ClassNotFoundException: "
+ + "java.util.concurrent.SubmissionPublisher"))),
+ b -> b.assertSuccessWithOutputLines("Got : 1", "Got : 2", "Got : 3", "Done"));
} else {
if (parameters.getRuntime().asCf().getVm() == CfVm.JDK8) {
// java.util.concurrent.Flow$Subscriber not present in JDK8.
diff --git a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
index ccdd0ca..5b735b1 100644
--- a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
@@ -107,7 +107,8 @@
DexVm.Version.V8_1_0,
DexVm.Version.V9_0_0,
DexVm.Version.V10_0_0,
- DexVm.Version.V12_0_0);
+ DexVm.Version.V12_0_0,
+ DexVm.Version.V13_MASTER);
// Input jar for jctf tests.
private static final String JCTF_COMMON_JAR = "build/libs/jctfCommon.jar";
@@ -195,12 +196,16 @@
TestCondition.match(TestCondition.runtimes(DexVm.Version.V12_0_0)))
// TODO(b/197078746): Triage - fails with "java.lang.NoSuchMethodException:
// org.apache.harmony.dalvik.ddmc.DdmVmInternal.enableRecentAllocations [boolean]"
- .put("098-ddmc", TestCondition.match(TestCondition.runtimes(DexVm.Version.V12_0_0)))
+ .put(
+ "098-ddmc",
+ TestCondition.match(
+ TestCondition.runtimes(DexVm.Version.V12_0_0, DexVm.Version.V13_MASTER)))
// TODO(b/197079442): Triage - fails with "java.lang.NoSuchMethodException:
// org.apache.harmony.dalvik.ddmc.DdmVmInternal.enableRecentAllocations [boolean]"
.put(
"145-alloc-tracking-stress",
- TestCondition.match(TestCondition.runtimes(DexVm.Version.V12_0_0)))
+ TestCondition.match(
+ TestCondition.runtimes(DexVm.Version.V12_0_0, DexVm.Version.V13_MASTER)))
.build();
// Tests that are flaky with the Art version we currently use.
@@ -507,6 +512,9 @@
ImmutableMap.Builder<DexVm.Version, List<String>> builder = ImmutableMap.builder();
builder
.put(
+ DexVm.Version.V13_MASTER,
+ ImmutableList.of("454-get-vreg", "457-regs", "543-env-long-ref", "518-null-array-get"))
+ .put(
DexVm.Version.V12_0_0,
ImmutableList.of("454-get-vreg", "457-regs", "543-env-long-ref", "518-null-array-get"))
.put(
@@ -852,7 +860,8 @@
DexVm.Version.V4_4_4,
DexVm.Version.V5_1_1,
DexVm.Version.V6_0_1,
- DexVm.Version.V7_0_0)),
+ DexVm.Version.V7_0_0,
+ DexVm.Version.V13_MASTER)),
TestCondition.match(
TestCondition.compilers(
CompilerUnderTest.R8,
diff --git a/src/test/java/com/android/tools/r8/TestCondition.java b/src/test/java/com/android/tools/r8/TestCondition.java
index 07fff0e..cd0a1e7 100644
--- a/src/test/java/com/android/tools/r8/TestCondition.java
+++ b/src/test/java/com/android/tools/r8/TestCondition.java
@@ -26,6 +26,7 @@
ART_V9_0_0,
ART_V10_0_0,
ART_V12_0_0,
+ ART_V13_0_0,
ART_DEFAULT,
JAVA;
@@ -52,6 +53,8 @@
return ART_V10_0_0;
case V12_0_0:
return ART_V12_0_0;
+ case V13_MASTER:
+ return ART_V13_0_0;
case DEFAULT:
return ART_DEFAULT;
default:
diff --git a/src/test/java/com/android/tools/r8/ToolHelper.java b/src/test/java/com/android/tools/r8/ToolHelper.java
index 2d8ebe3..fb17345 100644
--- a/src/test/java/com/android/tools/r8/ToolHelper.java
+++ b/src/test/java/com/android/tools/r8/ToolHelper.java
@@ -268,7 +268,9 @@
ART_10_0_0_TARGET(Version.V10_0_0, Kind.TARGET),
ART_10_0_0_HOST(Version.V10_0_0, Kind.HOST),
ART_12_0_0_TARGET(Version.V12_0_0, Kind.TARGET),
- ART_12_0_0_HOST(Version.V12_0_0, Kind.HOST);
+ ART_12_0_0_HOST(Version.V12_0_0, Kind.HOST),
+ ART_13_0_0_TARGET(Version.V13_MASTER, Kind.TARGET),
+ ART_13_0_0_HOST(Version.V13_MASTER, Kind.HOST);
private static final ImmutableMap<String, DexVm> SHORT_NAME_MAP =
Arrays.stream(DexVm.values()).collect(ImmutableMap.toImmutableMap(
@@ -285,7 +287,8 @@
DEFAULT("default"),
V9_0_0("9.0.0"),
V10_0_0("10.0.0"),
- V12_0_0("12.0.0");
+ V12_0_0("12.0.0"),
+ V13_MASTER("13.0.0");
/** This should generally be the latest DEX VM fully supported. */
// TODO(b/204855476): Rename to DEFAULT alias once the checked in VM is removed.
@@ -343,7 +346,7 @@
}
public static Version last() {
- return V12_0_0;
+ return V13_MASTER;
}
static {
@@ -614,6 +617,7 @@
private static final Map<DexVm, String> ART_DIRS =
ImmutableMap.<DexVm, String>builder()
.put(DexVm.ART_DEFAULT, "art")
+ .put(DexVm.ART_13_0_0_HOST, "host/art-13-master")
.put(DexVm.ART_12_0_0_HOST, "host/art-12.0.0-beta4")
.put(DexVm.ART_10_0_0_HOST, "art-10.0.0")
.put(DexVm.ART_9_0_0_HOST, "art-9.0.0")
@@ -627,6 +631,7 @@
private static final Map<DexVm, String> ART_BINARY_VERSIONS =
ImmutableMap.<DexVm, String>builder()
.put(DexVm.ART_DEFAULT, "bin/art")
+ .put(DexVm.ART_13_0_0_HOST, "bin/art")
.put(DexVm.ART_12_0_0_HOST, "bin/art")
.put(DexVm.ART_10_0_0_HOST, "bin/art")
.put(DexVm.ART_9_0_0_HOST, "bin/art")
@@ -641,6 +646,7 @@
private static final Map<DexVm, String> ART_BINARY_VERSIONS_X64 =
ImmutableMap.<DexVm, String>builder()
.put(DexVm.ART_DEFAULT, "bin/art")
+ .put(DexVm.ART_13_0_0_HOST, "bin/art")
.put(DexVm.ART_12_0_0_HOST, "bin/art")
.put(DexVm.ART_10_0_0_HOST, "bin/art")
.put(DexVm.ART_9_0_0_HOST, "bin/art")
@@ -667,6 +673,7 @@
ImmutableMap.Builder<DexVm, List<String>> builder = ImmutableMap.builder();
builder
.put(DexVm.ART_DEFAULT, ART_BOOT_LIBS)
+ .put(DexVm.ART_13_0_0_HOST, ART_BOOT_LIBS)
.put(DexVm.ART_12_0_0_HOST, ART_BOOT_LIBS)
.put(DexVm.ART_10_0_0_HOST, ART_BOOT_LIBS)
.put(DexVm.ART_9_0_0_HOST, ART_BOOT_LIBS)
@@ -685,6 +692,7 @@
ImmutableMap.Builder<DexVm, String> builder = ImmutableMap.builder();
builder
.put(DexVm.ART_DEFAULT, "angler")
+ .put(DexVm.ART_13_0_0_HOST, "redfin")
.put(DexVm.ART_12_0_0_HOST, "redfin")
.put(DexVm.ART_10_0_0_HOST, "coral")
.put(DexVm.ART_9_0_0_HOST, "marlin")
@@ -1013,6 +1021,8 @@
public static AndroidApiLevel getMinApiLevelForDexVm(DexVm dexVm) {
switch (dexVm.version) {
+ case V13_MASTER:
+ return AndroidApiLevel.T;
case V12_0_0:
return AndroidApiLevel.S;
case V10_0_0:
@@ -1973,7 +1983,10 @@
// TODO(jmhenaff): find a way to run this on windows (push dex and run on device/emulator?)
Assume.assumeTrue(ToolHelper.isDex2OatSupported());
Assume.assumeFalse(
- "b/144975341", vm.version == DexVm.Version.V10_0_0 || vm.version == DexVm.Version.V12_0_0);
+ "b/144975341",
+ vm.version == DexVm.Version.V10_0_0
+ || vm.version == DexVm.Version.V12_0_0
+ || vm.version == DexVm.Version.V13_MASTER);
if (vm.isOlderThanOrEqual(DexVm.ART_4_4_4_HOST)) {
// Run default dex2oat for tests on dalvik runtimes.
vm = DexVm.ART_DEFAULT;
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassInstanceInitTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassInstanceInitTest.java
index 7c60172..a868cf1 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassInstanceInitTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassInstanceInitTest.java
@@ -37,9 +37,10 @@
@Test
public void testR8() throws Exception {
- // TODO(b/197078995): Make this work on 12.
+ // TODO(b/197078995): Make this work on 12+.
assumeFalse(
- parameters.isDexRuntime() && parameters.getDexRuntimeVersion().isEqualTo(Version.V12_0_0));
+ parameters.isDexRuntime()
+ && parameters.getDexRuntimeVersion().isNewerThanOrEqual(Version.V12_0_0));
boolean isMockApiLevel =
parameters.isDexRuntime() && parameters.getApiLevel().isGreaterThanOrEqualTo(mockLevel);
testForR8(parameters.getBackend())
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassLoadingTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassLoadingTest.java
index ad0961d..916badd 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassLoadingTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassLoadingTest.java
@@ -33,9 +33,10 @@
@Test
public void testR8() throws Exception {
- // TODO(b/197078995): Make this work on 12.
+ // TODO(b/197078995): Make this work on 12+.
assumeFalse(
- parameters.isDexRuntime() && parameters.getDexRuntimeVersion().isEqualTo(Version.V12_0_0));
+ parameters.isDexRuntime()
+ && parameters.getDexRuntimeVersion().isNewerThanOrEqual(Version.V12_0_0));
boolean isLibraryOnBootClassPath =
parameters.isDexRuntime()
&& parameters.getRuntime().maxSupportedApiLevel().isGreaterThanOrEqualTo(mockLevel);
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassTest.java
index dddfcbc..51d34a9 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockClassTest.java
@@ -36,9 +36,10 @@
@Test
public void testR8() throws Exception {
- // TODO(b/197078995): Make this work on 12.
+ // TODO(b/197078995): Make this work on 12+.
assumeFalse(
- parameters.isDexRuntime() && parameters.getDexRuntimeVersion().isEqualTo(Version.V12_0_0));
+ parameters.isDexRuntime()
+ && parameters.getDexRuntimeVersion().isNewerThanOrEqual(Version.V12_0_0));
boolean isMockApiLevel =
parameters.isDexRuntime() && parameters.getApiLevel().isGreaterThanOrEqualTo(mockLevel);
testForR8(parameters.getBackend())
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockInheritedClassTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockInheritedClassTest.java
index 474874c..4f1c13b 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockInheritedClassTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockInheritedClassTest.java
@@ -35,9 +35,10 @@
@Test
public void testR8() throws Exception {
- // TODO(b/197078995): Make this work on 12.
+ // TODO(b/197078995): Make this work on 12+.
assumeFalse(
- parameters.isDexRuntime() && parameters.getDexRuntimeVersion().isEqualTo(Version.V12_0_0));
+ parameters.isDexRuntime()
+ && parameters.getDexRuntimeVersion().isNewerThanOrEqual(Version.V12_0_0));
boolean isMockApiLevel =
parameters.isDexRuntime() && parameters.getApiLevel().isGreaterThanOrEqualTo(mockLevel);
testForR8(parameters.getBackend())
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockSuperChainClassTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockSuperChainClassTest.java
index 6c8b93d..94eb314 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelMockSuperChainClassTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelMockSuperChainClassTest.java
@@ -36,9 +36,10 @@
@Test
public void testR8() throws Exception {
- // TODO(b/197078995): Make this work on 12.
+ // TODO(b/197078995): Make this work on 12+.
assumeFalse(
- parameters.isDexRuntime() && parameters.getDexRuntimeVersion().isEqualTo(Version.V12_0_0));
+ parameters.isDexRuntime()
+ && parameters.getDexRuntimeVersion().isNewerThanOrEqual(Version.V12_0_0));
boolean isMockApiLevel =
parameters.isDexRuntime() && parameters.getApiLevel().isGreaterThanOrEqualTo(mockApiLevel);
testForR8(parameters.getBackend())
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelNoOutlineForFullyMockedTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelNoOutlineForFullyMockedTest.java
index 76e8b57..db72c72 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelNoOutlineForFullyMockedTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelNoOutlineForFullyMockedTest.java
@@ -41,8 +41,10 @@
@Test
public void testR8() throws Exception {
+ // TODO(b/197078995): Make this work on 12+.
assumeFalse(
- parameters.isDexRuntime() && parameters.getDexRuntimeVersion().isEqualTo(Version.V12_0_0));
+ parameters.isDexRuntime()
+ && parameters.getDexRuntimeVersion().isNewerThanOrEqual(Version.V12_0_0));
boolean isLibraryApiLevel =
parameters.isDexRuntime()
&& parameters.getApiLevel().isGreaterThanOrEqualTo(libraryApiLevel);
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineDuplicateMethodTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineDuplicateMethodTest.java
index c4dcd42..67fad04 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineDuplicateMethodTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineDuplicateMethodTest.java
@@ -47,8 +47,10 @@
@Test
public void testR8() throws Exception {
+ // TODO(b/197078995): Make this work on 12+.
assumeFalse(
- parameters.isDexRuntime() && parameters.getDexRuntimeVersion().isEqualTo(Version.V12_0_0));
+ parameters.isDexRuntime()
+ && parameters.getDexRuntimeVersion().isNewerThanOrEqual(Version.V12_0_0));
boolean isMethodApiLevel =
parameters.isDexRuntime()
&& parameters.getApiLevel().isGreaterThanOrEqualTo(methodApiLevel);
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineHorizontalMergingTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineHorizontalMergingTest.java
index ce21ee4..97bced2 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineHorizontalMergingTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineHorizontalMergingTest.java
@@ -45,8 +45,10 @@
@Test
public void testR8() throws Exception {
+ // TODO(b/197078995): Make this work on 12+.
assumeFalse(
- parameters.isDexRuntime() && parameters.getDexRuntimeVersion().isEqualTo(Version.V12_0_0));
+ parameters.isDexRuntime()
+ && parameters.getDexRuntimeVersion().isNewerThanOrEqual(Version.V12_0_0));
boolean beforeFirstApiMethodLevel =
parameters.isCfRuntime() || parameters.getApiLevel().isLessThan(firstMethodApiLevel);
boolean afterSecondApiMethodLevel =
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodAndStubClassTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodAndStubClassTest.java
index a3e2d46..d71eec4 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodAndStubClassTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodAndStubClassTest.java
@@ -39,9 +39,10 @@
@Test
public void testR8() throws Exception {
- // TODO(b/197078995): Make this work on 12.
+ // TODO(b/197078995): Make this work on 12+.
assumeFalse(
- parameters.isDexRuntime() && parameters.getDexRuntimeVersion().isEqualTo(Version.V12_0_0));
+ parameters.isDexRuntime()
+ && parameters.getDexRuntimeVersion().isNewerThanOrEqual(Version.V12_0_0));
boolean libraryClassNotStubbed =
parameters.isDexRuntime()
&& parameters.getApiLevel().isGreaterThanOrEqualTo(libraryClassLevel);
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodMissingClassTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodMissingClassTest.java
index 97ee26b..b537125 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodMissingClassTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodMissingClassTest.java
@@ -47,9 +47,10 @@
@Test
public void testR8() throws Exception {
- // TODO(b/197078995): Make this work on 12.
+ // TODO(b/197078995): Make this work on 12+.
assumeFalse(
- parameters.isDexRuntime() && parameters.getDexRuntimeVersion().isEqualTo(Version.V12_0_0));
+ parameters.isDexRuntime()
+ && parameters.getDexRuntimeVersion().isNewerThanOrEqual(Version.V12_0_0));
boolean preMockApis =
parameters.isCfRuntime() || parameters.getApiLevel().isLessThan(initialLibraryMockLevel);
boolean postMockApis =
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodProtectedTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodProtectedTest.java
index 42ee1c9..33a73cf 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodProtectedTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodProtectedTest.java
@@ -43,9 +43,10 @@
@Test
public void testR8() throws Exception {
- // TODO(b/197078995): Make this work on 12.
+ // TODO(b/197078995): Make this work on 12+.
assumeFalse(
- parameters.isDexRuntime() && parameters.getDexRuntimeVersion().isEqualTo(Version.V12_0_0));
+ parameters.isDexRuntime()
+ && parameters.getDexRuntimeVersion().isNewerThanOrEqual(Version.V12_0_0));
Method[] apiMethods =
new Method[] {
LibraryClass.class.getDeclaredMethod("addedOn27"),
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodUnknownTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodUnknownTest.java
index f8b3bf7..0e9a5b3 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodUnknownTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlineMethodUnknownTest.java
@@ -35,9 +35,10 @@
@Test
public void testR8() throws Exception {
- // TODO(b/197078995): Make this work on 12.
+ // TODO(b/197078995): Make this work on 12+.
assumeFalse(
- parameters.isDexRuntime() && parameters.getDexRuntimeVersion().isEqualTo(Version.V12_0_0));
+ parameters.isDexRuntime()
+ && parameters.getDexRuntimeVersion().isNewerThanOrEqual(Version.V12_0_0));
boolean willInvokeLibraryMethods =
parameters.isDexRuntime() && parameters.getApiLevel().isGreaterThanOrEqualTo(classApiLevel);
testForR8(parameters.getBackend())
diff --git a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlinePackagePrivateTest.java b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlinePackagePrivateTest.java
index 40b302d..f4fe8d7 100644
--- a/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlinePackagePrivateTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/ApiModelOutlinePackagePrivateTest.java
@@ -74,9 +74,10 @@
@Test
public void testR8() throws Exception {
- // TODO(b/197078995): Make this work on 12.
+ // TODO(b/197078995): Make this work on 12+.
assumeFalse(
- parameters.isDexRuntime() && parameters.getDexRuntimeVersion().isEqualTo(Version.V12_0_0));
+ parameters.isDexRuntime()
+ && parameters.getDexRuntimeVersion().isNewerThanOrEqual(Version.V12_0_0));
testForR8(parameters.getBackend())
.addLibraryClasses(LibraryClass.class)
.addDefaultRuntimeLibrary(parameters)
diff --git a/src/test/java/com/android/tools/r8/desugar/backports/ApiLevelBackportsTest.java b/src/test/java/com/android/tools/r8/desugar/backports/ApiLevelBackportsTest.java
index ea0f614..15c56e6 100644
--- a/src/test/java/com/android/tools/r8/desugar/backports/ApiLevelBackportsTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/backports/ApiLevelBackportsTest.java
@@ -88,10 +88,7 @@
.addProgramClassFileData(transformTestMathMultiplyExactLongInt())
.setMinApi(AndroidApiLevel.ANDROID_PLATFORM)
.run(parameters.getRuntime(), TestMathMultiplyExactLongInt.class)
- .assertFailureWithErrorThatMatches(
- containsString(
- "java.lang.NoSuchMethodError: No static method"
- + " parseInt(Ljava/lang/CharSequence;III)I"));
+ .assertSuccessWithOutputLines("4");
}
// Test class for using: List List.of()
diff --git a/src/test/java/com/android/tools/r8/desugar/backports/AtomicReferenceArrayTest.java b/src/test/java/com/android/tools/r8/desugar/backports/AtomicReferenceArrayTest.java
index 2c2af2b..3032a12 100644
--- a/src/test/java/com/android/tools/r8/desugar/backports/AtomicReferenceArrayTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/backports/AtomicReferenceArrayTest.java
@@ -8,7 +8,6 @@
import com.android.tools.r8.ToolHelper.DexVm.Version;
import com.android.tools.r8.utils.AndroidApiLevel;
import java.util.concurrent.atomic.AtomicReferenceArray;
-import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@@ -25,7 +24,9 @@
}
public AtomicReferenceArrayTest(TestParameters parameters) {
- super(parameters, AtomicReferenceFieldUpdater.class, Main.class);
+ super(parameters, AtomicReferenceArray.class, Main.class);
+
+ ignoreInvokes("<init>");
// java.util.concurrent.atomic.AtomicReferenceArray issue is on API 31, see b/211646483.
registerTarget(AndroidApiLevel.Sv2, 3);
diff --git a/src/test/java/com/android/tools/r8/desugar/backports/AtomicReferenceTest.java b/src/test/java/com/android/tools/r8/desugar/backports/AtomicReferenceTest.java
index 1f5d11e..6dc9faf 100644
--- a/src/test/java/com/android/tools/r8/desugar/backports/AtomicReferenceTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/backports/AtomicReferenceTest.java
@@ -8,7 +8,6 @@
import com.android.tools.r8.ToolHelper.DexVm.Version;
import com.android.tools.r8.utils.AndroidApiLevel;
import java.util.concurrent.atomic.AtomicReference;
-import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@@ -25,7 +24,9 @@
}
public AtomicReferenceTest(TestParameters parameters) {
- super(parameters, AtomicReferenceFieldUpdater.class, Main.class);
+ super(parameters, AtomicReference.class, Main.class);
+
+ ignoreInvokes("<init>");
// java.util.concurrent.atomic.AtomicReference issue is on API 31, see b/211646483.
registerTarget(AndroidApiLevel.Sv2, 3);
diff --git a/src/test/java/com/android/tools/r8/shaking/InvalidTypesTest.java b/src/test/java/com/android/tools/r8/shaking/InvalidTypesTest.java
index e110f57..f22ae69 100644
--- a/src/test/java/com/android/tools/r8/shaking/InvalidTypesTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/InvalidTypesTest.java
@@ -78,6 +78,7 @@
return StringUtils.joinLines("Hello!", "Goodbye!", "");
case V7_0_0:
+ case V13_MASTER:
return StringUtils.joinLines(
"Hello!",
"Unexpected outcome of checkcast",
diff --git a/tools/linux/README.art-versions b/tools/linux/README.art-versions
index ff57695..fee679c 100644
--- a/tools/linux/README.art-versions
+++ b/tools/linux/README.art-versions
@@ -42,6 +42,28 @@
<continue with repo sync as above>
+art-13-master (Android T)
+-------------------------
+Build from master commit e208b04cc2efaf707390d7acbe8f978142701d72.
+
+repo sync -cq -j24
+source build/envsetup.sh
+lunch aosp_redfin-userdebug
+m -j48
+m -j48 build-art
+m -j48 test-art-host
+
+Collected into tools/linux/host/art-13-master. The "host" path element is checked
+by the script for running Art.
+
+ cd <r8 checkout>
+ scripts/update-host-art.sh \
+ --android-checkout <...>/android/master \
+ --art-dir host/art-13-master \
+ --android-product redfin
+
+(cd tools/linux/host; upload_to_google_storage.py -a --bucket r8-deps art-13-master)
+
art-12.0.0 (Android S)
---------------------
Build from branch sc-beta4-release.
diff --git a/tools/linux/host/art-13-master.tar.gz.sha1 b/tools/linux/host/art-13-master.tar.gz.sha1
new file mode 100644
index 0000000..8b16edd
--- /dev/null
+++ b/tools/linux/host/art-13-master.tar.gz.sha1
@@ -0,0 +1 @@
+a2cf2b34b8712adb5c25a18bc6135946cfb1a047
\ No newline at end of file
diff --git a/tools/test.py b/tools/test.py
index 9d5e99f..e822efe 100755
--- a/tools/test.py
+++ b/tools/test.py
@@ -24,6 +24,7 @@
ALL_ART_VMS = [
"default",
+ "13.0.0",
"12.0.0",
"10.0.0",
"9.0.0",