Merge "Increase stack space for javac processes."
diff --git a/src/main/java/com/android/tools/r8/graph/DexItemFactory.java b/src/main/java/com/android/tools/r8/graph/DexItemFactory.java
index 403790c..b02222f 100644
--- a/src/main/java/com/android/tools/r8/graph/DexItemFactory.java
+++ b/src/main/java/com/android/tools/r8/graph/DexItemFactory.java
@@ -192,6 +192,7 @@
public final DexType stringArrayType = createType(stringArrayDescriptor);
public final DexType objectType = createType(objectDescriptor);
public final DexType objectArrayType = createType(objectArrayDescriptor);
+ public final DexType classArrayType = createType(classArrayDescriptor);
public final DexType enumType = createType(enumDescriptor);
public final DexType annotationType = createType(annotationDescriptor);
public final DexType throwableType = createType(throwableDescriptor);
@@ -214,6 +215,8 @@
public final LongMethods longMethods = new LongMethods();
public final ThrowableMethods throwableMethods = new ThrowableMethods();
public final ClassMethods classMethods = new ClassMethods();
+ public final PrimitiveTypesBoxedTypeFields primitiveTypesBoxedTypeFields =
+ new PrimitiveTypesBoxedTypeFields();
public final AtomicFieldUpdaterMethods atomicFieldUpdaterMethods =
new AtomicFieldUpdaterMethods();
public final Kotlin kotlin;
@@ -403,8 +406,54 @@
}
/**
+ * All boxed types (Boolean, Byte, ...) have a field named TYPE which contains the Class object
+ * for the primitive type.
+ *
+ * E.g. for Boolean https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html#TYPE.
+ */
+ public class PrimitiveTypesBoxedTypeFields {
+ public DexField booleanTYPE;
+ public DexField byteTYPE;
+ public DexField charTYPE;
+ public DexField shortTYPE;
+ public DexField intTYPE;
+ public DexField longTYPE;
+ public DexField floatTYPE;
+ public DexField doubleTYPE;
+
+ private final Map<DexField, DexType> boxedFieldTypeToPrimitiveType;
+
+ private PrimitiveTypesBoxedTypeFields() {
+ booleanTYPE = createField(boxedBooleanType, classType, "TYPE");
+ byteTYPE = createField(boxedByteType, classType, "TYPE");
+ charTYPE = createField(boxedCharType, classType, "TYPE");
+ shortTYPE = createField(boxedShortType, classType, "TYPE");
+ intTYPE = createField(boxedIntType, classType, "TYPE");
+ longTYPE = createField(boxedLongType, classType, "TYPE");
+ floatTYPE = createField(boxedFloatType, classType, "TYPE");
+ doubleTYPE = createField(boxedDoubleType, classType, "TYPE");
+
+ boxedFieldTypeToPrimitiveType =
+ ImmutableMap.<DexField, DexType>builder()
+ .put(booleanTYPE, booleanType)
+ .put(byteTYPE, byteType)
+ .put(charTYPE, charType)
+ .put(shortTYPE, shortType)
+ .put(intTYPE, intType)
+ .put(longTYPE, longType)
+ .put(floatTYPE, floatType)
+ .put(doubleTYPE, doubleType)
+ .build();
+ }
+
+ public DexType boxedFieldTypeToPrimitiveType(DexField field) {
+ return boxedFieldTypeToPrimitiveType.get(field);
+ }
+ }
+
+ /**
* A class that encompasses methods that create different types of atomic field updaters:
- * Atomic(Integer|Long|Reference)FieldUpdater#newUpdater.
+ * Atomic(Integer|Long|Reference)FieldUpdater#newUpdater.
*/
public class AtomicFieldUpdaterMethods {
public DexMethod intUpdater;
diff --git a/src/main/java/com/android/tools/r8/graph/JarCode.java b/src/main/java/com/android/tools/r8/graph/JarCode.java
index 0a1ee94..b978408 100644
--- a/src/main/java/com/android/tools/r8/graph/JarCode.java
+++ b/src/main/java/com/android/tools/r8/graph/JarCode.java
@@ -163,7 +163,7 @@
InternalOptions options,
ValueNumberGenerator generator,
Position callerPosition) {
- if (!options.debug) {
+ if (!options.debug || options.testing.removeLocalsTable) {
node.localVariables.clear();
}
JarSourceCode source =
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/LambdaMainMethodSourceCode.java b/src/main/java/com/android/tools/r8/ir/desugar/LambdaMainMethodSourceCode.java
index d719d8f..9d815ce 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/LambdaMainMethodSourceCode.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/LambdaMainMethodSourceCode.java
@@ -120,6 +120,11 @@
return b == factory.objectType || b.isArrayType();
}
+ if (b.isArrayType()) {
+ // If A is typed object it can be convertible to an array type.
+ return a == factory.objectType;
+ }
+
if (a.isPrimitiveType()) {
if (b.isPrimitiveType()) {
return isSameOrAdaptableTo(a.descriptor.content[0], b.descriptor.content[0]);
@@ -357,7 +362,8 @@
return register;
}
- if (fromType.isClassType() && toType.isClassType()) {
+ if ((fromType.isClassType() && toType.isClassType())
+ || (fromType == factory().objectType && toType.isArrayType())) {
if (returnType) {
// For return type adjustment in case `fromType` and `toType` are both reference types,
// `fromType` does NOT have to be deriving from `toType` and we need to add a cast.
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java b/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
index d220d28..d11946c 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
@@ -2184,6 +2184,9 @@
storesToRemoveForArray.put(array, --toRemoveCount);
Instruction construction = instructionToInsertForArray.get(array);
if (construction != null) {
+ // Update the position of the array construction to be the position of the
+ // last removed put at which point we are now adding the construction.
+ construction.forceSetPosition(instruction.getPosition());
it.add(construction);
}
}
diff --git a/src/main/java/com/android/tools/r8/naming/IdentifierNameStringUtils.java b/src/main/java/com/android/tools/r8/naming/IdentifierNameStringUtils.java
index 5128b96..3d1539e 100644
--- a/src/main/java/com/android/tools/r8/naming/IdentifierNameStringUtils.java
+++ b/src/main/java/com/android/tools/r8/naming/IdentifierNameStringUtils.java
@@ -18,13 +18,15 @@
import com.android.tools.r8.graph.DexTypeList;
import com.android.tools.r8.ir.code.ArrayPut;
import com.android.tools.r8.ir.code.BasicBlock;
-import com.android.tools.r8.ir.code.ConstInstruction;
+import com.android.tools.r8.ir.code.CheckCast;
import com.android.tools.r8.ir.code.ConstString;
import com.android.tools.r8.ir.code.Instruction;
import com.android.tools.r8.ir.code.InstructionListIterator;
import com.android.tools.r8.ir.code.InvokeMethod;
import com.android.tools.r8.ir.code.NewArrayEmpty;
import com.android.tools.r8.ir.code.Value;
+import com.google.common.collect.Sets;
+import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@@ -187,7 +189,11 @@
itemBasedString = inferFieldInHolder(appInfo, holder, dexString.toString(), null);
} else {
assert numOfParams == 3;
- DexTypeList arguments = retrieveDexTypeListFromClassList(invoke, ins.get(2));
+ DexTypeList arguments =
+ retrieveDexTypeListFromClassList(invoke, ins.get(2), appInfo.dexItemFactory);
+ if (arguments == null) {
+ return null;
+ }
itemBasedString = inferMethodInHolder(appInfo, holder, dexString.toString(), arguments);
}
return itemBasedString;
@@ -246,7 +252,7 @@
DexItemBasedString itemBasedString =
inferFieldInHolder(appInfo, holder, memberIdentifier, null);
if (itemBasedString == null) {
- itemBasedString = inferMethodInHolder(appInfo, holder, memberIdentifier, null);
+ itemBasedString = inferMethodNameInHolder(appInfo, holder, memberIdentifier);
}
return itemBasedString;
}
@@ -273,20 +279,18 @@
return itemBasedString;
}
- private static DexItemBasedString inferMethodInHolder(
- AppInfo appInfo, DexClass holder, String name, DexTypeList arguments) {
+ private static DexItemBasedString inferMethodNameInHolder(
+ AppInfo appInfo, DexClass holder, String name) {
DexItemBasedString itemBasedString = null;
for (DexEncodedMethod encodedMethod : holder.directMethods()) {
- if (encodedMethod.method.name.toString().equals(name)
- && (arguments == null || encodedMethod.method.proto.parameters.equals(arguments))) {
+ if (encodedMethod.method.name.toString().equals(name)) {
itemBasedString = appInfo.dexItemFactory.createItemBasedString(encodedMethod.method);
break;
}
}
if (itemBasedString == null) {
for (DexEncodedMethod encodedMethod : holder.virtualMethods()) {
- if (encodedMethod.method.name.toString().equals(name)
- && (arguments == null || encodedMethod.method.proto.parameters.equals(arguments))) {
+ if (encodedMethod.method.name.toString().equals(name)) {
itemBasedString = appInfo.dexItemFactory.createItemBasedString(encodedMethod.method);
break;
}
@@ -295,13 +299,59 @@
return itemBasedString;
}
- // Perform a conservative evaluation of the constant content of an array from its construction
+ private static DexItemBasedString inferMethodInHolder(
+ AppInfo appInfo, DexClass holder, String name, DexTypeList arguments) {
+ assert arguments != null;
+ DexItemBasedString itemBasedString = null;
+ for (DexEncodedMethod encodedMethod : holder.directMethods()) {
+ if (encodedMethod.method.name.toString().equals(name)
+ && encodedMethod.method.proto.parameters.equals(arguments)) {
+ itemBasedString = appInfo.dexItemFactory.createItemBasedString(encodedMethod.method);
+ break;
+ }
+ }
+ if (itemBasedString == null) {
+ for (DexEncodedMethod encodedMethod : holder.virtualMethods()) {
+ if (encodedMethod.method.name.toString().equals(name)
+ && encodedMethod.method.proto.parameters.equals(arguments)) {
+ itemBasedString = appInfo.dexItemFactory.createItemBasedString(encodedMethod.method);
+ break;
+ }
+ }
+ }
+ return itemBasedString;
+ }
+
+ private static DexType getTypeFromConstClassOrBoxedPrimitive(
+ Value value, DexItemFactory factory) {
+ if (value.isPhi()) {
+ return null;
+ }
+ if (value.isConstant() && value.getConstInstruction().isConstClass()) {
+ return value.getConstInstruction().asConstClass().getValue();
+ }
+ if (value.definition.isStaticGet()) {
+ return factory.primitiveTypesBoxedTypeFields.boxedFieldTypeToPrimitiveType(
+ value.definition.asStaticGet().getField());
+ }
+ return null;
+ }
+
+ // Perform a conservative evaluation of an array content of dex type values from its construction
// until its use at a given instruction.
- private static ConstInstruction[] evaluateConstArrayContentFromConstructionToUse(
- NewArrayEmpty newArray, int size, Instruction user) {
- ConstInstruction[] values = new ConstInstruction[size];
+ private static DexType[] evaluateTypeArrayContentFromConstructionToUse(
+ NewArrayEmpty newArray,
+ List<CheckCast> aliases,
+ int size,
+ Instruction user,
+ DexItemFactory factory) {
+ DexType[] values = new DexType[size];
int remaining = size;
- Set<Instruction> users = newArray.outValue().uniqueUsers();
+ Set<Instruction> users = Sets.newIdentityHashSet();
+ users.addAll(newArray.outValue().uniqueUsers());
+ for (CheckCast alias : aliases) {
+ users.addAll(alias.outValue().uniqueUsers());
+ }
// Follow the path from the array construction to the requested use collecting the constants
// put into the array. Conservatively bail out if the content of the array cannot be statically
// computed.
@@ -320,25 +370,33 @@
// the content was requested.
return remaining == 0 ? values : null;
}
- // Any other kinds of use besides array-put mean that the array escapes and could be
- // altered.
+ // Any other kinds of use besides array-put mean that the array escapes and its content
+ // could be altered.
if (!instruction.isArrayPut()) {
- return null;
+ if (instruction.isCheckCast() && aliases.contains(instruction.asCheckCast())) {
+ continue;
+ }
+ values = new DexType[size];
+ remaining = size;
+ continue;
}
ArrayPut arrayPut = instruction.asArrayPut();
- if (!(arrayPut.value().isConstant() && arrayPut.index().isConstNumber())) {
+ if (!arrayPut.index().isConstNumber()) {
return null;
}
int index = arrayPut.index().getConstInstruction().asConstNumber().getIntValue();
if (index < 0 || index >= values.length) {
return null;
}
+ DexType type = getTypeFromConstClassOrBoxedPrimitive(arrayPut.value(), factory);
+ if (type == null) {
+ return null;
+ }
// Allow several writes to the same array element.
if (values[index] == null) {
remaining--;
}
- ConstInstruction value = arrayPut.value().getConstInstruction();
- values[index] = value;
+ values[index] = type;
}
if (!block.exit().isGoto()) {
return null;
@@ -364,7 +422,7 @@
* @return a list of {@link DexType} that corresponds to const class in {@param classListValue}
*/
private static DexTypeList retrieveDexTypeListFromClassList(
- InvokeMethod invoke, Value classListValue) {
+ InvokeMethod invoke, Value classListValue, DexItemFactory factory) {
// The code
// A.class.getMethod("m", String.class, String.class)
@@ -385,8 +443,31 @@
// INVOKEVIRTUAL java/lang/Class.getMethod \
// (Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
+ // Besides the code pattern above this supports a series of check-cast instructions. e.g.:
+ //
+ // A.class.getMethod("name", (Class<?>[]) new Class<?>[]{String.class})
+
+ List<CheckCast> aliases = new ArrayList<>();
+ if (!classListValue.isPhi()
+ && classListValue.definition.isCheckCast()
+ && classListValue.definition.asCheckCast().getType() == factory.classArrayType) {
+ while (!classListValue.isPhi() && classListValue.definition.isCheckCast()) {
+ aliases.add(classListValue.definition.asCheckCast());
+ classListValue = classListValue.definition.asCheckCast().object();
+ }
+ }
+ if (classListValue.isPhi()) {
+ return null;
+ }
+
+ // A null argument list is an empty argument list
+ if (classListValue.isZero()) {
+ return DexTypeList.empty();
+ }
+
// Make sure this Value refers to a new array.
- if (!classListValue.definition.isNewArrayEmpty()) {
+ if (!classListValue.definition.isNewArrayEmpty()
+ || !classListValue.definition.asNewArrayEmpty().size().isConstant()) {
return null;
}
@@ -402,20 +483,13 @@
return DexTypeList.empty();
}
- ConstInstruction[] arrayContent =
- evaluateConstArrayContentFromConstructionToUse(
- classListValue.definition.asNewArrayEmpty(), size, invoke);
+ DexType[] arrayContent =
+ evaluateTypeArrayContentFromConstructionToUse(
+ classListValue.definition.asNewArrayEmpty(), aliases, size, invoke, factory);
if (arrayContent == null) {
return null;
}
- DexType[] types = new DexType[size];
- for (int i = 0; i < size; i++) {
- if (!arrayContent[i].isConstClass()) {
- return null;
- }
- types[i] = arrayContent[i].asConstClass().getValue();
- }
- return new DexTypeList(types);
+ return new DexTypeList(arrayContent);
}
}
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index 5975442..c7d6561 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -462,6 +462,7 @@
public boolean nondeterministicCycleElimination = false;
public Set<Inliner.Reason> validInliningReasons = null;
public boolean suppressExperimentalCfBackendWarning = false;
+ public boolean removeLocalsTable = false;
}
public boolean canUseInvokePolymorphicOnVarHandle() {
diff --git a/src/test/examplesAndroidO/lambdadesugaring/ValueAdjustments.java b/src/test/examplesAndroidO/lambdadesugaring/ValueAdjustments.java
index 1d6772a..c533684 100644
--- a/src/test/examplesAndroidO/lambdadesugaring/ValueAdjustments.java
+++ b/src/test/examplesAndroidO/lambdadesugaring/ValueAdjustments.java
@@ -462,6 +462,42 @@
builder.append(a.greet()).append('\n');
}
+ // Make the test independent of libraries by not using java.util.function.Function.
+ interface MyFunction<T, R> {
+ R apply(T var1);
+ }
+
+ static class Observable<T> {
+ }
+
+ static class Handler<T> {
+ T elements;
+
+ Handler(T e) {
+ elements = e;
+ }
+
+ public T handleErrors(T result) {
+ System.out.println(result.getClass().getName());
+ return null;
+ }
+
+ public final Observable<T> map(MyFunction<? super T, ? extends T> mapper) {
+ System.out.println("Handler.map");
+ mapper.apply(elements);
+ return null;
+ }
+ }
+
+
+ static class B116542124 {
+ private Handler<String[]> approvalManagersHandler = new Handler<>(new String[] { "asdf" });
+
+ public void test() {
+ approvalManagersHandler.map(approvalManagersHandler::handleErrors);
+ }
+ }
+
public static void main(String[] args) {
StringBuffer builder = new StringBuffer();
@@ -482,7 +518,7 @@
checkMisc(builder);
bB70348575(builder);
-
+ new B116542124().test();
System.out.println(builder.toString());
}
}
diff --git a/src/test/java/com/android/tools/r8/JctfTestSpecifications.java b/src/test/java/com/android/tools/r8/JctfTestSpecifications.java
index 7e3be90..f734ab8 100644
--- a/src/test/java/com/android/tools/r8/JctfTestSpecifications.java
+++ b/src/test/java/com/android/tools/r8/JctfTestSpecifications.java
@@ -7,104 +7,98 @@
import static com.android.tools.r8.TestCondition.R8_COMPILER;
import static com.android.tools.r8.TestCondition.and;
import static com.android.tools.r8.TestCondition.any;
-import static com.android.tools.r8.TestCondition.anyDexVm;
-import static com.android.tools.r8.TestCondition.artRuntimesFromAndJava;
-import static com.android.tools.r8.TestCondition.artRuntimesUpToAndJava;
import static com.android.tools.r8.TestCondition.match;
import static com.android.tools.r8.TestCondition.runtimes;
+import static com.android.tools.r8.TestCondition.runtimesFrom;
+import static com.android.tools.r8.TestCondition.runtimesUpTo;
import com.android.tools.r8.R8RunArtTestsTest.CompilerUnderTest;
import com.android.tools.r8.R8RunArtTestsTest.DexTool;
-import com.android.tools.r8.TestCondition.Runtime;
+import com.android.tools.r8.ToolHelper.DexVm;
+import com.android.tools.r8.ToolHelper.DexVm.Version;
import com.google.common.collect.ImmutableListMultimap;
-import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Multimap;
import java.util.Collection;
-import java.util.Set;
import java.util.function.BiFunction;
public class JctfTestSpecifications {
public enum Outcome {
PASSES,
- FAILS_WHEN_RUN,
- TIMEOUTS_WHEN_RUN,
- FLAKY_WHEN_RUN
+ FAILS_WITH_ART,
+ TIMEOUTS_WITH_ART,
+ FLAKY_WITH_ART
}
public static final Multimap<String, TestCondition> failuresToTriage =
new ImmutableListMultimap.Builder<String, TestCondition>()
- .put("math.BigInteger.nextProbablePrime.BigInteger_nextProbablePrime_A02", anyDexVm())
+ .put("math.BigInteger.nextProbablePrime.BigInteger_nextProbablePrime_A02", any())
.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.JAVA)))
- .put("lang.StringBuffer.serialization.StringBuffer_serialization_A01", anyDexVm())
+ match(runtimes(Version.DEFAULT)))
+ .put("lang.StringBuffer.serialization.StringBuffer_serialization_A01", any())
.put(
"lang.CloneNotSupportedException.serialization.CloneNotSupportedException_serialization_A01",
- anyDexVm())
+ any())
.put(
"lang.NumberFormatException.serialization.NumberFormatException_serialization_A01",
- anyDexVm())
+ any())
.put(
"lang.StrictMath.roundF.StrictMath_round_A01",
- match(runtimes(Runtime.ART_DEFAULT, Runtime.ART_V7_0_0, Runtime.JAVA)))
+ match(runtimes(Version.DEFAULT, Version.V7_0_0)))
.put(
"lang.StrictMath.roundD.StrictMath_round_A01",
- match(runtimes(Runtime.ART_DEFAULT, Runtime.ART_V7_0_0, Runtime.JAVA)))
+ match(runtimes(Version.DEFAULT, Version.V7_0_0)))
.put("lang.StrictMath.atan2DD.StrictMath_atan2_A01", any())
.put("lang.Thread.stop.Thread_stop_A05", any())
- .put("lang.Thread.resume.Thread_resume_A02", anyDexVm())
- .put("lang.Thread.suspend.Thread_suspend_A02", anyDexVm())
+ .put("lang.Thread.resume.Thread_resume_A02", any())
+ .put("lang.Thread.suspend.Thread_suspend_A02", any())
.put("lang.Thread.stop.Thread_stop_A03", any())
.put("lang.Thread.interrupt.Thread_interrupt_A03", any())
.put("lang.Thread.stop.Thread_stop_A04", any())
.put(
"lang.Thread.ConstructorLjava_lang_ThreadGroupLjava_lang_RunnableLjava_lang_StringJ.Thread_Constructor_A01",
- match(runtimes(Runtime.ART_DEFAULT, Runtime.ART_V7_0_0, Runtime.ART_V6_0_1)))
+ match(runtimes(Version.DEFAULT, Version.V7_0_0, Version.V6_0_1)))
.put(
"lang.Thread.getUncaughtExceptionHandler.Thread_getUncaughtExceptionHandler_A01",
- anyDexVm())
- .put("lang.Thread.getStackTrace.Thread_getStackTrace_A02", anyDexVm())
- .put("lang.Thread.enumerate_Ljava_lang_Thread.Thread_enumerate_A02", anyDexVm())
+ any())
+ .put("lang.Thread.getStackTrace.Thread_getStackTrace_A02", any())
+ .put("lang.Thread.enumerate_Ljava_lang_Thread.Thread_enumerate_A02", any())
.put("lang.Thread.countStackFrames.Thread_countStackFrames_A01", any())
.put(
"lang.Thread.getAllStackTraces.Thread_getAllStackTraces_A01",
- match(runtimes(Runtime.ART_V7_0_0)))
- .put(
- "lang.Thread.destroy.Thread_destroy_A01",
- match(TestCondition.artRuntimesFrom(Runtime.ART_V4_4_4)))
- .put("lang.Thread.isAlive.Thread_isAlive_A01", anyDexVm())
+ match(runtimes(Version.V7_0_0)))
+ .put("lang.Thread.destroy.Thread_destroy_A01", match(runtimesFrom(Version.V4_4_4)))
+ .put("lang.Thread.isAlive.Thread_isAlive_A01", any())
.put("lang.Thread.stopLjava_lang_Throwable.Thread_stop_A04", any())
.put("lang.Thread.stopLjava_lang_Throwable.Thread_stop_A03", any())
.put("lang.Thread.stopLjava_lang_Throwable.Thread_stop_A05", any())
- .put("lang.Thread.getPriority.Thread_getPriority_A01", anyDexVm())
+ .put("lang.Thread.getPriority.Thread_getPriority_A01", any())
.put(
"lang.Thread.getContextClassLoader.Thread_getContextClassLoader_A03",
- match(runtimes(Runtime.ART_V7_0_0)))
- .put("lang.OutOfMemoryError.serialization.OutOfMemoryError_serialization_A01", anyDexVm())
+ match(runtimes(Version.V7_0_0)))
+ .put("lang.OutOfMemoryError.serialization.OutOfMemoryError_serialization_A01", any())
.put(
"lang.RuntimePermission.ConstructorLjava_lang_StringLjava_lang_String.RuntimePermission_Constructor_A01",
- anyDexVm())
- .put(
- "lang.RuntimePermission.serialization.RuntimePermission_serialization_A01",
- anyDexVm())
+ any())
+ .put("lang.RuntimePermission.serialization.RuntimePermission_serialization_A01", any())
.put(
"lang.RuntimePermission.ConstructorLjava_lang_StringLjava_lang_String.RuntimePermission_Constructor_A02",
- anyDexVm())
+ any())
.put(
"lang.RuntimePermission.ConstructorLjava_lang_StringLjava_lang_String.RuntimePermission_Constructor_A03",
- anyDexVm())
+ any())
.put("lang.RuntimePermission.Class.RuntimePermission_class_A17", any())
.put(
"lang.RuntimePermission.ConstructorLjava_lang_String.RuntimePermission_Constructor_A02",
- anyDexVm())
+ any())
.put(
"lang.RuntimePermission.ConstructorLjava_lang_String.RuntimePermission_Constructor_A03",
- anyDexVm())
+ any())
.put(
"lang.RuntimePermission.ConstructorLjava_lang_String.RuntimePermission_Constructor_A01",
- anyDexVm())
+ any())
.put("lang.RuntimePermission.Class.RuntimePermission_class_A26", any())
.put("lang.RuntimePermission.Class.RuntimePermission_class_A04", any())
.put("lang.RuntimePermission.Class.RuntimePermission_class_A03", any())
@@ -129,615 +123,474 @@
.put("lang.RuntimePermission.Class.RuntimePermission_class_A01", any())
.put(
"lang.ClassLoader.defineClassLjava_lang_String_BII.ClassLoader_defineClass_A06",
- anyDexVm())
+ any())
.put("lang.RuntimePermission.Class.RuntimePermission_class_A14", any())
.put(
"lang.ClassLoader.defineClassLjava_lang_String_BII.ClassLoader_defineClass_A05",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.defineClassLjava_lang_String_BII.ClassLoader_defineClass_A02",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.defineClassLjava_lang_String_BII.ClassLoader_defineClass_A04",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.defineClassLjava_lang_String_BII.ClassLoader_defineClass_A03",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.defineClassLjava_lang_String_BII.ClassLoader_defineClass_A01",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.defineClassLjava_lang_String_BII.ClassLoader_defineClass_A07",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.setPackageAssertionStatusLjava_lang_StringZ.ClassLoader_setPackageAssertionStatus_A02",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.setPackageAssertionStatusLjava_lang_StringZ.ClassLoader_setPackageAssertionStatus_A01",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.setPackageAssertionStatusLjava_lang_StringZ.ClassLoader_setPackageAssertionStatus_A03",
- anyDexVm())
- .put("lang.ClassLoader.loadClassLjava_lang_StringZ.ClassLoader_loadClass_A03", anyDexVm())
- .put("lang.ClassLoader.loadClassLjava_lang_StringZ.ClassLoader_loadClass_A01", anyDexVm())
- .put("lang.ClassLoader.loadClassLjava_lang_StringZ.ClassLoader_loadClass_A04", anyDexVm())
+ any())
+ .put("lang.ClassLoader.loadClassLjava_lang_StringZ.ClassLoader_loadClass_A03", any())
+ .put("lang.ClassLoader.loadClassLjava_lang_StringZ.ClassLoader_loadClass_A01", any())
+ .put("lang.ClassLoader.loadClassLjava_lang_StringZ.ClassLoader_loadClass_A04", any())
.put(
"lang.ClassLoader.definePackageLjava_lang_String6Ljava_net_URL.ClassLoader_definePackage_A02",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.definePackageLjava_lang_String6Ljava_net_URL.ClassLoader_definePackage_A01",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.definePackageLjava_lang_String6Ljava_net_URL.ClassLoader_definePackage_A03",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.defineClassLjava_lang_StringLjava_nio_ByteBufferLjava_security_ProtectionDomain.ClassLoader_defineClass_A05",
- anyDexVm())
- .put(
- "lang.ClassLoader.getResourceLjava_lang_String.ClassLoader_getResource_A01",
- anyDexVm())
+ any())
+ .put("lang.ClassLoader.getResourceLjava_lang_String.ClassLoader_getResource_A01", any())
.put(
"lang.ClassLoader.defineClassLjava_lang_StringLjava_nio_ByteBufferLjava_security_ProtectionDomain.ClassLoader_defineClass_A01",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.defineClassLjava_lang_StringLjava_nio_ByteBufferLjava_security_ProtectionDomain.ClassLoader_defineClass_A02",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.defineClassLjava_lang_StringLjava_nio_ByteBufferLjava_security_ProtectionDomain.ClassLoader_defineClass_A06",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.defineClassLjava_lang_StringLjava_nio_ByteBufferLjava_security_ProtectionDomain.ClassLoader_defineClass_A03",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.defineClassLjava_lang_StringLjava_nio_ByteBufferLjava_security_ProtectionDomain.ClassLoader_defineClass_A07",
- match(runtimes(Runtime.ART_DEFAULT, Runtime.ART_V7_0_0)))
+ match(runtimes(Version.DEFAULT, Version.V7_0_0)))
.put(
"lang.ClassLoader.defineClassLjava_lang_StringLjava_nio_ByteBufferLjava_security_ProtectionDomain.ClassLoader_defineClass_A04",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.setSignersLjava_lang_Class_Ljava_lang_Object.ClassLoader_setSigners_A01",
- anyDexVm())
- .put(
- "lang.ClassLoader.clearAssertionStatus.ClassLoader_clearAssertionStatus_A01",
- anyDexVm())
- .put("lang.ClassLoader.Constructor.ClassLoader_Constructor_A02", anyDexVm())
+ any())
+ .put("lang.ClassLoader.clearAssertionStatus.ClassLoader_clearAssertionStatus_A01", any())
+ .put("lang.ClassLoader.Constructor.ClassLoader_Constructor_A02", any())
.put(
"lang.ClassLoader.getSystemResourceLjava_lang_String.ClassLoader_getSystemResource_A01",
- anyDexVm())
- .put(
- "lang.ClassLoader.getResourcesLjava_lang_String.ClassLoader_getResources_A01",
- anyDexVm())
- .put(
- "lang.ClassLoader.resolveClassLjava_lang_Class.ClassLoader_resolveClass_A02",
- anyDexVm())
+ any())
+ .put("lang.ClassLoader.getResourcesLjava_lang_String.ClassLoader_getResources_A01", any())
+ .put("lang.ClassLoader.resolveClassLjava_lang_Class.ClassLoader_resolveClass_A02", any())
.put(
"lang.ClassLoader.getResourceAsStreamLjava_lang_String.ClassLoader_getResourceAsStream_A01",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.findLoadedClassLjava_lang_String.ClassLoader_findLoadedClass_A01",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.defineClassLjava_lang_String_BIILjava_security_ProtectionDomain.ClassLoader_defineClass_A02",
- anyDexVm())
- .put(
- "lang.ClassLoader.resolveClassLjava_lang_Class.ClassLoader_resolveClass_A01",
- anyDexVm())
+ any())
+ .put("lang.ClassLoader.resolveClassLjava_lang_Class.ClassLoader_resolveClass_A01", any())
.put(
"lang.ClassLoader.setDefaultAssertionStatusZ.ClassLoader_setDefaultAssertionStatus_A01",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.defineClassLjava_lang_String_BIILjava_security_ProtectionDomain.ClassLoader_defineClass_A05",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.defineClassLjava_lang_String_BIILjava_security_ProtectionDomain.ClassLoader_defineClass_A01",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.defineClassLjava_lang_String_BIILjava_security_ProtectionDomain.ClassLoader_defineClass_A06",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.defineClassLjava_lang_String_BIILjava_security_ProtectionDomain.ClassLoader_defineClass_A08",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.defineClassLjava_lang_String_BIILjava_security_ProtectionDomain.ClassLoader_defineClass_A03",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.getSystemResourcesLjava_lang_String.ClassLoader_getSystemResources_A01",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.defineClassLjava_lang_String_BIILjava_security_ProtectionDomain.ClassLoader_defineClass_A07",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.defineClassLjava_lang_String_BIILjava_security_ProtectionDomain.ClassLoader_defineClass_A09",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.defineClassLjava_lang_String_BIILjava_security_ProtectionDomain.ClassLoader_defineClass_A04",
- anyDexVm())
- .put("lang.ClassLoader.defineClass_BII.ClassLoader_defineClass_A02", anyDexVm())
+ any())
+ .put("lang.ClassLoader.defineClass_BII.ClassLoader_defineClass_A02", any())
.put(
"lang.ClassLoader.getSystemResourceAsStreamLjava_lang_String.ClassLoader_getSystemResourceAsStream_A01",
- anyDexVm())
- .put("lang.ClassLoader.getPackages.ClassLoader_getPackages_A01", anyDexVm())
+ any())
+ .put("lang.ClassLoader.getPackages.ClassLoader_getPackages_A01", any())
.put(
"lang.ClassLoader.setClassAssertionStatusLjava_lang_StringZ.ClassLoader_setClassAssertionStatus_A01",
any())
- .put("lang.ClassLoader.defineClass_BII.ClassLoader_defineClass_A03", anyDexVm())
- .put("lang.ClassLoader.defineClass_BII.ClassLoader_defineClass_A01", anyDexVm())
- .put("lang.ClassLoader.defineClass_BII.ClassLoader_defineClass_A04", anyDexVm())
- .put("lang.ClassLoader.getParent.ClassLoader_getParent_A01", anyDexVm())
+ .put("lang.ClassLoader.defineClass_BII.ClassLoader_defineClass_A03", any())
+ .put("lang.ClassLoader.defineClass_BII.ClassLoader_defineClass_A01", any())
+ .put("lang.ClassLoader.defineClass_BII.ClassLoader_defineClass_A04", any())
+ .put("lang.ClassLoader.getParent.ClassLoader_getParent_A01", any())
.put(
"lang.ClassLoader.setClassAssertionStatusLjava_lang_StringZ.ClassLoader_setClassAssertionStatus_A04",
any())
.put(
"lang.ClassLoader.setClassAssertionStatusLjava_lang_StringZ.ClassLoader_setClassAssertionStatus_A02",
- anyDexVm())
- .put("lang.ClassLoader.getParent.ClassLoader_getParent_A02", anyDexVm())
- .put(
- "lang.ClassLoader.getSystemClassLoader.ClassLoader_getSystemClassLoader_A02",
- anyDexVm())
+ any())
+ .put("lang.ClassLoader.getParent.ClassLoader_getParent_A02", any())
+ .put("lang.ClassLoader.getSystemClassLoader.ClassLoader_getSystemClassLoader_A02", any())
.put(
"lang.ClassLoader.ConstructorLjava_lang_ClassLoader.ClassLoader_Constructor_A02",
- anyDexVm())
+ any())
.put(
"lang.ClassLoader.findSystemClassLjava_lang_String.ClassLoader_findSystemClass_A04",
- anyDexVm())
- .put(
- "lang.ClassLoader.getPackageLjava_lang_String.ClassLoader_getPackage_A01", anyDexVm())
+ any())
+ .put("lang.ClassLoader.getPackageLjava_lang_String.ClassLoader_getPackage_A01", any())
.put(
"lang.NoClassDefFoundError.serialization.NoClassDefFoundError_serialization_A01",
- anyDexVm())
+ any())
.put(
"lang.TypeNotPresentException.serialization.TypeNotPresentException_serialization_A01",
- anyDexVm())
+ any())
.put(
"lang.IndexOutOfBoundsException.serialization.IndexOutOfBoundsException_serialization_A01",
- anyDexVm())
- .put("lang.Enum.serialization.Enum_serialization_A01", anyDexVm())
- .put("lang.Enum.ConstructorLjava_lang_StringI.Enum_Constructor_A01", anyDexVm())
- .put("lang.InternalError.serialization.InternalError_serialization_A01", anyDexVm())
- .put("lang.Error.serialization.Error_serialization_A01", anyDexVm())
+ any())
+ .put("lang.Enum.serialization.Enum_serialization_A01", any())
+ .put("lang.Enum.ConstructorLjava_lang_StringI.Enum_Constructor_A01", any())
+ .put("lang.InternalError.serialization.InternalError_serialization_A01", any())
+ .put("lang.Error.serialization.Error_serialization_A01", any())
.put("lang.Runtime.loadLjava_lang_String.Runtime_load_A02", any())
.put("lang.Runtime.loadLjava_lang_String.Runtime_load_A05", any())
.put("lang.Runtime.loadLjava_lang_String.Runtime_load_A03", any())
.put("lang.Runtime.loadLjava_lang_String.Runtime_load_A04", any())
- .put("lang.Runtime.exec_Ljava_lang_String.Runtime_exec_A02", anyDexVm())
- .put("lang.Runtime.exec_Ljava_lang_String.Runtime_exec_A03", anyDexVm())
- .put("lang.Runtime.exec_Ljava_lang_String.Runtime_exec_A01", anyDexVm())
+ .put("lang.Runtime.exec_Ljava_lang_String.Runtime_exec_A02", any())
+ .put("lang.Runtime.exec_Ljava_lang_String.Runtime_exec_A03", any())
+ .put("lang.Runtime.exec_Ljava_lang_String.Runtime_exec_A01", any())
.put("lang.Runtime.loadLibraryLjava_lang_String.Runtime_loadLibrary_A04", any())
.put("lang.Runtime.loadLibraryLjava_lang_String.Runtime_loadLibrary_A05", any())
.put("lang.Runtime.loadLibraryLjava_lang_String.Runtime_loadLibrary_A03", any())
- .put("lang.Runtime.execLjava_lang_String.Runtime_exec_A02", anyDexVm())
- .put("lang.Runtime.execLjava_lang_String.Runtime_exec_A03", anyDexVm())
+ .put("lang.Runtime.execLjava_lang_String.Runtime_exec_A02", any())
+ .put("lang.Runtime.execLjava_lang_String.Runtime_exec_A03", any())
.put("lang.Runtime.loadLibraryLjava_lang_String.Runtime_loadLibrary_A02", any())
- .put("lang.Runtime.traceMethodCallsZ.Runtime_traceMethodCalls_A01", anyDexVm())
- .put(
- "lang.Runtime.addShutdownHookLjava_lang_Thread.Runtime_addShutdownHook_A01",
- anyDexVm())
- .put(
- "lang.Runtime.addShutdownHookLjava_lang_Thread.Runtime_addShutdownHook_A08",
- anyDexVm())
- .put("lang.Runtime.execLjava_lang_String.Runtime_exec_A01", anyDexVm())
- .put(
- "lang.Runtime.addShutdownHookLjava_lang_Thread.Runtime_addShutdownHook_A03",
- anyDexVm())
- .put(
- "lang.Runtime.addShutdownHookLjava_lang_Thread.Runtime_addShutdownHook_A07",
- anyDexVm())
- .put(
- "lang.Runtime.addShutdownHookLjava_lang_Thread.Runtime_addShutdownHook_A05",
- anyDexVm())
- .put(
- "lang.Runtime.addShutdownHookLjava_lang_Thread.Runtime_addShutdownHook_A06",
- anyDexVm())
- .put("lang.Runtime.execLjava_lang_String_Ljava_lang_String.Runtime_exec_A03", anyDexVm())
- .put("lang.Runtime.execLjava_lang_String_Ljava_lang_String.Runtime_exec_A02", anyDexVm())
- .put("lang.Runtime.execLjava_lang_String_Ljava_lang_String.Runtime_exec_A01", anyDexVm())
+ .put("lang.Runtime.traceMethodCallsZ.Runtime_traceMethodCalls_A01", any())
+ .put("lang.Runtime.addShutdownHookLjava_lang_Thread.Runtime_addShutdownHook_A01", any())
+ .put("lang.Runtime.addShutdownHookLjava_lang_Thread.Runtime_addShutdownHook_A08", any())
+ .put("lang.Runtime.execLjava_lang_String.Runtime_exec_A01", any())
+ .put("lang.Runtime.addShutdownHookLjava_lang_Thread.Runtime_addShutdownHook_A03", any())
+ .put("lang.Runtime.addShutdownHookLjava_lang_Thread.Runtime_addShutdownHook_A07", any())
+ .put("lang.Runtime.addShutdownHookLjava_lang_Thread.Runtime_addShutdownHook_A05", any())
+ .put("lang.Runtime.addShutdownHookLjava_lang_Thread.Runtime_addShutdownHook_A06", any())
+ .put("lang.Runtime.execLjava_lang_String_Ljava_lang_String.Runtime_exec_A03", any())
+ .put("lang.Runtime.execLjava_lang_String_Ljava_lang_String.Runtime_exec_A02", any())
+ .put("lang.Runtime.execLjava_lang_String_Ljava_lang_String.Runtime_exec_A01", any())
.put(
"lang.Runtime.removeShutdownHookLjava_lang_Thread.Runtime_removeShutdownHook_A02",
- anyDexVm())
- .put("lang.Runtime.exec_Ljava_lang_String_Ljava_lang_String.Runtime_exec_A01", anyDexVm())
+ any())
+ .put("lang.Runtime.exec_Ljava_lang_String_Ljava_lang_String.Runtime_exec_A01", any())
.put(
"lang.Runtime.removeShutdownHookLjava_lang_Thread.Runtime_removeShutdownHook_A01",
- anyDexVm())
- .put("lang.Runtime.exec_Ljava_lang_String_Ljava_lang_String.Runtime_exec_A02", anyDexVm())
+ any())
+ .put("lang.Runtime.exec_Ljava_lang_String_Ljava_lang_String.Runtime_exec_A02", any())
.put(
"lang.Runtime.removeShutdownHookLjava_lang_Thread.Runtime_removeShutdownHook_A03",
- anyDexVm())
+ any())
.put(
"lang.Runtime.exec_Ljava_lang_String_Ljava_lang_StringLjava_io_File.Runtime_exec_A01",
- anyDexVm())
- .put("lang.Runtime.exec_Ljava_lang_String_Ljava_lang_String.Runtime_exec_A03", anyDexVm())
+ any())
+ .put("lang.Runtime.exec_Ljava_lang_String_Ljava_lang_String.Runtime_exec_A03", any())
.put(
"lang.Runtime.exec_Ljava_lang_String_Ljava_lang_StringLjava_io_File.Runtime_exec_A02",
- anyDexVm())
+ any())
.put("lang.Runtime.haltI.Runtime_halt_A02", any())
.put(
"lang.Runtime.exec_Ljava_lang_String_Ljava_lang_StringLjava_io_File.Runtime_exec_A03",
- anyDexVm())
+ any())
.put("lang.Runtime.haltI.Runtime_halt_A03", any())
- .put("lang.Runtime.runFinalizersOnExitZ.Runtime_runFinalizersOnExit_A01", anyDexVm())
+ .put("lang.Runtime.runFinalizersOnExitZ.Runtime_runFinalizersOnExit_A01", any())
.put("lang.Runtime.haltI.Runtime_halt_A01", any())
- .put("lang.Runtime.runFinalizersOnExitZ.Runtime_runFinalizersOnExit_A03", anyDexVm())
+ .put("lang.Runtime.runFinalizersOnExitZ.Runtime_runFinalizersOnExit_A03", any())
.put(
"lang.Runtime.execLjava_lang_String_Ljava_lang_StringLjava_io_File.Runtime_exec_A03",
- anyDexVm())
+ any())
.put(
"lang.Runtime.execLjava_lang_String_Ljava_lang_StringLjava_io_File.Runtime_exec_A01",
- anyDexVm())
- .put("lang.Runtime.runFinalizersOnExitZ.Runtime_runFinalizersOnExit_A02", anyDexVm())
+ any())
+ .put("lang.Runtime.runFinalizersOnExitZ.Runtime_runFinalizersOnExit_A02", any())
.put("lang.Runtime.exitI.Runtime_exit_A03", any())
.put(
"lang.Runtime.execLjava_lang_String_Ljava_lang_StringLjava_io_File.Runtime_exec_A02",
- anyDexVm())
+ any())
.put("lang.Runtime.exitI.Runtime_exit_A04", any())
.put(
"lang.NoSuchMethodException.serialization.NoSuchMethodException_serialization_A01",
- anyDexVm())
+ any())
.put("lang.Runtime.exitI.Runtime_exit_A01", any())
.put("lang.Runtime.exitI.Runtime_exit_A02", any())
.put(
"lang.InstantiationException.serialization.InstantiationException_serialization_A01",
- anyDexVm())
- .put("lang.Exception.serialization.Exception_serialization_A01", anyDexVm())
- .put(
- "lang.StackOverflowError.serialization.StackOverflowError_serialization_A01",
- anyDexVm())
+ any())
+ .put("lang.Exception.serialization.Exception_serialization_A01", any())
+ .put("lang.StackOverflowError.serialization.StackOverflowError_serialization_A01", any())
.put(
"lang.NoSuchFieldException.serialization.NoSuchFieldException_serialization_A01",
- anyDexVm())
+ any())
.put(
"lang.NegativeArraySizeException.serialization.NegativeArraySizeException_serialization_A01",
- anyDexVm())
+ any())
.put(
"lang.ArrayIndexOutOfBoundsException.serialization.ArrayIndexOutOfBoundsException_serialization_A01",
- anyDexVm())
- .put("lang.VerifyError.serialization.VerifyError_serialization_A01", anyDexVm())
+ any())
+ .put("lang.VerifyError.serialization.VerifyError_serialization_A01", any())
.put(
"lang.IllegalArgumentException.serialization.IllegalArgumentException_serialization_A01",
- anyDexVm())
+ any())
.put(
"lang.IllegalStateException.serialization.IllegalStateException_serialization_A01",
- anyDexVm())
- .put("lang.Double.serialization.Double_serialization_A01", anyDexVm())
+ any())
+ .put("lang.Double.serialization.Double_serialization_A01", any())
.put("lang.Double.toStringD.Double_toString_A05", any())
.put(
- "lang.ArithmeticException.serialization.ArithmeticException_serialization_A01",
- anyDexVm())
+ "lang.ArithmeticException.serialization.ArithmeticException_serialization_A01", any())
.put(
"lang.ExceptionInInitializerError.serialization.ExceptionInInitializerError_serialization_A01",
- anyDexVm())
- .put("lang.ThreadLocal.Class.ThreadLocal_class_A01", anyDexVm())
- .put("lang.Byte.serialization.Byte_serialization_A01", anyDexVm())
+ any())
+ .put("lang.ThreadLocal.Class.ThreadLocal_class_A01", any())
+ .put("lang.Byte.serialization.Byte_serialization_A01", any())
.put(
"lang.Byte.parseByteLjava_lang_StringI.Byte_parseByte_A02",
- match(
- runtimes(
- Runtime.ART_DEFAULT,
- Runtime.ART_V7_0_0,
- Runtime.ART_V6_0_1,
- Runtime.ART_V5_1_1,
- Runtime.JAVA)))
+ match(runtimes(Version.DEFAULT, Version.V7_0_0, Version.V6_0_1, Version.V5_1_1)))
.put(
"lang.Byte.valueOfLjava_lang_StringI.Byte_valueOf_A02",
- match(
- runtimes(
- Runtime.ART_DEFAULT,
- Runtime.ART_V7_0_0,
- Runtime.ART_V6_0_1,
- Runtime.ART_V5_1_1,
- Runtime.JAVA)))
+ match(runtimes(Version.DEFAULT, Version.V7_0_0, Version.V6_0_1, Version.V5_1_1)))
.put(
"lang.Byte.valueOfLjava_lang_String.Byte_ValueOf_A02",
- match(
- runtimes(
- Runtime.ART_DEFAULT,
- Runtime.ART_V7_0_0,
- Runtime.ART_V6_0_1,
- Runtime.ART_V5_1_1,
- Runtime.JAVA)))
+ match(runtimes(Version.DEFAULT, Version.V7_0_0, Version.V6_0_1, Version.V5_1_1)))
.put(
"lang.Byte.decodeLjava_lang_String.Byte_decode_A04",
- match(
- runtimes(
- Runtime.ART_DEFAULT,
- Runtime.ART_V7_0_0,
- Runtime.ART_V6_0_1,
- Runtime.ART_V5_1_1,
- Runtime.JAVA)))
- .put("lang.LinkageError.serialization.LinkageError_serialization_A01", anyDexVm())
- .put(
- "lang.ClassCastException.serialization.ClassCastException_serialization_A01",
- anyDexVm())
+ match(runtimes(Version.DEFAULT, Version.V7_0_0, Version.V6_0_1, Version.V5_1_1)))
+ .put("lang.LinkageError.serialization.LinkageError_serialization_A01", any())
+ .put("lang.ClassCastException.serialization.ClassCastException_serialization_A01", any())
.put(
"lang.Byte.ConstructorLjava_lang_String.Byte_Constructor_A02",
match(
runtimes(
- Runtime.ART_DEFAULT,
- Runtime.ART_V7_0_0,
- Runtime.ART_V6_0_1,
- Runtime.ART_V5_1_1,
- Runtime.JAVA)))
+ DexVm.Version.DEFAULT,
+ DexVm.Version.V7_0_0,
+ DexVm.Version.V6_0_1,
+ DexVm.Version.V5_1_1)))
.put(
"lang.Byte.parseByteLjava_lang_String.Byte_parseByte_A02",
match(
runtimes(
- Runtime.ART_DEFAULT,
- Runtime.ART_V7_0_0,
- Runtime.ART_V6_0_1,
- Runtime.ART_V5_1_1,
- Runtime.JAVA)))
- .put("lang.NoSuchFieldError.serialization.NoSuchFieldError_serialization_A01", anyDexVm())
+ DexVm.Version.DEFAULT,
+ DexVm.Version.V7_0_0,
+ DexVm.Version.V6_0_1,
+ DexVm.Version.V5_1_1)))
+ .put("lang.NoSuchFieldError.serialization.NoSuchFieldError_serialization_A01", any())
.put(
"lang.UnsupportedOperationException.serialization.UnsupportedOperationException_serialization_A01",
- anyDexVm())
- .put(
- "lang.NoSuchMethodError.serialization.NoSuchMethodError_serialization_A01",
- anyDexVm())
+ any())
+ .put("lang.NoSuchMethodError.serialization.NoSuchMethodError_serialization_A01", any())
.put(
"lang.IllegalMonitorStateException.serialization.IllegalMonitorStateException_serialization_A01",
- anyDexVm())
+ any())
.put(
"lang.StringIndexOutOfBoundsException.serialization.StringIndexOutOfBoundsException_serialization_A01",
- anyDexVm())
+ any())
+ .put("lang.SecurityException.serialization.SecurityException_serialization_A01", any())
+ .put("lang.IllegalAccessError.serialization.IllegalAccessError_serialization_A01", any())
.put(
- "lang.SecurityException.serialization.SecurityException_serialization_A01",
- anyDexVm())
- .put(
- "lang.IllegalAccessError.serialization.IllegalAccessError_serialization_A01",
- anyDexVm())
- .put(
- "lang.ArrayStoreException.serialization.ArrayStoreException_serialization_A01",
- anyDexVm())
- .put("lang.UnknownError.serialization.UnknownError_serialization_A01", anyDexVm())
- .put("lang.Boolean.serialization.Boolean_serialization_A01", anyDexVm())
+ "lang.ArrayStoreException.serialization.ArrayStoreException_serialization_A01", any())
+ .put("lang.UnknownError.serialization.UnknownError_serialization_A01", any())
+ .put("lang.Boolean.serialization.Boolean_serialization_A01", any())
.put(
"lang.Integer.valueOfLjava_lang_StringI.Integer_valueOf_A02",
match(
runtimes(
- Runtime.ART_DEFAULT,
- Runtime.ART_V7_0_0,
- Runtime.ART_V6_0_1,
- Runtime.ART_V5_1_1,
- Runtime.JAVA)))
- .put("lang.Integer.serialization.Integer_serialization_A01", anyDexVm())
+ DexVm.Version.DEFAULT,
+ DexVm.Version.V7_0_0,
+ Version.V6_0_1,
+ DexVm.Version.V5_1_1)))
+ .put("lang.Integer.serialization.Integer_serialization_A01", any())
.put(
"lang.Integer.parseIntLjava_lang_String.Integer_parseInt_A02",
match(
runtimes(
- Runtime.ART_DEFAULT,
- Runtime.ART_V7_0_0,
- Runtime.ART_V6_0_1,
- Runtime.ART_V5_1_1,
- Runtime.JAVA)))
+ Version.DEFAULT,
+ DexVm.Version.V7_0_0,
+ DexVm.Version.V6_0_1,
+ DexVm.Version.V5_1_1)))
.put(
"lang.Integer.getIntegerLjava_lang_StringI.Integer_getInteger_A02",
match(
- runtimes(
- Runtime.ART_DEFAULT,
- Runtime.ART_V7_0_0,
- Runtime.ART_V6_0_1,
- Runtime.ART_V5_1_1,
- Runtime.JAVA)))
+ runtimes(Version.DEFAULT, DexVm.Version.V7_0_0, Version.V6_0_1, Version.V5_1_1)))
.put(
"lang.Integer.valueOfLjava_lang_String.Integer_valueOf_A02",
- match(
- runtimes(
- Runtime.ART_DEFAULT,
- Runtime.ART_V7_0_0,
- Runtime.ART_V6_0_1,
- Runtime.ART_V5_1_1,
- Runtime.JAVA)))
+ match(runtimes(Version.DEFAULT, Version.V7_0_0, Version.V6_0_1, Version.V5_1_1)))
.put(
"lang.Integer.decodeLjava_lang_String.Integer_decode_A04",
- match(
- runtimes(
- Runtime.ART_DEFAULT,
- Runtime.ART_V7_0_0,
- Runtime.ART_V6_0_1,
- Runtime.ART_V5_1_1,
- Runtime.JAVA)))
+ match(runtimes(Version.DEFAULT, Version.V7_0_0, Version.V6_0_1, Version.V5_1_1)))
.put(
"lang.Integer.parseIntLjava_lang_StringI.Integer_parseInt_A02",
- match(
- runtimes(
- Runtime.ART_DEFAULT,
- Runtime.ART_V7_0_0,
- Runtime.ART_V6_0_1,
- Runtime.ART_V5_1_1,
- Runtime.JAVA)))
+ match(runtimes(Version.DEFAULT, Version.V7_0_0, Version.V6_0_1, Version.V5_1_1)))
.put(
"lang.Integer.getIntegerLjava_lang_StringLjava_lang_Integer.Integer_getInteger_A02",
- match(
- runtimes(
- Runtime.ART_DEFAULT,
- Runtime.ART_V7_0_0,
- Runtime.ART_V6_0_1,
- Runtime.ART_V5_1_1,
- Runtime.JAVA)))
+ match(runtimes(Version.DEFAULT, Version.V7_0_0, Version.V6_0_1, Version.V5_1_1)))
.put(
"lang.Integer.ConstructorLjava_lang_String.Integer_Constructor_A02",
- match(
- runtimes(
- Runtime.ART_DEFAULT,
- Runtime.ART_V7_0_0,
- Runtime.ART_V6_0_1,
- Runtime.ART_V5_1_1,
- Runtime.JAVA)))
+ match(runtimes(Version.DEFAULT, Version.V7_0_0, Version.V6_0_1, Version.V5_1_1)))
.put(
"lang.Integer.getIntegerLjava_lang_String.Integer_getInteger_A02",
- match(
- runtimes(
- Runtime.ART_DEFAULT,
- Runtime.ART_V7_0_0,
- Runtime.ART_V6_0_1,
- Runtime.ART_V5_1_1,
- Runtime.JAVA)))
+ match(runtimes(Version.DEFAULT, Version.V7_0_0, Version.V6_0_1, Version.V5_1_1)))
.put(
"lang.ref.PhantomReference.isEnqueued.PhantomReference_isEnqueued_A01",
- match(
- runtimes(
- Runtime.ART_DEFAULT,
- Runtime.ART_V7_0_0,
- Runtime.ART_V6_0_1,
- Runtime.ART_V5_1_1,
- Runtime.JAVA)))
+ match(runtimes(Version.DEFAULT, Version.V7_0_0, Version.V6_0_1, Version.V5_1_1)))
.put(
"lang.ref.SoftReference.isEnqueued.SoftReference_isEnqueued_A01",
- match(
- runtimes(
- Runtime.ART_DEFAULT,
- Runtime.ART_V7_0_0,
- Runtime.ART_V6_0_1,
- Runtime.ART_V5_1_1,
- Runtime.JAVA)))
+ match(runtimes(Version.DEFAULT, Version.V7_0_0, Version.V6_0_1, Version.V5_1_1)))
.put("lang.ref.SoftReference.get.SoftReference_get_A01", any())
.put(
"lang.ref.ReferenceQueue.poll.ReferenceQueue_poll_A01",
- match(
- runtimes(
- Runtime.ART_DEFAULT,
- Runtime.ART_V7_0_0,
- Runtime.ART_V6_0_1,
- Runtime.ART_V5_1_1,
- Runtime.JAVA)))
- .put(
- "lang.StackTraceElement.serialization.StackTraceElement_serialization_A01",
- anyDexVm())
+ match(runtimes(Version.DEFAULT, Version.V7_0_0, Version.V6_0_1, Version.V5_1_1)))
+ .put("lang.StackTraceElement.serialization.StackTraceElement_serialization_A01", any())
.put("lang.ref.WeakReference.get.WeakReference_get_A01", any())
.put(
"lang.StackTraceElement.toString.StackTraceElement_toString_A01",
- match(runtimes(Runtime.ART_DEFAULT)))
+ match(runtimes(Version.DEFAULT)))
.put(
"lang.NullPointerException.serialization.NullPointerException_serialization_A01",
- anyDexVm())
+ any())
.put(
- "lang.VirtualMachineError.serialization.VirtualMachineError_serialization_A01",
- anyDexVm())
+ "lang.VirtualMachineError.serialization.VirtualMachineError_serialization_A01", any())
.put(
"lang.ClassCircularityError.serialization.ClassCircularityError_serialization_A01",
- anyDexVm())
- .put("lang.ThreadDeath.serialization.ThreadDeath_serialization_A01", anyDexVm())
- .put(
- "lang.InstantiationError.serialization.InstantiationError_serialization_A01",
- anyDexVm())
+ any())
+ .put("lang.ThreadDeath.serialization.ThreadDeath_serialization_A01", any())
+ .put("lang.InstantiationError.serialization.InstantiationError_serialization_A01", any())
.put(
"lang.IllegalThreadStateException.serialization.IllegalThreadStateException_serialization_A01",
- anyDexVm())
- .put("lang.ProcessBuilder.environment.ProcessBuilder_environment_A05", anyDexVm())
- .put("lang.ProcessBuilder.environment.ProcessBuilder_environment_A06", anyDexVm())
- .put("lang.ProcessBuilder.start.ProcessBuilder_start_A05", anyDexVm())
- .put("lang.ProcessBuilder.start.ProcessBuilder_start_A06", anyDexVm())
- .put("lang.ClassFormatError.serialization.ClassFormatError_serialization_A01", anyDexVm())
- .put(
- "lang.Math.cbrtD.Math_cbrt_A01",
- match(TestCondition.artRuntimesFrom(Runtime.ART_V6_0_1)))
- .put("lang.Math.powDD.Math_pow_A08", anyDexVm())
+ any())
+ .put("lang.ProcessBuilder.environment.ProcessBuilder_environment_A05", any())
+ .put("lang.ProcessBuilder.environment.ProcessBuilder_environment_A06", any())
+ .put("lang.ProcessBuilder.start.ProcessBuilder_start_A05", any())
+ .put("lang.ProcessBuilder.start.ProcessBuilder_start_A06", any())
+ .put("lang.ClassFormatError.serialization.ClassFormatError_serialization_A01", any())
+ .put("lang.Math.cbrtD.Math_cbrt_A01", match(runtimesFrom(Version.V6_0_1)))
+ .put("lang.Math.powDD.Math_pow_A08", any())
.put(
"lang.IncompatibleClassChangeError.serialization.IncompatibleClassChangeError_serialization_A01",
- anyDexVm())
- .put("lang.Float.serialization.Float_serialization_A01", anyDexVm())
+ any())
+ .put("lang.Float.serialization.Float_serialization_A01", any())
.put("lang.Float.toStringF.Float_toString_A02", any())
.put(
"lang.Short.valueOfLjava_lang_StringI.Short_valueOf_A02",
- match(artRuntimesFromAndJava(Runtime.ART_V5_1_1)))
+ match(runtimesFrom(Version.V5_1_1)))
.put(
"lang.Short.valueOfLjava_lang_String.Short_valueOf_A02",
- match(artRuntimesFromAndJava(Runtime.ART_V5_1_1)))
- .put("lang.Short.serialization.Short_serialization_A01", anyDexVm())
+ match(runtimesFrom(Version.V5_1_1)))
+ .put("lang.Short.serialization.Short_serialization_A01", any())
.put(
"lang.Short.parseShortLjava_lang_String.Short_parseShort_A02",
- match(artRuntimesFromAndJava(Runtime.ART_V5_1_1)))
+ match(runtimesFrom(Version.V5_1_1)))
.put(
"lang.Short.decodeLjava_lang_String.Short_decode_A04",
- match(artRuntimesFromAndJava(Runtime.ART_V5_1_1)))
+ match(runtimesFrom(Version.V5_1_1)))
.put(
"lang.Short.ConstructorLjava_lang_String.Short_Constructor_A02",
- match(artRuntimesFromAndJava(Runtime.ART_V5_1_1)))
+ match(runtimesFrom(Version.V5_1_1)))
.put(
"lang.ClassNotFoundException.serialization.ClassNotFoundException_serialization_A01",
- anyDexVm())
+ any())
.put(
"lang.annotation.AnnotationFormatError.serialization.AnnotationFormatError_serialization_A01",
- anyDexVm())
+ any())
.put(
"lang.Short.parseShortLjava_lang_StringI.Short_parseShort_A02",
- match(artRuntimesFromAndJava(Runtime.ART_V5_1_1)))
+ match(runtimesFrom(Version.V5_1_1)))
.put(
"lang.annotation.IncompleteAnnotationException.ConstructorLjava_lang_ClassLjava_lang_String.IncompleteAnnotationException_Constructor_A01",
- match(runtimes(Runtime.ART_DEFAULT, Runtime.JAVA)))
+ match(runtimes(Version.DEFAULT)))
.put(
"lang.InterruptedException.serialization.InterruptedException_serialization_A01",
- anyDexVm())
+ any())
.put(
"lang.annotation.IncompleteAnnotationException.Class.IncompleteAnnotationException_class_A01",
any())
- .put("lang.annotation.Annotation.Class.Annotation_class_A03", anyDexVm())
- .put("lang.annotation.Annotation.serialization.Annotation_serialization_A01", anyDexVm())
- .put(
- "lang.annotation.Annotation.annotationType.Annotation_annotationType_A01", anyDexVm())
+ .put("lang.annotation.Annotation.Class.Annotation_class_A03", any())
+ .put("lang.annotation.Annotation.serialization.Annotation_serialization_A01", any())
+ .put("lang.annotation.Annotation.annotationType.Annotation_annotationType_A01", any())
.put(
"lang.annotation.IncompleteAnnotationException.serialization.IncompleteAnnotationException_serialization_A01",
- anyDexVm())
+ any())
.put("lang.annotation.Annotation.Class.Annotation_class_A02", any())
- .put("lang.annotation.Retention.Retention_class_A01", anyDexVm())
+ .put("lang.annotation.Retention.Retention_class_A01", any())
.put(
"lang.annotation.AnnotationTypeMismatchException.Class.AnnotationTypeMismatchException_class_A01",
any())
- .put("lang.Long.serialization.Long_serialization_A01", anyDexVm())
- .put("lang.ThreadGroup.resume.ThreadGroup_resume_A01", anyDexVm())
+ .put("lang.Long.serialization.Long_serialization_A01", any())
+ .put("lang.ThreadGroup.resume.ThreadGroup_resume_A01", any())
.put(
- "lang.AbstractMethodError.serialization.AbstractMethodError_serialization_A01",
- anyDexVm())
- .put("lang.RuntimeException.serialization.RuntimeException_serialization_A01", anyDexVm())
- .put("lang.ThreadGroup.suspend.ThreadGroup_suspend_A01", anyDexVm())
+ "lang.AbstractMethodError.serialization.AbstractMethodError_serialization_A01", any())
+ .put("lang.RuntimeException.serialization.RuntimeException_serialization_A01", any())
+ .put("lang.ThreadGroup.suspend.ThreadGroup_suspend_A01", any())
.put(
"lang.ThreadGroup.ConstructorLjava_lang_ThreadGroupLjava_lang_String.ThreadGroup_Constructor_A03",
- anyDexVm())
- .put("lang.ThreadGroup.stop.ThreadGroup_stop_A01", anyDexVm())
- .put("lang.ThreadGroup.enumerate_Thread.ThreadGroup_enumerate_A01", anyDexVm())
+ any())
+ .put("lang.ThreadGroup.stop.ThreadGroup_stop_A01", any())
+ .put("lang.ThreadGroup.enumerate_Thread.ThreadGroup_enumerate_A01", any())
.put(
"lang.ThreadGroup.ConstructorLjava_lang_ThreadGroupLjava_lang_String.ThreadGroup_Constructor_A04",
- anyDexVm())
- .put(
- "lang.ThreadGroup.parentOfLjava_lang_ThreadGroup.ThreadGroup_parentOf_A01",
- anyDexVm())
- .put("lang.ThreadGroup.getMaxPriority.ThreadGroup_getMaxPriority_A02", anyDexVm())
- .put("lang.ThreadGroup.checkAccess.ThreadGroup_checkAccess_A03", anyDexVm())
- .put("lang.ThreadGroup.enumerate_ThreadZ.ThreadGroup_enumerate_A01", anyDexVm())
+ any())
+ .put("lang.ThreadGroup.parentOfLjava_lang_ThreadGroup.ThreadGroup_parentOf_A01", any())
+ .put("lang.ThreadGroup.getMaxPriority.ThreadGroup_getMaxPriority_A02", any())
+ .put("lang.ThreadGroup.checkAccess.ThreadGroup_checkAccess_A03", any())
+ .put("lang.ThreadGroup.enumerate_ThreadZ.ThreadGroup_enumerate_A01", any())
.put(
"lang.ThreadGroup.uncaughtExceptionLjava_lang_ThreadLjava_lang_Throwable.ThreadGroup_uncaughtException_A01",
- anyDexVm())
- .put("lang.ThreadGroup.checkAccess.ThreadGroup_checkAccess_A02", anyDexVm())
- .put(
- "lang.ThreadGroup.ConstructorLjava_lang_String.ThreadGroup_Constructor_A04",
- anyDexVm())
- .put("lang.ThreadGroup.activeCount.ThreadGroup_activeCount_A01", anyDexVm())
- .put("lang.ThreadGroup.setMaxPriorityI.ThreadGroup_setMaxPriority_A03", anyDexVm())
- .put(
- "lang.ThreadGroup.ConstructorLjava_lang_String.ThreadGroup_Constructor_A03",
- anyDexVm())
- .put("lang.ThreadGroup.getParent.ThreadGroup_getParent_A03", anyDexVm())
+ any())
+ .put("lang.ThreadGroup.checkAccess.ThreadGroup_checkAccess_A02", any())
+ .put("lang.ThreadGroup.ConstructorLjava_lang_String.ThreadGroup_Constructor_A04", any())
+ .put("lang.ThreadGroup.activeCount.ThreadGroup_activeCount_A01", any())
+ .put("lang.ThreadGroup.setMaxPriorityI.ThreadGroup_setMaxPriority_A03", any())
+ .put("lang.ThreadGroup.ConstructorLjava_lang_String.ThreadGroup_Constructor_A03", any())
+ .put("lang.ThreadGroup.getParent.ThreadGroup_getParent_A03", any())
.put("lang.Class.getDeclaredConstructors.Class_getDeclaredConstructors_A02", any())
- .put("lang.AssertionError.serialization.AssertionError_serialization_A01", anyDexVm())
- .put("lang.Class.getClassLoader.Class_getClassLoader_A01", anyDexVm())
- .put("lang.Class.getDeclaringClass.Class_getDeclaringClass_A01", anyDexVm())
+ .put("lang.AssertionError.serialization.AssertionError_serialization_A01", any())
+ .put("lang.Class.getClassLoader.Class_getClassLoader_A01", any())
+ .put("lang.Class.getDeclaringClass.Class_getDeclaringClass_A01", any())
.put(
"lang.Class.getDeclaredFields.Class_getDeclaredFields_A01",
- match(TestCondition.artRuntimesFrom(Runtime.ART_V5_1_1)))
- .put("lang.Class.getClassLoader.Class_getClassLoader_A02", anyDexVm())
- .put("lang.Class.getClassLoader.Class_getClassLoader_A03", anyDexVm())
+ match(runtimesFrom(Version.V5_1_1)))
+ .put("lang.Class.getClassLoader.Class_getClassLoader_A02", any())
+ .put("lang.Class.getClassLoader.Class_getClassLoader_A03", any())
.put("lang.Class.getDeclaredFields.Class_getDeclaredFields_A02", any())
- .put("lang.Class.getResourceLjava_lang_String.Class_getResource_A01", anyDexVm())
- .put("lang.Class.getConstructor_Ljava_lang_Class.Class_getConstructor_A03", anyDexVm())
+ .put("lang.Class.getResourceLjava_lang_String.Class_getResource_A01", any())
+ .put("lang.Class.getConstructor_Ljava_lang_Class.Class_getConstructor_A03", any())
.put(
"lang.Class.forNameLjava_lang_StringZLjava_lang_ClassLoader.Class_forName_A03", any())
.put(
- "lang.Class.forNameLjava_lang_StringZLjava_lang_ClassLoader.Class_forName_A07",
- anyDexVm())
+ "lang.Class.forNameLjava_lang_StringZLjava_lang_ClassLoader.Class_forName_A07", any())
.put(
- "lang.Class.forNameLjava_lang_StringZLjava_lang_ClassLoader.Class_forName_A01",
- anyDexVm())
+ "lang.Class.forNameLjava_lang_StringZLjava_lang_ClassLoader.Class_forName_A01", any())
.put("lang.Class.getConstructor_Ljava_lang_Class.Class_getConstructor_A04", any())
- .put("lang.Class.serialization.Class_serialization_A01", anyDexVm())
+ .put("lang.Class.serialization.Class_serialization_A01", any())
.put("lang.Class.getMethods.Class_getMethods_A02", any())
.put(
"lang.Class.getDeclaredMethodLjava_lang_String_Ljava_lang_Class.Class_getDeclaredMethod_A05",
@@ -745,36 +598,28 @@
.put("lang.Class.getClasses.Class_getClasses_A02", any())
.put(
"lang.Class.getDeclaredMethodLjava_lang_String_Ljava_lang_Class.Class_getDeclaredMethod_A03",
- anyDexVm())
+ any())
.put(
"lang.Class.getClasses.Class_getClasses_A01",
- match(
- runtimes(
- Runtime.ART_DEFAULT,
- Runtime.ART_V7_0_0,
- Runtime.ART_V4_4_4,
- Runtime.ART_V4_0_4,
- Runtime.JAVA)))
+ match(runtimes(Version.DEFAULT, Version.V7_0_0, Version.V4_4_4, Version.V4_0_4)))
.put("lang.Class.getProtectionDomain.Class_getProtectionDomain_A01", any())
- .put("lang.Class.getProtectionDomain.Class_getProtectionDomain_A02", anyDexVm())
+ .put("lang.Class.getProtectionDomain.Class_getProtectionDomain_A02", any())
.put(
"lang.Class.getDeclaredMethods.Class_getDeclaredMethods_A01",
- match(artRuntimesFromAndJava(Runtime.ART_V7_0_0)))
- .put(
- "lang.Class.getMethods.Class_getMethods_A01",
- match(artRuntimesFromAndJava(Runtime.ART_V7_0_0)))
+ match(runtimesFrom(Version.V7_0_0)))
+ .put("lang.Class.getMethods.Class_getMethods_A01", match(runtimesFrom(Version.V7_0_0)))
.put("lang.Class.getGenericInterfaces.Class_getGenericInterfaces_A04", any())
.put("lang.Class.getDeclaredFieldLjava_lang_String.Class_getDeclaredField_A04", any())
.put("lang.Class.getDeclaredMethods.Class_getDeclaredMethods_A02", any())
.put(
"lang.Class.getResourceAsStreamLjava_lang_String.Class_getResourceAsStream_A01",
- anyDexVm())
+ any())
.put("lang.Class.getGenericInterfaces.Class_getGenericInterfaces_A05", any())
.put("lang.Class.getAnnotationLjava_lang_Class.Class_getAnnotation_A01", any())
.put("lang.Class.getGenericInterfaces.Class_getGenericInterfaces_A03", any())
.put("lang.Class.getDeclaredClasses.Class_getDeclaredClasses_A02", any())
- .put("lang.Class.desiredAssertionStatus.Class_desiredAssertionStatus_A01", anyDexVm())
- .put("lang.Class.getPackage.Class_getPackage_A01", anyDexVm())
+ .put("lang.Class.desiredAssertionStatus.Class_desiredAssertionStatus_A01", any())
+ .put("lang.Class.getPackage.Class_getPackage_A01", any())
.put("lang.Class.getFieldLjava_lang_String.Class_getField_A04", any())
.put("lang.Class.getTypeParameters.Class_getTypeParameters_A02", any())
.put("lang.Class.getDeclaredAnnotations.Class_getDeclaredAnnotations_A01", any())
@@ -784,384 +629,344 @@
.put("lang.Class.getFields.Class_getFields_A02", any())
.put("lang.Class.getGenericSuperclass.Class_getGenericSuperclass_A03", any())
.put("lang.Class.getGenericSuperclass.Class_getGenericSuperclass_A04", any())
- .put("lang.Class.getSigners.Class_getSigners_A01", anyDexVm())
+ .put("lang.Class.getSigners.Class_getSigners_A01", any())
.put(
"lang.Class.getMethodLjava_lang_String_Ljava_lang_Class.Class_getMethod_A01",
- match(
- runtimes(
- Runtime.ART_DEFAULT,
- Runtime.ART_V7_0_0,
- Runtime.ART_V4_4_4,
- Runtime.ART_V4_0_4)))
- .put(
- "lang.Class.getModifiers.Class_getModifiers_A03", match(runtimes(Runtime.ART_V4_0_4)))
- .put("lang.Class.newInstance.Class_newInstance_A06", match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.DEFAULT, Version.V7_0_0, Version.V4_4_4, Version.V4_0_4)))
+ .put("lang.Class.getModifiers.Class_getModifiers_A03", match(runtimes(Version.V4_0_4)))
+ .put("lang.Class.newInstance.Class_newInstance_A06", match(runtimes(Version.V4_0_4)))
.put("lang.Class.getGenericSuperclass.Class_getGenericSuperclass_A01", any())
.put("lang.Class.getGenericSuperclass.Class_getGenericSuperclass_A02", any())
.put("lang.Class.newInstance.Class_newInstance_A07", any())
.put(
"lang.Class.getDeclaredConstructor_Ljava_lang_Class.Class_getDeclaredConstructor_A02",
- anyDexVm())
+ any())
.put("lang.Class.getMethodLjava_lang_String_Ljava_lang_Class.Class_getMethod_A05", any())
- .put("lang.Class.forNameLjava_lang_String.Class_forName_A01", anyDexVm())
+ .put("lang.Class.forNameLjava_lang_String.Class_forName_A01", any())
.put(
"lang.Class.getDeclaredConstructor_Ljava_lang_Class.Class_getDeclaredConstructor_A03",
any())
- .put(
- "lang.Class.getMethodLjava_lang_String_Ljava_lang_Class.Class_getMethod_A03",
- anyDexVm())
+ .put("lang.Class.getMethodLjava_lang_String_Ljava_lang_Class.Class_getMethod_A03", any())
.put("lang.Class.forNameLjava_lang_String.Class_forName_A02", any())
.put(
"lang.UnsatisfiedLinkError.serialization.UnsatisfiedLinkError_serialization_A01",
- anyDexVm())
+ any())
.put("lang.Class.getAnnotations.Class_getAnnotations_A01", any())
.put(
"lang.EnumConstantNotPresentException.serialization.EnumConstantNotPresentException_serialization_A01",
- anyDexVm())
+ any())
.put("lang.String.toLowerCase.String_toLowerCase_A01", any())
.put("lang.String.splitLjava_lang_StringI.String_split_A01", any())
- .put("lang.String.serialization.String_serialization_A01", anyDexVm())
+ .put("lang.String.serialization.String_serialization_A01", any())
.put("lang.String.regionMatchesZILjava_lang_StringII.String_regionMatches_A01", any())
.put("lang.String.valueOfF.String_valueOf_A01", any())
.put("lang.String.Constructor_BLjava_nio_charset_Charset.String_Constructor_A01", any())
- .put("lang.String.concatLjava_lang_String.String_concat_A01", anyDexVm())
- .put("lang.String.matchesLjava_lang_String.String_matches_A01", anyDexVm())
- .put(
- "lang.String.CASE_INSENSITIVE_ORDER.serialization.String_serialization_A01",
- anyDexVm())
+ .put("lang.String.concatLjava_lang_String.String_concat_A01", any())
+ .put("lang.String.matchesLjava_lang_String.String_matches_A01", any())
+ .put("lang.String.CASE_INSENSITIVE_ORDER.serialization.String_serialization_A01", any())
.put(
"lang.String.getBytesLjava_lang_String.String_getBytes_A14",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V7_0_0)))
+ match(runtimesUpTo(Version.V7_0_0)))
.put("lang.String.splitLjava_lang_String.String_split_A01", any())
.put("lang.String.getBytesII_BI.String_getBytes_A03", any())
- .put("lang.String.getBytesII_BI.String_getBytes_A02", anyDexVm())
+ .put("lang.String.getBytesII_BI.String_getBytes_A02", any())
.put("lang.String.toLowerCaseLjava_util_Locale.String_toLowerCase_A01", any())
.put("lang.String.Constructor_BIILjava_nio_charset_Charset.String_Constructor_A01", any())
- .put("lang.String.getBytesLjava_nio_charset_Charset.String_getBytes_A01", anyDexVm())
+ .put("lang.String.getBytesLjava_nio_charset_Charset.String_getBytes_A01", any())
.put("lang.String.valueOfD.String_valueOf_A01", any())
.put(
"lang.String.getBytesLjava_nio_charset_Charset.String_getBytes_A14",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V7_0_0)))
- .put("lang.Package.isSealed.Package_isSealed_A01", anyDexVm())
- .put(
- "lang.Package.getSpecificationRuntime.ART_Package_getSpecificationVersion_A01",
- anyDexVm())
+ match(runtimesUpTo(Version.V7_0_0)))
+ .put("lang.Package.isSealed.Package_isSealed_A01", any())
+ .put("lang.Package.getSpecificationVersion.Package_getSpecificationVersion_A01", any())
.put("lang.Package.getAnnotationLjava_lang_Class.Package_getAnnotation_A01", any())
.put(
"lang.Package.isAnnotationPresentLjava_lang_Class.Package_isAnnotationPresent_A02",
- match(
- and(
- runtimes(Runtime.ART_V4_0_4),
- TestCondition.artRuntimesFrom(Runtime.ART_V7_0_0))))
- .put("lang.Package.getName.Package_getName_A01", anyDexVm())
- .put(
- "lang.Package.getImplementationRuntime.ART_Package_getImplementationVersion_A01",
- anyDexVm())
+ match(and(runtimes(Version.V4_0_4), runtimesFrom(Version.V7_0_0))))
+ .put("lang.Package.getName.Package_getName_A01", any())
+ .put("lang.Package.getImplementationVersion.Package_getImplementationVersion_A01", any())
.put("lang.Package.getDeclaredAnnotations.Package_getDeclaredAnnotations_A01", any())
- .put("lang.Package.getSpecificationVendor.Package_getSpecificationVendor_A01", anyDexVm())
+ .put("lang.Package.getSpecificationVendor.Package_getSpecificationVendor_A01", any())
.put(
"lang.Package.getAnnotationLjava_lang_Class.Package_getAnnotation_A02",
- match(
- and(
- TestCondition.artRuntimesFrom(Runtime.ART_V7_0_0),
- runtimes(Runtime.ART_V4_0_4))))
- .put(
- "lang.Package.isCompatibleWithLjava_lang_String.Package_isCompatibleWith_A01",
- anyDexVm())
- .put("lang.Package.toString.Package_toString_A01", anyDexVm())
+ match(and(runtimesFrom(Version.V7_0_0), runtimes(Version.V4_0_4))))
+ .put("lang.Package.isCompatibleWithLjava_lang_String.Package_isCompatibleWith_A01", any())
+ .put("lang.Package.toString.Package_toString_A01", any())
.put("lang.Package.getAnnotations.Package_getAnnotations_A01", any())
.put(
"lang.Package.isAnnotationPresentLjava_lang_Class.Package_isAnnotationPresent_A01",
any())
- .put("lang.Package.getSpecificationTitle.Package_getSpecificationTitle_A01", anyDexVm())
- .put("lang.Package.getImplementationTitle.Package_getImplementationTitle_A01", anyDexVm())
- .put("lang.Package.getPackages.Package_getPackages_A01", anyDexVm())
- .put("lang.Package.hashCode.Package_hashCode_A01", anyDexVm())
- .put("lang.Package.getPackageLjava_lang_String.Package_getPackage_A01", anyDexVm())
- .put(
- "lang.Package.getImplementationVendor.Package_getImplementationVendor_A01",
- anyDexVm())
- .put("lang.Package.isSealedLjava_net_URL.Package_isSealed_A01", anyDexVm())
- .put("lang.StringBuilder.serialization.StringBuilder_serialization_A01", anyDexVm())
+ .put("lang.Package.getSpecificationTitle.Package_getSpecificationTitle_A01", any())
+ .put("lang.Package.getImplementationTitle.Package_getImplementationTitle_A01", any())
+ .put("lang.Package.getPackages.Package_getPackages_A01", any())
+ .put("lang.Package.hashCode.Package_hashCode_A01", any())
+ .put("lang.Package.getPackageLjava_lang_String.Package_getPackage_A01", any())
+ .put("lang.Package.getImplementationVendor.Package_getImplementationVendor_A01", any())
+ .put("lang.Package.isSealedLjava_net_URL.Package_isSealed_A01", any())
+ .put("lang.StringBuilder.serialization.StringBuilder_serialization_A01", any())
.put(
"lang.SecurityManager.checkReadLjava_io_FileDescriptor.SecurityManager_checkRead_A02",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkAwtEventQueueAccess.SecurityManager_checkAwtEventQueueAccess_A01",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkWriteLjava_lang_String.SecurityManager_checkWrite_A02",
- anyDexVm())
- .put("lang.SecurityManager.inClassLoader.SecurityManager_inClassLoader_A01", anyDexVm())
+ any())
+ .put("lang.SecurityManager.inClassLoader.SecurityManager_inClassLoader_A01", any())
.put(
"lang.SecurityManager.checkPermissionLjava_security_PermissionLjava_lang_Object.SecurityManager_checkPermission_A02",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkReadLjava_io_FileDescriptor.SecurityManager_checkRead_A01",
- anyDexVm())
- .put("lang.SecurityManager.inCheck.SecurityManager_inCheck_A01", anyDexVm())
+ any())
+ .put("lang.SecurityManager.inCheck.SecurityManager_inCheck_A01", any())
.put(
"lang.SecurityManager.currentClassLoader.SecurityManager_currentClassLoader_A02",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkPrintJobAccess.SecurityManager_checkPrintJobAccess_A01",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkWriteLjava_lang_String.SecurityManager_checkWrite_A01",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkPackageAccessLjava_lang_String.SecurityManager_checkPackageAccess_A02",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkAcceptLjava_lang_StringI.SecurityManager_checkAccept_A02",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkPermissionLjava_security_PermissionLjava_lang_Object.SecurityManager_checkPermission_A01",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.currentClassLoader.SecurityManager_currentClassLoader_A01",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkMulticastLjava_net_InetAddress.SecurityManager_checkMulticast_A02",
- anyDexVm())
- .put("lang.SecurityManager.checkListenI.SecurityManager_checkListen_A01", anyDexVm())
+ any())
+ .put("lang.SecurityManager.checkListenI.SecurityManager_checkListen_A01", any())
.put(
"lang.SecurityManager.getSecurityContext.SecurityManager_getSecurityContext_A01",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkPackageAccessLjava_lang_String.SecurityManager_checkPackageAccess_A01",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkMemberAccessLjava_lang_ClassI.SecurityManager_checkMemberAccess_A02",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkMulticastLjava_net_InetAddressB.SecurityManager_checkMulticast_A02",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkAcceptLjava_lang_StringI.SecurityManager_checkAccept_A01",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkMulticastLjava_net_InetAddress.SecurityManager_checkMulticast_A01",
- anyDexVm())
- .put("lang.SecurityManager.Constructor.SecurityManager_Constructor_A01", anyDexVm())
+ any())
+ .put("lang.SecurityManager.Constructor.SecurityManager_Constructor_A01", any())
.put("lang.SecurityManager.getClassContext.SecurityManager_getClassContext_A01", any())
.put(
"lang.SecurityManager.checkMemberAccessLjava_lang_ClassI.SecurityManager_checkMemberAccess_A03",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkDeleteLjava_lang_String.SecurityManager_checkDelete_A01",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkReadLjava_lang_StringLjava_lang_Object.SecurityManager_checkRead_A03",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkMulticastLjava_net_InetAddressB.SecurityManager_checkMulticast_A01",
- anyDexVm())
+ any())
.put("lang.SecurityManager.checkListenI.SecurityManager_checkListen_A02", any())
.put(
"lang.SecurityManager.checkAccessLjava_lang_Thread.SecurityManager_checkAccess_A01",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkWriteLjava_io_FileDescriptor.SecurityManager_checkWrite_A02",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkDeleteLjava_lang_String.SecurityManager_checkDelete_A02",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkPropertiesAccess.SecurityManager_checkPropertiesAccess_A01",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkReadLjava_lang_StringLjava_lang_Object.SecurityManager_checkRead_A02",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkAccessLjava_lang_ThreadGroup.SecurityManager_checkAccess_A03",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkAccessLjava_lang_Thread.SecurityManager_checkAccess_A03",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkPackageDefinitionLjava_lang_String.SecurityManager_checkPackageDefinition_A02",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkReadLjava_lang_String.SecurityManager_checkRead_A02",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkWriteLjava_io_FileDescriptor.SecurityManager_checkWrite_A01",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkReadLjava_lang_StringLjava_lang_Object.SecurityManager_checkRead_A01",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkExecLjava_lang_String.SecurityManager_checkExec_A03",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkPackageDefinitionLjava_lang_String.SecurityManager_checkPackageDefinition_A01",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkExecLjava_lang_String.SecurityManager_checkExec_A02",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkCreateClassLoader.SecurityManager_checkCreateClassLoader_A01",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkReadLjava_lang_String.SecurityManager_checkRead_A01",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkAccessLjava_lang_ThreadGroup.SecurityManager_checkAccess_A01",
- anyDexVm())
- .put(
- "lang.SecurityManager.inClassLjava_lang_String.SecurityManager_inClass_A03",
- anyDexVm())
+ any())
+ .put("lang.SecurityManager.inClassLjava_lang_String.SecurityManager_inClass_A03", any())
.put(
"lang.SecurityManager.checkConnectLjava_lang_StringILjava_lang_Object.SecurityManager_checkConnect_A03",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkExecLjava_lang_String.SecurityManager_checkExec_A01",
- anyDexVm())
- .put(
- "lang.SecurityManager.checkSetFactory.SecurityManager_checkSetFactory_A01",
- anyDexVm())
+ any())
+ .put("lang.SecurityManager.checkSetFactory.SecurityManager_checkSetFactory_A01", any())
.put(
"lang.SecurityManager.checkConnectLjava_lang_StringILjava_lang_Object.SecurityManager_checkConnect_A04",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkPermissionLjava_security_Permission.SecurityManager_checkPermission_A01",
- anyDexVm())
- .put(
- "lang.SecurityManager.inClassLjava_lang_String.SecurityManager_inClass_A01",
- anyDexVm())
- .put(
- "lang.SecurityManager.inClassLjava_lang_String.SecurityManager_inClass_A02",
- anyDexVm())
+ any())
+ .put("lang.SecurityManager.inClassLjava_lang_String.SecurityManager_inClass_A01", any())
+ .put("lang.SecurityManager.inClassLjava_lang_String.SecurityManager_inClass_A02", any())
.put(
"lang.SecurityManager.checkPropertyAccessLjava_lang_String.SecurityManager_checkPropertyAccess_A02",
- anyDexVm())
- .put("lang.SecurityManager.checkExitI.SecurityManager_checkExit_A01", anyDexVm())
+ any())
+ .put("lang.SecurityManager.checkExitI.SecurityManager_checkExit_A01", any())
.put(
"lang.SecurityManager.checkConnectLjava_lang_StringILjava_lang_Object.SecurityManager_checkConnect_A02",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkConnectLjava_lang_StringILjava_lang_Object.SecurityManager_checkConnect_A01",
- anyDexVm())
- .put(
- "lang.SecurityManager.classLoaderDepth.SecurityManager_classLoaderDepth_A02",
- anyDexVm())
+ any())
+ .put("lang.SecurityManager.classLoaderDepth.SecurityManager_classLoaderDepth_A02", any())
.put(
"lang.SecurityManager.classDepthLjava_lang_String.SecurityManager_classDepth_A02",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkPropertyAccessLjava_lang_String.SecurityManager_checkPropertyAccess_A01",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkPropertyAccessLjava_lang_String.SecurityManager_checkPropertyAccess_A03",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkConnectLjava_lang_StringI.SecurityManager_checkConnect_A02",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkLinkLjava_lang_String.SecurityManager_checkLink_A02",
- anyDexVm())
+ any())
.put("lang.SecurityManager.classLoaderDepth.SecurityManager_classLoaderDepth_A01", any())
.put(
"lang.SecurityManager.checkPermissionLjava_security_Permission.SecurityManager_checkPermission_A02",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.currentLoadedClass.SecurityManager_currentLoadedClass_A01",
any())
.put(
"lang.SecurityManager.checkSecurityAccessLjava_lang_String.SecurityManager_checkSecurityAccess_A03",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkConnectLjava_lang_StringI.SecurityManager_checkConnect_A03",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkConnectLjava_lang_StringI.SecurityManager_checkConnect_A01",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkTopLevelWindowLjava_lang_Object.SecurityManager_checkTopLevelWindow_A02",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.currentLoadedClass.SecurityManager_currentLoadedClass_A02",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.classDepthLjava_lang_String.SecurityManager_classDepth_A01",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkSecurityAccessLjava_lang_String.SecurityManager_checkSecurityAccess_A01",
- anyDexVm())
- .put("lang.Throwable.serialization.Throwable_serialization_A01", anyDexVm())
+ any())
+ .put("lang.Throwable.serialization.Throwable_serialization_A01", any())
.put(
"lang.SecurityManager.checkTopLevelWindowLjava_lang_Object.SecurityManager_checkTopLevelWindow_A01",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkLinkLjava_lang_String.SecurityManager_checkLink_A01",
- anyDexVm())
+ any())
.put("lang.Throwable.getStackTrace.Throwable_getStackTrace_A01", any())
.put(
"lang.SecurityManager.checkSystemClipboardAccess.SecurityManager_checkSystemClipboardAccess_A01",
- anyDexVm())
+ any())
.put(
"lang.SecurityManager.checkSecurityAccessLjava_lang_String.SecurityManager_checkSecurityAccess_A02",
- anyDexVm())
+ any())
.put(
"lang.reflect.ReflectPermission.Constructor_java_lang_String.ReflectPermission_Constructor_A03",
- anyDexVm())
+ any())
.put(
"lang.reflect.MalformedParameterizedTypeException.serialization.MalformedParameterizedTypeException_serialization_A01",
- anyDexVm())
+ any())
.put(
"lang.reflect.ReflectPermission.Constructor_java_lang_StringLjava_lang_String.ReflectPermission_Constructor_A02",
- anyDexVm())
+ any())
.put(
"lang.UnsupportedClassVersionError.serialization.UnsupportedClassVersionError_serialization_A01",
- anyDexVm())
+ any())
.put(
"lang.reflect.ReflectPermission.Constructor_java_lang_String.ReflectPermission_Constructor_A01",
any())
- .put("lang.reflect.ReflectPermission.Class.ReflectPermission_class_A01", anyDexVm())
+ .put("lang.reflect.ReflectPermission.Class.ReflectPermission_class_A01", any())
.put("lang.reflect.Proxy.serialization.Proxy_serialization_A01", any())
.put(
"lang.reflect.ReflectPermission.Constructor_java_lang_StringLjava_lang_String.ReflectPermission_Constructor_A03",
- anyDexVm())
+ any())
.put(
"lang.reflect.ReflectPermission.Constructor_java_lang_String.ReflectPermission_Constructor_A02",
- anyDexVm())
- .put("lang.reflect.ReflectPermission.Class.ReflectPermission_class_A02", anyDexVm())
+ any())
+ .put("lang.reflect.ReflectPermission.Class.ReflectPermission_class_A02", any())
.put(
"lang.reflect.ReflectPermission.Constructor_java_lang_StringLjava_lang_String.ReflectPermission_Constructor_A01",
any())
.put(
"lang.reflect.Proxy.getInvocationHandlerLjava_lang_Object.Proxy_getInvocationHandler_A02",
- match(artRuntimesFromAndJava(Runtime.ART_V5_1_1)))
+ match(runtimesFrom(Version.V5_1_1)))
.put("lang.reflect.Proxy.Class.Proxy_class_A01", any())
- .put(
- "lang.reflect.Proxy.Class.Proxy_class_A02",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V4_4_4)))
- .put(
- "lang.reflect.Proxy.Class.Proxy_class_A03",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V4_4_4)))
+ .put("lang.reflect.Proxy.Class.Proxy_class_A02", match(runtimesUpTo(Version.V4_4_4)))
+ .put("lang.reflect.Proxy.Class.Proxy_class_A03", match(runtimesUpTo(Version.V4_4_4)))
.put(
"lang.reflect.Proxy.getProxyClassLjava_lang_ClassLoader_Ljava_lang_Class.Proxy_getProxyClass_A01",
- anyDexVm())
+ any())
.put(
"lang.reflect.Proxy.getProxyClassLjava_lang_ClassLoader_Ljava_lang_Class.Proxy_getProxyClass_A03",
- anyDexVm())
- .put(
- "lang.reflect.Proxy.h.Proxy_h_A01",
- match(runtimes(Runtime.ART_DEFAULT, Runtime.JAVA)))
+ any())
+ .put("lang.reflect.Proxy.h.Proxy_h_A01", match(runtimes(Version.DEFAULT)))
.put("lang.reflect.Proxy.serialization.Proxy_serialization_A02", any())
.put(
"lang.reflect.GenericSignatureFormatError.serialization.GenericSignatureFormatError_serialization_A01",
- anyDexVm())
+ any())
.put(
"lang.reflect.Proxy.newProxyInstanceLjava_lang_ClassLoader_Ljava_lang_ClassLjava_lang_reflect_InvocationHandler.Proxy_newProxyInstance_A02",
- anyDexVm())
+ any())
.put(
"lang.reflect.Proxy.ConstructorLjava_lang_reflect_InvocationHandler.Proxy_Constructor_A01",
- match(runtimes(Runtime.ART_DEFAULT, Runtime.JAVA)))
+ match(runtimes(Version.DEFAULT)))
.put(
"lang.reflect.Proxy.newProxyInstanceLjava_lang_ClassLoader_Ljava_lang_ClassLjava_lang_reflect_InvocationHandler.Proxy_newProxyInstance_A01",
- anyDexVm())
+ any())
.put("lang.reflect.Modifier.isStrictI.Modifier_isStrict_A01", any())
.put("lang.reflect.Method.getGenericReturnType.Method_getGenericReturnType_A03", any())
.put("lang.reflect.Method.getGenericReturnType.Method_getGenericReturnType_A02", any())
@@ -1177,7 +982,7 @@
any())
.put(
"lang.reflect.Method.invokeLjava_lang_Object_Ljava_lang_Object.Method_invoke_A07",
- anyDexVm())
+ any())
.put(
"lang.reflect.Method.getGenericExceptionTypes.Method_getGenericExceptionTypes_A04",
any())
@@ -1196,85 +1001,85 @@
any())
.put(
"lang.reflect.InvocationHandler.invokeLjava_lang_ObjectLjava_lang_reflect_Method_Ljava_lang_Object.InvocationHandler_invoke_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V4_4_4)))
+ match(runtimesUpTo(Version.V4_4_4)))
.put(
"lang.reflect.InvocationHandler.invokeLjava_lang_ObjectLjava_lang_reflect_Method_Ljava_lang_Object.InvocationHandler_invoke_A02",
- anyDexVm())
+ any())
.put("lang.reflect.Method.getDefaultValue.Method_getDefaultValue_A02", any())
.put(
"lang.reflect.Method.hashCode.Method_hashCode_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V4_4_4)))
+ match(runtimesUpTo(Version.V4_4_4)))
.put("lang.reflect.Method.toString.Method_toString_A01", any())
.put(
"lang.reflect.Method.getGenericParameterTypes.Method_getGenericParameterTypes_A02",
any())
- .put("lang.reflect.Field.getFloatLjava_lang_Object.Field_getFloat_A05", anyDexVm())
- .put("lang.reflect.Field.getDeclaringClass.Field_getDeclaringClass_A01", anyDexVm())
- .put("lang.reflect.Field.getByteLjava_lang_Object.Field_getByte_A05", anyDexVm())
- .put("lang.reflect.Field.getCharLjava_lang_Object.Field_getChar_A05", anyDexVm())
- .put("lang.reflect.Field.getBooleanLjava_lang_Object.Field_getBoolean_A05", anyDexVm())
- .put("lang.reflect.Field.setByteLjava_lang_ObjectB.Field_setByte_A05", anyDexVm())
- .put("lang.reflect.Field.setByteLjava_lang_ObjectB.Field_setByte_A01", anyDexVm())
+ .put("lang.reflect.Field.getFloatLjava_lang_Object.Field_getFloat_A05", any())
+ .put("lang.reflect.Field.getDeclaringClass.Field_getDeclaringClass_A01", any())
+ .put("lang.reflect.Field.getByteLjava_lang_Object.Field_getByte_A05", any())
+ .put("lang.reflect.Field.getCharLjava_lang_Object.Field_getChar_A05", any())
+ .put("lang.reflect.Field.getBooleanLjava_lang_Object.Field_getBoolean_A05", any())
+ .put("lang.reflect.Field.setByteLjava_lang_ObjectB.Field_setByte_A05", any())
+ .put("lang.reflect.Field.setByteLjava_lang_ObjectB.Field_setByte_A01", any())
.put(
"lang.reflect.Field.setByteLjava_lang_ObjectB.Field_setByte_A02",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V4_4_4)))
- .put("lang.reflect.Field.setBooleanLjava_lang_ObjectZ.Field_setBoolean_A01", anyDexVm())
+ match(runtimesUpTo(Version.V4_4_4)))
+ .put("lang.reflect.Field.setBooleanLjava_lang_ObjectZ.Field_setBoolean_A01", any())
.put(
"lang.reflect.Field.setBooleanLjava_lang_ObjectZ.Field_setBoolean_A02",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V4_4_4)))
- .put("lang.reflect.Field.setCharLjava_lang_ObjectC.Field_setChar_A05", anyDexVm())
+ match(runtimesUpTo(Version.V4_4_4)))
+ .put("lang.reflect.Field.setCharLjava_lang_ObjectC.Field_setChar_A05", any())
.put("lang.reflect.Field.isSynthetic.Field_isSynthetic_A01", any())
- .put("lang.reflect.Field.setBooleanLjava_lang_ObjectZ.Field_setBoolean_A05", anyDexVm())
- .put("lang.reflect.Field.getType.Field_getType_A01", anyDexVm())
- .put("lang.reflect.Field.setCharLjava_lang_ObjectC.Field_setChar_A01", anyDexVm())
+ .put("lang.reflect.Field.setBooleanLjava_lang_ObjectZ.Field_setBoolean_A05", any())
+ .put("lang.reflect.Field.getType.Field_getType_A01", any())
+ .put("lang.reflect.Field.setCharLjava_lang_ObjectC.Field_setChar_A01", any())
.put(
"lang.reflect.Field.setCharLjava_lang_ObjectC.Field_setChar_A02",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V4_4_4)))
- .put("lang.reflect.Field.getDoubleLjava_lang_Object.Field_getDouble_A05", anyDexVm())
- .put("lang.reflect.Field.setFloatLjava_lang_ObjectF.Field_setFloat_A01", anyDexVm())
+ match(runtimesUpTo(Version.V4_4_4)))
+ .put("lang.reflect.Field.getDoubleLjava_lang_Object.Field_getDouble_A05", any())
+ .put("lang.reflect.Field.setFloatLjava_lang_ObjectF.Field_setFloat_A01", any())
.put(
"lang.reflect.Field.setFloatLjava_lang_ObjectF.Field_setFloat_A02",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V4_4_4)))
+ match(runtimesUpTo(Version.V4_4_4)))
.put("lang.reflect.Field.getAnnotationLjava_lang_Class.Field_getAnnotation_A01", any())
.put(
"lang.reflect.Field.setIntLjava_lang_ObjectI.Field_setInt_A02",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V4_4_4)))
- .put("lang.reflect.Field.getIntLjava_lang_Object.Field_getInt_A05", anyDexVm())
- .put("lang.reflect.Field.setFloatLjava_lang_ObjectF.Field_setFloat_A05", anyDexVm())
- .put("lang.reflect.Field.getShortLjava_lang_Object.Field_getShort_A05", anyDexVm())
+ match(runtimesUpTo(Version.V4_4_4)))
+ .put("lang.reflect.Field.getIntLjava_lang_Object.Field_getInt_A05", any())
+ .put("lang.reflect.Field.setFloatLjava_lang_ObjectF.Field_setFloat_A05", any())
+ .put("lang.reflect.Field.getShortLjava_lang_Object.Field_getShort_A05", any())
.put("lang.reflect.Field.getGenericType.Field_getGenericType_A03", any())
.put("lang.reflect.Field.getDeclaredAnnotations.Field_getDeclaredAnnotations_A01", any())
- .put("lang.reflect.Field.getGenericType.Field_getGenericType_A01", anyDexVm())
- .put("lang.reflect.Field.setIntLjava_lang_ObjectI.Field_setInt_A05", anyDexVm())
+ .put("lang.reflect.Field.getGenericType.Field_getGenericType_A01", any())
+ .put("lang.reflect.Field.setIntLjava_lang_ObjectI.Field_setInt_A05", any())
.put("lang.reflect.Field.getGenericType.Field_getGenericType_A02", any())
- .put("lang.reflect.Field.toGenericString.Field_toGenericString_A01", anyDexVm())
+ .put("lang.reflect.Field.toGenericString.Field_toGenericString_A01", any())
.put("lang.reflect.Field.getGenericType.Field_getGenericType_A04", any())
- .put("lang.reflect.Field.setIntLjava_lang_ObjectI.Field_setInt_A01", anyDexVm())
+ .put("lang.reflect.Field.setIntLjava_lang_ObjectI.Field_setInt_A01", any())
.put(
"lang.reflect.Field.setDoubleLjava_lang_ObjectD.Field_setDouble_A02",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V4_4_4)))
- .put("lang.reflect.Field.setDoubleLjava_lang_ObjectD.Field_setDouble_A05", anyDexVm())
- .put("lang.reflect.Field.setShortLjava_lang_ObjectS.Field_setShort_A01", anyDexVm())
+ match(runtimesUpTo(Version.V4_4_4)))
+ .put("lang.reflect.Field.setDoubleLjava_lang_ObjectD.Field_setDouble_A05", any())
+ .put("lang.reflect.Field.setShortLjava_lang_ObjectS.Field_setShort_A01", any())
.put(
"lang.reflect.Field.setLongLjava_lang_ObjectJ.Field_setLong_A02",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V4_4_4)))
- .put("lang.reflect.Field.setLongLjava_lang_ObjectJ.Field_setLong_A05", anyDexVm())
- .put("lang.reflect.Field.setLongLjava_lang_ObjectJ.Field_setLong_A01", anyDexVm())
- .put("lang.reflect.Field.setDoubleLjava_lang_ObjectD.Field_setDouble_A01", anyDexVm())
+ match(runtimesUpTo(Version.V4_4_4)))
+ .put("lang.reflect.Field.setLongLjava_lang_ObjectJ.Field_setLong_A05", any())
+ .put("lang.reflect.Field.setLongLjava_lang_ObjectJ.Field_setLong_A01", any())
+ .put("lang.reflect.Field.setDoubleLjava_lang_ObjectD.Field_setDouble_A01", any())
.put(
"lang.reflect.Field.setShortLjava_lang_ObjectS.Field_setShort_A02",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V4_4_4)))
- .put("lang.reflect.Field.setShortLjava_lang_ObjectS.Field_setShort_A05", anyDexVm())
- .put("lang.reflect.Field.getLjava_lang_Object.Field_get_A05", anyDexVm())
- .put("lang.reflect.Field.getLongLjava_lang_Object.Field_getLong_A05", anyDexVm())
+ match(runtimesUpTo(Version.V4_4_4)))
+ .put("lang.reflect.Field.setShortLjava_lang_ObjectS.Field_setShort_A05", any())
+ .put("lang.reflect.Field.getLjava_lang_Object.Field_get_A05", any())
+ .put("lang.reflect.Field.getLongLjava_lang_Object.Field_getLong_A05", any())
.put(
"lang.reflect.Field.setLjava_lang_ObjectLjava_lang_Object.Field_set_A02",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V4_4_4)))
- .put("lang.reflect.Field.setLjava_lang_ObjectLjava_lang_Object.Field_set_A05", anyDexVm())
- .put("lang.reflect.Field.setLjava_lang_ObjectLjava_lang_Object.Field_set_A01", anyDexVm())
+ match(runtimesUpTo(Version.V4_4_4)))
+ .put("lang.reflect.Field.setLjava_lang_ObjectLjava_lang_Object.Field_set_A05", any())
+ .put("lang.reflect.Field.setLjava_lang_ObjectLjava_lang_Object.Field_set_A01", any())
.put(
"lang.reflect.Constructor.newInstance_Ljava_lang_Object.Constructor_newInstance_A06",
- anyDexVm())
+ any())
.put("lang.reflect.Constructor.isSynthetic.Constructor_isSynthetic_A01", any())
.put(
"lang.reflect.Constructor.getGenericExceptionTypes.Constructor_getGenericExceptionTypes_A03",
@@ -1296,10 +1101,8 @@
any())
.put(
"lang.reflect.InvocationTargetException.serialization.InvocationTargetException_serialization_A01",
- anyDexVm())
- .put(
- "lang.reflect.Constructor.toGenericString.Constructor_toGenericString_A01",
- anyDexVm())
+ any())
+ .put("lang.reflect.Constructor.toGenericString.Constructor_toGenericString_A01", any())
.put(
"lang.reflect.Constructor.getTypeParameters.Constructor_getTypeParameters_A02", any())
.put(
@@ -1313,22 +1116,22 @@
any())
.put(
"lang.reflect.AccessibleObject.setAccessibleZ.AccessibleObject_setAccessible_A03",
- anyDexVm())
+ any())
.put(
"lang.reflect.UndeclaredThrowableException.serialization.UndeclaredThrowableException_serialization_A01",
- anyDexVm())
+ any())
.put(
"lang.reflect.AccessibleObject.setAccessibleZ.AccessibleObject_setAccessible_A02",
- anyDexVm())
+ any())
.put(
"lang.reflect.AccessibleObject.setAccessible_Ljava_lang_reflect_AccessibleObjectZ.AccessibleObject_setAccessible_A03",
- anyDexVm())
+ any())
.put(
"lang.reflect.AccessibleObject.isAnnotationPresentLjava_lang_Class.AccessibleObject_isAnnotationPresent_A01",
any())
.put(
"lang.reflect.AccessibleObject.setAccessible_Ljava_lang_reflect_AccessibleObjectZ.AccessibleObject_setAccessible_A02",
- anyDexVm())
+ any())
.put(
"lang.reflect.AccessibleObject.getAnnotations.AccessibleObject_getAnnotations_A01",
any())
@@ -1340,472 +1143,453 @@
any())
.put(
"lang.IllegalAccessException.serialization.IllegalAccessException_serialization_A01",
- anyDexVm())
+ any())
.put("lang.Character.getTypeI.Character_getType_A01", any())
.put("lang.Character.isDigitI.Character_isDigit_A01", any())
.put("lang.Character.getTypeC.Character_getType_A01", any())
- .put("lang.Character.serialization.Character_serialization_A01", anyDexVm())
+ .put("lang.Character.serialization.Character_serialization_A01", any())
.put("lang.Character.isDigitC.Character_isDigit_A01", any())
.put("lang.Character.digitCI.Character_digit_A01", any())
.put("lang.Character.digitII.Character_digit_A01", any())
- .put("lang.Character.isLowerCaseC.Character_isLowerCase_A01", anyDexVm())
+ .put("lang.Character.isLowerCaseC.Character_isLowerCase_A01", any())
.put(
"lang.Character.isSpaceCharC.Character_isSpaceChar_A01",
- match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
.put(
"lang.Character.isSpaceCharI.Character_isSpaceChar_A01",
- match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
.put(
"lang.Character.isWhitespaceC.Character_isWhitespace_A01",
- match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
.put(
"lang.Character.isWhitespaceI.Character_isWhitespace_A01",
- match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
.put("lang.Character.getDirectionalityI.Character_getDirectionality_A01", any())
- .put("lang.Character.UnicodeBlock.ofC.UnicodeBlock_of_A01", any())
- .put("lang.Character.UnicodeBlock.ofI.UnicodeBlock_of_A01", any())
- .put("lang.Character.isLowerCaseI.Character_isLowerCase_A01", anyDexVm())
- .put("lang.Process.waitFor.Process_waitFor_A01", anyDexVm())
- .put("lang.System.getProperties.System_getProperties_A01", anyDexVm())
- .put("lang.Process.getErrorStream.Process_getErrorStream_A01", anyDexVm())
+ .put(
+ "lang.Character.UnicodeBlock.ofC.UnicodeBlock_of_A01",
+ match(runtimesFrom(Version.V4_4_4)))
+ .put(
+ "lang.Character.UnicodeBlock.ofI.UnicodeBlock_of_A01",
+ match(runtimesFrom(Version.V4_4_4)))
+ .put("lang.Character.isLowerCaseI.Character_isLowerCase_A01", any())
+ .put("lang.Process.waitFor.Process_waitFor_A01", any())
+ .put("lang.System.getProperties.System_getProperties_A01", any())
+ .put("lang.Process.getErrorStream.Process_getErrorStream_A01", any())
.put("lang.Character.getDirectionalityC.Character_getDirectionality_A01", any())
- .put("lang.Process.exitValue.Process_exitValue_A01", anyDexVm())
- .put("lang.System.loadLjava_lang_String.System_load_A01", anyDexVm())
- .put("lang.Process.getInputStream.Process_getInputStream_A01", anyDexVm())
- .put("lang.System.loadLibraryLjava_lang_String.System_loadLibrary_A01", anyDexVm())
+ .put("lang.Process.exitValue.Process_exitValue_A01", any())
+ .put("lang.System.loadLjava_lang_String.System_load_A01", any())
+ .put("lang.Process.getInputStream.Process_getInputStream_A01", any())
+ .put("lang.System.loadLibraryLjava_lang_String.System_loadLibrary_A01", any())
.put(
"lang.System.setSecurityManagerLjava_lang_SecurityManager.System_setSecurityManager_A02",
- anyDexVm())
- .put("lang.System.runFinalizersOnExitZ.System_runFinalizersOnExit_A01", anyDexVm())
- .put("lang.System.getenvLjava_lang_String.System_getenv_A01", anyDexVm())
- .put("lang.System.getenv.System_getenv_A01", anyDexVm())
+ any())
+ .put("lang.System.runFinalizersOnExitZ.System_runFinalizersOnExit_A01", any())
+ .put("lang.System.getenvLjava_lang_String.System_getenv_A01", any())
+ .put("lang.System.getenv.System_getenv_A01", any())
.put(
"lang.System.getPropertyLjava_lang_StringLjava_lang_String.System_getProperty_A01",
- anyDexVm())
- .put("lang.System.exitI.System_exit_A01", anyDexVm())
+ any())
+ .put("lang.System.exitI.System_exit_A01", any())
.put(
"util.concurrent.ArrayBlockingQueue.serialization.ArrayBlockingQueue_serialization_A01",
- anyDexVm())
+ any())
.put(
"lang.System.arraycopyLjava_lang_ObjectILjava_lang_ObjectII.System_arraycopy_A04",
- anyDexVm())
- .put(
- "lang.System.setPropertiesLjava_util_Properties.System_setProperties_A02", anyDexVm())
- .put("lang.System.clearPropertyLjava_lang_String.System_clearProperty_A02", anyDexVm())
- .put("lang.System.getPropertyLjava_lang_String.System_getProperty_A01", anyDexVm())
+ any())
+ .put("lang.System.setPropertiesLjava_util_Properties.System_setProperties_A02", any())
+ .put("lang.System.clearPropertyLjava_lang_String.System_clearProperty_A02", any())
+ .put("lang.System.getPropertyLjava_lang_String.System_getProperty_A01", any())
.put(
"util.concurrent.LinkedBlockingQueue.serialization.LinkedBlockingQueue_serialization_A01",
- anyDexVm())
+ any())
.put(
"util.concurrent.LinkedBlockingDeque.serialization.LinkedBlockingDeque_serialization_A01",
- anyDexVm())
+ any())
.put(
"util.concurrent.ConcurrentLinkedQueue.serialization.ConcurrentLinkedQueue_serialization_A01",
- anyDexVm())
+ any())
.put(
"util.concurrent.SynchronousQueue.serialization.SynchronousQueue_serialization_A01",
- anyDexVm())
+ any())
.put(
"util.concurrent.CopyOnWriteArrayList.serialization.CopyOnWriteArrayList_serialization_A01",
- anyDexVm())
+ any())
.put(
"util.concurrent.CopyOnWriteArrayList.subListII.CopyOnWriteArrayList_subList_A01",
any())
.put(
"util.concurrent.ConcurrentHashMap.serialization.ConcurrentHashMap_serialization_A01",
- match(TestCondition.artRuntimesFrom(Runtime.ART_V5_1_1)))
- .put("util.concurrent.ConcurrentHashMap.keySet.ConcurrentHashMap_keySet_A01", anyDexVm())
+ match(runtimesFrom(Version.V5_1_1)))
+ .put("util.concurrent.ConcurrentHashMap.keySet.ConcurrentHashMap_keySet_A01", any())
.put(
"util.concurrent.Executors.privilegedThreadFactory.Executors_privilegedThreadFactory_A01",
any())
.put(
"util.concurrent.Executors.privilegedCallableLjava_util_concurrent_Callable.Executors_privilegedCallable_A01",
- anyDexVm())
+ any())
.put(
"util.concurrent.CopyOnWriteArraySet.serialization.CopyOnWriteArraySet_serialization_A01",
- anyDexVm())
+ any())
.put(
"util.concurrent.Executors.privilegedCallableUsingCurrentClassLoaderLjava_util_concurrent_Callable.Executors_privilegedCallableUsingCurrentClassLoader_A01",
- anyDexVm())
+ any())
.put(
"util.concurrent.PriorityBlockingQueue.ConstructorLjava_util_Collection.PriorityBlockingQueue_Constructor_A01",
any())
.put(
"util.concurrent.PriorityBlockingQueue.serialization.PriorityBlockingQueue_serialization_A01",
- anyDexVm())
+ any())
.put(
"lang.ThreadGroup.destroy.ThreadGroup_destroy_A01",
- match(artRuntimesUpToAndJava(Runtime.ART_V6_0_1)))
- .put("lang.Thread.start.Thread_start_A01", match(runtimes(Runtime.ART_V7_0_0)))
+ match(runtimesUpTo(Version.V6_0_1)))
+ .put("lang.Thread.start.Thread_start_A01", match(runtimes(Version.V7_0_0)))
.put(
"lang.String.getBytesLjava_lang_String.String_getBytes_A02",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V7_0_0)))
+ match(runtimesUpTo(Version.V7_0_0)))
.put(
"util.concurrent.CopyOnWriteArrayList.lastIndexOfLjava_lang_ObjectI.CopyOnWriteArrayList_lastIndexOf_A02",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V7_0_0)))
+ match(runtimesUpTo(Version.V7_0_0)))
.put(
"util.concurrent.CopyOnWriteArrayList.lastIndexOfLjava_lang_ObjectI.CopyOnWriteArrayList_lastIndexOf_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V7_0_0)))
+ match(runtimesUpTo(Version.V7_0_0)))
.put(
"lang.StringBuffer.getCharsII_CI.StringBuffer_getChars_A03",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
.put(
"lang.StringBuffer.appendF.StringBuffer_append_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
.put(
"lang.StringBuffer.insertI_CII.StringBuffer_insert_A02",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
- .put(
- "lang.StrictMath.scalbDI.StrictMath_scalb_A03",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
- .put(
- "lang.StrictMath.scalbDI.StrictMath_scalb_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
- .put(
- "lang.StrictMath.scalbFI.StrictMath_scalb_A03",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
- .put(
- "lang.StrictMath.scalbFI.StrictMath_scalb_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
+ .put("lang.StrictMath.scalbDI.StrictMath_scalb_A03", match(runtimesUpTo(Version.V6_0_1)))
+ .put("lang.StrictMath.scalbDI.StrictMath_scalb_A01", match(runtimesUpTo(Version.V6_0_1)))
+ .put("lang.StrictMath.scalbFI.StrictMath_scalb_A03", match(runtimesUpTo(Version.V6_0_1)))
+ .put("lang.StrictMath.scalbFI.StrictMath_scalb_A01", match(runtimesUpTo(Version.V6_0_1)))
.put(
"lang.Thread.ConstructorLjava_lang_ThreadGroupLjava_lang_RunnableLjava_lang_StringJ.Thread_Constructor_A07",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
.put(
"lang.Thread.ConstructorLjava_lang_ThreadGroupLjava_lang_RunnableLjava_lang_String.Thread_Constructor_A07",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
- .put(
- "lang.Thread.toString.Thread_toString_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
- .put(
- "lang.Thread.start.Thread_start_A02",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
+ .put("lang.Thread.toString.Thread_toString_A01", match(runtimesUpTo(Version.V6_0_1)))
+ .put("lang.Thread.start.Thread_start_A02", match(runtimesUpTo(Version.V6_0_1)))
.put(
"lang.Thread.setPriorityI.Thread_setPriority_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
.put(
"lang.ClassLoader.ConstructorLjava_lang_ClassLoader.ClassLoader_Constructor_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
.put(
"lang.Enum.compareToLjava_lang_Enum.Enum_compareTo_A03",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
- .put(
- "lang.Enum.hashCode.Enum_hashCode_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
+ .put("lang.Enum.hashCode.Enum_hashCode_A01", match(runtimesUpTo(Version.V6_0_1)))
.put(
"lang.StackTraceElement.hashCode.StackTraceElement_hashCode_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
.put(
"lang.ProcessBuilder.environment.ProcessBuilder_environment_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
.put(
"lang.ProcessBuilder.environment.ProcessBuilder_environment_A03",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
- .put(
- "lang.Float.toStringF.Float_toString_A04",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
- .put(
- "lang.Float.toStringF.Float_toString_A03",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
+ .put("lang.Float.toStringF.Float_toString_A04", match(runtimesUpTo(Version.V6_0_1)))
+ .put("lang.Float.toStringF.Float_toString_A03", match(runtimesUpTo(Version.V6_0_1)))
.put(
"lang.ThreadGroup.getMaxPriority.ThreadGroup_getMaxPriority_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
.put(
"lang.ThreadGroup.uncaughtExceptionLjava_lang_ThreadLjava_lang_Throwable.ThreadGroup_uncaughtException_A02",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
- .put(
- "lang.ThreadGroup.list.ThreadGroup_list_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
+ .put("lang.ThreadGroup.list.ThreadGroup_list_A01", match(runtimesUpTo(Version.V6_0_1)))
.put(
"lang.ThreadGroup.setMaxPriorityI.ThreadGroup_setMaxPriority_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
.put(
"lang.ThreadGroup.setMaxPriorityI.ThreadGroup_setMaxPriority_A04",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
.put(
"lang.ThreadGroup.toString.ThreadGroup_toString_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
.put(
"lang.Class.getFieldLjava_lang_String.Class_getField_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
- .put(
- "lang.String.replaceCC.String_replace_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
+ .put("lang.String.replaceCC.String_replace_A01", match(runtimesUpTo(Version.V6_0_1)))
.put(
"lang.Package.isCompatibleWithLjava_lang_String.Package_isCompatibleWith_A02",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
.put(
"lang.StringBuilder.appendF.StringBuilder_append_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
.put(
"lang.StringBuilder.insertIF.StringBuilder_insert_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
.put(
"lang.reflect.AccessibleObject.setAccessibleZ.AccessibleObject_setAccessible_A04",
- match(runtimes(Runtime.ART_V4_4_4, Runtime.JAVA)))
+ match(runtimesUpTo(Version.V4_4_4)))
.put(
"lang.reflect.AccessibleObject.setAccessible_Ljava_lang_reflect_AccessibleObjectZ.AccessibleObject_setAccessible_A04",
- match(artRuntimesUpToAndJava(Runtime.ART_V6_0_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
.put(
"lang.Character.UnicodeBlock.forName_java_lang_String.UnicodeBlock_forName_A03",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
.put(
"lang.System.loadLjava_lang_String.System_load_A02",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V6_0_1)))
- .put(
- "lang.Math.hypotDD.Math_hypot_A04",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V5_1_1)))
+ match(runtimesUpTo(Version.V6_0_1)))
+ .put("lang.Math.hypotDD.Math_hypot_A04", match(runtimesUpTo(Version.V5_1_1)))
.put(
"math.BigInteger.probablePrimeIjava_util_Random.BigInteger_probablePrime_A01",
- match(runtimes(Runtime.ART_V4_0_4)))
- .put("lang.Math.sqrtD.Math_sqrt_A01", match(runtimes(Runtime.ART_V4_0_4)))
- .put("lang.StrictMath.cbrtD.StrictMath_cbrt_A01", match(runtimes(Runtime.ART_V4_0_4)))
- .put("lang.StrictMath.log10D.StrictMath_log10_A01", match(runtimes(Runtime.ART_V4_0_4)))
- .put(
- "lang.StrictMath.powDD.StrictMath_pow_A01",
- match(runtimes(Runtime.ART_V4_0_4, Runtime.JAVA)))
- .put("lang.String.indexOfII.String_indexOf_A01", match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
+ .put("lang.Math.sqrtD.Math_sqrt_A01", match(runtimes(Version.V4_0_4)))
+ .put("lang.StrictMath.cbrtD.StrictMath_cbrt_A01", match(runtimes(Version.V4_0_4)))
+ .put("lang.StrictMath.log10D.StrictMath_log10_A01", match(runtimes(Version.V4_0_4)))
+ .put("lang.StrictMath.powDD.StrictMath_pow_A01", match(runtimes(Version.V4_0_4)))
+ .put("lang.String.indexOfII.String_indexOf_A01", match(runtimes(Version.V4_0_4)))
.put(
"lang.String.indexOfLjava_lang_StringI.String_indexOf_A01",
- match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
.put(
"lang.reflect.Array.getByteLjava_lang_ObjectI.Array_getByte_A03",
- match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
.put(
"lang.reflect.Array.getDoubleLjava_lang_ObjectI.Array_getDouble_A01",
- match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
.put(
"lang.reflect.Array.getDoubleLjava_lang_ObjectI.Array_getDouble_A03",
- match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
.put(
"lang.reflect.Array.getFloatLjava_lang_ObjectI.Array_getFloat_A01",
- match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
.put(
"lang.reflect.Array.getFloatLjava_lang_ObjectI.Array_getFloat_A03",
- match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
.put(
"lang.reflect.Array.getIntLjava_lang_ObjectI.Array_getInt_A01",
- match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
.put(
"lang.reflect.Array.getIntLjava_lang_ObjectI.Array_getInt_A03",
- match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
.put(
"lang.reflect.Array.getLongLjava_lang_ObjectI.Array_getLong_A01",
- match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
.put(
"lang.reflect.Array.getLongLjava_lang_ObjectI.Array_getLong_A03",
- match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
.put(
"lang.reflect.Array.getShortLjava_lang_ObjectI.Array_getShort_A03",
- match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
.put(
"lang.reflect.Array.setBooleanLjava_lang_ObjectIZ.Array_setBoolean_A03",
- match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
.put(
"lang.reflect.Array.setCharLjava_lang_ObjectIC.Array_setChar_A01",
- match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
.put(
"lang.reflect.Array.setLjava_lang_ObjectILjava_lang_Object.Array_set_A01",
- match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
.put(
"lang.reflect.Array.setLjava_lang_ObjectILjava_lang_Object.Array_set_A03",
- match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
.put(
"lang.reflect.Constructor.toString.Constructor_toString_A01",
- match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
.put(
"math.BigInteger.modPowLjava_math_BigIntegerLjava_math_Integer.BigInteger_modPow_A01",
- match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
.put(
"util.concurrent.LinkedBlockingDeque.drainToLjava_util_CollectionI.LinkedBlockingDeque_drainTo_A01",
- match(runtimes(Runtime.ART_V4_0_4)))
+ match(runtimes(Version.V4_0_4)))
.put(
"util.concurrent.LinkedBlockingQueue.drainToLjava_util_CollectionI.LinkedBlockingQueue_drainTo_A01",
- match(runtimes(Runtime.ART_V4_0_4)))
- .put(
- "lang.Thread.stopLjava_lang_Throwable.Thread_stop_A02", match(runtimes(Runtime.JAVA)))
- .put(
- "lang.AssertionError.ConstructorLjava_lang_Object.AssertionError_Constructor_A01",
- match(runtimes(Runtime.ART_V4_0_4)))
- .put(
- "lang.RuntimePermission.Class.RuntimePermission_class_A13",
- match(runtimes(Runtime.JAVA)))
- .put(
- "lang.Thread.stopLjava_lang_Throwable.Thread_stop_A01", match(runtimes(Runtime.JAVA)))
- .put(
- "lang.Runtime.addShutdownHookLjava_lang_Thread.Runtime_addShutdownHook_A02",
- match(runtimes(Runtime.JAVA)))
- .put(
- "lang.ref.PhantomReference.clear.PhantomReference_clear_A01",
- match(runtimes(Runtime.JAVA)))
- .put(
- "lang.ref.WeakReference.isEnqueued.WeakReference_isEnqueued_A01",
- match(runtimes(Runtime.JAVA)))
- .put("lang.ThreadGroup.destroy.ThreadGroup_destroy_A04", match(runtimes(Runtime.JAVA)))
- .put(
- "lang.ThreadGroup.setMaxPriorityI.ThreadGroup_setMaxPriority_A02",
- match(runtimes(Runtime.JAVA)))
- .put(
- "lang.String.replaceFirstLjava_lang_StringLjava_lang_String.String_replaceFirst_A01",
- match(runtimes(Runtime.JAVA)))
- .put(
- "lang.String.replaceAllLjava_lang_StringLjava_lang_String.String_replaceAll_A01",
- match(runtimes(Runtime.JAVA)))
- .put(
- "lang.System.inheritedChannel.System_inheritedChannel_A01",
- match(runtimes(Runtime.JAVA)))
+ match(runtimes(Version.V4_0_4)))
.build(); // end of failuresToTriage
- public static final Multimap<String, TestCondition> flakyWhenRun =
+ public static final Multimap<String, TestCondition> flakyWithArt =
new ImmutableListMultimap.Builder<String, TestCondition>()
- .put("lang.Object.notifyAll.Object_notifyAll_A03", anyDexVm())
- .put("lang.Object.notify.Object_notify_A03", anyDexVm())
+
+ .put("lang.Object.notifyAll.Object_notifyAll_A03", any())
+
+
+
+ .put("lang.Object.notify.Object_notify_A03", any())
+
+
+
.put(
"util.concurrent.ConcurrentSkipListSet.addLjava_lang_Object.ConcurrentSkipListSet_add_A01",
any())
- .put("util.concurrent.SynchronousQueue.ConstructorZ", anyDexVm())
- .put("lang.Thread.interrupt.Thread_interrupt_A04", anyDexVm())
- .put(
- "util.concurrent.SynchronousQueue.ConstructorZ.SynchronousQueue_Constructor_A01",
- anyDexVm())
- .put("lang.Thread.getState.Thread_getState_A01", anyDexVm())
+
+
+
+ .put("util.concurrent.SynchronousQueue.ConstructorZ", any())
+
+
+
+
+ .put("lang.Thread.interrupt.Thread_interrupt_A04", any())
+
+
+
+
+ .put("util.concurrent.SynchronousQueue.ConstructorZ.SynchronousQueue_Constructor_A01",
+ any())
+
+
+
+
+ .put("lang.Thread.getState.Thread_getState_A01", any())
+
+
+
+
.put(
"util.concurrent.ScheduledThreadPoolExecutor.getTaskCount.ScheduledThreadPoolExecutor_getTaskCount_A01",
any())
- .put(
- "lang.ref.PhantomReference.clear.PhantomReference_clear_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V4_4_4)))
- .put(
- "lang.ref.SoftReference.clear.SoftReference_clear_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V4_4_4)))
- .put(
- "lang.ref.WeakReference.clear.WeakReference_clear_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V4_4_4)))
- .put(
- "lang.ref.PhantomReference.isEnqueued.PhantomReference_isEnqueued_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V4_4_4)))
- .put("lang.ref.WeakReference.isEnqueued.WeakReference_isEnqueued_A01", anyDexVm())
- .put(
- "lang.ref.WeakReference.enqueue.WeakReference_enqueue_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V4_4_4)))
- .put(
- "lang.ref.SoftReference.isEnqueued.SoftReference_isEnqueued_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V4_4_4)))
- .put(
- "lang.ref.SoftReference.enqueue.SoftReference_enqueue_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V4_4_4)))
- .put(
- "lang.ref.ReferenceQueue.poll.ReferenceQueue_poll_A01",
- match(TestCondition.artRuntimesUpTo(Runtime.ART_V4_4_4)))
- .put("lang.Runtime.gc.Runtime_gc_A01", match(runtimes(Runtime.JAVA)))
- .build(); // end of flakyWhenRun
- public static final Multimap<String, TestCondition> timeoutsWhenRun =
+
+
+ .put("lang.ref.PhantomReference.clear.PhantomReference_clear_A01",
+ match(runtimesUpTo(Version.V4_4_4)))
+ .put("lang.ref.SoftReference.clear.SoftReference_clear_A01",
+ match(runtimesUpTo(Version.V4_4_4)))
+ .put("lang.ref.WeakReference.clear.WeakReference_clear_A01",
+ match(runtimesUpTo(Version.V4_4_4)))
+
+
+ .put("lang.ref.PhantomReference.isEnqueued.PhantomReference_isEnqueued_A01",
+ match(runtimesUpTo(Version.V4_4_4)))
+
+ .put("lang.ref.WeakReference.isEnqueued.WeakReference_isEnqueued_A01", any())
+
+
+
+ .put("lang.ref.WeakReference.enqueue.WeakReference_enqueue_A01",
+ match(runtimesUpTo(Version.V4_4_4)))
+
+
+
+ .put("lang.ref.SoftReference.isEnqueued.SoftReference_isEnqueued_A01",
+ match(runtimesUpTo(Version.V4_4_4)))
+
+
+ .put("lang.ref.SoftReference.enqueue.SoftReference_enqueue_A01",
+ match(runtimesUpTo(Version.V4_4_4)))
+
+
+
+ .put("lang.ref.ReferenceQueue.poll.ReferenceQueue_poll_A01",
+ match(runtimesUpTo(Version.V4_4_4)))
+
+
+ .put("lang.AssertionError.ConstructorLjava_lang_Object.AssertionError_Constructor_A01",
+ match(runtimes(Version.V4_0_4)))
+
+
+
+
+ .build(); // end of flakyWithArt
+
+ public static final Multimap<String, TestCondition> timeoutsWithArt =
new ImmutableListMultimap.Builder<String, TestCondition>()
- .put("lang.Thread.interrupt.Thread_interrupt_A01", anyDexVm())
- .put("lang.Thread.resume.Thread_resume_A01", anyDexVm())
- .put("lang.Thread.stop.Thread_stop_A01", anyDexVm())
- .put("lang.Thread.suspend.Thread_suspend_A01", anyDexVm())
+ .put("lang.Thread.interrupt.Thread_interrupt_A01", any())
+ .put("lang.Thread.resume.Thread_resume_A01", any())
+ .put("lang.Thread.stop.Thread_stop_A01", any())
+ .put("lang.Thread.suspend.Thread_suspend_A01", any())
.put(
"lang.Thread.ConstructorLjava_lang_ThreadGroupLjava_lang_RunnableLjava_lang_StringJ.Thread_Constructor_A04",
- anyDexVm())
+ any())
.put(
"lang.Thread.ConstructorLjava_lang_ThreadGroupLjava_lang_RunnableLjava_lang_StringJ.Thread_Constructor_A03",
- anyDexVm())
+ any())
.put(
"lang.Thread.ConstructorLjava_lang_ThreadGroupLjava_lang_RunnableLjava_lang_StringJ.Thread_Constructor_A05",
- anyDexVm())
- .put("lang.Thread.setNameLjava_lang_String.Thread_setName_A02", anyDexVm())
- .put("lang.Thread.stop.Thread_stop_A02", anyDexVm())
+ any())
+ .put("lang.Thread.setNameLjava_lang_String.Thread_setName_A02", any())
+ .put("lang.Thread.stop.Thread_stop_A02", any())
.put(
"lang.Thread.ConstructorLjava_lang_ThreadGroupLjava_lang_RunnableLjava_lang_String.Thread_Constructor_A02",
- anyDexVm())
+ any())
.put(
"lang.Thread.ConstructorLjava_lang_ThreadGroupLjava_lang_RunnableLjava_lang_String.Thread_Constructor_A03",
- anyDexVm())
- .put("lang.Thread.getStackTrace.Thread_getStackTrace_A03", anyDexVm())
+ any())
+ .put("lang.Thread.getStackTrace.Thread_getStackTrace_A03", any())
.put(
"lang.Thread.setDefaultUncaughtExceptionHandler.Thread_setDefaultUncaughtExceptionHandler_A02",
- anyDexVm())
- .put("lang.Thread.checkAccess.Thread_checkAccess_A01", anyDexVm())
+ any())
+ .put("lang.Thread.checkAccess.Thread_checkAccess_A01", any())
.put(
"lang.Thread.ConstructorLjava_lang_ThreadGroupLjava_lang_RunnableLjava_lang_String.Thread_Constructor_A04",
- anyDexVm())
- .put(
- "lang.Thread.setUncaughtExceptionHandler.Thread_setUncaughtExceptionHandler_A02",
- anyDexVm())
- .put("lang.Thread.stopLjava_lang_Throwable.Thread_stop_A01", anyDexVm())
- .put("lang.Thread.getAllStackTraces.Thread_getAllStackTraces_A02", anyDexVm())
+ any())
+ .put("lang.Thread.setUncaughtExceptionHandler.Thread_setUncaughtExceptionHandler_A02",
+ any())
+ .put("lang.Thread.stopLjava_lang_Throwable.Thread_stop_A01", any())
+ .put("lang.Thread.getAllStackTraces.Thread_getAllStackTraces_A02", any())
.put(
"lang.Thread.setContextClassLoaderLjava_lang_ClassLoader.Thread_setContextClassLoader_A02",
- anyDexVm())
- .put("lang.Thread.setPriorityI.Thread_setPriority_A02", anyDexVm())
- .put("lang.Thread.stopLjava_lang_Throwable.Thread_stop_A02", anyDexVm())
- .put(
- "lang.Runtime.execLjava_lang_String_Ljava_lang_StringLjava_io_File.Runtime_exec_A04",
- anyDexVm())
- .put("lang.Thread.getContextClassLoader.Thread_getContextClassLoader_A02", anyDexVm())
- .put("lang.ThreadGroup.suspend.ThreadGroup_suspend_A02", anyDexVm())
- .put("lang.Thread.setDaemonZ.Thread_setDaemon_A03", anyDexVm())
- .put("lang.ProcessBuilder.environment.ProcessBuilder_environment_A07", anyDexVm())
+ any())
+ .put("lang.Thread.setPriorityI.Thread_setPriority_A02", any())
+ .put("lang.Thread.stopLjava_lang_Throwable.Thread_stop_A02", any())
+ .put("lang.Runtime.execLjava_lang_String_Ljava_lang_StringLjava_io_File.Runtime_exec_A04",
+ any())
+ .put("lang.Thread.getContextClassLoader.Thread_getContextClassLoader_A02", any())
+ .put("lang.ThreadGroup.suspend.ThreadGroup_suspend_A02", any())
+ .put("lang.Thread.setDaemonZ.Thread_setDaemon_A03", any())
+ .put("lang.ProcessBuilder.environment.ProcessBuilder_environment_A07", any())
.put(
"lang.Runtime.exec_Ljava_lang_String_Ljava_lang_StringLjava_io_File.Runtime_exec_A04",
- anyDexVm())
- .put("lang.Runtime.execLjava_lang_String_Ljava_lang_String.Runtime_exec_A04", anyDexVm())
- .put("lang.Runtime.exec_Ljava_lang_String.Runtime_exec_A04", anyDexVm())
- .put("lang.Runtime.execLjava_lang_String.Runtime_exec_A04", anyDexVm())
- .put("lang.System.clearPropertyLjava_lang_String.System_clearProperty_A03", anyDexVm())
- .put("lang.System.getSecurityManager.System_getSecurityManager_A01", anyDexVm())
- .put("lang.System.setInLjava_io_InputStream.System_setIn_A02", anyDexVm())
- .put("lang.System.setOutLjava_io_PrintStream.System_setOut_A02", anyDexVm())
- .put("lang.ThreadGroup.destroy.ThreadGroup_destroy_A04", anyDexVm())
- .put("lang.ThreadGroup.enumerate_ThreadGroupZ.ThreadGroup_enumerate_A03", anyDexVm())
- .put("lang.ThreadGroup.enumerate_Thread.ThreadGroup_enumerate_A03", anyDexVm())
- .put("lang.ThreadGroup.enumerate_ThreadZ.ThreadGroup_enumerate_A03", anyDexVm())
- .put("lang.ThreadGroup.interrupt.ThreadGroup_interrupt_A02", anyDexVm())
- .put("lang.ThreadGroup.resume.ThreadGroup_resume_A02", anyDexVm())
- .put("lang.ThreadGroup.setMaxPriorityI.ThreadGroup_setMaxPriority_A02", anyDexVm())
- .put("lang.Runtime.exec_Ljava_lang_String_Ljava_lang_String.Runtime_exec_A04", anyDexVm())
- .put("lang.System.getenvLjava_lang_String.System_getenv_A03", anyDexVm())
- .put(
- "lang.System.setPropertyLjava_lang_StringLjava_lang_String.System_setProperty_A02",
- anyDexVm())
- .put("lang.ThreadGroup.enumerate_ThreadGroup.ThreadGroup_enumerate_A03", anyDexVm())
- .put("lang.ThreadGroup.getParent.ThreadGroup_getParent_A02", anyDexVm())
- .put("lang.ThreadGroup.setDaemonZ.ThreadGroup_setDaemon_A02", anyDexVm())
- .put("lang.ThreadGroup.stop.ThreadGroup_stop_A02", anyDexVm())
- .put("lang.Class.getSuperclass.Class_getSuperclass_A01", anyDexVm())
- .put("lang.System.getenv.System_getenv_A03", anyDexVm())
- .put("lang.System.inheritedChannel.System_inheritedChannel_A01", anyDexVm())
+ any())
+ .put("lang.Runtime.execLjava_lang_String_Ljava_lang_String.Runtime_exec_A04", any())
+ .put("lang.Runtime.exec_Ljava_lang_String.Runtime_exec_A04", any())
+ .put("lang.Runtime.execLjava_lang_String.Runtime_exec_A04", any())
+ .put("lang.System.clearPropertyLjava_lang_String.System_clearProperty_A03", any())
+ .put("lang.System.getSecurityManager.System_getSecurityManager_A01", any())
+ .put("lang.System.setInLjava_io_InputStream.System_setIn_A02", any())
+ .put("lang.System.setOutLjava_io_PrintStream.System_setOut_A02", any())
+ .put("lang.ThreadGroup.destroy.ThreadGroup_destroy_A04", any())
+ .put("lang.ThreadGroup.enumerate_ThreadGroupZ.ThreadGroup_enumerate_A03", any())
+ .put("lang.ThreadGroup.enumerate_Thread.ThreadGroup_enumerate_A03", any())
+ .put("lang.ThreadGroup.enumerate_ThreadZ.ThreadGroup_enumerate_A03", any())
+ .put("lang.ThreadGroup.interrupt.ThreadGroup_interrupt_A02", any())
+ .put("lang.ThreadGroup.resume.ThreadGroup_resume_A02", any())
+ .put("lang.ThreadGroup.setMaxPriorityI.ThreadGroup_setMaxPriority_A02", any())
+ .put("lang.Runtime.exec_Ljava_lang_String_Ljava_lang_String.Runtime_exec_A04", any())
+ .put("lang.System.getenvLjava_lang_String.System_getenv_A03", any())
+ .put("lang.System.setPropertyLjava_lang_StringLjava_lang_String.System_setProperty_A02",
+ any())
+ .put("lang.ThreadGroup.enumerate_ThreadGroup.ThreadGroup_enumerate_A03", any())
+ .put("lang.ThreadGroup.getParent.ThreadGroup_getParent_A02", any())
+ .put("lang.ThreadGroup.setDaemonZ.ThreadGroup_setDaemon_A02", any())
+ .put("lang.ThreadGroup.stop.ThreadGroup_stop_A02", any())
+ .put("lang.Class.getSuperclass.Class_getSuperclass_A01", any())
+ .put("lang.System.getenv.System_getenv_A03", any())
+ .put("lang.System.inheritedChannel.System_inheritedChannel_A01", any())
.put(
"util.concurrent.ArrayBlockingQueue.containsLjava_lang_Object.ArrayBlockingQueue_contains_A01",
- anyDexVm())
- .put(
- "lang.System.arraycopyLjava_lang_ObjectILjava_lang_ObjectII.System_arraycopy_A03",
- anyDexVm())
- .put("lang.System.setErrLjava_io_PrintStream.System_setErr_A02", anyDexVm())
+ any())
+ .put("lang.System.arraycopyLjava_lang_ObjectILjava_lang_ObjectII.System_arraycopy_A03",
+ any())
+ .put("lang.System.setErrLjava_io_PrintStream.System_setErr_A02", any())
.put(
"util.concurrent.ArrayBlockingQueue.containsLjava_lang_Object.ArrayBlockingQueue_contains_A01",
- anyDexVm())
+ any())
.put(
"lang.System.setSecurityManagerLjava_lang_SecurityManager.System_setSecurityManager_A01",
- anyDexVm())
+ any())
.put(
"util.concurrent.ArrayBlockingQueue.containsLjava_lang_Object.ArrayBlockingQueue_contains_A01",
- anyDexVm())
+ any())
.put(
"util.concurrent.ArrayBlockingQueue.containsLjava_lang_Object.ArrayBlockingQueue_contains_A01",
- anyDexVm())
- .put(
- "lang.System.setPropertiesLjava_util_Properties.System_setProperties_A01", anyDexVm())
+ any())
+ .put("lang.System.setPropertiesLjava_util_Properties.System_setProperties_A01", any())
.put(
"util.concurrent.CopyOnWriteArrayList.ConstructorLjava_util_Collection.CopyOnWriteArrayList_Constructor_A02",
- anyDexVm())
+ any())
.put("util.concurrent.CyclicBarrier.reset.CyclicBarrier_reset_A03", any())
- .put("lang.System.clearPropertyLjava_lang_String.System_clearProperty_A01", anyDexVm())
- .put("lang.System.getenv.System_getenv_A04", anyDexVm())
- .put("lang.RuntimePermission.Class.RuntimePermission_class_A02", anyDexVm())
- .put("lang.RuntimePermission.Class.RuntimePermission_class_A13", anyDexVm())
- .build(); // end of timeoutsWhenRun
+ .put("lang.System.clearPropertyLjava_lang_String.System_clearProperty_A01", any())
+ .put("lang.System.getenv.System_getenv_A04", any())
+ .put("lang.RuntimePermission.Class.RuntimePermission_class_A02", any())
+ .put("lang.RuntimePermission.Class.RuntimePermission_class_A13", any())
+ .build(); // end of timeoutsWithArt
public static final Multimap<String, TestCondition> requiresInliningDisabled =
new ImmutableListMultimap.Builder<String, TestCondition>()
@@ -1821,18 +1605,15 @@
.put("lang.Thread.dumpStack.Thread_dumpStack_A01", match(R8_COMPILER))
.build();
- public static final Set<String> compilationFailsWithAsmMethodTooLarge =
- ImmutableSet.of("lang.StrictMath.powDD.StrictMath_pow_A01");
-
private static final boolean testMatch(
Multimap<String, TestCondition> testConditions,
String name,
CompilerUnderTest compilerUnderTest,
- Runtime runtime,
+ DexVm dexVm,
CompilationMode compilationMode) {
Collection<TestCondition> entries = testConditions.get(name);
for (TestCondition entry : entries) {
- if (entry.test(DexTool.NONE, compilerUnderTest, runtime, compilationMode)) {
+ if (entry.test(DexTool.NONE, compilerUnderTest, dexVm.getVersion(), compilationMode)) {
return true;
}
}
@@ -1842,28 +1623,28 @@
public static final <T> T getExpectedOutcome(
String name,
CompilerUnderTest compilerUnderTest,
- Runtime runtime,
+ DexVm dexVm,
CompilationMode compilationMode,
BiFunction<Outcome, Boolean, T> consumer) {
Outcome outcome = null;
- if (testMatch(failuresToTriage, name, compilerUnderTest, runtime, compilationMode)) {
- outcome = Outcome.FAILS_WHEN_RUN;
+ if (testMatch(failuresToTriage, name, compilerUnderTest, dexVm, compilationMode)) {
+ outcome = Outcome.FAILS_WITH_ART;
}
- if (testMatch(timeoutsWhenRun, name, compilerUnderTest, runtime, compilationMode)) {
+ if (testMatch(timeoutsWithArt, name, compilerUnderTest, dexVm, compilationMode)) {
assert outcome == null;
- outcome = Outcome.TIMEOUTS_WHEN_RUN;
+ outcome = Outcome.TIMEOUTS_WITH_ART;
}
- if (testMatch(flakyWhenRun, name, compilerUnderTest, runtime, compilationMode)) {
+ if (testMatch(flakyWithArt, name, compilerUnderTest, dexVm, compilationMode)) {
assert outcome == null;
- outcome = Outcome.FLAKY_WHEN_RUN;
+ outcome = Outcome.FLAKY_WITH_ART;
}
if (outcome == null) {
outcome = Outcome.PASSES;
}
- boolean disableInlining =
- testMatch(requiresInliningDisabled, name, compilerUnderTest, runtime, compilationMode);
+ boolean disableInlining = testMatch(requiresInliningDisabled, name, compilerUnderTest, dexVm,
+ compilationMode);
return consumer.apply(outcome, disableInlining);
}
}
diff --git a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
index dd4ce6f..3ef4037 100644
--- a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
@@ -7,7 +7,6 @@
import static org.junit.Assert.fail;
import com.android.tools.r8.JctfTestSpecifications.Outcome;
-import com.android.tools.r8.TestCondition.Runtime;
import com.android.tools.r8.TestCondition.RuntimeSet;
import com.android.tools.r8.ToolHelper.ArtCommandBuilder;
import com.android.tools.r8.ToolHelper.DexVm;
@@ -82,8 +81,7 @@
D8,
R8,
R8_AFTER_D8, // refers to the R8 (default: debug) step but implies a previous D8 step as well
- D8_AFTER_R8CF,
- R8CF
+ D8_AFTER_R8CF
}
public static final String ART_TESTS_DIR = "tests/2017-10-04/art";
@@ -1092,8 +1090,8 @@
private final DexTool dexTool;
// Native library to use for running this test - if any.
private final String nativeLibrary;
- // Skip running this test with Art or Java - most likely due to timeout.
- private final boolean skipRun;
+ // Skip running this test with Art - most likely due to timeout.
+ private final boolean skipArt;
// Skip running this test altogether. For example, there might be no input in this configuration
// (e.g. no class files).
private final boolean skipTest;
@@ -1101,9 +1099,9 @@
private final boolean failsWithX8;
// Expected to fail compilation with a CompilationError.
private final boolean expectedToFailWithX8;
- // Fails running the output in Art or on Java with an assertion error. On Art it's typically due
- // to verification errors.
- private final boolean failsOnRun;
+ // Fails running the output in Art with an assertion error. Typically due to verification
+ // errors.
+ private final boolean failsWithArt;
// Runs in art but fails the run because it produces different results.
private final boolean failsWithArtOutput;
// Original fails in art but the R8/D8 version can run in art.
@@ -1121,10 +1119,10 @@
String name,
DexTool dexTool,
File directory,
- boolean skipRun,
+ boolean skipArt,
boolean skipTest,
boolean failsWithX8,
- boolean failsOnRun,
+ boolean failsWithArt,
boolean failsWithArtOutput,
boolean failsWithArtOriginalOnly,
String nativeLibrary,
@@ -1132,15 +1130,16 @@
boolean outputMayDiffer,
boolean disableInlining,
boolean disableClassInlining,
- boolean hasMissingClasses) {
+ boolean hasMissingClasses,
+ DexVm dexVm) {
this.name = name;
this.dexTool = dexTool;
this.nativeLibrary = nativeLibrary;
this.directory = directory;
- this.skipRun = skipRun;
- this.skipTest = skipTest;
+ this.skipArt = skipArt;
+ this.skipTest = skipTest || (ToolHelper.isWindows() && dexVm.getKind() == Kind.HOST);
this.failsWithX8 = failsWithX8;
- this.failsOnRun = failsOnRun;
+ this.failsWithArt = failsWithArt;
this.failsWithArtOutput = failsWithArtOutput;
this.failsWithArtOriginalOnly = failsWithArtOriginalOnly;
this.expectedToFailWithX8 = expectedToFailWithX8;
@@ -1154,18 +1153,18 @@
String name,
DexTool dexTool,
File directory,
- boolean skipRun,
- boolean failsOnRun,
+ boolean skipArt,
+ boolean failsWithArt,
boolean disableInlining,
DexVm dexVm) {
this(
name,
dexTool,
directory,
- skipRun,
- ToolHelper.isWindows() && dexVm.getKind() == Kind.HOST,
+ skipArt,
false,
- failsOnRun,
+ false,
+ failsWithArt,
false,
false,
null,
@@ -1173,32 +1172,8 @@
false,
disableInlining,
true, // Disable class inlining for JCTF tests.
- false);
- }
-
- TestSpecification(
- String name,
- DexTool dexTool,
- File directory,
- boolean skipRun,
- boolean failsOnRun,
- boolean disableInlining) {
- this(
- name,
- dexTool,
- directory,
- skipRun,
false,
- false,
- failsOnRun,
- false,
- false,
- null,
- false,
- false,
- disableInlining,
- true, // Disable class inlining for JCTF tests.
- false);
+ dexVm);
}
public File resolveFile(String name) {
@@ -1352,7 +1327,7 @@
dexTool,
testDir,
skipArt.contains(name),
- skip || ToolHelper.isWindows() && dexVm.getKind() == Kind.HOST,
+ skip,
failsWithCompiler.contains(name),
failsWithArt.contains(name),
failsRunWithArtOutput.contains(name),
@@ -1362,7 +1337,8 @@
outputMayDiffer.contains(name),
requireInliningToBeDisabled.contains(name),
requireClassInliningToBeDisabled.contains(name),
- hasMissingClasses.contains(name)));
+ hasMissingClasses.contains(name),
+ dexVm));
}
}
return data;
@@ -1372,7 +1348,6 @@
CompilationMode compilationMode = null;
switch (compilerUnderTest) {
case R8:
- case R8CF:
compilationMode = CompilationMode.RELEASE;
break;
case D8:
@@ -1559,27 +1534,19 @@
break;
}
case R8:
- case R8CF:
{
- boolean cfBackend = compilerUnderTest == CompilerUnderTest.R8CF;
R8Command.Builder builder =
R8Command.builder()
.setMode(mode)
- .setOutput(
- Paths.get(resultPath),
- cfBackend ? OutputMode.ClassFile : OutputMode.DexIndexed);
+ .setOutput(Paths.get(resultPath), OutputMode.DexIndexed);
// Add program files directly to the underlying app to avoid errors on DEX inputs.
ToolHelper.getAppBuilder(builder).addProgramFiles(ListUtils.map(fileNames, Paths::get));
- if (cfBackend) {
- builder.addLibraryFiles(ToolHelper.getJava8RuntimeJar());
- } else {
AndroidApiLevel minSdkVersion = needMinSdkVersion.get(name);
if (minSdkVersion != null) {
builder.setMinApiLevel(minSdkVersion.getLevel());
ToolHelper.addFilteredAndroidJar(builder, minSdkVersion);
} else {
ToolHelper.addFilteredAndroidJar(builder, AndroidApiLevel.getDefault());
- }
}
if (keepRulesFile != null) {
builder.addProguardConfigurationFiles(Paths.get(keepRulesFile));
@@ -1665,36 +1632,18 @@
name,
dexTool,
resultDir,
- outcome == JctfTestSpecifications.Outcome.TIMEOUTS_WHEN_RUN
- || outcome == JctfTestSpecifications.Outcome.FLAKY_WHEN_RUN,
- outcome == JctfTestSpecifications.Outcome.FAILS_WHEN_RUN,
+ outcome == JctfTestSpecifications.Outcome.TIMEOUTS_WITH_ART
+ || outcome == JctfTestSpecifications.Outcome.FLAKY_WITH_ART,
+ outcome == JctfTestSpecifications.Outcome.FAILS_WITH_ART,
noInlining,
dexVm);
}
- private static BiFunction<Outcome, Boolean, TestSpecification> jctfOutcomeToSpecificationJava(
- String name, File resultDir) {
- return (outcome, noInlining) ->
- new TestSpecification(
- name,
- DexTool.NONE,
- resultDir,
- outcome == JctfTestSpecifications.Outcome.TIMEOUTS_WHEN_RUN
- || outcome == JctfTestSpecifications.Outcome.FLAKY_WHEN_RUN,
- outcome == JctfTestSpecifications.Outcome.FAILS_WHEN_RUN,
- noInlining);
- }
-
protected void runJctfTest(CompilerUnderTest compilerUnderTest, String classFilePath,
String fullClassName)
throws IOException, ProguardRuleParserException, ExecutionException,
CompilationFailedException {
- Runtime runtime;
- if (compilerUnderTest == CompilerUnderTest.R8CF) {
- runtime = Runtime.JAVA;
- } else {
- runtime = Runtime.fromDexVmVersion(ToolHelper.getDexVm().getVersion());
- }
+ DexVm dexVm = ToolHelper.getDexVm();
CompilerUnderTest firstCompilerUnderTest =
compilerUnderTest == CompilerUnderTest.R8_AFTER_D8
@@ -1708,11 +1657,9 @@
JctfTestSpecifications.getExpectedOutcome(
name,
firstCompilerUnderTest,
- runtime,
+ dexVm,
compilationMode,
- compilerUnderTest == CompilerUnderTest.R8CF
- ? jctfOutcomeToSpecificationJava(name, resultDir)
- : jctfOutcomeToSpecification(name, DexTool.NONE, resultDir, ToolHelper.getDexVm()));
+ jctfOutcomeToSpecification(name, DexTool.NONE, resultDir, dexVm));
if (specification.skipTest) {
return;
@@ -1777,19 +1724,14 @@
fileNames.add(f.getCanonicalPath());
}
- if (compilerUnderTest == CompilerUnderTest.R8CF) {
- runJctfTestDoRunOnJava(fileNames, specification, fullClassName, compilationMode, resultDir);
- } else {
-
- runJctfTestDoRunOnArt(
- fileNames,
- specification,
- firstCompilerUnderTest,
- fullClassName,
- compilationMode,
- ToolHelper.getDexVm(),
- resultDir);
- }
+ runJctfTestDoRunOnArt(
+ fileNames,
+ specification,
+ firstCompilerUnderTest,
+ fullClassName,
+ compilationMode,
+ dexVm,
+ resultDir);
// second pass if D8_R8Debug
if (compilerUnderTest == CompilerUnderTest.R8_AFTER_D8) {
@@ -1804,9 +1746,9 @@
JctfTestSpecifications.getExpectedOutcome(
name,
CompilerUnderTest.R8_AFTER_D8,
- runtime,
+ dexVm,
compilationMode,
- jctfOutcomeToSpecification(name, DexTool.DX, r8ResultDir, ToolHelper.getDexVm()));
+ jctfOutcomeToSpecification(name, DexTool.DX, r8ResultDir, dexVm));
if (specification.skipTest) {
return;
}
@@ -1816,7 +1758,7 @@
CompilerUnderTest.R8,
fullClassName,
compilationMode,
- ToolHelper.getDexVm(),
+ dexVm,
r8ResultDir);
}
}
@@ -1829,7 +1771,8 @@
CompilationMode mode,
DexVm dexVm,
File resultDir)
- throws IOException, CompilationFailedException {
+ throws IOException, ProguardRuleParserException, ExecutionException,
+ CompilationFailedException {
executeCompilerUnderTest(compilerUnderTest, fileNames, resultDir.getAbsolutePath(), mode,
specification.disableInlining, specification.disableClassInlining,
specification.hasMissingClasses);
@@ -1854,7 +1797,7 @@
}
boolean compileOnly = System.getProperty("jctf_compile_only", "0").equals("1");
- if (compileOnly || specification.skipRun) {
+ if (compileOnly || specification.skipArt) {
if (ToolHelper.isDex2OatSupported()) {
// verify dex code instead of running it
Path oatFile = temp.getRoot().toPath().resolve("all.oat");
@@ -1873,7 +1816,7 @@
builder.setMainClass(JUNIT_TEST_RUNNER);
builder.appendProgramArgument(fullClassName);
- if (specification.failsOnRun) {
+ if (specification.failsWithArt) {
expectException(AssertionError.class);
}
@@ -1884,54 +1827,10 @@
specification.resolveFile("classes.dex"), e);
throw e;
}
- if (specification.failsOnRun) {
- System.err.println("Should have failed run with art.");
- }
- }
-
- private void runJctfTestDoRunOnJava(
- Collection<String> fileNames,
- TestSpecification specification,
- String fullClassName,
- CompilationMode mode,
- File resultDir)
- throws IOException, CompilationFailedException {
- if (JctfTestSpecifications.compilationFailsWithAsmMethodTooLarge.contains(specification.name)) {
- expectException(org.objectweb.asm.MethodTooLargeException.class);
- }
- executeCompilerUnderTest(
- CompilerUnderTest.R8CF,
- fileNames,
- resultDir.getAbsolutePath(),
- mode,
- specification.disableInlining,
- specification.disableClassInlining,
- specification.hasMissingClasses);
-
- boolean compileOnly = System.getProperty("jctf_compile_only", "0").equals("1");
-
- if (compileOnly || specification.skipRun) {
+ if (specification.failsWithArt) {
+ System.err.println("Should have failed run with art");
return;
}
-
- if (specification.failsOnRun) {
- expectException(AssertionError.class);
- }
-
- ProcessResult result = ToolHelper.runJava(resultDir.toPath(), JUNIT_TEST_RUNNER, fullClassName);
-
- if (result.exitCode != 0) {
- throw new AssertionError(
- "Test failed on java.\nSTDOUT >>>\n"
- + result.stdout
- + "\n<<< STDOUT\nSTDERR >>>\n"
- + result.stderr
- + "\n<<< STDERR\n");
- }
-
- if (specification.failsOnRun) {
- System.err.println("Should have failed run with java.");
- }
}
protected void runArtTest(DexVm dexVm, CompilerUnderTest compilerUnderTest) throws Throwable {
@@ -2073,8 +1972,7 @@
specification.hasMissingClasses);
}
- if (!specification.skipRun
- && (ToolHelper.artSupported() || ToolHelper.dealsWithGoldenFiles())) {
+ if (!specification.skipArt && (ToolHelper.artSupported() || ToolHelper.dealsWithGoldenFiles())) {
File originalFile;
File processedFile;
@@ -2094,7 +1992,7 @@
File expectedFile = specification.resolveFile("expected.txt");
String expected =
com.google.common.io.Files.asCharSource(expectedFile, Charsets.UTF_8).read();
- if (specification.failsOnRun) {
+ if (specification.failsWithArt) {
expectException(AssertionError.class);
}
@@ -2107,7 +2005,7 @@
specification.resolveFile("classes.dex"), e);
throw e;
}
- if (specification.failsOnRun) {
+ if (specification.failsWithArt) {
System.err.println("Should have failed run with art");
return;
}
diff --git a/src/test/java/com/android/tools/r8/R8RunExamplesAndroidOTest.java b/src/test/java/com/android/tools/r8/R8RunExamplesAndroidOTest.java
index 15dc55a..101fbb8 100644
--- a/src/test/java/com/android/tools/r8/R8RunExamplesAndroidOTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunExamplesAndroidOTest.java
@@ -37,7 +37,6 @@
"-allowaccessmodification"
);
-
private static final ArrayList<String> PROGUARD_OPTIONS_N_PLUS = Lists.newArrayList(
"-keepclasseswithmembers public class * {",
" public static void main(java.lang.String[]);",
@@ -101,7 +100,7 @@
.withOptionConsumer(opts -> opts.enableClassInlining = false)
.withBuilderTransformation(
b -> b.addProguardConfiguration(PROGUARD_OPTIONS, Origin.unknown()))
- .withDexCheck(inspector -> checkLambdaCount(inspector, 179, "lambdadesugaring"))
+ .withDexCheck(inspector -> checkLambdaCount(inspector, 180, "lambdadesugaring"))
.run();
test("lambdadesugaring", "lambdadesugaring", "LambdaDesugaring")
@@ -109,7 +108,7 @@
.withOptionConsumer(opts -> opts.enableClassInlining = true)
.withBuilderTransformation(
b -> b.addProguardConfiguration(PROGUARD_OPTIONS, Origin.unknown()))
- .withDexCheck(inspector -> checkLambdaCount(inspector, 23, "lambdadesugaring"))
+ .withDexCheck(inspector -> checkLambdaCount(inspector, 24, "lambdadesugaring"))
.run();
}
@@ -121,7 +120,7 @@
.withOptionConsumer(opts -> opts.enableClassInlining = false)
.withBuilderTransformation(
b -> b.addProguardConfiguration(PROGUARD_OPTIONS, Origin.unknown()))
- .withDexCheck(inspector -> checkLambdaCount(inspector, 179, "lambdadesugaring"))
+ .withDexCheck(inspector -> checkLambdaCount(inspector, 180, "lambdadesugaring"))
.run();
test("lambdadesugaring", "lambdadesugaring", "LambdaDesugaring")
@@ -129,7 +128,7 @@
.withOptionConsumer(opts -> opts.enableClassInlining = true)
.withBuilderTransformation(
b -> b.addProguardConfiguration(PROGUARD_OPTIONS, Origin.unknown()))
- .withDexCheck(inspector -> checkLambdaCount(inspector, 23, "lambdadesugaring"))
+ .withDexCheck(inspector -> checkLambdaCount(inspector, 24, "lambdadesugaring"))
.run();
}
diff --git a/src/test/java/com/android/tools/r8/TestCondition.java b/src/test/java/com/android/tools/r8/TestCondition.java
index c8dca5c..b85e2f2 100644
--- a/src/test/java/com/android/tools/r8/TestCondition.java
+++ b/src/test/java/com/android/tools/r8/TestCondition.java
@@ -6,52 +6,13 @@
import com.android.tools.r8.R8RunArtTestsTest.CompilerUnderTest;
import com.android.tools.r8.R8RunArtTestsTest.DexTool;
import com.android.tools.r8.ToolHelper.DexVm;
-import com.android.tools.r8.errors.Unreachable;
-import com.google.common.collect.Sets;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.EnumSet;
-import java.util.List;
+import java.util.Set;
import java.util.stream.Collectors;
public class TestCondition {
- enum Runtime {
- ART_V4_0_4,
- ART_V4_4_4,
- ART_V5_1_1,
- ART_V6_0_1,
- ART_V7_0_0,
- ART_DEFAULT,
- JAVA;
-
- static final Runtime LOWEST_ART_VERSION = ART_V4_0_4;
- static final Runtime HIGHEST_ART_VERSION = ART_DEFAULT;
-
- static Runtime fromDexVmVersion(DexVm.Version version) {
- switch (version) {
- case V4_0_4:
- return ART_V4_0_4;
- case V4_4_4:
- return ART_V4_4_4;
- case V5_1_1:
- return ART_V5_1_1;
- case V6_0_1:
- return ART_V6_0_1;
- case V7_0_0:
- return ART_V7_0_0;
- case DEFAULT:
- return ART_DEFAULT;
- default:
- throw new Unreachable();
- }
- }
-
- static boolean isArt(Runtime runtime) {
- return EnumSet.range(LOWEST_ART_VERSION, HIGHEST_ART_VERSION).contains(runtime);
- }
- }
-
static class ToolSet {
final EnumSet<DexTool> set;
@@ -72,18 +33,14 @@
static class RuntimeSet {
- final EnumSet<Runtime> set;
+ final EnumSet<DexVm.Version> set;
- public RuntimeSet(EnumSet<Runtime> set) {
+ public RuntimeSet(EnumSet<DexVm.Version> set) {
this.set = set;
}
- public static RuntimeSet fromDexVmVersionSet(EnumSet<DexVm.Version> dexVmSet) {
- List<Runtime> list = new ArrayList<>(dexVmSet.size());
- for (DexVm.Version version : dexVmSet) {
- list.add(Runtime.fromDexVmVersion(version));
- }
- return new RuntimeSet(EnumSet.copyOf(list));
+ public RuntimeSet(Set<DexVm.Version> set) {
+ this.set = EnumSet.copyOf(set);
}
}
@@ -106,15 +63,12 @@
// settings, respectively
public static final CompilerSet R8_COMPILER =
compilers(
- CompilerUnderTest.R8,
- CompilerUnderTest.R8_AFTER_D8,
- CompilerUnderTest.D8_AFTER_R8CF,
- CompilerUnderTest.R8CF);
+ CompilerUnderTest.R8, CompilerUnderTest.R8_AFTER_D8, CompilerUnderTest.D8_AFTER_R8CF);
public static final CompilerSet R8DEX_COMPILER =
compilers(CompilerUnderTest.R8, CompilerUnderTest.R8_AFTER_D8);
public static final CompilerSet R8_AFTER_D8_COMPILER = compilers(CompilerUnderTest.R8_AFTER_D8);
public static final CompilerSet R8_NOT_AFTER_D8_COMPILER =
- compilers(CompilerUnderTest.R8, CompilerUnderTest.D8_AFTER_R8CF, CompilerUnderTest.R8CF);
+ compilers(CompilerUnderTest.R8, CompilerUnderTest.D8_AFTER_R8CF);
public static final CompilerSet R8DEX_NOT_AFTER_D8_COMPILER = compilers(CompilerUnderTest.R8);
public static final CompilationModeSet DEBUG_MODE =
@@ -125,25 +79,23 @@
private static final ToolSet ANY_TOOL = new ToolSet(EnumSet.allOf(DexTool.class));
private static final CompilerSet ANY_COMPILER =
new CompilerSet(EnumSet.allOf(CompilerUnderTest.class));
- private static final RuntimeSet ANY_RUNTIME = new RuntimeSet(EnumSet.allOf(Runtime.class));
- private static final RuntimeSet ANY_DEX_VM_RUNTIME =
- RuntimeSet.fromDexVmVersionSet(EnumSet.allOf(ToolHelper.DexVm.Version.class));
+ private static final RuntimeSet ANY_RUNTIME = new RuntimeSet(EnumSet.allOf(DexVm.Version.class));
private static final CompilationModeSet ANY_MODE =
new CompilationModeSet(EnumSet.allOf(CompilationMode.class));
private final EnumSet<DexTool> dexTools;
private final EnumSet<CompilerUnderTest> compilers;
- private final EnumSet<Runtime> runtimes;
+ private final EnumSet<DexVm.Version> dexVms;
private final EnumSet<CompilationMode> compilationModes;
public TestCondition(
EnumSet<DexTool> dexTools,
EnumSet<CompilerUnderTest> compilers,
- EnumSet<Runtime> runtimes,
+ EnumSet<DexVm.Version> dexVms,
EnumSet<CompilationMode> compilationModes) {
this.dexTools = dexTools;
this.compilers = compilers;
- this.runtimes = runtimes;
+ this.dexVms = dexVms;
this.compilationModes = compilationModes;
}
@@ -159,48 +111,20 @@
public static RuntimeSet runtimes(DexVm.Version... runtimes) {
assert runtimes.length > 0;
- return RuntimeSet.fromDexVmVersionSet(EnumSet.copyOf(Arrays.asList(runtimes)));
- }
-
- public static RuntimeSet runtimes(Runtime... runtimes) {
- assert runtimes.length > 0;
return new RuntimeSet(EnumSet.copyOf(Arrays.asList(runtimes)));
}
public static RuntimeSet runtimesUpTo(DexVm.Version upto) {
- return RuntimeSet.fromDexVmVersionSet(EnumSet.range(DexVm.Version.first(), upto));
- }
-
- public static RuntimeSet artRuntimesUpTo(Runtime upto) {
- assert Runtime.isArt(upto);
- return new RuntimeSet(EnumSet.range(Runtime.LOWEST_ART_VERSION, upto));
- }
-
- public static RuntimeSet artRuntimesUpToAndJava(Runtime upto) {
- return runtimes(
- Sets.union(artRuntimesUpTo(upto).set, runtimes(Runtime.JAVA).set).toArray(new Runtime[0]));
+ return new RuntimeSet(EnumSet.range(DexVm.Version.first(), upto));
}
public static RuntimeSet runtimesFrom(DexVm.Version start) {
- return RuntimeSet.fromDexVmVersionSet(EnumSet.range(start, DexVm.Version.last()));
- }
-
- public static RuntimeSet artRuntimesFrom(Runtime start) {
- assert Runtime.isArt(start);
- return new RuntimeSet(EnumSet.range(start, Runtime.HIGHEST_ART_VERSION));
- }
-
- public static RuntimeSet artRuntimesFromAndJava(Runtime start) {
- return runtimes(
- Sets.union(artRuntimesFrom(start).set, runtimes(Runtime.JAVA).set).toArray(new Runtime[0]));
+ return new RuntimeSet(EnumSet.range(start, DexVm.Version.last()));
}
public static RuntimeSet and(RuntimeSet... sets) {
- return new RuntimeSet(
- EnumSet.copyOf(
- Arrays.stream(sets)
- .flatMap(runtimeSet -> runtimeSet.set.stream())
- .collect(Collectors.toSet())));
+ return new RuntimeSet(Arrays.stream(sets).flatMap(runtimeSet -> runtimeSet.set.stream())
+ .collect(Collectors.toSet()));
}
public static TestCondition match(
@@ -219,11 +143,6 @@
return match(TestCondition.ANY_TOOL, TestCondition.ANY_COMPILER, TestCondition.ANY_RUNTIME);
}
- public static TestCondition anyDexVm() {
- return match(
- TestCondition.ANY_TOOL, TestCondition.ANY_COMPILER, TestCondition.ANY_DEX_VM_RUNTIME);
- }
-
public static TestCondition match(ToolSet tools) {
return match(tools, TestCondition.ANY_COMPILER, TestCondition.ANY_RUNTIME);
}
@@ -255,19 +174,11 @@
public boolean test(
DexTool dexTool,
CompilerUnderTest compilerUnderTest,
- Runtime runtime,
+ DexVm.Version dexVmVersion,
CompilationMode compilationMode) {
return dexTools.contains(dexTool)
&& compilers.contains(compilerUnderTest)
- && runtimes.contains(runtime)
+ && dexVms.contains(dexVmVersion)
&& compilationModes.contains(compilationMode);
}
-
- public boolean test(
- DexTool dexTool,
- CompilerUnderTest compilerUnderTest,
- DexVm.Version version,
- CompilationMode compilationMode) {
- return test(dexTool, compilerUnderTest, Runtime.fromDexVmVersion(version), compilationMode);
- }
}
diff --git a/src/test/java/com/android/tools/r8/compatproguard/reflection/ReflectionTest.java b/src/test/java/com/android/tools/r8/compatproguard/reflection/ReflectionTest.java
index c90e0fb..c86711f 100644
--- a/src/test/java/com/android/tools/r8/compatproguard/reflection/ReflectionTest.java
+++ b/src/test/java/com/android/tools/r8/compatproguard/reflection/ReflectionTest.java
@@ -8,7 +8,11 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
+import com.android.tools.r8.NeverInline;
+import com.android.tools.r8.R8Command;
import com.android.tools.r8.TestBase;
+import com.android.tools.r8.ToolHelper;
+import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import com.google.common.collect.ImmutableList;
@@ -38,13 +42,22 @@
}
}
-class Main {
+class MainTest {
+ @SuppressWarnings("warning")
public static void main(String[] args) throws Exception {
A a = new A();
Method m;
m = A.class.getMethod("method0");
m.invoke(a);
+ m = A.class.getMethod("method0", null);
+ m.invoke(a);
+ m = A.class.getMethod("method0", (Class<?>[]) null);
+ m.invoke(a);
+ m = A.class.getMethod("method0", (Class<?>[]) (Class<?>[]) null);
+ m.invoke(a);
+ m = A.class.getMethod("method0", (Class<?>[]) (Object[]) (Class<?>[]) null);
+ m.invoke(a);
m = A.class.getMethod("method1", String.class);
m.invoke(a, "1");
m = A.class.getMethod("method2", String.class, String.class);
@@ -74,34 +87,49 @@
m = A.class.getDeclaredMethod("method3", int.class, int.class);
m.invoke(a, 2, 2);
} catch (Exception e) {
+ System.out.println("Unexpected: " + e);
}
- Class[] argumentTypes;
- argumentTypes = new Class[2];
+ Class<?>[] argumentTypes;
+ argumentTypes = new Class<?>[2];
argumentTypes[1] = int.class;
argumentTypes[0] = int.class;
argumentTypes[0] = String.class;
argumentTypes[1] = String.class;
m = A.class.getDeclaredMethod("method2", argumentTypes);
m.invoke(a, "2", "3");
+ argumentTypes[0] = String.class;
+ argumentTypes[1] = String.class;
m = A.class.getDeclaredMethod("method2", argumentTypes);
m.invoke(a, "4", "5");
+ argumentTypes[0] = String.class;
+ argumentTypes[1] = String.class;
+ m = A.class.getDeclaredMethod("method2", (Class<?>[]) argumentTypes);
+ m.invoke(a, "5", "4");
+ argumentTypes[0] = String.class;
+ argumentTypes[1] = String.class;
+ m = A.class.getDeclaredMethod("method2", (Class<?>[]) (Object[]) argumentTypes);
+ m.invoke(a, "5", "4");
argumentTypes[1] = int.class;
argumentTypes[0] = int.class;
m = A.class.getDeclaredMethod("method3", argumentTypes);
m.invoke(a, 3, 3);
+ argumentTypes[1] = int.class;
+ argumentTypes[0] = int.class;
m = A.class.getDeclaredMethod("method3", argumentTypes);
m.invoke(a, 3, 4);
try {
- argumentTypes = new Class[2];
+ argumentTypes = new Class<?>[2];
argumentTypes[1] = int.class;
argumentTypes[0] = int.class;
argumentTypes[0] = String.class;
argumentTypes[1] = String.class;
m = A.class.getDeclaredMethod("method2", argumentTypes);
m.invoke(a, "2", "3");
+ argumentTypes[0] = String.class;
+ argumentTypes[1] = String.class;
m = A.class.getDeclaredMethod("method2", argumentTypes);
m.invoke(a, "4", "7");
@@ -109,9 +137,311 @@
argumentTypes[0] = int.class;
m = A.class.getDeclaredMethod("method3", argumentTypes);
m.invoke(a, 3, 3);
+ argumentTypes[1] = int.class;
+ argumentTypes[0] = int.class;
m = A.class.getDeclaredMethod("method3", argumentTypes);
m.invoke(a, 3, 4);
} catch (Exception e) {
+ System.out.println("Unexpected: " + e);
+ }
+ }
+}
+
+class MainNonConstArraySize {
+ public static void main(String[] args) throws Exception {
+ Method m;
+ m = A.class.getMethod("method0");
+ m.invoke(new A());
+
+ nonConstArraySize(0);
+ }
+
+ @NeverInline
+ static void nonConstArraySize(int argumentTypesSize) {
+ try {
+ A a = new A();
+
+ Method m;
+ Class<?>[] argumentTypes;
+ argumentTypes = new Class<?>[argumentTypesSize];
+ m = A.class.getDeclaredMethod("method0", argumentTypes);
+ m.invoke(a);
+ } catch (Exception e) {
+ // Prepend the 0 output to the exception name to make it easier to compare the result with
+ // the reference run.
+ System.out.print("0" + e.getClass().getCanonicalName());
+ }
+ }
+}
+
+class MainPhiValue {
+ public static void main(String[] args) throws Exception {
+ Method m;
+ m = A.class.getMethod("method0");
+ m.invoke(new A());
+ m = A.class.getMethod("method1", String.class);
+ m.invoke(new A(), "1");
+
+ try {
+ arrayIsPhi(true);
+ throw new Exception("Unexpected");
+ } catch (NoSuchMethodException e) {
+ // Expected.
+ }
+
+ try {
+ elementIsPhi(true);
+ throw new Exception("Unexpected");
+ } catch (NoSuchMethodException e) {
+ // Expected.
+ }
+
+ try {
+ elementIsPhiButDeterministic(true, "");
+ throw new Exception("Unexpected");
+ } catch (NoSuchMethodException e) {
+ // Expected.
+ }
+ }
+
+ @NeverInline
+ static void arrayIsPhi(boolean b) throws Exception {
+ A a = new A();
+
+ Method m;
+ Class<?>[] argumentTypes;
+ if (b) {
+ argumentTypes = new Class<?>[1];
+ argumentTypes[0] = String.class;
+ } else {
+ argumentTypes = new Class<?>[1];
+ argumentTypes[0] = int.class;
+ }
+ m = A.class.getDeclaredMethod("method1", argumentTypes);
+ m.invoke(a, "0");
+ }
+
+ @NeverInline
+ static void elementIsPhi(boolean b) throws Exception {
+ A a = new A();
+
+ Class<?> x;
+ x = b ? String.class : int.class;
+ Method m;
+ Class<?>[] argumentTypes = new Class<?>[1];
+ argumentTypes[0] = x;
+ m = A.class.getDeclaredMethod("method1", argumentTypes);
+ m.invoke(a, "0");
+ }
+
+ @NeverInline
+ static void elementIsPhiButDeterministic(boolean b, String arg) throws Exception {
+ A a = new A();
+
+ Class<?> x;
+ x = b ? String.class : arg.getClass();
+ Method m;
+ Class<?>[] argumentTypes = new Class<?>[1];
+ argumentTypes[0] = x;
+ m = A.class.getDeclaredMethod("method1", argumentTypes);
+ m.invoke(a, "0");
+ }
+}
+
+class AllPrimitiveTypes {
+ public void method(boolean b) {
+ System.out.print(b);
+ }
+
+ public void method(byte b) {
+ System.out.print(b);
+ }
+
+ public void method(char c) {
+ System.out.print(c);
+ }
+
+ public void method(short s) {
+ System.out.print(s);
+ }
+
+ public void method(int i) {
+ System.out.print(i);
+ }
+
+ public void method(long l) {
+ System.out.print(l);
+ }
+
+ public void method(float f) {
+ System.out.print(f);
+ }
+
+ public void method(double d) {
+ System.out.print(d);
+ }
+}
+
+class MainAllPrimitiveTypes {
+
+ public static void main(String[] args) throws Exception {
+ AllPrimitiveTypes a = new AllPrimitiveTypes();
+
+ Method m;
+ Class<?>[] argumentTypes;
+ argumentTypes = new Class<?>[1];
+ argumentTypes[0] = boolean.class;
+ m = AllPrimitiveTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, true);
+ argumentTypes[0] = byte.class;
+ m = AllPrimitiveTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, (byte) 0);
+ argumentTypes[0] = char.class;
+ m = AllPrimitiveTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, 'a');
+ argumentTypes[0] = short.class;
+ m = AllPrimitiveTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, (short) 1);
+ argumentTypes[0] = int.class;
+ m = AllPrimitiveTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, 2);
+ argumentTypes[0] = long.class;
+ m = AllPrimitiveTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, 3L);
+ argumentTypes[0] = float.class;
+ m = AllPrimitiveTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, 4.4f);
+ argumentTypes[0] = double.class;
+ m = AllPrimitiveTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, 5.5d);
+
+ try {
+ argumentTypes = new Class<?>[1];
+ argumentTypes[0] = boolean.class;
+ m = AllPrimitiveTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, true);
+ argumentTypes[0] = byte.class;
+ m = AllPrimitiveTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, (byte) 0);
+ argumentTypes[0] = char.class;
+ m = AllPrimitiveTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, 'a');
+ argumentTypes[0] = short.class;
+ m = AllPrimitiveTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, (short) 1);
+ argumentTypes[0] = int.class;
+ m = AllPrimitiveTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, 2);
+ argumentTypes[0] = long.class;
+ m = AllPrimitiveTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, 3L);
+ argumentTypes[0] = float.class;
+ m = AllPrimitiveTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, 4.4f);
+ argumentTypes[0] = double.class;
+ m = AllPrimitiveTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, 5.5d);
+ } catch (Exception e) {
+ System.out.println("Unexpected: " + e);
+ }
+ }
+}
+
+class AllBoxedTypes {
+ public void method(Boolean b) {
+ System.out.print(b);
+ }
+
+ public void method(Byte b) {
+ System.out.print(b);
+ }
+
+ public void method(Character c) {
+ System.out.print(c);
+ }
+
+ public void method(Short s) {
+ System.out.print(s);
+ }
+
+ public void method(Integer i) {
+ System.out.print(i);
+ }
+
+ public void method(Long l) {
+ System.out.print(l);
+ }
+
+ public void method(Float f) {
+ System.out.print(f);
+ }
+
+ public void method(Double d) {
+ System.out.print(d);
+ }
+}
+
+class MainAllBoxedTypes {
+
+ public static void main(String[] args) throws Exception {
+ AllBoxedTypes a = new AllBoxedTypes();
+
+ Method m;
+ Class<?>[] argumentTypes;
+ argumentTypes = new Class<?>[1];
+ argumentTypes[0] = Boolean.class;
+ m = AllBoxedTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, true);
+ argumentTypes[0] = Byte.class;
+ m = AllBoxedTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, (byte) 0);
+ argumentTypes[0] = Character.class;
+ m = AllBoxedTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, 'a');
+ argumentTypes[0] = Short.class;
+ m = AllBoxedTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, (short) 1);
+ argumentTypes[0] = Integer.class;
+ m = AllBoxedTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, 2);
+ argumentTypes[0] = Long.class;
+ m = AllBoxedTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, 3L);
+ argumentTypes[0] = Float.class;
+ m = AllBoxedTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, 4.4f);
+ argumentTypes[0] = Double.class;
+ m = AllBoxedTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, 5.5d);
+
+ try {
+ argumentTypes = new Class<?>[1];
+ argumentTypes[0] = Boolean.class;
+ m = AllBoxedTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, true);
+ argumentTypes[0] = Byte.class;
+ m = AllBoxedTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, (byte) 0);
+ argumentTypes[0] = Character.class;
+ m = AllBoxedTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, 'a');
+ argumentTypes[0] = Short.class;
+ m = AllBoxedTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, (short) 1);
+ argumentTypes[0] = Integer.class;
+ m = AllBoxedTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, 2);
+ argumentTypes[0] = Long.class;
+ m = AllBoxedTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, 3L);
+ argumentTypes[0] = Float.class;
+ m = AllBoxedTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, 4.4f);
+ argumentTypes[0] = Double.class;
+ m = AllBoxedTypes.class.getDeclaredMethod("method", argumentTypes);
+ m.invoke(a, 5.5d);
+ } catch (Exception e) {
+ System.out.println("Unexpected: " + e);
}
}
}
@@ -132,10 +462,12 @@
@Test
public void test() throws Exception {
+ Class<?> mainClass = MainTest.class;
AndroidApp output =
compileWithR8(
- readClasses(A.class, Main.class), keepMainProguardConfiguration(Main.class), backend);
+ readClasses(A.class, mainClass), keepMainProguardConfiguration(mainClass), backend);
CodeInspector inspector = new CodeInspector(output);
+
assertThat(inspector.clazz(A.class).method("void", "method0", ImmutableList.of()), isRenamed());
assertThat(
inspector.clazz(A.class).method("void", "method1", ImmutableList.of("java.lang.String")),
@@ -146,6 +478,88 @@
.method("void", "method2", ImmutableList.of("java.lang.String", "java.lang.String")),
isRenamed());
- assertEquals(runOnJava(Main.class), runOnVM(output, Main.class, backend));
+ assertEquals(runOnJava(mainClass), runOnVM(output, mainClass, backend));
+ }
+
+ @Test
+ public void testNonConstArraySize() throws Exception {
+ Class<?> mainClass = MainNonConstArraySize.class;
+ R8Command.Builder builder =
+ ToolHelper.prepareR8CommandBuilder(
+ readClasses(A.class, mainClass, NeverInline.class), emptyConsumer(backend))
+ .addLibraryFiles(runtimeJar(backend));
+ builder.addProguardConfiguration(
+ ImmutableList.of(keepMainProguardConfigurationWithInliningAnnotation(mainClass)),
+ Origin.unknown());
+ ToolHelper.allowTestProguardOptions(builder);
+ AndroidApp output = ToolHelper.runR8(builder.build());
+ CodeInspector inspector = new CodeInspector(output);
+
+ assertThat(inspector.clazz(A.class).method("void", "method0", ImmutableList.of()), isRenamed());
+
+ // The reference run on the Java VM will succeed, whereas the run on the R8 output will fail
+ // as in this test we fail to recognize the reflective call. To compare the output of the
+ // successful reference run append "java.lang.NoSuchMethodException" to it.
+ assertEquals(
+ runOnJava(mainClass) + "java.lang.NoSuchMethodException",
+ runOnVM(output, mainClass, backend));
+ }
+
+ @Test
+ public void testPhiValue() throws Exception {
+ Class<?> mainClass = MainPhiValue.class;
+ R8Command.Builder builder =
+ ToolHelper.prepareR8CommandBuilder(
+ readClasses(A.class, mainClass, NeverInline.class), emptyConsumer(backend))
+ .addLibraryFiles(runtimeJar(backend));
+ builder.addProguardConfiguration(
+ ImmutableList.of(keepMainProguardConfigurationWithInliningAnnotation(mainClass)),
+ Origin.unknown());
+ ToolHelper.allowTestProguardOptions(builder);
+ AndroidApp output = ToolHelper.runR8(builder.build(), o -> o.enableInlining = false);
+
+ runOnVM(output, mainClass, backend);
+ }
+
+ @Test
+ public void testAllPrimitiveTypes() throws Exception {
+ Class<?> mainClass = MainAllPrimitiveTypes.class;
+ AndroidApp output =
+ compileWithR8(
+ readClasses(AllPrimitiveTypes.class, mainClass),
+ keepMainProguardConfiguration(mainClass),
+ backend);
+
+ new CodeInspector(output)
+ .clazz(AllPrimitiveTypes.class)
+ .forAllMethods(
+ m -> {
+ if (!m.isInstanceInitializer()) {
+ assertThat(m, isRenamed());
+ }
+ });
+
+ assertEquals(runOnJava(mainClass), runOnVM(output, mainClass, backend));
+ }
+
+ @Test
+ public void testAllBoxedTypes() throws Exception {
+ Class<?> mainClass = MainAllBoxedTypes.class;
+ AndroidApp output =
+ compileWithR8(
+ readClasses(AllBoxedTypes.class, mainClass),
+ keepMainProguardConfiguration(mainClass),
+ backend);
+
+ new CodeInspector(output)
+ .clazz(AllBoxedTypes.class)
+ .forAllMethods(
+ m -> {
+ if (!m.isInstanceInitializer()) {
+ assertThat(m, isRenamed());
+ }
+ });
+
+ assertEquals(runOnJava(mainClass), runOnVM(output, mainClass, backend));
}
}
diff --git a/src/test/java/com/android/tools/r8/debug/ArraySimplificationLineNumberTest.java b/src/test/java/com/android/tools/r8/debug/ArraySimplificationLineNumberTest.java
new file mode 100644
index 0000000..c3aa498
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/debug/ArraySimplificationLineNumberTest.java
@@ -0,0 +1,23 @@
+// Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package com.android.tools.r8.debug;
+
+public class ArraySimplificationLineNumberTest {
+
+ public String[] foo(boolean argument) {
+ String[] result;
+ if (argument) {
+ result = new String[2]; result[0] = "abc";
+ result[1] = "xyz";
+ } else {
+ result = new String[2]; result[0] = "abc";
+ result[1] = "xyz";
+ }
+ return result;
+ }
+
+ public static void main(String[] args) {
+ new ArraySimplificationLineNumberTest().foo(true);
+ }
+}
diff --git a/src/test/java/com/android/tools/r8/debug/ArraySimplificationLineNumberTestRunner.java b/src/test/java/com/android/tools/r8/debug/ArraySimplificationLineNumberTestRunner.java
new file mode 100644
index 0000000..308e8d7
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/debug/ArraySimplificationLineNumberTestRunner.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package com.android.tools.r8.debug;
+
+import com.android.tools.r8.ToolHelper;
+import com.android.tools.r8.ToolHelper.DexVm.Version;
+import com.android.tools.r8.VmTestRunner;
+import com.android.tools.r8.VmTestRunner.IgnoreIfVmOlderThan;
+import java.util.Collections;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(VmTestRunner.class)
+public class ArraySimplificationLineNumberTestRunner extends DebugTestBase {
+
+ private static final Class CLASS = ArraySimplificationLineNumberTest.class;
+ private static final String FILE = CLASS.getSimpleName() + ".java";
+ private static final String NAME = CLASS.getCanonicalName();
+
+ @Test
+ @IgnoreIfVmOlderThan(Version.V6_0_1)
+ public void testHitOnEntryOnly() throws Throwable {
+ DebugTestConfig cf = new CfDebugTestConfig().addPaths(ToolHelper.getClassPathForTests());
+ DebugTestConfig d8 = new D8DebugTestConfig().compileAndAdd(
+ temp, Collections.singletonList(ToolHelper.getClassFileForTestClass(CLASS)));
+ DebugTestConfig d8NoLocals = new D8DebugTestConfig().compileAndAdd(
+ temp,
+ Collections.singletonList(ToolHelper.getClassFileForTestClass(CLASS)),
+ options -> options.testing.removeLocalsTable = true);
+
+ new DebugStreamComparator()
+ .add("CF", streamDebugTest(cf, NAME, NO_FILTER))
+ .add("D8", streamDebugTest(d8, NAME, ANDROID_FILTER))
+ .add("D8/nolocals", streamDebugTest(d8NoLocals, NAME, ANDROID_FILTER))
+ .setFilter(s -> s.getSourceFile().equals(FILE))
+ .setVerifyVariables(false)
+ .compare();
+ }
+}
diff --git a/tools/create_jctf_tests.py b/tools/create_jctf_tests.py
index 28dde99..b7b449d 100755
--- a/tools/create_jctf_tests.py
+++ b/tools/create_jctf_tests.py
@@ -130,7 +130,6 @@
generate_test(class_name, 'd8', 'R8_AFTER_D8', relative_package)
generate_test(class_name, 'r8', 'R8', relative_package)
- generate_test(class_name, 'r8cf', 'R8CF', relative_package)
if __name__ == '__main__':
diff --git a/tools/internal_test.py b/tools/internal_test.py
index 9b8c970..43785f7 100755
--- a/tools/internal_test.py
+++ b/tools/internal_test.py
@@ -72,6 +72,9 @@
result.add_option('--continuous',
help='Continuously run internal tests and post results to GCS.',
default=False, action='store_true')
+ result.add_option('--print_logs',
+ help='Fetch logs from gcs and print them, takes the commit to print for.',
+ default=None)
result.add_option('--bot',
help='Run in bot mode, i.e., scheduling runs.',
default=False, action='store_true')
@@ -174,6 +177,16 @@
content = get_magic_file_content(magic, ignore_errors=True)
log('%s content: %s' % (magic, content))
+def fetch_and_print_logs(hash):
+ gs_base = 'gs://%s' % get_sha_destination(hash)
+ listing = utils.ls_files_on_cloud_storage(gs_base).strip().split('\n')
+ for entry in listing:
+ if not entry.endswith('/status'): # Ignore the overall status file
+ for to_print in [EXITCODE, TIMED_OUT, STDERR, STDOUT]:
+ gs_location = '%s%s' % (entry, to_print)
+ value = utils.cat_file_on_cloud_storage(gs_location)
+ print('\n\n%s had value:\n%s' % (to_print, value))
+
def run_bot():
print_magic_file_state()
# Ensure that there is nothing currently scheduled (broken/stopped run)
@@ -205,6 +218,7 @@
delete_magic_file(TESTING_COMPLETE)
log('Test status is: %s' % test_status)
if test_status != '0':
+ fetch_and_print_logs(git_hash)
return 1
def run_continuously():
@@ -296,6 +310,8 @@
run_continuously()
elif options.bot:
return run_bot()
+ elif options.print_logs:
+ return fetch_and_print_logs(options.print_logs)
else:
return run_once(options.archive)
diff --git a/tools/test.py b/tools/test.py
index b92c8dc..6c15ea5 100755
--- a/tools/test.py
+++ b/tools/test.py
@@ -100,6 +100,8 @@
def Main():
(options, args) = ParseOptions()
+ if 'BUILDBOT_BUILDERNAME' in os.environ:
+ gradle.RunGradle(['clean'])
gradle_args = ['--stacktrace']
# Set all necessary Gradle properties and options first.
diff --git a/tools/utils.py b/tools/utils.py
index 20ba093..3b52e6a 100644
--- a/tools/utils.py
+++ b/tools/utils.py
@@ -111,6 +111,11 @@
PrintCmd(cmd)
subprocess.check_call(cmd)
+def ls_files_on_cloud_storage(destination):
+ cmd = ['gsutil.py', 'ls', destination]
+ PrintCmd(cmd)
+ return subprocess.check_output(cmd)
+
def cat_file_on_cloud_storage(destination, ignore_errors=False):
cmd = ['gsutil.py', 'cat', destination]
PrintCmd(cmd)