169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal/*
269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal * Javassist, a Java-bytecode translator toolkit.
369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal * Copyright (C) 1999-2007 Shigeru Chiba. All Rights Reserved.
469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal *
569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal * The contents of this file are subject to the Mozilla Public License Version
669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal * 1.1 (the "License"); you may not use this file except in compliance with
769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal * the License.  Alternatively, the contents of this file may be used under
869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal * the terms of the GNU Lesser General Public License Version 2.1 or later.
969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal *
1069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal * Software distributed under the License is distributed on an "AS IS" basis,
1169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
1269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal * for the specific language governing rights and limitations under the
1369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal * License.
1469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal */
1569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
1669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalpackage javassist.bytecode;
1769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
1869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal/**
1969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal * JVM Instruction Set.
2069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal *
2169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal * <p>This interface defines opcodes and
2269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal * array types for the NEWARRAY instruction.
2369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal *
2469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal * @see Mnemonic
2569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal */
2669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalpublic interface Opcode {
2769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    /* Opcodes */
2869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
2969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int AALOAD = 50;
3069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int AASTORE = 83;
3169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ACONST_NULL = 1;
3269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ALOAD = 25;
3369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ALOAD_0 = 42;
3469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ALOAD_1 = 43;
3569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ALOAD_2 = 44;
3669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ALOAD_3 = 45;
3769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ANEWARRAY = 189;
3869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ARETURN = 176;
3969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ARRAYLENGTH = 190;
4069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ASTORE = 58;
4169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ASTORE_0 = 75;
4269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ASTORE_1 = 76;
4369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ASTORE_2 = 77;
4469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ASTORE_3 = 78;
4569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ATHROW = 191;
4669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int BALOAD = 51;
4769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int BASTORE = 84;
4869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int BIPUSH = 16;
4969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int CALOAD = 52;
5069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int CASTORE = 85;
5169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int CHECKCAST = 192;
5269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int D2F = 144;
5369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int D2I = 142;
5469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int D2L = 143;
5569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DADD = 99;
5669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DALOAD = 49;
5769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DASTORE = 82;
5869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DCMPG = 152;
5969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DCMPL = 151;
6069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DCONST_0 = 14;
6169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DCONST_1 = 15;
6269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DDIV = 111;
6369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DLOAD = 24;
6469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DLOAD_0 = 38;
6569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DLOAD_1 = 39;
6669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DLOAD_2 = 40;
6769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DLOAD_3 = 41;
6869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DMUL = 107;
6969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DNEG = 119;
7069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DREM = 115;
7169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DRETURN = 175;
7269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DSTORE = 57;
7369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DSTORE_0 = 71;
7469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DSTORE_1 = 72;
7569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DSTORE_2 = 73;
7669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DSTORE_3 = 74;
7769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DSUB = 103;
7869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DUP = 89;
7969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DUP2 = 92;
8069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DUP2_X1 = 93;
8169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DUP2_X2 = 94;
8269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DUP_X1 = 90;
8369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int DUP_X2 = 91;
8469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int F2D = 141;
8569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int F2I = 139;
8669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int F2L = 140;
8769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FADD = 98;
8869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FALOAD = 48;
8969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FASTORE = 81;
9069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FCMPG = 150;
9169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FCMPL = 149;
9269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FCONST_0 = 11;
9369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FCONST_1 = 12;
9469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FCONST_2 = 13;
9569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FDIV = 110;
9669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FLOAD = 23;
9769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FLOAD_0 = 34;
9869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FLOAD_1 = 35;
9969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FLOAD_2 = 36;
10069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FLOAD_3 = 37;
10169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FMUL = 106;
10269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FNEG = 118;
10369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FREM = 114;
10469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FRETURN = 174;
10569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FSTORE = 56;
10669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FSTORE_0 = 67;
10769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FSTORE_1 = 68;
10869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FSTORE_2 = 69;
10969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FSTORE_3 = 70;
11069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int FSUB = 102;
11169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int GETFIELD = 180;
11269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int GETSTATIC = 178;
11369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int GOTO = 167;
11469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int GOTO_W = 200;
11569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int I2B = 145;
11669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int I2C = 146;
11769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int I2D = 135;
11869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int I2F = 134;
11969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int I2L = 133;
12069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int I2S = 147;
12169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IADD = 96;
12269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IALOAD = 46;
12369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IAND = 126;
12469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IASTORE = 79;
12569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ICONST_0 = 3;
12669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ICONST_1 = 4;
12769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ICONST_2 = 5;
12869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ICONST_3 = 6;
12969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ICONST_4 = 7;
13069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ICONST_5 = 8;
13169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ICONST_M1 = 2;
13269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IDIV = 108;
13369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IFEQ = 153;
13469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IFGE = 156;
13569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IFGT = 157;
13669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IFLE = 158;
13769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IFLT = 155;
13869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IFNE = 154;
13969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IFNONNULL = 199;
14069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IFNULL = 198;
14169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IF_ACMPEQ = 165;
14269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IF_ACMPNE = 166;
14369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IF_ICMPEQ = 159;
14469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IF_ICMPGE = 162;
14569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IF_ICMPGT = 163;
14669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IF_ICMPLE = 164;
14769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IF_ICMPLT = 161;
14869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IF_ICMPNE = 160;
14969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IINC = 132;
15069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ILOAD = 21;
15169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ILOAD_0 = 26;
15269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ILOAD_1 = 27;
15369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ILOAD_2 = 28;
15469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ILOAD_3 = 29;
15569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IMUL = 104;
15669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int INEG = 116;
15769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int INSTANCEOF = 193;
15869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int INVOKEINTERFACE = 185;
15969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int INVOKESPECIAL = 183;
16069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int INVOKESTATIC = 184;
16169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int INVOKEVIRTUAL = 182;
16269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IOR = 128;
16369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IREM = 112;
16469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IRETURN = 172;
16569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ISHL = 120;
16669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ISHR = 122;
16769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ISTORE = 54;
16869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ISTORE_0 = 59;
16969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ISTORE_1 = 60;
17069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ISTORE_2 = 61;
17169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ISTORE_3 = 62;
17269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int ISUB = 100;
17369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IUSHR = 124;
17469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int IXOR = 130;
17569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int JSR = 168;
17669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int JSR_W = 201;
17769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int L2D = 138;
17869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int L2F = 137;
17969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int L2I = 136;
18069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LADD = 97;
18169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LALOAD = 47;
18269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LAND = 127;
18369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LASTORE = 80;
18469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LCMP = 148;
18569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LCONST_0 = 9;
18669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LCONST_1 = 10;
18769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LDC = 18;
18869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LDC2_W = 20;
18969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LDC_W = 19;
19069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LDIV = 109;
19169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LLOAD = 22;
19269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LLOAD_0 = 30;
19369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LLOAD_1 = 31;
19469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LLOAD_2 = 32;
19569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LLOAD_3 = 33;
19669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LMUL = 105;
19769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LNEG = 117;
19869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LOOKUPSWITCH = 171;
19969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LOR = 129;
20069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LREM = 113;
20169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LRETURN = 173;
20269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LSHL = 121;
20369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LSHR = 123;
20469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LSTORE = 55;
20569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LSTORE_0 = 63;
20669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LSTORE_1 = 64;
20769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LSTORE_2 = 65;
20869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LSTORE_3 = 66;
20969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LSUB = 101;
21069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LUSHR = 125;
21169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int LXOR = 131;
21269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int MONITORENTER = 194;
21369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int MONITOREXIT = 195;
21469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int MULTIANEWARRAY = 197;
21569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int NEW = 187;
21669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int NEWARRAY = 188;
21769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int NOP = 0;
21869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int POP = 87;
21969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int POP2 = 88;
22069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int PUTFIELD = 181;
22169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int PUTSTATIC = 179;
22269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int RET = 169;
22369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int RETURN = 177;
22469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int SALOAD = 53;
22569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int SASTORE = 86;
22669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int SIPUSH = 17;
22769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int SWAP = 95;
22869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int TABLESWITCH = 170;
22969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int WIDE = 196;
23069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
23169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    /* array-type code for the newarray instruction */
23269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
23369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int T_BOOLEAN = 4;
23469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int T_CHAR = 5;
23569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int T_FLOAT = 6;
23669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int T_DOUBLE = 7;
23769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int T_BYTE = 8;
23869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int T_SHORT = 9;
23969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int T_INT = 10;
24069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int T_LONG = 11;
24169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
24269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    /* how many values are pushed on the operand stack. */
24369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    int[] STACK_GROW = {
24469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // nop, 0
24569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // aconst_null, 1
24669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // iconst_m1, 2
24769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // iconst_0, 3
24869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // iconst_1, 4
24969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // iconst_2, 5
25069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // iconst_3, 6
25169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // iconst_4, 7
25269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // iconst_5, 8
25369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        2, // lconst_0, 9
25469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        2, // lconst_1, 10
25569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // fconst_0, 11
25669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // fconst_1, 12
25769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // fconst_2, 13
25869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        2, // dconst_0, 14
25969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        2, // dconst_1, 15
26069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // bipush, 16
26169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // sipush, 17
26269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // ldc, 18
26369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // ldc_w, 19
26469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        2, // ldc2_w, 20
26569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // iload, 21
26669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        2, // lload, 22
26769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // fload, 23
26869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        2, // dload, 24
26969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // aload, 25
27069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // iload_0, 26
27169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // iload_1, 27
27269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // iload_2, 28
27369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // iload_3, 29
27469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        2, // lload_0, 30
27569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        2, // lload_1, 31
27669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        2, // lload_2, 32
27769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        2, // lload_3, 33
27869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // fload_0, 34
27969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // fload_1, 35
28069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // fload_2, 36
28169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // fload_3, 37
28269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        2, // dload_0, 38
28369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        2, // dload_1, 39
28469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        2, // dload_2, 40
28569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        2, // dload_3, 41
28669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // aload_0, 42
28769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // aload_1, 43
28869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // aload_2, 44
28969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // aload_3, 45
29069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // iaload, 46
29169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // laload, 47
29269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // faload, 48
29369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // daload, 49
29469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // aaload, 50
29569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // baload, 51
29669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // caload, 52
29769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // saload, 53
29869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // istore, 54
29969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // lstore, 55
30069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // fstore, 56
30169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // dstore, 57
30269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // astore, 58
30369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // istore_0, 59
30469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // istore_1, 60
30569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // istore_2, 61
30669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // istore_3, 62
30769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // lstore_0, 63
30869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // lstore_1, 64
30969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // lstore_2, 65
31069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // lstore_3, 66
31169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // fstore_0, 67
31269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // fstore_1, 68
31369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // fstore_2, 69
31469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // fstore_3, 70
31569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // dstore_0, 71
31669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // dstore_1, 72
31769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // dstore_2, 73
31869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // dstore_3, 74
31969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // astore_0, 75
32069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // astore_1, 76
32169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // astore_2, 77
32269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // astore_3, 78
32369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -3, // iastore, 79
32469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -4, // lastore, 80
32569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -3, // fastore, 81
32669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -4, // dastore, 82
32769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -3, // aastore, 83
32869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -3, // bastore, 84
32969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -3, // castore, 85
33069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -3, // sastore, 86
33169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // pop, 87
33269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // pop2, 88
33369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // dup, 89
33469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // dup_x1, 90
33569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // dup_x2, 91
33669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        2, // dup2, 92
33769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        2, // dup2_x1, 93
33869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        2, // dup2_x2, 94
33969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // swap, 95
34069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // iadd, 96
34169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // ladd, 97
34269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // fadd, 98
34369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // dadd, 99
34469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // isub, 100
34569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // lsub, 101
34669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // fsub, 102
34769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // dsub, 103
34869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // imul, 104
34969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // lmul, 105
35069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // fmul, 106
35169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // dmul, 107
35269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // idiv, 108
35369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // ldiv, 109
35469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // fdiv, 110
35569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // ddiv, 111
35669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // irem, 112
35769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // lrem, 113
35869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // frem, 114
35969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // drem, 115
36069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // ineg, 116
36169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // lneg, 117
36269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // fneg, 118
36369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // dneg, 119
36469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // ishl, 120
36569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // lshl, 121
36669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // ishr, 122
36769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // lshr, 123
36869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // iushr, 124
36969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // lushr, 125
37069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // iand, 126
37169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // land, 127
37269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // ior, 128
37369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // lor, 129
37469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // ixor, 130
37569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // lxor, 131
37669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // iinc, 132
37769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // i2l, 133
37869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // i2f, 134
37969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // i2d, 135
38069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // l2i, 136
38169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // l2f, 137
38269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // l2d, 138
38369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // f2i, 139
38469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // f2l, 140
38569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // f2d, 141
38669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // d2i, 142
38769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // d2l, 143
38869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // d2f, 144
38969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // i2b, 145
39069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // i2c, 146
39169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // i2s, 147
39269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -3, // lcmp, 148
39369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // fcmpl, 149
39469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // fcmpg, 150
39569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -3, // dcmpl, 151
39669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -3, // dcmpg, 152
39769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // ifeq, 153
39869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // ifne, 154
39969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // iflt, 155
40069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // ifge, 156
40169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // ifgt, 157
40269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // ifle, 158
40369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // if_icmpeq, 159
40469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // if_icmpne, 160
40569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // if_icmplt, 161
40669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // if_icmpge, 162
40769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // if_icmpgt, 163
40869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // if_icmple, 164
40969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // if_acmpeq, 165
41069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // if_acmpne, 166
41169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // goto, 167
41269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // jsr, 168
41369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // ret, 169
41469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // tableswitch, 170
41569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // lookupswitch, 171
41669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // ireturn, 172
41769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // lreturn, 173
41869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // freturn, 174
41969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -2, // dreturn, 175
42069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // areturn, 176
42169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // return, 177
42269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // getstatic, 178            depends on the type
42369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // putstatic, 179            depends on the type
42469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // getfield, 180             depends on the type
42569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // putfield, 181             depends on the type
42669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // invokevirtual, 182        depends on the type
42769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // invokespecial, 183        depends on the type
42869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // invokestatic, 184         depends on the type
42969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // invokeinterface, 185      depends on the type
43069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // undefined, 186
43169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1, // new, 187
43269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // newarray, 188
43369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // anewarray, 189
43469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // arraylength, 190
43569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // athrow, 191              stack is cleared
43669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // checkcast, 192
43769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // instanceof, 193
43869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // monitorenter, 194
43969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // monitorexit, 195
44069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // wide, 196                 depends on the following opcode
44169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // multianewarray, 197       depends on the dimensions
44269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // ifnull, 198
44369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        -1, // ifnonnull, 199
44469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        0, // goto_w, 200
44569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        1 // jsr_w, 201
44669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    };
44769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal}
448