Merge "Add Art version 9.0.0 (Android P)"
diff --git a/.gitignore b/.gitignore
index cb3eaab..22b29da 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,6 +19,8 @@
tools/*/art-7.0.0.tar.gz
tools/*/art-8.1.0
tools/*/art-8.1.0.tar.gz
+tools/*/art-9.0.0
+tools/*/art-9.0.0.tar.gz
tools/*/dalvik
tools/*/dalvik.tar.gz
tools/*/dalvik-4.0.4
diff --git a/build.gradle b/build.gradle
index 5ec2f08..66a0575 100644
--- a/build.gradle
+++ b/build.gradle
@@ -297,6 +297,7 @@
"linux/art-6.0.1",
"linux/art-7.0.0",
"linux/art-8.1.0",
+ "linux/art-9.0.0",
"linux/dalvik",
"linux/dalvik-4.0.4",
"${osString}/dx",
diff --git a/scripts/update-host-art.sh b/scripts/update-host-art.sh
index 8bfc753..802830d 100755
--- a/scripts/update-host-art.sh
+++ b/scripts/update-host-art.sh
@@ -130,6 +130,19 @@
mkdir -p $DEST/usr/icu
cp -r $ANDROID_HOST_BUILD/usr/icu/* $DEST/usr/icu
+# Update links for vdex files for Android P and later.
+if [ -f $DEST/product/$ANDROID_PRODUCT/system/framework/boot.vdex ]; then
+ for VDEXFILE in $DEST/product/$ANDROID_PRODUCT/system/framework/*.vdex; do
+ VDEXNAME=$(basename ${VDEXFILE});
+ for ARCH in arm arm64; do
+ rm $DEST/product/$ANDROID_PRODUCT/system/framework/$ARCH/${VDEXNAME};
+ # This relative link command will create a symbolic link of the form
+ # ../${VDEXNAME} for each architecture.
+ ln -r -s $DEST/product/$ANDROID_PRODUCT/system/framework/${VDEXNAME} $DEST/product/$ANDROID_PRODUCT/system/framework/$ARCH/${VDEXNAME};
+ done
+ done
+fi
+
# Allow failure for strip commands below.
set +e
diff --git a/src/test/java/com/android/tools/r8/JctfTestSpecifications.java b/src/test/java/com/android/tools/r8/JctfTestSpecifications.java
index 2c2c5a6..cebfc53 100644
--- a/src/test/java/com/android/tools/r8/JctfTestSpecifications.java
+++ b/src/test/java/com/android/tools/r8/JctfTestSpecifications.java
@@ -40,7 +40,9 @@
.put("math.BigInteger.ConstructorLjava_lang_String.BigInteger_Constructor_A02", any())
.put(
"lang.StringBuffer.insertILjava_lang_Object.StringBuffer_insert_A01",
- match(runtimes(Runtime.ART_DEFAULT, Runtime.ART_V8_1_0, Runtime.JAVA)))
+ match(
+ runtimes(
+ Runtime.ART_DEFAULT, Runtime.ART_V9_0_0, Runtime.ART_V8_1_0, Runtime.JAVA)))
.put("lang.StringBuffer.serialization.StringBuffer_serialization_A01", anyDexVm())
.put(
"lang.CloneNotSupportedException.serialization.CloneNotSupportedException_serialization_A01",
@@ -52,12 +54,20 @@
"lang.StrictMath.roundF.StrictMath_round_A01",
match(
runtimes(
- Runtime.ART_DEFAULT, Runtime.ART_V8_1_0, Runtime.ART_V7_0_0, Runtime.JAVA)))
+ Runtime.ART_DEFAULT,
+ Runtime.ART_V9_0_0,
+ Runtime.ART_V8_1_0,
+ Runtime.ART_V7_0_0,
+ Runtime.JAVA)))
.put(
"lang.StrictMath.roundD.StrictMath_round_A01",
match(
runtimes(
- Runtime.ART_DEFAULT, Runtime.ART_V8_1_0, Runtime.ART_V7_0_0, Runtime.JAVA)))
+ Runtime.ART_DEFAULT,
+ Runtime.ART_V9_0_0,
+ Runtime.ART_V8_1_0,
+ Runtime.ART_V7_0_0,
+ Runtime.JAVA)))
.put("lang.StrictMath.atan2DD.StrictMath_atan2_A01", any())
.put("lang.Thread.stop.Thread_stop_A05", any())
.put("lang.Thread.resume.Thread_resume_A02", anyDexVm())
@@ -70,6 +80,7 @@
match(
runtimes(
Runtime.ART_DEFAULT,
+ Runtime.ART_V9_0_0,
Runtime.ART_V8_1_0,
Runtime.ART_V7_0_0,
Runtime.ART_V6_0_1)))
@@ -199,7 +210,12 @@
anyDexVm())
.put(
"lang.ClassLoader.defineClassLjava_lang_StringLjava_nio_ByteBufferLjava_security_ProtectionDomain.ClassLoader_defineClass_A07",
- match(runtimes(Runtime.ART_DEFAULT, Runtime.ART_V8_1_0, Runtime.ART_V7_0_0)))
+ match(
+ runtimes(
+ Runtime.ART_DEFAULT,
+ Runtime.ART_V9_0_0,
+ Runtime.ART_V8_1_0,
+ Runtime.ART_V7_0_0)))
.put(
"lang.ClassLoader.defineClassLjava_lang_StringLjava_nio_ByteBufferLjava_security_ProtectionDomain.ClassLoader_defineClass_A04",
anyDexVm())
@@ -421,6 +437,7 @@
match(
runtimes(
Runtime.ART_DEFAULT,
+ Runtime.ART_V9_0_0,
Runtime.ART_V8_1_0,
Runtime.ART_V7_0_0,
Runtime.ART_V6_0_1,
@@ -431,6 +448,7 @@
match(
runtimes(
Runtime.ART_DEFAULT,
+ Runtime.ART_V9_0_0,
Runtime.ART_V8_1_0,
Runtime.ART_V7_0_0,
Runtime.ART_V6_0_1,
@@ -441,6 +459,7 @@
match(
runtimes(
Runtime.ART_DEFAULT,
+ Runtime.ART_V9_0_0,
Runtime.ART_V8_1_0,
Runtime.ART_V7_0_0,
Runtime.ART_V6_0_1,
@@ -451,6 +470,7 @@
match(
runtimes(
Runtime.ART_DEFAULT,
+ Runtime.ART_V9_0_0,
Runtime.ART_V8_1_0,
Runtime.ART_V7_0_0,
Runtime.ART_V6_0_1,
@@ -465,6 +485,7 @@
match(
runtimes(
Runtime.ART_DEFAULT,
+ Runtime.ART_V9_0_0,
Runtime.ART_V8_1_0,
Runtime.ART_V7_0_0,
Runtime.ART_V6_0_1,
@@ -475,6 +496,7 @@
match(
runtimes(
Runtime.ART_DEFAULT,
+ Runtime.ART_V9_0_0,
Runtime.ART_V8_1_0,
Runtime.ART_V7_0_0,
Runtime.ART_V6_0_1,
@@ -509,6 +531,7 @@
match(
runtimes(
Runtime.ART_DEFAULT,
+ Runtime.ART_V9_0_0,
Runtime.ART_V8_1_0,
Runtime.ART_V7_0_0,
Runtime.ART_V6_0_1,
@@ -520,6 +543,7 @@
match(
runtimes(
Runtime.ART_DEFAULT,
+ Runtime.ART_V9_0_0,
Runtime.ART_V8_1_0,
Runtime.ART_V7_0_0,
Runtime.ART_V6_0_1,
@@ -530,6 +554,7 @@
match(
runtimes(
Runtime.ART_DEFAULT,
+ Runtime.ART_V9_0_0,
Runtime.ART_V8_1_0,
Runtime.ART_V7_0_0,
Runtime.ART_V6_0_1,
@@ -540,6 +565,7 @@
match(
runtimes(
Runtime.ART_DEFAULT,
+ Runtime.ART_V9_0_0,
Runtime.ART_V8_1_0,
Runtime.ART_V7_0_0,
Runtime.ART_V6_0_1,
@@ -550,6 +576,7 @@
match(
runtimes(
Runtime.ART_DEFAULT,
+ Runtime.ART_V9_0_0,
Runtime.ART_V8_1_0,
Runtime.ART_V7_0_0,
Runtime.ART_V6_0_1,
@@ -560,6 +587,7 @@
match(
runtimes(
Runtime.ART_DEFAULT,
+ Runtime.ART_V9_0_0,
Runtime.ART_V8_1_0,
Runtime.ART_V7_0_0,
Runtime.ART_V6_0_1,
@@ -570,6 +598,7 @@
match(
runtimes(
Runtime.ART_DEFAULT,
+ Runtime.ART_V9_0_0,
Runtime.ART_V8_1_0,
Runtime.ART_V7_0_0,
Runtime.ART_V6_0_1,
@@ -580,6 +609,7 @@
match(
runtimes(
Runtime.ART_DEFAULT,
+ Runtime.ART_V9_0_0,
Runtime.ART_V8_1_0,
Runtime.ART_V7_0_0,
Runtime.ART_V6_0_1,
@@ -590,6 +620,7 @@
match(
runtimes(
Runtime.ART_DEFAULT,
+ Runtime.ART_V9_0_0,
Runtime.ART_V8_1_0,
Runtime.ART_V7_0_0,
Runtime.ART_V6_0_1,
@@ -619,6 +650,7 @@
match(
runtimes(
Runtime.ART_DEFAULT,
+ Runtime.ART_V9_0_0,
Runtime.ART_V8_1_0,
Runtime.ART_V7_0_0,
Runtime.ART_V6_0_1,
@@ -630,7 +662,7 @@
.put("lang.ref.WeakReference.get.WeakReference_get_A01", any())
.put(
"lang.StackTraceElement.toString.StackTraceElement_toString_A01",
- match(runtimes(Runtime.ART_DEFAULT, Runtime.ART_V8_1_0)))
+ match(runtimes(Runtime.ART_DEFAULT, Runtime.ART_V9_0_0, Runtime.ART_V8_1_0)))
.put(
"lang.NullPointerException.serialization.NullPointerException_serialization_A01",
anyDexVm())
@@ -686,7 +718,9 @@
match(artRuntimesFromAndJava(Runtime.ART_V5_1_1)))
.put(
"lang.annotation.IncompleteAnnotationException.ConstructorLjava_lang_ClassLjava_lang_String.IncompleteAnnotationException_Constructor_A01",
- match(runtimes(Runtime.ART_DEFAULT, Runtime.ART_V8_1_0, Runtime.JAVA)))
+ match(
+ runtimes(
+ Runtime.ART_DEFAULT, Runtime.ART_V9_0_0, Runtime.ART_V8_1_0, Runtime.JAVA)))
.put(
"lang.InterruptedException.serialization.InterruptedException_serialization_A01",
anyDexVm())
@@ -774,6 +808,7 @@
match(
runtimes(
Runtime.ART_DEFAULT,
+ Runtime.ART_V9_0_0,
Runtime.ART_V8_1_0,
Runtime.ART_V7_0_0,
Runtime.ART_V4_4_4,
@@ -814,6 +849,7 @@
match(
runtimes(
Runtime.ART_DEFAULT,
+ Runtime.ART_V9_0_0,
Runtime.ART_V8_1_0,
Runtime.ART_V7_0_0,
Runtime.ART_V4_4_4,
@@ -1167,7 +1203,9 @@
anyDexVm())
.put(
"lang.reflect.Proxy.h.Proxy_h_A01",
- match(runtimes(Runtime.ART_DEFAULT, Runtime.ART_V8_1_0, Runtime.JAVA)))
+ match(
+ runtimes(
+ Runtime.ART_DEFAULT, Runtime.ART_V9_0_0, Runtime.ART_V8_1_0, Runtime.JAVA)))
.put("lang.reflect.Proxy.serialization.Proxy_serialization_A02", any())
.put(
"lang.reflect.GenericSignatureFormatError.serialization.GenericSignatureFormatError_serialization_A01",
@@ -1177,7 +1215,9 @@
anyDexVm())
.put(
"lang.reflect.Proxy.ConstructorLjava_lang_reflect_InvocationHandler.Proxy_Constructor_A01",
- match(runtimes(Runtime.ART_DEFAULT, Runtime.ART_V8_1_0, Runtime.JAVA)))
+ match(
+ runtimes(
+ Runtime.ART_DEFAULT, Runtime.ART_V9_0_0, Runtime.ART_V8_1_0, Runtime.JAVA)))
.put(
"lang.reflect.Proxy.newProxyInstanceLjava_lang_ClassLoader_Ljava_lang_ClassLjava_lang_reflect_InvocationHandler.Proxy_newProxyInstance_A01",
anyDexVm())
@@ -1694,14 +1734,20 @@
match(artRuntimesUpTo(Runtime.ART_V4_4_4)))
.put(
"lang.ref.PhantomReference.isEnqueued.PhantomReference_isEnqueued_A01",
- match(and(runtimes(Runtime.ART_V8_1_0), artRuntimesUpTo(Runtime.ART_V4_4_4))))
+ match(
+ and(
+ runtimes(Runtime.ART_V9_0_0, Runtime.ART_V8_1_0),
+ artRuntimesUpTo(Runtime.ART_V4_4_4))))
.put("lang.ref.WeakReference.isEnqueued.WeakReference_isEnqueued_A01", anyDexVm())
.put(
"lang.ref.WeakReference.enqueue.WeakReference_enqueue_A01",
match(artRuntimesUpTo(Runtime.ART_V4_4_4)))
.put(
"lang.ref.SoftReference.isEnqueued.SoftReference_isEnqueued_A01",
- match(and(runtimes(Runtime.ART_V8_1_0), artRuntimesUpTo(Runtime.ART_V4_4_4))))
+ match(
+ and(
+ runtimes(Runtime.ART_V9_0_0, Runtime.ART_V8_1_0),
+ artRuntimesUpTo(Runtime.ART_V4_4_4))))
.put(
"lang.ref.SoftReference.enqueue.SoftReference_enqueue_A01",
match(artRuntimesUpTo(Runtime.ART_V4_4_4)))
@@ -1712,7 +1758,6 @@
.put(
"util.concurrent.AbstractExecutorService.invokeAllLjava_util_CollectionJLjava_util_concurrent_TimeUnit.AbstractExecutorService_invokeAll_A06",
match(runtimes(Runtime.ART_V4_0_4)))
-
.build(); // end of flakyWhenRun
public static final Multimap<String, TestCondition> timeoutsWhenRun =
diff --git a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
index 5123c51..2a4977d 100644
--- a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
@@ -97,7 +97,8 @@
DexVm.Version.V5_1_1,
DexVm.Version.V6_0_1,
DexVm.Version.V7_0_0,
- DexVm.Version.V8_1_0);
+ DexVm.Version.V8_1_0,
+ DexVm.Version.V9_0_0);
// Input jar for jctf tests.
private static final String JCTF_COMMON_JAR = "build/libs/jctfCommon.jar";
@@ -463,6 +464,16 @@
static {
ImmutableMap.Builder<DexVm.Version, List<String>> builder = ImmutableMap.builder();
builder
+ .put(DexVm.Version.V9_0_0, ImmutableList.of(
+ // TODO(120400625): Triage.
+ "454-get-vreg",
+ // TODO(120402198): Triage.
+ "457-regs",
+ // TODO(120401674): Triage.
+ "543-env-long-ref",
+ // TODO(120261858) Triage.
+ "518-null-array-get"
+ ))
.put(DexVm.Version.V8_1_0, ImmutableList.of(
// TODO(119938529): Triage.
"709-checker-varhandles",
diff --git a/src/test/java/com/android/tools/r8/R8RunExamplesAndroidOTest.java b/src/test/java/com/android/tools/r8/R8RunExamplesAndroidOTest.java
index 101fbb8..1c949a4 100644
--- a/src/test/java/com/android/tools/r8/R8RunExamplesAndroidOTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunExamplesAndroidOTest.java
@@ -69,6 +69,10 @@
.put(
Version.V7_0_0,
ImmutableList.of("invokecustom-with-shrinking", "invokecustom2-with-shrinking"))
+ .put(
+ Version.V9_0_0,
+ // TODO(120402963) Triage.
+ ImmutableList.of("invokecustom-with-shrinking", "invokecustom2-with-shrinking"))
.put(Version.DEFAULT, ImmutableList.of())
.build();
diff --git a/src/test/java/com/android/tools/r8/R8RunExamplesTest.java b/src/test/java/com/android/tools/r8/R8RunExamplesTest.java
index 221d427..793df27 100644
--- a/src/test/java/com/android/tools/r8/R8RunExamplesTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunExamplesTest.java
@@ -208,6 +208,9 @@
// Early art versions incorrectly print doubles.
.put("regress_72361252.Test",
TestCondition.match(TestCondition.runtimesUpTo(Version.V6_0_1)))
+ // TODO(120402200): Triage.
+ .put("regress_62300145.Regress",
+ TestCondition.match(TestCondition.runtimesUpTo(Version.V9_0_0)))
.build();
}
diff --git a/src/test/java/com/android/tools/r8/RunExamplesAndroidOTest.java b/src/test/java/com/android/tools/r8/RunExamplesAndroidOTest.java
index 68aec3f..a7b7230 100644
--- a/src/test/java/com/android/tools/r8/RunExamplesAndroidOTest.java
+++ b/src/test/java/com/android/tools/r8/RunExamplesAndroidOTest.java
@@ -269,6 +269,12 @@
"testMissingSuperDesugaredAndroidO"
))
.put(
+ DexVm.Version.V9_0_0, ImmutableList.of(
+ // TODO(120402963): Triage.
+ "invokecustom",
+ "invokecustom2"
+ ))
+ .put(
DexVm.Version.DEFAULT, ImmutableList.of()
);
failsOn = builder.build();
@@ -577,9 +583,6 @@
String qualifiedMainClass, Path[] jars, Path[] dexes, List<String> args) throws IOException {
boolean expectedToFail = expectedToFail(testName);
- if (expectedToFail && !ToolHelper.compareAgaintsGoldenFiles()) {
- thrown.expect(Throwable.class);
- }
String output = ToolHelper.runArtNoVerificationErrors(
Arrays.stream(dexes).map(path -> path.toString()).collect(Collectors.toList()),
qualifiedMainClass,
@@ -588,18 +591,22 @@
builder.appendProgramArgument(arg);
}
});
- if (!expectedToFail && !skipRunningOnJvm(testName) && !ToolHelper.compareAgaintsGoldenFiles()) {
- ArrayList<String> javaArgs = Lists.newArrayList(args);
- javaArgs.add(0, qualifiedMainClass);
- ToolHelper.ProcessResult javaResult =
- ToolHelper.runJava(ImmutableList.copyOf(jars), javaArgs.toArray(new String[0]));
- assertEquals("JVM run failed", javaResult.exitCode, 0);
- assertTrue(
- "JVM output does not match art output.\n\tjvm: "
- + javaResult.stdout
- + "\n\tart: "
- + output,
- output.replace("\r", "").equals(javaResult.stdout.replace("\r", "")));
+ try {
+ if (!skipRunningOnJvm(testName) && !ToolHelper.compareAgaintsGoldenFiles()) {
+ ArrayList<String> javaArgs = Lists.newArrayList(args);
+ javaArgs.add(0, qualifiedMainClass);
+ ToolHelper.ProcessResult javaResult =
+ ToolHelper.runJava(ImmutableList.copyOf(jars), javaArgs.toArray(new String[0]));
+ assertEquals("JVM run failed", javaResult.exitCode, 0);
+ assertTrue(
+ "JVM output does not match art output.\n\tjvm: "
+ + javaResult.stdout
+ + "\n\tart: "
+ + output,
+ output.replace("\r", "").equals(javaResult.stdout.replace("\r", "")));
+ }
+ } catch (Throwable t) {
+ assert expectedToFail;
}
}
diff --git a/src/test/java/com/android/tools/r8/RunExamplesAndroidPTest.java b/src/test/java/com/android/tools/r8/RunExamplesAndroidPTest.java
index e0981c4..2ab5e3e 100644
--- a/src/test/java/com/android/tools/r8/RunExamplesAndroidPTest.java
+++ b/src/test/java/com/android/tools/r8/RunExamplesAndroidPTest.java
@@ -186,7 +186,9 @@
.put(DexVm.Version.V6_0_1, ImmutableList.of("invokecustom"))
// Dex version not supported
.put(DexVm.Version.V7_0_0, ImmutableList.of("invokecustom"))
+ // Dex version not supported
.put(DexVm.Version.V8_1_0, ImmutableList.of("invokecustom"))
+ // Dex version not supported
.put(DexVm.Version.DEFAULT, ImmutableList.of())
.build();
diff --git a/src/test/java/com/android/tools/r8/RunExamplesJava9Test.java b/src/test/java/com/android/tools/r8/RunExamplesJava9Test.java
index 8a284ac..9c91282 100644
--- a/src/test/java/com/android/tools/r8/RunExamplesJava9Test.java
+++ b/src/test/java/com/android/tools/r8/RunExamplesJava9Test.java
@@ -231,7 +231,9 @@
+ "1: d>i>s>i>a\n"
+ "2: l>i>s>i>a\n"
+ "3: x>s\n"
- + "4: c>d>i>s>i>a\n"
+ + "4: c>d>i>s>i>a\n",
+ "varhandle",
+ "true\nfalse\n"
);
@Rule
diff --git a/src/test/java/com/android/tools/r8/TestCondition.java b/src/test/java/com/android/tools/r8/TestCondition.java
index 439b9e9..52d7f93 100644
--- a/src/test/java/com/android/tools/r8/TestCondition.java
+++ b/src/test/java/com/android/tools/r8/TestCondition.java
@@ -23,6 +23,7 @@
ART_V6_0_1,
ART_V7_0_0,
ART_V8_1_0,
+ ART_V9_0_0,
ART_DEFAULT,
JAVA;
@@ -43,6 +44,8 @@
return ART_V7_0_0;
case V8_1_0:
return ART_V8_1_0;
+ case V9_0_0:
+ return ART_V9_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 caeebd9..f73f198 100644
--- a/src/test/java/com/android/tools/r8/ToolHelper.java
+++ b/src/test/java/com/android/tools/r8/ToolHelper.java
@@ -126,6 +126,8 @@
ART_7_0_0_HOST(Version.V7_0_0, Kind.HOST),
ART_8_1_0_TARGET(Version.V8_1_0, Kind.TARGET),
ART_8_1_0_HOST(Version.V8_1_0, Kind.HOST),
+ ART_9_0_0_TARGET(Version.V9_0_0, Kind.TARGET),
+ ART_9_0_0_HOST(Version.V9_0_0, Kind.HOST),
ART_DEFAULT(Version.DEFAULT, Kind.HOST);
private static final ImmutableMap<String, DexVm> SHORT_NAME_MAP =
@@ -140,6 +142,7 @@
V6_0_1("6.0.1"),
V7_0_0("7.0.0"),
V8_1_0("8.1.0"),
+ V9_0_0("9.0.0"),
DEFAULT("default");
Version(String shortName) {
@@ -416,6 +419,7 @@
private static final Map<DexVm, String> ART_DIRS =
ImmutableMap.<DexVm, String>builder()
.put(DexVm.ART_DEFAULT, "art")
+ .put(DexVm.ART_9_0_0_HOST, "art-9.0.0")
.put(DexVm.ART_8_1_0_HOST, "art-8.1.0")
.put(DexVm.ART_7_0_0_HOST, "art-7.0.0")
.put(DexVm.ART_6_0_1_HOST, "art-6.0.1")
@@ -425,6 +429,7 @@
private static final Map<DexVm, String> ART_BINARY_VERSIONS =
ImmutableMap.<DexVm, String>builder()
.put(DexVm.ART_DEFAULT, "bin/art")
+ .put(DexVm.ART_9_0_0_HOST, "bin/art")
.put(DexVm.ART_8_1_0_HOST, "bin/art")
.put(DexVm.ART_7_0_0_HOST, "bin/art")
.put(DexVm.ART_6_0_1_HOST, "bin/art")
@@ -435,6 +440,7 @@
private static final Map<DexVm, String> ART_BINARY_VERSIONS_X64 =
ImmutableMap.of(
DexVm.ART_DEFAULT, "bin/art",
+ DexVm.ART_9_0_0_HOST, "bin/art",
DexVm.ART_8_1_0_HOST, "bin/art",
DexVm.ART_7_0_0_HOST, "bin/art",
DexVm.ART_6_0_1_HOST, "bin/art");
@@ -457,6 +463,7 @@
ImmutableMap.Builder<DexVm, List<String>> builder = ImmutableMap.builder();
builder
.put(DexVm.ART_DEFAULT, ART_BOOT_LIBS)
+ .put(DexVm.ART_9_0_0_HOST, ART_BOOT_LIBS)
.put(DexVm.ART_8_1_0_HOST, ART_BOOT_LIBS)
.put(DexVm.ART_7_0_0_HOST, ART_BOOT_LIBS)
.put(DexVm.ART_6_0_1_HOST, ART_BOOT_LIBS)
@@ -472,6 +479,7 @@
ImmutableMap.Builder<DexVm, String> builder = ImmutableMap.builder();
builder
.put(DexVm.ART_DEFAULT, "angler")
+ .put(DexVm.ART_9_0_0_HOST, "marlin")
.put(DexVm.ART_8_1_0_HOST, "marlin")
.put(DexVm.ART_7_0_0_HOST, "angler")
.put(DexVm.ART_6_0_1_HOST, "angler")
@@ -721,6 +729,8 @@
switch (dexVm.version) {
case DEFAULT:
return AndroidApiLevel.O;
+ case V9_0_0:
+ return AndroidApiLevel.P;
case V8_1_0:
return AndroidApiLevel.O;
case V7_0_0:
diff --git a/src/test/java/com/android/tools/r8/debug/DebugTestBase.java b/src/test/java/com/android/tools/r8/debug/DebugTestBase.java
index a7b2b223..e6a1fcd 100644
--- a/src/test/java/com/android/tools/r8/debug/DebugTestBase.java
+++ b/src/test/java/com/android/tools/r8/debug/DebugTestBase.java
@@ -1019,6 +1019,10 @@
artCommandBuilder.appendArtOption("-Xcompiler-option");
artCommandBuilder.appendArtOption("--debuggable");
}
+ if (ToolHelper.getDexVm().getVersion().isAtLeast(DexVm.Version.V9_0_0) &&
+ ToolHelper.getDexVm().getVersion() != DexVm.Version.DEFAULT) {
+ artCommandBuilder.appendArtOption("-XjdwpProvider:internal");
+ }
if (DEBUG_TESTS && ToolHelper.getDexVm().getVersion().isNewerThan(Version.V4_4_4)) {
artCommandBuilder.appendArtOption("-verbose:jdwp");
}
diff --git a/src/test/java/com/android/tools/r8/regress/b78493232/Regress78493232_WithPhi.java b/src/test/java/com/android/tools/r8/regress/b78493232/Regress78493232_WithPhi.java
index 6ee7392..4bd0776 100644
--- a/src/test/java/com/android/tools/r8/regress/b78493232/Regress78493232_WithPhi.java
+++ b/src/test/java/com/android/tools/r8/regress/b78493232/Regress78493232_WithPhi.java
@@ -52,6 +52,7 @@
case V4_4_4:
case V7_0_0:
case V8_1_0:
+ case V9_0_0:
case DEFAULT:
assertNotEquals(-1, d8Result.stderr.indexOf("java.lang.VerifyError"));
assertNotEquals(-1, r8Result.stderr.indexOf("java.lang.VerifyError"));
diff --git a/tools/linux/README.art-versions b/tools/linux/README.art-versions
index 1512a64..095872b 100644
--- a/tools/linux/README.art-versions
+++ b/tools/linux/README.art-versions
@@ -42,6 +42,29 @@
<continue with repo sync as above>
+art-9.0.0 (Android P)
+---------------------
+Build from branch android-9.0.0_r18.
+
+export BRANCH=android-9.0.0_r18
+mkdir ${BRANCH}
+cd ${BRANCH}
+repo init -u https://android.googlesource.com/platform/manifest -b ${BRANCH}
+repo sync -cq -j24
+source build/envsetup.sh
+lunch aosp_marlin-userdebug
+m -j24
+m -j24 build-art
+m -j24 test-art-host
+
+Collected into tools/linux/art-9.0.0.
+
+ cd <r8 checkout>
+ scripts/update-host-art.sh \
+ --android-checkout /usr/local/ssd/android/${BRANCH} \
+ --art-dir art-9.0.0 \
+ --android-product marlin
+
art-8.1.0 (Android O MR1)
-------------------------
Build from branch android-8.1.0_r51.
@@ -59,6 +82,7 @@
Collected into tools/linux/art-8.1.0.
+ cd <r8 checkout>
scripts/update-host-art.sh \
--android-checkout /usr/local/ssd/android/${BRANCH} \
--art-dir art-8.1.0 \
diff --git a/tools/linux/art-9.0.0.tar.gz.sha1 b/tools/linux/art-9.0.0.tar.gz.sha1
new file mode 100644
index 0000000..4ad0478
--- /dev/null
+++ b/tools/linux/art-9.0.0.tar.gz.sha1
@@ -0,0 +1 @@
+d31c3b892666eb87b90cd327c46c2a50b2a9d9de
\ No newline at end of file
diff --git a/tools/run-jdwp-tests.py b/tools/run-jdwp-tests.py
index db69197..2ef479d 100755
--- a/tools/run-jdwp-tests.py
+++ b/tools/run-jdwp-tests.py
@@ -15,6 +15,7 @@
VERSIONS = [
'default',
+ '9.0.0',
'8.1.0',
'7.0.0',
'6.0.1',
@@ -101,6 +102,8 @@
flags.extend(['-Ximage:%s' % IMAGE])
if version != '5.1.1':
flags.extend(['-Xcompiler-option', '--debuggable'])
+ if version == '9.0.0':
+ flags.extend(['-XjdwpProvider:internal'])
return flags
def get_debuggee_flags(version):
diff --git a/tools/test.py b/tools/test.py
index 9e287fb..e4433b3 100755
--- a/tools/test.py
+++ b/tools/test.py
@@ -15,7 +15,15 @@
import utils
import notify
-ALL_ART_VMS = ["default", "8.1.0", "7.0.0", "6.0.1", "5.1.1", "4.4.4", "4.0.4"]
+ALL_ART_VMS = [
+ "default",
+ "9.0.0",
+ "8.1.0",
+ "7.0.0",
+ "6.0.1",
+ "5.1.1",
+ "4.4.4",
+ "4.0.4"]
def ParseOptions():
result = optparse.OptionParser()