summaryrefslogtreecommitdiff
path: root/src/proguard/optimize/peephole/InstructionSequenceConstants.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/proguard/optimize/peephole/InstructionSequenceConstants.java')
-rw-r--r--src/proguard/optimize/peephole/InstructionSequenceConstants.java5090
1 files changed, 0 insertions, 5090 deletions
diff --git a/src/proguard/optimize/peephole/InstructionSequenceConstants.java b/src/proguard/optimize/peephole/InstructionSequenceConstants.java
deleted file mode 100644
index df96dda..0000000
--- a/src/proguard/optimize/peephole/InstructionSequenceConstants.java
+++ /dev/null
@@ -1,5090 +0,0 @@
-/*
- * ProGuard -- shrinking, optimization, obfuscation, and preverification
- * of Java bytecode.
- *
- * Copyright (c) 2002-2014 Eric Lafortune (eric@graphics.cornell.edu)
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-package proguard.optimize.peephole;
-
-import proguard.classfile.*;
-import proguard.classfile.constant.*;
-import proguard.classfile.instruction.*;
-import proguard.classfile.visitor.ClassPrinter;
-
-/**
- * This class contains a set of instruction sequences and their suggested
- * replacements.
- *
- * @see InstructionSequencesReplacer
- * @see InstructionSequenceReplacer
- * @author Eric Lafortune
- */
-public class InstructionSequenceConstants
-{
- private static final int X = InstructionSequenceReplacer.X;
- private static final int Y = InstructionSequenceReplacer.Y;
- private static final int Z = InstructionSequenceReplacer.Z;
-
- private static final int A = InstructionSequenceReplacer.A;
- private static final int B = InstructionSequenceReplacer.B;
- private static final int C = InstructionSequenceReplacer.C;
- private static final int D = InstructionSequenceReplacer.D;
-
- private static final int STRING_A_LENGTH = InstructionSequenceReplacer.STRING_A_LENGTH;
- private static final int BOOLEAN_A_STRING = InstructionSequenceReplacer.BOOLEAN_A_STRING;
- private static final int CHAR_A_STRING = InstructionSequenceReplacer.CHAR_A_STRING;
- private static final int INT_A_STRING = InstructionSequenceReplacer.INT_A_STRING;
- private static final int LONG_A_STRING = InstructionSequenceReplacer.LONG_A_STRING;
- private static final int FLOAT_A_STRING = InstructionSequenceReplacer.FLOAT_A_STRING;
- private static final int DOUBLE_A_STRING = InstructionSequenceReplacer.DOUBLE_A_STRING;
- private static final int STRING_A_STRING = InstructionSequenceReplacer.STRING_A_STRING;
- private static final int BOOLEAN_B_STRING = InstructionSequenceReplacer.BOOLEAN_B_STRING;
- private static final int CHAR_B_STRING = InstructionSequenceReplacer.CHAR_B_STRING;
- private static final int INT_B_STRING = InstructionSequenceReplacer.INT_B_STRING;
- private static final int LONG_B_STRING = InstructionSequenceReplacer.LONG_B_STRING;
- private static final int FLOAT_B_STRING = InstructionSequenceReplacer.FLOAT_B_STRING;
- private static final int DOUBLE_B_STRING = InstructionSequenceReplacer.DOUBLE_B_STRING;
- private static final int STRING_B_STRING = InstructionSequenceReplacer.STRING_B_STRING;
-
- private static final int I_32768 = 0;
- private static final int I_65536 = 1;
- private static final int I_16777216 = 2;
-
-// private static final int I_0x000000ff
- private static final int I_0x0000ff00 = 3;
- private static final int I_0x00ff0000 = 4;
- private static final int I_0xff000000 = 5;
- private static final int I_0x0000ffff = 6;
- private static final int I_0xffff0000 = 7;
-
- private static final int L_M1 = 8;
- private static final int L_2 = 9;
- private static final int L_4 = 10;
- private static final int L_8 = 11;
- private static final int L_16 = 12;
- private static final int L_32 = 13;
- private static final int L_64 = 14;
- private static final int L_128 = 15;
- private static final int L_256 = 16;
- private static final int L_512 = 17;
- private static final int L_1024 = 18;
- private static final int L_2048 = 19;
- private static final int L_4096 = 20;
- private static final int L_8192 = 21;
- private static final int L_16384 = 22;
- private static final int L_32768 = 23;
- private static final int L_65536 = 24;
- private static final int L_16777216 = 25;
- private static final int L_4294967296 = 26;
-
- private static final int L_0x00000000ffffffff = 27;
- private static final int L_0xffffffff00000000 = 28;
-
- private static final int F_M1 = 29;
-
- private static final int D_M1 = 30;
-
- private static final int STRING_EMPTY = 31;
-
- private static final int FIELD_I = 32; // Implicitly uses X and Y.
- private static final int FIELD_L = 33; // Implicitly uses X and Y.
- private static final int FIELD_F = 34; // Implicitly uses X and Y.
- private static final int FIELD_D = 35; // Implicitly uses X and Y.
-
- private static final int METHOD_STRING_EQUALS = 36;
- private static final int METHOD_STRING_LENGTH = 37;
- private static final int METHOD_STRING_VALUEOF_Z = 38;
- private static final int METHOD_STRING_VALUEOF_C = 39;
- private static final int METHOD_STRING_VALUEOF_I = 40;
- private static final int METHOD_STRING_VALUEOF_J = 41;
- private static final int METHOD_STRING_VALUEOF_F = 42;
- private static final int METHOD_STRING_VALUEOF_D = 43;
- private static final int METHOD_STRING_VALUEOF_OBJECT = 44;
- private static final int METHOD_STRINGBUFFER_INIT = 45;
- private static final int METHOD_STRINGBUFFER_INIT_STRING = 46;
- private static final int METHOD_STRINGBUFFER_APPEND_Z = 47;
- private static final int METHOD_STRINGBUFFER_APPEND_C = 48;
- private static final int METHOD_STRINGBUFFER_APPEND_I = 49;
- private static final int METHOD_STRINGBUFFER_APPEND_J = 50;
- private static final int METHOD_STRINGBUFFER_APPEND_F = 51;
- private static final int METHOD_STRINGBUFFER_APPEND_D = 52;
- private static final int METHOD_STRINGBUFFER_APPEND_STRING = 53;
- private static final int METHOD_STRINGBUFFER_APPEND_OBJECT = 54;
- private static final int METHOD_STRINGBUFFER_LENGTH = 55;
- private static final int METHOD_STRINGBUFFER_TOSTRING = 56;
- private static final int METHOD_STRINGBUILDER_INIT = 57;
- private static final int METHOD_STRINGBUILDER_INIT_STRING = 58;
- private static final int METHOD_STRINGBUILDER_APPEND_Z = 59;
- private static final int METHOD_STRINGBUILDER_APPEND_C = 60;
- private static final int METHOD_STRINGBUILDER_APPEND_I = 61;
- private static final int METHOD_STRINGBUILDER_APPEND_J = 62;
- private static final int METHOD_STRINGBUILDER_APPEND_F = 63;
- private static final int METHOD_STRINGBUILDER_APPEND_D = 64;
- private static final int METHOD_STRINGBUILDER_APPEND_STRING = 65;
- private static final int METHOD_STRINGBUILDER_APPEND_OBJECT = 66;
- private static final int METHOD_STRINGBUILDER_LENGTH = 67;
- private static final int METHOD_STRINGBUILDER_TOSTRING = 68;
-
- private static final int CLASS_STRING = 69;
- private static final int CLASS_STRINGBUFFER = 70;
- private static final int CLASS_STRINGBUILDER = 71;
-
- private static final int NAME_AND_TYPE_I = 72; // Implicitly uses Y.
- private static final int NAME_AND_TYPE_L = 73; // Implicitly uses Y.
- private static final int NAME_AND_TYPE_F = 74; // Implicitly uses Y.
- private static final int NAME_AND_TYPE_D = 75; // Implicitly uses Y.
-
- private static final int NAME_AND_TYPE_EQUALS = 76;
- private static final int NAME_AND_TYPE_LENGTH = 77;
- private static final int NAME_AND_TYPE_VALUEOF_Z = 78;
- private static final int NAME_AND_TYPE_VALUEOF_C = 79;
- private static final int NAME_AND_TYPE_VALUEOF_I = 80;
- private static final int NAME_AND_TYPE_VALUEOF_J = 81;
- private static final int NAME_AND_TYPE_VALUEOF_F = 82;
- private static final int NAME_AND_TYPE_VALUEOF_D = 83;
- private static final int NAME_AND_TYPE_VALUEOF_OBJECT = 84;
- private static final int NAME_AND_TYPE_INIT = 85;
- private static final int NAME_AND_TYPE_INIT_STRING = 86;
- private static final int NAME_AND_TYPE_APPEND_Z_STRINGBUFFER = 87;
- private static final int NAME_AND_TYPE_APPEND_C_STRINGBUFFER = 88;
- private static final int NAME_AND_TYPE_APPEND_I_STRINGBUFFER = 89;
- private static final int NAME_AND_TYPE_APPEND_J_STRINGBUFFER = 90;
- private static final int NAME_AND_TYPE_APPEND_F_STRINGBUFFER = 91;
- private static final int NAME_AND_TYPE_APPEND_D_STRINGBUFFER = 92;
- private static final int NAME_AND_TYPE_APPEND_STRING_STRINGBUFFER = 93;
- private static final int NAME_AND_TYPE_APPEND_OBJECT_STRINGBUFFER = 94;
- private static final int NAME_AND_TYPE_APPEND_Z_STRINGBUILDER = 95;
- private static final int NAME_AND_TYPE_APPEND_C_STRINGBUILDER = 96;
- private static final int NAME_AND_TYPE_APPEND_I_STRINGBUILDER = 97;
- private static final int NAME_AND_TYPE_APPEND_J_STRINGBUILDER = 98;
- private static final int NAME_AND_TYPE_APPEND_F_STRINGBUILDER = 99;
- private static final int NAME_AND_TYPE_APPEND_D_STRINGBUILDER = 100;
- private static final int NAME_AND_TYPE_APPEND_STRING_STRINGBUILDER = 101;
- private static final int NAME_AND_TYPE_APPEND_OBJECT_STRINGBUILDER = 102;
- private static final int NAME_AND_TYPE_TOSTRING = 103;
-
- private static final int UTF8_EMPTY = 104;
- private static final int UTF8_I = 105;
- private static final int UTF8_L = 106;
- private static final int UTF8_F = 107;
- private static final int UTF8_D = 108;
- private static final int UTF8_STRING = 109;
- private static final int UTF8_STRINGBUFFER = 110;
- private static final int UTF8_STRINGBUILDER = 111;
- private static final int UTF8_EQUALS = 112;
- private static final int UTF8_OBJECT_Z = 113;
- private static final int UTF8_LENGTH = 114;
- private static final int UTF8__I = 115;
- private static final int UTF8_VALUEOF = 116;
- private static final int UTF8_Z_STRING = 117;
- private static final int UTF8_C_STRING = 118;
- private static final int UTF8_I_STRING = 119;
- private static final int UTF8_J_STRING = 120;
- private static final int UTF8_F_STRING = 121;
- private static final int UTF8_D_STRING = 122;
- private static final int UTF8_OBJECT_STRING = 123;
- private static final int UTF8_INIT = 124;
- private static final int UTF8__VOID = 125;
- private static final int UTF8_STRING_VOID = 126;
- private static final int UTF8_TOSTRING = 127;
- private static final int UTF8__STRING = 128;
- private static final int UTF8_APPEND = 129;
- private static final int UTF8_Z_STRINGBUFFER = 130;
- private static final int UTF8_C_STRINGBUFFER = 131;
- private static final int UTF8_I_STRINGBUFFER = 132;
- private static final int UTF8_J_STRINGBUFFER = 133;
- private static final int UTF8_F_STRINGBUFFER = 134;
- private static final int UTF8_D_STRINGBUFFER = 135;
- private static final int UTF8_STRING_STRINGBUFFER = 136;
- private static final int UTF8_OBJECT_STRINGBUFFER = 137;
- private static final int UTF8_Z_STRINGBUILDER = 138;
- private static final int UTF8_C_STRINGBUILDER = 139;
- private static final int UTF8_I_STRINGBUILDER = 140;
- private static final int UTF8_J_STRINGBUILDER = 141;
- private static final int UTF8_F_STRINGBUILDER = 142;
- private static final int UTF8_D_STRINGBUILDER = 143;
- private static final int UTF8_STRING_STRINGBUILDER = 144;
- private static final int UTF8_OBJECT_STRINGBUILDER = 145;
-
- private static final int SENTINEL = 146;
-
-
- public static final Constant[] CONSTANTS = new Constant[]
- {
- new IntegerConstant(32768),
- new IntegerConstant(65536),
- new IntegerConstant(16777216),
-
- new IntegerConstant(0x0000ff00),
- new IntegerConstant(0x00ff0000),
- new IntegerConstant(0xff000000),
- new IntegerConstant(0x0000ffff),
- new IntegerConstant(0xffff0000),
-
- new LongConstant(-1L),
- new LongConstant(2L),
- new LongConstant(4L),
- new LongConstant(8L),
- new LongConstant(16L),
- new LongConstant(32L),
- new LongConstant(64L),
- new LongConstant(128L),
- new LongConstant(256L),
- new LongConstant(512L),
- new LongConstant(1024L),
- new LongConstant(2048L),
- new LongConstant(4096L),
- new LongConstant(8192L),
- new LongConstant(16384L),
- new LongConstant(32768L),
- new LongConstant(65536L),
- new LongConstant(16777216L),
- new LongConstant(4294967296L),
-
- new LongConstant(0x00000000ffffffffL),
- new LongConstant(0xffffffff00000000L),
-
- new FloatConstant(-1f),
-
- new DoubleConstant(-1d),
-
- new StringConstant(UTF8_EMPTY, null, null),
-
- new FieldrefConstant(X, NAME_AND_TYPE_I, null, null),
- new FieldrefConstant(X, NAME_AND_TYPE_L, null, null),
- new FieldrefConstant(X, NAME_AND_TYPE_F, null, null),
- new FieldrefConstant(X, NAME_AND_TYPE_D, null, null),
-
- new MethodrefConstant(CLASS_STRING, NAME_AND_TYPE_EQUALS, null, null),
- new MethodrefConstant(CLASS_STRING, NAME_AND_TYPE_LENGTH, null, null),
- new MethodrefConstant(CLASS_STRING, NAME_AND_TYPE_VALUEOF_Z, null, null),
- new MethodrefConstant(CLASS_STRING, NAME_AND_TYPE_VALUEOF_C, null, null),
- new MethodrefConstant(CLASS_STRING, NAME_AND_TYPE_VALUEOF_I, null, null),
- new MethodrefConstant(CLASS_STRING, NAME_AND_TYPE_VALUEOF_J, null, null),
- new MethodrefConstant(CLASS_STRING, NAME_AND_TYPE_VALUEOF_F, null, null),
- new MethodrefConstant(CLASS_STRING, NAME_AND_TYPE_VALUEOF_D, null, null),
- new MethodrefConstant(CLASS_STRING, NAME_AND_TYPE_VALUEOF_OBJECT, null, null),
- new MethodrefConstant(CLASS_STRINGBUFFER, NAME_AND_TYPE_INIT, null, null),
- new MethodrefConstant(CLASS_STRINGBUFFER, NAME_AND_TYPE_INIT_STRING, null, null),
- new MethodrefConstant(CLASS_STRINGBUFFER, NAME_AND_TYPE_APPEND_Z_STRINGBUFFER, null, null),
- new MethodrefConstant(CLASS_STRINGBUFFER, NAME_AND_TYPE_APPEND_C_STRINGBUFFER, null, null),
- new MethodrefConstant(CLASS_STRINGBUFFER, NAME_AND_TYPE_APPEND_I_STRINGBUFFER, null, null),
- new MethodrefConstant(CLASS_STRINGBUFFER, NAME_AND_TYPE_APPEND_J_STRINGBUFFER, null, null),
- new MethodrefConstant(CLASS_STRINGBUFFER, NAME_AND_TYPE_APPEND_F_STRINGBUFFER, null, null),
- new MethodrefConstant(CLASS_STRINGBUFFER, NAME_AND_TYPE_APPEND_D_STRINGBUFFER, null, null),
- new MethodrefConstant(CLASS_STRINGBUFFER, NAME_AND_TYPE_APPEND_STRING_STRINGBUFFER, null, null),
- new MethodrefConstant(CLASS_STRINGBUFFER, NAME_AND_TYPE_APPEND_OBJECT_STRINGBUFFER, null, null),
- new MethodrefConstant(CLASS_STRINGBUFFER, NAME_AND_TYPE_LENGTH, null, null),
- new MethodrefConstant(CLASS_STRINGBUFFER, NAME_AND_TYPE_TOSTRING, null, null),
- new MethodrefConstant(CLASS_STRINGBUILDER, NAME_AND_TYPE_INIT, null, null),
- new MethodrefConstant(CLASS_STRINGBUILDER, NAME_AND_TYPE_INIT_STRING, null, null),
- new MethodrefConstant(CLASS_STRINGBUILDER, NAME_AND_TYPE_APPEND_Z_STRINGBUILDER, null, null),
- new MethodrefConstant(CLASS_STRINGBUILDER, NAME_AND_TYPE_APPEND_C_STRINGBUILDER, null, null),
- new MethodrefConstant(CLASS_STRINGBUILDER, NAME_AND_TYPE_APPEND_I_STRINGBUILDER, null, null),
- new MethodrefConstant(CLASS_STRINGBUILDER, NAME_AND_TYPE_APPEND_J_STRINGBUILDER, null, null),
- new MethodrefConstant(CLASS_STRINGBUILDER, NAME_AND_TYPE_APPEND_F_STRINGBUILDER, null, null),
- new MethodrefConstant(CLASS_STRINGBUILDER, NAME_AND_TYPE_APPEND_D_STRINGBUILDER, null, null),
- new MethodrefConstant(CLASS_STRINGBUILDER, NAME_AND_TYPE_APPEND_STRING_STRINGBUILDER, null, null),
- new MethodrefConstant(CLASS_STRINGBUILDER, NAME_AND_TYPE_APPEND_OBJECT_STRINGBUILDER, null, null),
- new MethodrefConstant(CLASS_STRINGBUILDER, NAME_AND_TYPE_LENGTH, null, null),
- new MethodrefConstant(CLASS_STRINGBUILDER, NAME_AND_TYPE_TOSTRING, null, null),
-
- new ClassConstant(UTF8_STRING, null),
- new ClassConstant(UTF8_STRINGBUFFER, null),
- new ClassConstant(UTF8_STRINGBUILDER, null),
-
- new NameAndTypeConstant(Y, UTF8_I),
- new NameAndTypeConstant(Y, UTF8_L),
- new NameAndTypeConstant(Y, UTF8_F),
- new NameAndTypeConstant(Y, UTF8_D),
- new NameAndTypeConstant(UTF8_EQUALS, UTF8_OBJECT_Z),
- new NameAndTypeConstant(UTF8_LENGTH, UTF8__I),
- new NameAndTypeConstant(UTF8_VALUEOF, UTF8_Z_STRING),
- new NameAndTypeConstant(UTF8_VALUEOF, UTF8_C_STRING),
- new NameAndTypeConstant(UTF8_VALUEOF, UTF8_I_STRING),
- new NameAndTypeConstant(UTF8_VALUEOF, UTF8_J_STRING),
- new NameAndTypeConstant(UTF8_VALUEOF, UTF8_F_STRING),
- new NameAndTypeConstant(UTF8_VALUEOF, UTF8_D_STRING),
- new NameAndTypeConstant(UTF8_VALUEOF, UTF8_OBJECT_STRING),
- new NameAndTypeConstant(UTF8_INIT, UTF8__VOID),
- new NameAndTypeConstant(UTF8_INIT, UTF8_STRING_VOID),
- new NameAndTypeConstant(UTF8_APPEND, UTF8_Z_STRINGBUFFER),
- new NameAndTypeConstant(UTF8_APPEND, UTF8_C_STRINGBUFFER),
- new NameAndTypeConstant(UTF8_APPEND, UTF8_I_STRINGBUFFER),
- new NameAndTypeConstant(UTF8_APPEND, UTF8_J_STRINGBUFFER),
- new NameAndTypeConstant(UTF8_APPEND, UTF8_F_STRINGBUFFER),
- new NameAndTypeConstant(UTF8_APPEND, UTF8_D_STRINGBUFFER),
- new NameAndTypeConstant(UTF8_APPEND, UTF8_STRING_STRINGBUFFER),
- new NameAndTypeConstant(UTF8_APPEND, UTF8_OBJECT_STRINGBUFFER),
- new NameAndTypeConstant(UTF8_APPEND, UTF8_Z_STRINGBUILDER),
- new NameAndTypeConstant(UTF8_APPEND, UTF8_C_STRINGBUILDER),
- new NameAndTypeConstant(UTF8_APPEND, UTF8_I_STRINGBUILDER),
- new NameAndTypeConstant(UTF8_APPEND, UTF8_J_STRINGBUILDER),
- new NameAndTypeConstant(UTF8_APPEND, UTF8_F_STRINGBUILDER),
- new NameAndTypeConstant(UTF8_APPEND, UTF8_D_STRINGBUILDER),
- new NameAndTypeConstant(UTF8_APPEND, UTF8_STRING_STRINGBUILDER),
- new NameAndTypeConstant(UTF8_APPEND, UTF8_OBJECT_STRINGBUILDER),
- new NameAndTypeConstant(UTF8_TOSTRING, UTF8__STRING),
-
- new Utf8Constant(""),
- new Utf8Constant("I"),
- new Utf8Constant("J"),
- new Utf8Constant("F"),
- new Utf8Constant("D"),
- new Utf8Constant(ClassConstants.NAME_JAVA_LANG_STRING),
- new Utf8Constant(ClassConstants.NAME_JAVA_LANG_STRING_BUFFER),
- new Utf8Constant(ClassConstants.NAME_JAVA_LANG_STRING_BUILDER),
- new Utf8Constant(ClassConstants.METHOD_NAME_EQUALS),
- new Utf8Constant(ClassConstants.METHOD_TYPE_EQUALS),
- new Utf8Constant(ClassConstants.METHOD_NAME_LENGTH),
- new Utf8Constant(ClassConstants.METHOD_TYPE_LENGTH),
- new Utf8Constant(ClassConstants.METHOD_NAME_VALUEOF),
- new Utf8Constant(ClassConstants.METHOD_TYPE_VALUEOF_BOOLEAN),
- new Utf8Constant(ClassConstants.METHOD_TYPE_VALUEOF_CHAR),
- new Utf8Constant(ClassConstants.METHOD_TYPE_VALUEOF_INT),
- new Utf8Constant(ClassConstants.METHOD_TYPE_VALUEOF_LONG),
- new Utf8Constant(ClassConstants.METHOD_TYPE_VALUEOF_FLOAT),
- new Utf8Constant(ClassConstants.METHOD_TYPE_VALUEOF_DOUBLE),
- new Utf8Constant(ClassConstants.METHOD_TYPE_VALUEOF_OBJECT),
- new Utf8Constant(ClassConstants.METHOD_NAME_INIT),
- new Utf8Constant(ClassConstants.METHOD_TYPE_INIT),
- new Utf8Constant(ClassConstants.METHOD_TYPE_STRING_VOID),
- new Utf8Constant(ClassConstants.METHOD_NAME_TOSTRING),
- new Utf8Constant(ClassConstants.METHOD_TYPE_TOSTRING),
- new Utf8Constant(ClassConstants.METHOD_NAME_APPEND),
- new Utf8Constant(ClassConstants.METHOD_TYPE_BOOLEAN_STRING_BUFFER),
- new Utf8Constant(ClassConstants.METHOD_TYPE_CHAR_STRING_BUFFER),
- new Utf8Constant(ClassConstants.METHOD_TYPE_INT_STRING_BUFFER),
- new Utf8Constant(ClassConstants.METHOD_TYPE_LONG_STRING_BUFFER),
- new Utf8Constant(ClassConstants.METHOD_TYPE_FLOAT_STRING_BUFFER),
- new Utf8Constant(ClassConstants.METHOD_TYPE_DOUBLE_STRING_BUFFER),
- new Utf8Constant(ClassConstants.METHOD_TYPE_STRING_STRING_BUFFER),
- new Utf8Constant(ClassConstants.METHOD_TYPE_OBJECT_STRING_BUFFER),
- new Utf8Constant(ClassConstants.METHOD_TYPE_BOOLEAN_STRING_BUILDER),
- new Utf8Constant(ClassConstants.METHOD_TYPE_CHAR_STRING_BUILDER),
- new Utf8Constant(ClassConstants.METHOD_TYPE_INT_STRING_BUILDER),
- new Utf8Constant(ClassConstants.METHOD_TYPE_LONG_STRING_BUILDER),
- new Utf8Constant(ClassConstants.METHOD_TYPE_FLOAT_STRING_BUILDER),
- new Utf8Constant(ClassConstants.METHOD_TYPE_DOUBLE_STRING_BUILDER),
- new Utf8Constant(ClassConstants.METHOD_TYPE_STRING_STRING_BUILDER),
- new Utf8Constant(ClassConstants.METHOD_TYPE_OBJECT_STRING_BUILDER),
- };
-
- public static final Instruction[][][] VARIABLE = new Instruction[][][]
- {
- { // nop = nothing
- {
- new SimpleInstruction(InstructionConstants.OP_NOP),
- },{
- // Nothing.
- },
- },
- { // iload/pop = nothing
- {
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- // Nothing.
- },
- },
- { // lload/pop2 = nothing
- {
- new VariableInstruction(InstructionConstants.OP_LLOAD, X),
- new SimpleInstruction(InstructionConstants.OP_POP2),
- },{
- // Nothing.
- },
- },
- { // fload/pop = nothing
- {
- new VariableInstruction(InstructionConstants.OP_FLOAD, X),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- // Nothing.
- },
- },
- { // dload/pop2 = nothing
- {
- new VariableInstruction(InstructionConstants.OP_DLOAD, X),
- new SimpleInstruction(InstructionConstants.OP_POP2),
- },{
- // Nothing.
- },
- },
- { // aload/pop = nothing
- {
- new VariableInstruction(InstructionConstants.OP_ALOAD, X),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- // Nothing.
- },
- },
- { // i = i = nothing
- {
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new VariableInstruction(InstructionConstants.OP_ISTORE, X),
- },{
- // Nothing.
- },
- },
- { // l = l = nothing
- {
- new VariableInstruction(InstructionConstants.OP_LLOAD, X),
- new VariableInstruction(InstructionConstants.OP_LSTORE, X),
- },{
- // Nothing.
- },
- },
- { // f = f = nothing
- {
- new VariableInstruction(InstructionConstants.OP_FLOAD, X),
- new VariableInstruction(InstructionConstants.OP_FSTORE, X),
- },{
- // Nothing.
- },
- },
- { // d = d = nothing
- {
- new VariableInstruction(InstructionConstants.OP_DLOAD, X),
- new VariableInstruction(InstructionConstants.OP_DSTORE, X),
- },{
- // Nothing.
- },
- },
- { // a = a = nothing
- {
- new VariableInstruction(InstructionConstants.OP_ALOAD, X),
- new VariableInstruction(InstructionConstants.OP_ASTORE, X),
- },{
- // Nothing.
- },
- },
- { // istore/istore = pop/istore
- {
- new VariableInstruction(InstructionConstants.OP_ISTORE, X),
- new VariableInstruction(InstructionConstants.OP_ISTORE, X),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP),
- new VariableInstruction(InstructionConstants.OP_ISTORE, X),
- },
- },
- { // lstore/lstore = pop2/lstore
- {
- new VariableInstruction(InstructionConstants.OP_LSTORE, X),
- new VariableInstruction(InstructionConstants.OP_LSTORE, X),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP2),
- new VariableInstruction(InstructionConstants.OP_LSTORE, X),
- },
- },
- { // fstore/fstore = pop/fstore
- {
- new VariableInstruction(InstructionConstants.OP_FSTORE, X),
- new VariableInstruction(InstructionConstants.OP_FSTORE, X),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP),
- new VariableInstruction(InstructionConstants.OP_FSTORE, X),
- },
- },
- { // dstore/dstore = pop2/dstore
- {
- new VariableInstruction(InstructionConstants.OP_DSTORE, X),
- new VariableInstruction(InstructionConstants.OP_DSTORE, X),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP2),
- new VariableInstruction(InstructionConstants.OP_DSTORE, X),
- },
- },
- { // astore/astore = pop/astore
- {
- new VariableInstruction(InstructionConstants.OP_ASTORE, X),
- new VariableInstruction(InstructionConstants.OP_ASTORE, X),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP),
- new VariableInstruction(InstructionConstants.OP_ASTORE, X),
- },
- },
- { // istore/iload = dup/istore
- {
- new VariableInstruction(InstructionConstants.OP_ISTORE, X),
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- },{
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new VariableInstruction(InstructionConstants.OP_ISTORE, X),
- },
- },
- { // lstore/lload = dup2/lstore
- {
- new VariableInstruction(InstructionConstants.OP_LSTORE, X),
- new VariableInstruction(InstructionConstants.OP_LLOAD, X),
- },{
- new SimpleInstruction(InstructionConstants.OP_DUP2),
- new VariableInstruction(InstructionConstants.OP_LSTORE, X),
- },
- },
- { // fstore/fload = dup/fstore
- {
- new VariableInstruction(InstructionConstants.OP_FSTORE, X),
- new VariableInstruction(InstructionConstants.OP_FLOAD, X),
- },{
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new VariableInstruction(InstructionConstants.OP_FSTORE, X),
- },
- },
- { // dstore/dload = dup2/dstore
- {
- new VariableInstruction(InstructionConstants.OP_DSTORE, X),
- new VariableInstruction(InstructionConstants.OP_DLOAD, X),
- },{
- new SimpleInstruction(InstructionConstants.OP_DUP2),
- new VariableInstruction(InstructionConstants.OP_DSTORE, X),
- },
- },
- { // astore/aload = dup/astore
- {
- new VariableInstruction(InstructionConstants.OP_ASTORE, X),
- new VariableInstruction(InstructionConstants.OP_ALOAD, X),
- },{
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new VariableInstruction(InstructionConstants.OP_ASTORE, X),
- },
- },
- };
-
- public static final Instruction[][][] ARITHMETIC = new Instruction[][][]
- {
- { // c + i = i + c
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, A),
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_IADD),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, A),
- new SimpleInstruction(InstructionConstants.OP_IADD),
- },
- },
- { // b + i = i + b
- {
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, A),
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_IADD),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, A),
- new SimpleInstruction(InstructionConstants.OP_IADD),
- },
- },
- { // s + i = i + s
- {
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, A),
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_IADD),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, A),
- new SimpleInstruction(InstructionConstants.OP_IADD),
- },
- },
- { // c + i = i + c
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_IADD),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new SimpleInstruction(InstructionConstants.OP_IADD),
- },
- },
- { // c * i = i * c
- {
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, A),
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, A),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },
- },
- { // b * i = i * b
- {
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, A),
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, A),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },
- },
- { // s * i = i * s
- {
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, A),
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, A),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },
- },
- { // c * i = i * c
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },
- },
- { // c + l = l + c
- {
- new SimpleInstruction(InstructionConstants.OP_LCONST_0, A),
- new VariableInstruction(InstructionConstants.OP_LLOAD, X),
- new SimpleInstruction(InstructionConstants.OP_LADD),
- },{
- new VariableInstruction(InstructionConstants.OP_LLOAD, X),
- new SimpleInstruction(InstructionConstants.OP_LCONST_0, A),
- new SimpleInstruction(InstructionConstants.OP_LADD),
- },
- },
- { // c + l = l + c
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, A),
- new VariableInstruction(InstructionConstants.OP_LLOAD, X),
- new SimpleInstruction(InstructionConstants.OP_LADD),
- },{
- new VariableInstruction(InstructionConstants.OP_LLOAD, X),
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, A),
- new SimpleInstruction(InstructionConstants.OP_LADD),
- },
- },
- { // c * l = l * c
- {
- new SimpleInstruction(InstructionConstants.OP_LCONST_0, A),
- new VariableInstruction(InstructionConstants.OP_LLOAD, X),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- new VariableInstruction(InstructionConstants.OP_LLOAD, X),
- new SimpleInstruction(InstructionConstants.OP_LCONST_0, A),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },
- },
- { // c + f = f + c
- {
- new SimpleInstruction(InstructionConstants.OP_FCONST_0, A),
- new VariableInstruction(InstructionConstants.OP_FLOAD, X),
- new SimpleInstruction(InstructionConstants.OP_FADD),
- },{
- new VariableInstruction(InstructionConstants.OP_FLOAD, X),
- new SimpleInstruction(InstructionConstants.OP_FCONST_0, A),
- new SimpleInstruction(InstructionConstants.OP_FADD),
- },
- },
- { // c + f = f + c
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new VariableInstruction(InstructionConstants.OP_FLOAD, X),
- new SimpleInstruction(InstructionConstants.OP_FADD),
- },{
- new VariableInstruction(InstructionConstants.OP_FLOAD, X),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new SimpleInstruction(InstructionConstants.OP_FADD),
- },
- },
- { // c * f = f * c
- {
- new SimpleInstruction(InstructionConstants.OP_FCONST_0, A),
- new VariableInstruction(InstructionConstants.OP_FLOAD, X),
- new SimpleInstruction(InstructionConstants.OP_FMUL),
- },{
- new VariableInstruction(InstructionConstants.OP_FLOAD, X),
- new SimpleInstruction(InstructionConstants.OP_FCONST_0, A),
- new SimpleInstruction(InstructionConstants.OP_FMUL),
- },
- },
- { // c * f = f * c
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new VariableInstruction(InstructionConstants.OP_FLOAD, X),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- new VariableInstruction(InstructionConstants.OP_FLOAD, X),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },
- },
- { // c + d = d + c
- {
- new SimpleInstruction(InstructionConstants.OP_DCONST_0, A),
- new VariableInstruction(InstructionConstants.OP_DLOAD, X),
- new SimpleInstruction(InstructionConstants.OP_DADD),
- },{
- new VariableInstruction(InstructionConstants.OP_DLOAD, X),
- new SimpleInstruction(InstructionConstants.OP_DCONST_0, A),
- new SimpleInstruction(InstructionConstants.OP_DADD),
- },
- },
- { // c + d = d + c
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, A),
- new VariableInstruction(InstructionConstants.OP_DLOAD, X),
- new SimpleInstruction(InstructionConstants.OP_DADD),
- },{
- new VariableInstruction(InstructionConstants.OP_DLOAD, X),
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, A),
- new SimpleInstruction(InstructionConstants.OP_DADD),
- },
- },
- { // c * d = d * c
- {
- new SimpleInstruction(InstructionConstants.OP_DCONST_0, A),
- new VariableInstruction(InstructionConstants.OP_DLOAD, X),
- new SimpleInstruction(InstructionConstants.OP_DMUL),
- },{
- new VariableInstruction(InstructionConstants.OP_DLOAD, X),
- new SimpleInstruction(InstructionConstants.OP_DCONST_0, A),
- new SimpleInstruction(InstructionConstants.OP_DMUL),
- },
- },
- { // c * d = d * c
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, A),
- new VariableInstruction(InstructionConstants.OP_DLOAD, X),
- new SimpleInstruction(InstructionConstants.OP_DMUL),
- },{
- new VariableInstruction(InstructionConstants.OP_DLOAD, X),
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, A),
- new SimpleInstruction(InstructionConstants.OP_DMUL),
- },
- },
- { // i = i + c = i += c
- {
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, A),
- new SimpleInstruction(InstructionConstants.OP_IADD),
- new VariableInstruction(InstructionConstants.OP_ISTORE, X),
- },{
- new VariableInstruction(InstructionConstants.OP_IINC, X, A),
- },
- },
- { // i = i + b = i += b
- {
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, A),
- new SimpleInstruction(InstructionConstants.OP_IADD),
- new VariableInstruction(InstructionConstants.OP_ISTORE, X),
- },{
- new VariableInstruction(InstructionConstants.OP_IINC, X, A),
- },
- },
- { // i = i + s = i += s
- {
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, A),
- new SimpleInstruction(InstructionConstants.OP_IADD),
- new VariableInstruction(InstructionConstants.OP_ISTORE, X),
- },{
- new VariableInstruction(InstructionConstants.OP_IINC, X, A),
- },
- },
- { // i = i - -1 = i++
- {
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_ICONST_M1),
- new SimpleInstruction(InstructionConstants.OP_ISUB),
- new VariableInstruction(InstructionConstants.OP_ISTORE, X),
- },{
- new VariableInstruction(InstructionConstants.OP_IINC, X, 1),
- },
- },
- { // i = i - 1 = i--
- {
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_ICONST_1),
- new SimpleInstruction(InstructionConstants.OP_ISUB),
- new VariableInstruction(InstructionConstants.OP_ISTORE, X),
- },{
- new VariableInstruction(InstructionConstants.OP_IINC, X, -1),
- },
- },
- { // i = i - 2 = i -= 2
- {
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_ICONST_2),
- new SimpleInstruction(InstructionConstants.OP_ISUB),
- new VariableInstruction(InstructionConstants.OP_ISTORE, X),
- },{
- new VariableInstruction(InstructionConstants.OP_IINC, X, -2),
- },
- },
- { // i = i - 3 = i -= 3
- {
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_ICONST_3),
- new SimpleInstruction(InstructionConstants.OP_ISUB),
- new VariableInstruction(InstructionConstants.OP_ISTORE, X),
- },{
- new VariableInstruction(InstructionConstants.OP_IINC, X, -3),
- },
- },
- { // i = i - 4 = i -= 4
- {
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_ICONST_4),
- new SimpleInstruction(InstructionConstants.OP_ISUB),
- new VariableInstruction(InstructionConstants.OP_ISTORE, X),
- },{
- new VariableInstruction(InstructionConstants.OP_IINC, X, -4),
- },
- },
- { // i = i - 5 = i -= 5
- {
- new VariableInstruction(InstructionConstants.OP_ILOAD, X),
- new SimpleInstruction(InstructionConstants.OP_ICONST_5),
- new SimpleInstruction(InstructionConstants.OP_ISUB),
- new VariableInstruction(InstructionConstants.OP_ISTORE, X),
- },{
- new VariableInstruction(InstructionConstants.OP_IINC, X, -5),
- },
- },
- { // ... + 0 = ...
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new SimpleInstruction(InstructionConstants.OP_IADD),
- },{
- // Nothing.
- },
- },
- { // ... + 0L = ...
- {
- new SimpleInstruction(InstructionConstants.OP_LCONST_0),
- new SimpleInstruction(InstructionConstants.OP_LADD),
- },{
- // Nothing.
- },
- },
- // Not valid for -0.0.
-// { // ... + 0f = ...
-// {
-// new SimpleInstruction(InstructionConstants.OP_FCONST_0),
-// new SimpleInstruction(InstructionConstants.OP_FADD),
-// },{
-// // Nothing.
-// },
-// },
-// { // ... + 0d = ...
-// {
-// new SimpleInstruction(InstructionConstants.OP_DCONST_0),
-// new SimpleInstruction(InstructionConstants.OP_DADD),
-// },{
-// // Nothing.
-// },
-// },
- { // ... - 0 = ...
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new SimpleInstruction(InstructionConstants.OP_ISUB),
- },{
- // Nothing.
- },
- },
- { // ... - 0L = ...
- {
- new SimpleInstruction(InstructionConstants.OP_LCONST_0),
- new SimpleInstruction(InstructionConstants.OP_LSUB),
- },{
- // Nothing.
- },
- },
- { // ... - 0f = ...
- {
- new SimpleInstruction(InstructionConstants.OP_FCONST_0),
- new SimpleInstruction(InstructionConstants.OP_FSUB),
- },{
- // Nothing.
- },
- },
- { // ... - 0d = ...
- {
- new SimpleInstruction(InstructionConstants.OP_DCONST_0),
- new SimpleInstruction(InstructionConstants.OP_DSUB),
- },{
- // Nothing.
- },
- },
- { // ... * -1 = -...
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_M1),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_INEG),
- },
- },
- { // ... * 0 = 0
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP),
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- },
- },
- { // ... * 1 = ...
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_1),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- // Nothing.
- },
- },
- { // ... * 2 = ... << 1
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_2),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_ICONST_1),
- new SimpleInstruction(InstructionConstants.OP_ISHL),
- },
- },
- { // ... * 4 = ... << 2
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_4),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_ICONST_2),
- new SimpleInstruction(InstructionConstants.OP_ISHL),
- },
- },
- { // ... * 8 = ... << 3
- {
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 8),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_ICONST_3),
- new SimpleInstruction(InstructionConstants.OP_ISHL),
- },
- },
- { // ... * 16 = ... << 4
- {
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 4),
- new SimpleInstruction(InstructionConstants.OP_ISHL),
- },
- },
- { // ... * 32 = ... << 5
- {
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 32),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 5),
- new SimpleInstruction(InstructionConstants.OP_ISHL),
- },
- },
- { // ... * 64 = ... << 6
- {
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 64),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 6),
- new SimpleInstruction(InstructionConstants.OP_ISHL),
- },
- },
- { // ... * 128 = ... << 7
- {
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, 128),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 7),
- new SimpleInstruction(InstructionConstants.OP_ISHL),
- },
- },
- { // ... * 256 = ... << 8
- {
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, 256),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 8),
- new SimpleInstruction(InstructionConstants.OP_ISHL),
- },
- },
- { // ... * 512 = ... << 9
- {
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, 512),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 9),
- new SimpleInstruction(InstructionConstants.OP_ISHL),
- },
- },
- { // ... * 1024 = ... << 10
- {
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, 1024),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 10),
- new SimpleInstruction(InstructionConstants.OP_ISHL),
- },
- },
- { // ... * 2048 = ... << 11
- {
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, 2048),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 11),
- new SimpleInstruction(InstructionConstants.OP_ISHL),
- },
- },
- { // ... * 4096 = ... << 12
- {
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, 4096),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 12),
- new SimpleInstruction(InstructionConstants.OP_ISHL),
- },
- },
- { // ... * 8192 = ... << 13
- {
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, 8192),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 13),
- new SimpleInstruction(InstructionConstants.OP_ISHL),
- },
- },
- { // ... * 16384 = ... << 14
- {
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, 16384),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 14),
- new SimpleInstruction(InstructionConstants.OP_ISHL),
- },
- },
- { // ... * 32768 = ... << 15
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, I_32768),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 15),
- new SimpleInstruction(InstructionConstants.OP_ISHL),
- },
- },
- { // ... * 65536 = ... << 16
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, I_65536),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_ISHL),
- },
- },
- { // ... * 16777216 = ... << 24
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, I_16777216),
- new SimpleInstruction(InstructionConstants.OP_IMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 24),
- new SimpleInstruction(InstructionConstants.OP_ISHL),
- },
- },
- { // ... * -1L = -...
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_M1),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_LNEG),
- },
- },
- { // ... * 0L = 0L
- {
- new SimpleInstruction(InstructionConstants.OP_LCONST_0),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP2),
- new SimpleInstruction(InstructionConstants.OP_LCONST_0),
- },
- },
- { // ... * 1L = ...
- {
- new SimpleInstruction(InstructionConstants.OP_LCONST_1),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- // Nothing.
- },
- },
- { // ... * 2L = ... << 1
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_2),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_ICONST_1),
- new SimpleInstruction(InstructionConstants.OP_LSHL),
- },
- },
- { // ... * 4L = ... << 2
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_4),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_ICONST_2),
- new SimpleInstruction(InstructionConstants.OP_LSHL),
- },
- },
- { // ... * 8L = ... << 3
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_8),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_ICONST_3),
- new SimpleInstruction(InstructionConstants.OP_LSHL),
- },
- },
- { // ... * 16L = ... << 4
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_16),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 4),
- new SimpleInstruction(InstructionConstants.OP_LSHL),
- },
- },
- { // ... * 32L = ... << 5
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_32),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 5),
- new SimpleInstruction(InstructionConstants.OP_LSHL),
- },
- },
- { // ... * 64L = ... << 6
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_64),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 6),
- new SimpleInstruction(InstructionConstants.OP_LSHL),
- },
- },
- { // ... * 128L = ... << 7
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_128),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 7),
- new SimpleInstruction(InstructionConstants.OP_LSHL),
- },
- },
- { // ... * 256L = ... << 8
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_256),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 8),
- new SimpleInstruction(InstructionConstants.OP_LSHL),
- },
- },
- { // ... * 512L = ... << 9
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_512),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 9),
- new SimpleInstruction(InstructionConstants.OP_LSHL),
- },
- },
- { // ... * 1024L = ... << 10
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_1024),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 10),
- new SimpleInstruction(InstructionConstants.OP_LSHL),
- },
- },
- { // ... * 2048L = ... << 11
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_2048),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 11),
- new SimpleInstruction(InstructionConstants.OP_LSHL),
- },
- },
- { // ... * 4096L = ... << 12
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_4096),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 12),
- new SimpleInstruction(InstructionConstants.OP_LSHL),
- },
- },
- { // ... * 8192L = ... << 13
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_8192),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 13),
- new SimpleInstruction(InstructionConstants.OP_LSHL),
- },
- },
- { // ... * 16384L = ... << 14
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_16384),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 14),
- new SimpleInstruction(InstructionConstants.OP_LSHL),
- },
- },
- { // ... * 32768L = ... << 15
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_32768),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 15),
- new SimpleInstruction(InstructionConstants.OP_LSHL),
- },
- },
- { // ... * 65536LL = ... << 16
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_65536),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_LSHL),
- },
- },
- { // ... * 16777216L = ... << 24
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_16777216),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 24),
- new SimpleInstruction(InstructionConstants.OP_LSHL),
- },
- },
- { // ... * 4294967296L = ... << 32
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_4294967296),
- new SimpleInstruction(InstructionConstants.OP_LMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 32),
- new SimpleInstruction(InstructionConstants.OP_LSHL),
- },
- },
- { // ... * -1f = -...
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, F_M1),
- new SimpleInstruction(InstructionConstants.OP_FMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_FNEG),
- },
- },
- // Not valid for -0.0 and for NaN.
-// { // ... * 0f = 0f
-// {
-// new SimpleInstruction(InstructionConstants.OP_FCONST_0),
-// new SimpleInstruction(InstructionConstants.OP_FMUL),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_POP),
-// new SimpleInstruction(InstructionConstants.OP_FCONST_0),
-// },
-// },
- { // ... * 1f = ...
- {
- new SimpleInstruction(InstructionConstants.OP_FCONST_1),
- new SimpleInstruction(InstructionConstants.OP_FMUL),
- },{
- // Nothing.
- },
- },
- { // ... * -1d = -...
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, D_M1),
- new SimpleInstruction(InstructionConstants.OP_DMUL),
- },{
- new SimpleInstruction(InstructionConstants.OP_DNEG),
- },
- },
- // Not valid for -0.0 and for NaN.
-// { // ... * 0d = 0d
-// {
-// new SimpleInstruction(InstructionConstants.OP_DCONST_0),
-// new SimpleInstruction(InstructionConstants.OP_DMUL),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_POP2),
-// new SimpleInstruction(InstructionConstants.OP_DCONST_0),
-// },
-// },
- { // ... * 1d = ...
- {
- new SimpleInstruction(InstructionConstants.OP_DCONST_1),
- new SimpleInstruction(InstructionConstants.OP_DMUL),
- },{
- // Nothing.
- },
- },
- { // ... / -1 = -...
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_M1),
- new SimpleInstruction(InstructionConstants.OP_IDIV),
- },{
- new SimpleInstruction(InstructionConstants.OP_INEG),
- },
- },
- { // ... / 1 = ...
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_1),
- new SimpleInstruction(InstructionConstants.OP_IDIV),
- },{
- // Nothing.
- },
- },
- // Not valid for negative values.
-// { // ... / 2 = ... >> 1
-// {
-// new SimpleInstruction(InstructionConstants.OP_ICONST_2),
-// new SimpleInstruction(InstructionConstants.OP_IDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_ICONST_1),
-// new SimpleInstruction(InstructionConstants.OP_ISHR),
-// },
-// },
-// { // ... / 4 = ... >> 2
-// {
-// new SimpleInstruction(InstructionConstants.OP_ICONST_4),
-// new SimpleInstruction(InstructionConstants.OP_IDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_ICONST_2),
-// new SimpleInstruction(InstructionConstants.OP_ISHR),
-// },
-// },
-// { // ... / 8 = ... >> 3
-// {
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 8),
-// new SimpleInstruction(InstructionConstants.OP_IDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_ICONST_3),
-// new SimpleInstruction(InstructionConstants.OP_ISHR),
-// },
-// },
-// { // ... / 16 = ... >> 4
-// {
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
-// new SimpleInstruction(InstructionConstants.OP_IDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 4),
-// new SimpleInstruction(InstructionConstants.OP_ISHR),
-// },
-// },
-// { // ... / 32 = ... >> 5
-// {
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 32),
-// new SimpleInstruction(InstructionConstants.OP_IDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 5),
-// new SimpleInstruction(InstructionConstants.OP_ISHR),
-// },
-// },
-// { // ... / 64 = ... >> 6
-// {
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 64),
-// new SimpleInstruction(InstructionConstants.OP_IDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 6),
-// new SimpleInstruction(InstructionConstants.OP_ISHR),
-// },
-// },
-// { // ... / 128 = ... >> 7
-// {
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 128),
-// new SimpleInstruction(InstructionConstants.OP_IDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 7),
-// new SimpleInstruction(InstructionConstants.OP_ISHR),
-// },
-// },
-// { // ... / 256 = ... >> 8
-// {
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 256),
-// new SimpleInstruction(InstructionConstants.OP_IDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 8),
-// new SimpleInstruction(InstructionConstants.OP_ISHR),
-// },
-// },
-// { // ... / 512 = ... >> 9
-// {
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 512),
-// new SimpleInstruction(InstructionConstants.OP_IDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 9),
-// new SimpleInstruction(InstructionConstants.OP_ISHR),
-// },
-// },
-// { // ... / 1024 = ... >> 10
-// {
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 1024),
-// new SimpleInstruction(InstructionConstants.OP_IDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 10),
-// new SimpleInstruction(InstructionConstants.OP_ISHR),
-// },
-// },
-// { // ... / 2048 = ... >> 11
-// {
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 2048),
-// new SimpleInstruction(InstructionConstants.OP_IDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 11),
-// new SimpleInstruction(InstructionConstants.OP_ISHR),
-// },
-// },
-// { // ... / 4096 = ... >> 12
-// {
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 4096),
-// new SimpleInstruction(InstructionConstants.OP_IDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 12),
-// new SimpleInstruction(InstructionConstants.OP_ISHR),
-// },
-// },
-// { // ... / 8192 = ... >> 13
-// {
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 8192),
-// new SimpleInstruction(InstructionConstants.OP_IDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 13),
-// new SimpleInstruction(InstructionConstants.OP_ISHR),
-// },
-// },
-// { // ... / 16384 = ... >> 14
-// {
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 16384),
-// new SimpleInstruction(InstructionConstants.OP_IDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 14),
-// new SimpleInstruction(InstructionConstants.OP_ISHR),
-// },
-// },
-// { // ... / 32768 = ... >> 15
-// {
-// new ConstantInstruction(InstructionConstants.OP_LDC, I_32768),
-// new SimpleInstruction(InstructionConstants.OP_IDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 15),
-// new SimpleInstruction(InstructionConstants.OP_ISHR),
-// },
-// },
-// { // ... / 65536 = ... >> 16
-// {
-// new ConstantInstruction(InstructionConstants.OP_LDC, I_65536),
-// new SimpleInstruction(InstructionConstants.OP_IDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
-// new SimpleInstruction(InstructionConstants.OP_ISHR),
-// },
-// },
-// { // ... / 16777216 = ... >> 24
-// {
-// new ConstantInstruction(InstructionConstants.OP_LDC, I_16777216),
-// new SimpleInstruction(InstructionConstants.OP_IDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 24),
-// new SimpleInstruction(InstructionConstants.OP_ISHR),
-// },
-// },
- { // ... / -1L = -...
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_M1),
- new SimpleInstruction(InstructionConstants.OP_LDIV),
- },{
- new SimpleInstruction(InstructionConstants.OP_LNEG),
- },
- },
- { // ... / 1L = ...
- {
- new SimpleInstruction(InstructionConstants.OP_LCONST_1),
- new SimpleInstruction(InstructionConstants.OP_LDIV),
- },{
- // Nothing.
- },
- },
- // Not valid for negative values.
-// { // ... / 2L = ... >> 1
-// {
-// new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_2),
-// new SimpleInstruction(InstructionConstants.OP_LDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_ICONST_1),
-// new SimpleInstruction(InstructionConstants.OP_LSHR),
-// },
-// },
-// { // ... / 4L = ... >> 2
-// {
-// new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_4),
-// new SimpleInstruction(InstructionConstants.OP_LDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_ICONST_2),
-// new SimpleInstruction(InstructionConstants.OP_LSHR),
-// },
-// },
-// { // ... / 8L = ... >> 3
-// {
-// new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_8),
-// new SimpleInstruction(InstructionConstants.OP_LDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_ICONST_3),
-// new SimpleInstruction(InstructionConstants.OP_LSHR),
-// },
-// },
-// { // ... / 16L = ... >> 4
-// {
-// new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_16),
-// new SimpleInstruction(InstructionConstants.OP_LDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 4),
-// new SimpleInstruction(InstructionConstants.OP_LSHR),
-// },
-// },
-// { // ... / 32L = ... >> 5
-// {
-// new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_32),
-// new SimpleInstruction(InstructionConstants.OP_LDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 5),
-// new SimpleInstruction(InstructionConstants.OP_LSHR),
-// },
-// },
-// { // ... / 64L = ... >> 6
-// {
-// new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_64),
-// new SimpleInstruction(InstructionConstants.OP_LDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 6),
-// new SimpleInstruction(InstructionConstants.OP_LSHR),
-// },
-// },
-// { // ... / 128L = ... >> 7
-// {
-// new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_128),
-// new SimpleInstruction(InstructionConstants.OP_LDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 7),
-// new SimpleInstruction(InstructionConstants.OP_LSHR),
-// },
-// },
-// { // ... / 256L = ... >> 8
-// {
-// new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_256),
-// new SimpleInstruction(InstructionConstants.OP_LDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 8),
-// new SimpleInstruction(InstructionConstants.OP_LSHR),
-// },
-// },
-// { // ... / 512L = ... >> 9
-// {
-// new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_512),
-// new SimpleInstruction(InstructionConstants.OP_LDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 9),
-// new SimpleInstruction(InstructionConstants.OP_LSHR),
-// },
-// },
-// { // ... / 1024L = ... >> 10
-// {
-// new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_1024),
-// new SimpleInstruction(InstructionConstants.OP_LDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 10),
-// new SimpleInstruction(InstructionConstants.OP_LSHR),
-// },
-// },
-// { // ... / 2048L = ... >> 11
-// {
-// new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_2048),
-// new SimpleInstruction(InstructionConstants.OP_LDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 11),
-// new SimpleInstruction(InstructionConstants.OP_LSHR),
-// },
-// },
-// { // ... / 4096L = ... >> 12
-// {
-// new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_4096),
-// new SimpleInstruction(InstructionConstants.OP_LDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 12),
-// new SimpleInstruction(InstructionConstants.OP_LSHR),
-// },
-// },
-// { // ... / 8192L = ... >> 13
-// {
-// new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_8192),
-// new SimpleInstruction(InstructionConstants.OP_LDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 13),
-// new SimpleInstruction(InstructionConstants.OP_LSHR),
-// },
-// },
-// { // ... / 16384L = ... >> 14
-// {
-// new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_16384),
-// new SimpleInstruction(InstructionConstants.OP_LDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 14),
-// new SimpleInstruction(InstructionConstants.OP_LSHR),
-// },
-// },
-// { // ... / 32768L = ... >> 15
-// {
-// new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_32768),
-// new SimpleInstruction(InstructionConstants.OP_LDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 15),
-// new SimpleInstruction(InstructionConstants.OP_LSHR),
-// },
-// },
-// { // ... / 65536LL = ... >> 16
-// {
-// new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_65536),
-// new SimpleInstruction(InstructionConstants.OP_LDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
-// new SimpleInstruction(InstructionConstants.OP_LSHR),
-// },
-// },
-// { // ... / 16777216L = ... >> 24
-// {
-// new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_16777216),
-// new SimpleInstruction(InstructionConstants.OP_LDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 24),
-// new SimpleInstruction(InstructionConstants.OP_LSHR),
-// },
-// },
-// { // ... / 4294967296L = ... >> 32
-// {
-// new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_4294967296),
-// new SimpleInstruction(InstructionConstants.OP_LDIV),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 32),
-// new SimpleInstruction(InstructionConstants.OP_LSHR),
-// },
-// },
- { // ... / -1f = -...
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, F_M1),
- new SimpleInstruction(InstructionConstants.OP_FDIV),
- },{
- new SimpleInstruction(InstructionConstants.OP_FNEG),
- },
- },
- { // ... / 1f = ...
- {
- new SimpleInstruction(InstructionConstants.OP_FCONST_1),
- new SimpleInstruction(InstructionConstants.OP_FDIV),
- },{
- // Nothing.
- },
- },
- { // ... / -1d = -...
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, D_M1),
- new SimpleInstruction(InstructionConstants.OP_DDIV),
- },{
- new SimpleInstruction(InstructionConstants.OP_DNEG),
- },
- },
- { // ... / 1d = ...
- {
- new SimpleInstruction(InstructionConstants.OP_DCONST_1),
- new SimpleInstruction(InstructionConstants.OP_DDIV),
- },{
- // Nothing.
- },
- },
- { // ... % 1 = 0
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_1),
- new SimpleInstruction(InstructionConstants.OP_IREM),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP),
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- },
- },
- // Not valid for negative values.
-// { // ... % 2 = ... & 0x1
-// {
-// new SimpleInstruction(InstructionConstants.OP_ICONST_2),
-// new SimpleInstruction(InstructionConstants.OP_IREM),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_ICONST_1),
-// new SimpleInstruction(InstructionConstants.OP_IAND),
-// },
-// },
-// { // ... % 4 = ... & 0x3
-// {
-// new SimpleInstruction(InstructionConstants.OP_ICONST_4),
-// new SimpleInstruction(InstructionConstants.OP_IREM),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_ICONST_3),
-// new SimpleInstruction(InstructionConstants.OP_IAND),
-// },
-// },
-// { // ... % 8 = ... & 0x07
-// {
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 8),
-// new SimpleInstruction(InstructionConstants.OP_IREM),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 0x07),
-// new SimpleInstruction(InstructionConstants.OP_IAND),
-// },
-// },
-// { // ... % 16 = ... & 0x0f
-// {
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
-// new SimpleInstruction(InstructionConstants.OP_IREM),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 0x0f),
-// new SimpleInstruction(InstructionConstants.OP_IAND),
-// },
-// },
-// { // ... % 32 = ... & 0x1f
-// {
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 32),
-// new SimpleInstruction(InstructionConstants.OP_IREM),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 0x1f),
-// new SimpleInstruction(InstructionConstants.OP_IAND),
-// },
-// },
-// { // ... % 64 = ... & 0x3f
-// {
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 64),
-// new SimpleInstruction(InstructionConstants.OP_IREM),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 0x3f),
-// new SimpleInstruction(InstructionConstants.OP_IAND),
-// },
-// },
-// { // ... % 128 = ... & 0x7f
-// {
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 128),
-// new SimpleInstruction(InstructionConstants.OP_IREM),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BIPUSH, 0x7f),
-// new SimpleInstruction(InstructionConstants.OP_IAND),
-// },
-// },
-// { // ... % 256 = ... & 0x00ff
-// {
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 256),
-// new SimpleInstruction(InstructionConstants.OP_IREM),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 0x00ff),
-// new SimpleInstruction(InstructionConstants.OP_IAND),
-// },
-// },
-// { // ... % 512 = ... & 0x01ff
-// {
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 512),
-// new SimpleInstruction(InstructionConstants.OP_IREM),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 0x01ff),
-// new SimpleInstruction(InstructionConstants.OP_IAND),
-// },
-// },
-// { // ... % 1024 = ... & 0x03ff
-// {
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 1024),
-// new SimpleInstruction(InstructionConstants.OP_IREM),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 0x03ff),
-// new SimpleInstruction(InstructionConstants.OP_IAND),
-// },
-// },
-// { // ... % 2048 = ... & 0x07ff
-// {
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 2048),
-// new SimpleInstruction(InstructionConstants.OP_IREM),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 0x07ff),
-// new SimpleInstruction(InstructionConstants.OP_IAND),
-// },
-// },
-// { // ... % 4096 = ... & 0x0fff
-// {
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 4096),
-// new SimpleInstruction(InstructionConstants.OP_IREM),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 0x0fff),
-// new SimpleInstruction(InstructionConstants.OP_IAND),
-// },
-// },
-// { // ... % 8192 = ... & 0x1fff
-// {
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 8192),
-// new SimpleInstruction(InstructionConstants.OP_IREM),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 0x1fff),
-// new SimpleInstruction(InstructionConstants.OP_IAND),
-// },
-// },
-// { // ... % 16384 = ... & 0x3fff
-// {
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 16384),
-// new SimpleInstruction(InstructionConstants.OP_IREM),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, 0x3fff),
-// new SimpleInstruction(InstructionConstants.OP_IAND),
-// },
-// },
- { // ... % 1L = 0L
- {
- new SimpleInstruction(InstructionConstants.OP_LCONST_1),
- new SimpleInstruction(InstructionConstants.OP_LREM),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP2),
- new SimpleInstruction(InstructionConstants.OP_LCONST_0),
- },
- },
-// { // ... % 1f = 0f
-// {
-// new SimpleInstruction(InstructionConstants.OP_FCONST_1),
-// new SimpleInstruction(InstructionConstants.OP_FREM),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_POP),
-// new SimpleInstruction(InstructionConstants.OP_FCONST_0),
-// },
-// },
-// { // ... % 1d = 0d
-// {
-// new SimpleInstruction(InstructionConstants.OP_DCONST_1),
-// new SimpleInstruction(InstructionConstants.OP_DREM),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_POP2),
-// new SimpleInstruction(InstructionConstants.OP_DCONST_0),
-// },
-// },
- { // -(-...) = ...
- {
- new SimpleInstruction(InstructionConstants.OP_INEG),
- new SimpleInstruction(InstructionConstants.OP_INEG),
- },{
- // Nothing.
- },
- },
- { // -(-...) = ...
- {
- new SimpleInstruction(InstructionConstants.OP_LNEG),
- new SimpleInstruction(InstructionConstants.OP_LNEG),
- },{
- // Nothing.
- },
- },
- { // -(-...) = ...
- {
- new SimpleInstruction(InstructionConstants.OP_FNEG),
- new SimpleInstruction(InstructionConstants.OP_FNEG),
- },{
- // Nothing.
- },
- },
- { // -(-...) = ...
- {
- new SimpleInstruction(InstructionConstants.OP_DNEG),
- new SimpleInstruction(InstructionConstants.OP_DNEG),
- },{
- // Nothing.
- },
- },
- { // +(-...) = -...
- {
- new SimpleInstruction(InstructionConstants.OP_INEG),
- new SimpleInstruction(InstructionConstants.OP_IADD),
- },{
- new SimpleInstruction(InstructionConstants.OP_ISUB),
- },
- },
- { // +(-...) = -...
- {
- new SimpleInstruction(InstructionConstants.OP_LNEG),
- new SimpleInstruction(InstructionConstants.OP_LADD),
- },{
- new SimpleInstruction(InstructionConstants.OP_LSUB),
- },
- },
- { // +(-...) = -...
- {
- new SimpleInstruction(InstructionConstants.OP_FNEG),
- new SimpleInstruction(InstructionConstants.OP_FADD),
- },{
- new SimpleInstruction(InstructionConstants.OP_FSUB),
- },
- },
- { // +(-...) = -...
- {
- new SimpleInstruction(InstructionConstants.OP_DNEG),
- new SimpleInstruction(InstructionConstants.OP_DADD),
- },{
- new SimpleInstruction(InstructionConstants.OP_DSUB),
- },
- },
- { // ... << 0 = ...
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new SimpleInstruction(InstructionConstants.OP_ISHL),
- },{
- // Nothing.
- },
- },
- { // ... << 0 = ...
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new SimpleInstruction(InstructionConstants.OP_LSHL),
- },{
- // Nothing.
- },
- },
- { // ... >> 0 = ...
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new SimpleInstruction(InstructionConstants.OP_ISHR),
- },{
- // Nothing.
- },
- },
- { // ... >> 0 = ...
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new SimpleInstruction(InstructionConstants.OP_LSHR),
- },{
- // Nothing.
- },
- },
- { // ... >>> 0 = ...
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new SimpleInstruction(InstructionConstants.OP_IUSHR),
- },{
- // Nothing.
- },
- },
- { // ... >>> 0 = ...
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new SimpleInstruction(InstructionConstants.OP_LUSHR),
- },{
- // Nothing.
- },
- },
- { // ... & -1 = ...
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_M1),
- new SimpleInstruction(InstructionConstants.OP_IAND),
- },{
- // Nothing.
- },
- },
- { // ... & 0 = 0
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new SimpleInstruction(InstructionConstants.OP_IAND),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP),
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- },
- },
- { // ... & -1L = ...
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_M1),
- new SimpleInstruction(InstructionConstants.OP_LAND),
- },{
- // Nothing.
- },
- },
- { // ... & 0L = 0L
- {
- new SimpleInstruction(InstructionConstants.OP_LCONST_0),
- new SimpleInstruction(InstructionConstants.OP_LAND),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP2),
- new SimpleInstruction(InstructionConstants.OP_LCONST_0),
- },
- },
- { // ... | -1 = -1
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_M1),
- new SimpleInstruction(InstructionConstants.OP_IOR),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP),
- new SimpleInstruction(InstructionConstants.OP_ICONST_M1),
- },
- },
- { // ... | 0 = ...
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new SimpleInstruction(InstructionConstants.OP_IOR),
- },{
- // Nothing.
- },
- },
- { // ... | -1L = -1L
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_M1),
- new SimpleInstruction(InstructionConstants.OP_LAND),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP2),
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_M1),
- },
- },
- { // ... | 0L = ...
- {
- new SimpleInstruction(InstructionConstants.OP_LCONST_0),
- new SimpleInstruction(InstructionConstants.OP_LOR),
- },{
- // Nothing.
- },
- },
- { // ... ^ 0 = ...
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new SimpleInstruction(InstructionConstants.OP_IXOR),
- },{
- // Nothing.
- },
- },
- { // ... ^ 0L = ...
- {
- new SimpleInstruction(InstructionConstants.OP_LCONST_0),
- new SimpleInstruction(InstructionConstants.OP_LXOR),
- },{
- // Nothing.
- },
- },
- { // (... & 0x0000ff00) >> 8 = (... >> 8) & 0xff
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, I_0x0000ff00),
- new SimpleInstruction(InstructionConstants.OP_IAND),
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 8),
- new SimpleInstruction(InstructionConstants.OP_ISHR),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 8),
- new SimpleInstruction(InstructionConstants.OP_ISHR),
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, 0xff),
- new SimpleInstruction(InstructionConstants.OP_IAND),
- },
- },
- { // (... & 0x0000ff00) >>> 8 = (... >>> 8) & 0xff
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, I_0x0000ff00),
- new SimpleInstruction(InstructionConstants.OP_IAND),
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 8),
- new SimpleInstruction(InstructionConstants.OP_IUSHR),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 8),
- new SimpleInstruction(InstructionConstants.OP_IUSHR),
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, 0xff),
- new SimpleInstruction(InstructionConstants.OP_IAND),
- },
- },
- { // (... & 0x00ff0000) >> 16 = (... >> 16) & 0xff
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, I_0x00ff0000),
- new SimpleInstruction(InstructionConstants.OP_IAND),
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_ISHR),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_ISHR),
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, 0xff),
- new SimpleInstruction(InstructionConstants.OP_IAND),
- },
- },
- { // (... & 0x00ff0000) >>> 16 = (... >>> 16) & 0xff
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, I_0x00ff0000),
- new SimpleInstruction(InstructionConstants.OP_IAND),
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_IUSHR),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_IUSHR),
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, 0xff),
- new SimpleInstruction(InstructionConstants.OP_IAND),
- },
- },
- { // (... & 0xff000000) >> 24 = ... >> 24
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, I_0xff000000),
- new SimpleInstruction(InstructionConstants.OP_IAND),
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 24),
- new SimpleInstruction(InstructionConstants.OP_ISHR),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 24),
- new SimpleInstruction(InstructionConstants.OP_ISHR),
- },
- },
- { // (... & 0xffff0000) >> 16 = ... >> 16
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, I_0xffff0000),
- new SimpleInstruction(InstructionConstants.OP_IAND),
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_ISHR),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_ISHR),
- },
- },
- { // (... & 0xffff0000) >>> 16 = ... >>> 16
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, I_0xffff0000),
- new SimpleInstruction(InstructionConstants.OP_IAND),
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_IUSHR),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_IUSHR),
- },
- },
- { // (... >> 24) & 0xff = ... >>> 24
- {
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 24),
- new SimpleInstruction(InstructionConstants.OP_ISHR),
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, 0xff),
- new SimpleInstruction(InstructionConstants.OP_IAND),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 24),
- new SimpleInstruction(InstructionConstants.OP_IUSHR),
- },
- },
- { // (... >>> 24) & 0xff = ... >>> 24
- {
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 24),
- new SimpleInstruction(InstructionConstants.OP_IUSHR),
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, 0xff),
- new SimpleInstruction(InstructionConstants.OP_IAND),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 24),
- new SimpleInstruction(InstructionConstants.OP_IUSHR),
- },
- },
- { // (byte)(... & 0x000000ff) = (byte)...
- {
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, 0xff),
- new SimpleInstruction(InstructionConstants.OP_IAND),
- new SimpleInstruction(InstructionConstants.OP_I2B),
- },{
- new SimpleInstruction(InstructionConstants.OP_I2B),
- },
- },
- { // (char)(... & 0x0000ffff) = (char)...
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, I_0x0000ffff),
- new SimpleInstruction(InstructionConstants.OP_IAND),
- new SimpleInstruction(InstructionConstants.OP_I2C),
- },{
- new SimpleInstruction(InstructionConstants.OP_I2C),
- },
- },
- { // (short)(... & 0x0000ffff) = (short)...
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, I_0x0000ffff),
- new SimpleInstruction(InstructionConstants.OP_IAND),
- new SimpleInstruction(InstructionConstants.OP_I2S),
- },{
- new SimpleInstruction(InstructionConstants.OP_I2S),
- },
- },
- { // (byte)(... >> 24) = ... >> 24
- {
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 24),
- new SimpleInstruction(InstructionConstants.OP_ISHR),
- new SimpleInstruction(InstructionConstants.OP_I2B),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 24),
- new SimpleInstruction(InstructionConstants.OP_ISHR),
- },
- },
- { // (byte)(... >>> 24) = ... >> 24
- {
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 24),
- new SimpleInstruction(InstructionConstants.OP_IUSHR),
- new SimpleInstruction(InstructionConstants.OP_I2B),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 24),
- new SimpleInstruction(InstructionConstants.OP_ISHR),
- },
- },
- { // (char)(... >> 16) = ... >>> 16
- {
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_ISHR),
- new SimpleInstruction(InstructionConstants.OP_I2C),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_IUSHR),
- },
- },
- { // (char)(... >>> 16) = ... >>> 16
- {
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_IUSHR),
- new SimpleInstruction(InstructionConstants.OP_I2C),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_IUSHR),
- },
- },
- { // (short)(... >> 16) = ... >> 16
- {
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_ISHR),
- new SimpleInstruction(InstructionConstants.OP_I2S),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_ISHR),
- },
- },
- { // (short)(... >>> 16) = ... >> 16
- {
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_IUSHR),
- new SimpleInstruction(InstructionConstants.OP_I2S),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_ISHR),
- },
- },
- { // ... << 24 >> 24 = (byte)...
- {
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 24),
- new SimpleInstruction(InstructionConstants.OP_ISHL),
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 24),
- new SimpleInstruction(InstructionConstants.OP_ISHR),
- },{
- new SimpleInstruction(InstructionConstants.OP_I2B),
- },
- },
- { // ... << 16 >>> 16 = (char)...
- {
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_ISHL),
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_IUSHR),
- },{
- new SimpleInstruction(InstructionConstants.OP_I2C),
- },
- },
- { // ... << 16 >> 16 = (short)...
- {
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_ISHL),
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 16),
- new SimpleInstruction(InstructionConstants.OP_ISHR),
- },{
- new SimpleInstruction(InstructionConstants.OP_I2S),
- },
- },
- { // ... << 32 >> 32 = (long)(int)...
- {
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 32),
- new SimpleInstruction(InstructionConstants.OP_LSHL),
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 32),
- new SimpleInstruction(InstructionConstants.OP_LSHR),
- },{
- new SimpleInstruction(InstructionConstants.OP_L2I),
- new SimpleInstruction(InstructionConstants.OP_I2L),
- },
- },
- { // (int)(... & 0x00000000ffffffffL) = (int)...
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_0x00000000ffffffff),
- new SimpleInstruction(InstructionConstants.OP_LAND),
- new SimpleInstruction(InstructionConstants.OP_L2I),
- },{
- new SimpleInstruction(InstructionConstants.OP_L2I),
- },
- },
- { // (... & 0xffffffff00000000L) >> 32 = ... >> 32
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_0xffffffff00000000),
- new SimpleInstruction(InstructionConstants.OP_LAND),
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 32),
- new SimpleInstruction(InstructionConstants.OP_LSHR),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 32),
- new SimpleInstruction(InstructionConstants.OP_LSHR),
- },
- },
- { // (... & 0xffffffff00000000L) >>> 32 = ... >>> 32
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, L_0xffffffff00000000),
- new SimpleInstruction(InstructionConstants.OP_LAND),
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 32),
- new SimpleInstruction(InstructionConstants.OP_LUSHR),
- },{
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, 32),
- new SimpleInstruction(InstructionConstants.OP_LUSHR),
- },
- },
- { // ... += 0 = nothing
- {
- new VariableInstruction(InstructionConstants.OP_IINC, X, 0),
- },{
- // Nothing.
- },
- },
- };
-
- public static final Instruction[][][] FIELD = new Instruction[][][]
- {
- { // getfield/putfield = nothing
- {
- new VariableInstruction(InstructionConstants.OP_ALOAD, X),
- new VariableInstruction(InstructionConstants.OP_ALOAD, X),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Y),
- new ConstantInstruction(InstructionConstants.OP_PUTFIELD, Y),
- },{
- // Nothing.
- },
- },
-// { // putfield_L/putfield_L = pop2_x1/putfield
-// {
-// new VariableInstruction(InstructionConstants.OP_ALOAD, X),
-// // ...
-// new ConstantInstruction(InstructionConstants.OP_PUTFIELD, FIELD_L),
-// new VariableInstruction(InstructionConstants.OP_ALOAD, X),
-// // ...
-// new ConstantInstruction(InstructionConstants.OP_PUTFIELD, FIELD_L),
-// },{
-// new VariableInstruction(InstructionConstants.OP_ALOAD, X),
-// // ...
-// new SimpleInstruction(InstructionConstants.OP_POP2),
-// // ...
-// new ConstantInstruction(InstructionConstants.OP_PUTFIELD, FIELD_L),
-// },
-// },
-// { // putfield_D/putfield_D = pop2_x1/putfield
-// {
-// new VariableInstruction(InstructionConstants.OP_ALOAD, X),
-// // ...
-// new ConstantInstruction(InstructionConstants.OP_PUTFIELD, FIELD_D),
-// new VariableInstruction(InstructionConstants.OP_ALOAD, X),
-// // ...
-// new ConstantInstruction(InstructionConstants.OP_PUTFIELD, FIELD_D),
-// },{
-// new VariableInstruction(InstructionConstants.OP_ALOAD, X),
-// // ...
-// new SimpleInstruction(InstructionConstants.OP_POP2),
-// // ...
-// new ConstantInstruction(InstructionConstants.OP_PUTFIELD, FIELD_D),
-// },
-// },
-// { // putfield/putfield = pop_x1/putfield
-// {
-// new VariableInstruction(InstructionConstants.OP_ALOAD, X),
-// // ...
-// new ConstantInstruction(InstructionConstants.OP_PUTFIELD, Y),
-// new VariableInstruction(InstructionConstants.OP_ALOAD, X),
-// // ...
-// new ConstantInstruction(InstructionConstants.OP_PUTFIELD, Y),
-// },{
-// new VariableInstruction(InstructionConstants.OP_ALOAD, X),
-// // ...
-// new SimpleInstruction(InstructionConstants.OP_POP),
-// // ...
-// new ConstantInstruction(InstructionConstants.OP_PUTFIELD, Y),
-// },
-// },
-// { // putfield_L/getfield_L = dup2_x1/putfield
-// {
-// new VariableInstruction(InstructionConstants.OP_ALOAD, X),
-// // ...
-// new ConstantInstruction(InstructionConstants.OP_PUTFIELD, FIELD_L),
-// new VariableInstruction(InstructionConstants.OP_ALOAD, X),
-// new ConstantInstruction(InstructionConstants.OP_GETFIELD, FIELD_L),
-// },{
-// new VariableInstruction(InstructionConstants.OP_ALOAD, X),
-// // ...
-// new SimpleInstruction(InstructionConstants.OP_DUP2_X1),
-// new ConstantInstruction(InstructionConstants.OP_PUTFIELD, FIELD_L),
-// },
-// },
-// { // putfield_D/getfield_D = dup2_x1/putfield
-// {
-// new VariableInstruction(InstructionConstants.OP_ALOAD, X),
-// // ...
-// new ConstantInstruction(InstructionConstants.OP_PUTFIELD, FIELD_D),
-// new VariableInstruction(InstructionConstants.OP_ALOAD, X),
-// new ConstantInstruction(InstructionConstants.OP_GETFIELD, FIELD_D),
-// },{
-// new VariableInstruction(InstructionConstants.OP_ALOAD, X),
-// // ...
-// new SimpleInstruction(InstructionConstants.OP_DUP2_X1),
-// new ConstantInstruction(InstructionConstants.OP_PUTFIELD, FIELD_D),
-// },
-// },
-// { // putfield/getfield = dup_x1/putfield
-// {
-// new VariableInstruction(InstructionConstants.OP_ALOAD, X),
-// // ...
-// new ConstantInstruction(InstructionConstants.OP_PUTFIELD, Y),
-// new VariableInstruction(InstructionConstants.OP_ALOAD, X),
-// new ConstantInstruction(InstructionConstants.OP_GETFIELD, Y),
-// },{
-// new VariableInstruction(InstructionConstants.OP_ALOAD, X),
-// // ...
-// new SimpleInstruction(InstructionConstants.OP_DUP_X1),
-// new ConstantInstruction(InstructionConstants.OP_PUTFIELD, Y),
-// },
-// },
- { // getstatic/putstatic = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, X),
- new ConstantInstruction(InstructionConstants.OP_PUTSTATIC, X),
- },{
- // Nothing.
- },
- },
- { // putstatic_L/putstatic_L = pop2/putstatic
- {
- new ConstantInstruction(InstructionConstants.OP_PUTSTATIC, FIELD_L),
- new ConstantInstruction(InstructionConstants.OP_PUTSTATIC, FIELD_L),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP2),
- new ConstantInstruction(InstructionConstants.OP_PUTSTATIC, FIELD_L),
- },
- },
- { // putstatic_D/putstatic_D = pop2/putstatic
- {
- new ConstantInstruction(InstructionConstants.OP_PUTSTATIC, FIELD_D),
- new ConstantInstruction(InstructionConstants.OP_PUTSTATIC, FIELD_D),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP2),
- new ConstantInstruction(InstructionConstants.OP_PUTSTATIC, FIELD_D),
- },
- },
- { // putstatic/putstatic = pop/putstatic
- {
- new ConstantInstruction(InstructionConstants.OP_PUTSTATIC, X),
- new ConstantInstruction(InstructionConstants.OP_PUTSTATIC, X),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP),
- new ConstantInstruction(InstructionConstants.OP_PUTSTATIC, X),
- },
- },
- { // putstatic_L/getstatic_L = dup2/putstatic
- {
- new ConstantInstruction(InstructionConstants.OP_PUTSTATIC, FIELD_L),
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, FIELD_L),
- },{
- new SimpleInstruction(InstructionConstants.OP_DUP2),
- new ConstantInstruction(InstructionConstants.OP_PUTSTATIC, FIELD_L),
- },
- },
- { // putstatic_D/getstatic_D = dup2/putstatic
- {
- new ConstantInstruction(InstructionConstants.OP_PUTSTATIC, FIELD_D),
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, FIELD_D),
- },{
- new SimpleInstruction(InstructionConstants.OP_DUP2),
- new ConstantInstruction(InstructionConstants.OP_PUTSTATIC, FIELD_D),
- },
- },
- { // putstatic/getstatic = dup/putstatic
- {
- new ConstantInstruction(InstructionConstants.OP_PUTSTATIC, X),
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, X),
- },{
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_PUTSTATIC, X),
- },
- },
- };
-
- public static final Instruction[][][] CAST = new Instruction[][][]
- {
- { // (byte)(byte)... = (byte)...
- {
- new SimpleInstruction(InstructionConstants.OP_I2B),
- new SimpleInstruction(InstructionConstants.OP_I2B),
- },{
- new SimpleInstruction(InstructionConstants.OP_I2B),
- },
- },
- { // (byte)(char)... = (byte)...
- {
- new SimpleInstruction(InstructionConstants.OP_I2C),
- new SimpleInstruction(InstructionConstants.OP_I2B),
- },{
- new SimpleInstruction(InstructionConstants.OP_I2B),
- },
- },
- { // (byte)(short)... = (byte)...
- {
- new SimpleInstruction(InstructionConstants.OP_I2S),
- new SimpleInstruction(InstructionConstants.OP_I2B),
- },{
- new SimpleInstruction(InstructionConstants.OP_I2B),
- },
- },
- { // (char)(char)... = (char)...
- {
- new SimpleInstruction(InstructionConstants.OP_I2C),
- new SimpleInstruction(InstructionConstants.OP_I2C),
- },{
- new SimpleInstruction(InstructionConstants.OP_I2C),
- },
- },
- { // (char)(short)... = (char)...
- {
- new SimpleInstruction(InstructionConstants.OP_I2S),
- new SimpleInstruction(InstructionConstants.OP_I2C),
- },{
- new SimpleInstruction(InstructionConstants.OP_I2C),
- },
- },
- { // (short)(byte)... = (byte)...
- {
- new SimpleInstruction(InstructionConstants.OP_I2B),
- new SimpleInstruction(InstructionConstants.OP_I2S),
- },{
- new SimpleInstruction(InstructionConstants.OP_I2B),
- },
- },
- { // (short)(char)... = (short)...
- {
- new SimpleInstruction(InstructionConstants.OP_I2C),
- new SimpleInstruction(InstructionConstants.OP_I2S),
- },{
- new SimpleInstruction(InstructionConstants.OP_I2S),
- },
- },
- { // (short)(short)... = (short)...
- {
- new SimpleInstruction(InstructionConstants.OP_I2S),
- new SimpleInstruction(InstructionConstants.OP_I2S),
- },{
- new SimpleInstruction(InstructionConstants.OP_I2S),
- },
- },
- { // (int)(long)... = ...
- {
- new SimpleInstruction(InstructionConstants.OP_I2L),
- new SimpleInstruction(InstructionConstants.OP_L2I),
- },{
- // Nothing.
- },
- },
- { // (X)(X)... = (X)...
- {
- new ConstantInstruction(InstructionConstants.OP_CHECKCAST, X),
- new ConstantInstruction(InstructionConstants.OP_CHECKCAST, X),
- },{
- new ConstantInstruction(InstructionConstants.OP_CHECKCAST, X),
- },
- },
- // Not handled correctly in all cases by VMs prior to Java 6...
-// { // (byte)bytes[...] = bytes[...]
-// {
-// new SimpleInstruction(InstructionConstants.OP_BALOAD),
-// new SimpleInstruction(InstructionConstants.OP_I2B),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BALOAD),
-// },
-// },
-// { // (short)bytes[...] = bytes[...]
-// {
-// new SimpleInstruction(InstructionConstants.OP_BALOAD),
-// new SimpleInstruction(InstructionConstants.OP_I2S),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BALOAD),
-// },
-// },
-// { // (char)chars[...] = chars[...]
-// {
-// new SimpleInstruction(InstructionConstants.OP_CALOAD),
-// new SimpleInstruction(InstructionConstants.OP_I2C),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_CALOAD),
-// },
-// },
-// { // (short)shorts[...] = shorts[...]
-// {
-// new SimpleInstruction(InstructionConstants.OP_SALOAD),
-// new SimpleInstruction(InstructionConstants.OP_I2S),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_SALOAD),
-// },
-// },
-// { // bytes[...] = (byte)... = bytes[...] = ...
-// {
-// new SimpleInstruction(InstructionConstants.OP_I2B),
-// new SimpleInstruction(InstructionConstants.OP_BASTORE),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_BASTORE),
-// },
-// },
-// { // chars[...] = (char)... = chars[...] = ...
-// {
-// new SimpleInstruction(InstructionConstants.OP_I2C),
-// new SimpleInstruction(InstructionConstants.OP_CASTORE),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_CASTORE),
-// },
-// },
-// { // shorts[...] = (short)... = shorts[...] = ...
-// {
-// new SimpleInstruction(InstructionConstants.OP_I2S),
-// new SimpleInstruction(InstructionConstants.OP_SASTORE),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_SASTORE),
-// },
-// },
- };
-
- public static final Instruction[][][] BRANCH = new Instruction[][][]
- {
- { // goto +3 = nothing
- {
- new BranchInstruction(InstructionConstants.OP_GOTO, 3),
- },{
- // Nothing.
- },
- },
- { // ifeq +3 = pop
- {
- new BranchInstruction(InstructionConstants.OP_IFEQ, 3),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP),
- },
- },
- { // ifne +3 = pop
- {
- new BranchInstruction(InstructionConstants.OP_IFNE, 3),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP),
- },
- },
- { // iflt +3 = pop
- {
- new BranchInstruction(InstructionConstants.OP_IFLT, 3),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP),
- },
- },
- { // ifge +3 = pop
- {
- new BranchInstruction(InstructionConstants.OP_IFGE, 3),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP),
- },
- },
- { // ifgt +3 = pop
- {
- new BranchInstruction(InstructionConstants.OP_IFGT, 3),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP),
- },
- },
- { // ifle +3 = pop
- {
- new BranchInstruction(InstructionConstants.OP_IFLE, 3),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP),
- },
- },
- { // ificmpeq +3 = pop2
- {
- new BranchInstruction(InstructionConstants.OP_IFICMPEQ, 3),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP2),
- },
- },
- { // ificmpne +3 = pop2
- {
- new BranchInstruction(InstructionConstants.OP_IFICMPNE, 3),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP2),
- },
- },
- { // ificmplt +3 = pop2
- {
- new BranchInstruction(InstructionConstants.OP_IFICMPLT, 3),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP2),
- },
- },
- { // ificmpge +3 = pop2
- {
- new BranchInstruction(InstructionConstants.OP_IFICMPGE, 3),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP2),
- },
- },
- { // ificmpgt +3 = pop2
- {
- new BranchInstruction(InstructionConstants.OP_IFICMPGT, 3),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP2),
- },
- },
- { // ificmple +3 = pop2
- {
- new BranchInstruction(InstructionConstants.OP_IFICMPLE, 3),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP2),
- },
- },
- { // ifacmpeq +3 = pop2
- {
- new BranchInstruction(InstructionConstants.OP_IFACMPEQ, 3),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP2),
- },
- },
- { // ifacmpne +3 = pop2
- {
- new BranchInstruction(InstructionConstants.OP_IFACMPNE, 3),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP2),
- },
- },
- { // ifnull +3 = pop
- {
- new BranchInstruction(InstructionConstants.OP_IFNULL, 3),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP),
- },
- },
- { // ifnonnull +3 = pop
- {
- new BranchInstruction(InstructionConstants.OP_IFNONNULL, 3),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP),
- },
- },
- { // if (... == 0) = ifeq
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new BranchInstruction(InstructionConstants.OP_IFICMPEQ, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFEQ, X),
- },
- },
- { // if (0 == i) = iload/ifeq
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new VariableInstruction(InstructionConstants.OP_ILOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFICMPEQ, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFEQ, X),
- },
- },
- { // if (0 == i) = getstatic/ifeq
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFICMPEQ, X),
- },{
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFEQ, X),
- },
- },
- { // if (0 == i) = getfield/ifeq
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFICMPEQ, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFEQ, X),
- },
- },
- { // if (... != 0) = ifne
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new BranchInstruction(InstructionConstants.OP_IFICMPNE, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFNE, X),
- },
- },
- { // if (0 != i) = iload/ifeq
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new VariableInstruction(InstructionConstants.OP_ILOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFICMPNE, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFNE, X),
- },
- },
- { // if (0 != i) = getstatic/ifeq
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFICMPNE, X),
- },{
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFNE, X),
- },
- },
- { // if (0 != i) = getfield/ifeq
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFICMPNE, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFNE, X),
- },
- },
- { // if (... < 0) = iflt
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new BranchInstruction(InstructionConstants.OP_IFICMPLT, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFLT, X),
- },
- },
- { // if (... < 1) = ifle
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_1),
- new BranchInstruction(InstructionConstants.OP_IFICMPLT, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFLE, X),
- },
- },
- { // if (0 > i) = iload/iflt
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new VariableInstruction(InstructionConstants.OP_ILOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFICMPGT, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFLT, X),
- },
- },
- { // if (1 > i) = iload/ifle
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_1),
- new VariableInstruction(InstructionConstants.OP_ILOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFICMPGT, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFLE, X),
- },
- },
- { // if (0 > i) = getstatic/iflt
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFICMPGT, X),
- },{
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFLT, X),
- },
- },
- { // if (1 > i) = getstatic/ifle
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_1),
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFICMPGT, X),
- },{
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFLE, X),
- },
- },
- { // if (0 > i) = getfield/iflt
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFICMPGT, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFLT, X),
- },
- },
- { // if (1 > i) = getfield/ifle
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_1),
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFICMPGT, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFLE, X),
- },
- },
- { // if (... >= 0) = ifge
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new BranchInstruction(InstructionConstants.OP_IFICMPGE, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFGE, X),
- },
- },
- { // if (... >= 1) = ifgt
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_1),
- new BranchInstruction(InstructionConstants.OP_IFICMPGE, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFGT, X),
- },
- },
- { // if (0 <= i) = iload/ifge
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new VariableInstruction(InstructionConstants.OP_ILOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFICMPLE, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFGE, X),
- },
- },
- { // if (1 <= i) = iload/ifgt
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_1),
- new VariableInstruction(InstructionConstants.OP_ILOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFICMPLE, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFGT, X),
- },
- },
- { // if (0 <= i) = getstatic/ifge
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFICMPLE, X),
- },{
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFGE, X),
- },
- },
- { // if (1 <= i) = getstatic/ifgt
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_1),
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFICMPLE, X),
- },{
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFGT, X),
- },
- },
- { // if (0 <= i) = getfield/ifge
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFICMPLE, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFGE, X),
- },
- },
- { // if (1 <= i) = getfield/ifgt
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_1),
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFICMPLE, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFGT, X),
- },
- },
- { // if (... > 0) = ifgt
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new BranchInstruction(InstructionConstants.OP_IFICMPGT, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFGT, X),
- },
- },
- { // if (... > -1) = ifge
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_M1),
- new BranchInstruction(InstructionConstants.OP_IFICMPGT, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFGE, X),
- },
- },
- { // if (0 < i) = iload/ifgt
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new VariableInstruction(InstructionConstants.OP_ILOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFICMPLT, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFGT, X),
- },
- },
- { // if (-1 < i) = iload/ifge
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_M1),
- new VariableInstruction(InstructionConstants.OP_ILOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFICMPLT, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFGE, X),
- },
- },
- { // if (0 < i) = getstatic/ifgt
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFICMPLT, X),
- },{
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFGT, X),
- },
- },
- { // if (-1 < i) = getstatic/ifge
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_M1),
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFICMPLT, X),
- },{
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFGE, X),
- },
- },
- { // if (0 < i) = getfield/ifgt
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFICMPLT, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFGT, X),
- },
- },
- { // if (-1 < i) = getfield/ifge
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_M1),
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFICMPLT, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFGE, X),
- },
- },
- { // if (... <= 0) = ifle
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new BranchInstruction(InstructionConstants.OP_IFICMPLE, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFLE, X),
- },
- },
- { // if (... <= -1) = iflt
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_M1),
- new BranchInstruction(InstructionConstants.OP_IFICMPLE, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFLT, X),
- },
- },
- { // if (0 >= i) = iload/ifle
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new VariableInstruction(InstructionConstants.OP_ILOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFICMPGE, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFLE, X),
- },
- },
- { // if (-1 >= i) = iload/iflt
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_M1),
- new VariableInstruction(InstructionConstants.OP_ILOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFICMPGE, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFLT, X),
- },
- },
- { // if (0 >= i) = getstatic/ifle
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFICMPGE, X),
- },{
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFLE, X),
- },
- },
- { // if (-1 >= i) = getstatic/iflt
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_M1),
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFICMPGE, X),
- },{
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFLT, X),
- },
- },
- { // if (0 >= i) = getfield/ifle
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFICMPGE, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFLE, X),
- },
- },
- { // if (-1 >= i) = getfield/iflt
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_M1),
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFICMPGE, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFLT, X),
- },
- },
- { // if (... == null) = ifnull
- {
- new SimpleInstruction(InstructionConstants.OP_ACONST_NULL),
- new BranchInstruction(InstructionConstants.OP_IFACMPEQ, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFNULL, X),
- },
- },
- { // if (null == a) = aload/ifnull
- {
- new SimpleInstruction(InstructionConstants.OP_ACONST_NULL),
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFACMPEQ, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFNULL, X),
- },
- },
- { // if (null == a) = getstatic/ifnull
- {
- new SimpleInstruction(InstructionConstants.OP_ACONST_NULL),
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFACMPEQ, X),
- },{
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFNULL, X),
- },
- },
- { // if (null == a) = getfield/ifnull
- {
- new SimpleInstruction(InstructionConstants.OP_ACONST_NULL),
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFACMPEQ, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFNULL, X),
- },
- },
- { // if (... != null) = ifnonnull
- {
- new SimpleInstruction(InstructionConstants.OP_ACONST_NULL),
- new BranchInstruction(InstructionConstants.OP_IFACMPNE, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFNONNULL, X),
- },
- },
- { // if (null != a) = aload/ifnonnull
- {
- new SimpleInstruction(InstructionConstants.OP_ACONST_NULL),
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFACMPNE, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new BranchInstruction(InstructionConstants.OP_IFNONNULL, X),
- },
- },
- { // if (null != a) = getstatic/ifnonnull
- {
- new SimpleInstruction(InstructionConstants.OP_ACONST_NULL),
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFACMPNE, X),
- },{
- new ConstantInstruction(InstructionConstants.OP_GETSTATIC, Y),
- new BranchInstruction(InstructionConstants.OP_IFNONNULL, X),
- },
- },
- { // if (null != a) = getfield/ifnonnull
- {
- new SimpleInstruction(InstructionConstants.OP_ACONST_NULL),
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFACMPNE, X),
- },{
- new VariableInstruction(InstructionConstants.OP_ALOAD, Y),
- new ConstantInstruction(InstructionConstants.OP_GETFIELD, Z),
- new BranchInstruction(InstructionConstants.OP_IFNONNULL, X),
- },
- },
- { // iconst_0/ifeq = goto
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new BranchInstruction(InstructionConstants.OP_IFEQ, X),
- },{
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },
- },
- { // iconst/ifeq = nothing
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, A),
- new BranchInstruction(InstructionConstants.OP_IFEQ, X),
- },{
- // Nothing.
- },
- },
- { // bipush/ifeq = nothing
- {
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, A),
- new BranchInstruction(InstructionConstants.OP_IFEQ, X),
- },{
- // Nothing.
- },
- },
- { // sipush/ifeq = nothing
- {
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, A),
- new BranchInstruction(InstructionConstants.OP_IFEQ, X),
- },{
- // Nothing.
- },
- },
- { // iconst_0/ifne = nothing
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new BranchInstruction(InstructionConstants.OP_IFNE, X),
- },{
- // Nothing.
- },
- },
- { // iconst/ifne = goto
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, A),
- new BranchInstruction(InstructionConstants.OP_IFNE, X),
- },{
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },
- },
- { // bipush/ifne = goto
- {
- new SimpleInstruction(InstructionConstants.OP_BIPUSH, A),
- new BranchInstruction(InstructionConstants.OP_IFNE, X),
- },{
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },
- },
- { // sipush/ifne = goto
- {
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, A),
- new BranchInstruction(InstructionConstants.OP_IFNE, X),
- },{
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },
- },
- { // iconst_0/iflt = nothing
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new BranchInstruction(InstructionConstants.OP_IFLT, X),
- },{
- // Nothing.
- },
- },
- { // iconst_0/ifge = goto
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new BranchInstruction(InstructionConstants.OP_IFGE, X),
- },{
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },
- },
- { // iconst_0/ifgt = nothing
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new BranchInstruction(InstructionConstants.OP_IFGT, X),
- },{
- // Nothing.
- },
- },
- { // iconst_0/ifle = goto
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0),
- new BranchInstruction(InstructionConstants.OP_IFLE, X),
- },{
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },
- },
- { // aconst_null/ifnull = goto
- {
- new SimpleInstruction(InstructionConstants.OP_ACONST_NULL),
- new BranchInstruction(InstructionConstants.OP_IFNULL, X),
- },{
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },
- },
- { // aconst_null/ifnonnul = nothing
- {
- new SimpleInstruction(InstructionConstants.OP_ACONST_NULL),
- new BranchInstruction(InstructionConstants.OP_IFNONNULL, X),
- },{
- // Nothing.
- },
- },
- { // ifeq/goto = ifne
- {
- new BranchInstruction(InstructionConstants.OP_IFEQ, 6),
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFNE, X),
- },
- },
- { // ifne/goto = ifeq
- {
- new BranchInstruction(InstructionConstants.OP_IFNE, 6),
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFEQ, X),
- },
- },
- { // iflt/goto = ifge
- {
- new BranchInstruction(InstructionConstants.OP_IFLT, 6),
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFGE, X),
- },
- },
- { // ifge/goto = iflt
- {
- new BranchInstruction(InstructionConstants.OP_IFGE, 6),
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFLT, X),
- },
- },
- { // ifgt/goto = ifle
- {
- new BranchInstruction(InstructionConstants.OP_IFGT, 6),
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFLE, X),
- },
- },
- { // ifle/goto = ifgt
- {
- new BranchInstruction(InstructionConstants.OP_IFLE, 6),
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFGT, X),
- },
- },
- { // ificmpeq/goto = ificmpne
- {
- new BranchInstruction(InstructionConstants.OP_IFICMPEQ, 6),
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFICMPNE, X),
- },
- },
- { // ificmpne/goto = ificmpeq
- {
- new BranchInstruction(InstructionConstants.OP_IFICMPNE, 6),
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFICMPEQ, X),
- },
- },
- { // ificmplt/goto = ificmpge
- {
- new BranchInstruction(InstructionConstants.OP_IFICMPLT, 6),
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFICMPGE, X),
- },
- },
- { // ificmpge/goto = ificmplt
- {
- new BranchInstruction(InstructionConstants.OP_IFICMPGE, 6),
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFICMPLT, X),
- },
- },
- { // ificmpgt/goto = ificmple
- {
- new BranchInstruction(InstructionConstants.OP_IFICMPGT, 6),
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFICMPLE, X),
- },
- },
- { // ificmple/goto = ificmpgt
- {
- new BranchInstruction(InstructionConstants.OP_IFICMPLE, 6),
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFICMPGT, X),
- },
- },
- { // ifacmpeq/goto = ifacmpne
- {
- new BranchInstruction(InstructionConstants.OP_IFACMPEQ, 6),
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFACMPNE, X),
- },
- },
- { // ifacmpne/goto = ifacmpeq
- {
- new BranchInstruction(InstructionConstants.OP_IFACMPNE, 6),
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFACMPEQ, X),
- },
- },
- { // ifnull/goto = ifnonnull
- {
- new BranchInstruction(InstructionConstants.OP_IFNULL, 6),
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFNONNULL, X),
- },
- },
- { // ifnonnull/goto = ifnull
- {
- new BranchInstruction(InstructionConstants.OP_IFNONNULL, 6),
- new BranchInstruction(InstructionConstants.OP_GOTO, X),
- },{
- new BranchInstruction(InstructionConstants.OP_IFNULL, X),
- },
- },
-// { // switch (...) { default: ... } = pop/goto ...
-// {
-// new TableSwitchInstruction(InstructionConstants.OP_TABLESWITCH, A, X, Y, 0, new int[0]),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_POP),
-// new BranchInstruction(InstructionConstants.OP_GOTO, A),
-// },
-// },
-// { // switch (...) { default: ... } = pop/goto ...
-// {
-// new LookUpSwitchInstruction(InstructionConstants.OP_LOOKUPSWITCH, A, 0, new int[0], new int[0]),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_POP),
-// new BranchInstruction(InstructionConstants.OP_GOTO, A),
-// },
-// },
- { // switch (...) { case/case/default: ... } = switch (...) { case/default: ... }
- {
- new LookUpSwitchInstruction(InstructionConstants.OP_LOOKUPSWITCH, A, new int[] { X, Y }, new int[] { A, B }),
- },{
- new LookUpSwitchInstruction(InstructionConstants.OP_LOOKUPSWITCH, A, new int[] { Y }, new int[] { B }),
- },
- },
- { // switch (...) { case/case/default: ... } = switch (...) { case/default: ... }
- {
- new LookUpSwitchInstruction(InstructionConstants.OP_LOOKUPSWITCH, B, new int[] { X, Y }, new int[] { A, B }),
- },{
- new LookUpSwitchInstruction(InstructionConstants.OP_LOOKUPSWITCH, B, new int[] { X }, new int[] { A }),
- },
- },
- { // switch (...) { case/case/case/default: ... } = switch (...) { case/case/default: ... }
- {
- new LookUpSwitchInstruction(InstructionConstants.OP_LOOKUPSWITCH, A, new int[] { X, Y, Z }, new int[] { A, B, C }),
- },{
- new LookUpSwitchInstruction(InstructionConstants.OP_LOOKUPSWITCH, A, new int[] { Y, Z }, new int[] { B, C }),
- },
- },
- { // switch (...) { case/case/case/default: ... } = switch (...) { case/case/default: ... }
- {
- new LookUpSwitchInstruction(InstructionConstants.OP_LOOKUPSWITCH, B, new int[] { X, Y, Z }, new int[] { A, B, C }),
- },{
- new LookUpSwitchInstruction(InstructionConstants.OP_LOOKUPSWITCH, B, new int[] { X, Z }, new int[] { A, C }),
- },
- },
- { // switch (...) { case/case/case/default: ... } = switch (...) { case/case/default: ... }
- {
- new LookUpSwitchInstruction(InstructionConstants.OP_LOOKUPSWITCH, C, new int[] { X, Y, Z }, new int[] { A, B, C }),
- },{
- new LookUpSwitchInstruction(InstructionConstants.OP_LOOKUPSWITCH, C, new int[] { X, Y }, new int[] { A, B }),
- },
- },
-// { // switch (...) { case ...: ... default: ... }
-// // = if (... == ...) ... else ...
-// {
-// new TableSwitchInstruction(InstructionConstants.OP_TABLESWITCH, A, X, Y, 1, new int[] { B }),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, X),
-// new BranchInstruction(InstructionConstants.OP_IFICMPNE, A),
-// new BranchInstruction(InstructionConstants.OP_GOTO, B),
-// },
-// },
-// { // switch (...) { case ...: ... default: ... }
-// // = if (... == ...) ... else ...
-// {
-// new LookUpSwitchInstruction(InstructionConstants.OP_LOOKUPSWITCH, A, 1, new int[] { X }, new int[] { B }),
-// },{
-// new SimpleInstruction(InstructionConstants.OP_SIPUSH, X),
-// new BranchInstruction(InstructionConstants.OP_IFICMPNE, A),
-// new BranchInstruction(InstructionConstants.OP_GOTO, B),
-// },
-// }
- };
-
- public static final Instruction[][][] STRING = new Instruction[][][]
- {
- { // "...".equals("...") = true
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRING_EQUALS),
- },{
- new SimpleInstruction(InstructionConstants.OP_ICONST_1),
- },
- },
- { // "...".length() = ...
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRING_LENGTH),
- },{
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, STRING_A_LENGTH),
- },
- },
- { // String.valueOf(Z) = "....
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_Z),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, BOOLEAN_A_STRING),
- },
- },
- { // String.valueOf(C) = "...."
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_C),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, CHAR_A_STRING),
- },
- },
- { // String.valueOf(Cc) = "...."
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_C),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, CHAR_A_STRING),
- },
- },
- { // String.valueOf(I) = "...."
- {
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_I),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, INT_A_STRING),
- },
- },
- { // String.valueOf(Ic) = "...."
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_I),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, INT_A_STRING),
- },
- },
- { // String.valueOf(J) = "...."
- {
- new SimpleInstruction(InstructionConstants.OP_LCONST_0, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_J),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, LONG_A_STRING),
- },
- },
- { // String.valueOf(Jc) = "...."
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_J),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, LONG_A_STRING),
- },
- },
- { // String.valueOf(F) = "...."
- {
- new SimpleInstruction(InstructionConstants.OP_FCONST_0, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_F),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, FLOAT_A_STRING),
- },
- },
- { // String.valueOf(Fc) = "...."
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_F),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, FLOAT_A_STRING),
- },
- },
- { // String.valueOf(D) = "...."
- {
- new SimpleInstruction(InstructionConstants.OP_DCONST_0, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_D),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, DOUBLE_A_STRING),
- },
- },
- { // String.valueOf(Dc) = "...."
- {
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_D),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, DOUBLE_A_STRING),
- },
- },
-
- { // new StringBuffer("...").toString() = "..." (ignoring identity)
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUFFER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_TOSTRING),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- },
- },
- { // new StringBuffer(string).toString() = string (ignoring identity)
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUFFER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new VariableInstruction(InstructionConstants.OP_ALOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_TOSTRING),
- },{
- new VariableInstruction(InstructionConstants.OP_ALOAD, A),
- },
- },
- { // new StringBuffer("...").length() = length
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUFFER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_LENGTH),
- },{
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, STRING_A_LENGTH),
- },
- },
- { // new StringBuffer() (without dup) = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUFFER),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT),
- },{
- // Nothing.
- },
- },
- { // new StringBuffer("...") (without dup) = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUFFER),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },{
- // Nothing.
- },
- },
- { // new StringBuffer()/pop = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUFFER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- // Nothing.
- },
- },
- { // new StringBuffer("...")/pop = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUFFER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- // Nothing.
- },
- },
- { // new StringBuffer("...").append(z)/pop = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUFFER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new VariableInstruction(InstructionConstants.OP_ILOAD, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_Z),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- // Nothing.
- },
- },
- { // new StringBuffer("...").append(c)/pop = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUFFER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new VariableInstruction(InstructionConstants.OP_ILOAD, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_C),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- // Nothing.
- },
- },
- { // new StringBuffer("...").append(i)/pop = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUFFER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new VariableInstruction(InstructionConstants.OP_ILOAD, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_I),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- // Nothing.
- },
- },
- { // new StringBuffer("...").append(l)/pop = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUFFER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new VariableInstruction(InstructionConstants.OP_LLOAD, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_J),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- // Nothing.
- },
- },
- { // new StringBuffer("...").append(f)/pop = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUFFER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new VariableInstruction(InstructionConstants.OP_FLOAD, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_F),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- // Nothing.
- },
- },
- { // new StringBuffer("...").append(d)/pop = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUFFER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new VariableInstruction(InstructionConstants.OP_DLOAD, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_D),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- // Nothing.
- },
- },
- { // new StringBuffer("...").append(s)/pop = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUFFER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new VariableInstruction(InstructionConstants.OP_ALOAD, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- // Nothing.
- },
- },
- { // StringBuffer#toString()/pop = pop
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_TOSTRING),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP),
- },
- },
- { // StringBuffer#append("") = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_EMPTY),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- },{
- // Nothing.
- },
- },
- { // new StringBuffer().append(Z) = new StringBuffer("....")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT),
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_Z),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, BOOLEAN_A_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer().append(C) = new StringBuffer("....")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT),
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_C),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, CHAR_A_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer().append(Cc) = new StringBuffer("....")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_C),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, CHAR_A_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer().append(I) = new StringBuffer("....")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT),
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_I),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, INT_A_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer().append(Ic) = new StringBuffer("....")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_I),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, INT_A_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer().append(J) = new StringBuffer("....")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT),
- new SimpleInstruction(InstructionConstants.OP_LCONST_0, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_J),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, LONG_A_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer().append(Jc) = new StringBuffer("....")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT),
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_J),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, LONG_A_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer().append(F) = new StringBuffer("....")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT),
- new SimpleInstruction(InstructionConstants.OP_FCONST_0, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_F),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, FLOAT_A_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer().append(Fc) = new StringBuffer("....")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_F),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, FLOAT_A_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer().append(D) = new StringBuffer("....")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT),
- new SimpleInstruction(InstructionConstants.OP_DCONST_0, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_D),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, DOUBLE_A_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer().append(Dc) = new StringBuffer("....")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT),
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_D),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, DOUBLE_A_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer().append("...") = new StringBuffer("...")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer("...").append(Z) = new StringBuffer("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_Z),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | BOOLEAN_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer("...").append(C) = new StringBuffer("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_C),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | CHAR_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer("...").append(Cc) = new StringBuffer("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_C),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | CHAR_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer("...").append(I) = new StringBuffer("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_I),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | INT_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer("...").append(Ic) = new StringBuffer("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_I),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | INT_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer("...").append(J) = new StringBuffer("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new SimpleInstruction(InstructionConstants.OP_LCONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_J),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | LONG_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer("...").append(Jc) = new StringBuffer("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_J),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | LONG_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer("...").append(F) = new StringBuffer("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new SimpleInstruction(InstructionConstants.OP_FCONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_F),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | FLOAT_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer("...").append(Fc) = new StringBuffer("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_F),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | FLOAT_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer("...").append(D) = new StringBuffer("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new SimpleInstruction(InstructionConstants.OP_DCONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_D),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | DOUBLE_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer("...").append(Dc) = new StringBuffer("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_D),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | DOUBLE_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // new StringBuffer("...").append("...") = new StringBuffer("......")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | STRING_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT_STRING),
- },
- },
- { // StringBuffer#append("...").append(Z) = StringBuffer#append("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_Z),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | BOOLEAN_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- },
- },
- { // StringBuffer#append("...").append(C) = StringBuffer#append("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_C),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | CHAR_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- },
- },
- { // StringBuffer#append("...").append(Cc) = StringBuffer#append("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_C),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | CHAR_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- },
- },
- { // StringBuffer#append("...").append(I) = StringBuffer#append("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_I),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | INT_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- },
- },
- { // StringBuffer#append("...").append(Ic) = StringBuffer#append("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_I),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | INT_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- },
- },
- { // StringBuffer#append("...").append(J) = StringBuffer#append("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- new SimpleInstruction(InstructionConstants.OP_LCONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_J),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | LONG_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- },
- },
- { // StringBuffer#append("...").append(Jc) = StringBuffer#append("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_J),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | LONG_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- },
- },
- { // StringBuffer#append("...").append(F) = StringBuffer#append("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- new SimpleInstruction(InstructionConstants.OP_FCONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_F),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | FLOAT_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- },
- },
- { // StringBuffer#append("...").append(Fc) = StringBuffer#append("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_F),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | FLOAT_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- },
- },
- { // StringBuffer#append("...").append(D) = StringBuffer#append("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- new SimpleInstruction(InstructionConstants.OP_DCONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_D),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | DOUBLE_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- },
- },
- { // StringBuffer#append("...").append(Dc) = StringBuffer#append("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_D),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | DOUBLE_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- },
- },
- { // StringBuffer#append("...").append("...") = StringBuffer#append("......")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | STRING_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- },
- },
- { // new StringBuffer().append(z).toString() = String.valueOf(z)
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUFFER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT),
- new VariableInstruction(InstructionConstants.OP_ILOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_Z),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_TOSTRING),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_Z),
- },
- },
- { // new StringBuffer().append(c).toString() = String.valueOf(c)
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUFFER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT),
- new VariableInstruction(InstructionConstants.OP_ILOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_C),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_TOSTRING),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_C),
- },
- },
- { // new StringBuffer().append(i).toString() = String.valueOf(i)
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUFFER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT),
- new VariableInstruction(InstructionConstants.OP_ILOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_I),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_TOSTRING),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_I),
- },
- },
- { // new StringBuffer().append(j).toString() = String.valueOf(j)
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUFFER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT),
- new VariableInstruction(InstructionConstants.OP_LLOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_J),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_TOSTRING),
- },{
- new VariableInstruction(InstructionConstants.OP_LLOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_J),
- },
- },
- { // new StringBuffer().append(f).toString() = String.valueOf(f)
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUFFER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT),
- new VariableInstruction(InstructionConstants.OP_FLOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_F),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_TOSTRING),
- },{
- new VariableInstruction(InstructionConstants.OP_FLOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_F),
- },
- },
- { // new StringBuffer().append(d).toString() = String.valueOf(d)
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUFFER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT),
- new VariableInstruction(InstructionConstants.OP_DLOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_D),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_TOSTRING),
- },{
- new VariableInstruction(InstructionConstants.OP_DLOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_D),
- },
- },
- { // new StringBuffer().append(string).toString() = string
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUFFER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT),
- new VariableInstruction(InstructionConstants.OP_ALOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_TOSTRING),
- },{
- new VariableInstruction(InstructionConstants.OP_ALOAD, A),
- },
- },
- { // new StringBuffer().append(object).toString() = String.valueOf(object)
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUFFER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUFFER_INIT),
- new VariableInstruction(InstructionConstants.OP_ALOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_APPEND_OBJECT),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUFFER_TOSTRING),
- },{
- new VariableInstruction(InstructionConstants.OP_ALOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_OBJECT),
- },
- },
-
- { // new StringBuilder("...").toString() = "..." (ignoring identity)
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUILDER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_TOSTRING),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- },
- },
- { // new StringBuilder(string).toString() = string (ignoring identity)
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUILDER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new VariableInstruction(InstructionConstants.OP_ALOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_TOSTRING),
- },{
- new VariableInstruction(InstructionConstants.OP_ALOAD, A),
- },
- },
- { // new StringBuilder("...").length() = length
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUILDER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_LENGTH),
- },{
- new SimpleInstruction(InstructionConstants.OP_SIPUSH, STRING_A_LENGTH),
- },
- },
- { // new StringBuilder() (without dup) = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUILDER),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT),
- },{
- // Nothing.
- },
- },
- { // new StringBuilder("...") (without dup) = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUILDER),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },{
- // Nothing.
- },
- },
- { // new StringBuilder()/pop = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUILDER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- // Nothing.
- },
- },
- { // new StringBuilder("...")/pop = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUILDER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- // Nothing.
- },
- },
- { // new StringBuilder("...").append(z)/pop = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUILDER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new VariableInstruction(InstructionConstants.OP_ILOAD, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_Z),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- // Nothing.
- },
- },
- { // new StringBuilder("...").append(c)/pop = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUILDER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new VariableInstruction(InstructionConstants.OP_ILOAD, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_C),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- // Nothing.
- },
- },
- { // new StringBuilder("...").append(i)/pop = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUILDER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new VariableInstruction(InstructionConstants.OP_ILOAD, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_I),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- // Nothing.
- },
- },
- { // new StringBuilder("...").append(l)/pop = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUILDER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new VariableInstruction(InstructionConstants.OP_LLOAD, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_J),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- // Nothing.
- },
- },
- { // new StringBuilder("...").append(f)/pop = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUILDER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new VariableInstruction(InstructionConstants.OP_FLOAD, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_F),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- // Nothing.
- },
- },
- { // new StringBuilder("...").append(d)/pop = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUILDER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new VariableInstruction(InstructionConstants.OP_DLOAD, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_D),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- // Nothing.
- },
- },
- { // new StringBuilder("...").append(s)/pop = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUILDER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new VariableInstruction(InstructionConstants.OP_ALOAD, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- // Nothing.
- },
- },
- { // StringBuilder#toString()/pop = pop
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_TOSTRING),
- new SimpleInstruction(InstructionConstants.OP_POP),
- },{
- new SimpleInstruction(InstructionConstants.OP_POP),
- },
- },
- { // StringBuilder#append("") = nothing
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_EMPTY),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- },{
- // Nothing.
- },
- },
- { // new StringBuilder().append(Z) = new StringBuilder("....")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT),
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_Z),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, BOOLEAN_A_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder().append(C) = new StringBuilder("....")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT),
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_C),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, CHAR_A_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder().append(Cc) = new StringBuilder("....")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_C),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, CHAR_A_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder().append(I) = new StringBuilder("....")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT),
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_I),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, INT_A_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder().append(Ic) = new StringBuilder("....")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_I),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, INT_A_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder().append(J) = new StringBuilder("....")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT),
- new SimpleInstruction(InstructionConstants.OP_LCONST_0, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_J),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, LONG_A_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder().append(Jc) = new StringBuilder("....")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT),
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_J),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, LONG_A_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder().append(F) = new StringBuilder("....")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT),
- new SimpleInstruction(InstructionConstants.OP_FCONST_0, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_F),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, FLOAT_A_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder().append(Fc) = new StringBuilder("....")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_F),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, FLOAT_A_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder().append(D) = new StringBuilder("....")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT),
- new SimpleInstruction(InstructionConstants.OP_DCONST_0, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_D),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, DOUBLE_A_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder().append(Dc) = new StringBuilder("....")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT),
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_D),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, DOUBLE_A_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder().append("...") = new StringBuilder("...")
- {
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT),
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder("...").append(Z) = new StringBuilder("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_Z),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | BOOLEAN_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder("...").append(C) = new StringBuilder("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_C),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | CHAR_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder("...").append(Cc) = new StringBuilder("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_C),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | CHAR_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder("...").append(I) = new StringBuilder("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_I),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | INT_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder("...").append(Ic) = new StringBuilder("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_I),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | INT_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder("...").append(J) = new StringBuilder("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new SimpleInstruction(InstructionConstants.OP_LCONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_J),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | LONG_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder("...").append(Jc) = new StringBuilder("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_J),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | LONG_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder("...").append(F) = new StringBuilder("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new SimpleInstruction(InstructionConstants.OP_FCONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_F),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | FLOAT_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder("...").append(Fc) = new StringBuilder("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_F),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | FLOAT_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder("...").append(D) = new StringBuilder("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new SimpleInstruction(InstructionConstants.OP_DCONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_D),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | DOUBLE_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder("...").append(Dc) = new StringBuilder("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_D),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | DOUBLE_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // new StringBuilder("...").append("...") = new StringBuilder("......")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | STRING_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT_STRING),
- },
- },
- { // StringBuilder#append("...").append(Z) = StringBuilder#append("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_Z),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | BOOLEAN_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- },
- },
- { // StringBuilder#append("...").append(C) = StringBuilder#append("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_C),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | CHAR_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- },
- },
- { // StringBuilder#append("...").append(Cc) = StringBuilder#append("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_C),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | CHAR_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- },
- },
- { // StringBuilder#append("...").append(I) = StringBuilder#append("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- new SimpleInstruction(InstructionConstants.OP_ICONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_I),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | INT_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- },
- },
- { // StringBuilder#append("...").append(Ic) = StringBuilder#append("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_I),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | INT_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- },
- },
- { // StringBuilder#append("...").append(J) = StringBuilder#append("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- new SimpleInstruction(InstructionConstants.OP_LCONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_J),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | LONG_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- },
- },
- { // StringBuilder#append("...").append(Jc) = StringBuilder#append("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_J),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | LONG_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- },
- },
- { // StringBuilder#append("...").append(F) = StringBuilder#append("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- new SimpleInstruction(InstructionConstants.OP_FCONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_F),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | FLOAT_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- },
- },
- { // StringBuilder#append("...").append(Fc) = StringBuilder#append("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_F),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | FLOAT_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- },
- },
- { // StringBuilder#append("...").append(D) = StringBuilder#append("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- new SimpleInstruction(InstructionConstants.OP_DCONST_0, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_D),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | DOUBLE_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- },
- },
- { // StringBuilder#append("...").append(Dc) = StringBuilder#append("....")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC2_W, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_D),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | DOUBLE_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- },
- },
- { // StringBuilder#append("...").append("...") = StringBuilder#append("......")
- {
- new ConstantInstruction(InstructionConstants.OP_LDC, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- new ConstantInstruction(InstructionConstants.OP_LDC, B),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- },{
- new ConstantInstruction(InstructionConstants.OP_LDC, STRING_A_STRING | STRING_B_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- },
- },
- { // new StringBuilder().append(z).toString() = String.valueOf(z)
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUILDER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT),
- new VariableInstruction(InstructionConstants.OP_ILOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_Z),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_TOSTRING),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_Z),
- },
- },
- { // new StringBuilder().append(c).toString() = String.valueOf(c)
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUILDER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT),
- new VariableInstruction(InstructionConstants.OP_ILOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_C),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_TOSTRING),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_C),
- },
- },
- { // new StringBuilder().append(i).toString() = String.valueOf(i)
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUILDER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT),
- new VariableInstruction(InstructionConstants.OP_ILOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_I),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_TOSTRING),
- },{
- new VariableInstruction(InstructionConstants.OP_ILOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_I),
- },
- },
- { // new StringBuilder().append(j).toString() = String.valueOf(j)
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUILDER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT),
- new VariableInstruction(InstructionConstants.OP_LLOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_J),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_TOSTRING),
- },{
- new VariableInstruction(InstructionConstants.OP_LLOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_J),
- },
- },
- { // new StringBuilder().append(f).toString() = String.valueOf(f)
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUILDER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT),
- new VariableInstruction(InstructionConstants.OP_FLOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_F),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_TOSTRING),
- },{
- new VariableInstruction(InstructionConstants.OP_FLOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_F),
- },
- },
- { // new StringBuilder().append(d).toString() = String.valueOf(d)
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUILDER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT),
- new VariableInstruction(InstructionConstants.OP_DLOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_D),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_TOSTRING),
- },{
- new VariableInstruction(InstructionConstants.OP_DLOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_D),
- },
- },
- { // new StringBuilder().append(string).toString() = string
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUILDER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT),
- new VariableInstruction(InstructionConstants.OP_ALOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_STRING),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_TOSTRING),
- },{
- new VariableInstruction(InstructionConstants.OP_ALOAD, A),
- },
- },
- { // new StringBuilder().append(object).toString() = String.valueOf(object)
- {
- new ConstantInstruction(InstructionConstants.OP_NEW, CLASS_STRINGBUILDER),
- new SimpleInstruction(InstructionConstants.OP_DUP),
- new ConstantInstruction(InstructionConstants.OP_INVOKESPECIAL, METHOD_STRINGBUILDER_INIT),
- new VariableInstruction(InstructionConstants.OP_ALOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_APPEND_OBJECT),
- new ConstantInstruction(InstructionConstants.OP_INVOKEVIRTUAL, METHOD_STRINGBUILDER_TOSTRING),
- },{
- new VariableInstruction(InstructionConstants.OP_ALOAD, A),
- new ConstantInstruction(InstructionConstants.OP_INVOKESTATIC, METHOD_STRING_VALUEOF_OBJECT),
- },
- },
- };
-
-
- /**
- * Prints out the constants and the instruction sequences.
- */
- public static void main(String[] args)
- {
- ProgramClass clazz = new ProgramClass();
- clazz.constantPool = CONSTANTS;
-
- ClassPrinter printer = new ClassPrinter();
-
- for (int index = 0; index < CONSTANTS.length; index++)
- {
- System.out.print("["+index+"] ");
- try
- {
- CONSTANTS[index].accept(clazz, printer);
- }
- catch (Exception e)
- {
- System.out.println("("+e.getClass().getName()+")");
- }
- }
-
- if (CONSTANTS.length != SENTINEL)
- {
- throw new IllegalStateException("Constants length ["+CONSTANTS.length+"] different from number of constant names ["+SENTINEL+"]");
- }
-
- Instruction[][][] sequences = STRING;
-
- for (int sequence = 0; sequence < sequences.length; sequence++)
- {
- System.out.println();
- Instruction[] instructions = sequences[sequence][0];
- for (int index = 0; index < instructions.length; index++)
- {
- Instruction instruction = instructions[index];
- try
- {
- instruction.accept(clazz, null, null, index, new ClassPrinter());
- }
- catch (Exception e) {}
- }
-
- System.out.println("=>");
- instructions = sequences[sequence][1];
- for (int index = 0; index < instructions.length; index++)
- {
- Instruction instruction = instructions[index];
- try
- {
- instruction.accept(clazz, null, null, index, new ClassPrinter());
- }
- catch (Exception e) {}
- }
- }
- }
-}