Refactor checks for filled-new-array support in tests
Change-Id: I38f302e5ffebccf4693cbb2817a8979da100d2a2
diff --git a/src/test/java/com/android/tools/r8/TestBase.java b/src/test/java/com/android/tools/r8/TestBase.java
index 9d47152..729f5e7 100644
--- a/src/test/java/com/android/tools/r8/TestBase.java
+++ b/src/test/java/com/android/tools/r8/TestBase.java
@@ -1787,6 +1787,20 @@
ToolHelper.getDexVersionForApiLevel(apiLevelWithJavaTime()));
}
+ public boolean canUseFilledNewArrayOfInteger(TestParameters parameters) {
+ return parameters.isDexRuntime();
+ }
+
+ public boolean canUseFilledNewArrayOfStringObjects(TestParameters parameters) {
+ return parameters.isDexRuntime()
+ && parameters.getApiLevel().isGreaterThanOrEqualTo(AndroidApiLevel.K);
+ }
+
+ public boolean canUseFilledNewArrayOfNonStringObjects(TestParameters parameters) {
+ return parameters.isDexRuntime()
+ && parameters.getApiLevel().isGreaterThanOrEqualTo(AndroidApiLevel.N);
+ }
+
// TODO(b/131130038): Do not allow accessmodification when kept.
public boolean isForceAccessModifyingPackagePrivateAndProtectedMethods() {
return true;
diff --git a/src/test/java/com/android/tools/r8/rewrite/arrays/ConstClassArrayTest.java b/src/test/java/com/android/tools/r8/rewrite/arrays/ConstClassArrayTest.java
index 180c412..4b6e64c 100644
--- a/src/test/java/com/android/tools/r8/rewrite/arrays/ConstClassArrayTest.java
+++ b/src/test/java/com/android/tools/r8/rewrite/arrays/ConstClassArrayTest.java
@@ -41,11 +41,6 @@
private static final String EXPECTED_OUTPUT =
StringUtils.lines("[A, B, C, D, E]", "[E, D, C, B, A]");
- public boolean canUseFilledNewArrayOfNonStringObjects(TestParameters parameters) {
- return parameters.isDexRuntime()
- && parameters.getApiLevel().isGreaterThanOrEqualTo(AndroidApiLevel.N);
- }
-
private enum State {
EXPECTING_CONSTCLASS,
EXPECTING_APUTOBJECT
diff --git a/src/test/java/com/android/tools/r8/rewrite/arrays/ConstClassArrayWithNonUniqueValuesTest.java b/src/test/java/com/android/tools/r8/rewrite/arrays/ConstClassArrayWithNonUniqueValuesTest.java
index 213e3e4..3a364dd 100644
--- a/src/test/java/com/android/tools/r8/rewrite/arrays/ConstClassArrayWithNonUniqueValuesTest.java
+++ b/src/test/java/com/android/tools/r8/rewrite/arrays/ConstClassArrayWithNonUniqueValuesTest.java
@@ -12,7 +12,6 @@
import com.android.tools.r8.TestCompilerBuilder;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.dex.Constants;
-import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import com.android.tools.r8.utils.codeinspector.InstructionSubject;
@@ -47,15 +46,10 @@
private static final String EXPECTED_OUTPUT = StringUtils.lines("100", "104");
- public boolean canUseFilledNewArrayOfClass(TestParameters parameters) {
- return parameters.isDexRuntime()
- && parameters.getApiLevel().isGreaterThanOrEqualTo(AndroidApiLevel.N);
- }
-
private void inspect(
MethodSubject method, int constClasses, int puts, boolean insideCatchHandler) {
boolean expectingFilledNewArray =
- canUseFilledNewArrayOfClass(parameters) && !insideCatchHandler;
+ canUseFilledNewArrayOfNonStringObjects(parameters) && !insideCatchHandler;
assertEquals(
expectingFilledNewArray ? 0 : puts,
method.streamInstructions().filter(InstructionSubject::isArrayPut).count());
diff --git a/src/test/java/com/android/tools/r8/rewrite/arrays/ConstClassArrayWithUniqueValuesTest.java b/src/test/java/com/android/tools/r8/rewrite/arrays/ConstClassArrayWithUniqueValuesTest.java
index d8227dc..c7f847b 100644
--- a/src/test/java/com/android/tools/r8/rewrite/arrays/ConstClassArrayWithUniqueValuesTest.java
+++ b/src/test/java/com/android/tools/r8/rewrite/arrays/ConstClassArrayWithUniqueValuesTest.java
@@ -11,7 +11,6 @@
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.dex.Constants;
-import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import com.android.tools.r8.utils.codeinspector.InstructionSubject;
@@ -48,11 +47,6 @@
private static final String EXPECTED_OUTPUT =
StringUtils.lines("[A00, A01, A02, A03, A04]", "[A00, A01, A02, A03, A04]", "100");
- public boolean canUseFilledNewArrayOfClass(TestParameters parameters) {
- return parameters.isDexRuntime()
- && parameters.getApiLevel().isGreaterThanOrEqualTo(AndroidApiLevel.N);
- }
-
private enum State {
EXPECTING_CONSTCLASS,
EXPECTING_APUTOBJECT
@@ -60,7 +54,7 @@
private void inspect(MethodSubject method, int puts, boolean insideCatchHandler) {
boolean expectingFilledNewArray =
- canUseFilledNewArrayOfClass(parameters) && !insideCatchHandler;
+ canUseFilledNewArrayOfNonStringObjects(parameters) && !insideCatchHandler;
assertEquals(
expectingFilledNewArray ? 0 : puts,
method.streamInstructions().filter(InstructionSubject::isArrayPut).count());
diff --git a/src/test/java/com/android/tools/r8/rewrite/arrays/IntegerArrayTest.java b/src/test/java/com/android/tools/r8/rewrite/arrays/IntegerArrayTest.java
index 54abbcd..1c159da 100644
--- a/src/test/java/com/android/tools/r8/rewrite/arrays/IntegerArrayTest.java
+++ b/src/test/java/com/android/tools/r8/rewrite/arrays/IntegerArrayTest.java
@@ -41,10 +41,6 @@
StringUtils.lines(
"[-2147483648, -1, 0, 1, 2147483647]", "[-2147483647, -2, 0, 2, 2147483646]");
- public boolean canUseFilledNewArrayOfInteger(TestParameters parameters) {
- return parameters.isDexRuntime();
- }
-
private void inspect(MethodSubject main) {
assertEquals(
canUseFilledNewArrayOfInteger(parameters) ? 0 : 5,
diff --git a/src/test/java/com/android/tools/r8/rewrite/arrays/SimplifyArrayConstructionTest.java b/src/test/java/com/android/tools/r8/rewrite/arrays/SimplifyArrayConstructionTest.java
index 3f75ac1..c80436c 100644
--- a/src/test/java/com/android/tools/r8/rewrite/arrays/SimplifyArrayConstructionTest.java
+++ b/src/test/java/com/android/tools/r8/rewrite/arrays/SimplifyArrayConstructionTest.java
@@ -212,14 +212,12 @@
assertArrayTypes(reversedArray, DexFilledNewArray.class);
}
- // Cannot use filled-new-array of String before K.
- if (parameters.getApiLevel().isLessThan(AndroidApiLevel.K)) {
+ if (!canUseFilledNewArrayOfStringObjects(parameters)) {
assertArrayTypes(stringArrays, DexNewArray.class);
} else {
assertArrayTypes(stringArrays, DexFilledNewArray.class);
}
- // Cannot use filled-new-array of Object before L.
- if (parameters.getApiLevel().isLessThan(AndroidApiLevel.N)) {
+ if (!canUseFilledNewArrayOfNonStringObjects(parameters)) {
assertArrayTypes(referenceArraysNoCasts, DexNewArray.class);
assertArrayTypes(referenceArraysWithSubclasses, DexNewArray.class);
assertArrayTypes(referenceArraysWithInterfaceImplementations, DexNewArray.class);
diff --git a/src/test/java/com/android/tools/r8/rewrite/arrays/StaticGetArrayWithNonUniqueValuesTest.java b/src/test/java/com/android/tools/r8/rewrite/arrays/StaticGetArrayWithNonUniqueValuesTest.java
index 8623e55..be54d34 100644
--- a/src/test/java/com/android/tools/r8/rewrite/arrays/StaticGetArrayWithNonUniqueValuesTest.java
+++ b/src/test/java/com/android/tools/r8/rewrite/arrays/StaticGetArrayWithNonUniqueValuesTest.java
@@ -12,7 +12,6 @@
import com.android.tools.r8.TestCompilerBuilder;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.dex.Constants;
-import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import com.android.tools.r8.utils.codeinspector.InstructionSubject;
@@ -47,14 +46,9 @@
private static final String EXPECTED_OUTPUT = StringUtils.lines("100", "50");
- public boolean canUseFilledNewArrayOfObject(TestParameters parameters) {
- return parameters.isDexRuntime()
- && parameters.getApiLevel().isGreaterThanOrEqualTo(AndroidApiLevel.N);
- }
-
private void inspect(MethodSubject method, int staticGets, int puts, boolean insideCatchHandler) {
boolean expectingFilledNewArray =
- canUseFilledNewArrayOfObject(parameters) && !insideCatchHandler;
+ canUseFilledNewArrayOfNonStringObjects(parameters) && !insideCatchHandler;
assertEquals(
expectingFilledNewArray ? 0 : puts,
method.streamInstructions().filter(InstructionSubject::isArrayPut).count());
@@ -74,12 +68,14 @@
private void inspectD8(CodeInspector inspector) {
inspect(
inspector.clazz(TestClass.class).uniqueMethodWithOriginalName("m1"),
- canUseFilledNewArrayOfObject(parameters) ? 100 : 1,
+ canUseFilledNewArrayOfNonStringObjects(parameters) ? 100 : 1,
100,
false);
inspect(
inspector.clazz(TestClass.class).uniqueMethodWithOriginalName("m2"),
- canUseFilledNewArrayOfObject(parameters) ? 50 : (maxMaterializingConstants == 2 ? 42 : 10),
+ canUseFilledNewArrayOfNonStringObjects(parameters)
+ ? 50
+ : (maxMaterializingConstants == 2 ? 42 : 10),
50,
false);
}
diff --git a/src/test/java/com/android/tools/r8/rewrite/arrays/StaticGetArrayWithUniqueValuesTest.java b/src/test/java/com/android/tools/r8/rewrite/arrays/StaticGetArrayWithUniqueValuesTest.java
index b5fe270..fce1e79 100644
--- a/src/test/java/com/android/tools/r8/rewrite/arrays/StaticGetArrayWithUniqueValuesTest.java
+++ b/src/test/java/com/android/tools/r8/rewrite/arrays/StaticGetArrayWithUniqueValuesTest.java
@@ -11,7 +11,6 @@
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.dex.Constants;
-import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import com.android.tools.r8.utils.codeinspector.InstructionSubject;
@@ -48,11 +47,6 @@
private static final String EXPECTED_OUTPUT =
StringUtils.lines("[A00, A01, A02, A03, A04]", "[A00, A01, A02, A03, A04]", "100");
- public boolean canUseFilledNewArrayOfObject(TestParameters parameters) {
- return parameters.isDexRuntime()
- && parameters.getApiLevel().isGreaterThanOrEqualTo(AndroidApiLevel.N);
- }
-
private enum State {
EXPECTING_GETSTATIC,
EXPECTING_APUTOBJECT
@@ -60,7 +54,7 @@
private void inspect(MethodSubject method, int puts, boolean insideCatchHandler) {
boolean expectingFilledNewArray =
- canUseFilledNewArrayOfObject(parameters) && !insideCatchHandler;
+ canUseFilledNewArrayOfNonStringObjects(parameters) && !insideCatchHandler;
assertEquals(
expectingFilledNewArray ? 0 : puts,
method.streamInstructions().filter(InstructionSubject::isArrayPut).count());
diff --git a/src/test/java/com/android/tools/r8/rewrite/arrays/StringArrayWithNonUniqueValuesTest.java b/src/test/java/com/android/tools/r8/rewrite/arrays/StringArrayWithNonUniqueValuesTest.java
index 9100e39..c433e6d 100644
--- a/src/test/java/com/android/tools/r8/rewrite/arrays/StringArrayWithNonUniqueValuesTest.java
+++ b/src/test/java/com/android/tools/r8/rewrite/arrays/StringArrayWithNonUniqueValuesTest.java
@@ -12,7 +12,6 @@
import com.android.tools.r8.TestCompilerBuilder;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.dex.Constants;
-import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import com.android.tools.r8.utils.codeinspector.InstructionSubject;
@@ -47,15 +46,10 @@
private static final String EXPECTED_OUTPUT = StringUtils.lines("100", "104");
- public boolean canUseFilledNewArrayOfStrings(TestParameters parameters) {
- return parameters.isDexRuntime()
- && parameters.getApiLevel().isGreaterThanOrEqualTo(AndroidApiLevel.K);
- }
-
private void inspect(
MethodSubject method, int constStrings, int puts, boolean insideCatchHandler) {
boolean expectingFilledNewArray =
- canUseFilledNewArrayOfStrings(parameters) && !insideCatchHandler;
+ canUseFilledNewArrayOfStringObjects(parameters) && !insideCatchHandler;
assertEquals(
expectingFilledNewArray ? 0 : puts,
method.streamInstructions().filter(InstructionSubject::isArrayPut).count());
diff --git a/src/test/java/com/android/tools/r8/rewrite/arrays/StringArrayWithUniqueValuesTest.java b/src/test/java/com/android/tools/r8/rewrite/arrays/StringArrayWithUniqueValuesTest.java
index 2613ca5..837bea2 100644
--- a/src/test/java/com/android/tools/r8/rewrite/arrays/StringArrayWithUniqueValuesTest.java
+++ b/src/test/java/com/android/tools/r8/rewrite/arrays/StringArrayWithUniqueValuesTest.java
@@ -11,7 +11,6 @@
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.dex.Constants;
-import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import com.android.tools.r8.utils.codeinspector.InstructionSubject;
@@ -48,11 +47,6 @@
private static final String EXPECTED_OUTPUT =
StringUtils.lines("[A, B, C, D, E]", "[F, G, H, I, J]", "100");
- public boolean canUseFilledNewArrayOfStrings(TestParameters parameters) {
- return parameters.isDexRuntime()
- && parameters.getApiLevel().isGreaterThanOrEqualTo(AndroidApiLevel.K);
- }
-
private enum State {
EXPECTING_CONSTSTRING,
EXPECTING_APUTOBJECT
@@ -60,7 +54,7 @@
private void inspect(MethodSubject method, int puts, boolean insideCatchHandler) {
boolean expectingFilledNewArray =
- canUseFilledNewArrayOfStrings(parameters) && !insideCatchHandler;
+ canUseFilledNewArrayOfStringObjects(parameters) && !insideCatchHandler;
assertEquals(
expectingFilledNewArray ? 0 : puts,
method.streamInstructions().filter(InstructionSubject::isArrayPut).count());