alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Scala example source code file (JOpcode.java)

This example Scala source code file (JOpcode.java) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Scala tags/keywords

double_type, float_type, int_type, jmp_maybe_s2_offset, jmp_next, jmp_next, jopcode, jopcode, jtype, jtype, long_type, no_data, no_data, unknown_type

The Scala JOpcode.java source code

/* FJBG -- Fast Java Bytecode Generator
 * Copyright 2002-2011 LAMP/EPFL
 * @author  Michel Schinz
 */

package ch.epfl.lamp.fjbg;

/**
 * Definition of opcodes for the JVM.
 *
 * @author Michel Schinz, Thomas Friedli
 * @version 1.0
 */

public class JOpcode {
    public final String name;
    public final int code;

    // The following attributes can be (statically) unknown for some
    // instructions, and are therefore not public. To know their value,
    // functions have to be used (see JCodeIterator).
    protected final int size;
    protected final JType[] producedDataTypes;
    protected final JType[] consumedDataTypes;
    protected final int jumpKind;
    protected final int successorCount;

    protected final static int UNKNOWN = Integer.MIN_VALUE;

    protected final static int JMP_NONE             = 0;
    protected final static int JMP_NEXT             = 1;
    protected final static int JMP_ALWAYS_S2_OFFSET = 2;
    protected final static int JMP_ALWAYS_S4_OFFSET = 3;
    protected final static int JMP_MAYBE_S2_OFFSET  = 4;
    protected final static int JMP_TABLE            = 5;
    protected final static int JMP_LOOKUP           = 6;

    protected final static JType[] NO_DATA = new JType[0];

    protected final static JType[] INT_TYPE =
        new JType[] { JType.INT };
    protected final static JType[] FLOAT_TYPE =
        new JType[] { JType.FLOAT };
    protected final static JType[] LONG_TYPE =
        new JType[] { JType.LONG };
    protected final static JType[] DOUBLE_TYPE =
        new JType[] { JType.DOUBLE };
    protected final static JType[] OBJECT_REF_TYPE =
        new JType[] { JObjectType.JAVA_LANG_OBJECT };
    protected final static JType[] ARRAY_REF_TYPE =
        new JType[] { new JArrayType(JType.VOID) };
    protected final static JType[] REFERENCE_TYPE =
        new JType[] { JType.REFERENCE };
    protected final static JType[] ADDRESS_TYPE =
        new JType[] { JType.ADDRESS };
    protected final static JType[] UNKNOWN_TYPE =
        new JType[] { JType.UNKNOWN };

    /// Instruction codes
    public final static int cNOP             = 0;
    public final static int cACONST_NULL     = 1;
    public final static int cICONST_M1       = 2;
    public final static int cICONST_0        = 3;
    public final static int cICONST_1        = 4;
    public final static int cICONST_2        = 5;
    public final static int cICONST_3        = 6;
    public final static int cICONST_4        = 7;
    public final static int cICONST_5        = 8;
    public final static int cLCONST_0        = 9;
    public final static int cLCONST_1        = 10;
    public final static int cFCONST_0        = 11;
    public final static int cFCONST_1        = 12;
    public final static int cFCONST_2        = 13;
    public final static int cDCONST_0        = 14;
    public final static int cDCONST_1        = 15;
    public final static int cBIPUSH          = 16;
    public final static int cSIPUSH          = 17;
    public final static int cLDC             = 18;
    public final static int cLDC_W           = 19;
    public final static int cLDC2_W          = 20;
    public final static int cILOAD           = 21;
    public final static int cLLOAD           = 22;
    public final static int cFLOAD           = 23;
    public final static int cDLOAD           = 24;
    public final static int cALOAD           = 25;
    public final static int cILOAD_0         = 26;
    public final static int cILOAD_1         = 27;
    public final static int cILOAD_2         = 28;
    public final static int cILOAD_3         = 29;
    public final static int cLLOAD_0         = 30;
    public final static int cLLOAD_1         = 31;
    public final static int cLLOAD_2         = 32;
    public final static int cLLOAD_3         = 33;
    public final static int cFLOAD_0         = 34;
    public final static int cFLOAD_1         = 35;
    public final static int cFLOAD_2         = 36;
    public final static int cFLOAD_3         = 37;
    public final static int cDLOAD_0         = 38;
    public final static int cDLOAD_1         = 39;
    public final static int cDLOAD_2         = 40;
    public final static int cDLOAD_3         = 41;
    public final static int cALOAD_0         = 42;
    public final static int cALOAD_1         = 43;
    public final static int cALOAD_2         = 44;
    public final static int cALOAD_3         = 45;
    public final static int cIALOAD          = 46;
    public final static int cLALOAD          = 47;
    public final static int cFALOAD          = 48;
    public final static int cDALOAD          = 49;
    public final static int cAALOAD          = 50;
    public final static int cBALOAD          = 51;
    public final static int cCALOAD          = 52;
    public final static int cSALOAD          = 53;
    public final static int cISTORE          = 54;
    public final static int cLSTORE          = 55;
    public final static int cFSTORE          = 56;
    public final static int cDSTORE          = 57;
    public final static int cASTORE          = 58;
    public final static int cISTORE_0        = 59;
    public final static int cISTORE_1        = 60;
    public final static int cISTORE_2        = 61;
    public final static int cISTORE_3        = 62;
    public final static int cLSTORE_0        = 63;
    public final static int cLSTORE_1        = 64;
    public final static int cLSTORE_2        = 65;
    public final static int cLSTORE_3        = 66;
    public final static int cFSTORE_0        = 67;
    public final static int cFSTORE_1        = 68;
    public final static int cFSTORE_2        = 69;
    public final static int cFSTORE_3        = 70;
    public final static int cDSTORE_0        = 71;
    public final static int cDSTORE_1        = 72;
    public final static int cDSTORE_2        = 73;
    public final static int cDSTORE_3        = 74;
    public final static int cASTORE_0        = 75;
    public final static int cASTORE_1        = 76;
    public final static int cASTORE_2        = 77;
    public final static int cASTORE_3        = 78;
    public final static int cIASTORE         = 79;
    public final static int cLASTORE         = 80;
    public final static int cFASTORE         = 81;
    public final static int cDASTORE         = 82;
    public final static int cAASTORE         = 83;
    public final static int cBASTORE         = 84;
    public final static int cCASTORE         = 85;
    public final static int cSASTORE         = 86;
    public final static int cPOP             = 87;
    public final static int cPOP2            = 88;
    public final static int cDUP             = 89;
    public final static int cDUP_X1          = 90;
    public final static int cDUP_X2          = 91;
    public final static int cDUP2            = 92;
    public final static int cDUP2_X1         = 93;
    public final static int cDUP2_X2         = 94;
    public final static int cSWAP            = 95;
    public final static int cIADD            = 96;
    public final static int cLADD            = 97;
    public final static int cFADD            = 98;
    public final static int cDADD            = 99;
    public final static int cISUB            = 100;
    public final static int cLSUB            = 101;
    public final static int cFSUB            = 102;
    public final static int cDSUB            = 103;
    public final static int cIMUL            = 104;
    public final static int cLMUL            = 105;
    public final static int cFMUL            = 106;
    public final static int cDMUL            = 107;
    public final static int cIDIV            = 108;
    public final static int cLDIV            = 109;
    public final static int cFDIV            = 110;
    public final static int cDDIV            = 111;
    public final static int cIREM            = 112;
    public final static int cLREM            = 113;
    public final static int cFREM            = 114;
    public final static int cDREM            = 115;
    public final static int cINEG            = 116;
    public final static int cLNEG            = 117;
    public final static int cFNEG            = 118;
    public final static int cDNEG            = 119;
    public final static int cISHL            = 120;
    public final static int cLSHL            = 121;
    public final static int cISHR            = 122;
    public final static int cLSHR            = 123;
    public final static int cIUSHR           = 124;
    public final static int cLUSHR           = 125;
    public final static int cIAND            = 126;
    public final static int cLAND            = 127;
    public final static int cIOR             = 128;
    public final static int cLOR             = 129;
    public final static int cIXOR            = 130;
    public final static int cLXOR            = 131;
    public final static int cIINC            = 132;
    public final static int cI2L             = 133;
    public final static int cI2F             = 134;
    public final static int cI2D             = 135;
    public final static int cL2I             = 136;
    public final static int cL2F             = 137;
    public final static int cL2D             = 138;
    public final static int cF2I             = 139;
    public final static int cF2L             = 140;
    public final static int cF2D             = 141;
    public final static int cD2I             = 142;
    public final static int cD2L             = 143;
    public final static int cD2F             = 144;
    public final static int cI2B             = 145;
    public final static int cI2C             = 146;
    public final static int cI2S             = 147;
    public final static int cLCMP            = 148;
    public final static int cFCMPL           = 149;
    public final static int cFCMPG           = 150;
    public final static int cDCMPL           = 151;
    public final static int cDCMPG           = 152;
    public final static int cIFEQ            = 153;
    public final static int cIFNE            = 154;
    public final static int cIFLT            = 155;
    public final static int cIFGE            = 156;
    public final static int cIFGT            = 157;
    public final static int cIFLE            = 158;
    public final static int cIF_ICMPEQ       = 159;
    public final static int cIF_ICMPNE       = 160;
    public final static int cIF_ICMPLT       = 161;
    public final static int cIF_ICMPGE       = 162;
    public final static int cIF_ICMPGT       = 163;
    public final static int cIF_ICMPLE       = 164;
    public final static int cIF_ACMPEQ       = 165;
    public final static int cIF_ACMPNE       = 166;
    public final static int cGOTO            = 167;
    public final static int cJSR             = 168;
    public final static int cRET             = 169;
    public final static int cTABLESWITCH     = 170;
    public final static int cLOOKUPSWITCH    = 171;
    public final static int cIRETURN         = 172;
    public final static int cLRETURN         = 173;
    public final static int cFRETURN         = 174;
    public final static int cDRETURN         = 175;
    public final static int cARETURN         = 176;
    public final static int cRETURN          = 177;
    public final static int cGETSTATIC       = 178;
    public final static int cPUTSTATIC       = 179;
    public final static int cGETFIELD        = 180;
    public final static int cPUTFIELD        = 181;
    public final static int cINVOKEVIRTUAL   = 182;
    public final static int cINVOKESPECIAL   = 183;
    public final static int cINVOKESTATIC    = 184;
    public final static int cINVOKEINTERFACE = 185;
    public final static int cNEW             = 187;
    public final static int cNEWARRAY        = 188;
    public final static int cANEWARRAY       = 189;
    public final static int cARRAYLENGTH     = 190;
    public final static int cATHROW          = 191;
    public final static int cCHECKCAST       = 192;
    public final static int cINSTANCEOF      = 193;
    public final static int cMONITORENTER    = 194;
    public final static int cMONITOREXIT     = 195;
    public final static int cWIDE            = 196;
    public final static int cMULTIANEWARRAY  = 197;
    public final static int cIFNULL          = 198;
    public final static int cIFNONNULL       = 199;
    public final static int cGOTO_W          = 200;
    public final static int cJSR_W           = 201;

    // Objects representing instructions
    public final static JOpcode NOP =
        new JOpcode("NOP", cNOP, 1, NO_DATA, NO_DATA, JMP_NEXT);
    public final static JOpcode ACONST_NULL = new JOpcode("ACONST_NULL",
                                                          cACONST_NULL,
                                                          1,
                                                          REFERENCE_TYPE,
                                                          NO_DATA,
                                                          JMP_NEXT);
    public final static JOpcode ICONST_M1 =
        new JOpcode("ICONST_M1", cICONST_M1, 1, INT_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode ICONST_0 =
        new JOpcode("ICONST_0", cICONST_0, 1, INT_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode ICONST_1 =
        new JOpcode("ICONST_1", cICONST_1, 1, INT_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode ICONST_2 =
        new JOpcode("ICONST_2", cICONST_2, 1, INT_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode ICONST_3 =
        new JOpcode("ICONST_3", cICONST_3, 1, INT_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode ICONST_4 =
        new JOpcode("ICONST_4", cICONST_4, 1, INT_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode ICONST_5 =
        new JOpcode("ICONST_5", cICONST_5, 1, INT_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode LCONST_0 =
        new JOpcode("LCONST_0", cLCONST_0, 1, LONG_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode LCONST_1 =
        new JOpcode("LCONST_1", cLCONST_1, 1, LONG_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode FCONST_0 =
        new JOpcode("FCONST_0", cFCONST_0, 1, FLOAT_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode FCONST_1 =
        new JOpcode("FCONST_1", cFCONST_1, 1, FLOAT_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode FCONST_2 =
        new JOpcode("FCONST_2", cFCONST_2, 1, FLOAT_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode DCONST_0 =
        new JOpcode("DCONST_0", cDCONST_0, 1, DOUBLE_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode DCONST_1 =
        new JOpcode("DCONST_1", cDCONST_1, 1, DOUBLE_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode BIPUSH =
        new JOpcode("BIPUSH", cBIPUSH, 2, INT_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode SIPUSH =
        new JOpcode("SIPUSH", cSIPUSH, 3, INT_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode LDC =
        new JOpcode("LDC", cLDC, 2, UNKNOWN_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode LDC_W =
        new JOpcode("LDC_W", cLDC_W, 3, UNKNOWN_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode LDC2_W =
        new JOpcode("LDC2_W", cLDC2_W, 3, UNKNOWN_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode ILOAD =
        new JOpcode("ILOAD", cILOAD, 2, INT_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode LLOAD =
        new JOpcode("LLOAD", cLLOAD, 2, LONG_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode FLOAD =
        new JOpcode("FLOAD", cFLOAD, 2, FLOAT_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode DLOAD =
        new JOpcode("DLOAD", cDLOAD, 2, DOUBLE_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode ALOAD =
        new JOpcode("ALOAD", cALOAD, 2, REFERENCE_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode ILOAD_0 =
        new JOpcode("ILOAD_0", cILOAD_0, 1, INT_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode ILOAD_1 =
        new JOpcode("ILOAD_1", cILOAD_1, 1, INT_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode ILOAD_2 =
        new JOpcode("ILOAD_2", cILOAD_2, 1, INT_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode ILOAD_3 =
        new JOpcode("ILOAD_3", cILOAD_3, 1, INT_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode LLOAD_0 =
        new JOpcode("LLOAD_0", cLLOAD_0, 1, LONG_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode LLOAD_1 =
        new JOpcode("LLOAD_1", cLLOAD_1, 1, LONG_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode LLOAD_2 =
        new JOpcode("LLOAD_2", cLLOAD_2, 1, LONG_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode LLOAD_3 =
        new JOpcode("LLOAD_3", cLLOAD_3, 1, LONG_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode FLOAD_0 =
        new JOpcode("FLOAD_0", cFLOAD_0, 1, FLOAT_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode FLOAD_1 =
        new JOpcode("FLOAD_1", cFLOAD_1, 1, FLOAT_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode FLOAD_2 =
        new JOpcode("FLOAD_2", cFLOAD_2, 1, FLOAT_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode FLOAD_3 =
        new JOpcode("FLOAD_3", cFLOAD_3, 1, FLOAT_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode DLOAD_0 =
        new JOpcode("DLOAD_0", cDLOAD_0, 1, DOUBLE_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode DLOAD_1 =
        new JOpcode("DLOAD_1", cDLOAD_1, 1, DOUBLE_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode DLOAD_2 =
        new JOpcode("DLOAD_2", cDLOAD_2, 1, DOUBLE_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode DLOAD_3 =
        new JOpcode("DLOAD_3", cDLOAD_3, 1, DOUBLE_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode ALOAD_0 =
        new JOpcode("ALOAD_0", cALOAD_0, 1, REFERENCE_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode ALOAD_1 =
        new JOpcode("ALOAD_1", cALOAD_1, 1, REFERENCE_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode ALOAD_2 =
        new JOpcode("ALOAD_2", cALOAD_2, 1, REFERENCE_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode ALOAD_3 =
        new JOpcode("ALOAD_3", cALOAD_3, 1, REFERENCE_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode IALOAD =
        new JOpcode("IALOAD",
                    cIALOAD,
                    1,
                    INT_TYPE,
                    new JType[] {JType.INT, JArrayType.INT},
                    JMP_NEXT);
    public final static JOpcode LALOAD =
        new JOpcode("LALOAD",
                    cLALOAD,
                    1,
                    LONG_TYPE,
                    new JType[] {JType.INT, JArrayType.LONG},
                    JMP_NEXT);
    public final static JOpcode FALOAD =
        new JOpcode("FALOAD",
                    cFALOAD,
                    1,
                    FLOAT_TYPE,
                    new JType[] {JType.INT, JArrayType.FLOAT},
                    JMP_NEXT);
    public final static JOpcode DALOAD =
        new JOpcode("DALOAD",
                    cDALOAD,
                    1,
                    DOUBLE_TYPE,
                    new JType[] {JType.INT, JArrayType.DOUBLE},
                    JMP_NEXT);
    public final static JOpcode AALOAD =
        new JOpcode("AALOAD",
                    cAALOAD,
                    1,
                    REFERENCE_TYPE,
                    new JType[] {JType.INT, JArrayType.REFERENCE},
                    JMP_NEXT);
    public final static JOpcode BALOAD =
        new JOpcode("BALOAD",
                    cBALOAD,
                    1,
                    INT_TYPE,
                    new JType[] {JType.INT, new JArrayType(JType.UNKNOWN)},
                    JMP_NEXT);
    public final static JOpcode CALOAD =
        new JOpcode("CALOAD",
                    cCALOAD,
                    1,
                    INT_TYPE,
                    new JType[] {JType.INT, JArrayType.CHAR},
                    JMP_NEXT);
    public final static JOpcode SALOAD =
        new JOpcode("SALOAD",
                    cSALOAD,
                    1,
                    INT_TYPE,
                    new JType[] {JType.INT, JArrayType.SHORT},
                    JMP_NEXT);
    public final static JOpcode ISTORE =
        new JOpcode("ISTORE", cISTORE, 2, NO_DATA, INT_TYPE, JMP_NEXT);
    public final static JOpcode LSTORE =
        new JOpcode("LSTORE", cLSTORE, 2, NO_DATA, LONG_TYPE, JMP_NEXT);
    public final static JOpcode FSTORE =
        new JOpcode("FSTORE", cFSTORE, 2, NO_DATA, FLOAT_TYPE, JMP_NEXT);
    public final static JOpcode DSTORE =
        new JOpcode("DSTORE", cDSTORE, 2, NO_DATA, DOUBLE_TYPE, JMP_NEXT);
    public final static JOpcode ASTORE =
        new JOpcode("ASTORE", cASTORE, 2, NO_DATA, REFERENCE_TYPE, JMP_NEXT);
    public final static JOpcode ISTORE_0 =
        new JOpcode("ISTORE_0", cISTORE_0, 1, NO_DATA, INT_TYPE, JMP_NEXT);
    public final static JOpcode ISTORE_1 =
        new JOpcode("ISTORE_1", cISTORE_1, 1, NO_DATA, INT_TYPE, JMP_NEXT);
    public final static JOpcode ISTORE_2 =
        new JOpcode("ISTORE_2", cISTORE_2, 1, NO_DATA, INT_TYPE, JMP_NEXT);
    public final static JOpcode ISTORE_3 =
        new JOpcode("ISTORE_3", cISTORE_3, 1, NO_DATA, INT_TYPE, JMP_NEXT);
    public final static JOpcode LSTORE_0 =
        new JOpcode("LSTORE_0", cLSTORE_0, 1, NO_DATA, LONG_TYPE, JMP_NEXT);
    public final static JOpcode LSTORE_1 =
        new JOpcode("LSTORE_1", cLSTORE_1, 1, NO_DATA, LONG_TYPE, JMP_NEXT);
    public final static JOpcode LSTORE_2 =
        new JOpcode("LSTORE_2", cLSTORE_2, 1, NO_DATA, LONG_TYPE, JMP_NEXT);
    public final static JOpcode LSTORE_3 =
        new JOpcode("LSTORE_3", cLSTORE_3, 1, NO_DATA, LONG_TYPE, JMP_NEXT);
    public final static JOpcode FSTORE_0 =
        new JOpcode("FSTORE_0", cFSTORE_0, 1, NO_DATA, FLOAT_TYPE, JMP_NEXT);
    public final static JOpcode FSTORE_1 =
        new JOpcode("FSTORE_1", cFSTORE_1, 1, NO_DATA, FLOAT_TYPE, JMP_NEXT);
    public final static JOpcode FSTORE_2 =
        new JOpcode("FSTORE_2", cFSTORE_2, 1, NO_DATA, FLOAT_TYPE, JMP_NEXT);
    public final static JOpcode FSTORE_3 =
        new JOpcode("FSTORE_3", cFSTORE_3, 1, NO_DATA, FLOAT_TYPE, JMP_NEXT);
    public final static JOpcode DSTORE_0 =
        new JOpcode("DSTORE_0", cDSTORE_0, 1, NO_DATA, DOUBLE_TYPE, JMP_NEXT);
    public final static JOpcode DSTORE_1 =
        new JOpcode("DSTORE_1", cDSTORE_1, 1, NO_DATA, DOUBLE_TYPE, JMP_NEXT);
    public final static JOpcode DSTORE_2 =
        new JOpcode("DSTORE_2", cDSTORE_2, 1, NO_DATA, DOUBLE_TYPE, JMP_NEXT);
    public final static JOpcode DSTORE_3 =
        new JOpcode("DSTORE_3", cDSTORE_3, 1, NO_DATA, DOUBLE_TYPE, JMP_NEXT);
    public final static JOpcode ASTORE_0 = new JOpcode("ASTORE_0",
                                                       cASTORE_0,
                                                       1,
                                                       NO_DATA,
                                                       REFERENCE_TYPE,
                                                       JMP_NEXT);
    public final static JOpcode ASTORE_1 = new JOpcode("ASTORE_1",
                                                       cASTORE_1,
                                                       1,
                                                       NO_DATA,
                                                       REFERENCE_TYPE,
                                                       JMP_NEXT);
    public final static JOpcode ASTORE_2 = new JOpcode("ASTORE_2",
                                                       cASTORE_2,
                                                       1,
                                                       NO_DATA,
                                                       REFERENCE_TYPE,
                                                       JMP_NEXT);
    public final static JOpcode ASTORE_3 = new JOpcode("ASTORE_3",
                                                       cASTORE_3,
                                                       1,
                                                       NO_DATA,
                                                       REFERENCE_TYPE,
                                                       JMP_NEXT);
    public final static JOpcode IASTORE =
        new JOpcode("IASTORE",
                    cIASTORE,
                    1,
                    NO_DATA,
                    new JType[] { JType.INT,
                                  JType.INT,
                                  JArrayType.INT},
                    JMP_NEXT);
    public final static JOpcode LASTORE =
        new JOpcode("LASTORE",
                    cLASTORE,
                    1,
                    NO_DATA,
                    new JType[] { JType.LONG,
                                  JType.INT,
                                  JArrayType.LONG},
                    JMP_NEXT);
    public final static JOpcode FASTORE =
        new JOpcode("FASTORE",
                    cFASTORE,
                    1,
                    NO_DATA,
                    new JType[] { JType.FLOAT,
                                  JType.INT,
                                  JArrayType.FLOAT},
                    JMP_NEXT);
    public final static JOpcode DASTORE =
        new JOpcode("DASTORE",
                    cDASTORE,
                    1,
                    NO_DATA,
                    new JType[] { JType.DOUBLE,
                                  JType.INT,
                                  JArrayType.DOUBLE},
                    JMP_NEXT);
    public final static JOpcode AASTORE =
        new JOpcode("AASTORE",
                    cAASTORE,
                    1,
                    NO_DATA,
                    new JType[] { JType.REFERENCE,
                                  JType.INT,
                                  JArrayType.REFERENCE},
                    JMP_NEXT);
    public final static JOpcode BASTORE =
        new JOpcode("BASTORE",
                    cBASTORE,
                    1,
                    NO_DATA,
                    new JType[] { JType.INT,
                                  JType.INT,
                                  new JArrayType(JType.UNKNOWN)},
                    JMP_NEXT);
    public final static JOpcode CASTORE =
        new JOpcode("CASTORE",
                    cCASTORE,
                    1,
                    NO_DATA,
                    new JType[] { JType.INT,
                                  JType.INT,
                                  JArrayType.CHAR},
                    JMP_NEXT);
    public final static JOpcode SASTORE =
        new JOpcode("SASTORE",
                    cSASTORE,
                    1,
                    NO_DATA,
                    new JType[] { JType.INT,
                                  JType.INT,
                                  JArrayType.SHORT},
                    JMP_NEXT);
    public final static JOpcode POP =
        new JOpcode("POP", cPOP, 1, NO_DATA, UNKNOWN_TYPE, JMP_NEXT);
    public final static JOpcode POP2 =
        new JOpcode("POP2", cPOP2, 1, NO_DATA, UNKNOWN_TYPE, JMP_NEXT);
    public final static JOpcode DUP =
        new JOpcode("DUP", cDUP, 1, UNKNOWN_TYPE, UNKNOWN_TYPE, JMP_NEXT);
    public final static JOpcode DUP_X1 = new JOpcode("DUP_X1",
                                                     cDUP_X1,
                                                     1,
                                                     UNKNOWN_TYPE,
                                                     UNKNOWN_TYPE,
                                                     JMP_NEXT);
    public final static JOpcode DUP_X2 = new JOpcode("DUP_X2",
                                                     cDUP_X2,
                                                     1,
                                                     UNKNOWN_TYPE,
                                                     UNKNOWN_TYPE,
                                                     JMP_NEXT);
    public final static JOpcode DUP2 =
        new JOpcode("DUP2", cDUP2, 1, UNKNOWN_TYPE, UNKNOWN_TYPE, JMP_NEXT);
    public final static JOpcode DUP2_X1 = new JOpcode("DUP2_X1",
                                                      cDUP2_X1,
                                                      1,
                                                      UNKNOWN_TYPE,
                                                      UNKNOWN_TYPE,
                                                      JMP_NEXT);
    public final static JOpcode DUP2_X2 = new JOpcode("DUP2_X2",
                                                      cDUP2_X2,
                                                      1,
                                                      UNKNOWN_TYPE,
                                                      UNKNOWN_TYPE,
                                                      JMP_NEXT);
    public final static JOpcode SWAP =
        new JOpcode("SWAP", cSWAP, 1, UNKNOWN_TYPE, UNKNOWN_TYPE, JMP_NEXT);
    public final static JOpcode IADD =
        new JOpcode("IADD",
                    cIADD,
                    1,
                    INT_TYPE,
                    new JType[] { JType.INT, JType.INT },
                    JMP_NEXT);
    public final static JOpcode LADD =
        new JOpcode("LADD",
                    cLADD,
                    1,
                    LONG_TYPE,
                    new JType[] { JType.LONG, JType.LONG },
                    JMP_NEXT);
    public final static JOpcode FADD =
        new JOpcode("FADD",
                    cFADD,
                    1,
                    FLOAT_TYPE,
                    new JType[] { JType.FLOAT, JType.FLOAT },
                    JMP_NEXT);
    public final static JOpcode DADD =
        new JOpcode("DADD",
                    cDADD,
                    1,
                    DOUBLE_TYPE,
                    new JType[] { JType.DOUBLE, JType.DOUBLE },
                    JMP_NEXT);
    public final static JOpcode ISUB =
        new JOpcode("ISUB",
                    cISUB,
                    1,
                    INT_TYPE,
                    new JType[] {JType.INT, JType.INT },
                    JMP_NEXT);
    public final static JOpcode LSUB =
        new JOpcode("LSUB",
                    cLSUB,
                    1,
                    LONG_TYPE,
                    new JType[] { JType.LONG, JType.LONG },
                    JMP_NEXT);
    public final static JOpcode FSUB =
        new JOpcode("FSUB",
                    cFSUB,
                    1,
                    FLOAT_TYPE,
                    new JType[] { JType.FLOAT, JType.FLOAT },
                    JMP_NEXT);
    public final static JOpcode DSUB =
        new JOpcode("DSUB",
                    cDSUB,
                    1,
                    DOUBLE_TYPE,
                    new JType[] { JType.DOUBLE, JType.DOUBLE },
                    JMP_NEXT);
    public final static JOpcode IMUL =
        new JOpcode("IMUL",
                    cIMUL,
                    1,
                    INT_TYPE,
                    new JType[] {JType.INT, JType.INT },
                    JMP_NEXT);
    public final static JOpcode LMUL =
        new JOpcode("LMUL",
                    cLMUL,
                    1,
                    LONG_TYPE,
                    new JType[] { JType.LONG, JType.LONG },
                    JMP_NEXT);
    public final static JOpcode FMUL =
        new JOpcode("FMUL",
                    cFMUL,
                    1,
                    FLOAT_TYPE,
                    new JType[] { JType.FLOAT, JType.FLOAT },
                    JMP_NEXT);
    public final static JOpcode DMUL =
        new JOpcode("DMUL",
                    cDMUL,
                    1,
                    DOUBLE_TYPE,
                    new JType[] { JType.DOUBLE, JType.DOUBLE },
                    JMP_NEXT);
    public final static JOpcode IDIV =
        new JOpcode("IDIV",
                    cIDIV,
                    1,
                    INT_TYPE,
                    new JType[] {JType.INT, JType.INT },
                    JMP_NEXT);
    public final static JOpcode LDIV =
        new JOpcode("LDIV",
                    cLDIV,
                    1,
                    LONG_TYPE,
                    new JType[] { JType.LONG, JType.LONG },
                    JMP_NEXT);
    public final static JOpcode FDIV =
        new JOpcode("FDIV",
                    cFDIV,
                    1,
                    FLOAT_TYPE,
                    new JType[] { JType.FLOAT, JType.FLOAT },
                    JMP_NEXT);
    public final static JOpcode DDIV =
        new JOpcode("DDIV",
                    cDDIV,
                    1,
                    DOUBLE_TYPE,
                    new JType[] { JType.DOUBLE, JType.DOUBLE },
                    JMP_NEXT);
    public final static JOpcode IREM =
        new JOpcode("IREM",
                    cIREM,
                    1,
                    INT_TYPE,
                    new JType[] {JType.INT, JType.INT },
                    JMP_NEXT);
    public final static JOpcode LREM =
        new JOpcode("LREM",
                    cLREM,
                    1,
                    LONG_TYPE,
                    new JType[] { JType.LONG, JType.LONG },
                    JMP_NEXT);
    public final static JOpcode FREM =
        new JOpcode("FREM",
                    cFREM,
                    1,
                    FLOAT_TYPE,
                    new JType[] { JType.FLOAT, JType.FLOAT },
                    JMP_NEXT);
    public final static JOpcode DREM =
        new JOpcode("DREM",
                    cDREM,
                    1,
                    DOUBLE_TYPE,
                    new JType[] { JType.DOUBLE, JType.DOUBLE },
                    JMP_NEXT);
    public final static JOpcode INEG =
        new JOpcode("INEG", cINEG, 1, INT_TYPE, INT_TYPE, JMP_NEXT);
    public final static JOpcode LNEG =
        new JOpcode("LNEG", cLNEG, 1, LONG_TYPE, LONG_TYPE, JMP_NEXT);
    public final static JOpcode FNEG =
        new JOpcode("FNEG", cFNEG, 1, FLOAT_TYPE, FLOAT_TYPE, JMP_NEXT);
    public final static JOpcode DNEG =
        new JOpcode("DNEG", cDNEG, 1, DOUBLE_TYPE, DOUBLE_TYPE, JMP_NEXT);
    public final static JOpcode ISHL =
        new JOpcode("ISHL", cISHL,
                    1,
                    INT_TYPE,
                    new JType[] { JType.INT, JType.INT },
                    JMP_NEXT);
    public final static JOpcode LSHL =
        new JOpcode("LSHL",
                    cLSHL,
                    1,
                    LONG_TYPE,
                    new JType [] { JType.INT, JType.LONG },
                    JMP_NEXT);
    public final static JOpcode ISHR =
        new JOpcode("ISHR",
                    cISHR,
                    1,
                    INT_TYPE,
                    new JType[] { JType.INT, JType.INT },
                    JMP_NEXT);
    public final static JOpcode LSHR =
        new JOpcode("LSHR",
                    cLSHR,
                    1,
                    LONG_TYPE,
                    new JType[] { JType.INT, JType.LONG },
                    JMP_NEXT);
    public final static JOpcode IUSHR =
        new JOpcode("IUSHR",
                    cIUSHR,
                    1,
                    INT_TYPE,
                    new JType[] { JType.INT, JType.INT },
                    JMP_NEXT);
    public final static JOpcode LUSHR =
        new JOpcode("LUSHR",
                    cLUSHR,
                    1,
                    LONG_TYPE,
                    new JType[] { JType.INT, JType.LONG },
                    JMP_NEXT);
    public final static JOpcode IAND =
        new JOpcode("IAND",
                    cIAND,
                    1,
                    INT_TYPE,
                    new JType[] { JType.INT, JType.INT },
                    JMP_NEXT);
    public final static JOpcode LAND =
        new JOpcode("LAND",
                    cLAND,
                    1,
                    LONG_TYPE,
                    new JType[] { JType.LONG, JType.LONG },
                    JMP_NEXT);
    public final static JOpcode IOR =
        new JOpcode("IOR",
                    cIOR,
                    1,
                    INT_TYPE,
                    new JType[] { JType.INT, JType.INT },
                    JMP_NEXT);
    public final static JOpcode LOR =
        new JOpcode("LOR",
                    cLOR,
                    1,
                    LONG_TYPE,
                    new JType[] { JType.LONG, JType.LONG },
                    JMP_NEXT);
    public final static JOpcode IXOR =
        new JOpcode("IXOR",
                    cIXOR,
                    1,
                    INT_TYPE,
                    new JType[] { JType.INT, JType.INT },
                    JMP_NEXT);
    public final static JOpcode LXOR =
        new JOpcode("LXOR",
                    cLXOR,
                    1,
                    LONG_TYPE,
                    new JType[] { JType.LONG, JType.LONG },
                    JMP_NEXT);
    public final static JOpcode IINC =
        new JOpcode("IINC", cIINC, 3, NO_DATA, NO_DATA, JMP_NEXT);
    public final static JOpcode I2L =
        new JOpcode("I2L", cI2L, 1, LONG_TYPE, INT_TYPE, JMP_NEXT);
    public final static JOpcode I2F =
        new JOpcode("I2F", cI2F, 1, FLOAT_TYPE, INT_TYPE, JMP_NEXT);
    public final static JOpcode I2D =
        new JOpcode("I2D", cI2D, 1, DOUBLE_TYPE, INT_TYPE, JMP_NEXT);
    public final static JOpcode L2I =
        new JOpcode("L2I", cL2I, 1, INT_TYPE, LONG_TYPE, JMP_NEXT);
    public final static JOpcode L2F =
        new JOpcode("L2F", cL2F, 1, FLOAT_TYPE, LONG_TYPE, JMP_NEXT);
    public final static JOpcode L2D =
        new JOpcode("L2D", cL2D, 1, DOUBLE_TYPE, LONG_TYPE, JMP_NEXT);
    public final static JOpcode F2I =
        new JOpcode("F2I", cF2I, 1, INT_TYPE, FLOAT_TYPE, JMP_NEXT);
    public final static JOpcode F2L =
        new JOpcode("F2L", cF2L, 1, LONG_TYPE, FLOAT_TYPE, JMP_NEXT);
    public final static JOpcode F2D =
        new JOpcode("F2D", cF2D, 1, DOUBLE_TYPE, FLOAT_TYPE, JMP_NEXT);
    public final static JOpcode D2I =
        new JOpcode("D2I", cD2I, 1, INT_TYPE, DOUBLE_TYPE, JMP_NEXT);
    public final static JOpcode D2L =
        new JOpcode("D2L", cD2L, 1, LONG_TYPE, DOUBLE_TYPE, JMP_NEXT);
    public final static JOpcode D2F =
        new JOpcode("D2F", cD2F, 1, FLOAT_TYPE, DOUBLE_TYPE, JMP_NEXT);
    public final static JOpcode I2B =
        new JOpcode("I2B", cI2B, 1, INT_TYPE, INT_TYPE, JMP_NEXT);
    public final static JOpcode I2C =
        new JOpcode("I2C", cI2C, 1, INT_TYPE, INT_TYPE, JMP_NEXT);
    public final static JOpcode I2S =
        new JOpcode("I2S", cI2S, 1, INT_TYPE, INT_TYPE, JMP_NEXT);
    public final static JOpcode LCMP =
        new JOpcode("LCMP",
                    cLCMP,
                    1,
                    INT_TYPE,
                    new JType[] { JType.LONG, JType.LONG },
                    JMP_NEXT);
    public final static JOpcode FCMPL =
        new JOpcode("FCMPL",
                    cFCMPL,
                    1,
                    INT_TYPE,
                    new JType[] { JType.FLOAT, JType.FLOAT },
                    JMP_NEXT);
    public final static JOpcode FCMPG =
        new JOpcode("FCMPG",
                    cFCMPG,
                    1,
                    INT_TYPE,
                    new JType[] { JType.FLOAT, JType.FLOAT },
                    JMP_NEXT);
    public final static JOpcode DCMPL =
        new JOpcode("DCMPL",
                    cDCMPL,
                    1,
                    INT_TYPE,
                    new JType[] { JType.LONG, JType.LONG },
                    JMP_NEXT);
    public final static JOpcode DCMPG =
        new JOpcode("DCMPG",
                    cDCMPG,
                    1,
                    INT_TYPE,
                    new JType[] { JType.DOUBLE, JType.DOUBLE },
                    JMP_NEXT);
    public final static JOpcode IFEQ =
        new JOpcode("IFEQ", cIFEQ, 3, NO_DATA, INT_TYPE, JMP_MAYBE_S2_OFFSET);
    public final static JOpcode IFNE =
        new JOpcode("IFNE", cIFNE, 3, NO_DATA, INT_TYPE, JMP_MAYBE_S2_OFFSET);
    public final static JOpcode IFLT =
        new JOpcode("IFLT", cIFLT, 3, NO_DATA, INT_TYPE, JMP_MAYBE_S2_OFFSET);
    public final static JOpcode IFGE =
        new JOpcode("IFGE", cIFGE, 3, NO_DATA, INT_TYPE, JMP_MAYBE_S2_OFFSET);
    public final static JOpcode IFGT =
        new JOpcode("IFGT", cIFGT, 3, NO_DATA, INT_TYPE, JMP_MAYBE_S2_OFFSET);
    public final static JOpcode IFLE =
        new JOpcode("IFLE", cIFLE, 3, NO_DATA, INT_TYPE, JMP_MAYBE_S2_OFFSET);
    public final static JOpcode IF_ICMPEQ =
        new JOpcode("IF_ICMPEQ",
                    cIF_ICMPEQ,
                    3,
                    NO_DATA,
                    new JType[] { JType.INT, JType.INT },
                    JMP_MAYBE_S2_OFFSET);
    public final static JOpcode IF_ICMPNE =
        new JOpcode("IF_ICMPNE",
                    cIF_ICMPNE,
                    3,
                    NO_DATA,
                    new JType[] { JType.INT, JType.INT },
                    JMP_MAYBE_S2_OFFSET);
    public final static JOpcode IF_ICMPLT =
        new JOpcode("IF_ICMPLT",
                    cIF_ICMPLT,
                    3,
                    NO_DATA,
                    new JType[] { JType.INT, JType.INT },
                    JMP_MAYBE_S2_OFFSET);
    public final static JOpcode IF_ICMPGE =
        new JOpcode("IF_ICMPGE",
                    cIF_ICMPGE,
                    3,
                    NO_DATA,
                    new JType[] { JType.INT, JType.INT },
                    JMP_MAYBE_S2_OFFSET);
    public final static JOpcode IF_ICMPGT =
        new JOpcode("IF_ICMPGT",
                    cIF_ICMPGT,
                    3,
                    NO_DATA,
                    new JType[] { JType.INT, JType.INT },
                    JMP_MAYBE_S2_OFFSET);
    public final static JOpcode IF_ICMPLE =
        new JOpcode("IF_ICMPLE",
                    cIF_ICMPLE,
                    3,
                    NO_DATA,
                    new JType[] { JType.INT, JType.INT },
                    JMP_MAYBE_S2_OFFSET);
    public final static JOpcode IF_ACMPEQ =
        new JOpcode("IF_ACMPEQ",
                    cIF_ACMPEQ,
                    3,
                    NO_DATA,
                    new JType[] { JType.REFERENCE, JType.REFERENCE },
                    JMP_MAYBE_S2_OFFSET);
    public final static JOpcode IF_ACMPNE =
        new JOpcode("IF_ACMPNE",
                    cIF_ACMPNE,
                    3,
                    NO_DATA,
                    new JType[] { JType.REFERENCE, JType.REFERENCE },
                    JMP_MAYBE_S2_OFFSET);
    public final static JOpcode GOTO =
        new JOpcode("GOTO", cGOTO, 3, NO_DATA, NO_DATA, JMP_ALWAYS_S2_OFFSET);
    public final static JOpcode JSR =
        new JOpcode("JSR", cJSR, 3, ADDRESS_TYPE, NO_DATA, JMP_ALWAYS_S2_OFFSET);
    public final static JOpcode RET =
        new JOpcode("RET", cRET, 2, NO_DATA, NO_DATA, JMP_NONE);
    public final static JOpcode TABLESWITCH = new JOpcode("TABLESWITCH",
                                                          cTABLESWITCH,
                                                          UNKNOWN,
                                                          NO_DATA,
                                                          INT_TYPE,
                                                          JMP_TABLE);
    public final static JOpcode LOOKUPSWITCH = new JOpcode("LOOKUPSWITCH",
                                                           cLOOKUPSWITCH,
                                                           UNKNOWN,
                                                           NO_DATA,
                                                           INT_TYPE,
                                                           JMP_LOOKUP);
    public final static JOpcode IRETURN =
        new JOpcode("IRETURN", cIRETURN, 1, NO_DATA, INT_TYPE, JMP_NONE);
    public final static JOpcode LRETURN =
        new JOpcode("LRETURN", cLRETURN, 1, NO_DATA, LONG_TYPE, JMP_NONE);
    public final static JOpcode FRETURN =
        new JOpcode("FRETURN", cFRETURN, 1, NO_DATA, FLOAT_TYPE, JMP_NONE);
    public final static JOpcode DRETURN =
        new JOpcode("DRETURN", cDRETURN, 1, NO_DATA, DOUBLE_TYPE, JMP_NONE);
    public final static JOpcode ARETURN = new JOpcode("ARETURN",
                                                      cARETURN,
                                                      1,
                                                      NO_DATA,
                                                      OBJECT_REF_TYPE,
                                                      JMP_NONE);
    public final static JOpcode RETURN =
        new JOpcode("RETURN", cRETURN, 1, NO_DATA, NO_DATA, JMP_NONE);
    public final static JOpcode GETSTATIC = new JOpcode("GETSTATIC",
                                                        cGETSTATIC,
                                                        3,
                                                        UNKNOWN_TYPE,
                                                        NO_DATA,
                                                        JMP_NEXT);
    public final static JOpcode PUTSTATIC = new JOpcode("PUTSTATIC",
                                                        cPUTSTATIC,
                                                        3,
                                                        NO_DATA,
                                                        UNKNOWN_TYPE,
                                                        JMP_NEXT);
    public final static JOpcode GETFIELD = new JOpcode("GETFIELD",
                                                       cGETFIELD,
                                                       3,
                                                       UNKNOWN_TYPE,
                                                       OBJECT_REF_TYPE,
                                                       JMP_NEXT);
    public final static JOpcode PUTFIELD =
        new JOpcode("PUTFIELD", cPUTFIELD, 3, NO_DATA, UNKNOWN_TYPE, JMP_NEXT);
    public final static JOpcode INVOKEVIRTUAL = new JOpcode("INVOKEVIRTUAL",
                                                            cINVOKEVIRTUAL,
                                                            3,
                                                            NO_DATA,
                                                            UNKNOWN_TYPE,
                                                            JMP_NEXT);
    public final static JOpcode INVOKESPECIAL = new JOpcode("INVOKESPECIAL",
                                                            cINVOKESPECIAL,
                                                            3,
                                                            NO_DATA,
                                                            UNKNOWN_TYPE,
                                                            JMP_NEXT);
    public final static JOpcode INVOKESTATIC = new JOpcode("INVOKESTATIC",
                                                           cINVOKESTATIC,
                                                           3,
                                                           NO_DATA,
                                                           UNKNOWN_TYPE,
                                                           JMP_NEXT);
    public final static JOpcode INVOKEINTERFACE =
        new JOpcode("INVOKEINTERFACE",
                    cINVOKEINTERFACE,
                    5,
                    NO_DATA,
                    UNKNOWN_TYPE,
                    JMP_NEXT);
    public final static JOpcode NEW =
        new JOpcode("NEW", cNEW, 3, OBJECT_REF_TYPE, NO_DATA, JMP_NEXT);
    public final static JOpcode NEWARRAY =
        new JOpcode("NEWARRAY",
                    cNEWARRAY,
                    2,
                    ARRAY_REF_TYPE,
                    INT_TYPE,
                    JMP_NEXT);
    public final static JOpcode ANEWARRAY =
        new JOpcode("ANEWARRAY",
                    cANEWARRAY,
                    3,
                    ARRAY_REF_TYPE,
                    INT_TYPE,
                    JMP_NEXT);
    public final static JOpcode ARRAYLENGTH = new JOpcode("ARRAYLENGTH",
                                                          cARRAYLENGTH,
                                                          1,
                                                          INT_TYPE,
                                                          ARRAY_REF_TYPE,
                                                          JMP_NEXT);
    public final static JOpcode ATHROW = new JOpcode("ATHROW",
                                                     cATHROW,
                                                     1,
                                                     OBJECT_REF_TYPE,
                                                     OBJECT_REF_TYPE,
                                                     JMP_NONE);
    public final static JOpcode CHECKCAST = new JOpcode("CHECKCAST",
                                                        cCHECKCAST,
                                                        3,
                                                        OBJECT_REF_TYPE,
                                                        OBJECT_REF_TYPE,
                                                        JMP_NEXT);
    public final static JOpcode INSTANCEOF = new JOpcode("INSTANCEOF",
                                                         cINSTANCEOF,
                                                         3,
                                                         INT_TYPE,
                                                         OBJECT_REF_TYPE,
                                                         JMP_NEXT);
    public final static JOpcode MONITORENTER = new JOpcode("MONITORENTER",
                                                           cMONITORENTER,
                                                           1,
                                                           NO_DATA,
                                                           OBJECT_REF_TYPE,
                                                           JMP_NEXT);
    public final static JOpcode MONITOREXIT = new JOpcode("MONITOREXIT",
                                                          cMONITOREXIT,
                                                          1,
                                                          NO_DATA,
                                                          OBJECT_REF_TYPE,
                                                          JMP_NEXT);
    public final static JOpcode WIDE = new JOpcode("WIDE",
                                                   cWIDE,
                                                   UNKNOWN,
                                                   UNKNOWN_TYPE,
                                                   UNKNOWN_TYPE,
                                                   JMP_NEXT);
    public final static JOpcode MULTIANEWARRAY = new JOpcode("MULTIANEWARRAY",
                                                             cMULTIANEWARRAY,
                                                             4,
                                                             ARRAY_REF_TYPE,
                                                             UNKNOWN_TYPE,
                                                             JMP_NEXT);
    public final static JOpcode IFNULL = new JOpcode("IFNULL",
                                                     cIFNULL,
                                                     3,
                                                     NO_DATA,
                                                     REFERENCE_TYPE,
                                                     JMP_MAYBE_S2_OFFSET);
    public final static JOpcode IFNONNULL = new JOpcode("IFNONNULL",
                                                        cIFNONNULL,
                                                        3,
                                                        NO_DATA,
                                                        REFERENCE_TYPE,
                                                        JMP_MAYBE_S2_OFFSET);
    public final static JOpcode GOTO_W = new JOpcode("GOTO_W",
                                                     cGOTO_W,
                                                     5,
                                                     NO_DATA,
                                                     NO_DATA,
                                                     JMP_ALWAYS_S4_OFFSET);
    public final static JOpcode JSR_W =
        new JOpcode("JSR_W", cJSR_W, 5, ADDRESS_TYPE, NO_DATA, JMP_NEXT);

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

    protected JOpcode(String name,
                      int code,
                      int size,
                      JType[] producedDataTypes,
                      JType[] consumedDataTypes,
                      int jumpKind) {
        this.name = name;
        this.code = code;
        this.size = size;
        this.producedDataTypes = producedDataTypes;
        this.consumedDataTypes = consumedDataTypes;
        this.jumpKind = jumpKind;
        switch (jumpKind) {
        case JMP_NONE: successorCount = 0; break;
        case JMP_NEXT: successorCount = 1; break;
        case JMP_ALWAYS_S2_OFFSET: successorCount = 1; break;
        case JMP_ALWAYS_S4_OFFSET: successorCount = 1; break;
        case JMP_MAYBE_S2_OFFSET: successorCount = 2; break;
        case JMP_TABLE: successorCount = UNKNOWN; break;
        case JMP_LOOKUP: successorCount = UNKNOWN; break;
        default: successorCount = UNKNOWN; break;
        }
    }

    public String toString() { return name; }
    protected int getSize() { return size; }
    protected JType[] getProducedDataTypes() { return producedDataTypes; }
    protected JType[] getConsumedDataTypes() { return consumedDataTypes; }

    protected int getProducedDataSize() {
        if (producedDataTypes != UNKNOWN_TYPE)
            return JType.getTotalSize(producedDataTypes);
        else {
            switch (code) {
            case cLDC: case cLDC_W: case cBALOAD:
                return 1;
            case cLDC2_W: case cDUP: case cSWAP:
                return 2;
            case cDUP_X1:
                return 3;
            case cDUP_X2: case cDUP2:
                return 4;
            case cDUP2_X1:
                return 5;
            case cDUP2_X2:
                return 6;
            default:
                throw new Error(this.toString());
            }
        }
    }

    protected int getConsumedDataSize() {
        if (consumedDataTypes != UNKNOWN_TYPE)
            return JType.getTotalSize(consumedDataTypes);
        else {
            switch (code) {
            case cPOP: case cDUP:
                return 1;
            case cPOP2: case cDUP_X1: case cDUP2: case cSWAP:
                return 2;
            case cDUP_X2: case cDUP2_X1:
                return 3;
            case cDUP2_X2:
                return 4;
            default:
                throw new Error(this.toString());
            }
        }
    }

    protected int getProducedDataTypesNumber() {
        if (producedDataTypes != UNKNOWN_TYPE)
            return producedDataTypes.length;
        else {
            switch (code) {
            case cLDC: case cLDC_W: case cLDC2_W: case cBALOAD:
            case cGETSTATIC: case cGETFIELD:
                return 1;
            case cDUP: case cSWAP:
                return 2;
            case cDUP_X2: case cDUP2: case cDUP2_X1: case cDUP2_X2:
                return 2;
            case cDUP_X1:
                return 3;
            default:
                throw new Error(this.toString());
            }
        }
    }

    protected int getConsumedDataTypesNumber() {
        if (consumedDataTypes != UNKNOWN_TYPE)
            return consumedDataTypes.length;
        else {
            switch (code) {
            case cPOP: case cDUP: case cPUTSTATIC:
                return 1;
            case cPUTFIELD: case cDUP_X1: case cDUP_X2:
            case cDUP2: case cDUP2_X1: case cPOP2: case cSWAP:
                return 2;
            default:
                throw new Error(this.toString());
            }
        }
    }
}

Other Scala examples (source code examples)

Here is a short list of links related to this Scala JOpcode.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.