Prune the library and classpath collections after tree shaking.
Bug: 139464956
Change-Id: I31214f2240247a42d97555a8f04f0278974ffcab
diff --git a/src/main/java/com/android/tools/r8/GenerateMainDexList.java b/src/main/java/com/android/tools/r8/GenerateMainDexList.java
index 5e47207..a647cf5 100644
--- a/src/main/java/com/android/tools/r8/GenerateMainDexList.java
+++ b/src/main/java/com/android/tools/r8/GenerateMainDexList.java
@@ -52,6 +52,8 @@
AppView.createForR8(new AppInfoWithSubtyping(application), options);
appView.setAppServices(AppServices.builder(appView).build());
+ MainDexListBuilder.checkForAssumedLibraryTypes(appView.appInfo());
+
RootSet mainDexRootSet =
new RootSetBuilder(appView, application, options.mainDexKeepRules).run(executor);
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index 78471d6..9d3e2a3 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -31,6 +31,7 @@
import com.android.tools.r8.graph.analysis.InitializedClassesInInstanceMethodsAnalysis;
import com.android.tools.r8.ir.analysis.proto.GeneratedExtensionRegistryShrinker;
import com.android.tools.r8.ir.conversion.IRConverter;
+import com.android.tools.r8.ir.desugar.BackportedMethodRewriter;
import com.android.tools.r8.ir.desugar.NestedPrivateMethodLense;
import com.android.tools.r8.ir.desugar.R8NestBasedAccessDesugaring;
import com.android.tools.r8.ir.optimize.AssertionsRewriter;
@@ -270,6 +271,14 @@
AppView.createForR8(new AppInfoWithSubtyping(application), options);
appView.setAppServices(AppServices.builder(appView).build());
+ // Up-front check for valid library setup.
+ if (!options.mainDexKeepRules.isEmpty()) {
+ MainDexListBuilder.checkForAssumedLibraryTypes(appView.appInfo());
+ }
+ if (!options.desugaredLibraryConfiguration.getRetargetCoreLibMember().isEmpty()) {
+ BackportedMethodRewriter.checkForAssumedLibraryTypes(appView);
+ }
+
List<ProguardConfigurationRule> synthesizedProguardRules = new ArrayList<>();
timing.begin("Strip unused code");
Set<DexType> classesToRetainInnerClassAttributeFor = null;
diff --git a/src/main/java/com/android/tools/r8/cf/CfCodePrinter.java b/src/main/java/com/android/tools/r8/cf/CfCodePrinter.java
index 94633a0..93ee213 100644
--- a/src/main/java/com/android/tools/r8/cf/CfCodePrinter.java
+++ b/src/main/java/com/android/tools/r8/cf/CfCodePrinter.java
@@ -57,6 +57,7 @@
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.StringUtils.BraceType;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
import it.unimi.dsi.fastutil.objects.Reference2IntMap;
import it.unimi.dsi.fastutil.objects.Reference2IntOpenHashMap;
import java.util.ArrayList;
@@ -64,6 +65,7 @@
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@@ -224,8 +226,42 @@
return "options.itemFactory.createString(" + quote(string.toString()) + ")";
}
+ private final Map<String, String> knownTypeFields =
+ ImmutableMap.<String, String>builder()
+ .put("Z", "booleanType")
+ .put("B", "byteType")
+ .put("C", "charType")
+ .put("D", "doubleType")
+ .put("F", "floatType")
+ .put("I", "intType")
+ .put("J", "longType")
+ .put("S", "shortType")
+ .put("V", "voidType")
+ .put("[Z", "booleanArrayType")
+ .put("[B", "byteArrayType")
+ .put("[C", "charArrayType")
+ .put("[D", "doubleArrayType")
+ .put("[F", "floatArrayType")
+ .put("[I", "intArrayType")
+ .put("[J", "longArrayType")
+ .put("[S", "shortArrayType")
+ .put("Ljava/lang/Object;", "objectType")
+ .put("Ljava/lang/Class;", "classType")
+ .put("Ljava/lang/Throwable;", "throwableType")
+ .put("Ljava/lang/String;", "stringType")
+ .put("Ljava/lang/Character;", "boxedCharType")
+ .put("Ljava/lang/CharSequence;", "charSequenceType")
+ .put("Ljava/lang/StringBuilder;", "stringBuilderType")
+ .put("Ljava/lang/AutoCloseable;", "autoCloseableType")
+ .build();
+
private String dexType(DexType type) {
- return "options.itemFactory.createType(" + quote(type.toDescriptorString()) + ")";
+ String descriptor = type.toDescriptorString();
+ String field = knownTypeFields.get(descriptor);
+ if (field != null) {
+ return "options.itemFactory." + field;
+ }
+ return "options.itemFactory.createSynthesizedType(" + quote(descriptor) + ")";
}
private String dexProto(DexProto proto) {
diff --git a/src/main/java/com/android/tools/r8/dex/ApplicationWriter.java b/src/main/java/com/android/tools/r8/dex/ApplicationWriter.java
index 993363c..6013392 100644
--- a/src/main/java/com/android/tools/r8/dex/ApplicationWriter.java
+++ b/src/main/java/com/android/tools/r8/dex/ApplicationWriter.java
@@ -246,7 +246,14 @@
if (options.encodeChecksums) {
encodeChecksums(virtualFiles);
}
+ // TODO(b/149190785): Only sort the live program!
+ if (appView != null) {
+ appView.appInfo().disableDefinitionForAssert();
+ }
application.dexItemFactory.sort(namingLens);
+ if (appView != null) {
+ appView.appInfo().enableDefinitionForAssert();
+ }
assert markers == null
|| markers.isEmpty()
|| application.dexItemFactory.extractMarkers() != null;
diff --git a/src/main/java/com/android/tools/r8/graph/AppInfo.java b/src/main/java/com/android/tools/r8/graph/AppInfo.java
index 03f0231..feb71dc 100644
--- a/src/main/java/com/android/tools/r8/graph/AppInfo.java
+++ b/src/main/java/com/android/tools/r8/graph/AppInfo.java
@@ -673,4 +673,9 @@
}
}
+ // TODO(b/149190785): Remove once fixed.
+ public void enableDefinitionForAssert() {}
+
+ // TODO(b/149190785): Remove once fixed.
+ public void disableDefinitionForAssert() {}
}
diff --git a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
index 7af203c..d6dd805 100644
--- a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
+++ b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
@@ -821,8 +821,8 @@
DexProto proto = itemFactory.createProto(itemFactory.intType, args);
DexMethod logMethod =
itemFactory.createMethod(
- itemFactory.createType("Landroid/util/Log;"), proto, itemFactory.createString("e"));
- DexType exceptionType = itemFactory.createType("Ljava/lang/RuntimeException;");
+ itemFactory.androidUtilLogType, proto, itemFactory.createString("e"));
+ DexType exceptionType = itemFactory.runtimeExceptionType;
DexMethod exceptionInitMethod =
itemFactory.createMethod(
exceptionType,
@@ -851,7 +851,7 @@
itemFactory.createString(
CONFIGURATION_DEBUGGING_PREFIX + method.holder.toSourceString() + ": " + signature);
DexString tag = itemFactory.createString("[R8]");
- DexType logger = itemFactory.createType("Ljava/util/logging/Logger;");
+ DexType logger = itemFactory.javaUtilLoggingLoggerType;
DexMethod getLogger =
itemFactory.createMethod(
logger,
@@ -862,7 +862,7 @@
logger,
itemFactory.createProto(itemFactory.voidType, itemFactory.stringType),
itemFactory.createString("severe"));
- DexType exceptionType = itemFactory.createType("Ljava/lang/RuntimeException;");
+ DexType exceptionType = itemFactory.runtimeExceptionType;
DexMethod exceptionInitMethod =
itemFactory.createMethod(
exceptionType,
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 c38f7c6..df2402f 100644
--- a/src/main/java/com/android/tools/r8/graph/DexItemFactory.java
+++ b/src/main/java/com/android/tools/r8/graph/DexItemFactory.java
@@ -37,6 +37,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Sets;
import com.google.common.collect.Streams;
import it.unimi.dsi.fastutil.ints.Int2ReferenceArrayMap;
import it.unimi.dsi.fastutil.ints.Int2ReferenceMap;
@@ -61,6 +62,9 @@
public static final String throwableDescriptorString = "Ljava/lang/Throwable;";
+ /** Set of types that may be synthesized during compilation. */
+ private final Set<DexType> possibleCompilerSynthesizedTypes = Sets.newIdentityHashSet();
+
private final Map<DexString, DexString> strings = new ConcurrentHashMap<>();
private final Map<DexString, DexType> types = new ConcurrentHashMap<>();
private final Map<DexField, DexField> fields = new ConcurrentHashMap<>();
@@ -281,96 +285,120 @@
public final DexString throwableArrayDescriptor = createString("[Ljava/lang/Throwable;");
- public final DexType booleanType = createType(booleanDescriptor);
- public final DexType byteType = createType(byteDescriptor);
- public final DexType charType = createType(charDescriptor);
- public final DexType doubleType = createType(doubleDescriptor);
- public final DexType floatType = createType(floatDescriptor);
- public final DexType intType = createType(intDescriptor);
- public final DexType longType = createType(longDescriptor);
- public final DexType shortType = createType(shortDescriptor);
- public final DexType voidType = createType(voidDescriptor);
+ public final DexType booleanType = createStaticallyKnownType(booleanDescriptor);
+ public final DexType byteType = createStaticallyKnownType(byteDescriptor);
+ public final DexType charType = createStaticallyKnownType(charDescriptor);
+ public final DexType doubleType = createStaticallyKnownType(doubleDescriptor);
+ public final DexType floatType = createStaticallyKnownType(floatDescriptor);
+ public final DexType intType = createStaticallyKnownType(intDescriptor);
+ public final DexType longType = createStaticallyKnownType(longDescriptor);
+ public final DexType shortType = createStaticallyKnownType(shortDescriptor);
+ public final DexType voidType = createStaticallyKnownType(voidDescriptor);
- public final DexType booleanArrayType = createType(booleanArrayDescriptor);
- public final DexType byteArrayType = createType(byteArrayDescriptor);
- public final DexType charArrayType = createType(charArrayDescriptor);
- public final DexType doubleArrayType = createType(doubleArrayDescriptor);
- public final DexType floatArrayType = createType(floatArrayDescriptor);
- public final DexType intArrayType = createType(intArrayDescriptor);
- public final DexType longArrayType = createType(longArrayDescriptor);
- public final DexType shortArrayType = createType(shortArrayDescriptor);
+ public final DexType booleanArrayType = createStaticallyKnownType(booleanArrayDescriptor);
+ public final DexType byteArrayType = createStaticallyKnownType(byteArrayDescriptor);
+ public final DexType charArrayType = createStaticallyKnownType(charArrayDescriptor);
+ public final DexType doubleArrayType = createStaticallyKnownType(doubleArrayDescriptor);
+ public final DexType floatArrayType = createStaticallyKnownType(floatArrayDescriptor);
+ public final DexType intArrayType = createStaticallyKnownType(intArrayDescriptor);
+ public final DexType longArrayType = createStaticallyKnownType(longArrayDescriptor);
+ public final DexType shortArrayType = createStaticallyKnownType(shortArrayDescriptor);
- public final DexType boxedBooleanType = createType(boxedBooleanDescriptor);
- public final DexType boxedByteType = createType(boxedByteDescriptor);
- public final DexType boxedCharType = createType(boxedCharDescriptor);
- public final DexType boxedDoubleType = createType(boxedDoubleDescriptor);
- public final DexType boxedFloatType = createType(boxedFloatDescriptor);
- public final DexType boxedIntType = createType(boxedIntDescriptor);
- public final DexType boxedLongType = createType(boxedLongDescriptor);
- public final DexType boxedShortType = createType(boxedShortDescriptor);
- public final DexType boxedNumberType = createType(boxedNumberDescriptor);
- public final DexType boxedVoidType = createType(boxedVoidDescriptor);
+ public final DexType boxedBooleanType = createStaticallyKnownType(boxedBooleanDescriptor);
+ public final DexType boxedByteType = createStaticallyKnownType(boxedByteDescriptor);
+ public final DexType boxedCharType = createStaticallyKnownType(boxedCharDescriptor);
+ public final DexType boxedDoubleType = createStaticallyKnownType(boxedDoubleDescriptor);
+ public final DexType boxedFloatType = createStaticallyKnownType(boxedFloatDescriptor);
+ public final DexType boxedIntType = createStaticallyKnownType(boxedIntDescriptor);
+ public final DexType boxedLongType = createStaticallyKnownType(boxedLongDescriptor);
+ public final DexType boxedShortType = createStaticallyKnownType(boxedShortDescriptor);
+ public final DexType boxedNumberType = createStaticallyKnownType(boxedNumberDescriptor);
+ public final DexType boxedVoidType = createStaticallyKnownType(boxedVoidDescriptor);
- public final DexType charSequenceType = createType(charSequenceDescriptor);
- public final DexType charSequenceArrayType = createType(charSequenceArrayDescriptor);
- public final DexType stringType = createType(stringDescriptor);
- 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 objectsType = createType(objectsDescriptor);
- public final DexType collectionsType = createType(collectionsDescriptor);
- public final DexType iterableType = createType(iterableDescriptor);
- public final DexType mathType = createType(mathDescriptor);
- public final DexType strictMathType = createType(strictMathDescriptor);
- public final DexType referenceFieldUpdaterType = createType(referenceFieldUpdaterDescriptor);
+ public final DexType charSequenceType = createStaticallyKnownType(charSequenceDescriptor);
+ public final DexType charSequenceArrayType =
+ createStaticallyKnownType(charSequenceArrayDescriptor);
+ public final DexType stringType = createStaticallyKnownType(stringDescriptor);
+ public final DexType stringArrayType = createStaticallyKnownType(stringArrayDescriptor);
+ public final DexType objectType = createStaticallyKnownType(objectDescriptor);
+ public final DexType objectArrayType = createStaticallyKnownType(objectArrayDescriptor);
+ public final DexType classArrayType = createStaticallyKnownType(classArrayDescriptor);
+ public final DexType enumType = createStaticallyKnownType(enumDescriptor);
+ public final DexType annotationType = createStaticallyKnownType(annotationDescriptor);
+ public final DexType objectsType = createStaticallyKnownType(objectsDescriptor);
+ public final DexType collectionsType = createStaticallyKnownType(collectionsDescriptor);
+ public final DexType iterableType = createStaticallyKnownType(iterableDescriptor);
+ public final DexType mathType = createStaticallyKnownType(mathDescriptor);
+ public final DexType strictMathType = createStaticallyKnownType(strictMathDescriptor);
+ public final DexType referenceFieldUpdaterType =
+ createStaticallyKnownType(referenceFieldUpdaterDescriptor);
- public final DexType classType = createType(classDescriptor);
- public final DexType classLoaderType = createType(classLoaderDescriptor);
- public final DexType fieldType = createType(fieldDescriptor);
- public final DexType methodType = createType(methodDescriptor);
- public final DexType autoCloseableType = createType(autoCloseableDescriptor);
+ public final DexType classType = createStaticallyKnownType(classDescriptor);
+ public final DexType classLoaderType = createStaticallyKnownType(classLoaderDescriptor);
+ public final DexType fieldType = createStaticallyKnownType(fieldDescriptor);
+ public final DexType methodType = createStaticallyKnownType(methodDescriptor);
+ public final DexType autoCloseableType = createStaticallyKnownType(autoCloseableDescriptor);
- public final DexType stringBuilderType = createType(stringBuilderDescriptor);
- public final DexType stringBufferType = createType(stringBufferDescriptor);
+ public final DexType stringBuilderType = createStaticallyKnownType(stringBuilderDescriptor);
+ public final DexType stringBufferType = createStaticallyKnownType(stringBufferDescriptor);
- public final DexType varHandleType = createType(varHandleDescriptor);
- public final DexType methodHandleType = createType(methodHandleDescriptor);
- public final DexType methodTypeType = createType(methodTypeDescriptor);
- public final DexType invocationHandlerType = createType(invocationHandlerDescriptor);
- public final DexType proxyType = createType(proxyDescriptor);
- public final DexType serviceLoaderType = createType(serviceLoaderDescriptor);
+ public final DexType javaLangSystemType = createStaticallyKnownType("Ljava/lang/System;");
+ public final DexType javaIoPrintStreamType = createStaticallyKnownType("Ljava/io/PrintStream;");
+
+ public final DexType varHandleType = createStaticallyKnownType(varHandleDescriptor);
+ public final DexType methodHandleType = createStaticallyKnownType(methodHandleDescriptor);
+ public final DexType methodTypeType = createStaticallyKnownType(methodTypeDescriptor);
+ public final DexType invocationHandlerType =
+ createStaticallyKnownType(invocationHandlerDescriptor);
+ public final DexType proxyType = createStaticallyKnownType(proxyDescriptor);
+ public final DexType serviceLoaderType = createStaticallyKnownType(serviceLoaderDescriptor);
+
public final DexType serviceLoaderConfigurationErrorType =
- createType(serviceLoaderConfigurationErrorDescriptor);
- public final DexType listType = createType(listDescriptor);
- public final DexType setType = createType(setDescriptor);
- public final DexType mapType = createType(mapDescriptor);
- public final DexType mapEntryType = createType(mapEntryDescriptor);
- public final DexType collectionType = createType(collectionDescriptor);
- public final DexType comparatorType = createType(comparatorDescriptor);
- public final DexType callableType = createType(callableDescriptor);
- public final DexType supplierType = createType(supplierDescriptor);
- public final DexType consumerType = createType(consumerDescriptor);
- public final DexType runnableType = createType(runnableDescriptor);
- public final DexType optionalType = createType(optionalDescriptor);
- public final DexType optionalDoubleType = createType(optionalDoubleDescriptor);
- public final DexType optionalIntType = createType(optionalIntDescriptor);
- public final DexType optionalLongType = createType(optionalLongDescriptor);
- public final DexType streamType = createType(streamDescriptor);
+ createStaticallyKnownType(serviceLoaderConfigurationErrorDescriptor);
+ public final DexType listType = createStaticallyKnownType(listDescriptor);
+ public final DexType setType = createStaticallyKnownType(setDescriptor);
+ public final DexType mapType = createStaticallyKnownType(mapDescriptor);
+ public final DexType mapEntryType = createStaticallyKnownType(mapEntryDescriptor);
+ public final DexType abstractMapSimpleEntryType =
+ createStaticallyKnownType("Ljava/util/AbstractMap$SimpleEntry;");
+ public final DexType collectionType = createStaticallyKnownType(collectionDescriptor);
+ public final DexType comparatorType = createStaticallyKnownType(comparatorDescriptor);
+ public final DexType callableType = createStaticallyKnownType(callableDescriptor);
+ public final DexType supplierType = createStaticallyKnownType(supplierDescriptor);
+ public final DexType consumerType = createStaticallyKnownType(consumerDescriptor);
+ public final DexType runnableType = createStaticallyKnownType(runnableDescriptor);
+ public final DexType optionalType = createStaticallyKnownType(optionalDescriptor);
+ public final DexType optionalDoubleType = createStaticallyKnownType(optionalDoubleDescriptor);
+ public final DexType optionalIntType = createStaticallyKnownType(optionalIntDescriptor);
+ public final DexType optionalLongType = createStaticallyKnownType(optionalLongDescriptor);
+ public final DexType streamType = createStaticallyKnownType(streamDescriptor);
- public final DexType runtimeExceptionType = createType(runtimeExceptionDescriptor);
- public final DexType throwableType = createType(throwableDescriptor);
- public final DexType illegalAccessErrorType = createType(illegalAccessErrorDescriptor);
- public final DexType icceType = createType(icceDescriptor);
+ public final DexType doubleConsumer =
+ createStaticallyKnownType("Ljava/util/function/DoubleConsumer;");
+ public final DexType longConsumer =
+ createStaticallyKnownType("Ljava/util/function/LongConsumer;");
+ public final DexType intConsumer = createStaticallyKnownType("Ljava/util/function/IntConsumer;");
+
+ public final DexType runtimeExceptionType = createStaticallyKnownType(runtimeExceptionDescriptor);
+ public final DexType throwableType = createStaticallyKnownType(throwableDescriptor);
+ public final DexType illegalAccessErrorType =
+ createStaticallyKnownType(illegalAccessErrorDescriptor);
+ public final DexType icceType = createStaticallyKnownType(icceDescriptor);
public final DexType exceptionInInitializerErrorType =
- createType(exceptionInInitializerErrorDescriptor);
- public final DexType noClassDefFoundErrorType = createType(noClassDefFoundErrorDescriptor);
- public final DexType noSuchFieldErrorType = createType(noSuchFieldErrorDescriptor);
- public final DexType npeType = createType(npeDescriptor);
+ createStaticallyKnownType(exceptionInInitializerErrorDescriptor);
+ public final DexType noClassDefFoundErrorType =
+ createStaticallyKnownType(noClassDefFoundErrorDescriptor);
+ public final DexType noSuchFieldErrorType = createStaticallyKnownType(noSuchFieldErrorDescriptor);
+ public final DexType npeType = createStaticallyKnownType(npeDescriptor);
public final DexType reflectiveOperationExceptionType =
- createType(reflectiveOperationExceptionDescriptor);
+ createStaticallyKnownType(reflectiveOperationExceptionDescriptor);
+
+ public final DexType javaUtilLoggingLoggerType =
+ createStaticallyKnownType("Ljava/util/logging/Logger;");
+ public final DexType androidUtilLogType = createStaticallyKnownType("Landroid/util/Log;");
+
+ public final DexType androidOsBuildVersionType =
+ createStaticallyKnownType("Landroid/os/Build$VERSION;");
public final StringBuildingMethods stringBuilderMethods =
new StringBuildingMethods(stringBuilderType);
@@ -381,6 +409,7 @@
public final ObjectMethods objectMethods = new ObjectMethods();
public final StringMethods stringMethods = new StringMethods();
public final LongMethods longMethods = new LongMethods();
+ public final DoubleMethods doubleMethods = new DoubleMethods();
public final JavaUtilArraysMethods utilArraysMethods = new JavaUtilArraysMethods();
public final ThrowableMethods throwableMethods = new ThrowableMethods();
public final AssertionErrorMethods assertionErrorMethods = new AssertionErrorMethods();
@@ -402,50 +431,58 @@
public final DexString deserializeLambdaMethodName = createString("$deserializeLambda$");
public final DexProto deserializeLambdaMethodProto =
- createProto(objectType, createType("Ljava/lang/invoke/SerializedLambda;"));
+ createProto(objectType, createStaticallyKnownType("Ljava/lang/invoke/SerializedLambda;"));
// Dex system annotations.
// See https://source.android.com/devices/tech/dalvik/dex-format.html#system-annotation
- public final DexType annotationDefault = createType("Ldalvik/annotation/AnnotationDefault;");
- public final DexType annotationEnclosingClass = createType("Ldalvik/annotation/EnclosingClass;");
- public final DexType annotationEnclosingMethod = createType(
- "Ldalvik/annotation/EnclosingMethod;");
- public final DexType annotationInnerClass = createType("Ldalvik/annotation/InnerClass;");
- public final DexType annotationMemberClasses = createType("Ldalvik/annotation/MemberClasses;");
- public final DexType annotationMethodParameters = createType(
- "Ldalvik/annotation/MethodParameters;");
- public final DexType annotationSignature = createType("Ldalvik/annotation/Signature;");
- public final DexType annotationSourceDebugExtension = createType(
- "Ldalvik/annotation/SourceDebugExtension;");
- public final DexType annotationThrows = createType("Ldalvik/annotation/Throws;");
+ public final DexType annotationDefault =
+ createStaticallyKnownType("Ldalvik/annotation/AnnotationDefault;");
+ public final DexType annotationEnclosingClass =
+ createStaticallyKnownType("Ldalvik/annotation/EnclosingClass;");
+ public final DexType annotationEnclosingMethod =
+ createStaticallyKnownType("Ldalvik/annotation/EnclosingMethod;");
+ public final DexType annotationInnerClass =
+ createStaticallyKnownType("Ldalvik/annotation/InnerClass;");
+ public final DexType annotationMemberClasses =
+ createStaticallyKnownType("Ldalvik/annotation/MemberClasses;");
+ public final DexType annotationMethodParameters =
+ createStaticallyKnownType("Ldalvik/annotation/MethodParameters;");
+ public final DexType annotationSignature =
+ createStaticallyKnownType("Ldalvik/annotation/Signature;");
+ public final DexType annotationSourceDebugExtension =
+ createStaticallyKnownType("Ldalvik/annotation/SourceDebugExtension;");
+ public final DexType annotationThrows = createStaticallyKnownType("Ldalvik/annotation/Throws;");
public final DexType annotationSynthesizedClassMap =
- createType("Lcom/android/tools/r8/annotations/SynthesizedClassMap;");
+ createStaticallyKnownType("Lcom/android/tools/r8/annotations/SynthesizedClassMap;");
public final DexType annotationCovariantReturnType =
- createType("Ldalvik/annotation/codegen/CovariantReturnType;");
+ createStaticallyKnownType("Ldalvik/annotation/codegen/CovariantReturnType;");
public final DexType annotationCovariantReturnTypes =
- createType("Ldalvik/annotation/codegen/CovariantReturnType$CovariantReturnTypes;");
+ createStaticallyKnownType(
+ "Ldalvik/annotation/codegen/CovariantReturnType$CovariantReturnTypes;");
public final DexType annotationReachabilitySensitive =
- createType("Ldalvik/annotation/optimization/ReachabilitySensitive;");
+ createStaticallyKnownType("Ldalvik/annotation/optimization/ReachabilitySensitive;");
// Runtime affecting yet class-retained annotations.
public final DexType dalvikFastNativeAnnotation =
- createType("Ldalvik/annotation/optimization/FastNative;");
+ createStaticallyKnownType("Ldalvik/annotation/optimization/FastNative;");
public final DexType dalvikCriticalNativeAnnotation =
- createType("Ldalvik/annotation/optimization/CriticalNative;");
+ createStaticallyKnownType("Ldalvik/annotation/optimization/CriticalNative;");
private static final String METAFACTORY_METHOD_NAME = "metafactory";
private static final String METAFACTORY_ALT_METHOD_NAME = "altMetafactory";
- public final DexType metafactoryType = createType("Ljava/lang/invoke/LambdaMetafactory;");
- public final DexType callSiteType = createType("Ljava/lang/invoke/CallSite;");
- public final DexType lookupType = createType("Ljava/lang/invoke/MethodHandles$Lookup;");
- public final DexType iteratorType = createType("Ljava/util/Iterator;");
- public final DexType listIteratorType = createType("Ljava/util/ListIterator;");
- public final DexType enumerationType = createType("Ljava/util/Enumeration;");
- public final DexType serializableType = createType("Ljava/io/Serializable;");
- public final DexType externalizableType = createType("Ljava/io/Externalizable;");
- public final DexType cloneableType = createType("Ljava/lang/Cloneable;");
- public final DexType comparableType = createType("Ljava/lang/Comparable;");
+ public final DexType metafactoryType =
+ createStaticallyKnownType("Ljava/lang/invoke/LambdaMetafactory;");
+ public final DexType callSiteType = createStaticallyKnownType("Ljava/lang/invoke/CallSite;");
+ public final DexType lookupType =
+ createStaticallyKnownType("Ljava/lang/invoke/MethodHandles$Lookup;");
+ public final DexType iteratorType = createStaticallyKnownType("Ljava/util/Iterator;");
+ public final DexType listIteratorType = createStaticallyKnownType("Ljava/util/ListIterator;");
+ public final DexType enumerationType = createStaticallyKnownType("Ljava/util/Enumeration;");
+ public final DexType serializableType = createStaticallyKnownType("Ljava/io/Serializable;");
+ public final DexType externalizableType = createStaticallyKnownType("Ljava/io/Externalizable;");
+ public final DexType cloneableType = createStaticallyKnownType("Ljava/lang/Cloneable;");
+ public final DexType comparableType = createStaticallyKnownType("Ljava/lang/Comparable;");
public final ServiceLoaderMethods serviceLoaderMethods = new ServiceLoaderMethods();
@@ -509,7 +546,7 @@
createMethod(objectType, deserializeLambdaMethodProto, deserializeLambdaMethodName);
public final DexType stringConcatFactoryType =
- createType("Ljava/lang/invoke/StringConcatFactory;");
+ createStaticallyKnownType("Ljava/lang/invoke/StringConcatFactory;");
public final DexMethod stringConcatWithConstantsMethod =
createMethod(
@@ -633,6 +670,20 @@
}
}
+ public class DoubleMethods {
+
+ public final DexMethod isNaN;
+
+ private DoubleMethods() {
+ isNaN =
+ createMethod(
+ boxedDoubleDescriptor,
+ createString("isNaN"),
+ booleanDescriptor,
+ new DexString[] {doubleDescriptor});
+ }
+ }
+
public class JavaUtilArraysMethods {
public final DexMethod asList;
@@ -1315,20 +1366,60 @@
return markers;
}
- synchronized public DexType createType(DexString descriptor) {
+ // Non-synchronized internal create.
+ private DexType internalCreateType(DexString descriptor) {
assert !sorted;
assert descriptor != null;
DexType result = types.get(descriptor);
if (result == null) {
result = new DexType(descriptor);
- assert result.isArrayType() || result.isClassType() || result.isPrimitiveType() ||
- result.isVoidType();
+ assert result.isArrayType()
+ || result.isClassType()
+ || result.isPrimitiveType()
+ || result.isVoidType();
assert !isInternalSentinel(result);
types.put(descriptor, result);
}
return result;
}
+ private DexType createStaticallyKnownType(String descriptor) {
+ return createStaticallyKnownType(createString(descriptor));
+ }
+
+ private DexType createStaticallyKnownType(DexString descriptor) {
+ DexType type = internalCreateType(descriptor);
+ // Conservatively add all statically known types to "compiler synthesized types set".
+ addPossiblySynthesizedType(type);
+ return type;
+ }
+
+ // Safe synchronized external create. May be used for statically known types in synthetic code.
+ // See the generated BackportedMethods.java for reference.
+ public synchronized DexType createSynthesizedType(String descriptor) {
+ DexType type = internalCreateType(createString(descriptor));
+ addPossiblySynthesizedType(type);
+ return type;
+ }
+
+ private void addPossiblySynthesizedType(DexType type) {
+ if (type.isArrayType()) {
+ type = type.toBaseType(this);
+ }
+ if (type.isClassType()) {
+ possibleCompilerSynthesizedTypes.add(type);
+ }
+ }
+
+ public void forEachPossiblyCompilerSynthesizedType(Consumer<DexType> fn) {
+ possibleCompilerSynthesizedTypes.forEach(fn);
+ }
+
+ // Safe synchronized external create. Should never be used to create a statically known type!
+ public synchronized DexType createType(DexString descriptor) {
+ return internalCreateType(descriptor);
+ }
+
public DexType createType(String descriptor) {
return createType(createString(descriptor));
}
diff --git a/src/main/java/com/android/tools/r8/graph/DirectMappedDexApplication.java b/src/main/java/com/android/tools/r8/graph/DirectMappedDexApplication.java
index 3e1ed8a..b8210c8 100644
--- a/src/main/java/com/android/tools/r8/graph/DirectMappedDexApplication.java
+++ b/src/main/java/com/android/tools/r8/graph/DirectMappedDexApplication.java
@@ -210,7 +210,7 @@
public static class Builder extends DexApplication.Builder<Builder> {
- private final ImmutableList<DexLibraryClass> libraryClasses;
+ private ImmutableList<DexLibraryClass> libraryClasses;
private ImmutableList<DexClasspathClass> classpathClasses;
Builder(LazyLoadedDexApplication application) {
@@ -233,6 +233,16 @@
return this;
}
+ public Builder replaceLibraryClasses(Collection<DexLibraryClass> libraryClasses) {
+ this.libraryClasses = ImmutableList.copyOf(libraryClasses);
+ return self();
+ }
+
+ public Builder replaceClasspathClasses(Collection<DexClasspathClass> classpathClasses) {
+ this.classpathClasses = ImmutableList.copyOf(classpathClasses);
+ return self();
+ }
+
public Builder addClasspathClasses(List<DexClasspathClass> classes) {
classpathClasses =
ImmutableList.<DexClasspathClass>builder()
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java b/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java
index 6ff25d9..fd0e452 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java
@@ -527,6 +527,19 @@
return rewritableMethods.getProvider(original);
}
+ public static void checkForAssumedLibraryTypes(AppView<?> appView) {
+ Map<DexString, Map<DexType, DexType>> retargetCoreLibMember =
+ appView.options().desugaredLibraryConfiguration.getRetargetCoreLibMember();
+ for (DexString methodName : retargetCoreLibMember.keySet()) {
+ for (DexType inType : retargetCoreLibMember.get(methodName).keySet()) {
+ DexClass typeClass = appView.definitionFor(inType);
+ if (typeClass == null) {
+ RewritableMethods.warnMissingRetargetCoreLibraryMember(inType, appView);
+ }
+ }
+ }
+ }
+
private static final class RewritableMethods {
// Map backported method to a provider for creating the actual target method (with code).
@@ -1574,9 +1587,9 @@
DexType[] consumerTypes =
new DexType[]{
factory.consumerType,
- factory.createType("Ljava/util/function/DoubleConsumer;"),
- factory.createType("Ljava/util/function/LongConsumer;"),
- factory.createType("Ljava/util/function/IntConsumer;")
+ factory.doubleConsumer,
+ factory.longConsumer,
+ factory.intConsumer
};
TemplateMethodFactory[] methodFactories =
new TemplateMethodFactory[]{
@@ -1666,7 +1679,7 @@
method, BackportedMethods::StreamMethods_ofNullable, "ofNullable"));
}
- private void warnMissingRetargetCoreLibraryMember(DexType type, AppView<?> appView) {
+ private static void warnMissingRetargetCoreLibraryMember(DexType type, AppView<?> appView) {
StringDiagnostic warning =
new StringDiagnostic(
"Cannot retarget core library member "
@@ -1683,9 +1696,7 @@
for (DexString methodName : retargetCoreLibMember.keySet()) {
for (DexType inType : retargetCoreLibMember.get(methodName).keySet()) {
DexClass typeClass = appView.definitionFor(inType);
- if (typeClass == null) {
- warnMissingRetargetCoreLibraryMember(inType, appView);
- } else {
+ if (typeClass != null) {
DexType newHolder = retargetCoreLibMember.get(methodName).get(inType);
List<DexEncodedMethod> found = findDexEncodedMethodsWithName(methodName, typeClass);
for (DexEncodedMethod encodedMethod : found) {
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/backports/BackportedMethods.java b/src/main/java/com/android/tools/r8/ir/desugar/backports/BackportedMethods.java
index 02cb581..0546e9d 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/backports/BackportedMethods.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/backports/BackportedMethods.java
@@ -204,8 +204,8 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/CharSequence;"),
- options.itemFactory.createProto(options.itemFactory.createType("I")),
+ options.itemFactory.charSequenceType,
+ options.itemFactory.createProto(options.itemFactory.intType),
options.itemFactory.createString("length")),
true),
new CfStore(ValueType.INT, 2),
@@ -214,8 +214,8 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/CharSequence;"),
- options.itemFactory.createProto(options.itemFactory.createType("I")),
+ options.itemFactory.charSequenceType,
+ options.itemFactory.createProto(options.itemFactory.intType),
options.itemFactory.createString("length")),
true),
new CfStore(ValueType.INT, 3),
@@ -235,11 +235,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Math;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Math;"),
options.itemFactory.createProto(
- options.itemFactory.createType("I"),
- options.itemFactory.createType("I"),
- options.itemFactory.createType("I")),
+ options.itemFactory.intType,
+ options.itemFactory.intType,
+ options.itemFactory.intType),
options.itemFactory.createString("min")),
false),
new CfStore(ValueType.INT, 5),
@@ -253,9 +253,9 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/CharSequence;"),
+ options.itemFactory.charSequenceType,
options.itemFactory.createProto(
- options.itemFactory.createType("C"), options.itemFactory.createType("I")),
+ options.itemFactory.charType, options.itemFactory.intType),
options.itemFactory.createString("charAt")),
true),
new CfStore(ValueType.INT, 6),
@@ -265,9 +265,9 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/CharSequence;"),
+ options.itemFactory.charSequenceType,
options.itemFactory.createProto(
- options.itemFactory.createType("C"), options.itemFactory.createType("I")),
+ options.itemFactory.charType, options.itemFactory.intType),
options.itemFactory.createString("charAt")),
true),
new CfStore(ValueType.INT, 7),
@@ -321,23 +321,23 @@
1,
ImmutableList.of(
label0,
- new CfNew(options.itemFactory.createType("Ljava/lang/String;")),
+ new CfNew(options.itemFactory.stringType),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfLoad(ValueType.INT, 0),
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Character;"),
+ options.itemFactory.boxedCharType,
options.itemFactory.createProto(
- options.itemFactory.createType("[C"), options.itemFactory.createType("I")),
+ options.itemFactory.charArrayType, options.itemFactory.intType),
options.itemFactory.createString("toChars")),
false),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/String;"),
+ options.itemFactory.stringType,
options.itemFactory.createProto(
- options.itemFactory.createType("V"), options.itemFactory.createType("[C")),
+ options.itemFactory.voidType, options.itemFactory.charArrayType),
options.itemFactory.createString("<init>")),
false),
new CfReturn(ValueType.OBJECT),
@@ -373,16 +373,16 @@
ImmutableList.of(
label0,
new CfLoad(ValueType.OBJECT, 1),
- new CfInstanceOf(options.itemFactory.createType("Ljava/lang/AutoCloseable;")),
+ new CfInstanceOf(options.itemFactory.autoCloseableType),
new CfIf(If.Type.EQ, ValueType.INT, label2),
label1,
new CfLoad(ValueType.OBJECT, 1),
- new CfCheckCast(options.itemFactory.createType("Ljava/lang/AutoCloseable;")),
+ new CfCheckCast(options.itemFactory.autoCloseableType),
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/AutoCloseable;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.autoCloseableType,
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("close")),
true),
new CfGoto(label11),
@@ -391,22 +391,21 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Class;")),
+ options.itemFactory.objectType,
+ options.itemFactory.createProto(options.itemFactory.classType),
options.itemFactory.createString("getClass")),
false),
new CfConstString(options.itemFactory.createString("close")),
new CfConstNumber(0, ValueType.INT),
- new CfNewArray(options.itemFactory.createType("[Ljava/lang/Class;")),
+ new CfNewArray(options.itemFactory.createSynthesizedType("[Ljava/lang/Class;")),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Class;"),
+ options.itemFactory.classType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/reflect/Method;"),
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createType("[Ljava/lang/Class;")),
+ options.itemFactory.createSynthesizedType("Ljava/lang/reflect/Method;"),
+ options.itemFactory.stringType,
+ options.itemFactory.createSynthesizedType("[Ljava/lang/Class;")),
options.itemFactory.createString("getMethod")),
false),
new CfStore(ValueType.OBJECT, 2),
@@ -414,15 +413,15 @@
new CfLoad(ValueType.OBJECT, 2),
new CfLoad(ValueType.OBJECT, 1),
new CfConstNumber(0, ValueType.INT),
- new CfNewArray(options.itemFactory.createType("[Ljava/lang/Object;")),
+ new CfNewArray(options.itemFactory.createSynthesizedType("[Ljava/lang/Object;")),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/reflect/Method;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/reflect/Method;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("[Ljava/lang/Object;")),
+ options.itemFactory.objectType,
+ options.itemFactory.objectType,
+ options.itemFactory.createSynthesizedType("[Ljava/lang/Object;")),
options.itemFactory.createString("invoke")),
false),
new CfStackInstruction(CfStackInstruction.Opcode.Pop),
@@ -431,124 +430,116 @@
label5,
new CfStore(ValueType.OBJECT, 2),
label6,
- new CfNew(options.itemFactory.createType("Ljava/lang/AssertionError;")),
+ new CfNew(options.itemFactory.createSynthesizedType("Ljava/lang/AssertionError;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
- new CfNew(options.itemFactory.createType("Ljava/lang/StringBuilder;")),
+ new CfNew(options.itemFactory.stringBuilderType),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfLoad(ValueType.OBJECT, 1),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Class;")),
+ options.itemFactory.objectType,
+ options.itemFactory.createProto(options.itemFactory.classType),
options.itemFactory.createString("getClass")),
false),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.objectType),
options.itemFactory.createString("append")),
false),
new CfConstString(options.itemFactory.createString(" does not have a close() method.")),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.stringType),
options.itemFactory.createString("append")),
false),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.stringType),
options.itemFactory.createString("toString")),
false),
new CfLoad(ValueType.OBJECT, 2),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/AssertionError;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/AssertionError;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"),
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createType("Ljava/lang/Throwable;")),
+ options.itemFactory.voidType,
+ options.itemFactory.stringType,
+ options.itemFactory.throwableType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
label7,
new CfStore(ValueType.OBJECT, 2),
label8,
- new CfNew(options.itemFactory.createType("Ljava/lang/AssertionError;")),
+ new CfNew(options.itemFactory.createSynthesizedType("Ljava/lang/AssertionError;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
- new CfNew(options.itemFactory.createType("Ljava/lang/StringBuilder;")),
+ new CfNew(options.itemFactory.stringBuilderType),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfConstString(options.itemFactory.createString("Fail to call close() on ")),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.stringType),
options.itemFactory.createString("append")),
false),
new CfLoad(ValueType.OBJECT, 1),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Class;")),
+ options.itemFactory.objectType,
+ options.itemFactory.createProto(options.itemFactory.classType),
options.itemFactory.createString("getClass")),
false),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.objectType),
options.itemFactory.createString("append")),
false),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.stringType),
options.itemFactory.createString("toString")),
false),
new CfLoad(ValueType.OBJECT, 2),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/AssertionError;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/AssertionError;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"),
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createType("Ljava/lang/Throwable;")),
+ options.itemFactory.voidType,
+ options.itemFactory.stringType,
+ options.itemFactory.throwableType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -559,9 +550,9 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/reflect/InvocationTargetException;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Throwable;")),
+ options.itemFactory.createSynthesizedType(
+ "Ljava/lang/reflect/InvocationTargetException;"),
+ options.itemFactory.createProto(options.itemFactory.throwableType),
options.itemFactory.createString("getCause")),
false),
new CfThrow(),
@@ -586,42 +577,46 @@
label2,
label4,
ImmutableList.of(
- options.itemFactory.createType("Ljava/lang/NoSuchMethodException;")),
- ImmutableList.of(label5)),
- new CfTryCatch(
- label2,
- label4,
- ImmutableList.of(options.itemFactory.createType("Ljava/lang/SecurityException;")),
+ options.itemFactory.createSynthesizedType("Ljava/lang/NoSuchMethodException;")),
ImmutableList.of(label5)),
new CfTryCatch(
label2,
label4,
ImmutableList.of(
- options.itemFactory.createType("Ljava/lang/IllegalAccessException;")),
+ options.itemFactory.createSynthesizedType("Ljava/lang/SecurityException;")),
+ ImmutableList.of(label5)),
+ new CfTryCatch(
+ label2,
+ label4,
+ ImmutableList.of(
+ options.itemFactory.createSynthesizedType(
+ "Ljava/lang/IllegalAccessException;")),
ImmutableList.of(label7)),
new CfTryCatch(
label2,
label4,
ImmutableList.of(
- options.itemFactory.createType("Ljava/lang/IllegalArgumentException;")),
+ options.itemFactory.createSynthesizedType(
+ "Ljava/lang/IllegalArgumentException;")),
ImmutableList.of(label7)),
new CfTryCatch(
label2,
label4,
ImmutableList.of(
- options.itemFactory.createType("Ljava/lang/ExceptionInInitializerError;")),
+ options.itemFactory.createSynthesizedType(
+ "Ljava/lang/ExceptionInInitializerError;")),
ImmutableList.of(label7)),
new CfTryCatch(
label2,
label4,
ImmutableList.of(
- options.itemFactory.createType(
+ options.itemFactory.createSynthesizedType(
"Ljava/lang/reflect/InvocationTargetException;")),
ImmutableList.of(label9)),
new CfTryCatch(
label0,
label11,
- ImmutableList.of(options.itemFactory.createType("Ljava/lang/Throwable;")),
+ ImmutableList.of(options.itemFactory.throwableType),
ImmutableList.of(label12))),
ImmutableList.of());
}
@@ -640,16 +635,16 @@
6,
ImmutableList.of(
label0,
- new CfNew(options.itemFactory.createType("Ljava/util/ArrayList;")),
+ new CfNew(options.itemFactory.createSynthesizedType("Ljava/util/ArrayList;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfLoad(ValueType.OBJECT, 0),
new CfArrayLength(),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/ArrayList;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/ArrayList;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"), options.itemFactory.createType("I")),
+ options.itemFactory.voidType, options.itemFactory.intType),
options.itemFactory.createString("<init>")),
false),
new CfStore(ValueType.OBJECT, 1),
@@ -675,19 +670,17 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Objects;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Objects;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.objectType, options.itemFactory.objectType),
options.itemFactory.createString("requireNonNull")),
false),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/ArrayList;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/ArrayList;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Z"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.booleanType, options.itemFactory.objectType),
options.itemFactory.createString("add")),
false),
new CfStackInstruction(CfStackInstruction.Opcode.Pop),
@@ -699,10 +692,10 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Collections;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Collections;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/List;"),
- options.itemFactory.createType("Ljava/util/List;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/List;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/List;")),
options.itemFactory.createString("unmodifiableList")),
false),
new CfReturn(ValueType.OBJECT),
@@ -724,17 +717,17 @@
ImmutableList.of(
label0,
new CfNew(
- options.itemFactory.createType("Ljava/util/AbstractMap$SimpleImmutableEntry;")),
+ options.itemFactory.createSynthesizedType(
+ "Ljava/util/AbstractMap$SimpleImmutableEntry;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfLoad(ValueType.OBJECT, 0),
label1,
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Objects;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Objects;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.objectType, options.itemFactory.objectType),
options.itemFactory.createString("requireNonNull")),
false),
new CfLoad(ValueType.OBJECT, 1),
@@ -742,20 +735,20 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Objects;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Objects;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.objectType, options.itemFactory.objectType),
options.itemFactory.createString("requireNonNull")),
false),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/AbstractMap$SimpleImmutableEntry;"),
+ options.itemFactory.createSynthesizedType(
+ "Ljava/util/AbstractMap$SimpleImmutableEntry;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"),
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.voidType,
+ options.itemFactory.objectType,
+ options.itemFactory.objectType),
options.itemFactory.createString("<init>")),
false),
label3,
@@ -782,16 +775,16 @@
8,
ImmutableList.of(
label0,
- new CfNew(options.itemFactory.createType("Ljava/util/HashMap;")),
+ new CfNew(options.itemFactory.createSynthesizedType("Ljava/util/HashMap;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfLoad(ValueType.OBJECT, 0),
new CfArrayLength(),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/HashMap;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/HashMap;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"), options.itemFactory.createType("I")),
+ options.itemFactory.voidType, options.itemFactory.intType),
options.itemFactory.createString("<init>")),
false),
new CfStore(ValueType.OBJECT, 1),
@@ -816,18 +809,16 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Map$Entry;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Map$Entry;"),
+ options.itemFactory.createProto(options.itemFactory.objectType),
options.itemFactory.createString("getKey")),
true),
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Objects;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Objects;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.objectType, options.itemFactory.objectType),
options.itemFactory.createString("requireNonNull")),
false),
new CfStore(ValueType.OBJECT, 6),
@@ -836,18 +827,16 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Map$Entry;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Map$Entry;"),
+ options.itemFactory.createProto(options.itemFactory.objectType),
options.itemFactory.createString("getValue")),
true),
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Objects;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Objects;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.objectType, options.itemFactory.objectType),
options.itemFactory.createString("requireNonNull")),
false),
new CfStore(ValueType.OBJECT, 7),
@@ -858,61 +847,59 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/HashMap;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/HashMap;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.objectType,
+ options.itemFactory.objectType,
+ options.itemFactory.objectType),
options.itemFactory.createString("put")),
false),
new CfIf(If.Type.EQ, ValueType.OBJECT, label7),
label6,
- new CfNew(options.itemFactory.createType("Ljava/lang/IllegalArgumentException;")),
+ new CfNew(
+ options.itemFactory.createSynthesizedType("Ljava/lang/IllegalArgumentException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
- new CfNew(options.itemFactory.createType("Ljava/lang/StringBuilder;")),
+ new CfNew(options.itemFactory.stringBuilderType),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfConstString(options.itemFactory.createString("duplicate key: ")),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.stringType),
options.itemFactory.createString("append")),
false),
new CfLoad(ValueType.OBJECT, 6),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.objectType),
options.itemFactory.createString("append")),
false),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.stringType),
options.itemFactory.createString("toString")),
false),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/IllegalArgumentException;"),
+ options.itemFactory.createSynthesizedType(
+ "Ljava/lang/IllegalArgumentException;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.voidType, options.itemFactory.stringType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -924,10 +911,10 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Collections;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Collections;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/Map;"),
- options.itemFactory.createType("Ljava/util/Map;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Map;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Map;")),
options.itemFactory.createString("unmodifiableMap")),
false),
new CfReturn(ValueType.OBJECT),
@@ -951,16 +938,16 @@
6,
ImmutableList.of(
label0,
- new CfNew(options.itemFactory.createType("Ljava/util/HashSet;")),
+ new CfNew(options.itemFactory.createSynthesizedType("Ljava/util/HashSet;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfLoad(ValueType.OBJECT, 0),
new CfArrayLength(),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/HashSet;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/HashSet;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"), options.itemFactory.createType("I")),
+ options.itemFactory.voidType, options.itemFactory.intType),
options.itemFactory.createString("<init>")),
false),
new CfStore(ValueType.OBJECT, 1),
@@ -986,69 +973,65 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Objects;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Objects;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.objectType, options.itemFactory.objectType),
options.itemFactory.createString("requireNonNull")),
false),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/HashSet;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/HashSet;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Z"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.booleanType, options.itemFactory.objectType),
options.itemFactory.createString("add")),
false),
new CfIf(If.Type.NE, ValueType.INT, label5),
label4,
- new CfNew(options.itemFactory.createType("Ljava/lang/IllegalArgumentException;")),
+ new CfNew(
+ options.itemFactory.createSynthesizedType("Ljava/lang/IllegalArgumentException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
- new CfNew(options.itemFactory.createType("Ljava/lang/StringBuilder;")),
+ new CfNew(options.itemFactory.stringBuilderType),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfConstString(options.itemFactory.createString("duplicate element: ")),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.stringType),
options.itemFactory.createString("append")),
false),
new CfLoad(ValueType.OBJECT, 5),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.objectType),
options.itemFactory.createString("append")),
false),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.stringType),
options.itemFactory.createString("toString")),
false),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/IllegalArgumentException;"),
+ options.itemFactory.createSynthesizedType(
+ "Ljava/lang/IllegalArgumentException;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.voidType, options.itemFactory.stringType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -1060,10 +1043,10 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Collections;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Collections;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/Set;"),
- options.itemFactory.createType("Ljava/util/Set;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Set;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Set;")),
options.itemFactory.createString("unmodifiableSet")),
false),
new CfReturn(ValueType.OBJECT),
@@ -1086,22 +1069,22 @@
4,
ImmutableList.of(
label0,
- new CfNew(options.itemFactory.createType("Ljava/util/ArrayList;")),
+ new CfNew(options.itemFactory.createSynthesizedType("Ljava/util/ArrayList;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfLoad(ValueType.OBJECT, 0),
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Collection;"),
- options.itemFactory.createProto(options.itemFactory.createType("I")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Collection;"),
+ options.itemFactory.createProto(options.itemFactory.intType),
options.itemFactory.createString("size")),
true),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/ArrayList;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/ArrayList;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"), options.itemFactory.createType("I")),
+ options.itemFactory.voidType, options.itemFactory.intType),
options.itemFactory.createString("<init>")),
false),
new CfStore(ValueType.OBJECT, 1),
@@ -1110,9 +1093,9 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Collection;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Collection;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/Iterator;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Iterator;")),
options.itemFactory.createString("iterator")),
true),
new CfStore(ValueType.OBJECT, 2),
@@ -1121,8 +1104,8 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Iterator;"),
- options.itemFactory.createProto(options.itemFactory.createType("Z")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Iterator;"),
+ options.itemFactory.createProto(options.itemFactory.booleanType),
options.itemFactory.createString("hasNext")),
true),
new CfIf(If.Type.EQ, ValueType.INT, label5),
@@ -1130,9 +1113,8 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Iterator;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Iterator;"),
+ options.itemFactory.createProto(options.itemFactory.objectType),
options.itemFactory.createString("next")),
true),
new CfStore(ValueType.OBJECT, 3),
@@ -1142,19 +1124,17 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Objects;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Objects;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.objectType, options.itemFactory.objectType),
options.itemFactory.createString("requireNonNull")),
false),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/ArrayList;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/ArrayList;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Z"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.booleanType, options.itemFactory.objectType),
options.itemFactory.createString("add")),
false),
new CfStackInstruction(CfStackInstruction.Opcode.Pop),
@@ -1165,10 +1145,10 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Collections;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Collections;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/List;"),
- options.itemFactory.createType("Ljava/util/List;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/List;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/List;")),
options.itemFactory.createString("unmodifiableList")),
false),
new CfReturn(ValueType.OBJECT),
@@ -1194,22 +1174,22 @@
4,
ImmutableList.of(
label0,
- new CfNew(options.itemFactory.createType("Ljava/util/HashMap;")),
+ new CfNew(options.itemFactory.createSynthesizedType("Ljava/util/HashMap;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfLoad(ValueType.OBJECT, 0),
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Map;"),
- options.itemFactory.createProto(options.itemFactory.createType("I")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Map;"),
+ options.itemFactory.createProto(options.itemFactory.intType),
options.itemFactory.createString("size")),
true),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/HashMap;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/HashMap;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"), options.itemFactory.createType("I")),
+ options.itemFactory.voidType, options.itemFactory.intType),
options.itemFactory.createString("<init>")),
false),
new CfStore(ValueType.OBJECT, 1),
@@ -1218,17 +1198,17 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Map;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Map;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/Set;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Set;")),
options.itemFactory.createString("entrySet")),
true),
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Set;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Set;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/Iterator;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Iterator;")),
options.itemFactory.createString("iterator")),
true),
new CfStore(ValueType.OBJECT, 2),
@@ -1237,8 +1217,8 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Iterator;"),
- options.itemFactory.createProto(options.itemFactory.createType("Z")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Iterator;"),
+ options.itemFactory.createProto(options.itemFactory.booleanType),
options.itemFactory.createString("hasNext")),
true),
new CfIf(If.Type.EQ, ValueType.INT, label8),
@@ -1246,12 +1226,11 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Iterator;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Iterator;"),
+ options.itemFactory.createProto(options.itemFactory.objectType),
options.itemFactory.createString("next")),
true),
- new CfCheckCast(options.itemFactory.createType("Ljava/util/Map$Entry;")),
+ new CfCheckCast(options.itemFactory.createSynthesizedType("Ljava/util/Map$Entry;")),
new CfStore(ValueType.OBJECT, 3),
label3,
new CfLoad(ValueType.OBJECT, 1),
@@ -1260,18 +1239,16 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Map$Entry;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Map$Entry;"),
+ options.itemFactory.createProto(options.itemFactory.objectType),
options.itemFactory.createString("getKey")),
true),
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Objects;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Objects;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.objectType, options.itemFactory.objectType),
options.itemFactory.createString("requireNonNull")),
false),
new CfLoad(ValueType.OBJECT, 3),
@@ -1279,29 +1256,27 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Map$Entry;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Map$Entry;"),
+ options.itemFactory.createProto(options.itemFactory.objectType),
options.itemFactory.createString("getValue")),
true),
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Objects;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Objects;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.objectType, options.itemFactory.objectType),
options.itemFactory.createString("requireNonNull")),
false),
label6,
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/HashMap;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/HashMap;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.objectType,
+ options.itemFactory.objectType,
+ options.itemFactory.objectType),
options.itemFactory.createString("put")),
false),
new CfStackInstruction(CfStackInstruction.Opcode.Pop),
@@ -1312,10 +1287,10 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Collections;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Collections;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/Map;"),
- options.itemFactory.createType("Ljava/util/Map;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Map;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Map;")),
options.itemFactory.createString("unmodifiableMap")),
false),
new CfReturn(ValueType.OBJECT),
@@ -1338,22 +1313,22 @@
4,
ImmutableList.of(
label0,
- new CfNew(options.itemFactory.createType("Ljava/util/HashSet;")),
+ new CfNew(options.itemFactory.createSynthesizedType("Ljava/util/HashSet;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfLoad(ValueType.OBJECT, 0),
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Collection;"),
- options.itemFactory.createProto(options.itemFactory.createType("I")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Collection;"),
+ options.itemFactory.createProto(options.itemFactory.intType),
options.itemFactory.createString("size")),
true),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/HashSet;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/HashSet;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"), options.itemFactory.createType("I")),
+ options.itemFactory.voidType, options.itemFactory.intType),
options.itemFactory.createString("<init>")),
false),
new CfStore(ValueType.OBJECT, 1),
@@ -1362,9 +1337,9 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Collection;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Collection;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/Iterator;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Iterator;")),
options.itemFactory.createString("iterator")),
true),
new CfStore(ValueType.OBJECT, 2),
@@ -1373,8 +1348,8 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Iterator;"),
- options.itemFactory.createProto(options.itemFactory.createType("Z")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Iterator;"),
+ options.itemFactory.createProto(options.itemFactory.booleanType),
options.itemFactory.createString("hasNext")),
true),
new CfIf(If.Type.EQ, ValueType.INT, label5),
@@ -1382,9 +1357,8 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Iterator;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Iterator;"),
+ options.itemFactory.createProto(options.itemFactory.objectType),
options.itemFactory.createString("next")),
true),
new CfStore(ValueType.OBJECT, 3),
@@ -1394,19 +1368,17 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Objects;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Objects;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.objectType, options.itemFactory.objectType),
options.itemFactory.createString("requireNonNull")),
false),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/HashSet;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/HashSet;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Z"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.booleanType, options.itemFactory.objectType),
options.itemFactory.createString("add")),
false),
new CfStackInstruction(CfStackInstruction.Opcode.Pop),
@@ -1417,10 +1389,10 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Collections;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Collections;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/Set;"),
- options.itemFactory.createType("Ljava/util/Set;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Set;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Set;")),
options.itemFactory.createString("unmodifiableSet")),
false),
new CfReturn(ValueType.OBJECT),
@@ -1441,18 +1413,18 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Collections;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Collections;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/List;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/List;")),
options.itemFactory.createString("emptyList")),
false),
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Collections;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Collections;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/Enumeration;"),
- options.itemFactory.createType("Ljava/util/Collection;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Enumeration;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Collection;")),
options.itemFactory.createString("enumeration")),
false),
new CfReturn(ValueType.OBJECT)),
@@ -1471,17 +1443,17 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Collections;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Collections;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/List;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/List;")),
options.itemFactory.createString("emptyList")),
false),
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/List;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/List;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/Iterator;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Iterator;")),
options.itemFactory.createString("iterator")),
true),
new CfReturn(ValueType.OBJECT)),
@@ -1501,17 +1473,17 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Collections;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Collections;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/List;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/List;")),
options.itemFactory.createString("emptyList")),
false),
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/List;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/List;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/ListIterator;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/ListIterator;")),
options.itemFactory.createString("listIterator")),
true),
new CfReturn(ValueType.OBJECT)),
@@ -1533,9 +1505,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Double;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Double;"),
options.itemFactory.createProto(
- options.itemFactory.createType("J"), options.itemFactory.createType("D")),
+ options.itemFactory.longType, options.itemFactory.doubleType),
options.itemFactory.createString("doubleToLongBits")),
false),
new CfStore(ValueType.LONG, 2),
@@ -1567,9 +1539,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Double;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Double;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Z"), options.itemFactory.createType("D")),
+ options.itemFactory.booleanType, options.itemFactory.doubleType),
options.itemFactory.createString("isInfinite")),
false),
new CfIf(If.Type.NE, ValueType.INT, label1),
@@ -1577,9 +1549,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Double;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Double;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Z"), options.itemFactory.createType("D")),
+ options.itemFactory.booleanType, options.itemFactory.doubleType),
options.itemFactory.createString("isNaN")),
false),
new CfIf(If.Type.NE, ValueType.INT, label1),
@@ -1609,9 +1581,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Float;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Float;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Z"), options.itemFactory.createType("F")),
+ options.itemFactory.booleanType, options.itemFactory.floatType),
options.itemFactory.createString("isInfinite")),
false),
new CfIf(If.Type.NE, ValueType.INT, label1),
@@ -1619,9 +1591,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Float;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Float;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Z"), options.itemFactory.createType("F")),
+ options.itemFactory.booleanType, options.itemFactory.floatType),
options.itemFactory.createString("isNaN")),
false),
new CfIf(If.Type.NE, ValueType.INT, label1),
@@ -1694,11 +1666,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Integer;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Integer;"),
options.itemFactory.createProto(
- options.itemFactory.createType("I"),
- options.itemFactory.createType("I"),
- options.itemFactory.createType("I")),
+ options.itemFactory.intType,
+ options.itemFactory.intType,
+ options.itemFactory.intType),
options.itemFactory.createString("compare")),
false),
new CfReturn(ValueType.INT),
@@ -1754,11 +1726,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Integer;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Integer;"),
options.itemFactory.createProto(
- options.itemFactory.createType("I"),
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createType("I")),
+ options.itemFactory.intType,
+ options.itemFactory.stringType,
+ options.itemFactory.intType),
options.itemFactory.createString("parseUnsignedInt")),
false),
new CfReturn(ValueType.INT),
@@ -1786,8 +1758,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createProto(options.itemFactory.createType("I")),
+ options.itemFactory.stringType,
+ options.itemFactory.createProto(options.itemFactory.intType),
options.itemFactory.createString("length")),
false),
new CfConstNumber(1, ValueType.INT),
@@ -1797,9 +1769,9 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/String;"),
+ options.itemFactory.stringType,
options.itemFactory.createProto(
- options.itemFactory.createType("C"), options.itemFactory.createType("I")),
+ options.itemFactory.charType, options.itemFactory.intType),
options.itemFactory.createString("charAt")),
false),
new CfConstNumber(43, ValueType.INT),
@@ -1810,10 +1782,9 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/String;"),
+ options.itemFactory.stringType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createType("I")),
+ options.itemFactory.stringType, options.itemFactory.intType),
options.itemFactory.createString("substring")),
false),
new CfStore(ValueType.OBJECT, 0),
@@ -1823,11 +1794,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Long;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Long;"),
options.itemFactory.createProto(
- options.itemFactory.createType("J"),
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createType("I")),
+ options.itemFactory.longType,
+ options.itemFactory.stringType,
+ options.itemFactory.intType),
options.itemFactory.createString("parseLong")),
false),
new CfStore(ValueType.LONG, 2),
@@ -1839,55 +1810,52 @@
new CfCmp(Cmp.Bias.NONE, NumericType.LONG),
new CfIf(If.Type.EQ, ValueType.INT, label5),
label4,
- new CfNew(options.itemFactory.createType("Ljava/lang/NumberFormatException;")),
+ new CfNew(
+ options.itemFactory.createSynthesizedType("Ljava/lang/NumberFormatException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
- new CfNew(options.itemFactory.createType("Ljava/lang/StringBuilder;")),
+ new CfNew(options.itemFactory.stringBuilderType),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfConstString(options.itemFactory.createString("Input ")),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.stringType),
options.itemFactory.createString("append")),
false),
new CfLoad(ValueType.OBJECT, 0),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.stringType),
options.itemFactory.createString("append")),
false),
new CfConstString(options.itemFactory.createString(" in base ")),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.stringType),
options.itemFactory.createString("append")),
false),
new CfLoad(ValueType.INT, 1),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("I")),
+ options.itemFactory.stringBuilderType, options.itemFactory.intType),
options.itemFactory.createString("append")),
false),
new CfConstString(
@@ -1895,27 +1863,24 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.stringType),
options.itemFactory.createString("append")),
false),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.stringType),
options.itemFactory.createString("toString")),
false),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/NumberFormatException;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/NumberFormatException;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.voidType, options.itemFactory.stringType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -1994,11 +1959,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Integer;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Integer;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createType("I"),
- options.itemFactory.createType("I")),
+ options.itemFactory.stringType,
+ options.itemFactory.intType,
+ options.itemFactory.intType),
options.itemFactory.createString("toUnsignedString")),
false),
new CfReturn(ValueType.OBJECT),
@@ -2029,11 +1994,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Long;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Long;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createType("J"),
- options.itemFactory.createType("I")),
+ options.itemFactory.stringType,
+ options.itemFactory.longType,
+ options.itemFactory.intType),
options.itemFactory.createString("toString")),
false),
new CfReturn(ValueType.OBJECT),
@@ -2068,11 +2033,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Long;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Long;"),
options.itemFactory.createProto(
- options.itemFactory.createType("I"),
- options.itemFactory.createType("J"),
- options.itemFactory.createType("J")),
+ options.itemFactory.intType,
+ options.itemFactory.longType,
+ options.itemFactory.longType),
options.itemFactory.createString("compare")),
false),
new CfReturn(ValueType.INT),
@@ -2219,11 +2184,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Long;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Long;"),
options.itemFactory.createProto(
- options.itemFactory.createType("J"),
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createType("I")),
+ options.itemFactory.longType,
+ options.itemFactory.stringType,
+ options.itemFactory.intType),
options.itemFactory.createString("parseUnsignedLong")),
false),
new CfReturn(ValueType.LONG),
@@ -2266,8 +2231,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createProto(options.itemFactory.createType("I")),
+ options.itemFactory.stringType,
+ options.itemFactory.createProto(options.itemFactory.intType),
options.itemFactory.createString("length")),
false),
new CfStore(ValueType.INT, 2),
@@ -2275,16 +2240,16 @@
new CfLoad(ValueType.INT, 2),
new CfIf(If.Type.NE, ValueType.INT, label3),
label2,
- new CfNew(options.itemFactory.createType("Ljava/lang/NumberFormatException;")),
+ new CfNew(
+ options.itemFactory.createSynthesizedType("Ljava/lang/NumberFormatException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfConstString(options.itemFactory.createString("empty string")),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/NumberFormatException;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/NumberFormatException;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.voidType, options.itemFactory.stringType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -2296,35 +2261,33 @@
new CfConstNumber(36, ValueType.INT),
new CfIfCmp(If.Type.LE, ValueType.INT, label5),
label4,
- new CfNew(options.itemFactory.createType("Ljava/lang/NumberFormatException;")),
+ new CfNew(
+ options.itemFactory.createSynthesizedType("Ljava/lang/NumberFormatException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfConstString(options.itemFactory.createString("illegal radix: ")),
new CfLoad(ValueType.INT, 1),
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/String;"),
+ options.itemFactory.stringType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createType("I")),
+ options.itemFactory.stringType, options.itemFactory.intType),
options.itemFactory.createString("valueOf")),
false),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/String;"),
+ options.itemFactory.stringType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringType, options.itemFactory.stringType),
options.itemFactory.createString("concat")),
false),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/NumberFormatException;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/NumberFormatException;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.voidType, options.itemFactory.stringType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -2335,11 +2298,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Long;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Long;"),
options.itemFactory.createProto(
- options.itemFactory.createType("J"),
- options.itemFactory.createType("J"),
- options.itemFactory.createType("J")),
+ options.itemFactory.longType,
+ options.itemFactory.longType,
+ options.itemFactory.longType),
options.itemFactory.createString("divideUnsigned")),
false),
new CfStore(ValueType.LONG, 3),
@@ -2349,9 +2312,9 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/String;"),
+ options.itemFactory.stringType,
options.itemFactory.createProto(
- options.itemFactory.createType("C"), options.itemFactory.createType("I")),
+ options.itemFactory.charType, options.itemFactory.intType),
options.itemFactory.createString("charAt")),
false),
new CfConstNumber(43, ValueType.INT),
@@ -2381,20 +2344,20 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/String;"),
+ options.itemFactory.stringType,
options.itemFactory.createProto(
- options.itemFactory.createType("C"), options.itemFactory.createType("I")),
+ options.itemFactory.charType, options.itemFactory.intType),
options.itemFactory.createString("charAt")),
false),
new CfLoad(ValueType.INT, 1),
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Character;"),
+ options.itemFactory.boxedCharType,
options.itemFactory.createProto(
- options.itemFactory.createType("I"),
- options.itemFactory.createType("C"),
- options.itemFactory.createType("I")),
+ options.itemFactory.intType,
+ options.itemFactory.charType,
+ options.itemFactory.intType),
options.itemFactory.createString("digit")),
false),
new CfStore(ValueType.INT, 9),
@@ -2403,16 +2366,16 @@
new CfConstNumber(-1, ValueType.INT),
new CfIfCmp(If.Type.NE, ValueType.INT, label15),
label14,
- new CfNew(options.itemFactory.createType("Ljava/lang/NumberFormatException;")),
+ new CfNew(
+ options.itemFactory.createSynthesizedType("Ljava/lang/NumberFormatException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfLoad(ValueType.OBJECT, 0),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/NumberFormatException;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/NumberFormatException;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.voidType, options.itemFactory.stringType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -2437,36 +2400,35 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Long;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Long;"),
options.itemFactory.createProto(
- options.itemFactory.createType("J"),
- options.itemFactory.createType("J"),
- options.itemFactory.createType("J")),
+ options.itemFactory.longType,
+ options.itemFactory.longType,
+ options.itemFactory.longType),
options.itemFactory.createString("remainderUnsigned")),
false),
new CfNumberConversion(NumericType.LONG, NumericType.INT),
new CfIfCmp(If.Type.LE, ValueType.INT, label18),
label17,
- new CfNew(options.itemFactory.createType("Ljava/lang/NumberFormatException;")),
+ new CfNew(
+ options.itemFactory.createSynthesizedType("Ljava/lang/NumberFormatException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfConstString(options.itemFactory.createString("Too large for unsigned long: ")),
new CfLoad(ValueType.OBJECT, 0),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/String;"),
+ options.itemFactory.stringType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringType, options.itemFactory.stringType),
options.itemFactory.createString("concat")),
false),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/NumberFormatException;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/NumberFormatException;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.voidType, options.itemFactory.stringType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -2608,11 +2570,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Long;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Long;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createType("J"),
- options.itemFactory.createType("I")),
+ options.itemFactory.stringType,
+ options.itemFactory.longType,
+ options.itemFactory.intType),
options.itemFactory.createString("toUnsignedString")),
false),
new CfReturn(ValueType.OBJECT),
@@ -2674,11 +2636,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Long;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Long;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createType("J"),
- options.itemFactory.createType("I")),
+ options.itemFactory.stringType,
+ options.itemFactory.longType,
+ options.itemFactory.intType),
options.itemFactory.createString("toString")),
false),
new CfReturn(ValueType.OBJECT),
@@ -2694,7 +2656,7 @@
new CfStore(ValueType.INT, 2),
label6,
new CfConstNumber(64, ValueType.INT),
- new CfNewArray(options.itemFactory.createType("[C")),
+ new CfNewArray(options.itemFactory.charArrayType),
new CfStore(ValueType.OBJECT, 3),
label7,
new CfLoad(ValueType.OBJECT, 3),
@@ -2712,9 +2674,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Integer;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Integer;"),
options.itemFactory.createProto(
- options.itemFactory.createType("I"), options.itemFactory.createType("I")),
+ options.itemFactory.intType, options.itemFactory.intType),
options.itemFactory.createString("numberOfTrailingZeros")),
false),
new CfStore(ValueType.INT, 5),
@@ -2735,11 +2697,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Character;"),
+ options.itemFactory.boxedCharType,
options.itemFactory.createProto(
- options.itemFactory.createType("C"),
- options.itemFactory.createType("I"),
- options.itemFactory.createType("I")),
+ options.itemFactory.charType,
+ options.itemFactory.intType,
+ options.itemFactory.intType),
options.itemFactory.createString("forDigit")),
false),
new CfArrayStore(MemberType.CHAR),
@@ -2779,11 +2741,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Long;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Long;"),
options.itemFactory.createProto(
- options.itemFactory.createType("J"),
- options.itemFactory.createType("J"),
- options.itemFactory.createType("J")),
+ options.itemFactory.longType,
+ options.itemFactory.longType,
+ options.itemFactory.longType),
options.itemFactory.createString("divideUnsigned")),
false),
new CfStore(ValueType.LONG, 5),
@@ -2805,11 +2767,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Character;"),
+ options.itemFactory.boxedCharType,
options.itemFactory.createProto(
- options.itemFactory.createType("C"),
- options.itemFactory.createType("I"),
- options.itemFactory.createType("I")),
+ options.itemFactory.charType,
+ options.itemFactory.intType,
+ options.itemFactory.intType),
options.itemFactory.createString("forDigit")),
false),
new CfArrayStore(MemberType.CHAR),
@@ -2834,11 +2796,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Character;"),
+ options.itemFactory.boxedCharType,
options.itemFactory.createProto(
- options.itemFactory.createType("C"),
- options.itemFactory.createType("I"),
- options.itemFactory.createType("I")),
+ options.itemFactory.charType,
+ options.itemFactory.intType,
+ options.itemFactory.intType),
options.itemFactory.createString("forDigit")),
false),
new CfArrayStore(MemberType.CHAR),
@@ -2850,7 +2812,7 @@
new CfStore(ValueType.LONG, 0),
new CfGoto(label22),
label25,
- new CfNew(options.itemFactory.createType("Ljava/lang/String;")),
+ new CfNew(options.itemFactory.stringType),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfLoad(ValueType.OBJECT, 3),
new CfLoad(ValueType.INT, 4),
@@ -2861,12 +2823,12 @@
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/String;"),
+ options.itemFactory.stringType,
options.itemFactory.createProto(
- options.itemFactory.createType("V"),
- options.itemFactory.createType("[C"),
- options.itemFactory.createType("I"),
- options.itemFactory.createType("I")),
+ options.itemFactory.voidType,
+ options.itemFactory.charArrayType,
+ options.itemFactory.intType,
+ options.itemFactory.intType),
options.itemFactory.createString("<init>")),
false),
new CfReturn(ValueType.OBJECT),
@@ -2908,13 +2870,13 @@
new CfLoad(ValueType.INT, 4),
new CfReturn(ValueType.INT),
label4,
- new CfNew(options.itemFactory.createType("Ljava/lang/ArithmeticException;")),
+ new CfNew(options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/ArithmeticException;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;"),
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -2972,13 +2934,13 @@
new CfLoad(ValueType.LONG, 4),
new CfReturn(ValueType.LONG),
label7,
- new CfNew(options.itemFactory.createType("Ljava/lang/ArithmeticException;")),
+ new CfNew(options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/ArithmeticException;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;"),
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -3002,13 +2964,13 @@
new CfConstNumber(-2147483648, ValueType.INT),
new CfIfCmp(If.Type.NE, ValueType.INT, label2),
label1,
- new CfNew(options.itemFactory.createType("Ljava/lang/ArithmeticException;")),
+ new CfNew(options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/ArithmeticException;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;"),
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -3038,13 +3000,13 @@
new CfCmp(Cmp.Bias.NONE, NumericType.LONG),
new CfIf(If.Type.NE, ValueType.INT, label2),
label1,
- new CfNew(options.itemFactory.createType("Ljava/lang/ArithmeticException;")),
+ new CfNew(options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/ArithmeticException;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;"),
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -3193,11 +3155,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Math;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Math;"),
options.itemFactory.createProto(
- options.itemFactory.createType("J"),
- options.itemFactory.createType("J"),
- options.itemFactory.createType("J")),
+ options.itemFactory.longType,
+ options.itemFactory.longType,
+ options.itemFactory.longType),
options.itemFactory.createString("floorDiv")),
false),
new CfReturn(ValueType.LONG),
@@ -3325,11 +3287,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Math;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Math;"),
options.itemFactory.createProto(
- options.itemFactory.createType("J"),
- options.itemFactory.createType("J"),
- options.itemFactory.createType("J")),
+ options.itemFactory.longType,
+ options.itemFactory.longType,
+ options.itemFactory.longType),
options.itemFactory.createString("floorMod")),
false),
new CfNumberConversion(NumericType.LONG, NumericType.INT),
@@ -3354,13 +3316,13 @@
new CfConstNumber(2147483647, ValueType.INT),
new CfIfCmp(If.Type.NE, ValueType.INT, label2),
label1,
- new CfNew(options.itemFactory.createType("Ljava/lang/ArithmeticException;")),
+ new CfNew(options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/ArithmeticException;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;"),
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -3390,13 +3352,13 @@
new CfCmp(Cmp.Bias.NONE, NumericType.LONG),
new CfIf(If.Type.NE, ValueType.INT, label2),
label1,
- new CfNew(options.itemFactory.createType("Ljava/lang/ArithmeticException;")),
+ new CfNew(options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/ArithmeticException;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;"),
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -3443,13 +3405,13 @@
new CfLoad(ValueType.INT, 4),
new CfReturn(ValueType.INT),
label4,
- new CfNew(options.itemFactory.createType("Ljava/lang/ArithmeticException;")),
+ new CfNew(options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/ArithmeticException;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;"),
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -3487,9 +3449,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Long;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Long;"),
options.itemFactory.createProto(
- options.itemFactory.createType("I"), options.itemFactory.createType("J")),
+ options.itemFactory.intType, options.itemFactory.longType),
options.itemFactory.createString("numberOfLeadingZeros")),
false),
new CfLoad(ValueType.LONG, 0),
@@ -3499,9 +3461,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Long;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Long;"),
options.itemFactory.createProto(
- options.itemFactory.createType("I"), options.itemFactory.createType("J")),
+ options.itemFactory.intType, options.itemFactory.longType),
options.itemFactory.createString("numberOfLeadingZeros")),
false),
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Add, NumericType.INT),
@@ -3510,9 +3472,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Long;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Long;"),
options.itemFactory.createProto(
- options.itemFactory.createType("I"), options.itemFactory.createType("J")),
+ options.itemFactory.intType, options.itemFactory.longType),
options.itemFactory.createString("numberOfLeadingZeros")),
false),
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Add, NumericType.INT),
@@ -3523,9 +3485,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Long;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Long;"),
options.itemFactory.createProto(
- options.itemFactory.createType("I"), options.itemFactory.createType("J")),
+ options.itemFactory.intType, options.itemFactory.longType),
options.itemFactory.createString("numberOfLeadingZeros")),
false),
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Add, NumericType.INT),
@@ -3583,13 +3545,13 @@
new CfLoad(ValueType.LONG, 5),
new CfReturn(ValueType.LONG),
label15,
- new CfNew(options.itemFactory.createType("Ljava/lang/ArithmeticException;")),
+ new CfNew(options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/ArithmeticException;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;"),
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -3613,11 +3575,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Math;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Math;"),
options.itemFactory.createProto(
- options.itemFactory.createType("J"),
- options.itemFactory.createType("J"),
- options.itemFactory.createType("J")),
+ options.itemFactory.longType,
+ options.itemFactory.longType,
+ options.itemFactory.longType),
options.itemFactory.createString("multiplyExact")),
false),
new CfReturn(ValueType.LONG),
@@ -3765,13 +3727,13 @@
new CfConstNumber(-2147483648, ValueType.INT),
new CfIfCmp(If.Type.NE, ValueType.INT, label2),
label1,
- new CfNew(options.itemFactory.createType("Ljava/lang/ArithmeticException;")),
+ new CfNew(options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/ArithmeticException;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;"),
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -3800,13 +3762,13 @@
new CfCmp(Cmp.Bias.NONE, NumericType.LONG),
new CfIf(If.Type.NE, ValueType.INT, label2),
label1,
- new CfNew(options.itemFactory.createType("Ljava/lang/ArithmeticException;")),
+ new CfNew(options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/ArithmeticException;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;"),
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -3833,9 +3795,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Math;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Math;"),
options.itemFactory.createProto(
- options.itemFactory.createType("D"), options.itemFactory.createType("D")),
+ options.itemFactory.doubleType, options.itemFactory.doubleType),
options.itemFactory.createString("nextUp")),
false),
new CfNeg(NumericType.DOUBLE),
@@ -3859,9 +3821,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Math;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Math;"),
options.itemFactory.createProto(
- options.itemFactory.createType("F"), options.itemFactory.createType("F")),
+ options.itemFactory.floatType, options.itemFactory.floatType),
options.itemFactory.createString("nextUp")),
false),
new CfNeg(NumericType.FLOAT),
@@ -3904,13 +3866,13 @@
new CfLoad(ValueType.INT, 4),
new CfReturn(ValueType.INT),
label4,
- new CfNew(options.itemFactory.createType("Ljava/lang/ArithmeticException;")),
+ new CfNew(options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/ArithmeticException;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;"),
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -3968,13 +3930,13 @@
new CfLoad(ValueType.LONG, 4),
new CfReturn(ValueType.LONG),
label7,
- new CfNew(options.itemFactory.createType("Ljava/lang/ArithmeticException;")),
+ new CfNew(options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/ArithmeticException;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;"),
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -4005,13 +3967,13 @@
new CfCmp(Cmp.Bias.NONE, NumericType.LONG),
new CfIf(If.Type.EQ, ValueType.INT, label3),
label2,
- new CfNew(options.itemFactory.createType("Ljava/lang/ArithmeticException;")),
+ new CfNew(options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/ArithmeticException;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.createSynthesizedType("Ljava/lang/ArithmeticException;"),
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -4047,112 +4009,104 @@
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Sub, NumericType.INT),
new CfIfCmp(If.Type.LE, ValueType.INT, label2),
label1,
- new CfNew(options.itemFactory.createType("Ljava/lang/IndexOutOfBoundsException;")),
+ new CfNew(
+ options.itemFactory.createSynthesizedType("Ljava/lang/IndexOutOfBoundsException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
- new CfNew(options.itemFactory.createType("Ljava/lang/StringBuilder;")),
+ new CfNew(options.itemFactory.stringBuilderType),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfConstString(options.itemFactory.createString("Range [")),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.stringType),
options.itemFactory.createString("append")),
false),
new CfLoad(ValueType.INT, 0),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("I")),
+ options.itemFactory.stringBuilderType, options.itemFactory.intType),
options.itemFactory.createString("append")),
false),
new CfConstString(options.itemFactory.createString(", ")),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.stringType),
options.itemFactory.createString("append")),
false),
new CfLoad(ValueType.INT, 0),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("I")),
+ options.itemFactory.stringBuilderType, options.itemFactory.intType),
options.itemFactory.createString("append")),
false),
new CfConstString(options.itemFactory.createString(" + ")),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.stringType),
options.itemFactory.createString("append")),
false),
new CfLoad(ValueType.INT, 1),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("I")),
+ options.itemFactory.stringBuilderType, options.itemFactory.intType),
options.itemFactory.createString("append")),
false),
new CfConstString(options.itemFactory.createString(") out of bounds for length ")),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.stringType),
options.itemFactory.createString("append")),
false),
new CfLoad(ValueType.INT, 2),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("I")),
+ options.itemFactory.stringBuilderType, options.itemFactory.intType),
options.itemFactory.createString("append")),
false),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.stringType),
options.itemFactory.createString("toString")),
false),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/IndexOutOfBoundsException;"),
+ options.itemFactory.createSynthesizedType(
+ "Ljava/lang/IndexOutOfBoundsException;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.voidType, options.itemFactory.stringType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -4184,92 +4138,86 @@
new CfLoad(ValueType.INT, 2),
new CfIfCmp(If.Type.LE, ValueType.INT, label2),
label1,
- new CfNew(options.itemFactory.createType("Ljava/lang/IndexOutOfBoundsException;")),
+ new CfNew(
+ options.itemFactory.createSynthesizedType("Ljava/lang/IndexOutOfBoundsException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
- new CfNew(options.itemFactory.createType("Ljava/lang/StringBuilder;")),
+ new CfNew(options.itemFactory.stringBuilderType),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfConstString(options.itemFactory.createString("Range [")),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.stringType),
options.itemFactory.createString("append")),
false),
new CfLoad(ValueType.INT, 0),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("I")),
+ options.itemFactory.stringBuilderType, options.itemFactory.intType),
options.itemFactory.createString("append")),
false),
new CfConstString(options.itemFactory.createString(", ")),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.stringType),
options.itemFactory.createString("append")),
false),
new CfLoad(ValueType.INT, 1),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("I")),
+ options.itemFactory.stringBuilderType, options.itemFactory.intType),
options.itemFactory.createString("append")),
false),
new CfConstString(options.itemFactory.createString(") out of bounds for length ")),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.stringType),
options.itemFactory.createString("append")),
false),
new CfLoad(ValueType.INT, 2),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("I")),
+ options.itemFactory.stringBuilderType, options.itemFactory.intType),
options.itemFactory.createString("append")),
false),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.stringType),
options.itemFactory.createString("toString")),
false),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/IndexOutOfBoundsException;"),
+ options.itemFactory.createSynthesizedType(
+ "Ljava/lang/IndexOutOfBoundsException;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.voidType, options.itemFactory.stringType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -4298,72 +4246,68 @@
new CfLoad(ValueType.INT, 1),
new CfIfCmp(If.Type.LT, ValueType.INT, label2),
label1,
- new CfNew(options.itemFactory.createType("Ljava/lang/IndexOutOfBoundsException;")),
+ new CfNew(
+ options.itemFactory.createSynthesizedType("Ljava/lang/IndexOutOfBoundsException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
- new CfNew(options.itemFactory.createType("Ljava/lang/StringBuilder;")),
+ new CfNew(options.itemFactory.stringBuilderType),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfConstString(options.itemFactory.createString("Index ")),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.stringType),
options.itemFactory.createString("append")),
false),
new CfLoad(ValueType.INT, 0),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("I")),
+ options.itemFactory.stringBuilderType, options.itemFactory.intType),
options.itemFactory.createString("append")),
false),
new CfConstString(options.itemFactory.createString(" out of bounds for length ")),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.stringType),
options.itemFactory.createString("append")),
false),
new CfLoad(ValueType.INT, 1),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("I")),
+ options.itemFactory.stringBuilderType, options.itemFactory.intType),
options.itemFactory.createString("append")),
false),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.stringType),
options.itemFactory.createString("toString")),
false),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/IndexOutOfBoundsException;"),
+ options.itemFactory.createSynthesizedType(
+ "Ljava/lang/IndexOutOfBoundsException;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.voidType, options.itemFactory.stringType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -4398,11 +4342,11 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Comparator;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Comparator;"),
options.itemFactory.createProto(
- options.itemFactory.createType("I"),
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.intType,
+ options.itemFactory.objectType,
+ options.itemFactory.objectType),
options.itemFactory.createString("compare")),
true),
label2,
@@ -4471,24 +4415,24 @@
new CfReturn(ValueType.INT),
label2,
new CfLoad(ValueType.OBJECT, 0),
- new CfInstanceOf(options.itemFactory.createType("[Z")),
+ new CfInstanceOf(options.itemFactory.booleanArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label6),
label3,
new CfLoad(ValueType.OBJECT, 1),
- new CfInstanceOf(options.itemFactory.createType("[Z")),
+ new CfInstanceOf(options.itemFactory.booleanArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label4),
new CfLoad(ValueType.OBJECT, 0),
- new CfCheckCast(options.itemFactory.createType("[Z")),
+ new CfCheckCast(options.itemFactory.booleanArrayType),
new CfLoad(ValueType.OBJECT, 1),
- new CfCheckCast(options.itemFactory.createType("[Z")),
+ new CfCheckCast(options.itemFactory.booleanArrayType),
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Arrays;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Arrays;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Z"),
- options.itemFactory.createType("[Z"),
- options.itemFactory.createType("[Z")),
+ options.itemFactory.booleanType,
+ options.itemFactory.booleanArrayType,
+ options.itemFactory.booleanArrayType),
options.itemFactory.createString("equals")),
false),
new CfIf(If.Type.EQ, ValueType.INT, label4),
@@ -4500,24 +4444,24 @@
new CfReturn(ValueType.INT),
label6,
new CfLoad(ValueType.OBJECT, 0),
- new CfInstanceOf(options.itemFactory.createType("[B")),
+ new CfInstanceOf(options.itemFactory.byteArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label10),
label7,
new CfLoad(ValueType.OBJECT, 1),
- new CfInstanceOf(options.itemFactory.createType("[B")),
+ new CfInstanceOf(options.itemFactory.byteArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label8),
new CfLoad(ValueType.OBJECT, 0),
- new CfCheckCast(options.itemFactory.createType("[B")),
+ new CfCheckCast(options.itemFactory.byteArrayType),
new CfLoad(ValueType.OBJECT, 1),
- new CfCheckCast(options.itemFactory.createType("[B")),
+ new CfCheckCast(options.itemFactory.byteArrayType),
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Arrays;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Arrays;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Z"),
- options.itemFactory.createType("[B"),
- options.itemFactory.createType("[B")),
+ options.itemFactory.booleanType,
+ options.itemFactory.byteArrayType,
+ options.itemFactory.byteArrayType),
options.itemFactory.createString("equals")),
false),
new CfIf(If.Type.EQ, ValueType.INT, label8),
@@ -4529,24 +4473,24 @@
new CfReturn(ValueType.INT),
label10,
new CfLoad(ValueType.OBJECT, 0),
- new CfInstanceOf(options.itemFactory.createType("[C")),
+ new CfInstanceOf(options.itemFactory.charArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label14),
label11,
new CfLoad(ValueType.OBJECT, 1),
- new CfInstanceOf(options.itemFactory.createType("[C")),
+ new CfInstanceOf(options.itemFactory.charArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label12),
new CfLoad(ValueType.OBJECT, 0),
- new CfCheckCast(options.itemFactory.createType("[C")),
+ new CfCheckCast(options.itemFactory.charArrayType),
new CfLoad(ValueType.OBJECT, 1),
- new CfCheckCast(options.itemFactory.createType("[C")),
+ new CfCheckCast(options.itemFactory.charArrayType),
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Arrays;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Arrays;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Z"),
- options.itemFactory.createType("[C"),
- options.itemFactory.createType("[C")),
+ options.itemFactory.booleanType,
+ options.itemFactory.charArrayType,
+ options.itemFactory.charArrayType),
options.itemFactory.createString("equals")),
false),
new CfIf(If.Type.EQ, ValueType.INT, label12),
@@ -4558,24 +4502,24 @@
new CfReturn(ValueType.INT),
label14,
new CfLoad(ValueType.OBJECT, 0),
- new CfInstanceOf(options.itemFactory.createType("[D")),
+ new CfInstanceOf(options.itemFactory.doubleArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label18),
label15,
new CfLoad(ValueType.OBJECT, 1),
- new CfInstanceOf(options.itemFactory.createType("[D")),
+ new CfInstanceOf(options.itemFactory.doubleArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label16),
new CfLoad(ValueType.OBJECT, 0),
- new CfCheckCast(options.itemFactory.createType("[D")),
+ new CfCheckCast(options.itemFactory.doubleArrayType),
new CfLoad(ValueType.OBJECT, 1),
- new CfCheckCast(options.itemFactory.createType("[D")),
+ new CfCheckCast(options.itemFactory.doubleArrayType),
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Arrays;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Arrays;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Z"),
- options.itemFactory.createType("[D"),
- options.itemFactory.createType("[D")),
+ options.itemFactory.booleanType,
+ options.itemFactory.doubleArrayType,
+ options.itemFactory.doubleArrayType),
options.itemFactory.createString("equals")),
false),
new CfIf(If.Type.EQ, ValueType.INT, label16),
@@ -4587,24 +4531,24 @@
new CfReturn(ValueType.INT),
label18,
new CfLoad(ValueType.OBJECT, 0),
- new CfInstanceOf(options.itemFactory.createType("[F")),
+ new CfInstanceOf(options.itemFactory.floatArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label22),
label19,
new CfLoad(ValueType.OBJECT, 1),
- new CfInstanceOf(options.itemFactory.createType("[F")),
+ new CfInstanceOf(options.itemFactory.floatArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label20),
new CfLoad(ValueType.OBJECT, 0),
- new CfCheckCast(options.itemFactory.createType("[F")),
+ new CfCheckCast(options.itemFactory.floatArrayType),
new CfLoad(ValueType.OBJECT, 1),
- new CfCheckCast(options.itemFactory.createType("[F")),
+ new CfCheckCast(options.itemFactory.floatArrayType),
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Arrays;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Arrays;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Z"),
- options.itemFactory.createType("[F"),
- options.itemFactory.createType("[F")),
+ options.itemFactory.booleanType,
+ options.itemFactory.floatArrayType,
+ options.itemFactory.floatArrayType),
options.itemFactory.createString("equals")),
false),
new CfIf(If.Type.EQ, ValueType.INT, label20),
@@ -4616,24 +4560,24 @@
new CfReturn(ValueType.INT),
label22,
new CfLoad(ValueType.OBJECT, 0),
- new CfInstanceOf(options.itemFactory.createType("[I")),
+ new CfInstanceOf(options.itemFactory.intArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label26),
label23,
new CfLoad(ValueType.OBJECT, 1),
- new CfInstanceOf(options.itemFactory.createType("[I")),
+ new CfInstanceOf(options.itemFactory.intArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label24),
new CfLoad(ValueType.OBJECT, 0),
- new CfCheckCast(options.itemFactory.createType("[I")),
+ new CfCheckCast(options.itemFactory.intArrayType),
new CfLoad(ValueType.OBJECT, 1),
- new CfCheckCast(options.itemFactory.createType("[I")),
+ new CfCheckCast(options.itemFactory.intArrayType),
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Arrays;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Arrays;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Z"),
- options.itemFactory.createType("[I"),
- options.itemFactory.createType("[I")),
+ options.itemFactory.booleanType,
+ options.itemFactory.intArrayType,
+ options.itemFactory.intArrayType),
options.itemFactory.createString("equals")),
false),
new CfIf(If.Type.EQ, ValueType.INT, label24),
@@ -4645,24 +4589,24 @@
new CfReturn(ValueType.INT),
label26,
new CfLoad(ValueType.OBJECT, 0),
- new CfInstanceOf(options.itemFactory.createType("[J")),
+ new CfInstanceOf(options.itemFactory.longArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label30),
label27,
new CfLoad(ValueType.OBJECT, 1),
- new CfInstanceOf(options.itemFactory.createType("[J")),
+ new CfInstanceOf(options.itemFactory.longArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label28),
new CfLoad(ValueType.OBJECT, 0),
- new CfCheckCast(options.itemFactory.createType("[J")),
+ new CfCheckCast(options.itemFactory.longArrayType),
new CfLoad(ValueType.OBJECT, 1),
- new CfCheckCast(options.itemFactory.createType("[J")),
+ new CfCheckCast(options.itemFactory.longArrayType),
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Arrays;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Arrays;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Z"),
- options.itemFactory.createType("[J"),
- options.itemFactory.createType("[J")),
+ options.itemFactory.booleanType,
+ options.itemFactory.longArrayType,
+ options.itemFactory.longArrayType),
options.itemFactory.createString("equals")),
false),
new CfIf(If.Type.EQ, ValueType.INT, label28),
@@ -4674,24 +4618,24 @@
new CfReturn(ValueType.INT),
label30,
new CfLoad(ValueType.OBJECT, 0),
- new CfInstanceOf(options.itemFactory.createType("[S")),
+ new CfInstanceOf(options.itemFactory.shortArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label34),
label31,
new CfLoad(ValueType.OBJECT, 1),
- new CfInstanceOf(options.itemFactory.createType("[S")),
+ new CfInstanceOf(options.itemFactory.shortArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label32),
new CfLoad(ValueType.OBJECT, 0),
- new CfCheckCast(options.itemFactory.createType("[S")),
+ new CfCheckCast(options.itemFactory.shortArrayType),
new CfLoad(ValueType.OBJECT, 1),
- new CfCheckCast(options.itemFactory.createType("[S")),
+ new CfCheckCast(options.itemFactory.shortArrayType),
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Arrays;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Arrays;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Z"),
- options.itemFactory.createType("[S"),
- options.itemFactory.createType("[S")),
+ options.itemFactory.booleanType,
+ options.itemFactory.shortArrayType,
+ options.itemFactory.shortArrayType),
options.itemFactory.createString("equals")),
false),
new CfIf(If.Type.EQ, ValueType.INT, label32),
@@ -4703,24 +4647,24 @@
new CfReturn(ValueType.INT),
label34,
new CfLoad(ValueType.OBJECT, 0),
- new CfInstanceOf(options.itemFactory.createType("[Ljava/lang/Object;")),
+ new CfInstanceOf(options.itemFactory.createSynthesizedType("[Ljava/lang/Object;")),
new CfIf(If.Type.EQ, ValueType.INT, label38),
label35,
new CfLoad(ValueType.OBJECT, 1),
- new CfInstanceOf(options.itemFactory.createType("[Ljava/lang/Object;")),
+ new CfInstanceOf(options.itemFactory.createSynthesizedType("[Ljava/lang/Object;")),
new CfIf(If.Type.EQ, ValueType.INT, label36),
new CfLoad(ValueType.OBJECT, 0),
- new CfCheckCast(options.itemFactory.createType("[Ljava/lang/Object;")),
+ new CfCheckCast(options.itemFactory.createSynthesizedType("[Ljava/lang/Object;")),
new CfLoad(ValueType.OBJECT, 1),
- new CfCheckCast(options.itemFactory.createType("[Ljava/lang/Object;")),
+ new CfCheckCast(options.itemFactory.createSynthesizedType("[Ljava/lang/Object;")),
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Arrays;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Arrays;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Z"),
- options.itemFactory.createType("[Ljava/lang/Object;"),
- options.itemFactory.createType("[Ljava/lang/Object;")),
+ options.itemFactory.booleanType,
+ options.itemFactory.createSynthesizedType("[Ljava/lang/Object;"),
+ options.itemFactory.createSynthesizedType("[Ljava/lang/Object;")),
options.itemFactory.createString("deepEquals")),
false),
new CfIf(If.Type.EQ, ValueType.INT, label36),
@@ -4736,10 +4680,9 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Object;"),
+ options.itemFactory.objectType,
options.itemFactory.createProto(
- options.itemFactory.createType("Z"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.booleanType, options.itemFactory.objectType),
options.itemFactory.createString("equals")),
false),
new CfReturn(ValueType.INT),
@@ -4770,10 +4713,9 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Object;"),
+ options.itemFactory.objectType,
options.itemFactory.createProto(
- options.itemFactory.createType("Z"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.booleanType, options.itemFactory.objectType),
options.itemFactory.createString("equals")),
false),
new CfIf(If.Type.EQ, ValueType.INT, label2),
@@ -4809,8 +4751,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createProto(options.itemFactory.createType("I")),
+ options.itemFactory.objectType,
+ options.itemFactory.createProto(options.itemFactory.intType),
options.itemFactory.createString("hashCode")),
false),
label2,
@@ -4889,11 +4831,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Objects;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Objects;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.objectType,
+ options.itemFactory.objectType,
+ options.itemFactory.stringType),
options.itemFactory.createString("requireNonNull")),
false),
new CfReturn(ValueType.OBJECT),
@@ -4924,20 +4866,20 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Objects;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Objects;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.objectType,
+ options.itemFactory.objectType,
+ options.itemFactory.stringType),
options.itemFactory.createString("requireNonNull")),
false),
- new CfCheckCast(options.itemFactory.createType("Ljava/util/function/Supplier;")),
+ new CfCheckCast(
+ options.itemFactory.createSynthesizedType("Ljava/util/function/Supplier;")),
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/function/Supplier;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/function/Supplier;"),
+ options.itemFactory.createProto(options.itemFactory.objectType),
options.itemFactory.createString("get")),
true),
new CfStore(ValueType.OBJECT, 2),
@@ -4947,11 +4889,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Objects;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Objects;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.objectType,
+ options.itemFactory.objectType,
+ options.itemFactory.stringType),
options.itemFactory.createString("requireNonNull")),
false),
new CfReturn(ValueType.OBJECT),
@@ -4975,16 +4917,16 @@
new CfLoad(ValueType.OBJECT, 0),
new CfIf(If.Type.NE, ValueType.OBJECT, label2),
label1,
- new CfNew(options.itemFactory.createType("Ljava/lang/NullPointerException;")),
+ new CfNew(
+ options.itemFactory.createSynthesizedType("Ljava/lang/NullPointerException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfLoad(ValueType.OBJECT, 1),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/NullPointerException;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/NullPointerException;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.voidType, options.itemFactory.stringType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -5010,11 +4952,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Objects;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Objects;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringType,
+ options.itemFactory.objectType,
+ options.itemFactory.stringType),
options.itemFactory.createString("toString")),
false),
new CfReturn(ValueType.OBJECT),
@@ -5043,9 +4985,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.objectType,
+ options.itemFactory.createProto(options.itemFactory.stringType),
options.itemFactory.createString("toString")),
false),
label2,
@@ -5071,8 +5012,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Optional;"),
- options.itemFactory.createProto(options.itemFactory.createType("Z")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Optional;"),
+ options.itemFactory.createProto(options.itemFactory.booleanType),
options.itemFactory.createString("isPresent")),
false),
new CfIf(If.Type.EQ, ValueType.INT, label2),
@@ -5082,18 +5023,16 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Optional;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Optional;"),
+ options.itemFactory.createProto(options.itemFactory.objectType),
options.itemFactory.createString("get")),
false),
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/function/Consumer;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/function/Consumer;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.voidType, options.itemFactory.objectType),
options.itemFactory.createString("accept")),
true),
new CfGoto(label3),
@@ -5102,8 +5041,8 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Runnable;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Runnable;"),
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("run")),
true),
label3,
@@ -5130,8 +5069,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/OptionalDouble;"),
- options.itemFactory.createProto(options.itemFactory.createType("Z")),
+ options.itemFactory.createSynthesizedType("Ljava/util/OptionalDouble;"),
+ options.itemFactory.createProto(options.itemFactory.booleanType),
options.itemFactory.createString("isPresent")),
false),
new CfIf(If.Type.EQ, ValueType.INT, label2),
@@ -5141,16 +5080,17 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/OptionalDouble;"),
- options.itemFactory.createProto(options.itemFactory.createType("D")),
+ options.itemFactory.createSynthesizedType("Ljava/util/OptionalDouble;"),
+ options.itemFactory.createProto(options.itemFactory.doubleType),
options.itemFactory.createString("getAsDouble")),
false),
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/function/DoubleConsumer;"),
+ options.itemFactory.createSynthesizedType(
+ "Ljava/util/function/DoubleConsumer;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"), options.itemFactory.createType("D")),
+ options.itemFactory.voidType, options.itemFactory.doubleType),
options.itemFactory.createString("accept")),
true),
new CfGoto(label3),
@@ -5159,8 +5099,8 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Runnable;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Runnable;"),
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("run")),
true),
label3,
@@ -5187,8 +5127,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/OptionalInt;"),
- options.itemFactory.createProto(options.itemFactory.createType("Z")),
+ options.itemFactory.createSynthesizedType("Ljava/util/OptionalInt;"),
+ options.itemFactory.createProto(options.itemFactory.booleanType),
options.itemFactory.createString("isPresent")),
false),
new CfIf(If.Type.EQ, ValueType.INT, label2),
@@ -5198,16 +5138,16 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/OptionalInt;"),
- options.itemFactory.createProto(options.itemFactory.createType("I")),
+ options.itemFactory.createSynthesizedType("Ljava/util/OptionalInt;"),
+ options.itemFactory.createProto(options.itemFactory.intType),
options.itemFactory.createString("getAsInt")),
false),
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/function/IntConsumer;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/function/IntConsumer;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"), options.itemFactory.createType("I")),
+ options.itemFactory.voidType, options.itemFactory.intType),
options.itemFactory.createString("accept")),
true),
new CfGoto(label3),
@@ -5216,8 +5156,8 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Runnable;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Runnable;"),
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("run")),
true),
label3,
@@ -5244,8 +5184,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/OptionalLong;"),
- options.itemFactory.createProto(options.itemFactory.createType("Z")),
+ options.itemFactory.createSynthesizedType("Ljava/util/OptionalLong;"),
+ options.itemFactory.createProto(options.itemFactory.booleanType),
options.itemFactory.createString("isPresent")),
false),
new CfIf(If.Type.EQ, ValueType.INT, label2),
@@ -5255,16 +5195,16 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/OptionalLong;"),
- options.itemFactory.createProto(options.itemFactory.createType("J")),
+ options.itemFactory.createSynthesizedType("Ljava/util/OptionalLong;"),
+ options.itemFactory.createProto(options.itemFactory.longType),
options.itemFactory.createString("getAsLong")),
false),
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/function/LongConsumer;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/function/LongConsumer;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"), options.itemFactory.createType("J")),
+ options.itemFactory.voidType, options.itemFactory.longType),
options.itemFactory.createString("accept")),
true),
new CfGoto(label3),
@@ -5273,8 +5213,8 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Runnable;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Runnable;"),
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("run")),
true),
label3,
@@ -5299,8 +5239,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Optional;"),
- options.itemFactory.createProto(options.itemFactory.createType("Z")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Optional;"),
+ options.itemFactory.createProto(options.itemFactory.booleanType),
options.itemFactory.createString("isPresent")),
false),
new CfIf(If.Type.NE, ValueType.INT, label1),
@@ -5330,8 +5270,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/OptionalDouble;"),
- options.itemFactory.createProto(options.itemFactory.createType("Z")),
+ options.itemFactory.createSynthesizedType("Ljava/util/OptionalDouble;"),
+ options.itemFactory.createProto(options.itemFactory.booleanType),
options.itemFactory.createString("isPresent")),
false),
new CfIf(If.Type.NE, ValueType.INT, label1),
@@ -5361,8 +5301,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/OptionalInt;"),
- options.itemFactory.createProto(options.itemFactory.createType("Z")),
+ options.itemFactory.createSynthesizedType("Ljava/util/OptionalInt;"),
+ options.itemFactory.createProto(options.itemFactory.booleanType),
options.itemFactory.createString("isPresent")),
false),
new CfIf(If.Type.NE, ValueType.INT, label1),
@@ -5392,8 +5332,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/OptionalLong;"),
- options.itemFactory.createProto(options.itemFactory.createType("Z")),
+ options.itemFactory.createSynthesizedType("Ljava/util/OptionalLong;"),
+ options.itemFactory.createProto(options.itemFactory.booleanType),
options.itemFactory.createString("isPresent")),
false),
new CfIf(If.Type.NE, ValueType.INT, label1),
@@ -5425,10 +5365,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Objects;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Objects;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.objectType, options.itemFactory.objectType),
options.itemFactory.createString("requireNonNull")),
false),
new CfStackInstruction(CfStackInstruction.Opcode.Pop),
@@ -5437,8 +5376,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Optional;"),
- options.itemFactory.createProto(options.itemFactory.createType("Z")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Optional;"),
+ options.itemFactory.createProto(options.itemFactory.booleanType),
options.itemFactory.createString("isPresent")),
false),
new CfIf(If.Type.EQ, ValueType.INT, label3),
@@ -5450,25 +5389,23 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/function/Supplier;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/function/Supplier;"),
+ options.itemFactory.createProto(options.itemFactory.objectType),
options.itemFactory.createString("get")),
true),
- new CfCheckCast(options.itemFactory.createType("Ljava/util/Optional;")),
+ new CfCheckCast(options.itemFactory.createSynthesizedType("Ljava/util/Optional;")),
new CfStore(ValueType.OBJECT, 2),
label4,
new CfLoad(ValueType.OBJECT, 2),
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Objects;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/Objects;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.objectType, options.itemFactory.objectType),
options.itemFactory.createString("requireNonNull")),
false),
- new CfCheckCast(options.itemFactory.createType("Ljava/util/Optional;")),
+ new CfCheckCast(options.itemFactory.createSynthesizedType("Ljava/util/Optional;")),
new CfReturn(ValueType.OBJECT),
label5),
ImmutableList.of(),
@@ -5490,8 +5427,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Optional;"),
- options.itemFactory.createProto(options.itemFactory.createType("Z")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Optional;"),
+ options.itemFactory.createProto(options.itemFactory.booleanType),
options.itemFactory.createString("isPresent")),
false),
new CfIf(If.Type.EQ, ValueType.INT, label2),
@@ -5500,18 +5437,17 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Optional;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Optional;"),
+ options.itemFactory.createProto(options.itemFactory.objectType),
options.itemFactory.createString("get")),
false),
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/stream/Stream;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/stream/Stream;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/stream/Stream;"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/stream/Stream;"),
+ options.itemFactory.objectType),
options.itemFactory.createString("of")),
true),
new CfReturn(ValueType.OBJECT),
@@ -5519,9 +5455,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/stream/Stream;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/stream/Stream;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/stream/Stream;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/stream/Stream;")),
options.itemFactory.createString("empty")),
true),
new CfReturn(ValueType.OBJECT),
@@ -5545,8 +5481,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/OptionalDouble;"),
- options.itemFactory.createProto(options.itemFactory.createType("Z")),
+ options.itemFactory.createSynthesizedType("Ljava/util/OptionalDouble;"),
+ options.itemFactory.createProto(options.itemFactory.booleanType),
options.itemFactory.createString("isPresent")),
false),
new CfIf(If.Type.EQ, ValueType.INT, label2),
@@ -5555,17 +5491,18 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/OptionalDouble;"),
- options.itemFactory.createProto(options.itemFactory.createType("D")),
+ options.itemFactory.createSynthesizedType("Ljava/util/OptionalDouble;"),
+ options.itemFactory.createProto(options.itemFactory.doubleType),
options.itemFactory.createString("getAsDouble")),
false),
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/stream/DoubleStream;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/stream/DoubleStream;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/stream/DoubleStream;"),
- options.itemFactory.createType("D")),
+ options.itemFactory.createSynthesizedType(
+ "Ljava/util/stream/DoubleStream;"),
+ options.itemFactory.doubleType),
options.itemFactory.createString("of")),
true),
new CfReturn(ValueType.OBJECT),
@@ -5573,9 +5510,10 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/stream/DoubleStream;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/stream/DoubleStream;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/stream/DoubleStream;")),
+ options.itemFactory.createSynthesizedType(
+ "Ljava/util/stream/DoubleStream;")),
options.itemFactory.createString("empty")),
true),
new CfReturn(ValueType.OBJECT),
@@ -5599,8 +5537,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/OptionalInt;"),
- options.itemFactory.createProto(options.itemFactory.createType("Z")),
+ options.itemFactory.createSynthesizedType("Ljava/util/OptionalInt;"),
+ options.itemFactory.createProto(options.itemFactory.booleanType),
options.itemFactory.createString("isPresent")),
false),
new CfIf(If.Type.EQ, ValueType.INT, label2),
@@ -5609,17 +5547,17 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/OptionalInt;"),
- options.itemFactory.createProto(options.itemFactory.createType("I")),
+ options.itemFactory.createSynthesizedType("Ljava/util/OptionalInt;"),
+ options.itemFactory.createProto(options.itemFactory.intType),
options.itemFactory.createString("getAsInt")),
false),
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/stream/IntStream;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/stream/IntStream;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/stream/IntStream;"),
- options.itemFactory.createType("I")),
+ options.itemFactory.createSynthesizedType("Ljava/util/stream/IntStream;"),
+ options.itemFactory.intType),
options.itemFactory.createString("of")),
true),
new CfReturn(ValueType.OBJECT),
@@ -5627,9 +5565,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/stream/IntStream;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/stream/IntStream;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/stream/IntStream;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/stream/IntStream;")),
options.itemFactory.createString("empty")),
true),
new CfReturn(ValueType.OBJECT),
@@ -5653,8 +5591,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/OptionalLong;"),
- options.itemFactory.createProto(options.itemFactory.createType("Z")),
+ options.itemFactory.createSynthesizedType("Ljava/util/OptionalLong;"),
+ options.itemFactory.createProto(options.itemFactory.booleanType),
options.itemFactory.createString("isPresent")),
false),
new CfIf(If.Type.EQ, ValueType.INT, label2),
@@ -5663,17 +5601,17 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/OptionalLong;"),
- options.itemFactory.createProto(options.itemFactory.createType("J")),
+ options.itemFactory.createSynthesizedType("Ljava/util/OptionalLong;"),
+ options.itemFactory.createProto(options.itemFactory.longType),
options.itemFactory.createString("getAsLong")),
false),
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/stream/LongStream;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/stream/LongStream;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/stream/LongStream;"),
- options.itemFactory.createType("J")),
+ options.itemFactory.createSynthesizedType("Ljava/util/stream/LongStream;"),
+ options.itemFactory.longType),
options.itemFactory.createString("of")),
true),
new CfReturn(ValueType.OBJECT),
@@ -5681,9 +5619,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/stream/LongStream;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/stream/LongStream;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/stream/LongStream;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/stream/LongStream;")),
options.itemFactory.createString("empty")),
true),
new CfReturn(ValueType.OBJECT),
@@ -5785,9 +5723,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/stream/Stream;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/stream/Stream;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/stream/Stream;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/stream/Stream;")),
options.itemFactory.createString("empty")),
true),
new CfGoto(label2),
@@ -5796,10 +5734,10 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/stream/Stream;"),
+ options.itemFactory.createSynthesizedType("Ljava/util/stream/Stream;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/stream/Stream;"),
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/stream/Stream;"),
+ options.itemFactory.objectType),
options.itemFactory.createString("of")),
true),
label2,
@@ -5833,8 +5771,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createProto(options.itemFactory.createType("I")),
+ options.itemFactory.stringType,
+ options.itemFactory.createProto(options.itemFactory.intType),
options.itemFactory.createString("length")),
false),
new CfStore(ValueType.INT, 2),
@@ -5848,9 +5786,9 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/String;"),
+ options.itemFactory.stringType,
options.itemFactory.createProto(
- options.itemFactory.createType("I"), options.itemFactory.createType("I")),
+ options.itemFactory.intType, options.itemFactory.intType),
options.itemFactory.createString("codePointAt")),
false),
new CfStore(ValueType.INT, 3),
@@ -5859,9 +5797,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Character;"),
+ options.itemFactory.boxedCharType,
options.itemFactory.createProto(
- options.itemFactory.createType("Z"), options.itemFactory.createType("I")),
+ options.itemFactory.booleanType, options.itemFactory.intType),
options.itemFactory.createString("isWhitespace")),
false),
new CfIf(If.Type.NE, ValueType.INT, label6),
@@ -5874,9 +5812,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Character;"),
+ options.itemFactory.boxedCharType,
options.itemFactory.createProto(
- options.itemFactory.createType("I"), options.itemFactory.createType("I")),
+ options.itemFactory.intType, options.itemFactory.intType),
options.itemFactory.createString("charCount")),
false),
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Add, NumericType.INT),
@@ -5911,27 +5849,27 @@
label0,
new CfLoad(ValueType.OBJECT, 0),
new CfIf(If.Type.NE, ValueType.OBJECT, label1),
- new CfNew(options.itemFactory.createType("Ljava/lang/NullPointerException;")),
+ new CfNew(
+ options.itemFactory.createSynthesizedType("Ljava/lang/NullPointerException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfConstString(options.itemFactory.createString("delimiter")),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/NullPointerException;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/NullPointerException;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.voidType, options.itemFactory.stringType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
label1,
- new CfNew(options.itemFactory.createType("Ljava/lang/StringBuilder;")),
+ new CfNew(options.itemFactory.stringBuilderType),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfStore(ValueType.OBJECT, 2),
@@ -5947,10 +5885,10 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/CharSequence;")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.charSequenceType),
options.itemFactory.createString("append")),
false),
new CfStackInstruction(CfStackInstruction.Opcode.Pop),
@@ -5968,10 +5906,10 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/CharSequence;")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.charSequenceType),
options.itemFactory.createString("append")),
false),
new CfStackInstruction(CfStackInstruction.Opcode.Pop),
@@ -5983,10 +5921,10 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/CharSequence;")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.charSequenceType),
options.itemFactory.createString("append")),
false),
new CfStackInstruction(CfStackInstruction.Opcode.Pop),
@@ -5998,9 +5936,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.stringType),
options.itemFactory.createString("toString")),
false),
new CfReturn(ValueType.OBJECT),
@@ -6028,27 +5965,27 @@
label0,
new CfLoad(ValueType.OBJECT, 0),
new CfIf(If.Type.NE, ValueType.OBJECT, label1),
- new CfNew(options.itemFactory.createType("Ljava/lang/NullPointerException;")),
+ new CfNew(
+ options.itemFactory.createSynthesizedType("Ljava/lang/NullPointerException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfConstString(options.itemFactory.createString("delimiter")),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/NullPointerException;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/NullPointerException;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.voidType, options.itemFactory.stringType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
label1,
- new CfNew(options.itemFactory.createType("Ljava/lang/StringBuilder;")),
+ new CfNew(options.itemFactory.stringBuilderType),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfStore(ValueType.OBJECT, 2),
@@ -6057,9 +5994,9 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Iterable;"),
+ options.itemFactory.createSynthesizedType("Ljava/lang/Iterable;"),
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/util/Iterator;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Iterator;")),
options.itemFactory.createString("iterator")),
true),
new CfStore(ValueType.OBJECT, 3),
@@ -6068,8 +6005,8 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Iterator;"),
- options.itemFactory.createProto(options.itemFactory.createType("Z")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Iterator;"),
+ options.itemFactory.createProto(options.itemFactory.booleanType),
options.itemFactory.createString("hasNext")),
true),
new CfIf(If.Type.EQ, ValueType.INT, label8),
@@ -6079,19 +6016,18 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Iterator;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Iterator;"),
+ options.itemFactory.createProto(options.itemFactory.objectType),
options.itemFactory.createString("next")),
true),
- new CfCheckCast(options.itemFactory.createType("Ljava/lang/CharSequence;")),
+ new CfCheckCast(options.itemFactory.charSequenceType),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/CharSequence;")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.charSequenceType),
options.itemFactory.createString("append")),
false),
new CfStackInstruction(CfStackInstruction.Opcode.Pop),
@@ -6100,8 +6036,8 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Iterator;"),
- options.itemFactory.createProto(options.itemFactory.createType("Z")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Iterator;"),
+ options.itemFactory.createProto(options.itemFactory.booleanType),
options.itemFactory.createString("hasNext")),
true),
new CfIf(If.Type.EQ, ValueType.INT, label8),
@@ -6111,10 +6047,10 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/CharSequence;")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.charSequenceType),
options.itemFactory.createString("append")),
false),
new CfStackInstruction(CfStackInstruction.Opcode.Pop),
@@ -6124,19 +6060,18 @@
new CfInvoke(
185,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/util/Iterator;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/Object;")),
+ options.itemFactory.createSynthesizedType("Ljava/util/Iterator;"),
+ options.itemFactory.createProto(options.itemFactory.objectType),
options.itemFactory.createString("next")),
true),
- new CfCheckCast(options.itemFactory.createType("Ljava/lang/CharSequence;")),
+ new CfCheckCast(options.itemFactory.charSequenceType),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/CharSequence;")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.charSequenceType),
options.itemFactory.createString("append")),
false),
new CfStackInstruction(CfStackInstruction.Opcode.Pop),
@@ -6146,9 +6081,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.stringType),
options.itemFactory.createString("toString")),
false),
new CfReturn(ValueType.OBJECT),
@@ -6181,52 +6115,50 @@
new CfLoad(ValueType.INT, 1),
new CfIf(If.Type.GE, ValueType.INT, label2),
label1,
- new CfNew(options.itemFactory.createType("Ljava/lang/IllegalArgumentException;")),
+ new CfNew(
+ options.itemFactory.createSynthesizedType("Ljava/lang/IllegalArgumentException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
- new CfNew(options.itemFactory.createType("Ljava/lang/StringBuilder;")),
+ new CfNew(options.itemFactory.stringBuilderType),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(options.itemFactory.createType("V")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.voidType),
options.itemFactory.createString("<init>")),
false),
new CfConstString(options.itemFactory.createString("count is negative: ")),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.stringType),
options.itemFactory.createString("append")),
false),
new CfLoad(ValueType.INT, 1),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("I")),
+ options.itemFactory.stringBuilderType, options.itemFactory.intType),
options.itemFactory.createString("append")),
false),
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.stringType),
options.itemFactory.createString("toString")),
false),
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/IllegalArgumentException;"),
+ options.itemFactory.createSynthesizedType(
+ "Ljava/lang/IllegalArgumentException;"),
options.itemFactory.createProto(
- options.itemFactory.createType("V"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.voidType, options.itemFactory.stringType),
options.itemFactory.createString("<init>")),
false),
new CfThrow(),
@@ -6235,8 +6167,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createProto(options.itemFactory.createType("I")),
+ options.itemFactory.stringType,
+ options.itemFactory.createProto(options.itemFactory.intType),
options.itemFactory.createString("length")),
false),
new CfStore(ValueType.INT, 2),
@@ -6256,7 +6188,7 @@
new CfLoad(ValueType.OBJECT, 0),
new CfReturn(ValueType.OBJECT),
label7,
- new CfNew(options.itemFactory.createType("Ljava/lang/StringBuilder;")),
+ new CfNew(options.itemFactory.stringBuilderType),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfLoad(ValueType.INT, 2),
new CfLoad(ValueType.INT, 1),
@@ -6264,9 +6196,9 @@
new CfInvoke(
183,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("V"), options.itemFactory.createType("I")),
+ options.itemFactory.voidType, options.itemFactory.intType),
options.itemFactory.createString("<init>")),
false),
new CfStore(ValueType.OBJECT, 3),
@@ -6283,10 +6215,9 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
+ options.itemFactory.stringBuilderType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType, options.itemFactory.stringType),
options.itemFactory.createString("append")),
false),
new CfStackInstruction(CfStackInstruction.Opcode.Pop),
@@ -6298,9 +6229,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/StringBuilder;"),
- options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;")),
+ options.itemFactory.stringBuilderType,
+ options.itemFactory.createProto(options.itemFactory.stringType),
options.itemFactory.createString("toString")),
false),
new CfReturn(ValueType.OBJECT),
@@ -6339,8 +6269,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createProto(options.itemFactory.createType("I")),
+ options.itemFactory.stringType,
+ options.itemFactory.createProto(options.itemFactory.intType),
options.itemFactory.createString("length")),
false),
new CfStore(ValueType.INT, 2),
@@ -6354,9 +6284,9 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/String;"),
+ options.itemFactory.stringType,
options.itemFactory.createProto(
- options.itemFactory.createType("I"), options.itemFactory.createType("I")),
+ options.itemFactory.intType, options.itemFactory.intType),
options.itemFactory.createString("codePointAt")),
false),
new CfStore(ValueType.INT, 3),
@@ -6365,9 +6295,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Character;"),
+ options.itemFactory.boxedCharType,
options.itemFactory.createProto(
- options.itemFactory.createType("Z"), options.itemFactory.createType("I")),
+ options.itemFactory.booleanType, options.itemFactory.intType),
options.itemFactory.createString("isWhitespace")),
false),
new CfIf(If.Type.NE, ValueType.INT, label6),
@@ -6379,9 +6309,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Character;"),
+ options.itemFactory.boxedCharType,
options.itemFactory.createProto(
- options.itemFactory.createType("I"), options.itemFactory.createType("I")),
+ options.itemFactory.intType, options.itemFactory.intType),
options.itemFactory.createString("charCount")),
false),
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Add, NumericType.INT),
@@ -6398,11 +6328,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Character;"),
+ options.itemFactory.boxedCharType,
options.itemFactory.createProto(
- options.itemFactory.createType("I"),
- options.itemFactory.createType("Ljava/lang/CharSequence;"),
- options.itemFactory.createType("I")),
+ options.itemFactory.intType,
+ options.itemFactory.charSequenceType,
+ options.itemFactory.intType),
options.itemFactory.createString("codePointBefore")),
false),
new CfStore(ValueType.INT, 3),
@@ -6411,9 +6341,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Character;"),
+ options.itemFactory.boxedCharType,
options.itemFactory.createProto(
- options.itemFactory.createType("Z"), options.itemFactory.createType("I")),
+ options.itemFactory.booleanType, options.itemFactory.intType),
options.itemFactory.createString("isWhitespace")),
false),
new CfIf(If.Type.NE, ValueType.INT, label12),
@@ -6425,9 +6355,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Character;"),
+ options.itemFactory.boxedCharType,
options.itemFactory.createProto(
- options.itemFactory.createType("I"), options.itemFactory.createType("I")),
+ options.itemFactory.intType, options.itemFactory.intType),
options.itemFactory.createString("charCount")),
false),
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Sub, NumericType.INT),
@@ -6441,11 +6371,11 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/String;"),
+ options.itemFactory.stringType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createType("I"),
- options.itemFactory.createType("I")),
+ options.itemFactory.stringType,
+ options.itemFactory.intType,
+ options.itemFactory.intType),
options.itemFactory.createString("substring")),
false),
new CfReturn(ValueType.OBJECT),
@@ -6478,8 +6408,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createProto(options.itemFactory.createType("I")),
+ options.itemFactory.stringType,
+ options.itemFactory.createProto(options.itemFactory.intType),
options.itemFactory.createString("length")),
false),
new CfStore(ValueType.INT, 2),
@@ -6493,9 +6423,9 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/String;"),
+ options.itemFactory.stringType,
options.itemFactory.createProto(
- options.itemFactory.createType("I"), options.itemFactory.createType("I")),
+ options.itemFactory.intType, options.itemFactory.intType),
options.itemFactory.createString("codePointAt")),
false),
new CfStore(ValueType.INT, 3),
@@ -6504,9 +6434,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Character;"),
+ options.itemFactory.boxedCharType,
options.itemFactory.createProto(
- options.itemFactory.createType("Z"), options.itemFactory.createType("I")),
+ options.itemFactory.booleanType, options.itemFactory.intType),
options.itemFactory.createString("isWhitespace")),
false),
new CfIf(If.Type.NE, ValueType.INT, label6),
@@ -6518,9 +6448,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Character;"),
+ options.itemFactory.boxedCharType,
options.itemFactory.createProto(
- options.itemFactory.createType("I"), options.itemFactory.createType("I")),
+ options.itemFactory.intType, options.itemFactory.intType),
options.itemFactory.createString("charCount")),
false),
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Add, NumericType.INT),
@@ -6534,11 +6464,11 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/String;"),
+ options.itemFactory.stringType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createType("I"),
- options.itemFactory.createType("I")),
+ options.itemFactory.stringType,
+ options.itemFactory.intType,
+ options.itemFactory.intType),
options.itemFactory.createString("substring")),
false),
new CfReturn(ValueType.OBJECT),
@@ -6567,8 +6497,8 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createProto(options.itemFactory.createType("I")),
+ options.itemFactory.stringType,
+ options.itemFactory.createProto(options.itemFactory.intType),
options.itemFactory.createString("length")),
false),
new CfStore(ValueType.INT, 1),
@@ -6581,11 +6511,11 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Character;"),
+ options.itemFactory.boxedCharType,
options.itemFactory.createProto(
- options.itemFactory.createType("I"),
- options.itemFactory.createType("Ljava/lang/CharSequence;"),
- options.itemFactory.createType("I")),
+ options.itemFactory.intType,
+ options.itemFactory.charSequenceType,
+ options.itemFactory.intType),
options.itemFactory.createString("codePointBefore")),
false),
new CfStore(ValueType.INT, 2),
@@ -6594,9 +6524,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Character;"),
+ options.itemFactory.boxedCharType,
options.itemFactory.createProto(
- options.itemFactory.createType("Z"), options.itemFactory.createType("I")),
+ options.itemFactory.booleanType, options.itemFactory.intType),
options.itemFactory.createString("isWhitespace")),
false),
new CfIf(If.Type.NE, ValueType.INT, label5),
@@ -6608,9 +6538,9 @@
new CfInvoke(
184,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/Character;"),
+ options.itemFactory.boxedCharType,
options.itemFactory.createProto(
- options.itemFactory.createType("I"), options.itemFactory.createType("I")),
+ options.itemFactory.intType, options.itemFactory.intType),
options.itemFactory.createString("charCount")),
false),
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Sub, NumericType.INT),
@@ -6624,11 +6554,11 @@
new CfInvoke(
182,
options.itemFactory.createMethod(
- options.itemFactory.createType("Ljava/lang/String;"),
+ options.itemFactory.stringType,
options.itemFactory.createProto(
- options.itemFactory.createType("Ljava/lang/String;"),
- options.itemFactory.createType("I"),
- options.itemFactory.createType("I")),
+ options.itemFactory.stringType,
+ options.itemFactory.intType,
+ options.itemFactory.intType),
options.itemFactory.createString("substring")),
false),
new CfReturn(ValueType.OBJECT),
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/backports/CollectionMethodGenerators.java b/src/main/java/com/android/tools/r8/ir/desugar/backports/CollectionMethodGenerators.java
index 9e78a3b..ee175f9 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/backports/CollectionMethodGenerators.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/backports/CollectionMethodGenerators.java
@@ -73,7 +73,7 @@
InternalOptions options, DexMethod method, int formalCount) {
DexType mapEntryArray =
options.itemFactory.createArrayType(1, options.itemFactory.mapEntryType);
- DexType simpleEntry = options.itemFactory.createType("Ljava/util/AbstractMap$SimpleEntry;");
+ DexType simpleEntry = options.itemFactory.abstractMapSimpleEntryType;
DexMethod simpleEntryConstructor = options.itemFactory.createMethod(
simpleEntry,
options.itemFactory.createProto(
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 55db2fd..5b695a7 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
@@ -25,7 +25,6 @@
import com.android.tools.r8.graph.DexString;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.ir.analysis.equivalence.BasicBlockBehavioralSubsumption;
-import com.android.tools.r8.ir.analysis.type.Nullability;
import com.android.tools.r8.ir.analysis.type.TypeAnalysis;
import com.android.tools.r8.ir.analysis.type.TypeLatticeElement;
import com.android.tools.r8.ir.analysis.value.AbstractValue;
@@ -86,7 +85,6 @@
import com.android.tools.r8.utils.SetUtils;
import com.google.common.base.Equivalence;
import com.google.common.base.Equivalence.Wrapper;
-import com.google.common.base.Supplier;
import com.google.common.base.Suppliers;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ImmutableList;
@@ -131,6 +129,7 @@
import java.util.Set;
import java.util.function.Consumer;
import java.util.function.Predicate;
+import java.util.function.Supplier;
public class CodeRewriter {
@@ -3113,7 +3112,7 @@
dexItemFactory.throwableMethods.initCause,
code.createValue(
TypeLatticeElement.fromDexType(
- dexItemFactory.throwableType, Nullability.maybeNull(), appView)),
+ dexItemFactory.throwableType, maybeNull(), appView)),
initCauseArguments);
initCause.setPosition(current.getPosition());
insnIterator.add(initCause);
@@ -3352,8 +3351,8 @@
// Now that the block is split there should not be any catch handlers in the block.
assert !block.hasCatchHandlers();
- DexType javaLangSystemType = dexItemFactory.createType("Ljava/lang/System;");
- DexType javaIoPrintStreamType = dexItemFactory.createType("Ljava/io/PrintStream;");
+ DexType javaLangSystemType = dexItemFactory.javaLangSystemType;
+ DexType javaIoPrintStreamType = dexItemFactory.javaIoPrintStreamType;
Value out =
code.createValue(
TypeLatticeElement.fromDexType(javaIoPrintStreamType, definitelyNotNull(), appView));
@@ -3583,13 +3582,6 @@
// See comment for InternalOptions.canHaveNumberConversionRegisterAllocationBug().
public void workaroundNumberConversionRegisterAllocationBug(IRCode code) {
- final Supplier<DexMethod> javaLangDoubleisNaN = Suppliers.memoize(() ->
- dexItemFactory.createMethod(
- dexItemFactory.createString("Ljava/lang/Double;"),
- dexItemFactory.createString("isNaN"),
- dexItemFactory.booleanDescriptor,
- new DexString[]{dexItemFactory.doubleDescriptor}));
-
ListIterator<BasicBlock> blocks = code.listIterator();
while (blocks.hasNext()) {
BasicBlock block = blocks.next();
@@ -3607,7 +3599,8 @@
&& value.definition.isNumberConversion()
&& value.definition.asNumberConversion().to == NumericType.DOUBLE) {
InvokeStatic invokeIsNaN =
- new InvokeStatic(javaLangDoubleisNaN.get(), null, ImmutableList.of(value));
+ new InvokeStatic(
+ dexItemFactory.doubleMethods.isNaN, null, ImmutableList.of(value));
invokeIsNaN.setPosition(instruction.getPosition());
// Insert the invoke before the current instruction.
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/SwitchMapCollector.java b/src/main/java/com/android/tools/r8/ir/optimize/SwitchMapCollector.java
index cf4f72b..2c8e6b9 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/SwitchMapCollector.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/SwitchMapCollector.java
@@ -73,7 +73,7 @@
DexItemFactory dexItemFactory = appView.dexItemFactory();
switchMapPrefix = dexItemFactory.createString("$SwitchMap$");
kotlinSwitchMapPrefix = dexItemFactory.createString("$EnumSwitchMapping$");
- intArrayType = dexItemFactory.createType("[I");
+ intArrayType = dexItemFactory.intArrayType;
}
public AppInfoWithLiveness run() {
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/library/LogMethodOptimizer.java b/src/main/java/com/android/tools/r8/ir/optimize/library/LogMethodOptimizer.java
index 6cd36b3..35220c7 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/library/LogMethodOptimizer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/library/LogMethodOptimizer.java
@@ -42,7 +42,7 @@
this.appView = appView;
DexItemFactory dexItemFactory = appView.dexItemFactory();
- DexType logType = dexItemFactory.createType("Landroid/util/Log;");
+ DexType logType = dexItemFactory.androidUtilLogType;
this.logType = logType;
this.isLoggableMethod =
dexItemFactory.createMethod(
diff --git a/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java b/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java
index dcc6877..85db7d1 100644
--- a/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java
+++ b/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java
@@ -62,6 +62,8 @@
/** Encapsulates liveness and reachability information for an application. */
public class AppInfoWithLiveness extends AppInfoWithSubtyping {
+ /** Set of types that are mentioned in the program, but for which no definition exists. */
+ private final Set<DexType> missingTypes;
/**
* Set of types that are mentioned in the program. We at least need an empty abstract classitem
* for these.
@@ -190,6 +192,7 @@
// TODO(zerny): Clean up the constructors so we have just one.
AppInfoWithLiveness(
DirectMappedDexApplication application,
+ Set<DexType> missingTypes,
Set<DexType> liveTypes,
Set<DexType> instantiatedAnnotationTypes,
Set<DexType> instantiatedAppServices,
@@ -230,6 +233,7 @@
Set<DexType> instantiatedLambdas,
Set<DexType> constClassReferences) {
super(application);
+ this.missingTypes = missingTypes;
this.liveTypes = liveTypes;
this.instantiatedAnnotationTypes = instantiatedAnnotationTypes;
this.instantiatedAppServices = instantiatedAppServices;
@@ -273,6 +277,7 @@
public AppInfoWithLiveness(
AppInfoWithSubtyping appInfoWithSubtyping,
+ Set<DexType> missingTypes,
Set<DexType> liveTypes,
Set<DexType> instantiatedAnnotationTypes,
Set<DexType> instantiatedAppServices,
@@ -313,6 +318,7 @@
Set<DexType> instantiatedLambdas,
Set<DexType> constClassReferences) {
super(appInfoWithSubtyping);
+ this.missingTypes = missingTypes;
this.liveTypes = liveTypes;
this.instantiatedAnnotationTypes = instantiatedAnnotationTypes;
this.instantiatedAppServices = instantiatedAppServices;
@@ -357,6 +363,7 @@
private AppInfoWithLiveness(AppInfoWithLiveness previous) {
this(
previous,
+ previous.missingTypes,
previous.liveTypes,
previous.instantiatedAnnotationTypes,
previous.instantiatedAppServices,
@@ -406,6 +413,7 @@
Collection<DexReference> additionalPinnedItems) {
this(
application,
+ previous.missingTypes,
previous.liveTypes,
previous.instantiatedAnnotationTypes,
previous.instantiatedAppServices,
@@ -458,6 +466,7 @@
Map<DexField, Int2ReferenceMap<DexField>> switchMaps,
Map<DexType, Map<DexField, EnumValueInfo>> enumValueInfoMaps) {
super(previous);
+ this.missingTypes = previous.missingTypes;
this.liveTypes = previous.liveTypes;
this.instantiatedAnnotationTypes = previous.instantiatedAnnotationTypes;
this.instantiatedAppServices = previous.instantiatedAppServices;
@@ -500,6 +509,26 @@
previous.markObsolete();
}
+ private boolean dontAssertDefinitionFor = true;
+
+ @Override
+ public void enableDefinitionForAssert() {
+ dontAssertDefinitionFor = false;
+ }
+
+ @Override
+ public void disableDefinitionForAssert() {
+ dontAssertDefinitionFor = true;
+ }
+
+ @Override
+ public DexClass definitionFor(DexType type) {
+ DexClass definition = super.definitionFor(type);
+ assert dontAssertDefinitionFor || definition != null || missingTypes.contains(type)
+ : "Failed lookup of non-missing type: " + type;
+ return definition;
+ }
+
public boolean isLiveProgramClass(DexProgramClass clazz) {
return liveTypes.contains(clazz.type);
}
@@ -966,6 +995,7 @@
return new AppInfoWithLiveness(
application,
+ missingTypes,
rewriteItems(liveTypes, lens::lookupType),
rewriteItems(instantiatedAnnotationTypes, lens::lookupType),
rewriteItems(instantiatedAppServices, lens::lookupType),
diff --git a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
index ba1bdb5..04f10d9 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -46,8 +46,10 @@
import com.android.tools.r8.graph.DexString;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.DirectMappedDexApplication;
+import com.android.tools.r8.graph.DirectMappedDexApplication.Builder;
import com.android.tools.r8.graph.FieldAccessInfoCollectionImpl;
import com.android.tools.r8.graph.FieldAccessInfoImpl;
+import com.android.tools.r8.graph.InnerClassAttribute;
import com.android.tools.r8.graph.KeyedDexItem;
import com.android.tools.r8.graph.PresortedComparable;
import com.android.tools.r8.graph.ProgramMethod;
@@ -203,9 +205,16 @@
/** Set of types whose class initializer may execute. */
private final SetWithReportedReason<DexProgramClass> initializedTypes;
- /** Set of live types defined in the library and classpath. Used to avoid duplicate tracing. */
+ /**
+ * Set of live types defined in the library and classpath.
+ *
+ * <p>Used to build a new app of just referenced types and avoid duplicate tracing.
+ */
private final Set<DexClass> liveNonProgramTypes = Sets.newIdentityHashSet();
+ /** Set of missing types. */
+ private final Set<DexType> missingTypes = Sets.newIdentityHashSet();
+
/** Mapping from each unused interface to the set of live types that implements the interface. */
private final Map<DexProgramClass, Set<DexProgramClass>> unusedInterfaceTypes =
new IdentityHashMap<>();
@@ -409,11 +418,14 @@
return clazz.asProgramClass();
}
if (liveNonProgramTypes.add(clazz) && clazz.isLibraryClass()) {
+ // TODO(b/149201735): This likely needs to apply to classpath too.
ensureMethodsContinueToWidenAccess(clazz);
+ // TODO(b/149201158): This should apply to classpath too (likely even hard fail).
warnIfLibraryTypeInheritsFromProgramType(clazz.asLibraryClass());
}
+ } else {
+ reportMissingClass(type);
}
- reportMissingClass(type);
return null;
}
@@ -582,7 +594,7 @@
DexField field, DexEncodedMethod context, boolean isRead, boolean isReflective) {
FieldAccessInfoImpl info = fieldAccessInfoCollection.get(field);
if (info == null) {
- DexEncodedField encodedField = appInfo.resolveField(field);
+ DexEncodedField encodedField = resolveField(field);
// If the field does not exist, then record this in the mapping, such that we don't have to
// resolve the field the next time.
@@ -979,9 +991,8 @@
// Must mark the field as targeted even if it does not exist.
markFieldAsTargeted(field, currentMethod);
- DexEncodedField encodedField = appInfo.resolveField(field);
+ DexEncodedField encodedField = resolveField(field);
if (encodedField == null) {
- reportMissingField(field);
return false;
}
@@ -1016,9 +1027,8 @@
// Must mark the field as targeted even if it does not exist.
markFieldAsTargeted(field, currentMethod);
- DexEncodedField encodedField = appInfo.resolveField(field);
+ DexEncodedField encodedField = resolveField(field);
if (encodedField == null) {
- reportMissingField(field);
return false;
}
@@ -1050,11 +1060,10 @@
return false;
}
- DexEncodedField encodedField = appInfo.resolveField(field);
+ DexEncodedField encodedField = resolveField(field);
if (encodedField == null) {
// Must mark the field as targeted even if it does not exist.
markFieldAsTargeted(field, currentMethod);
- reportMissingField(field);
return false;
}
@@ -1095,11 +1104,10 @@
return false;
}
- DexEncodedField encodedField = appInfo.resolveField(field);
+ DexEncodedField encodedField = resolveField(field);
if (encodedField == null) {
// Must mark the field as targeted even if it does not exist.
markFieldAsTargeted(field, currentMethod);
- reportMissingField(field);
return false;
}
@@ -1227,6 +1235,13 @@
return;
}
+ // Mark types in inner-class attributes referenced.
+ InnerClassAttribute innerClassAttributes = holder.getInnerClassAttributeForThisClass();
+ if (innerClassAttributes != null) {
+ recordTypeReference(innerClassAttributes.getInner());
+ recordTypeReference(innerClassAttributes.getOuter());
+ }
+
if (Log.ENABLED) {
Log.verbose(getClass(), "Type `%s` has become live.", holder.type);
}
@@ -1348,6 +1363,7 @@
private void handleAnnotation(DexDefinition holder, DexAnnotation annotation) {
assert !holder.isDexClass() || holder.asDexClass().isProgramClass();
DexType type = annotation.annotation.type;
+ recordTypeReference(type);
DexClass clazz = appView.definitionFor(type);
boolean annotationTypeIsLibraryClass = clazz == null || clazz.isNotProgramClass();
boolean isLive = annotationTypeIsLibraryClass || liveTypes.contains(clazz.asProgramClass());
@@ -1365,7 +1381,25 @@
annotation.annotation.collectIndexedItems(referenceMarker);
}
+ private DexEncodedField resolveField(DexField field) {
+ // Record the references in case they are not program types.
+ recordTypeReference(field.holder);
+ recordTypeReference(field.type);
+ DexEncodedField encodedField = appInfo.resolveField(field);
+ if (encodedField == null) {
+ reportMissingField(field);
+ return null;
+ }
+ return encodedField;
+ }
+
private ResolutionResult resolveMethod(DexMethod method, KeepReason reason) {
+ // Record the references in case they are not program types.
+ recordTypeReference(method.holder);
+ recordTypeReference(method.proto.returnType);
+ for (DexType param : method.proto.parameters.values) {
+ recordTypeReference(param);
+ }
ResolutionResult resolutionResult = appInfo.resolveMethod(method.holder, method);
if (resolutionResult.isFailedResolution()) {
reportMissingMethod(method);
@@ -1436,6 +1470,10 @@
DexType holder = method.holder;
DexProgramClass clazz = getProgramClassOrNull(holder);
if (clazz == null) {
+ recordTypeReference(method.proto.returnType);
+ for (DexType param : method.proto.parameters.values) {
+ recordTypeReference(param);
+ }
return;
}
// TODO(zerny): Is it ok that we lookup in both the direct and virtual pool here?
@@ -1496,7 +1534,8 @@
}
private void reportMissingClass(DexType clazz) {
- if (Log.ENABLED && reportedMissing.add(clazz)) {
+ boolean newReport = missingTypes.add(clazz);
+ if (Log.ENABLED && newReport) {
Log.verbose(Enqueuer.class, "Class `%s` is missing.", clazz);
}
}
@@ -2008,6 +2047,19 @@
}
}
+ private void recordTypeReference(DexType type) {
+ if (type == null) {
+ return;
+ }
+ if (type.isArrayType()) {
+ type = type.toBaseType(appView.dexItemFactory());
+ }
+ if (!type.isClassType()) {
+ return;
+ }
+ getProgramClassOrNull(type);
+ }
+
private void markVirtualMethodAsReachable(
DexMethod method, boolean interfaceInvoke, ProgramMethod contextOrNull, KeepReason reason) {
if (method.holder.isArrayType()) {
@@ -2024,6 +2076,12 @@
// TODO(b/70160030): Revise this to support tree shaking library methods on non-escaping types.
DexProgramClass holder = getProgramClassOrNull(method.holder);
if (holder == null) {
+ // TODO: clean this.
+ // Ensure that the full proto of the targeted method is referenced.
+ recordTypeReference(method.proto.returnType);
+ for (DexType type : method.proto.parameters.values) {
+ recordTypeReference(type);
+ }
return;
}
@@ -2330,9 +2388,39 @@
liveMethods.add(bridge.holder, bridge.method, graphReporter.fakeReportShouldNotBeUsed());
}
- // A direct appInfo is required to add classpath classes in wrapper post processing.
- assert appInfo.app().isDirect() : "Expected a direct appInfo after enqueuing.";
- DirectMappedDexApplication.Builder appBuilder = appInfo.app().asDirect().builder();
+ // Ensure references from various root set collections.
+ rootSet
+ .noSideEffects
+ .keySet()
+ .forEach(
+ r -> {
+ if (r.isDexType()) {
+ recordTypeReference(r.asDexType());
+ } else if (r.isDexField()) {
+ recordTypeReference(r.asDexField().holder);
+ recordTypeReference(r.asDexField().type);
+ } else {
+ assert r.isDexMethod();
+ recordTypeReference(r.asDexMethod().holder);
+ recordTypeReference(r.asDexMethod().proto.returnType);
+ for (DexType param : r.asDexMethod().proto.parameters.values) {
+ recordTypeReference(param);
+ }
+ }
+ });
+
+ // Rebuild a new app only containing referenced types.
+ appView.dexItemFactory().forEachPossiblyCompilerSynthesizedType(this::recordTypeReference);
+ Set<DexLibraryClass> libraryClasses = Sets.newIdentityHashSet();
+ Set<DexClasspathClass> classpathClasses = Sets.newIdentityHashSet();
+ for (DexClass clazz : liveNonProgramTypes) {
+ traverseHierarchy(clazz, libraryClasses, classpathClasses);
+ }
+ Builder appBuilder = appInfo.app().asDirect().builder();
+ appBuilder.replaceLibraryClasses(libraryClasses);
+ appBuilder.replaceClasspathClasses(classpathClasses);
+ // Can't replace the program classes at this point as they are needed in tree pruning.
+ // Post process the app to add synthetic content.
postProcessLambdaDesugaring(appBuilder);
postProcessLibraryConversionWrappers(appBuilder);
DirectMappedDexApplication app = appBuilder.build();
@@ -2340,6 +2428,7 @@
AppInfoWithLiveness appInfoWithLiveness =
new AppInfoWithLiveness(
app,
+ missingTypes,
SetUtils.mapIdentityHashSet(liveTypes.getItems(), DexProgramClass::getType),
SetUtils.mapIdentityHashSet(
liveAnnotations.getItems(), DexAnnotation::getAnnotationType),
@@ -2388,6 +2477,43 @@
return appInfoWithLiveness;
}
+ private void traverseHierarchy(
+ DexClass clazz,
+ Set<DexLibraryClass> libraryClasses,
+ Set<DexClasspathClass> classpathClasses) {
+ if (clazz.isLibraryClass()) {
+ libraryClasses.add(clazz.asLibraryClass());
+ } else if (clazz.isClasspathClass()) {
+ classpathClasses.add(clazz.asClasspathClass());
+ }
+ Deque<DexType> worklist = new ArrayDeque<>();
+ if (clazz.superType != null) {
+ worklist.add(clazz.superType);
+ }
+ Collections.addAll(worklist, clazz.interfaces.values);
+ while (!worklist.isEmpty()) {
+ DexType type = worklist.pop();
+ DexClass definition = appView.definitionFor(type);
+ if (definition.isProgramClass()) {
+ // TODO(b/120884788): This should assert not possible once fixed.
+ continue;
+ }
+ if (definition.isLibraryClass()) {
+ if (!libraryClasses.add(definition.asLibraryClass())) {
+ continue;
+ }
+ } else if (definition.isClasspathClass()) {
+ if (!classpathClasses.add(definition.asClasspathClass())) {
+ continue;
+ }
+ }
+ if (definition.superType != null) {
+ worklist.add(definition.superType);
+ }
+ Collections.addAll(worklist, definition.interfaces.values);
+ }
+ }
+
private void postProcessLibraryConversionWrappers(DirectMappedDexApplication.Builder appBuilder) {
if (desugaredLibraryWrapperAnalysis == null) {
return;
@@ -3428,6 +3554,8 @@
@Override
public boolean addField(DexField field) {
+ recordTypeReference(field.holder);
+ recordTypeReference(field.type);
DexClass holder = appView.definitionFor(field.holder);
if (holder == null) {
return false;
@@ -3462,6 +3590,11 @@
@Override
public boolean addMethod(DexMethod method) {
+ // Record the references in case they are not program types.
+ recordTypeReference(method.proto.returnType);
+ for (DexType param : method.proto.parameters.values) {
+ recordTypeReference(param);
+ }
DexProgramClass holder = getProgramClassOrNull(method.holder);
if (holder == null) {
return false;
diff --git a/src/main/java/com/android/tools/r8/shaking/MainDexListBuilder.java b/src/main/java/com/android/tools/r8/shaking/MainDexListBuilder.java
index 718b9a9..b92f82e 100644
--- a/src/main/java/com/android/tools/r8/shaking/MainDexListBuilder.java
+++ b/src/main/java/com/android/tools/r8/shaking/MainDexListBuilder.java
@@ -4,6 +4,7 @@
package com.android.tools.r8.shaking;
import com.android.tools.r8.errors.CompilationError;
+import com.android.tools.r8.graph.AppInfo;
import com.android.tools.r8.graph.AppInfoWithSubtyping;
import com.android.tools.r8.graph.DexAnnotation;
import com.android.tools.r8.graph.DexClass;
@@ -13,7 +14,7 @@
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.DirectMappedDexApplication;
import com.android.tools.r8.utils.SetUtils;
-import com.google.common.collect.Maps;
+import java.util.IdentityHashMap;
import java.util.Map;
import java.util.Set;
@@ -32,16 +33,7 @@
private final DirectMappedDexApplication dexApplication;
private final MainDexClasses.Builder mainDexClassesBuilder;
- /**
- * @param roots Classes which code may be executed before secondary dex files loading.
- * @param application the dex appplication.
- */
- public MainDexListBuilder(Set<DexProgramClass> roots, DirectMappedDexApplication application) {
- this.dexApplication = application;
- this.appInfo = new AppInfoWithSubtyping(dexApplication);
- // Only consider program classes for the root set.
- this.roots = SetUtils.mapIdentityHashSet(roots, DexProgramClass::getType);
- mainDexClassesBuilder = MainDexClasses.builder(appInfo).addRoots(this.roots);
+ public static void checkForAssumedLibraryTypes(AppInfo appInfo) {
DexClass enumType = appInfo.definitionFor(appInfo.dexItemFactory().enumType);
if (enumType == null) {
throw new CompilationError("Tracing for legacy multi dex is not possible without all"
@@ -52,9 +44,19 @@
throw new CompilationError("Tracing for legacy multi dex is not possible without all"
+ " classpath libraries (java.lang.annotation.Annotation is missing)");
}
- annotationTypeContainEnum =
- Maps.newHashMapWithExpectedSize(
- appInfo.subtypes(appInfo.dexItemFactory().annotationType).size());
+ }
+
+ /**
+ * @param roots Classes which code may be executed before secondary dex files loading.
+ * @param application the dex appplication.
+ */
+ public MainDexListBuilder(Set<DexProgramClass> roots, DirectMappedDexApplication application) {
+ this.dexApplication = application;
+ this.appInfo = new AppInfoWithSubtyping(dexApplication);
+ // Only consider program classes for the root set.
+ this.roots = SetUtils.mapIdentityHashSet(roots, DexProgramClass::getType);
+ mainDexClassesBuilder = MainDexClasses.builder(appInfo).addRoots(this.roots);
+ annotationTypeContainEnum = new IdentityHashMap<>();
}
public MainDexClasses run() {
@@ -126,11 +128,6 @@
return appInfo.isSubtype(valueType, appInfo.dexItemFactory().annotationType);
}
- private boolean isProgramClass(DexType dexType) {
- DexClass clazz = appInfo.definitionFor(dexType);
- return clazz != null && clazz.isProgramClass();
- }
-
private void traceMainDexDirectDependencies() {
new MainDexDirectReferenceTracer(appInfo, this::addDirectDependency)
.run(roots);
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationUtils.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationUtils.java
index c5dcb0c..f75a307 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationUtils.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationUtils.java
@@ -105,7 +105,7 @@
.setClassType(ProguardClassType.CLASS)
.setClassNames(
ProguardClassNameList.singletonList(
- ProguardTypeMatcher.create(factory.createType("Landroid/os/Build$VERSION;"))))
+ ProguardTypeMatcher.create(factory.androidOsBuildVersionType)))
.setMemberRules(
ImmutableList.of(
ProguardMemberRule.builder()
@@ -138,7 +138,7 @@
&& !rule.getInheritanceClassName().matches(factory.objectType)) {
continue;
}
- if (!rule.getClassNames().matches(factory.createType("Landroid/os/Build$VERSION;"))) {
+ if (!rule.getClassNames().matches(factory.androidOsBuildVersionType)) {
continue;
}
for (ProguardMemberRule memberRule : rule.getMemberRules()) {
diff --git a/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingLibraryMemberRenamingTests.java b/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingLibraryMemberRenamingTests.java
index 0e5e1c6..26873f4 100644
--- a/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingLibraryMemberRenamingTests.java
+++ b/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingLibraryMemberRenamingTests.java
@@ -63,7 +63,7 @@
@Parameters(name = "{0}")
public static TestParametersCollection data() {
- return getTestParameters().withAllRuntimes().build();
+ return getTestParameters().withAllRuntimesAndApiLevels().build();
}
public ApplyMappingLibraryMemberRenamingTests(TestParameters parameters) {
@@ -78,7 +78,7 @@
.addProgramClasses(Dto.class, Interface.class, Main.class)
.addKeepClassAndMembersRules(Main.class)
.addKeepClassAndMembersRulesWithAllowObfuscation(Interface.class, Dto.class)
- .setMinApi(parameters.getRuntime())
+ .setMinApi(parameters.getApiLevel())
.compile()
.inspect(
codeInspector -> {
@@ -93,7 +93,7 @@
.addClasspathClasses(Dto.class, Interface.class, Main.class)
.addKeepAllClassesRule()
.addApplyMapping(libraryCompileResult.getProguardMap())
- .setMinApi(parameters.getRuntime())
+ .setMinApi(parameters.getApiLevel())
.compile()
.addRunClasspathFiles(libraryCompileResult.writeToZip())
.run(parameters.getRuntime(), ClientTest.class)
diff --git a/src/test/java/com/android/tools/r8/resolution/ArrayTargetLookupTest.java b/src/test/java/com/android/tools/r8/resolution/ArrayTargetLookupTest.java
index 8034ad7..079a8f5 100644
--- a/src/test/java/com/android/tools/r8/resolution/ArrayTargetLookupTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/ArrayTargetLookupTest.java
@@ -44,7 +44,7 @@
factory.createType(DescriptorUtils.javaTypeToDescriptor(Foo.class.getTypeName()));
DexType[] arrayTypes =
new DexType[] {
- factory.createType("[I"),
+ factory.intArrayType,
factory.stringArrayType,
factory.objectArrayType,
factory.createArrayType(2, fooType)
diff --git a/src/test/java/com/android/tools/r8/shaking/addconfigurationdebugging/B133167042.java b/src/test/java/com/android/tools/r8/shaking/addconfigurationdebugging/B133167042.java
index 725fe66..3971997 100644
--- a/src/test/java/com/android/tools/r8/shaking/addconfigurationdebugging/B133167042.java
+++ b/src/test/java/com/android/tools/r8/shaking/addconfigurationdebugging/B133167042.java
@@ -31,7 +31,7 @@
@Parameters(name = "{0}")
public static TestParametersCollection data() {
- return getTestParameters().withAllRuntimes().build();
+ return getTestParameters().withAllRuntimesAndApiLevels().build();
}
private final TestParameters parameters;
@@ -46,7 +46,7 @@
.addProgramClasses(TestClass.class)
.addKeepMainRule(TestClass.class)
.addKeepRules("-addconfigurationdebugging")
- .setMinApi(parameters.getRuntime())
+ .setMinApi(parameters.getApiLevel())
.run(parameters.getRuntime(), TestClass.class)
.assertSuccessWithOutput(StringUtils.lines("false"));
}
diff --git a/tools/test.py b/tools/test.py
index 9359394..a75beb4 100755
--- a/tools/test.py
+++ b/tools/test.py
@@ -237,6 +237,7 @@
gradle_args.append('-Pr8lib_no_deps')
if options.worktree:
gradle_args.append('-g=' + os.path.join(utils.REPO_ROOT, ".gradle_user_home"))
+ gradle_args.append('--no-daemon')
# Build an R8 with dependencies for bootstrapping tests before adding test sources.
gradle_args.append('r8WithRelocatedDeps')