summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2017-12-15 17:50:21 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-12-15 17:50:21 +0000
commitd9074776c99e5c03127624e45f3691aa42303aa8 (patch)
tree6ae7509db463ca9f5f55dd5463fabdedb7fd4dea
parent6b2f3e8f0fd630015034861affd69f8a99129e9c (diff)
parent67e182a0a1c1d59b5fa107a42ba3bacdc7255eba (diff)
downloaddesugar-d9074776c99e5c03127624e45f3691aa42303aa8.tar.gz
Revert "Merge remote-tracking branch 'aosp/upstream-master' into desugar"
am: 67e182a0a1 Change-Id: I74aaa1a32094f8a2e8364d1334f68ade73566894
-rw-r--r--java/com/google/devtools/build/android/desugar/BytecodeTypeInference.java138
-rw-r--r--java/com/google/devtools/build/android/desugar/LambdaClassMaker.java37
-rw-r--r--java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java27
-rw-r--r--test/java/com/google/devtools/build/android/desugar/ByteCodeTypePrinter.java34
-rw-r--r--test/java/com/google/devtools/build/android/desugar/BytecodeTypeInferenceTest.golden.txt627
-rw-r--r--test/java/com/google/devtools/build/android/desugar/BytecodeTypeInferenceTest.java41
-rw-r--r--test/java/com/google/devtools/build/android/desugar/classes_for_testing_type_inference/test_subjects.jarbin3594 -> 3361 bytes
-rw-r--r--test/java/com/google/devtools/build/android/desugar/classes_for_testing_type_inference/testsubjects/TestSubject.java18
8 files changed, 92 insertions, 830 deletions
diff --git a/java/com/google/devtools/build/android/desugar/BytecodeTypeInference.java b/java/com/google/devtools/build/android/desugar/BytecodeTypeInference.java
index 783069f..777a4ab 100644
--- a/java/com/google/devtools/build/android/desugar/BytecodeTypeInference.java
+++ b/java/com/google/devtools/build/android/desugar/BytecodeTypeInference.java
@@ -14,14 +14,12 @@
package com.google.devtools.build.android.desugar;
import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Preconditions.checkState;
import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
-import java.util.Optional;
-import javax.annotation.Nullable;
+import java.util.HashMap;
import org.objectweb.asm.Handle;
import org.objectweb.asm.Label;
import org.objectweb.asm.MethodVisitor;
@@ -43,6 +41,11 @@ public final class BytecodeTypeInference extends MethodVisitor {
private FrameInfo previousFrame;
/** For debugging purpose. */
private final String methodSignature;
+ /**
+ * Stores mapping from "uninitialized" value to concrete value. This is for the "new" instruction.
+ */
+ private final HashMap<InferredType, InferredType> uninitializedToConcreteTypeMap =
+ new HashMap<>();
public BytecodeTypeInference(int access, String owner, String name, String methodDescriptor) {
super(Opcodes.ASM6);
@@ -78,10 +81,6 @@ public final class BytecodeTypeInference extends MethodVisitor {
return operandStack.toString();
}
- public String getLocalsAsString() {
- return localVariableSlots.toString();
- }
-
@Override
public void visitInsn(int opcode) {
switch (opcode) {
@@ -477,7 +476,8 @@ public final class BytecodeTypeInference extends MethodVisitor {
int argumentSize = (Type.getArgumentsAndReturnSizes(desc) >> 2);
InferredType receiverType = getTypeOfOperandFromTop(argumentSize - 1);
if (receiverType.isUninitialized()) {
- InferredType realType = InferredType.createNonUninitializedType('L' + owner + ';');
+ InferredType realType = InferredType.create('L' + owner + ';');
+ uninitializedToConcreteTypeMap.put(receiverType, realType);
replaceUninitializedTypeInStack(receiverType, realType);
}
}
@@ -642,6 +642,7 @@ public final class BytecodeTypeInference extends MethodVisitor {
operandStack.addAll(previousFrame.stack());
localVariableSlots.clear();
localVariableSlots.addAll(previousFrame.locals());
+
super.visitFrame(type, nLocal, local, nStack, stack);
}
@@ -671,7 +672,7 @@ public final class BytecodeTypeInference extends MethodVisitor {
checkArgument(oldType.isUninitialized(), "The old type is NOT uninitialized. %s", oldType);
for (int i = 0, size = operandStack.size(); i < size; ++i) {
InferredType type = operandStack.get(i);
- if (type.equals(oldType)) {
+ if (type == oldType) {
operandStack.set(i, newType);
}
}
@@ -702,7 +703,7 @@ public final class BytecodeTypeInference extends MethodVisitor {
break;
case 'L':
case '[':
- push(InferredType.createNonUninitializedType(desc.substring(index)));
+ push(InferredType.create(desc.substring(index)));
break;
default:
throw new RuntimeException("Unhandled type: " + desc);
@@ -770,6 +771,12 @@ public final class BytecodeTypeInference extends MethodVisitor {
return lastPopped;
}
+ private static ImmutableList<InferredType> removeBackFromList(
+ ImmutableList<InferredType> list, int countToRemove) {
+ int newSize = list.size() - countToRemove;
+ return list.subList(0, newSize);
+ }
+
/**
* Create the types of local variables at the very beginning of the method with the information of
* the declaring class and the method descriptor.
@@ -780,7 +787,7 @@ public final class BytecodeTypeInference extends MethodVisitor {
if (!BitFlags.isSet(access, Opcodes.ACC_STATIC)) {
// Instance method, and this is the receiver
- types.add(InferredType.createNonUninitializedType(convertToDescriptor(ownerClass)));
+ types.add(InferredType.create(convertToDescriptor(ownerClass)));
}
Type[] argumentTypes = Type.getArgumentTypes(methodDescriptor);
for (Type argumentType : argumentTypes) {
@@ -805,7 +812,7 @@ public final class BytecodeTypeInference extends MethodVisitor {
break;
case Type.ARRAY:
case Type.OBJECT:
- types.add(InferredType.createNonUninitializedType(argumentType.getDescriptor()));
+ types.add(InferredType.create(argumentType.getDescriptor()));
break;
default:
throw new RuntimeException(
@@ -821,28 +828,6 @@ public final class BytecodeTypeInference extends MethodVisitor {
return types;
}
- private static ImmutableList<InferredType> removeBackFromList(
- ImmutableList<InferredType> list, int countToRemove) {
- int origSize = list.size();
- int index = origSize - 1;
-
- while (index >= 0 && countToRemove > 0) {
- InferredType type = list.get(index);
- if (type.equals(InferredType.TOP) && index > 0 && list.get(index - 1).isCategory2()) {
- --index; // A category 2 takes two slots.
- }
- --index; // Eat this local variable.
- --countToRemove;
- }
- checkState(
- countToRemove == 0,
- "countToRemove is %s but not 0. index=%s, list=%s",
- countToRemove,
- index,
- list);
- return list.subList(0, index + 1);
- }
-
private ImmutableList<InferredType> appendArrayToList(
ImmutableList<InferredType> list, int size, Object[] array) {
ImmutableList.Builder<InferredType> builder = ImmutableList.builder();
@@ -876,13 +861,13 @@ public final class BytecodeTypeInference extends MethodVisitor {
} else if (typeInStackMapFrame instanceof String) {
String referenceTypeName = (String) typeInStackMapFrame;
if (referenceTypeName.charAt(0) == '[') {
- return InferredType.createNonUninitializedType(referenceTypeName);
+ return InferredType.create(referenceTypeName);
} else {
- return InferredType.createNonUninitializedType('L' + referenceTypeName + ';');
+ return InferredType.create('L' + referenceTypeName + ';');
}
} else if (typeInStackMapFrame instanceof Label) {
Label label = (Label) typeInStackMapFrame;
- return InferredType.createUninitializedType(label);
+ return InferredType.createUninitialized(label.getOffset());
} else {
throw new RuntimeException(
"Cannot reach here. Unhandled element: value="
@@ -926,45 +911,26 @@ public final class BytecodeTypeInference extends MethodVisitor {
public static final String UNINITIALIZED_PREFIX = "UNINIT@";
public static final InferredType BOOLEAN =
- new AutoValue_BytecodeTypeInference_InferredType("Z", /*uninitializationLabel=*/ null);
- public static final InferredType BYTE =
- new AutoValue_BytecodeTypeInference_InferredType("B", /*uninitializationLabel=*/ null);
- public static final InferredType INT =
- new AutoValue_BytecodeTypeInference_InferredType("I", /*uninitializationLabel=*/ null);
- public static final InferredType FLOAT =
- new AutoValue_BytecodeTypeInference_InferredType("F", /*uninitializationLabel=*/ null);
- public static final InferredType LONG =
- new AutoValue_BytecodeTypeInference_InferredType("J", /*uninitializationLabel=*/ null);
- public static final InferredType DOUBLE =
- new AutoValue_BytecodeTypeInference_InferredType("D", /*uninitializationLabel=*/ null);
+ new AutoValue_BytecodeTypeInference_InferredType("Z");
+ public static final InferredType BYTE = new AutoValue_BytecodeTypeInference_InferredType("B");
+ public static final InferredType INT = new AutoValue_BytecodeTypeInference_InferredType("I");
+ public static final InferredType FLOAT = new AutoValue_BytecodeTypeInference_InferredType("F");
+ public static final InferredType LONG = new AutoValue_BytecodeTypeInference_InferredType("J");
+ public static final InferredType DOUBLE = new AutoValue_BytecodeTypeInference_InferredType("D");
/** Not a real value. */
- public static final InferredType TOP =
- new AutoValue_BytecodeTypeInference_InferredType("TOP", /*uninitializationLabel=*/ null);
+ public static final InferredType TOP = new AutoValue_BytecodeTypeInference_InferredType("TOP");
/** The value NULL */
public static final InferredType NULL =
- new AutoValue_BytecodeTypeInference_InferredType("NULL", /*uninitializationLabel=*/ null);
+ new AutoValue_BytecodeTypeInference_InferredType("NULL");
public static final InferredType UNINITIALIZED_THIS =
- new AutoValue_BytecodeTypeInference_InferredType(
- "UNINITIALIZED_THIS", /*uninitializationLabel=*/ null);
+ new AutoValue_BytecodeTypeInference_InferredType("UNINITIALIZED_THIS");
- /**
- * Create a type for a value. This method is not intended to be called outside of this class.
- */
- private static InferredType create(String descriptor, @Nullable Label uninitializationLabel) {
- if (UNINITIALIZED_PREFIX.equals(descriptor)) {
- return new AutoValue_BytecodeTypeInference_InferredType(
- UNINITIALIZED_PREFIX, checkNotNull(uninitializationLabel));
- }
- checkArgument(
- uninitializationLabel == null,
- "The uninitializationLabel should be null for non-uninitialized value. %s",
- descriptor);
+ static InferredType create(String descriptor) {
char firstChar = descriptor.charAt(0);
- if (firstChar == 'L' || firstChar == '[') {
- // Reference, array.
- return new AutoValue_BytecodeTypeInference_InferredType(
- descriptor, /*uninitializationLabel=*/ null);
+ if (firstChar == 'L' || firstChar == '[' || descriptor.startsWith(UNINITIALIZED_PREFIX)) {
+ // Reference, array, or uninitialized values.
+ return new AutoValue_BytecodeTypeInference_InferredType(descriptor);
}
switch (descriptor) {
case "Z":
@@ -990,23 +956,12 @@ public final class BytecodeTypeInference extends MethodVisitor {
}
}
- /** Creates all types except UNINITIALIZED. This method can also create UNINTIALIZED_THIS. */
- static InferredType createNonUninitializedType(String descriptor) {
- return create(descriptor, /*uninitializationLabel=*/ null);
- }
-
- /** Create a type for an UNINITIALIZED value. The uninitializationLabel is generated by ASM. */
- static InferredType createUninitializedType(Label uninitializationLabel) {
- return create(UNINITIALIZED_PREFIX, uninitializationLabel);
+ /** Create a type for uninitialized value. The label is generated by ASM. */
+ static InferredType createUninitialized(int label) {
+ return create(UNINITIALIZED_PREFIX + label);
}
abstract String descriptor();
- /**
- * The label may be null. This field is meaningful if the current type is "UNINITIALIZED". For
- * other types, this field is null.
- */
- @Nullable
- abstract Label uninitializationLabel();
@Override
public String toString() {
@@ -1023,7 +978,7 @@ public final class BytecodeTypeInference extends MethodVisitor {
public InferredType getElementTypeIfArrayOrThrow() {
String descriptor = descriptor();
checkState(descriptor.charAt(0) == '[', "This type %s is not an array.", this);
- return createNonUninitializedType(descriptor.substring(1));
+ return create(descriptor.substring(1));
}
/** Is an uninitialized value? */
@@ -1037,16 +992,17 @@ public final class BytecodeTypeInference extends MethodVisitor {
}
/**
- * If this type is a reference type, then return the internal name. Otherwise, returns empty.
+ * If this type is a reference type, then return the internal name. Otherwise, throw an
+ * exception.
*/
- public Optional<String> getInternalName() {
+ public String getInternalNameOrThrow() {
String descriptor = descriptor();
int length = descriptor.length();
- if (length > 0 && descriptor.charAt(0) == 'L' && descriptor.charAt(length - 1) == ';') {
- return Optional.of(descriptor.substring(1, length - 1));
- } else {
- return Optional.empty();
- }
+ checkState(
+ descriptor.charAt(0) == 'L' && descriptor.charAt(length - 1) == ';',
+ "The type is expected to be either a class or an interface: %s",
+ descriptor);
+ return descriptor.substring(1, length - 1);
}
}
}
diff --git a/java/com/google/devtools/build/android/desugar/LambdaClassMaker.java b/java/com/google/devtools/build/android/desugar/LambdaClassMaker.java
index 1f240ef..beaeb03 100644
--- a/java/com/google/devtools/build/android/desugar/LambdaClassMaker.java
+++ b/java/com/google/devtools/build/android/desugar/LambdaClassMaker.java
@@ -14,19 +14,18 @@
package com.google.devtools.build.android.desugar;
import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.collect.Iterables.getOnlyElement;
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Iterators;
import java.io.IOException;
import java.lang.invoke.MethodHandle;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
-import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Map;
-import java.util.Set;
+import java.util.function.Predicate;
+import java.util.stream.Stream;
class LambdaClassMaker {
@@ -34,7 +33,6 @@ class LambdaClassMaker {
private final Path rootDirectory;
private final Map<Path, LambdaInfo> generatedClasses = new LinkedHashMap<>();
- private final Set<Path> existingPaths = new HashSet<>();
public LambdaClassMaker(Path rootDirectory) {
checkArgument(
@@ -44,9 +42,7 @@ class LambdaClassMaker {
public void generateLambdaClass(String invokerInternalName, LambdaInfo lambdaInfo,
MethodHandle bootstrapMethod, ArrayList<Object> bsmArgs) throws IOException {
- // Invoking the bootstrap method will dump the generated class. Ignore any pre-existing
- // matching files, which can come from desugar's implementation using classes being desugared.
- existingPaths.addAll(findUnprocessed(invokerInternalName + "$$Lambda$"));
+ // Invoking the bootstrap method will dump the generated class
try {
bootstrapMethod.invokeWithArguments(bsmArgs);
} catch (Throwable e) {
@@ -54,9 +50,8 @@ class LambdaClassMaker {
+ invokerInternalName + " using " + bootstrapMethod + " with arguments " + bsmArgs, e);
}
- Path generatedClassFile = getOnlyElement(findUnprocessed(invokerInternalName + "$$Lambda$"));
+ Path generatedClassFile = findOnlyUnprocessed(invokerInternalName + "$$Lambda$");
generatedClasses.put(generatedClassFile, lambdaInfo);
- existingPaths.add(generatedClassFile);
}
/**
@@ -69,7 +64,7 @@ class LambdaClassMaker {
return result;
}
- private ImmutableList<Path> findUnprocessed(String pathPrefix) throws IOException {
+ private Path findOnlyUnprocessed(String pathPrefix) throws IOException {
// pathPrefix is an internal class name prefix containing '/', but paths obtained on Windows
// will not contain '/' and searches will fail. So, construct an absolute path from the given
// string and use its string representation to find the file we need regardless of host
@@ -77,14 +72,18 @@ class LambdaClassMaker {
Path rootPathPrefix = rootDirectory.resolve(pathPrefix);
final String rootPathPrefixStr = rootPathPrefix.toString();
- if (!Files.exists(rootPathPrefix.getParent())) {
- return ImmutableList.of();
+ // TODO(bazel-team): This could be much nicer with lambdas
+ try (Stream<Path> paths =
+ Files.list(rootPathPrefix.getParent())
+ .filter(
+ new Predicate<Path>() {
+ @Override
+ public boolean test(Path path) {
+ return path.toString().startsWith(rootPathPrefixStr)
+ && !generatedClasses.containsKey(path);
+ }
+ })) {
+ return Iterators.getOnlyElement(paths.iterator());
}
- return Files.list(rootPathPrefix.getParent())
- .filter(
- path ->
- path.toString().startsWith(rootPathPrefixStr)
- && !existingPaths.contains(path))
- .collect(ImmutableList.toImmutableList());
}
}
diff --git a/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java b/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java
index 8e6d6d5..e4d4da5 100644
--- a/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java
+++ b/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java
@@ -31,7 +31,6 @@ import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.android.desugar.BytecodeTypeInference.InferredType;
import java.util.Collections;
import java.util.LinkedHashSet;
-import java.util.Optional;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import javax.annotation.Nullable;
@@ -292,16 +291,10 @@ public class TryWithResourcesRewriter extends ClassVisitor {
// Check the exception type.
InferredType exceptionClass = typeInference.getTypeOfOperandFromTop(1);
if (!exceptionClass.isNull()) {
- Optional<String> exceptionClassInternalName = exceptionClass.getInternalName();
- checkState(
- exceptionClassInternalName.isPresent(),
- "The exception %s is not a reference type in %s.%s",
- exceptionClass,
- internalName,
- methodSignature);
+ String exceptionClassInternalName = exceptionClass.getInternalNameOrThrow();
checkState(
isAssignableFrom(
- "java.lang.Throwable", exceptionClassInternalName.get().replace('/', '.')),
+ "java.lang.Throwable", exceptionClassInternalName.replace('/', '.')),
"The exception type %s in %s.%s should be a subclass of java.lang.Throwable.",
exceptionClassInternalName,
internalName,
@@ -309,26 +302,20 @@ public class TryWithResourcesRewriter extends ClassVisitor {
}
}
- InferredType resourceType = typeInference.getTypeOfOperandFromTop(0);
- Optional<String> resourceClassInternalName = resourceType.getInternalName();
- checkState(
- resourceClassInternalName.isPresent(),
- "The resource class %s is not a reference type in %s.%s",
- resourceType,
- internalName,
- methodSignature);
+ String resourceClassInternalName =
+ typeInference.getTypeOfOperandFromTop(0).getInternalNameOrThrow();
checkState(
isAssignableFrom(
- "java.lang.AutoCloseable", resourceClassInternalName.get().replace('/', '.')),
+ "java.lang.AutoCloseable", resourceClassInternalName.replace('/', '.')),
"The resource type should be a subclass of java.lang.AutoCloseable: %s",
resourceClassInternalName);
- resourceTypeInternalNames.add(resourceClassInternalName.get());
+ resourceTypeInternalNames.add(resourceClassInternalName);
super.visitMethodInsn(
opcode,
owner,
"$closeResource",
- "(Ljava/lang/Throwable;L" + resourceClassInternalName.get() + ";)V",
+ "(Ljava/lang/Throwable;L" + resourceClassInternalName + ";)V",
itf);
return;
}
diff --git a/test/java/com/google/devtools/build/android/desugar/ByteCodeTypePrinter.java b/test/java/com/google/devtools/build/android/desugar/ByteCodeTypePrinter.java
index d58d002..fefc599 100644
--- a/test/java/com/google/devtools/build/android/desugar/ByteCodeTypePrinter.java
+++ b/test/java/com/google/devtools/build/android/desugar/ByteCodeTypePrinter.java
@@ -20,7 +20,6 @@ import java.io.InputStream;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.util.Comparator;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import org.objectweb.asm.ClassReader;
@@ -54,7 +53,7 @@ public class ByteCodeTypePrinter {
private static ImmutableList<ZipEntry> getSortedClassEntriess(ZipFile jar) {
return jar.stream()
.filter(entry -> entry.getName().endsWith(".class"))
- .sorted(Comparator.comparing(ZipEntry::getName))
+ .sorted()
.collect(ImmutableList.toImmutableList());
}
@@ -117,106 +116,105 @@ public class ByteCodeTypePrinter {
this.printWriter = printWriter;
}
- private void printTypeOfOperandStack() {
+ private void printTypeOfOperandStackTop() {
printer.print(" |__STACK: " + inference.getOperandStackAsString() + "\n");
- printer.print(" |__LOCAL: " + inference.getLocalsAsString() + "\n");
}
@Override
public void visitIntInsn(int opcode, int operand) {
printer.visitIntInsn(opcode, operand);
- printTypeOfOperandStack();
+ printTypeOfOperandStackTop();
super.visitIntInsn(opcode, operand);
}
@Override
public void visitInsn(int opcode) {
printer.visitInsn(opcode);
- printTypeOfOperandStack();
+ printTypeOfOperandStackTop();
super.visitInsn(opcode);
}
@Override
public void visitMultiANewArrayInsn(String desc, int dims) {
printer.visitMultiANewArrayInsn(desc, dims);
- printTypeOfOperandStack();
+ printTypeOfOperandStackTop();
super.visitMultiANewArrayInsn(desc, dims);
}
@Override
public void visitLookupSwitchInsn(Label dflt, int[] keys, Label[] labels) {
printer.visitLookupSwitchInsn(dflt, keys, labels);
- printTypeOfOperandStack();
+ printTypeOfOperandStackTop();
super.visitLookupSwitchInsn(dflt, keys, labels);
}
@Override
public void visitTableSwitchInsn(int min, int max, Label dflt, Label... labels) {
printer.visitTableSwitchInsn(min, max, dflt, labels);
- printTypeOfOperandStack();
+ printTypeOfOperandStackTop();
super.visitTableSwitchInsn(min, max, dflt, labels);
}
@Override
public void visitIincInsn(int var, int increment) {
printer.visitIincInsn(var, increment);
- printTypeOfOperandStack();
+ printTypeOfOperandStackTop();
super.visitIincInsn(var, increment);
}
@Override
public void visitLdcInsn(Object cst) {
printer.visitLdcInsn(cst);
- printTypeOfOperandStack();
+ printTypeOfOperandStackTop();
super.visitLdcInsn(cst);
}
@Override
public void visitJumpInsn(int opcode, Label label) {
printer.visitJumpInsn(opcode, label);
- printTypeOfOperandStack();
+ printTypeOfOperandStackTop();
super.visitJumpInsn(opcode, label);
}
@Override
public void visitInvokeDynamicInsn(String name, String desc, Handle bsm, Object... bsmArgs) {
printer.visitInvokeDynamicInsn(name, desc, bsm, bsmArgs);
- printTypeOfOperandStack();
+ printTypeOfOperandStackTop();
super.visitInvokeDynamicInsn(name, desc, bsm, bsmArgs);
}
@Override
public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) {
printer.visitMethodInsn(opcode, owner, name, desc, itf);
- printTypeOfOperandStack();
+ printTypeOfOperandStackTop();
super.visitMethodInsn(opcode, owner, name, desc, itf);
}
@Override
public void visitMethodInsn(int opcode, String owner, String name, String desc) {
printer.visitMethodInsn(opcode, owner, name, desc);
- printTypeOfOperandStack();
+ printTypeOfOperandStackTop();
super.visitMethodInsn(opcode, owner, name, desc);
}
@Override
public void visitFieldInsn(int opcode, String owner, String name, String desc) {
printer.visitFieldInsn(opcode, owner, name, desc);
- printTypeOfOperandStack();
+ printTypeOfOperandStackTop();
super.visitFieldInsn(opcode, owner, name, desc);
}
@Override
public void visitTypeInsn(int opcode, String type) {
printer.visitTypeInsn(opcode, type);
- printTypeOfOperandStack();
+ printTypeOfOperandStackTop();
super.visitTypeInsn(opcode, type);
}
@Override
public void visitVarInsn(int opcode, int var) {
printer.visitVarInsn(opcode, var);
- printTypeOfOperandStack();
+ printTypeOfOperandStackTop();
super.visitVarInsn(opcode, var);
}
diff --git a/test/java/com/google/devtools/build/android/desugar/BytecodeTypeInferenceTest.golden.txt b/test/java/com/google/devtools/build/android/desugar/BytecodeTypeInferenceTest.golden.txt
index dabfe14..722c2ad 100644
--- a/test/java/com/google/devtools/build/android/desugar/BytecodeTypeInferenceTest.golden.txt
+++ b/test/java/com/google/devtools/build/android/desugar/BytecodeTypeInferenceTest.golden.txt
@@ -3,1793 +3,1168 @@ Method <init>
L0
ALOAD 0
|__STACK: [Ltestsubjects/TestSubject;]
- |__LOCAL: [Ltestsubjects/TestSubject;]
INVOKESPECIAL java/lang/Object.<init> ()V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;]
RETURN
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;]
Method catchTest
L0
ALOAD 0
|__STACK: [Ljava/lang/Object;]
- |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;]
INSTANCEOF java/lang/String
|__STACK: [I]
- |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;]
IFNE L1
|__STACK: []
- |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;]
L2
GETSTATIC testsubjects/TestSubject.VALUE_ONE : I
|__STACK: [I]
- |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;]
IRETURN
|__STACK: []
- |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;]
L1
FRAME SAME
ALOAD 0
|__STACK: [Ljava/lang/Object;]
- |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;]
CHECKCAST java/lang/String
|__STACK: [Ljava/lang/String;]
- |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;]
INVOKESTATIC java/util/regex/Pattern.compile (Ljava/lang/String;)Ljava/util/regex/Pattern;
|__STACK: [Ljava/util/regex/Pattern;]
- |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;]
POP
|__STACK: []
- |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;]
L3
GOTO L4
|__STACK: []
- |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;]
L5
FRAME SAME1 java/util/regex/PatternSyntaxException
ASTORE 2
|__STACK: []
- |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;, Ljava/util/regex/PatternSyntaxException;]
L6
GETSTATIC testsubjects/TestSubject.VALUE_TWO : I
|__STACK: [I]
- |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;, Ljava/util/regex/PatternSyntaxException;]
IRETURN
|__STACK: []
- |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;, Ljava/util/regex/PatternSyntaxException;]
L4
FRAME SAME
GETSTATIC testsubjects/TestSubject.VALUE_ONE : I
|__STACK: [I]
- |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;]
IRETURN
|__STACK: []
- |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;]
Method assertEquals
L0
DLOAD 1
|__STACK: [D, TOP]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
DLOAD 3
|__STACK: [D, TOP, D, TOP]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
INVOKESTATIC java/lang/Double.compare (DD)I
|__STACK: [I]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
IFNE L1
|__STACK: []
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
L2
RETURN
|__STACK: []
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
L1
FRAME SAME
DLOAD 1
|__STACK: [D, TOP]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
DLOAD 3
|__STACK: [D, TOP, D, TOP]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
DSUB
|__STACK: [D, TOP]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
INVOKESTATIC java/lang/Math.abs (D)D
|__STACK: [D, TOP]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
DLOAD 5
|__STACK: [D, TOP, D, TOP]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
DCMPG
|__STACK: [I]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
IFLE L3
|__STACK: []
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
L4
NEW java/lang/RuntimeException
|__STACK: [Ljava/lang/RuntimeException;]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
DUP
|__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
NEW java/lang/StringBuilder
|__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
DUP
|__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;, Ljava/lang/StringBuilder;]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
INVOKESPECIAL java/lang/StringBuilder.<init> ()V
|__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
ALOAD 0
|__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;, Ljava/lang/String;]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
|__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
NEW java/lang/Double
|__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;, Ljava/lang/Double;]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
DUP
|__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;, Ljava/lang/Double;, Ljava/lang/Double;]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
DLOAD 1
|__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;, Ljava/lang/Double;, Ljava/lang/Double;, D, TOP]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
INVOKESPECIAL java/lang/Double.<init> (D)V
|__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;, Ljava/lang/Double;]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/Object;)Ljava/lang/StringBuilder;
|__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
NEW java/lang/Double
|__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;, Ljava/lang/Double;]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
DUP
|__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;, Ljava/lang/Double;, Ljava/lang/Double;]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
DLOAD 3
|__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;, Ljava/lang/Double;, Ljava/lang/Double;, D, TOP]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
INVOKESPECIAL java/lang/Double.<init> (D)V
|__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;, Ljava/lang/Double;]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/Object;)Ljava/lang/StringBuilder;
|__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;
|__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/String;]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
INVOKESPECIAL java/lang/RuntimeException.<init> (Ljava/lang/String;)V
|__STACK: [Ljava/lang/RuntimeException;]
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
ATHROW
|__STACK: []
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
L3
FRAME SAME
RETURN
|__STACK: []
- |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP]
Method simpleTryWithResources
L0
NEW testsubjects/TestSubject$SimpleResource
|__STACK: [Ltestsubjects/TestSubject$SimpleResource;]
- |__LOCAL: []
DUP
|__STACK: [Ltestsubjects/TestSubject$SimpleResource;, Ltestsubjects/TestSubject$SimpleResource;]
- |__LOCAL: []
INVOKESPECIAL testsubjects/TestSubject$SimpleResource.<init> ()V
|__STACK: [Ltestsubjects/TestSubject$SimpleResource;]
- |__LOCAL: []
ASTORE 0
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;]
ACONST_NULL
|__STACK: [NULL]
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;]
ASTORE 1
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, NULL]
L1
ALOAD 0
|__STACK: [Ltestsubjects/TestSubject$SimpleResource;]
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, NULL]
ICONST_1
|__STACK: [Ltestsubjects/TestSubject$SimpleResource;, I]
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, NULL]
INVOKEVIRTUAL testsubjects/TestSubject$SimpleResource.call (Z)V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, NULL]
L2
ALOAD 0
|__STACK: [Ltestsubjects/TestSubject$SimpleResource;]
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, NULL]
IFNULL L3
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, NULL]
ALOAD 1
|__STACK: [NULL]
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, NULL]
IFNULL L4
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, NULL]
L5
ALOAD 0
|__STACK: [Ltestsubjects/TestSubject$SimpleResource;]
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, NULL]
INVOKEVIRTUAL testsubjects/TestSubject$SimpleResource.close ()V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, NULL]
L6
GOTO L3
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, NULL]
L7
FRAME FULL [testsubjects/TestSubject$SimpleResource java/lang/Throwable] [java/lang/Throwable]
ASTORE 2
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 1
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 2
|__STACK: [Ljava/lang/Throwable;, Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
INVOKEVIRTUAL java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
GOTO L3
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
L4
FRAME SAME
ALOAD 0
|__STACK: [Ltestsubjects/TestSubject$SimpleResource;]
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;]
INVOKEVIRTUAL testsubjects/TestSubject$SimpleResource.close ()V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;]
GOTO L3
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;]
L8
FRAME SAME1 java/lang/Throwable
ASTORE 2
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 2
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ASTORE 1
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 2
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ATHROW
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
L9
FRAME SAME1 java/lang/Throwable
ASTORE 3
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;]
L10
ALOAD 0
|__STACK: [Ltestsubjects/TestSubject$SimpleResource;]
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;]
IFNULL L11
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;]
ALOAD 1
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;]
IFNULL L12
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;]
L13
ALOAD 0
|__STACK: [Ltestsubjects/TestSubject$SimpleResource;]
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;]
INVOKEVIRTUAL testsubjects/TestSubject$SimpleResource.close ()V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;]
L14
GOTO L11
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;]
L15
FRAME FULL [testsubjects/TestSubject$SimpleResource java/lang/Throwable T java/lang/Throwable] [java/lang/Throwable]
ASTORE 4
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 1
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 4
|__STACK: [Ljava/lang/Throwable;, Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
INVOKEVIRTUAL java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
GOTO L11
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
L12
FRAME SAME
ALOAD 0
|__STACK: [Ltestsubjects/TestSubject$SimpleResource;]
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;]
INVOKEVIRTUAL testsubjects/TestSubject$SimpleResource.close ()V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;]
L11
FRAME SAME
ALOAD 3
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;]
ATHROW
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;]
L3
FRAME FULL [] []
RETURN
|__STACK: []
- |__LOCAL: []
Method internalCompare
L0
ALOAD 4
|__STACK: [Ljava/util/function/BinaryOperator;]
- |__LOCAL: [J, TOP, J, TOP, Ljava/util/function/BinaryOperator;]
LLOAD 0
|__STACK: [Ljava/util/function/BinaryOperator;, J, TOP]
- |__LOCAL: [J, TOP, J, TOP, Ljava/util/function/BinaryOperator;]
INVOKESTATIC java/lang/Long.valueOf (J)Ljava/lang/Long;
|__STACK: [Ljava/util/function/BinaryOperator;, Ljava/lang/Long;]
- |__LOCAL: [J, TOP, J, TOP, Ljava/util/function/BinaryOperator;]
LLOAD 2
|__STACK: [Ljava/util/function/BinaryOperator;, Ljava/lang/Long;, J, TOP]
- |__LOCAL: [J, TOP, J, TOP, Ljava/util/function/BinaryOperator;]
INVOKESTATIC java/lang/Long.valueOf (J)Ljava/lang/Long;
|__STACK: [Ljava/util/function/BinaryOperator;, Ljava/lang/Long;, Ljava/lang/Long;]
- |__LOCAL: [J, TOP, J, TOP, Ljava/util/function/BinaryOperator;]
INVOKEINTERFACE java/util/function/BinaryOperator.apply (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
|__STACK: [Ljava/lang/Object;]
- |__LOCAL: [J, TOP, J, TOP, Ljava/util/function/BinaryOperator;]
CHECKCAST java/lang/Long
|__STACK: [Ljava/lang/Long;]
- |__LOCAL: [J, TOP, J, TOP, Ljava/util/function/BinaryOperator;]
INVOKEVIRTUAL java/lang/Long.longValue ()J
|__STACK: [J, TOP]
- |__LOCAL: [J, TOP, J, TOP, Ljava/util/function/BinaryOperator;]
LRETURN
|__STACK: []
- |__LOCAL: [J, TOP, J, TOP, Ljava/util/function/BinaryOperator;]
Method closeResourceArray
L0
ALOAD 1
|__STACK: [[Ljava/sql/Statement;]
- |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;]
ASTORE 2
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;]
ALOAD 2
|__STACK: [[Ljava/sql/Statement;]
- |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;]
ARRAYLENGTH
|__STACK: [I]
- |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;]
ISTORE 3
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I]
ICONST_0
|__STACK: [I]
- |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I]
ISTORE 4
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I]
L1
FRAME APPEND [[Ljava/sql/Statement; I I]
ILOAD 4
|__STACK: [I]
- |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I]
ILOAD 3
|__STACK: [I, I]
- |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I]
IF_ICMPGE L2
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I]
ALOAD 2
|__STACK: [[Ljava/sql/Statement;]
- |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I]
ILOAD 4
|__STACK: [[Ljava/sql/Statement;, I]
- |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I]
AALOAD
|__STACK: [Ljava/sql/Statement;]
- |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I]
ASTORE 5
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;]
L3
ALOAD 0
|__STACK: [Ltestsubjects/TestSubject;]
- |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;]
ALOAD 5
|__STACK: [Ltestsubjects/TestSubject;, Ljava/sql/Statement;]
- |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;]
ACONST_NULL
|__STACK: [Ltestsubjects/TestSubject;, Ljava/sql/Statement;, NULL]
- |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;]
INVOKEVIRTUAL testsubjects/TestSubject.closeResource (Ljava/lang/AutoCloseable;Ljava/lang/Throwable;)V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;]
L4
IINC 4 1
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;]
GOTO L1
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;]
L2
FRAME CHOP 3
RETURN
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;]
Method closeResourceMultiArray
L0
ALOAD 1
|__STACK: [[[Ljava/sql/Statement;]
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;]
ASTORE 2
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;]
ALOAD 2
|__STACK: [[[Ljava/sql/Statement;]
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;]
ARRAYLENGTH
|__STACK: [I]
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;]
ISTORE 3
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I]
ICONST_0
|__STACK: [I]
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I]
ISTORE 4
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I]
L1
FRAME APPEND [[[Ljava/sql/Statement; I I]
ILOAD 4
|__STACK: [I]
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I]
ILOAD 3
|__STACK: [I, I]
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I]
IF_ICMPGE L2
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I]
ALOAD 2
|__STACK: [[[Ljava/sql/Statement;]
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I]
ILOAD 4
|__STACK: [[[Ljava/sql/Statement;, I]
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I]
AALOAD
|__STACK: [[Ljava/sql/Statement;]
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I]
ASTORE 5
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;]
L3
ALOAD 5
|__STACK: [[Ljava/sql/Statement;]
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;]
ASTORE 6
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;]
ALOAD 6
|__STACK: [[Ljava/sql/Statement;]
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;]
ARRAYLENGTH
|__STACK: [I]
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;]
ISTORE 7
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I]
ICONST_0
|__STACK: [I]
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I]
ISTORE 8
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I]
L4
FRAME FULL [testsubjects/TestSubject [[Ljava/sql/Statement; [[Ljava/sql/Statement; I I [Ljava/sql/Statement; [Ljava/sql/Statement; I I] []
ILOAD 8
|__STACK: [I]
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I]
ILOAD 7
|__STACK: [I, I]
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I]
IF_ICMPGE L5
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I]
ALOAD 6
|__STACK: [[Ljava/sql/Statement;]
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I]
ILOAD 8
|__STACK: [[Ljava/sql/Statement;, I]
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I]
AALOAD
|__STACK: [Ljava/sql/Statement;]
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I]
ASTORE 9
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;]
L6
ALOAD 0
|__STACK: [Ltestsubjects/TestSubject;]
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;]
ALOAD 9
|__STACK: [Ltestsubjects/TestSubject;, Ljava/sql/Statement;]
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;]
ACONST_NULL
|__STACK: [Ltestsubjects/TestSubject;, Ljava/sql/Statement;, NULL]
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;]
INVOKEVIRTUAL testsubjects/TestSubject.closeResource (Ljava/lang/AutoCloseable;Ljava/lang/Throwable;)V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;]
L7
IINC 8 1
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;]
GOTO L4
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;]
L5
FRAME FULL [testsubjects/TestSubject [[Ljava/sql/Statement; [[Ljava/sql/Statement; I I] []
IINC 4 1
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I]
GOTO L1
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I]
L2
FRAME CHOP 3
RETURN
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;]
Method closeResourceArrayList
L0
ALOAD 1
|__STACK: [Ljava/util/List;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;]
INVOKEINTERFACE java/util/List.iterator ()Ljava/util/Iterator;
|__STACK: [Ljava/util/Iterator;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;]
ASTORE 2
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;]
L1
FRAME APPEND [java/util/Iterator]
ALOAD 2
|__STACK: [Ljava/util/Iterator;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;]
INVOKEINTERFACE java/util/Iterator.hasNext ()Z
|__STACK: [I]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;]
IFEQ L2
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;]
ALOAD 2
|__STACK: [Ljava/util/Iterator;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;]
INVOKEINTERFACE java/util/Iterator.next ()Ljava/lang/Object;
|__STACK: [Ljava/lang/Object;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;]
CHECKCAST java/sql/Statement
|__STACK: [Ljava/sql/Statement;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;]
ASTORE 3
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;, Ljava/sql/Statement;]
L3
ALOAD 0
|__STACK: [Ltestsubjects/TestSubject;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;, Ljava/sql/Statement;]
ALOAD 3
|__STACK: [Ltestsubjects/TestSubject;, Ljava/sql/Statement;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;, Ljava/sql/Statement;]
ACONST_NULL
|__STACK: [Ltestsubjects/TestSubject;, Ljava/sql/Statement;, NULL]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;, Ljava/sql/Statement;]
INVOKEVIRTUAL testsubjects/TestSubject.closeResource (Ljava/lang/AutoCloseable;Ljava/lang/Throwable;)V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;, Ljava/sql/Statement;]
L4
GOTO L1
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;, Ljava/sql/Statement;]
L2
FRAME CHOP 1
RETURN
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;]
Method closeSqlStmt
L0
ACONST_NULL
|__STACK: [NULL]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;]
ASTORE 2
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, NULL]
L1
ALOAD 1
|__STACK: [Ljava/sql/Connection;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, NULL]
INVOKEINTERFACE java/sql/Connection.createStatement ()Ljava/sql/Statement;
|__STACK: [Ljava/sql/Statement;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, NULL]
ASTORE 2
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;]
L2
GOTO L3
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;]
L4
FRAME FULL [testsubjects/TestSubject java/sql/Connection java/sql/Statement] [java/sql/SQLException]
ASTORE 3
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;, Ljava/sql/SQLException;]
L5
ALOAD 0
|__STACK: [Ltestsubjects/TestSubject;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;, Ljava/sql/SQLException;]
ALOAD 2
|__STACK: [Ltestsubjects/TestSubject;, Ljava/sql/Statement;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;, Ljava/sql/SQLException;]
ALOAD 3
|__STACK: [Ltestsubjects/TestSubject;, Ljava/sql/Statement;, Ljava/sql/SQLException;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;, Ljava/sql/SQLException;]
INVOKEVIRTUAL testsubjects/TestSubject.closeResource (Ljava/lang/AutoCloseable;Ljava/lang/Throwable;)V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;, Ljava/sql/SQLException;]
L3
FRAME SAME
ALOAD 0
|__STACK: [Ltestsubjects/TestSubject;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;]
ALOAD 2
|__STACK: [Ltestsubjects/TestSubject;, Ljava/sql/Statement;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;]
ACONST_NULL
|__STACK: [Ltestsubjects/TestSubject;, Ljava/sql/Statement;, NULL]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;]
INVOKEVIRTUAL testsubjects/TestSubject.closeResource (Ljava/lang/AutoCloseable;Ljava/lang/Throwable;)V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;]
L6
RETURN
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;]
Method closeResource
L0
ALOAD 1
|__STACK: [Ljava/lang/AutoCloseable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
IFNONNULL L1
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
L2
RETURN
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
L1
FRAME SAME
ALOAD 1
|__STACK: [Ljava/lang/AutoCloseable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
INVOKEINTERFACE java/lang/AutoCloseable.close ()V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
L3
GOTO L4
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
L5
FRAME SAME1 java/lang/Exception
ASTORE 3
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Exception;]
L6
ALOAD 2
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Exception;]
IFNULL L7
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Exception;]
L8
ALOAD 2
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Exception;]
ALOAD 3
|__STACK: [Ljava/lang/Throwable;, Ljava/lang/Exception;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Exception;]
INVOKEVIRTUAL java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Exception;]
L7
FRAME APPEND [java/lang/Exception]
ALOAD 3
|__STACK: [Ljava/lang/Exception;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Exception;]
ATHROW
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Exception;]
L4
FRAME CHOP 1
RETURN
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
Method intAdd
L0
ILOAD 0
|__STACK: [I]
- |__LOCAL: [I, I]
ISTORE 2
|__STACK: []
- |__LOCAL: [I, I, I]
L1
IINC 2 1
|__STACK: []
- |__LOCAL: [I, I, I]
L2
IINC 2 1
|__STACK: []
- |__LOCAL: [I, I, I]
L3
ILOAD 2
|__STACK: [I]
- |__LOCAL: [I, I, I]
ILOAD 1
|__STACK: [I, I]
- |__LOCAL: [I, I, I]
IADD
|__STACK: [I]
- |__LOCAL: [I, I, I]
ISTORE 2
|__STACK: []
- |__LOCAL: [I, I, I]
L4
IINC 2 -1
|__STACK: []
- |__LOCAL: [I, I, I]
L5
IINC 2 -1
|__STACK: []
- |__LOCAL: [I, I, I]
L6
ILOAD 2
|__STACK: [I]
- |__LOCAL: [I, I, I]
ILOAD 1
|__STACK: [I, I]
- |__LOCAL: [I, I, I]
ISUB
|__STACK: [I]
- |__LOCAL: [I, I, I]
ISTORE 2
|__STACK: []
- |__LOCAL: [I, I, I]
L7
ILOAD 2
|__STACK: [I]
- |__LOCAL: [I, I, I]
ILOAD 1
|__STACK: [I, I]
- |__LOCAL: [I, I, I]
IMUL
|__STACK: [I]
- |__LOCAL: [I, I, I]
ISTORE 2
|__STACK: []
- |__LOCAL: [I, I, I]
L8
ILOAD 2
|__STACK: [I]
- |__LOCAL: [I, I, I]
ILOAD 1
|__STACK: [I, I]
- |__LOCAL: [I, I, I]
IDIV
|__STACK: [I]
- |__LOCAL: [I, I, I]
ISTORE 2
|__STACK: []
- |__LOCAL: [I, I, I]
L9
ILOAD 2
|__STACK: [I]
- |__LOCAL: [I, I, I]
ILOAD 1
|__STACK: [I, I]
- |__LOCAL: [I, I, I]
IREM
|__STACK: [I]
- |__LOCAL: [I, I, I]
ISTORE 2
|__STACK: []
- |__LOCAL: [I, I, I]
L10
ILOAD 2
|__STACK: [I]
- |__LOCAL: [I, I, I]
ICONST_2
|__STACK: [I, I]
- |__LOCAL: [I, I, I]
ISHL
|__STACK: [I]
- |__LOCAL: [I, I, I]
ISTORE 2
|__STACK: []
- |__LOCAL: [I, I, I]
L11
ILOAD 2
|__STACK: [I]
- |__LOCAL: [I, I, I]
ILOAD 1
|__STACK: [I, I]
- |__LOCAL: [I, I, I]
ISHR
|__STACK: [I]
- |__LOCAL: [I, I, I]
ISTORE 2
|__STACK: []
- |__LOCAL: [I, I, I]
L12
ILOAD 2
|__STACK: [I]
- |__LOCAL: [I, I, I]
ICONST_3
|__STACK: [I, I]
- |__LOCAL: [I, I, I]
IUSHR
|__STACK: [I]
- |__LOCAL: [I, I, I]
ISTORE 2
|__STACK: []
- |__LOCAL: [I, I, I]
L13
ILOAD 2
|__STACK: [I]
- |__LOCAL: [I, I, I]
I2L
|__STACK: [J, TOP]
- |__LOCAL: [I, I, I]
LSTORE 3
|__STACK: []
- |__LOCAL: [I, I, I, J, TOP]
L14
LLOAD 3
|__STACK: [J, TOP]
- |__LOCAL: [I, I, I, J, TOP]
ILOAD 1
|__STACK: [J, TOP, I]
- |__LOCAL: [I, I, I, J, TOP]
LSHL
|__STACK: [J, TOP]
- |__LOCAL: [I, I, I, J, TOP]
LSTORE 3
|__STACK: []
- |__LOCAL: [I, I, I, J, TOP]
L15
LLOAD 3
|__STACK: [J, TOP]
- |__LOCAL: [I, I, I, J, TOP]
L2I
|__STACK: [I]
- |__LOCAL: [I, I, I, J, TOP]
IRETURN
|__STACK: []
- |__LOCAL: [I, I, I, J, TOP]
Method createNumberWithDiamond
L0
ACONST_NULL
|__STACK: [NULL]
- |__LOCAL: [I]
ASTORE 1
|__STACK: []
- |__LOCAL: [I, NULL]
L1
ILOAD 0
|__STACK: [I]
- |__LOCAL: [I, NULL]
IFEQ L2
|__STACK: []
- |__LOCAL: [I, NULL]
L3
NEW java/lang/Integer
|__STACK: [Ljava/lang/Integer;]
- |__LOCAL: [I, NULL]
DUP
|__STACK: [Ljava/lang/Integer;, Ljava/lang/Integer;]
- |__LOCAL: [I, NULL]
ICONST_1
|__STACK: [Ljava/lang/Integer;, Ljava/lang/Integer;, I]
- |__LOCAL: [I, NULL]
INVOKESPECIAL java/lang/Integer.<init> (I)V
|__STACK: [Ljava/lang/Integer;]
- |__LOCAL: [I, NULL]
ASTORE 1
|__STACK: []
- |__LOCAL: [I, Ljava/lang/Integer;]
GOTO L4
|__STACK: []
- |__LOCAL: [I, Ljava/lang/Integer;]
L2
FRAME APPEND [java/lang/Number]
NEW java/lang/Double
|__STACK: [Ljava/lang/Double;]
- |__LOCAL: [I, Ljava/lang/Number;]
DUP
|__STACK: [Ljava/lang/Double;, Ljava/lang/Double;]
- |__LOCAL: [I, Ljava/lang/Number;]
DCONST_1
|__STACK: [Ljava/lang/Double;, Ljava/lang/Double;, D, TOP]
- |__LOCAL: [I, Ljava/lang/Number;]
INVOKESPECIAL java/lang/Double.<init> (D)V
|__STACK: [Ljava/lang/Double;]
- |__LOCAL: [I, Ljava/lang/Number;]
ASTORE 1
|__STACK: []
- |__LOCAL: [I, Ljava/lang/Double;]
L4
FRAME SAME
ALOAD 1
|__STACK: [Ljava/lang/Number;]
- |__LOCAL: [I, Ljava/lang/Number;]
ARETURN
|__STACK: []
- |__LOCAL: [I, Ljava/lang/Number;]
Method createMultiObjectArray
L0
ICONST_0
|__STACK: [I]
- |__LOCAL: []
ICONST_0
|__STACK: [I, I]
- |__LOCAL: []
MULTIANEWARRAY [[Ljava/lang/Object; 2
|__STACK: [[[Ljava/lang/Object;]
- |__LOCAL: []
ARETURN
|__STACK: []
- |__LOCAL: []
Method createObjectArray
L0
ICONST_0
|__STACK: [I]
- |__LOCAL: []
ANEWARRAY java/lang/Object
|__STACK: [[Ljava/lang/Object;]
- |__LOCAL: []
ARETURN
|__STACK: []
- |__LOCAL: []
Method createIntArray
L0
ICONST_0
|__STACK: [I]
- |__LOCAL: []
NEWARRAY T_INT
|__STACK: [[I]
- |__LOCAL: []
ARETURN
|__STACK: []
- |__LOCAL: []
Method staticEmpty1
L0
RETURN
|__STACK: []
- |__LOCAL: []
Method instanceEmpty1
L0
RETURN
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;]
Method identity
L0
ILOAD 0
|__STACK: [I]
- |__LOCAL: [I]
IRETURN
|__STACK: []
- |__LOCAL: [I]
Method identity2
L0
ILOAD 0
|__STACK: [I]
- |__LOCAL: [I]
ISTORE 1
|__STACK: []
- |__LOCAL: [I, I]
L1
ILOAD 1
|__STACK: [I]
- |__LOCAL: [I, I]
IRETURN
|__STACK: []
- |__LOCAL: [I, I]
Method readFile
L0
NEW java/io/BufferedReader
|__STACK: [Ljava/io/BufferedReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;]
DUP
|__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;]
NEW java/io/FileReader
|__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;]
DUP
|__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;, Ljava/io/FileReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;]
ALOAD 1
|__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;, Ljava/io/FileReader;, Ljava/io/File;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;]
INVOKESPECIAL java/io/FileReader.<init> (Ljava/io/File;)V
|__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;]
INVOKESPECIAL java/io/BufferedReader.<init> (Ljava/io/Reader;)V
|__STACK: [Ljava/io/BufferedReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;]
ASTORE 2
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;]
ACONST_NULL
|__STACK: [NULL]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;]
ASTORE 3
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL]
L1
NEW java/io/BufferedReader
|__STACK: [Ljava/io/BufferedReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL]
DUP
|__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL]
NEW java/io/FileReader
|__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL]
DUP
|__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;, Ljava/io/FileReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL]
ALOAD 1
|__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;, Ljava/io/FileReader;, Ljava/io/File;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL]
INVOKESPECIAL java/io/FileReader.<init> (Ljava/io/File;)V
|__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL]
INVOKESPECIAL java/io/BufferedReader.<init> (Ljava/io/Reader;)V
|__STACK: [Ljava/io/BufferedReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL]
ASTORE 4
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;]
L2
ACONST_NULL
|__STACK: [NULL]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;]
ASTORE 5
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
L3
NEW java/io/BufferedReader
|__STACK: [Ljava/io/BufferedReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
DUP
|__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
NEW java/io/FileReader
|__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
DUP
|__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;, Ljava/io/FileReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
ALOAD 1
|__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;, Ljava/io/FileReader;, Ljava/io/File;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
INVOKESPECIAL java/io/FileReader.<init> (Ljava/io/File;)V
|__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
INVOKESPECIAL java/io/BufferedReader.<init> (Ljava/io/Reader;)V
|__STACK: [Ljava/io/BufferedReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
ASTORE 6
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;]
L4
ACONST_NULL
|__STACK: [NULL]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;]
ASTORE 7
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
L5
NEW java/io/BufferedReader
|__STACK: [Ljava/io/BufferedReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
DUP
|__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
NEW java/io/FileReader
|__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
DUP
|__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;, Ljava/io/FileReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
ALOAD 1
|__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;, Ljava/io/FileReader;, Ljava/io/File;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
INVOKESPECIAL java/io/FileReader.<init> (Ljava/io/File;)V
|__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
INVOKESPECIAL java/io/BufferedReader.<init> (Ljava/io/Reader;)V
|__STACK: [Ljava/io/BufferedReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
ASTORE 8
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;]
L6
ACONST_NULL
|__STACK: [NULL]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;]
ASTORE 9
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
L7
ALOAD 8
|__STACK: [Ljava/io/BufferedReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
IFNULL L8
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
ALOAD 9
|__STACK: [NULL]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
IFNULL L9
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
L10
ALOAD 8
|__STACK: [Ljava/io/BufferedReader;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
INVOKEINTERFACE java/lang/AutoCloseable.close ()V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
L11
GOTO L8
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL]
L12
FRAME FULL [testsubjects/TestSubject java/io/File java/lang/AutoCloseable java/lang/Throwable java/lang/AutoCloseable java/lang/Throwable java/lang/AutoCloseable java/lang/Throwable java/lang/AutoCloseable java/lang/Throwable] [java/lang/Throwable]
ASTORE 10
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 9
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 10
|__STACK: [Ljava/lang/Throwable;, Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
INVOKEVIRTUAL java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
GOTO L8
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
L9
FRAME SAME
ALOAD 8
|__STACK: [Ljava/lang/AutoCloseable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
INVOKEINTERFACE java/lang/AutoCloseable.close ()V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
L8
FRAME CHOP 2
ALOAD 6
|__STACK: [Ljava/lang/AutoCloseable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
IFNULL L13
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
ALOAD 7
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
IFNULL L14
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
L15
ALOAD 6
|__STACK: [Ljava/lang/AutoCloseable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
INVOKEINTERFACE java/lang/AutoCloseable.close ()V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
L16
GOTO L13
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
L17
FRAME SAME1 java/lang/Throwable
ASTORE 8
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 7
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 8
|__STACK: [Ljava/lang/Throwable;, Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
INVOKEVIRTUAL java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
GOTO L13
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
L14
FRAME SAME
ALOAD 6
|__STACK: [Ljava/lang/AutoCloseable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
INVOKEINTERFACE java/lang/AutoCloseable.close ()V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
GOTO L13
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
L18
FRAME SAME1 java/lang/Throwable
ASTORE 8
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 8
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ASTORE 7
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 8
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ATHROW
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
L19
FRAME SAME1 java/lang/Throwable
ASTORE 11
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;]
L20
ALOAD 6
|__STACK: [Ljava/lang/AutoCloseable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;]
IFNULL L21
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;]
ALOAD 7
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;]
IFNULL L22
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;]
L23
ALOAD 6
|__STACK: [Ljava/lang/AutoCloseable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;]
INVOKEINTERFACE java/lang/AutoCloseable.close ()V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;]
L24
GOTO L21
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;]
L25
FRAME FULL [testsubjects/TestSubject java/io/File java/lang/AutoCloseable java/lang/Throwable java/lang/AutoCloseable java/lang/Throwable java/lang/AutoCloseable java/lang/Throwable T T T java/lang/Throwable] [java/lang/Throwable]
ASTORE 12
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 7
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 12
|__STACK: [Ljava/lang/Throwable;, Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
INVOKEVIRTUAL java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
GOTO L21
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
L22
FRAME SAME
ALOAD 6
|__STACK: [Ljava/lang/AutoCloseable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;]
INVOKEINTERFACE java/lang/AutoCloseable.close ()V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;]
L21
FRAME SAME
ALOAD 11
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;]
ATHROW
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;]
L13
FRAME FULL [testsubjects/TestSubject java/io/File java/lang/AutoCloseable java/lang/Throwable java/lang/AutoCloseable java/lang/Throwable] []
ALOAD 4
|__STACK: [Ljava/lang/AutoCloseable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
IFNULL L26
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
ALOAD 5
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
IFNULL L27
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
L28
ALOAD 4
|__STACK: [Ljava/lang/AutoCloseable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
INVOKEINTERFACE java/lang/AutoCloseable.close ()V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
L29
GOTO L26
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
L30
FRAME SAME1 java/lang/Throwable
ASTORE 6
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 5
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 6
|__STACK: [Ljava/lang/Throwable;, Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
INVOKEVIRTUAL java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
GOTO L26
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
L27
FRAME SAME
ALOAD 4
|__STACK: [Ljava/lang/AutoCloseable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
INVOKEINTERFACE java/lang/AutoCloseable.close ()V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
GOTO L26
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
L31
FRAME SAME1 java/lang/Throwable
ASTORE 6
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 6
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ASTORE 5
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 6
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ATHROW
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
L32
FRAME SAME1 java/lang/Throwable
ASTORE 13
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
L33
ALOAD 4
|__STACK: [Ljava/lang/AutoCloseable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
IFNULL L34
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
ALOAD 5
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
IFNULL L35
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
L36
ALOAD 4
|__STACK: [Ljava/lang/AutoCloseable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
INVOKEINTERFACE java/lang/AutoCloseable.close ()V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
L37
GOTO L34
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
L38
FRAME FULL [testsubjects/TestSubject java/io/File java/lang/AutoCloseable java/lang/Throwable java/lang/AutoCloseable java/lang/Throwable T T T T T T T java/lang/Throwable] [java/lang/Throwable]
ASTORE 14
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 5
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 14
|__STACK: [Ljava/lang/Throwable;, Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
INVOKEVIRTUAL java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
GOTO L34
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
L35
FRAME SAME
ALOAD 4
|__STACK: [Ljava/lang/AutoCloseable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
INVOKEINTERFACE java/lang/AutoCloseable.close ()V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
L34
FRAME SAME
ALOAD 13
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
ATHROW
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
L26
FRAME FULL [testsubjects/TestSubject java/io/File java/lang/AutoCloseable java/lang/Throwable] []
ALOAD 2
|__STACK: [Ljava/lang/AutoCloseable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
IFNULL L39
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
ALOAD 3
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
IFNULL L40
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
L41
ALOAD 2
|__STACK: [Ljava/lang/AutoCloseable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
INVOKEINTERFACE java/lang/AutoCloseable.close ()V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
L42
GOTO L39
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
L43
FRAME SAME1 java/lang/Throwable
ASTORE 4
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 3
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 4
|__STACK: [Ljava/lang/Throwable;, Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
INVOKEVIRTUAL java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
GOTO L39
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
L40
FRAME SAME
ALOAD 2
|__STACK: [Ljava/lang/AutoCloseable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
INVOKEINTERFACE java/lang/AutoCloseable.close ()V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
GOTO L39
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;]
L44
FRAME SAME1 java/lang/Throwable
ASTORE 4
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 4
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ASTORE 3
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 4
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ATHROW
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
L45
FRAME SAME1 java/lang/Throwable
ASTORE 15
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
L46
ALOAD 2
|__STACK: [Ljava/lang/AutoCloseable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
IFNULL L47
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
ALOAD 3
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
IFNULL L48
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
L49
ALOAD 2
|__STACK: [Ljava/lang/AutoCloseable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
INVOKEINTERFACE java/lang/AutoCloseable.close ()V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
L50
GOTO L47
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
L51
FRAME FULL [testsubjects/TestSubject java/io/File java/lang/AutoCloseable java/lang/Throwable T T T T T T T T T T T java/lang/Throwable] [java/lang/Throwable]
ASTORE 16
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 3
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
ALOAD 16
|__STACK: [Ljava/lang/Throwable;, Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
INVOKEVIRTUAL java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
GOTO L47
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;]
L48
FRAME SAME
ALOAD 2
|__STACK: [Ljava/lang/AutoCloseable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
INVOKEINTERFACE java/lang/AutoCloseable.close ()V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
L47
FRAME SAME
ALOAD 15
|__STACK: [Ljava/lang/Throwable;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
ATHROW
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;]
L39
FRAME FULL [testsubjects/TestSubject java/io/File] []
GOTO L52
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;]
L53
FRAME SAME1 java/io/IOException
ASTORE 2
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/IOException;]
L54
ALOAD 2
|__STACK: [Ljava/io/IOException;]
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/IOException;]
INVOKEVIRTUAL java/io/IOException.printStackTrace ()V
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/IOException;]
L52
FRAME SAME
RETURN
|__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;]
-Method testWithDoubleTypes
- L0
- DCONST_1
- |__STACK: [D, TOP]
- |__LOCAL: [Ltestsubjects/TestSubject;]
- DSTORE 1
- |__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP]
- L1
- DCONST_1
- |__STACK: [D, TOP]
- |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP]
- DSTORE 3
- |__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP]
- L2
- FRAME APPEND [D D]
- DLOAD 3
- |__STACK: [D, TOP]
- |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP]
- LDC 22.0
- |__STACK: [D, TOP, D, TOP]
- |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP]
- DCMPG
- |__STACK: [I]
- |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP]
- IFGE L3
- |__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP]
- L4
- GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
- |__STACK: [Ljava/io/PrintStream;]
- |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP]
- DLOAD 3
- |__STACK: [Ljava/io/PrintStream;, D, TOP]
- |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP]
- INVOKEVIRTUAL java/io/PrintStream.println (D)V
- |__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP]
- L5
- DLOAD 1
- |__STACK: [D, TOP]
- |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP]
- DLOAD 3
- |__STACK: [D, TOP, D, TOP]
- |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP]
- DADD
- |__STACK: [D, TOP]
- |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP]
- DSTORE 1
- |__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP]
- L6
- DLOAD 3
- |__STACK: [D, TOP]
- |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP]
- DCONST_1
- |__STACK: [D, TOP, D, TOP]
- |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP]
- DADD
- |__STACK: [D, TOP]
- |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP]
- DSTORE 3
- |__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP]
- GOTO L2
- |__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP]
- L3
- FRAME CHOP 1
- DLOAD 1
- |__STACK: [D, TOP]
- |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP]
- DRETURN
- |__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP]
-Method testWithFloatAndDoubleTypes
- L0
- FCONST_1
- |__STACK: [F]
- |__LOCAL: [Ltestsubjects/TestSubject;]
- FSTORE 1
- |__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, F]
- L1
- DCONST_1
- |__STACK: [D, TOP]
- |__LOCAL: [Ltestsubjects/TestSubject;, F]
- DSTORE 2
- |__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP]
- L2
- FRAME APPEND [F D]
- DLOAD 2
- |__STACK: [D, TOP]
- |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP]
- LDC 22.0
- |__STACK: [D, TOP, D, TOP]
- |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP]
- DCMPG
- |__STACK: [I]
- |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP]
- IFGE L3
- |__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP]
- L4
- GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
- |__STACK: [Ljava/io/PrintStream;]
- |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP]
- DLOAD 2
- |__STACK: [Ljava/io/PrintStream;, D, TOP]
- |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP]
- INVOKEVIRTUAL java/io/PrintStream.println (D)V
- |__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP]
- L5
- FLOAD 1
- |__STACK: [F]
- |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP]
- DLOAD 2
- |__STACK: [F, D, TOP]
- |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP]
- D2F
- |__STACK: [F, F]
- |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP]
- FADD
- |__STACK: [F]
- |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP]
- FSTORE 1
- |__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP]
- L6
- DLOAD 2
- |__STACK: [D, TOP]
- |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP]
- DCONST_1
- |__STACK: [D, TOP, D, TOP]
- |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP]
- DADD
- |__STACK: [D, TOP]
- |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP]
- DSTORE 2
- |__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP]
- GOTO L2
- |__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP]
- L3
- FRAME CHOP 1
- FLOAD 1
- |__STACK: [F]
- |__LOCAL: [Ltestsubjects/TestSubject;, F]
- FRETURN
- |__STACK: []
- |__LOCAL: [Ltestsubjects/TestSubject;, F]
Method <clinit>
L0
ICONST_1
|__STACK: [I]
- |__LOCAL: []
PUTSTATIC testsubjects/TestSubject.VALUE_ONE : I
|__STACK: []
- |__LOCAL: []
L1
ICONST_2
|__STACK: [I]
- |__LOCAL: []
PUTSTATIC testsubjects/TestSubject.VALUE_TWO : I
|__STACK: []
- |__LOCAL: []
RETURN
- |__STACK: []
- |__LOCAL: [] \ No newline at end of file
+ |__STACK: [] \ No newline at end of file
diff --git a/test/java/com/google/devtools/build/android/desugar/BytecodeTypeInferenceTest.java b/test/java/com/google/devtools/build/android/desugar/BytecodeTypeInferenceTest.java
index 476da87..2573648 100644
--- a/test/java/com/google/devtools/build/android/desugar/BytecodeTypeInferenceTest.java
+++ b/test/java/com/google/devtools/build/android/desugar/BytecodeTypeInferenceTest.java
@@ -13,11 +13,8 @@
// limitations under the License.
package com.google.devtools.build.android.desugar;
-import static com.google.common.truth.Truth.assertThat;
-
-import com.google.common.collect.ImmutableMap;
import com.google.common.io.Files;
-import com.google.devtools.build.android.desugar.BytecodeTypeInference.InferredType;
+import com.google.common.truth.Truth;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
@@ -27,7 +24,6 @@ import java.nio.file.Paths;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
-import org.objectweb.asm.Label;
/** Test for {@link BytecodeTypeInference} */
@RunWith(JUnit4.class)
@@ -37,7 +33,7 @@ public class BytecodeTypeInferenceTest {
private static final Path GOLDEN_PATH = Paths.get(System.getProperty("golden_file"));
@Test
- public void testTypeInference() throws IOException {
+ public void test() throws IOException {
StringWriter stringWriter = new StringWriter();
try (PrintWriter printWriter = new PrintWriter(stringWriter)) {
ByteCodeTypePrinter.printClassesWithTypes(JAR_PATH, printWriter);
@@ -45,37 +41,6 @@ public class BytecodeTypeInferenceTest {
}
String inferenceResult = stringWriter.toString().trim();
String golden = Files.asCharSource(GOLDEN_PATH.toFile(), StandardCharsets.UTF_8).read().trim();
- assertThat(inferenceResult).isEqualTo(golden);
- }
-
- @Test
- public void testUninitializedInferType() {
- Label label = new Label();
- InferredType type = InferredType.createUninitializedType(label);
- assertThat(type.descriptor()).isEqualTo(InferredType.UNINITIALIZED_PREFIX);
- assertThat(type.uninitializationLabel()).isEqualTo(label);
- }
-
- @Test
- public void testNonUninitializedInferType() {
- ImmutableMap<String, InferredType> map =
- ImmutableMap.<String, InferredType>builder()
- .put("Z", InferredType.BOOLEAN)
- .put("B", InferredType.BYTE)
- .put("I", InferredType.INT)
- .put("F", InferredType.FLOAT)
- .put("D", InferredType.DOUBLE)
- .put("J", InferredType.LONG)
- .put("TOP", InferredType.TOP)
- .put("NULL", InferredType.NULL)
- .put("UNINITIALIZED_THIS", InferredType.UNINITIALIZED_THIS)
- .build();
- map.forEach(
- (descriptor, expected) -> {
- InferredType type = InferredType.createNonUninitializedType(descriptor);
- assertThat(type.uninitializationLabel()).isNull();
- assertThat(type.descriptor()).isEqualTo(descriptor);
- assertThat(type).isSameAs(expected);
- });
+ Truth.assertThat(inferenceResult).isEqualTo(golden);
}
}
diff --git a/test/java/com/google/devtools/build/android/desugar/classes_for_testing_type_inference/test_subjects.jar b/test/java/com/google/devtools/build/android/desugar/classes_for_testing_type_inference/test_subjects.jar
index f1bb726..efa491b 100644
--- a/test/java/com/google/devtools/build/android/desugar/classes_for_testing_type_inference/test_subjects.jar
+++ b/test/java/com/google/devtools/build/android/desugar/classes_for_testing_type_inference/test_subjects.jar
Binary files differ
diff --git a/test/java/com/google/devtools/build/android/desugar/classes_for_testing_type_inference/testsubjects/TestSubject.java b/test/java/com/google/devtools/build/android/desugar/classes_for_testing_type_inference/testsubjects/TestSubject.java
index a07e73b..b5463a7 100644
--- a/test/java/com/google/devtools/build/android/desugar/classes_for_testing_type_inference/testsubjects/TestSubject.java
+++ b/test/java/com/google/devtools/build/android/desugar/classes_for_testing_type_inference/testsubjects/TestSubject.java
@@ -193,22 +193,4 @@ public class TestSubject {
e.printStackTrace();
}
}
-
- public double testWithDoubleTypes() {
- double result = 1;
- for (double i = 1; i < 22; i = i + 1) {
- System.out.println(i);
- result += i;
- }
- return result;
- }
-
- public float testWithFloatAndDoubleTypes() {
- float result = 1;
- for (double i = 1; i < 22; i = i + 1) {
- System.out.println(i);
- result += (float) i;
- }
- return result;
- }
}