Implement printing of CfFrame in CfCodePrinter
Moving towards reading all stack map frames for populating the initial
type of phi's has the side-effect that printing of CfFrames is necessary
Change-Id: I8717c7b0b2b9411da67ecea379bcdc96d2d65270
diff --git a/src/main/java/com/android/tools/r8/cf/CfCodePrinter.java b/src/main/java/com/android/tools/r8/cf/CfCodePrinter.java
index 21a5392..5fb9822 100644
--- a/src/main/java/com/android/tools/r8/cf/CfCodePrinter.java
+++ b/src/main/java/com/android/tools/r8/cf/CfCodePrinter.java
@@ -3,6 +3,8 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.cf;
+import static com.android.tools.r8.utils.StringUtils.join;
+
import com.android.tools.r8.cf.code.CfArithmeticBinop;
import com.android.tools.r8.cf.code.CfArrayLength;
import com.android.tools.r8.cf.code.CfArrayLoad;
@@ -18,6 +20,7 @@
import com.android.tools.r8.cf.code.CfDexItemBasedConstString;
import com.android.tools.r8.cf.code.CfFieldInstruction;
import com.android.tools.r8.cf.code.CfFrame;
+import com.android.tools.r8.cf.code.CfFrame.FrameType;
import com.android.tools.r8.cf.code.CfGoto;
import com.android.tools.r8.cf.code.CfIf;
import com.android.tools.r8.cf.code.CfIfCmp;
@@ -46,6 +49,7 @@
import com.android.tools.r8.cf.code.CfTryCatch;
import com.android.tools.r8.errors.Unimplemented;
import com.android.tools.r8.graph.CfCode;
+import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.graph.DexMethod;
import com.android.tools.r8.graph.DexProto;
import com.android.tools.r8.graph.DexString;
@@ -185,6 +189,23 @@
return type("ImmutableList", ImmutableList.of("com", "google", "common", "collect"));
}
+ private String int2ReferenceAVLTreeMapType() {
+ return type(
+ "Int2ReferenceAVLTreeMap", ImmutableList.of("it", "unimi", "dsi", "fastutil", "ints"));
+ }
+
+ private String frameTypeType() {
+ return r8Type("FrameType", ImmutableList.of("cf", "code", "CfFrame"));
+ }
+
+ private String dexItemFactoryType() {
+ return r8Type("DexItemFactory", "graph");
+ }
+
+ private String arraysType() {
+ return type("Arrays", ImmutableList.of("java", "util"));
+ }
+
private String r8Type(String name, String pkg) {
return r8Type(name, Collections.singletonList(pkg));
}
@@ -427,7 +448,40 @@
@Override
public void print(CfFrame frame) {
- throw new Unimplemented(frame.getClass().getSimpleName());
+ String keys = join(frame.getLocals().keySet(), ",", BraceType.NONE);
+ String values = join(frame.getLocals().values(), ",", BraceType.NONE, this::frameTypeType);
+ String stack = join(frame.getStack(), ",", BraceType.NONE, this::frameTypeType);
+ printNewInstruction(
+ "CfFrame",
+ "new "
+ + int2ReferenceAVLTreeMapType()
+ + "<>("
+ + "new int[] {"
+ + keys
+ + "},"
+ + "new "
+ + frameTypeType()
+ + "[] { "
+ + values
+ + " })",
+ arraysType() + ".asList(" + stack + ")");
+ }
+
+ private String frameTypeType(FrameType frameType) {
+ if (frameType.isTop()) {
+ return frameTypeType() + ".top()";
+ } else if (frameType.isUninitializedThis()) {
+ return frameTypeType() + ".uninitializedThis()";
+ } else if (frameType.isUninitializedNew()) {
+ return frameTypeType() + ".uninitializedNew(new " + cfType("CfLabel") + "())";
+ } else {
+ assert frameType.isInitialized();
+ if (frameType.getInitializedType() == DexItemFactory.nullValueType) {
+ return frameTypeType() + ".initialized(" + dexItemFactoryType() + ".nullValueType)";
+ } else {
+ return frameTypeType() + ".initialized(" + dexType(frameType.getInitializedType()) + ")";
+ }
+ }
}
@Override
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/backports/BackportedMethods.java b/src/main/java/com/android/tools/r8/ir/desugar/backports/BackportedMethods.java
index bc3c320..d28ee6d 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/backports/BackportedMethods.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/backports/BackportedMethods.java
@@ -16,6 +16,8 @@
import com.android.tools.r8.cf.code.CfCmp;
import com.android.tools.r8.cf.code.CfConstNumber;
import com.android.tools.r8.cf.code.CfConstString;
+import com.android.tools.r8.cf.code.CfFrame;
+import com.android.tools.r8.cf.code.CfFrame.FrameType;
import com.android.tools.r8.cf.code.CfGoto;
import com.android.tools.r8.cf.code.CfIf;
import com.android.tools.r8.cf.code.CfIfCmp;
@@ -45,6 +47,8 @@
import com.android.tools.r8.ir.code.ValueType;
import com.android.tools.r8.utils.InternalOptions;
import com.google.common.collect.ImmutableList;
+import it.unimi.dsi.fastutil.ints.Int2ReferenceAVLTreeMap;
+import java.util.Arrays;
public final class BackportedMethods {
@@ -52,6 +56,7 @@
factory.createSynthesizedType("Ljava/lang/ArithmeticException;");
factory.createSynthesizedType("Ljava/lang/AssertionError;");
factory.createSynthesizedType("Ljava/lang/Double;");
+ factory.createSynthesizedType("Ljava/lang/Exception;");
factory.createSynthesizedType("Ljava/lang/ExceptionInInitializerError;");
factory.createSynthesizedType("Ljava/lang/Float;");
factory.createSynthesizedType("Ljava/lang/IllegalAccessException;");
@@ -97,8 +102,10 @@
factory.createSynthesizedType("Ljava/util/stream/IntStream;");
factory.createSynthesizedType("Ljava/util/stream/LongStream;");
factory.createSynthesizedType("Ljava/util/stream/Stream;");
+ factory.createSynthesizedType("[Ljava/lang/CharSequence;");
factory.createSynthesizedType("[Ljava/lang/Class;");
factory.createSynthesizedType("[Ljava/lang/Object;");
+ factory.createSynthesizedType("[Ljava/util/Map$Entry;");
}
public static CfCode BooleanMethods_compare(InternalOptions options, DexMethod method) {
@@ -119,13 +126,37 @@
new CfConstNumber(0, ValueType.INT),
new CfGoto(label3),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 0),
new CfIf(If.Type.EQ, ValueType.INT, label2),
new CfConstNumber(1, ValueType.INT),
new CfGoto(label3),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfConstNumber(-1, ValueType.INT),
label3,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label4),
ImmutableList.of(),
@@ -148,8 +179,18 @@
new CfConstNumber(1231, ValueType.INT),
new CfGoto(label2),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {FrameType.initialized(options.itemFactory.intType)}),
+ Arrays.asList()),
new CfConstNumber(1237, ValueType.INT),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {FrameType.initialized(options.itemFactory.intType)}),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label3),
ImmutableList.of(),
@@ -281,6 +322,16 @@
new CfConstNumber(0, ValueType.INT),
new CfReturn(ValueType.INT),
label4,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.charSequenceType),
+ FrameType.initialized(options.itemFactory.charSequenceType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
new CfStore(ValueType.INT, 4),
label5,
@@ -298,6 +349,18 @@
false),
new CfStore(ValueType.INT, 5),
label6,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3, 4, 5},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.charSequenceType),
+ FrameType.initialized(options.itemFactory.charSequenceType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 4),
new CfLoad(ValueType.INT, 5),
new CfIfCmp(If.Type.GE, ValueType.INT, label12),
@@ -335,9 +398,31 @@
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Sub, NumericType.INT),
new CfReturn(ValueType.INT),
label11,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3, 4, 5},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.charSequenceType),
+ FrameType.initialized(options.itemFactory.charSequenceType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfIinc(4, 1),
new CfGoto(label6),
label12,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.charSequenceType),
+ FrameType.initialized(options.itemFactory.charSequenceType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 2),
new CfLoad(ValueType.INT, 3),
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Sub, NumericType.INT),
@@ -441,6 +526,14 @@
true),
new CfGoto(label11),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.throwableType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 1),
new CfInvoke(
182,
@@ -482,6 +575,16 @@
label4,
new CfGoto(label11),
label5,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.throwableType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList(
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/lang/Exception;")))),
new CfStore(ValueType.OBJECT, 2),
label6,
new CfNew(options.itemFactory.createType("Ljava/lang/AssertionError;")),
@@ -540,6 +643,14 @@
false),
new CfThrow(),
label7,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.throwableType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.throwableType))),
new CfStore(ValueType.OBJECT, 2),
label8,
new CfNew(options.itemFactory.createType("Ljava/lang/AssertionError;")),
@@ -598,6 +709,17 @@
false),
new CfThrow(),
label9,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.throwableType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList(
+ FrameType.initialized(
+ options.itemFactory.createType(
+ "Ljava/lang/reflect/InvocationTargetException;")))),
new CfStore(ValueType.OBJECT, 2),
label10,
new CfLoad(ValueType.OBJECT, 2),
@@ -610,8 +732,24 @@
false),
new CfThrow(),
label11,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.throwableType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfGoto(label16),
label12,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.throwableType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.throwableType))),
new CfStore(ValueType.OBJECT, 2),
label13,
new CfLoad(ValueType.OBJECT, 0),
@@ -619,10 +757,36 @@
new CfLoad(ValueType.OBJECT, 0),
new CfGoto(label15),
label14,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.throwableType),
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.throwableType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 2),
label15,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.throwableType),
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.throwableType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.throwableType))),
new CfThrow(),
label16,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.throwableType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfReturnVoid(),
label17),
ImmutableList.of(
@@ -706,6 +870,18 @@
new CfConstNumber(0, ValueType.INT),
new CfStore(ValueType.INT, 4),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.createType("[Ljava/lang/Object;")),
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/ArrayList;")),
+ FrameType.initialized(options.itemFactory.createType("[Ljava/lang/Object;")),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 4),
new CfLoad(ValueType.INT, 3),
new CfIfCmp(If.Type.GE, ValueType.INT, label5),
@@ -737,6 +913,14 @@
new CfIinc(4, 1),
new CfGoto(label2),
label5,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.createType("[Ljava/lang/Object;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/ArrayList;"))
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 1),
new CfInvoke(
184,
@@ -844,6 +1028,19 @@
new CfConstNumber(0, ValueType.INT),
new CfStore(ValueType.INT, 4),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3, 4},
+ new FrameType[] {
+ FrameType.initialized(
+ options.itemFactory.createType("[Ljava/util/Map$Entry;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/HashMap;")),
+ FrameType.initialized(
+ options.itemFactory.createType("[Ljava/util/Map$Entry;")),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 4),
new CfLoad(ValueType.INT, 3),
new CfIfCmp(If.Type.GE, ValueType.INT, label8),
@@ -949,9 +1146,31 @@
false),
new CfThrow(),
label7,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3, 4},
+ new FrameType[] {
+ FrameType.initialized(
+ options.itemFactory.createType("[Ljava/util/Map$Entry;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/HashMap;")),
+ FrameType.initialized(
+ options.itemFactory.createType("[Ljava/util/Map$Entry;")),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfIinc(4, 1),
new CfGoto(label2),
label8,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(
+ options.itemFactory.createType("[Ljava/util/Map$Entry;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/HashMap;"))
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 1),
new CfInvoke(
184,
@@ -1005,6 +1224,17 @@
new CfConstNumber(0, ValueType.INT),
new CfStore(ValueType.INT, 4),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.createType("[Ljava/lang/Object;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/HashSet;")),
+ FrameType.initialized(options.itemFactory.createType("[Ljava/lang/Object;")),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 4),
new CfLoad(ValueType.INT, 3),
new CfIfCmp(If.Type.GE, ValueType.INT, label6),
@@ -1079,9 +1309,28 @@
false),
new CfThrow(),
label5,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.createType("[Ljava/lang/Object;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/HashSet;")),
+ FrameType.initialized(options.itemFactory.createType("[Ljava/lang/Object;")),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfIinc(4, 1),
new CfGoto(label2),
label6,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.createType("[Ljava/lang/Object;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/HashSet;"))
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 1),
new CfInvoke(
184,
@@ -1143,6 +1392,17 @@
true),
new CfStore(ValueType.OBJECT, 2),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/Collection;")),
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/ArrayList;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/Iterator;"))
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 2),
new CfInvoke(
185,
@@ -1184,6 +1444,15 @@
label4,
new CfGoto(label2),
label5,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/Collection;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/ArrayList;"))
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 1),
new CfInvoke(
184,
@@ -1256,6 +1525,15 @@
true),
new CfStore(ValueType.OBJECT, 2),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/Map;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/HashMap;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/Iterator;"))
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 2),
new CfInvoke(
185,
@@ -1326,6 +1604,14 @@
label7,
new CfGoto(label2),
label8,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/Map;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/HashMap;"))
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 1),
new CfInvoke(
184,
@@ -1387,6 +1673,16 @@
true),
new CfStore(ValueType.OBJECT, 2),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/Collection;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/HashSet;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/Iterator;"))
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 2),
new CfInvoke(
185,
@@ -1428,6 +1724,15 @@
label4,
new CfGoto(label2),
label5,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/Collection;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/HashSet;"))
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 1),
new CfInvoke(
184,
@@ -1601,8 +1906,18 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label2),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {FrameType.initialized(options.itemFactory.doubleType)}),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {FrameType.initialized(options.itemFactory.doubleType)}),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label3),
ImmutableList.of(),
@@ -1643,8 +1958,18 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label2),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {FrameType.initialized(options.itemFactory.floatType)}),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {FrameType.initialized(options.itemFactory.floatType)}),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label3),
ImmutableList.of(),
@@ -1669,14 +1994,38 @@
new CfConstNumber(0, ValueType.INT),
new CfGoto(label3),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 0),
new CfLoad(ValueType.INT, 1),
new CfIfCmp(If.Type.GE, ValueType.INT, label2),
new CfConstNumber(-1, ValueType.INT),
new CfGoto(label3),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfConstNumber(1, ValueType.INT),
label3,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label4),
ImmutableList.of(),
@@ -1832,6 +2181,14 @@
false),
new CfStore(ValueType.OBJECT, 0),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 0),
new CfLoad(ValueType.INT, 1),
new CfInvoke(
@@ -1927,6 +2284,15 @@
false),
new CfThrow(),
label5,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.LONG, 2),
new CfNumberConversion(NumericType.LONG, NumericType.INT),
new CfReturn(ValueType.INT),
@@ -2134,9 +2500,27 @@
new CfConstNumber(0, ValueType.LONG),
new CfReturn(ValueType.LONG),
label5,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4, 6},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList()),
new CfConstNumber(1, ValueType.LONG),
new CfReturn(ValueType.LONG),
label6,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.LONG, 0),
new CfConstNumber(0, ValueType.LONG),
new CfCmp(Cmp.Bias.NONE, NumericType.LONG),
@@ -2147,6 +2531,14 @@
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Div, NumericType.LONG),
new CfReturn(ValueType.LONG),
label8,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.LONG, 0),
new CfConstNumber(1, ValueType.INT),
new CfLogicalBinop(CfLogicalBinop.Opcode.Ushr, NumericType.LONG),
@@ -2181,8 +2573,34 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label14),
label13,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4, 6, 8, 10},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.longType))),
new CfConstNumber(0, ValueType.INT),
label14,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4, 6, 8, 10},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList(
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType))),
new CfNumberConversion(NumericType.INT, NumericType.LONG),
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Add, NumericType.LONG),
new CfReturn(ValueType.LONG),
@@ -2295,6 +2713,15 @@
false),
new CfThrow(),
label3,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 1),
new CfConstNumber(2, ValueType.INT),
new CfIfCmp(If.Type.LT, ValueType.INT, label4),
@@ -2302,6 +2729,15 @@
new CfConstNumber(36, ValueType.INT),
new CfIfCmp(If.Type.LE, ValueType.INT, label5),
label4,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfNew(options.itemFactory.createType("Ljava/lang/NumberFormatException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfConstString(options.itemFactory.createString("illegal radix: ")),
@@ -2332,6 +2768,15 @@
false),
new CfThrow(),
label5,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfConstNumber(-1, ValueType.LONG),
new CfLoad(ValueType.INT, 1),
new CfNumberConversion(NumericType.INT, NumericType.LONG),
@@ -2365,8 +2810,28 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label8),
label7,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label8,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfStore(ValueType.INT, 5),
label9,
new CfConstNumber(0, ValueType.LONG),
@@ -2375,6 +2840,19 @@
new CfLoad(ValueType.INT, 5),
new CfStore(ValueType.INT, 8),
label11,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3, 5, 6, 8},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 8),
new CfLoad(ValueType.INT, 2),
new CfIfCmp(If.Type.GE, ValueType.INT, label20),
@@ -2419,6 +2897,20 @@
false),
new CfThrow(),
label15,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3, 5, 6, 8, 9},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.LONG, 6),
new CfConstNumber(0, ValueType.LONG),
new CfCmp(Cmp.Bias.NONE, NumericType.LONG),
@@ -2449,6 +2941,20 @@
new CfNumberConversion(NumericType.LONG, NumericType.INT),
new CfIfCmp(If.Type.LE, ValueType.INT, label18),
label17,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3, 5, 6, 8, 9},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfNew(options.itemFactory.createType("Ljava/lang/NumberFormatException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfConstString(options.itemFactory.createString("Too large for unsigned long: ")),
@@ -2471,6 +2977,20 @@
false),
new CfThrow(),
label18,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3, 5, 6, 8, 9},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.LONG, 6),
new CfLoad(ValueType.INT, 1),
new CfNumberConversion(NumericType.INT, NumericType.LONG),
@@ -2483,6 +3003,18 @@
new CfIinc(8, 1),
new CfGoto(label11),
label20,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3, 5, 6},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.LONG, 6),
new CfReturn(ValueType.LONG),
label21),
@@ -2536,11 +3068,29 @@
new CfLoad(ValueType.LONG, 0),
new CfReturn(ValueType.LONG),
label5,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4, 6},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.LONG, 0),
new CfLoad(ValueType.LONG, 2),
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Sub, NumericType.LONG),
new CfReturn(ValueType.LONG),
label6,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.LONG, 0),
new CfConstNumber(0, ValueType.LONG),
new CfCmp(Cmp.Bias.NONE, NumericType.LONG),
@@ -2551,6 +3101,14 @@
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Rem, NumericType.LONG),
new CfReturn(ValueType.LONG),
label8,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.LONG, 0),
new CfConstNumber(1, ValueType.INT),
new CfLogicalBinop(CfLogicalBinop.Opcode.Ushr, NumericType.LONG),
@@ -2585,8 +3143,34 @@
new CfLoad(ValueType.LONG, 2),
new CfGoto(label14),
label13,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4, 6, 8, 10},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.longType))),
new CfConstNumber(0, ValueType.LONG),
label14,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4, 6, 8, 10},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList(
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType))),
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Sub, NumericType.LONG),
new CfReturn(ValueType.LONG),
label15),
@@ -2664,6 +3248,14 @@
new CfConstString(options.itemFactory.createString("0")),
new CfReturn(ValueType.OBJECT),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.LONG, 0),
new CfConstNumber(0, ValueType.LONG),
new CfCmp(Cmp.Bias.NONE, NumericType.LONG),
@@ -2683,6 +3275,14 @@
false),
new CfReturn(ValueType.OBJECT),
label4,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 2),
new CfConstNumber(2, ValueType.INT),
new CfIfCmp(If.Type.LT, ValueType.INT, label5),
@@ -2690,9 +3290,25 @@
new CfConstNumber(36, ValueType.INT),
new CfIfCmp(If.Type.LE, ValueType.INT, label6),
label5,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfConstNumber(10, ValueType.INT),
new CfStore(ValueType.INT, 2),
label6,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfConstNumber(64, ValueType.INT),
new CfNewArray(options.itemFactory.charArrayType),
new CfStore(ValueType.OBJECT, 3),
@@ -2724,6 +3340,18 @@
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Sub, NumericType.INT),
new CfStore(ValueType.INT, 6),
label11,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 3, 4, 5, 6},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.charArrayType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 3),
new CfIinc(4, -1),
new CfLoad(ValueType.INT, 4),
@@ -2756,6 +3384,16 @@
label14,
new CfGoto(label25),
label15,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 3, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.charArrayType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 2),
new CfConstNumber(1, ValueType.INT),
new CfLogicalBinop(CfLogicalBinop.Opcode.And, NumericType.INT),
@@ -2773,6 +3411,16 @@
label17,
new CfGoto(label19),
label18,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 3, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.charArrayType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.LONG, 0),
new CfLoad(ValueType.INT, 2),
new CfNumberConversion(NumericType.INT, NumericType.LONG),
@@ -2788,6 +3436,17 @@
false),
new CfStore(ValueType.LONG, 5),
label19,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 3, 4, 5},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.charArrayType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.LONG, 0),
new CfLoad(ValueType.LONG, 5),
new CfLoad(ValueType.INT, 2),
@@ -2817,6 +3476,18 @@
new CfLoad(ValueType.LONG, 5),
new CfStore(ValueType.LONG, 0),
label22,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 3, 4, 5, 7},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.charArrayType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.LONG, 0),
new CfConstNumber(0, ValueType.LONG),
new CfCmp(Cmp.Bias.NONE, NumericType.LONG),
@@ -2850,6 +3521,16 @@
new CfStore(ValueType.LONG, 0),
new CfGoto(label22),
label25,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 3, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.charArrayType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfNew(options.itemFactory.stringType),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfLoad(ValueType.OBJECT, 3),
@@ -2908,6 +3589,16 @@
new CfLoad(ValueType.INT, 4),
new CfReturn(ValueType.INT),
label4,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfNew(options.itemFactory.createType("Ljava/lang/ArithmeticException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
@@ -2953,8 +3644,26 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label3),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label3,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfLoad(ValueType.LONG, 0),
new CfLoad(ValueType.LONG, 4),
new CfLogicalBinop(CfLogicalBinop.Opcode.Xor, NumericType.LONG),
@@ -2964,14 +3673,43 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label5),
label4,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfConstNumber(0, ValueType.INT),
label5,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList(
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType))),
new CfLogicalBinop(CfLogicalBinop.Opcode.Or, NumericType.INT),
new CfIf(If.Type.EQ, ValueType.INT, label7),
label6,
new CfLoad(ValueType.LONG, 4),
new CfReturn(ValueType.LONG),
label7,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList()),
new CfNew(options.itemFactory.createType("Ljava/lang/ArithmeticException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
@@ -3013,6 +3751,11 @@
false),
new CfThrow(),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {FrameType.initialized(options.itemFactory.intType)}),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 0),
new CfConstNumber(1, ValueType.INT),
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Sub, NumericType.INT),
@@ -3049,6 +3792,11 @@
false),
new CfThrow(),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {FrameType.initialized(options.itemFactory.longType)}),
+ Arrays.asList()),
new CfLoad(ValueType.LONG, 0),
new CfConstNumber(1, ValueType.LONG),
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Sub, NumericType.LONG),
@@ -3092,6 +3840,16 @@
new CfLoad(ValueType.INT, 2),
new CfReturn(ValueType.INT),
label4,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfConstNumber(1, ValueType.INT),
new CfLoad(ValueType.INT, 0),
new CfLoad(ValueType.INT, 1),
@@ -3108,8 +3866,30 @@
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Sub, NumericType.INT),
new CfGoto(label7),
label6,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 2),
label7,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label8),
ImmutableList.of(),
@@ -3152,6 +3932,16 @@
new CfLoad(ValueType.LONG, 4),
new CfReturn(ValueType.LONG),
label4,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4, 6},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList()),
new CfConstNumber(1, ValueType.LONG),
new CfLoad(ValueType.LONG, 0),
new CfLoad(ValueType.LONG, 2),
@@ -3170,8 +3960,30 @@
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Sub, NumericType.LONG),
new CfGoto(label7),
label6,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4, 6, 8},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.LONG, 4),
label7,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4, 6, 8},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.longType))),
new CfReturn(ValueType.LONG),
label8),
ImmutableList.of(),
@@ -3232,6 +4044,15 @@
new CfConstNumber(0, ValueType.INT),
new CfReturn(ValueType.INT),
label3,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfConstNumber(1, ValueType.INT),
new CfLoad(ValueType.INT, 0),
new CfLoad(ValueType.INT, 1),
@@ -3246,10 +4067,30 @@
new CfLoad(ValueType.INT, 2),
new CfGoto(label6),
label5,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 2),
new CfLoad(ValueType.INT, 1),
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Add, NumericType.INT),
label6,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label7),
ImmutableList.of(),
@@ -3284,6 +4125,15 @@
new CfConstNumber(0, ValueType.LONG),
new CfReturn(ValueType.LONG),
label3,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList()),
new CfConstNumber(1, ValueType.LONG),
new CfLoad(ValueType.LONG, 0),
new CfLoad(ValueType.LONG, 2),
@@ -3300,10 +4150,30 @@
new CfLoad(ValueType.LONG, 4),
new CfGoto(label6),
label5,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4, 6},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.LONG, 4),
new CfLoad(ValueType.LONG, 2),
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Add, NumericType.LONG),
label6,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4, 6},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.longType))),
new CfReturn(ValueType.LONG),
label7),
ImmutableList.of(),
@@ -3365,6 +4235,11 @@
false),
new CfThrow(),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {FrameType.initialized(options.itemFactory.intType)}),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 0),
new CfConstNumber(1, ValueType.INT),
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Add, NumericType.INT),
@@ -3401,6 +4276,11 @@
false),
new CfThrow(),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {FrameType.initialized(options.itemFactory.longType)}),
+ Arrays.asList()),
new CfLoad(ValueType.LONG, 0),
new CfConstNumber(1, ValueType.LONG),
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Add, NumericType.LONG),
@@ -3443,6 +4323,16 @@
new CfLoad(ValueType.INT, 4),
new CfReturn(ValueType.INT),
label4,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfNew(options.itemFactory.createType("Ljava/lang/ArithmeticException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
@@ -3540,6 +4430,15 @@
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Mul, NumericType.LONG),
new CfReturn(ValueType.LONG),
label7,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 4),
new CfConstNumber(64, ValueType.INT),
new CfIfCmp(If.Type.LT, ValueType.INT, label15),
@@ -3550,8 +4449,26 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label9),
label8,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label9,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfLoad(ValueType.LONG, 2),
new CfConstNumber(-9223372036854775808L, ValueType.LONG),
new CfCmp(Cmp.Bias.NONE, NumericType.LONG),
@@ -3559,8 +4476,28 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label11),
label10,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfConstNumber(0, ValueType.INT),
label11,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList(
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType))),
new CfLogicalBinop(CfLogicalBinop.Opcode.Or, NumericType.INT),
new CfIf(If.Type.EQ, ValueType.INT, label15),
label12,
@@ -3580,9 +4517,28 @@
new CfCmp(Cmp.Bias.NONE, NumericType.LONG),
new CfIf(If.Type.NE, ValueType.INT, label15),
label14,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4, 5},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.LONG, 5),
new CfReturn(ValueType.LONG),
label15,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfNew(options.itemFactory.createType("Ljava/lang/ArithmeticException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
@@ -3776,6 +4732,11 @@
false),
new CfThrow(),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {FrameType.initialized(options.itemFactory.intType)}),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 0),
new CfNeg(NumericType.INT),
new CfReturn(ValueType.INT),
@@ -3811,6 +4772,11 @@
false),
new CfThrow(),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {FrameType.initialized(options.itemFactory.longType)}),
+ Arrays.asList()),
new CfLoad(ValueType.LONG, 0),
new CfNeg(NumericType.LONG),
new CfReturn(ValueType.LONG),
@@ -3904,6 +4870,16 @@
new CfLoad(ValueType.INT, 4),
new CfReturn(ValueType.INT),
label4,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfNew(options.itemFactory.createType("Ljava/lang/ArithmeticException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
@@ -3949,8 +4925,26 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label3),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label3,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfLoad(ValueType.LONG, 0),
new CfLoad(ValueType.LONG, 4),
new CfLogicalBinop(CfLogicalBinop.Opcode.Xor, NumericType.LONG),
@@ -3960,14 +4954,43 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label5),
label4,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfConstNumber(0, ValueType.INT),
label5,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList(
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType))),
new CfLogicalBinop(CfLogicalBinop.Opcode.Or, NumericType.INT),
new CfIf(If.Type.EQ, ValueType.INT, label7),
label6,
new CfLoad(ValueType.LONG, 4),
new CfReturn(ValueType.LONG),
label7,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.longType)
+ }),
+ Arrays.asList()),
new CfNew(options.itemFactory.createType("Ljava/lang/ArithmeticException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
@@ -4016,6 +5039,14 @@
false),
new CfThrow(),
label3,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.longType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 2),
new CfReturn(ValueType.INT),
label4),
@@ -4047,6 +5078,15 @@
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Sub, NumericType.INT),
new CfIfCmp(If.Type.LE, ValueType.INT, label2),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfNew(options.itemFactory.createType("Ljava/lang/IndexOutOfBoundsException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfNew(options.itemFactory.stringBuilderType),
@@ -4147,6 +5187,15 @@
false),
new CfThrow(),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 0),
new CfReturn(ValueType.INT),
label3),
@@ -4174,6 +5223,15 @@
new CfLoad(ValueType.INT, 2),
new CfIfCmp(If.Type.LE, ValueType.INT, label2),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfNew(options.itemFactory.createType("Ljava/lang/IndexOutOfBoundsException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfNew(options.itemFactory.stringBuilderType),
@@ -4256,6 +5314,15 @@
false),
new CfThrow(),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 0),
new CfReturn(ValueType.INT),
label3),
@@ -4280,6 +5347,14 @@
new CfLoad(ValueType.INT, 1),
new CfIfCmp(If.Type.LT, ValueType.INT, label2),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfNew(options.itemFactory.createType("Ljava/lang/IndexOutOfBoundsException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfNew(options.itemFactory.stringBuilderType),
@@ -4344,6 +5419,14 @@
false),
new CfThrow(),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 0),
new CfReturn(ValueType.INT),
label3),
@@ -4368,6 +5451,16 @@
new CfConstNumber(0, ValueType.INT),
new CfGoto(label2),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/Comparator;"))
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 2),
new CfLoad(ValueType.OBJECT, 0),
new CfLoad(ValueType.OBJECT, 1),
@@ -4382,6 +5475,16 @@
options.itemFactory.createString("compare")),
true),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/Comparator;"))
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label3),
ImmutableList.of(),
@@ -4441,11 +5544,27 @@
new CfConstNumber(1, ValueType.INT),
new CfReturn(ValueType.INT),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 0),
new CfIf(If.Type.NE, ValueType.OBJECT, label2),
new CfConstNumber(0, ValueType.INT),
new CfReturn(ValueType.INT),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 0),
new CfInstanceOf(options.itemFactory.booleanArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label6),
@@ -4471,10 +5590,34 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label5),
label4,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label5,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label6,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 0),
new CfInstanceOf(options.itemFactory.byteArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label10),
@@ -4500,10 +5643,34 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label9),
label8,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label9,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label10,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 0),
new CfInstanceOf(options.itemFactory.charArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label14),
@@ -4529,10 +5696,34 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label13),
label12,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label13,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label14,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 0),
new CfInstanceOf(options.itemFactory.doubleArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label18),
@@ -4558,10 +5749,34 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label17),
label16,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label17,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label18,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 0),
new CfInstanceOf(options.itemFactory.floatArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label22),
@@ -4587,10 +5802,34 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label21),
label20,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label21,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label22,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 0),
new CfInstanceOf(options.itemFactory.intArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label26),
@@ -4616,10 +5855,34 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label25),
label24,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label25,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label26,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 0),
new CfInstanceOf(options.itemFactory.longArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label30),
@@ -4645,10 +5908,34 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label29),
label28,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label29,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label30,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 0),
new CfInstanceOf(options.itemFactory.shortArrayType),
new CfIf(If.Type.EQ, ValueType.INT, label34),
@@ -4674,10 +5961,34 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label33),
label32,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label33,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label34,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 0),
new CfInstanceOf(options.itemFactory.createType("[Ljava/lang/Object;")),
new CfIf(If.Type.EQ, ValueType.INT, label38),
@@ -4703,10 +6014,34 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label37),
label36,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label37,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label38,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 0),
new CfLoad(ValueType.OBJECT, 1),
new CfInvoke(
@@ -4752,11 +6087,35 @@
false),
new CfIf(If.Type.EQ, ValueType.INT, label2),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfConstNumber(1, ValueType.INT),
new CfGoto(label3),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label3,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label4),
ImmutableList.of(),
@@ -4779,6 +6138,11 @@
new CfConstNumber(0, ValueType.INT),
new CfGoto(label2),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {FrameType.initialized(options.itemFactory.objectType)}),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 0),
new CfInvoke(
182,
@@ -4788,6 +6152,11 @@
options.itemFactory.createString("hashCode")),
false),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {FrameType.initialized(options.itemFactory.objectType)}),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label3),
ImmutableList.of(),
@@ -4810,8 +6179,18 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label2),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {FrameType.initialized(options.itemFactory.objectType)}),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {FrameType.initialized(options.itemFactory.objectType)}),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label3),
ImmutableList.of(),
@@ -4834,8 +6213,18 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label2),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {FrameType.initialized(options.itemFactory.objectType)}),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {FrameType.initialized(options.itemFactory.objectType)}),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label3),
ImmutableList.of(),
@@ -4858,6 +6247,14 @@
new CfLoad(ValueType.OBJECT, 0),
new CfReturn(ValueType.OBJECT),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.objectType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 1),
new CfConstString(options.itemFactory.createString("defaultObj")),
new CfInvoke(
@@ -4893,6 +6290,15 @@
new CfLoad(ValueType.OBJECT, 0),
new CfReturn(ValueType.OBJECT),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/function/Supplier;"))
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 1),
new CfConstString(options.itemFactory.createString("supplier")),
new CfInvoke(
@@ -4961,6 +6367,14 @@
false),
new CfThrow(),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.stringType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 0),
new CfReturn(ValueType.OBJECT),
label3),
@@ -5011,6 +6425,14 @@
new CfLoad(ValueType.OBJECT, 1),
new CfGoto(label2),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.stringType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 0),
new CfInvoke(
182,
@@ -5020,6 +6442,14 @@
options.itemFactory.createString("toString")),
false),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.objectType),
+ FrameType.initialized(options.itemFactory.stringType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.stringType))),
new CfReturn(ValueType.OBJECT),
label3),
ImmutableList.of(),
@@ -5067,6 +6497,16 @@
true),
new CfGoto(label3),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/Optional;")),
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/function/Consumer;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/lang/Runnable;"))
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 2),
new CfInvoke(
185,
@@ -5076,6 +6516,16 @@
options.itemFactory.createString("run")),
true),
label3,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/Optional;")),
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/function/Consumer;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/lang/Runnable;"))
+ }),
+ Arrays.asList()),
new CfReturnVoid(),
label4),
ImmutableList.of(),
@@ -5124,6 +6574,17 @@
true),
new CfGoto(label3),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/OptionalDouble;")),
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/function/DoubleConsumer;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/lang/Runnable;"))
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 2),
new CfInvoke(
185,
@@ -5133,6 +6594,17 @@
options.itemFactory.createString("run")),
true),
label3,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/OptionalDouble;")),
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/function/DoubleConsumer;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/lang/Runnable;"))
+ }),
+ Arrays.asList()),
new CfReturnVoid(),
label4),
ImmutableList.of(),
@@ -5181,6 +6653,17 @@
true),
new CfGoto(label3),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/OptionalInt;")),
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/function/IntConsumer;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/lang/Runnable;"))
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 2),
new CfInvoke(
185,
@@ -5190,6 +6673,17 @@
options.itemFactory.createString("run")),
true),
label3,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/OptionalInt;")),
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/function/IntConsumer;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/lang/Runnable;"))
+ }),
+ Arrays.asList()),
new CfReturnVoid(),
label4),
ImmutableList.of(),
@@ -5238,6 +6732,17 @@
true),
new CfGoto(label3),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/OptionalLong;")),
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/function/LongConsumer;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/lang/Runnable;"))
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 2),
new CfInvoke(
185,
@@ -5247,6 +6752,17 @@
options.itemFactory.createString("run")),
true),
label3,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/OptionalLong;")),
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/function/LongConsumer;")),
+ FrameType.initialized(options.itemFactory.createType("Ljava/lang/Runnable;"))
+ }),
+ Arrays.asList()),
new CfReturnVoid(),
label4),
ImmutableList.of(),
@@ -5276,8 +6792,22 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label2),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/Optional;"))
+ }),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/Optional;"))
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label3),
ImmutableList.of(),
@@ -5307,8 +6837,24 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label2),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/OptionalDouble;"))
+ }),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/OptionalDouble;"))
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label3),
ImmutableList.of(),
@@ -5338,8 +6884,24 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label2),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/OptionalInt;"))
+ }),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/OptionalInt;"))
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label3),
ImmutableList.of(),
@@ -5369,8 +6931,24 @@
new CfConstNumber(1, ValueType.INT),
new CfGoto(label2),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/OptionalLong;"))
+ }),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/OptionalLong;"))
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label3),
ImmutableList.of(),
@@ -5414,6 +6992,15 @@
new CfLoad(ValueType.OBJECT, 0),
new CfReturn(ValueType.OBJECT),
label3,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/Optional;")),
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/function/Supplier;"))
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 1),
new CfInvoke(
185,
@@ -5481,6 +7068,13 @@
true),
new CfReturn(ValueType.OBJECT),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/Optional;"))
+ }),
+ Arrays.asList()),
new CfInvoke(
184,
options.itemFactory.createMethod(
@@ -5535,6 +7129,14 @@
true),
new CfReturn(ValueType.OBJECT),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/OptionalDouble;"))
+ }),
+ Arrays.asList()),
new CfInvoke(
184,
options.itemFactory.createMethod(
@@ -5589,6 +7191,14 @@
true),
new CfReturn(ValueType.OBJECT),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/OptionalInt;"))
+ }),
+ Arrays.asList()),
new CfInvoke(
184,
options.itemFactory.createMethod(
@@ -5643,6 +7253,14 @@
true),
new CfReturn(ValueType.OBJECT),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/OptionalLong;"))
+ }),
+ Arrays.asList()),
new CfInvoke(
184,
options.itemFactory.createMethod(
@@ -5757,6 +7375,11 @@
true),
new CfGoto(label2),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {FrameType.initialized(options.itemFactory.objectType)}),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 0),
new CfInvoke(
184,
@@ -5768,6 +7391,13 @@
options.itemFactory.createString("of")),
true),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {FrameType.initialized(options.itemFactory.objectType)}),
+ Arrays.asList(
+ FrameType.initialized(
+ options.itemFactory.createType("Ljava/util/stream/Stream;")))),
new CfReturn(ValueType.OBJECT),
label3),
ImmutableList.of(),
@@ -5804,6 +7434,15 @@
false),
new CfStore(ValueType.INT, 2),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 1),
new CfLoad(ValueType.INT, 2),
new CfIfCmp(If.Type.GE, ValueType.INT, label8),
@@ -5834,6 +7473,16 @@
new CfConstNumber(0, ValueType.INT),
new CfReturn(ValueType.INT),
label6,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 1),
new CfLoad(ValueType.INT, 3),
new CfInvoke(
@@ -5849,6 +7498,11 @@
label7,
new CfGoto(label2),
label8,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {FrameType.initialized(options.itemFactory.stringType)}),
+ Arrays.asList()),
new CfConstNumber(1, ValueType.INT),
new CfReturn(ValueType.INT),
label9),
@@ -5889,6 +7543,15 @@
false),
new CfThrow(),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.charSequenceType),
+ FrameType.initialized(
+ options.itemFactory.createType("[Ljava/lang/CharSequence;"))
+ }),
+ Arrays.asList()),
new CfNew(options.itemFactory.stringBuilderType),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
@@ -5922,6 +7585,17 @@
new CfConstNumber(1, ValueType.INT),
new CfStore(ValueType.INT, 3),
label5,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.charSequenceType),
+ FrameType.initialized(
+ options.itemFactory.createType("[Ljava/lang/CharSequence;")),
+ FrameType.initialized(options.itemFactory.stringBuilderType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 3),
new CfLoad(ValueType.OBJECT, 1),
new CfArrayLength(),
@@ -5958,6 +7632,16 @@
new CfIinc(3, 1),
new CfGoto(label5),
label9,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.charSequenceType),
+ FrameType.initialized(
+ options.itemFactory.createType("[Ljava/lang/CharSequence;")),
+ FrameType.initialized(options.itemFactory.stringBuilderType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 2),
new CfInvoke(
182,
@@ -6004,6 +7688,14 @@
false),
new CfThrow(),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.charSequenceType),
+ FrameType.initialized(options.itemFactory.createType("Ljava/lang/Iterable;"))
+ }),
+ Arrays.asList()),
new CfNew(options.itemFactory.stringBuilderType),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
@@ -6057,6 +7749,16 @@
false),
new CfStackInstruction(CfStackInstruction.Opcode.Pop),
label5,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.charSequenceType),
+ FrameType.initialized(options.itemFactory.createType("Ljava/lang/Iterable;")),
+ FrameType.initialized(options.itemFactory.stringBuilderType),
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/Iterator;"))
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 3),
new CfInvoke(
185,
@@ -6102,6 +7804,16 @@
new CfStackInstruction(CfStackInstruction.Opcode.Pop),
new CfGoto(label5),
label8,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.charSequenceType),
+ FrameType.initialized(options.itemFactory.createType("Ljava/lang/Iterable;")),
+ FrameType.initialized(options.itemFactory.stringBuilderType),
+ FrameType.initialized(options.itemFactory.createType("Ljava/util/Iterator;"))
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 2),
new CfInvoke(
182,
@@ -6186,6 +7898,14 @@
false),
new CfThrow(),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 0),
new CfInvoke(
182,
@@ -6201,9 +7921,27 @@
new CfLoad(ValueType.INT, 2),
new CfIf(If.Type.NE, ValueType.INT, label5),
label4,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfConstString(options.itemFactory.createString("")),
new CfReturn(ValueType.OBJECT),
label5,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 1),
new CfConstNumber(1, ValueType.INT),
new CfIfCmp(If.Type.NE, ValueType.INT, label7),
@@ -6211,6 +7949,15 @@
new CfLoad(ValueType.OBJECT, 0),
new CfReturn(ValueType.OBJECT),
label7,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfNew(options.itemFactory.stringBuilderType),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfLoad(ValueType.INT, 2),
@@ -6229,6 +7976,17 @@
new CfConstNumber(0, ValueType.INT),
new CfStore(ValueType.INT, 4),
label9,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3, 4},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.stringBuilderType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 4),
new CfLoad(ValueType.INT, 1),
new CfIfCmp(If.Type.GE, ValueType.INT, label12),
@@ -6248,6 +8006,16 @@
new CfIinc(4, 1),
new CfGoto(label9),
label12,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.stringBuilderType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 3),
new CfInvoke(
182,
@@ -6298,6 +8066,15 @@
false),
new CfStore(ValueType.INT, 2),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 1),
new CfLoad(ValueType.INT, 2),
new CfIfCmp(If.Type.GE, ValueType.INT, label8),
@@ -6327,6 +8104,16 @@
label5,
new CfGoto(label8),
label6,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 1),
new CfLoad(ValueType.INT, 3),
new CfInvoke(
@@ -6342,6 +8129,15 @@
label7,
new CfGoto(label2),
label8,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 2),
new CfLoad(ValueType.INT, 1),
new CfIfCmp(If.Type.LE, ValueType.INT, label14),
@@ -6373,6 +8169,16 @@
label11,
new CfGoto(label14),
label12,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 2),
new CfLoad(ValueType.INT, 3),
new CfInvoke(
@@ -6388,6 +8194,15 @@
label13,
new CfGoto(label8),
label14,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 0),
new CfLoad(ValueType.INT, 1),
new CfLoad(ValueType.INT, 2),
@@ -6437,6 +8252,15 @@
false),
new CfStore(ValueType.INT, 2),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 1),
new CfLoad(ValueType.INT, 2),
new CfIfCmp(If.Type.GE, ValueType.INT, label8),
@@ -6466,6 +8290,16 @@
label5,
new CfGoto(label8),
label6,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2, 3},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 1),
new CfLoad(ValueType.INT, 3),
new CfInvoke(
@@ -6481,6 +8315,15 @@
label7,
new CfGoto(label2),
label8,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 0),
new CfLoad(ValueType.INT, 1),
new CfLoad(ValueType.INT, 2),
@@ -6526,6 +8369,14 @@
false),
new CfStore(ValueType.INT, 1),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 1),
new CfIf(If.Type.LE, ValueType.INT, label7),
label2,
@@ -6556,6 +8407,15 @@
label4,
new CfGoto(label7),
label5,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 1),
new CfLoad(ValueType.INT, 2),
new CfInvoke(
@@ -6571,6 +8431,14 @@
label6,
new CfGoto(label1),
label7,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.stringType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 0),
new CfConstNumber(0, ValueType.INT),
new CfLoad(ValueType.INT, 1),
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingCfMethods.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingCfMethods.java
index a09ea37..daf1ad4 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingCfMethods.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingCfMethods.java
@@ -12,6 +12,8 @@
import com.android.tools.r8.cf.code.CfArrayLength;
import com.android.tools.r8.cf.code.CfArrayStore;
import com.android.tools.r8.cf.code.CfConstNumber;
+import com.android.tools.r8.cf.code.CfFrame;
+import com.android.tools.r8.cf.code.CfFrame.FrameType;
import com.android.tools.r8.cf.code.CfGoto;
import com.android.tools.r8.cf.code.CfIf;
import com.android.tools.r8.cf.code.CfIfCmp;
@@ -34,6 +36,8 @@
import com.android.tools.r8.ir.code.ValueType;
import com.android.tools.r8.utils.InternalOptions;
import com.google.common.collect.ImmutableList;
+import it.unimi.dsi.fastutil.ints.Int2ReferenceAVLTreeMap;
+import java.util.Arrays;
public final class EnumUnboxingCfMethods {
@@ -57,6 +61,14 @@
new CfLoad(ValueType.INT, 1),
new CfIf(If.Type.NE, ValueType.INT, label2),
label1,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfNew(options.itemFactory.createType("Ljava/lang/NullPointerException;")),
new CfStackInstruction(CfStackInstruction.Opcode.Dup),
new CfInvoke(
@@ -68,6 +80,14 @@
false),
new CfThrow(),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 0),
new CfLoad(ValueType.INT, 1),
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Sub, NumericType.INT),
@@ -104,14 +124,38 @@
false),
new CfThrow(),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 0),
new CfLoad(ValueType.INT, 1),
new CfIfCmp(If.Type.NE, ValueType.INT, label3),
new CfConstNumber(1, ValueType.INT),
new CfGoto(label4),
label3,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfConstNumber(0, ValueType.INT),
label4,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList(FrameType.initialized(options.itemFactory.intType))),
new CfReturn(ValueType.INT),
label5),
ImmutableList.of(),
@@ -143,6 +187,11 @@
false),
new CfThrow(),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0},
+ new FrameType[] {FrameType.initialized(options.itemFactory.intType)}),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 0),
new CfConstNumber(1, ValueType.INT),
new CfArithmeticBinop(CfArithmeticBinop.Opcode.Sub, NumericType.INT),
@@ -173,6 +222,15 @@
new CfConstNumber(0, ValueType.INT),
new CfStore(ValueType.INT, 2),
label2,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1, 2},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intArrayType),
+ FrameType.initialized(options.itemFactory.intType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.INT, 2),
new CfLoad(ValueType.OBJECT, 1),
new CfArrayLength(),
@@ -188,6 +246,14 @@
new CfIinc(2, 1),
new CfGoto(label2),
label5,
+ new CfFrame(
+ new Int2ReferenceAVLTreeMap<>(
+ new int[] {0, 1},
+ new FrameType[] {
+ FrameType.initialized(options.itemFactory.intType),
+ FrameType.initialized(options.itemFactory.intArrayType)
+ }),
+ Arrays.asList()),
new CfLoad(ValueType.OBJECT, 1),
new CfReturn(ValueType.OBJECT),
label6),
diff --git a/src/test/java/com/android/tools/r8/cfmethodgeneration/MethodGenerationBase.java b/src/test/java/com/android/tools/r8/cfmethodgeneration/MethodGenerationBase.java
index 164259f..e190074 100644
--- a/src/test/java/com/android/tools/r8/cfmethodgeneration/MethodGenerationBase.java
+++ b/src/test/java/com/android/tools/r8/cfmethodgeneration/MethodGenerationBase.java
@@ -28,6 +28,7 @@
import java.util.Calendar;
import java.util.List;
import java.util.TreeSet;
+import java.util.function.Consumer;
public abstract class MethodGenerationBase extends TestBase {
@@ -74,17 +75,18 @@
}
// Running this method will regenerate / overwrite the content of the generated class.
- protected void generateMethodsAndWriteThemToFile() throws IOException {
- FileUtils.writeToFile(getGeneratedFile(), null, generateMethods().getBytes());
+ protected void generateMethodsAndWriteThemToFile(Consumer<InternalOptions> optionsConsumer)
+ throws IOException {
+ FileUtils.writeToFile(getGeneratedFile(), null, generateMethods(optionsConsumer).getBytes());
}
// Running this method generate the content of the generated class but does not overwrite it.
- protected String generateMethods() throws IOException {
+ protected String generateMethods(Consumer<InternalOptions> optionsConsumer) throws IOException {
CfCodePrinter codePrinter = new CfCodePrinter();
File tempFile = File.createTempFile("output-", ".java");
- readMethodTemplatesInto(codePrinter);
+ readMethodTemplatesInto(codePrinter, optionsConsumer);
generateRawOutput(codePrinter, tempFile.toPath());
String result = formatRawOutput(tempFile.toPath());
@@ -92,8 +94,10 @@
return result;
}
- private void readMethodTemplatesInto(CfCodePrinter codePrinter) throws IOException {
+ private void readMethodTemplatesInto(
+ CfCodePrinter codePrinter, Consumer<InternalOptions> optionsConsumer) throws IOException {
InternalOptions options = new InternalOptions();
+ optionsConsumer.accept(options);
JarClassFileReader reader =
new JarClassFileReader(
new JarApplicationReader(options),
diff --git a/src/test/java/com/android/tools/r8/enumunboxing/GenerateEnumUnboxingMethods.java b/src/test/java/com/android/tools/r8/enumunboxing/GenerateEnumUnboxingMethods.java
index 706cdc7..4abe533 100644
--- a/src/test/java/com/android/tools/r8/enumunboxing/GenerateEnumUnboxingMethods.java
+++ b/src/test/java/com/android/tools/r8/enumunboxing/GenerateEnumUnboxingMethods.java
@@ -11,6 +11,7 @@
import com.android.tools.r8.cfmethodgeneration.MethodGenerationBase;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.utils.FileUtils;
+import com.android.tools.r8.utils.InternalOptions;
import com.google.common.collect.ImmutableList;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
@@ -50,16 +51,22 @@
return METHOD_TEMPLATE_CLASSES;
}
+ private static void setReadInputStackMap(InternalOptions options) {
+ options.testing.readInputStackMaps = true;
+ }
+
@Test
public void testEnumUtilityMethodsGenerated() throws Exception {
ArrayList<Class<?>> sorted = new ArrayList<>(getMethodTemplateClasses());
sorted.sort(Comparator.comparing(Class::getTypeName));
assertEquals("Classes should be listed in sorted order", sorted, getMethodTemplateClasses());
assertEquals(
- FileUtils.readTextFile(getGeneratedFile(), StandardCharsets.UTF_8), generateMethods());
+ FileUtils.readTextFile(getGeneratedFile(), StandardCharsets.UTF_8),
+ generateMethods(GenerateEnumUnboxingMethods::setReadInputStackMap));
}
public static void main(String[] args) throws Exception {
- new GenerateEnumUnboxingMethods(null).generateMethodsAndWriteThemToFile();
+ new GenerateEnumUnboxingMethods(null)
+ .generateMethodsAndWriteThemToFile(GenerateEnumUnboxingMethods::setReadInputStackMap);
}
}
diff --git a/src/test/java/com/android/tools/r8/ir/desugar/backports/GenerateBackportMethods.java b/src/test/java/com/android/tools/r8/ir/desugar/backports/GenerateBackportMethods.java
index 05c11c4..cd417d1 100644
--- a/src/test/java/com/android/tools/r8/ir/desugar/backports/GenerateBackportMethods.java
+++ b/src/test/java/com/android/tools/r8/ir/desugar/backports/GenerateBackportMethods.java
@@ -12,6 +12,7 @@
import com.android.tools.r8.cfmethodgeneration.MethodGenerationBase;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.utils.FileUtils;
+import com.android.tools.r8.utils.InternalOptions;
import com.google.common.collect.ImmutableList;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
@@ -68,16 +69,22 @@
return METHOD_TEMPLATE_CLASSES;
}
+ private static void setReadInputStackMap(InternalOptions options) {
+ options.testing.readInputStackMaps = true;
+ }
+
@Test
public void testBackportsGenerated() throws Exception {
ArrayList<Class<?>> sorted = new ArrayList<>(getMethodTemplateClasses());
sorted.sort(Comparator.comparing(Class::getTypeName));
assertEquals("Classes should be listed in sorted order", sorted, getMethodTemplateClasses());
assertEquals(
- FileUtils.readTextFile(getGeneratedFile(), StandardCharsets.UTF_8), generateMethods());
+ FileUtils.readTextFile(getGeneratedFile(), StandardCharsets.UTF_8),
+ generateMethods(GenerateBackportMethods::setReadInputStackMap));
}
public static void main(String[] args) throws Exception {
- new GenerateBackportMethods(null).generateMethodsAndWriteThemToFile();
+ new GenerateBackportMethods(null)
+ .generateMethodsAndWriteThemToFile(GenerateBackportMethods::setReadInputStackMap);
}
}