Fix art, jctf, and run_on_app.py failures after new missing classes
Bug: 169531713
Bug: 179124746
Change-Id: I4657baa0b263c7af6755b40f34a2830455528363
diff --git a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
index ad3cbb8..0d7fe26 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -4217,7 +4217,7 @@
continue;
}
- DexProgramClass clazz = getProgramClassOrNull(type, method);
+ DexProgramClass clazz = getProgramClassOrNullFromReflectiveAccess(type, method);
if (clazz != null && clazz.isInterface()) {
// Add this interface to the set of pinned items to ensure that we do not merge the
// interface into its unique subtype, if any.
diff --git a/src/test/java/com/android/tools/r8/JctfTestSpecifications.java b/src/test/java/com/android/tools/r8/JctfTestSpecifications.java
index 899093a..2d21521 100644
--- a/src/test/java/com/android/tools/r8/JctfTestSpecifications.java
+++ b/src/test/java/com/android/tools/r8/JctfTestSpecifications.java
@@ -1831,6 +1831,28 @@
.put("lang.ref.WeakReference.get.WeakReference_get_A01", cf())
.build(); // end of flakyWhenRun
+ public static final Set<String> hasMissingClasses =
+ ImmutableSet.of(
+ "lang.RuntimePermission.Class.RuntimePermission_class_A01",
+ "lang.RuntimePermission.Class.RuntimePermission_class_A03",
+ "lang.RuntimePermission.Class.RuntimePermission_class_A04",
+ "lang.RuntimePermission.Class.RuntimePermission_class_A05",
+ "lang.RuntimePermission.Class.RuntimePermission_class_A06",
+ "lang.RuntimePermission.Class.RuntimePermission_class_A07",
+ "lang.RuntimePermission.Class.RuntimePermission_class_A08",
+ "lang.RuntimePermission.Class.RuntimePermission_class_A09",
+ "lang.RuntimePermission.Class.RuntimePermission_class_A11",
+ "lang.RuntimePermission.Class.RuntimePermission_class_A12",
+ "lang.RuntimePermission.Class.RuntimePermission_class_A14",
+ "lang.RuntimePermission.Class.RuntimePermission_class_A15",
+ "lang.RuntimePermission.Class.RuntimePermission_class_A19",
+ "lang.RuntimePermission.Class.RuntimePermission_class_A20",
+ "lang.RuntimePermission.Class.RuntimePermission_class_A21",
+ "lang.RuntimePermission.Class.RuntimePermission_class_A22",
+ "lang.RuntimePermission.Class.RuntimePermission_class_A24",
+ "lang.RuntimePermission.Class.RuntimePermission_class_A25",
+ "lang.reflect.Proxy.serialization.Proxy_serialization_A02");
+
public static final Multimap<String, TestCondition> timeoutsWhenRun =
new ImmutableListMultimap.Builder<String, TestCondition>()
.put("lang.Thread.interrupt.Thread_interrupt_A01", anyDexVm())
@@ -1956,7 +1978,7 @@
public static final Set<String> compilationFailsWithAsmMethodTooLarge = ImmutableSet.of();
- private static final boolean testMatch(
+ private static boolean testMatch(
Multimap<String, TestCondition> testConditions,
String name,
CompilerUnderTest compilerUnderTest,
@@ -1971,7 +1993,7 @@
return false;
}
- public static final <T> T getExpectedOutcome(
+ public static <T> T getExpectedOutcome(
String name,
CompilerUnderTest compilerUnderTest,
Runtime runtime,
diff --git a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
index bef2c94..4b095bb 100644
--- a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
@@ -1207,6 +1207,7 @@
"111-unresolvable-exception",
"124-missing-classes",
"127-checker-secondarydex",
+ "138-duplicate-classes-check2",
"140-field-packing",
"143-string-value",
"151-OpenFileLimit",
@@ -1372,6 +1373,7 @@
boolean skipRun,
boolean failsOnRun,
boolean disableInlining,
+ boolean hasMissingClasses,
DexVm dexVm) {
this(
name,
@@ -1388,7 +1390,7 @@
false,
disableInlining,
true, // Disable class inlining for JCTF tests.
- false,
+ hasMissingClasses,
true, // Disable desugaring for JCTF tests.
ImmutableList.of(),
null);
@@ -1400,7 +1402,8 @@
File directory,
boolean skipRun,
boolean failsOnRun,
- boolean disableInlining) {
+ boolean disableInlining,
+ boolean hasMissingClasses) {
this(
name,
dexTool,
@@ -1416,7 +1419,7 @@
false,
disableInlining,
true, // Disable class inlining for JCTF tests.
- false,
+ hasMissingClasses,
true, // Disable desugaring for JCTF tests.
ImmutableList.of(),
null);
@@ -1937,6 +1940,7 @@
|| outcome == JctfTestSpecifications.Outcome.FLAKY_WHEN_RUN,
outcome == JctfTestSpecifications.Outcome.FAILS_WHEN_RUN,
noInlining,
+ JctfTestSpecifications.hasMissingClasses.contains(name),
dexVm);
}
@@ -1950,7 +1954,8 @@
outcome == JctfTestSpecifications.Outcome.TIMEOUTS_WHEN_RUN
|| outcome == JctfTestSpecifications.Outcome.FLAKY_WHEN_RUN,
outcome == JctfTestSpecifications.Outcome.FAILS_WHEN_RUN,
- noInlining);
+ noInlining,
+ JctfTestSpecifications.hasMissingClasses.contains(name));
}
private static Runtime getRuntime(TestRuntime vm) {
diff --git a/third_party/gmscore/ignorewarnings.rules b/third_party/gmscore/ignorewarnings.rules
new file mode 100644
index 0000000..f7766e0
--- /dev/null
+++ b/third_party/gmscore/ignorewarnings.rules
@@ -0,0 +1 @@
+-ignorewarnings
diff --git a/tools/gmscore_data.py b/tools/gmscore_data.py
index 44971c1..23a78e1 100644
--- a/tools/gmscore_data.py
+++ b/tools/gmscore_data.py
@@ -77,7 +77,8 @@
'pgmap': '%s_proguard.map' % V9_PREFIX,
},
'deploy' : {
- 'pgconf': ['%s_proguard.config' % V9_PREFIX],
+ 'pgconf': ['%s_proguard.config' % V9_PREFIX,
+ os.path.join(BASE, 'ignorewarnings.rules')],
'inputs': ['%s_deploy.jar' % V9_PREFIX],
'min-api' : ANDROID_L_API,
},