jjg@46: /* xdono@54: * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. jjg@46: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. jjg@46: * jjg@46: * This code is free software; you can redistribute it and/or modify it jjg@46: * under the terms of the GNU General Public License version 2 only, as jjg@46: * published by the Free Software Foundation. Sun designates this jjg@46: * particular file as subject to the "Classpath" exception as provided jjg@46: * by Sun in the LICENSE file that accompanied this code. jjg@46: * jjg@46: * This code is distributed in the hope that it will be useful, but WITHOUT jjg@46: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or jjg@46: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License jjg@46: * version 2 for more details (a copy is included in the LICENSE file that jjg@46: * accompanied this code). jjg@46: * jjg@46: * You should have received a copy of the GNU General Public License version jjg@46: * 2 along with this work; if not, write to the Free Software Foundation, jjg@46: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. jjg@46: * jjg@46: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, jjg@46: * CA 95054 USA or visit www.sun.com if you need additional information or jjg@46: * have any questions. jjg@46: */ jjg@46: jjg@46: package com.sun.tools.classfile; jjg@46: jjg@46: import java.util.HashMap; jjg@46: jjg@46: /** jjg@46: * See JVMS3, section 6. jjg@46: * jjg@46: *
This is NOT part of any API supported by Sun Microsystems. If
jjg@46: * you write code that depends on this, you do so at your own risk.
jjg@46: * This code and its internal interfaces are subject to change or
jjg@46: * deletion without notice.
jjg@46: */
jjg@46: public class OpCodes {
jjg@46:
jjg@46: public static int opcLength(int opc) throws IllegalArgumentException {
jjg@46: switch (opc >> 8) {
jjg@46: case 0:
jjg@46: return opcLengthsTab[opc];
jjg@46: case opc_wide:
jjg@46: switch (opc & 0xFF) {
jjg@46: case opc_aload:
jjg@46: case opc_astore:
jjg@46: case opc_fload:
jjg@46: case opc_fstore:
jjg@46: case opc_iload:
jjg@46: case opc_istore:
jjg@46: case opc_lload:
jjg@46: case opc_lstore:
jjg@46: case opc_dload:
jjg@46: case opc_dstore:
jjg@46: case opc_ret:
jjg@46: return 4;
jjg@46: case opc_iinc:
jjg@46: return 6;
jjg@46: default:
jjg@46: throw new IllegalArgumentException();
jjg@46: }
jjg@46: case opc_nonpriv:
jjg@46: case opc_priv:
jjg@46: return 2;
jjg@46: default:
jjg@46: throw new IllegalArgumentException();
jjg@46: }
jjg@46: }
jjg@46:
jjg@46: public static String opcName(int opc) {
jjg@46: try {
jjg@46: switch (opc >> 8) {
jjg@46: case 0:
jjg@46: return opcNamesTab[opc];
jjg@46: case opc_wide:
jjg@46: {
jjg@46: String mnem = opcNamesTab[opc & 0xFF] + "_w";
jjg@46: if (mnemocodes.get(mnem) == null) {
jjg@46: return null; // non-existent opcode
jjg@46: }
jjg@46: return mnem;
jjg@46: }
jjg@46: case opc_nonpriv:
jjg@46: return opcExtNamesTab[opc & 0xFF];
jjg@46: case opc_priv:
jjg@46: return opcPrivExtNamesTab[opc & 0xFF];
jjg@46: default:
jjg@46: return null;
jjg@46: }
jjg@46: } catch (ArrayIndexOutOfBoundsException e) {
jjg@46: switch (opc) {
jjg@46: case opc_nonpriv:
jjg@46: return "nonpriv";
jjg@46: case opc_priv:
jjg@46: return "priv";
jjg@46: default:
jjg@46: return null;
jjg@46: }
jjg@46: }
jjg@46: }
jjg@46:
jjg@46: /* Opcodes */
jjg@46: public static final int opc_dead = -2;
jjg@46: public static final int opc_label = -1;
jjg@46: public static final int opc_nop = 0;
jjg@46: public static final int opc_aconst_null = 1;
jjg@46: public static final int opc_iconst_m1 = 2;
jjg@46: public static final int opc_iconst_0 = 3;
jjg@46: public static final int opc_iconst_1 = 4;
jjg@46: public static final int opc_iconst_2 = 5;
jjg@46: public static final int opc_iconst_3 = 6;
jjg@46: public static final int opc_iconst_4 = 7;
jjg@46: public static final int opc_iconst_5 = 8;
jjg@46: public static final int opc_lconst_0 = 9;
jjg@46: public static final int opc_lconst_1 = 10;
jjg@46: public static final int opc_fconst_0 = 11;
jjg@46: public static final int opc_fconst_1 = 12;
jjg@46: public static final int opc_fconst_2 = 13;
jjg@46: public static final int opc_dconst_0 = 14;
jjg@46: public static final int opc_dconst_1 = 15;
jjg@46: public static final int opc_bipush = 16;
jjg@46: public static final int opc_sipush = 17;
jjg@46: public static final int opc_ldc = 18;
jjg@46: public static final int opc_ldc_w = 19;
jjg@46: public static final int opc_ldc2_w = 20;
jjg@46: public static final int opc_iload = 21;
jjg@46: public static final int opc_lload = 22;
jjg@46: public static final int opc_fload = 23;
jjg@46: public static final int opc_dload = 24;
jjg@46: public static final int opc_aload = 25;
jjg@46: public static final int opc_iload_0 = 26;
jjg@46: public static final int opc_iload_1 = 27;
jjg@46: public static final int opc_iload_2 = 28;
jjg@46: public static final int opc_iload_3 = 29;
jjg@46: public static final int opc_lload_0 = 30;
jjg@46: public static final int opc_lload_1 = 31;
jjg@46: public static final int opc_lload_2 = 32;
jjg@46: public static final int opc_lload_3 = 33;
jjg@46: public static final int opc_fload_0 = 34;
jjg@46: public static final int opc_fload_1 = 35;
jjg@46: public static final int opc_fload_2 = 36;
jjg@46: public static final int opc_fload_3 = 37;
jjg@46: public static final int opc_dload_0 = 38;
jjg@46: public static final int opc_dload_1 = 39;
jjg@46: public static final int opc_dload_2 = 40;
jjg@46: public static final int opc_dload_3 = 41;
jjg@46: public static final int opc_aload_0 = 42;
jjg@46: public static final int opc_aload_1 = 43;
jjg@46: public static final int opc_aload_2 = 44;
jjg@46: public static final int opc_aload_3 = 45;
jjg@46: public static final int opc_iaload = 46;
jjg@46: public static final int opc_laload = 47;
jjg@46: public static final int opc_faload = 48;
jjg@46: public static final int opc_daload = 49;
jjg@46: public static final int opc_aaload = 50;
jjg@46: public static final int opc_baload = 51;
jjg@46: public static final int opc_caload = 52;
jjg@46: public static final int opc_saload = 53;
jjg@46: public static final int opc_istore = 54;
jjg@46: public static final int opc_lstore = 55;
jjg@46: public static final int opc_fstore = 56;
jjg@46: public static final int opc_dstore = 57;
jjg@46: public static final int opc_astore = 58;
jjg@46: public static final int opc_istore_0 = 59;
jjg@46: public static final int opc_istore_1 = 60;
jjg@46: public static final int opc_istore_2 = 61;
jjg@46: public static final int opc_istore_3 = 62;
jjg@46: public static final int opc_lstore_0 = 63;
jjg@46: public static final int opc_lstore_1 = 64;
jjg@46: public static final int opc_lstore_2 = 65;
jjg@46: public static final int opc_lstore_3 = 66;
jjg@46: public static final int opc_fstore_0 = 67;
jjg@46: public static final int opc_fstore_1 = 68;
jjg@46: public static final int opc_fstore_2 = 69;
jjg@46: public static final int opc_fstore_3 = 70;
jjg@46: public static final int opc_dstore_0 = 71;
jjg@46: public static final int opc_dstore_1 = 72;
jjg@46: public static final int opc_dstore_2 = 73;
jjg@46: public static final int opc_dstore_3 = 74;
jjg@46: public static final int opc_astore_0 = 75;
jjg@46: public static final int opc_astore_1 = 76;
jjg@46: public static final int opc_astore_2 = 77;
jjg@46: public static final int opc_astore_3 = 78;
jjg@46: public static final int opc_iastore = 79;
jjg@46: public static final int opc_lastore = 80;
jjg@46: public static final int opc_fastore = 81;
jjg@46: public static final int opc_dastore = 82;
jjg@46: public static final int opc_aastore = 83;
jjg@46: public static final int opc_bastore = 84;
jjg@46: public static final int opc_castore = 85;
jjg@46: public static final int opc_sastore = 86;
jjg@46: public static final int opc_pop = 87;
jjg@46: public static final int opc_pop2 = 88;
jjg@46: public static final int opc_dup = 89;
jjg@46: public static final int opc_dup_x1 = 90;
jjg@46: public static final int opc_dup_x2 = 91;
jjg@46: public static final int opc_dup2 = 92;
jjg@46: public static final int opc_dup2_x1 = 93;
jjg@46: public static final int opc_dup2_x2 = 94;
jjg@46: public static final int opc_swap = 95;
jjg@46: public static final int opc_iadd = 96;
jjg@46: public static final int opc_ladd = 97;
jjg@46: public static final int opc_fadd = 98;
jjg@46: public static final int opc_dadd = 99;
jjg@46: public static final int opc_isub = 100;
jjg@46: public static final int opc_lsub = 101;
jjg@46: public static final int opc_fsub = 102;
jjg@46: public static final int opc_dsub = 103;
jjg@46: public static final int opc_imul = 104;
jjg@46: public static final int opc_lmul = 105;
jjg@46: public static final int opc_fmul = 106;
jjg@46: public static final int opc_dmul = 107;
jjg@46: public static final int opc_idiv = 108;
jjg@46: public static final int opc_ldiv = 109;
jjg@46: public static final int opc_fdiv = 110;
jjg@46: public static final int opc_ddiv = 111;
jjg@46: public static final int opc_irem = 112;
jjg@46: public static final int opc_lrem = 113;
jjg@46: public static final int opc_frem = 114;
jjg@46: public static final int opc_drem = 115;
jjg@46: public static final int opc_ineg = 116;
jjg@46: public static final int opc_lneg = 117;
jjg@46: public static final int opc_fneg = 118;
jjg@46: public static final int opc_dneg = 119;
jjg@46: public static final int opc_ishl = 120;
jjg@46: public static final int opc_lshl = 121;
jjg@46: public static final int opc_ishr = 122;
jjg@46: public static final int opc_lshr = 123;
jjg@46: public static final int opc_iushr = 124;
jjg@46: public static final int opc_lushr = 125;
jjg@46: public static final int opc_iand = 126;
jjg@46: public static final int opc_land = 127;
jjg@46: public static final int opc_ior = 128;
jjg@46: public static final int opc_lor = 129;
jjg@46: public static final int opc_ixor = 130;
jjg@46: public static final int opc_lxor = 131;
jjg@46: public static final int opc_iinc = 132;
jjg@46: public static final int opc_i2l = 133;
jjg@46: public static final int opc_i2f = 134;
jjg@46: public static final int opc_i2d = 135;
jjg@46: public static final int opc_l2i = 136;
jjg@46: public static final int opc_l2f = 137;
jjg@46: public static final int opc_l2d = 138;
jjg@46: public static final int opc_f2i = 139;
jjg@46: public static final int opc_f2l = 140;
jjg@46: public static final int opc_f2d = 141;
jjg@46: public static final int opc_d2i = 142;
jjg@46: public static final int opc_d2l = 143;
jjg@46: public static final int opc_d2f = 144;
jjg@46: public static final int opc_i2b = 145;
jjg@46: public static final int opc_int2byte = 145;
jjg@46: public static final int opc_i2c = 146;
jjg@46: public static final int opc_int2char = 146;
jjg@46: public static final int opc_i2s = 147;
jjg@46: public static final int opc_int2short = 147;
jjg@46: public static final int opc_lcmp = 148;
jjg@46: public static final int opc_fcmpl = 149;
jjg@46: public static final int opc_fcmpg = 150;
jjg@46: public static final int opc_dcmpl = 151;
jjg@46: public static final int opc_dcmpg = 152;
jjg@46: public static final int opc_ifeq = 153;
jjg@46: public static final int opc_ifne = 154;
jjg@46: public static final int opc_iflt = 155;
jjg@46: public static final int opc_ifge = 156;
jjg@46: public static final int opc_ifgt = 157;
jjg@46: public static final int opc_ifle = 158;
jjg@46: public static final int opc_if_icmpeq = 159;
jjg@46: public static final int opc_if_icmpne = 160;
jjg@46: public static final int opc_if_icmplt = 161;
jjg@46: public static final int opc_if_icmpge = 162;
jjg@46: public static final int opc_if_icmpgt = 163;
jjg@46: public static final int opc_if_icmple = 164;
jjg@46: public static final int opc_if_acmpeq = 165;
jjg@46: public static final int opc_if_acmpne = 166;
jjg@46: public static final int opc_goto = 167;
jjg@46: public static final int opc_jsr = 168;
jjg@46: public static final int opc_ret = 169;
jjg@46: public static final int opc_tableswitch = 170;
jjg@46: public static final int opc_lookupswitch = 171;
jjg@46: public static final int opc_ireturn = 172;
jjg@46: public static final int opc_lreturn = 173;
jjg@46: public static final int opc_freturn = 174;
jjg@46: public static final int opc_dreturn = 175;
jjg@46: public static final int opc_areturn = 176;
jjg@46: public static final int opc_return = 177;
jjg@46: public static final int opc_getstatic = 178;
jjg@46: public static final int opc_putstatic = 179;
jjg@46: public static final int opc_getfield = 180;
jjg@46: public static final int opc_putfield = 181;
jjg@46: public static final int opc_invokevirtual = 182;
jjg@46: public static final int opc_invokenonvirtual = 183;
jjg@46: public static final int opc_invokespecial = 183;
jjg@46: public static final int opc_invokestatic = 184;
jjg@46: public static final int opc_invokeinterface = 185;
jjg@46: // public static final int opc_xxxunusedxxx = 186;
jjg@46: public static final int opc_new = 187;
jjg@46: public static final int opc_newarray = 188;
jjg@46: public static final int opc_anewarray = 189;
jjg@46: public static final int opc_arraylength = 190;
jjg@46: public static final int opc_athrow = 191;
jjg@46: public static final int opc_checkcast = 192;
jjg@46: public static final int opc_instanceof = 193;
jjg@46: public static final int opc_monitorenter = 194;
jjg@46: public static final int opc_monitorexit = 195;
jjg@46: public static final int opc_wide = 196;
jjg@46: public static final int opc_multianewarray = 197;
jjg@46: public static final int opc_ifnull = 198;
jjg@46: public static final int opc_ifnonnull = 199;
jjg@46: public static final int opc_goto_w = 200;
jjg@46: public static final int opc_jsr_w = 201;
jjg@46:
jjg@46: /* Pseudo-instructions */
jjg@46: public static final int opc_bytecode = 203;
jjg@46: public static final int opc_try = 204;
jjg@46: public static final int opc_endtry = 205;
jjg@46: public static final int opc_catch = 206;
jjg@46: public static final int opc_var = 207;
jjg@46: public static final int opc_endvar = 208;
jjg@46: public static final int opc_localsmap = 209;
jjg@46: public static final int opc_stackmap = 210;
jjg@46:
jjg@46: /* PicoJava prefixes */
jjg@46: public static final int opc_nonpriv = 254;
jjg@46: public static final int opc_priv = 255;
jjg@46:
jjg@46: /* Wide instructions */
jjg@46: public static final int opc_iload_w = (opc_wide << 8 ) | opc_iload;
jjg@46: public static final int opc_lload_w = (opc_wide << 8 ) | opc_lload;
jjg@46: public static final int opc_fload_w = (opc_wide << 8 ) | opc_fload;
jjg@46: public static final int opc_dload_w = (opc_wide << 8 ) | opc_dload;
jjg@46: public static final int opc_aload_w = (opc_wide << 8 ) | opc_aload;
jjg@46: public static final int opc_istore_w = (opc_wide << 8 ) | opc_istore;
jjg@46: public static final int opc_lstore_w = (opc_wide << 8 ) | opc_lstore;
jjg@46: public static final int opc_fstore_w = (opc_wide << 8 ) | opc_fstore;
jjg@46: public static final int opc_dstore_w = (opc_wide << 8 ) | opc_dstore;
jjg@46: public static final int opc_astore_w = (opc_wide << 8 ) | opc_astore;
jjg@46: public static final int opc_ret_w = (opc_wide << 8 ) | opc_ret;
jjg@46: public static final int opc_iinc_w = (opc_wide << 8 ) | opc_iinc;
jjg@46:
jjg@46: /* Opcode Names */
jjg@46: private static final String opcNamesTab[] = {
jjg@46: "nop",
jjg@46: "aconst_null",
jjg@46: "iconst_m1",
jjg@46: "iconst_0",
jjg@46: "iconst_1",
jjg@46: "iconst_2",
jjg@46: "iconst_3",
jjg@46: "iconst_4",
jjg@46: "iconst_5",
jjg@46: "lconst_0",
jjg@46: "lconst_1",
jjg@46: "fconst_0",
jjg@46: "fconst_1",
jjg@46: "fconst_2",
jjg@46: "dconst_0",
jjg@46: "dconst_1",
jjg@46: "bipush",
jjg@46: "sipush",
jjg@46: "ldc",
jjg@46: "ldc_w",
jjg@46: "ldc2_w",
jjg@46: "iload",
jjg@46: "lload",
jjg@46: "fload",
jjg@46: "dload",
jjg@46: "aload",
jjg@46: "iload_0",
jjg@46: "iload_1",
jjg@46: "iload_2",
jjg@46: "iload_3",
jjg@46: "lload_0",
jjg@46: "lload_1",
jjg@46: "lload_2",
jjg@46: "lload_3",
jjg@46: "fload_0",
jjg@46: "fload_1",
jjg@46: "fload_2",
jjg@46: "fload_3",
jjg@46: "dload_0",
jjg@46: "dload_1",
jjg@46: "dload_2",
jjg@46: "dload_3",
jjg@46: "aload_0",
jjg@46: "aload_1",
jjg@46: "aload_2",
jjg@46: "aload_3",
jjg@46: "iaload",
jjg@46: "laload",
jjg@46: "faload",
jjg@46: "daload",
jjg@46: "aaload",
jjg@46: "baload",
jjg@46: "caload",
jjg@46: "saload",
jjg@46: "istore",
jjg@46: "lstore",
jjg@46: "fstore",
jjg@46: "dstore",
jjg@46: "astore",
jjg@46: "istore_0",
jjg@46: "istore_1",
jjg@46: "istore_2",
jjg@46: "istore_3",
jjg@46: "lstore_0",
jjg@46: "lstore_1",
jjg@46: "lstore_2",
jjg@46: "lstore_3",
jjg@46: "fstore_0",
jjg@46: "fstore_1",
jjg@46: "fstore_2",
jjg@46: "fstore_3",
jjg@46: "dstore_0",
jjg@46: "dstore_1",
jjg@46: "dstore_2",
jjg@46: "dstore_3",
jjg@46: "astore_0",
jjg@46: "astore_1",
jjg@46: "astore_2",
jjg@46: "astore_3",
jjg@46: "iastore",
jjg@46: "lastore",
jjg@46: "fastore",
jjg@46: "dastore",
jjg@46: "aastore",
jjg@46: "bastore",
jjg@46: "castore",
jjg@46: "sastore",
jjg@46: "pop",
jjg@46: "pop2",
jjg@46: "dup",
jjg@46: "dup_x1",
jjg@46: "dup_x2",
jjg@46: "dup2",
jjg@46: "dup2_x1",
jjg@46: "dup2_x2",
jjg@46: "swap",
jjg@46: "iadd",
jjg@46: "ladd",
jjg@46: "fadd",
jjg@46: "dadd",
jjg@46: "isub",
jjg@46: "lsub",
jjg@46: "fsub",
jjg@46: "dsub",
jjg@46: "imul",
jjg@46: "lmul",
jjg@46: "fmul",
jjg@46: "dmul",
jjg@46: "idiv",
jjg@46: "ldiv",
jjg@46: "fdiv",
jjg@46: "ddiv",
jjg@46: "irem",
jjg@46: "lrem",
jjg@46: "frem",
jjg@46: "drem",
jjg@46: "ineg",
jjg@46: "lneg",
jjg@46: "fneg",
jjg@46: "dneg",
jjg@46: "ishl",
jjg@46: "lshl",
jjg@46: "ishr",
jjg@46: "lshr",
jjg@46: "iushr",
jjg@46: "lushr",
jjg@46: "iand",
jjg@46: "land",
jjg@46: "ior",
jjg@46: "lor",
jjg@46: "ixor",
jjg@46: "lxor",
jjg@46: "iinc",
jjg@46: "i2l",
jjg@46: "i2f",
jjg@46: "i2d",
jjg@46: "l2i",
jjg@46: "l2f",
jjg@46: "l2d",
jjg@46: "f2i",
jjg@46: "f2l",
jjg@46: "f2d",
jjg@46: "d2i",
jjg@46: "d2l",
jjg@46: "d2f",
jjg@46: "i2b",
jjg@46: "i2c",
jjg@46: "i2s",
jjg@46: "lcmp",
jjg@46: "fcmpl",
jjg@46: "fcmpg",
jjg@46: "dcmpl",
jjg@46: "dcmpg",
jjg@46: "ifeq",
jjg@46: "ifne",
jjg@46: "iflt",
jjg@46: "ifge",
jjg@46: "ifgt",
jjg@46: "ifle",
jjg@46: "if_icmpeq",
jjg@46: "if_icmpne",
jjg@46: "if_icmplt",
jjg@46: "if_icmpge",
jjg@46: "if_icmpgt",
jjg@46: "if_icmple",
jjg@46: "if_acmpeq",
jjg@46: "if_acmpne",
jjg@46: "goto",
jjg@46: "jsr",
jjg@46: "ret",
jjg@46: "tableswitch",
jjg@46: "lookupswitch",
jjg@46: "ireturn",
jjg@46: "lreturn",
jjg@46: "freturn",
jjg@46: "dreturn",
jjg@46: "areturn",
jjg@46: "return",
jjg@46: "getstatic",
jjg@46: "putstatic",
jjg@46: "getfield",
jjg@46: "putfield",
jjg@46: "invokevirtual",
jjg@46: "invokespecial", // was "invokenonvirtual",
jjg@46: "invokestatic",
jjg@46: "invokeinterface",
jjg@46: "bytecode 186", //"xxxunusedxxx",
jjg@46: "new",
jjg@46: "newarray",
jjg@46: "anewarray",
jjg@46: "arraylength",
jjg@46: "athrow",
jjg@46: "checkcast",
jjg@46: "instanceof",
jjg@46: "monitorenter",
jjg@46: "monitorexit",
jjg@46: null, // "wide",
jjg@46: "multianewarray",
jjg@46: "ifnull",
jjg@46: "ifnonnull",
jjg@46: "goto_w",
jjg@46: "jsr_w",
jjg@46: "bytecode 202", // "breakpoint",
jjg@46: "bytecode",
jjg@46: "try",
jjg@46: "endtry",
jjg@46: "catch",
jjg@46: "var",
jjg@46: "endvar",
jjg@46: "locals_map",
jjg@46: "stack_map"
jjg@46: };
jjg@46:
jjg@46: /* Opcode Lengths */
jjg@46: private static final int opcLengthsTab[] = {
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 2,
jjg@46: 3,
jjg@46: 2,
jjg@46: 3,
jjg@46: 3,
jjg@46: 2,
jjg@46: 2,
jjg@46: 2,
jjg@46: 2,
jjg@46: 2,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 2,
jjg@46: 2,
jjg@46: 2,
jjg@46: 2,
jjg@46: 2,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 3,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 3,
jjg@46: 3,
jjg@46: 3,
jjg@46: 3,
jjg@46: 3,
jjg@46: 3,
jjg@46: 3,
jjg@46: 3,
jjg@46: 3,
jjg@46: 3,
jjg@46: 3,
jjg@46: 3,
jjg@46: 3,
jjg@46: 3,
jjg@46: 3,
jjg@46: 3,
jjg@46: 2,
jjg@46: 99,
jjg@46: 99,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 1,
jjg@46: 3,
jjg@46: 3,
jjg@46: 3,
jjg@46: 3,
jjg@46: 3,
jjg@46: 3,
jjg@46: 3,
jjg@46: 5,
jjg@46: 0,
jjg@46: 3,
jjg@46: 2,
jjg@46: 3,
jjg@46: 1,
jjg@46: 1,
jjg@46: 3,
jjg@46: 3,
jjg@46: 1,
jjg@46: 1,
jjg@46: 0, // wide
jjg@46: 4,
jjg@46: 3,
jjg@46: 3,
jjg@46: 5,
jjg@46: 5,
jjg@46: 1,
jjg@46: 1, 0, 0, 0, 0, 0 // pseudo
jjg@46: };
jjg@46:
jjg@46: /* Type codes, used in newarray opcode */
jjg@46: public static final int T_CLASS = 0x00000002;
jjg@46: public static final int T_BOOLEAN = 0x00000004;
jjg@46: public static final int T_CHAR = 0x00000005;
jjg@46: public static final int T_FLOAT = 0x00000006;
jjg@46: public static final int T_DOUBLE = 0x00000007;
jjg@46: public static final int T_BYTE = 0x00000008;
jjg@46: public static final int T_SHORT = 0x00000009;
jjg@46: public static final int T_INT = 0x0000000a;
jjg@46: public static final int T_LONG = 0x0000000b;
jjg@46:
jjg@46: private static HashMap