// Number of parameter bytes associated with each opcode.
// For certain opcodes (e.g. TABLESWITCH), this number isn't a constant,
// but this isn't a problem for our current subset.


#define UNDEFINED_PARAM_SIZE (-1)

  static int param_size[] =
    {0, // NOP,
     0, // ACONST_NULL, 
     0, // ICONST_M1, 
     0, // ICONST_0, 
     0, // ICONST_1, 
     0, // ICONST_2, 
     0, // ICONST_3,
     0, // ICONST_4,
     0, // ICONST_5, 
     UNDEFINED_PARAM_SIZE, // LCONST_0,
     UNDEFINED_PARAM_SIZE, // LCONST_1,
     UNDEFINED_PARAM_SIZE, // FCONST_0,
     UNDEFINED_PARAM_SIZE, // FCONST_1,
     UNDEFINED_PARAM_SIZE, // FCONST_2,
     UNDEFINED_PARAM_SIZE, // DCONST_0,
     UNDEFINED_PARAM_SIZE, // DCONST_1,
     1, // BIPUSH, 
     2, // SIPUSH, 
     1, // LDC, 
     2, // LDC_W,
     UNDEFINED_PARAM_SIZE, // LDC2_W,
     1, // ILOAD, 
     UNDEFINED_PARAM_SIZE, // LLOAD,2
     UNDEFINED_PARAM_SIZE, // FLOAD,3
     UNDEFINED_PARAM_SIZE, // DLOAD,4
     1, // ALOAD, 
     0, // ILOAD_0,
     0, // ILOAD_1,
     0, // ILOAD_2,
     0, // ILOAD_3,
     UNDEFINED_PARAM_SIZE, // LLOAD_0,
     UNDEFINED_PARAM_SIZE, // LLOAD_1,
     UNDEFINED_PARAM_SIZE, // LLOAD_2,
     UNDEFINED_PARAM_SIZE, // LLOAD_3,
     UNDEFINED_PARAM_SIZE, // FLOAD_0,
     UNDEFINED_PARAM_SIZE, // FLOAD_1,
     UNDEFINED_PARAM_SIZE, // FLOAD_2,
     UNDEFINED_PARAM_SIZE, // FLOAD_3,
     UNDEFINED_PARAM_SIZE, // DLOAD_0,
     UNDEFINED_PARAM_SIZE, // DLOAD_1,
     UNDEFINED_PARAM_SIZE, // DLOAD_2,
     UNDEFINED_PARAM_SIZE, // DLOAD_3,
     0, // ALOAD_0,
     0, // ALOAD_1,
     0, // ALOAD_2,
     0, // ALOAD_3,
     0, // IALOAD, 
     UNDEFINED_PARAM_SIZE, // LALOAD,
     UNDEFINED_PARAM_SIZE, // FALOAD,
     UNDEFINED_PARAM_SIZE, // DALOAD,
     UNDEFINED_PARAM_SIZE, // AALOAD,
     UNDEFINED_PARAM_SIZE, // BALOAD,
     UNDEFINED_PARAM_SIZE, // CALOAD,
     UNDEFINED_PARAM_SIZE, // SALOAD,
     1, // ISTORE,
     UNDEFINED_PARAM_SIZE, // LSTORE,
     UNDEFINED_PARAM_SIZE, // FSTORE,
     UNDEFINED_PARAM_SIZE, // DSTORE,
     1, // ASTORE, 
     0, // ISTORE_0, 
     0, // ISTORE_1,
     0, // ISTORE_2,
     0, // ISTORE_3,
     UNDEFINED_PARAM_SIZE, // LSTORE_0,
     UNDEFINED_PARAM_SIZE, // LSTORE_1,
     UNDEFINED_PARAM_SIZE, // LSTORE_2,
     UNDEFINED_PARAM_SIZE, // LSTORE_3,
     UNDEFINED_PARAM_SIZE, // FSTORE_0,
     UNDEFINED_PARAM_SIZE, // FSTORE_1,
     UNDEFINED_PARAM_SIZE, // FSTORE_2,
     UNDEFINED_PARAM_SIZE, // FSTORE_3,
     UNDEFINED_PARAM_SIZE, // DSTORE_0,
     UNDEFINED_PARAM_SIZE, // DSTORE_1,
     UNDEFINED_PARAM_SIZE, // DSTORE_2,
     UNDEFINED_PARAM_SIZE, // DSTORE_3,
     0, // ASTORE_0, 
     0, // ASTORE_1,
     0, // ASTORE_2,
     0, // ASTORE_3,
     0, // IASTORE, 
     UNDEFINED_PARAM_SIZE, // LASTORE,
     UNDEFINED_PARAM_SIZE, // FASTORE,
     UNDEFINED_PARAM_SIZE, // DASTORE,
     UNDEFINED_PARAM_SIZE, // AASTORE,
     UNDEFINED_PARAM_SIZE, // BASTORE,
     UNDEFINED_PARAM_SIZE, // CASTORE,
     UNDEFINED_PARAM_SIZE, // SASTORE,
     0, // POP,
     0, // POP2, 
     0, // DUP,
     UNDEFINED_PARAM_SIZE, // DUP_X1,
     UNDEFINED_PARAM_SIZE, // DUP_X2,
     0, // DUP2
     UNDEFINED_PARAM_SIZE, // DUP2_X1,
     UNDEFINED_PARAM_SIZE, // DUP2_X2,
     0, // SWAP, 
     0, // IADD, 
     UNDEFINED_PARAM_SIZE, // LADD,
     UNDEFINED_PARAM_SIZE, // FADD,
     UNDEFINED_PARAM_SIZE, // DADD,
     0, // ISUB, 
     UNDEFINED_PARAM_SIZE, // LSUB,
     UNDEFINED_PARAM_SIZE, // FSUB,
     UNDEFINED_PARAM_SIZE, // DSUB,
     0, // IMUL, 
     UNDEFINED_PARAM_SIZE, // LMUL,
     UNDEFINED_PARAM_SIZE, // FMUL,
     UNDEFINED_PARAM_SIZE, // DMUL,
     0, // IDIV, 
     UNDEFINED_PARAM_SIZE, // LDIV,
     UNDEFINED_PARAM_SIZE, // FDIV,
     UNDEFINED_PARAM_SIZE, // DDIV,
     0, // IREM, 
     UNDEFINED_PARAM_SIZE, // LREM,
     UNDEFINED_PARAM_SIZE, // FREM,
     UNDEFINED_PARAM_SIZE, // DREM,
     0, // INEG, 
     UNDEFINED_PARAM_SIZE, // LNEG,
     UNDEFINED_PARAM_SIZE, // FNEG,
     UNDEFINED_PARAM_SIZE, // DNEG,
     UNDEFINED_PARAM_SIZE, // ISHL,
     UNDEFINED_PARAM_SIZE, // LSHL,
     UNDEFINED_PARAM_SIZE, // ISHR,
     UNDEFINED_PARAM_SIZE, // LSHR,
     UNDEFINED_PARAM_SIZE, // IUSHR,
     UNDEFINED_PARAM_SIZE, // LUSHR,
     0, // IAND, 
     UNDEFINED_PARAM_SIZE, // LAND,
     0, // IOR, 
     UNDEFINED_PARAM_SIZE, // LOR,
     0, // IXOR, 
     UNDEFINED_PARAM_SIZE, // LXOR,
     2, // IINC, 
     UNDEFINED_PARAM_SIZE, // I2L,
     UNDEFINED_PARAM_SIZE, // I2F,
     UNDEFINED_PARAM_SIZE, // I2D,
     UNDEFINED_PARAM_SIZE, // L2I,
     UNDEFINED_PARAM_SIZE, // L2F,
     UNDEFINED_PARAM_SIZE, // L2D,
     UNDEFINED_PARAM_SIZE, // F2I,
     UNDEFINED_PARAM_SIZE, // F2L,
     UNDEFINED_PARAM_SIZE, // F2D,
     UNDEFINED_PARAM_SIZE, // D2I,
     UNDEFINED_PARAM_SIZE, // D2L,
     UNDEFINED_PARAM_SIZE, // D2F,
     UNDEFINED_PARAM_SIZE, // INT2BYTE,
     UNDEFINED_PARAM_SIZE, // INT2CHAR,
     UNDEFINED_PARAM_SIZE, // INT2SHORT,
     UNDEFINED_PARAM_SIZE, // LCMP,
     UNDEFINED_PARAM_SIZE, // FCMPL,
     UNDEFINED_PARAM_SIZE, // FCMPG,
     UNDEFINED_PARAM_SIZE, // DCMPL,
     UNDEFINED_PARAM_SIZE, // DCMPG,
     2, // IFEQ, 
     2, // IFNE, 
     2, // IFLT,
     2, // IFGE,
     2, // IFGT,
     2, // IFLE,
     2, // IF_ICMPEQ, 
     2, // IF_ICMPNE, 
     2, // IF_ICMPLT,
     2, // IF_ICMPGE,
     2, // IF_ICMPGT,
     2, // IF_ICMPLE,
     2, // IF_ACMPEQ, 
     2, // IF_ACMPNE, 
     2, // GOTO, 
     UNDEFINED_PARAM_SIZE, // JSR,
     UNDEFINED_PARAM_SIZE, // RET,
     UNDEFINED_PARAM_SIZE, // TABLESWITCH,
     UNDEFINED_PARAM_SIZE, // LOOKUPSWITCH,
     0, // IRETURN, 
     UNDEFINED_PARAM_SIZE, // LRETURN,
     UNDEFINED_PARAM_SIZE, // FRETURN,
     UNDEFINED_PARAM_SIZE, // DRETURN,
     0, // ARETURN, 
     0, // RETURN, 
     2, // GETSTATIC, 
     UNDEFINED_PARAM_SIZE, // PUTSTATIC,
     UNDEFINED_PARAM_SIZE, // GETFIELD,
     UNDEFINED_PARAM_SIZE, // PUTFIELD,
     2, // INVOKEVIRTUAL,
     UNDEFINED_PARAM_SIZE, // INVOKESPECIAL,
     2, // INVOKESTATIC, 
     UNDEFINED_PARAM_SIZE, // INVOKEINTERFACE,
     UNDEFINED_PARAM_SIZE, // unused
     UNDEFINED_PARAM_SIZE, // NEW,
     1, // NEWARRAY,  
     UNDEFINED_PARAM_SIZE, // ANEWARRAY, 
     0, // ARRAYLENGTH, 
     UNDEFINED_PARAM_SIZE, // ATHROW,
     UNDEFINED_PARAM_SIZE, // CHECKCAST,
     UNDEFINED_PARAM_SIZE, // INSTANCEOF,
     UNDEFINED_PARAM_SIZE, // MONITORENTER,
     UNDEFINED_PARAM_SIZE, // MONITOREXIT,
     UNDEFINED_PARAM_SIZE, // WIDE,
     UNDEFINED_PARAM_SIZE, // MULTIANEWARRAY,
     2, // IFNULL,
     2, // IFNONNULL,  
     4, // GOTO_W,  
     UNDEFINED_PARAM_SIZE  // JSR_W
    };
