美文网首页
Java bytecodes

Java bytecodes

作者: 光剑书架上的书 | 来源:发表于2020-09-07 14:31 被阅读0次
      private static void def(int code, String name, String format, String wide_format, int result_type, int depth, boolean can_trap) {
        def(code, name, format, wide_format, result_type, depth, can_trap, code);
      }
    
      private static void def(int code, String name, String format, String wide_format, int result_type, int depth, boolean can_trap, int java_code) {
        if (Assert.ASSERTS_ENABLED) {
          Assert.that(wide_format == null || format != null, "short form must exist if there's a wide form");
        }
        int len  = (format      != null ? format.length()      : 0);
        int wlen = (wide_format != null ? wide_format.length() : 0);
        _name          [code] = name;
        _result_type   [code] = result_type;
        _depth         [code] = (byte) depth;
        _lengths       [code] = (byte)((wlen << 4) | (len & 0xF));
        _java_code     [code] = java_code;
        _format        [code] = format;
        _wide_format   [code] = wide_format;
        int bc_flags = 0;
        if (can_trap)           bc_flags |= _bc_can_trap;
        if (java_code != code)  bc_flags |= _bc_can_rewrite;
        _flags[code+0*256] = compute_flags(format,      bc_flags);
        _flags[code+1*256] = compute_flags(wide_format, bc_flags);
      }
    
    
    //  Java bytecodes
        //  bytecode               bytecode name           format   wide f.   result tp                stk traps
        def(_nop                 , "nop"                 , "b"    , null    , BasicType.getTVoid()   ,  0, false);
        def(_aconst_null         , "aconst_null"         , "b"    , null    , BasicType.getTObject() ,  1, false);
        def(_iconst_m1           , "iconst_m1"           , "b"    , null    , BasicType.getTInt()    ,  1, false);
        def(_iconst_0            , "iconst_0"            , "b"    , null    , BasicType.getTInt()    ,  1, false);
        def(_iconst_1            , "iconst_1"            , "b"    , null    , BasicType.getTInt()    ,  1, false);
        def(_iconst_2            , "iconst_2"            , "b"    , null    , BasicType.getTInt()    ,  1, false);
        def(_iconst_3            , "iconst_3"            , "b"    , null    , BasicType.getTInt()    ,  1, false);
        def(_iconst_4            , "iconst_4"            , "b"    , null    , BasicType.getTInt()    ,  1, false);
        def(_iconst_5            , "iconst_5"            , "b"    , null    , BasicType.getTInt()    ,  1, false);
        def(_lconst_0            , "lconst_0"            , "b"    , null    , BasicType.getTLong()   ,  2, false);
        def(_lconst_1            , "lconst_1"            , "b"    , null    , BasicType.getTLong()   ,  2, false);
        def(_fconst_0            , "fconst_0"            , "b"    , null    , BasicType.getTFloat()  ,  1, false);
        def(_fconst_1            , "fconst_1"            , "b"    , null    , BasicType.getTFloat()  ,  1, false);
        def(_fconst_2            , "fconst_2"            , "b"    , null    , BasicType.getTFloat()  ,  1, false);
        def(_dconst_0            , "dconst_0"            , "b"    , null    , BasicType.getTDouble() ,  2, false);
        def(_dconst_1            , "dconst_1"            , "b"    , null    , BasicType.getTDouble() ,  2, false);
        def(_bipush              , "bipush"              , "bc"   , null    , BasicType.getTInt()    ,  1, false);
        def(_sipush              , "sipush"              , "bcc"  , null    , BasicType.getTInt()    ,  1, false);
        def(_ldc                 , "ldc"                 , "bk"   , null    , BasicType.getTIllegal(),  1, true );
        def(_ldc_w               , "ldc_w"               , "bkk"  , null    , BasicType.getTIllegal(),  1, true );
        def(_ldc2_w              , "ldc2_w"              , "bkk"  , null    , BasicType.getTIllegal(),  2, true );
        def(_iload               , "iload"               , "bi"   , "wbii"  , BasicType.getTInt()    ,  1, false);
        def(_lload               , "lload"               , "bi"   , "wbii"  , BasicType.getTLong()   ,  2, false);
        def(_fload               , "fload"               , "bi"   , "wbii"  , BasicType.getTFloat()  ,  1, false);
        def(_dload               , "dload"               , "bi"   , "wbii"  , BasicType.getTDouble() ,  2, false);
        def(_aload               , "aload"               , "bi"   , "wbii"  , BasicType.getTObject() ,  1, false);
        def(_iload_0             , "iload_0"             , "b"    , null    , BasicType.getTInt()    ,  1, false);
        def(_iload_1             , "iload_1"             , "b"    , null    , BasicType.getTInt()    ,  1, false);
        def(_iload_2             , "iload_2"             , "b"    , null    , BasicType.getTInt()    ,  1, false);
        def(_iload_3             , "iload_3"             , "b"    , null    , BasicType.getTInt()    ,  1, false);
        def(_lload_0             , "lload_0"             , "b"    , null    , BasicType.getTLong()   ,  2, false);
        def(_lload_1             , "lload_1"             , "b"    , null    , BasicType.getTLong()   ,  2, false);
        def(_lload_2             , "lload_2"             , "b"    , null    , BasicType.getTLong()   ,  2, false);
        def(_lload_3             , "lload_3"             , "b"    , null    , BasicType.getTLong()   ,  2, false);
        def(_fload_0             , "fload_0"             , "b"    , null    , BasicType.getTFloat()  ,  1, false);
        def(_fload_1             , "fload_1"             , "b"    , null    , BasicType.getTFloat()  ,  1, false);
        def(_fload_2             , "fload_2"             , "b"    , null    , BasicType.getTFloat()  ,  1, false);
        def(_fload_3             , "fload_3"             , "b"    , null    , BasicType.getTFloat()  ,  1, false);
        def(_dload_0             , "dload_0"             , "b"    , null    , BasicType.getTDouble() ,  2, false);
        def(_dload_1             , "dload_1"             , "b"    , null    , BasicType.getTDouble() ,  2, false);
        def(_dload_2             , "dload_2"             , "b"    , null    , BasicType.getTDouble() ,  2, false);
        def(_dload_3             , "dload_3"             , "b"    , null    , BasicType.getTDouble() ,  2, false);
        def(_aload_0             , "aload_0"             , "b"    , null    , BasicType.getTObject() ,  1, true ); // rewriting in interpreter
        def(_aload_1             , "aload_1"             , "b"    , null    , BasicType.getTObject() ,  1, false);
        def(_aload_2             , "aload_2"             , "b"    , null    , BasicType.getTObject() ,  1, false);
        def(_aload_3             , "aload_3"             , "b"    , null    , BasicType.getTObject() ,  1, false);
        def(_iaload              , "iaload"              , "b"    , null    , BasicType.getTInt()    , -1, true );
        def(_laload              , "laload"              , "b"    , null    , BasicType.getTLong()   ,  0, true );
        def(_faload              , "faload"              , "b"    , null    , BasicType.getTFloat()  , -1, true );
        def(_daload              , "daload"              , "b"    , null    , BasicType.getTDouble() ,  0, true );
        def(_aaload              , "aaload"              , "b"    , null    , BasicType.getTObject() , -1, true );
        def(_baload              , "baload"              , "b"    , null    , BasicType.getTInt()    , -1, true );
        def(_caload              , "caload"              , "b"    , null    , BasicType.getTInt()    , -1, true );
        def(_saload              , "saload"              , "b"    , null    , BasicType.getTInt()    , -1, true );
        def(_istore              , "istore"              , "bi"   , "wbii"  , BasicType.getTVoid()   , -1, false);
        def(_lstore              , "lstore"              , "bi"   , "wbii"  , BasicType.getTVoid()   , -2, false);
        def(_fstore              , "fstore"              , "bi"   , "wbii"  , BasicType.getTVoid()   , -1, false);
        def(_dstore              , "dstore"              , "bi"   , "wbii"  , BasicType.getTVoid()   , -2, false);
        def(_astore              , "astore"              , "bi"   , "wbii"  , BasicType.getTVoid()   , -1, false);
        def(_istore_0            , "istore_0"            , "b"    , null    , BasicType.getTVoid()   , -1, false);
        def(_istore_1            , "istore_1"            , "b"    , null    , BasicType.getTVoid()   , -1, false);
        def(_istore_2            , "istore_2"            , "b"    , null    , BasicType.getTVoid()   , -1, false);
        def(_istore_3            , "istore_3"            , "b"    , null    , BasicType.getTVoid()   , -1, false);
        def(_lstore_0            , "lstore_0"            , "b"    , null    , BasicType.getTVoid()   , -2, false);
        def(_lstore_1            , "lstore_1"            , "b"    , null    , BasicType.getTVoid()   , -2, false);
        def(_lstore_2            , "lstore_2"            , "b"    , null    , BasicType.getTVoid()   , -2, false);
        def(_lstore_3            , "lstore_3"            , "b"    , null    , BasicType.getTVoid()   , -2, false);
        def(_fstore_0            , "fstore_0"            , "b"    , null    , BasicType.getTVoid()   , -1, false);
        def(_fstore_1            , "fstore_1"            , "b"    , null    , BasicType.getTVoid()   , -1, false);
        def(_fstore_2            , "fstore_2"            , "b"    , null    , BasicType.getTVoid()   , -1, false);
        def(_fstore_3            , "fstore_3"            , "b"    , null    , BasicType.getTVoid()   , -1, false);
        def(_dstore_0            , "dstore_0"            , "b"    , null    , BasicType.getTVoid()   , -2, false);
        def(_dstore_1            , "dstore_1"            , "b"    , null    , BasicType.getTVoid()   , -2, false);
        def(_dstore_2            , "dstore_2"            , "b"    , null    , BasicType.getTVoid()   , -2, false);
        def(_dstore_3            , "dstore_3"            , "b"    , null    , BasicType.getTVoid()   , -2, false);
        def(_astore_0            , "astore_0"            , "b"    , null    , BasicType.getTVoid()   , -1, false);
        def(_astore_1            , "astore_1"            , "b"    , null    , BasicType.getTVoid()   , -1, false);
        def(_astore_2            , "astore_2"            , "b"    , null    , BasicType.getTVoid()   , -1, false);
        def(_astore_3            , "astore_3"            , "b"    , null    , BasicType.getTVoid()   , -1, false);
        def(_iastore             , "iastore"             , "b"    , null    , BasicType.getTVoid()   , -3, true );
        def(_lastore             , "lastore"             , "b"    , null    , BasicType.getTVoid()   , -4, true );
        def(_fastore             , "fastore"             , "b"    , null    , BasicType.getTVoid()   , -3, true );
        def(_dastore             , "dastore"             , "b"    , null    , BasicType.getTVoid()   , -4, true );
        def(_aastore             , "aastore"             , "b"    , null    , BasicType.getTVoid()   , -3, true );
        def(_bastore             , "bastore"             , "b"    , null    , BasicType.getTVoid()   , -3, true );
        def(_castore             , "castore"             , "b"    , null    , BasicType.getTVoid()   , -3, true );
        def(_sastore             , "sastore"             , "b"    , null    , BasicType.getTVoid()   , -3, true );
        def(_pop                 , "pop"                 , "b"    , null    , BasicType.getTVoid()   , -1, false);
        def(_pop2                , "pop2"                , "b"    , null    , BasicType.getTVoid()   , -2, false);
        def(_dup                 , "dup"                 , "b"    , null    , BasicType.getTVoid()   ,  1, false);
        def(_dup_x1              , "dup_x1"              , "b"    , null    , BasicType.getTVoid()   ,  1, false);
        def(_dup_x2              , "dup_x2"              , "b"    , null    , BasicType.getTVoid()   ,  1, false);
        def(_dup2                , "dup2"                , "b"    , null    , BasicType.getTVoid()   ,  2, false);
        def(_dup2_x1             , "dup2_x1"             , "b"    , null    , BasicType.getTVoid()   ,  2, false);
        def(_dup2_x2             , "dup2_x2"             , "b"    , null    , BasicType.getTVoid()   ,  2, false);
        def(_swap                , "swap"                , "b"    , null    , BasicType.getTVoid()   ,  0, false);
        def(_iadd                , "iadd"                , "b"    , null    , BasicType.getTInt()    , -1, false);
        def(_ladd                , "ladd"                , "b"    , null    , BasicType.getTLong()   , -2, false);
        def(_fadd                , "fadd"                , "b"    , null    , BasicType.getTFloat()  , -1, false);
        def(_dadd                , "dadd"                , "b"    , null    , BasicType.getTDouble() , -2, false);
        def(_isub                , "isub"                , "b"    , null    , BasicType.getTInt()    , -1, false);
        def(_lsub                , "lsub"                , "b"    , null    , BasicType.getTLong()   , -2, false);
        def(_fsub                , "fsub"                , "b"    , null    , BasicType.getTFloat()  , -1, false);
        def(_dsub                , "dsub"                , "b"    , null    , BasicType.getTDouble() , -2, false);
        def(_imul                , "imul"                , "b"    , null    , BasicType.getTInt()    , -1, false);
        def(_lmul                , "lmul"                , "b"    , null    , BasicType.getTLong()   , -2, false);
        def(_fmul                , "fmul"                , "b"    , null    , BasicType.getTFloat()  , -1, false);
        def(_dmul                , "dmul"                , "b"    , null    , BasicType.getTDouble() , -2, false);
        def(_idiv                , "idiv"                , "b"    , null    , BasicType.getTInt()    , -1, true );
        def(_ldiv                , "ldiv"                , "b"    , null    , BasicType.getTLong()   , -2, true );
        def(_fdiv                , "fdiv"                , "b"    , null    , BasicType.getTFloat()  , -1, false);
        def(_ddiv                , "ddiv"                , "b"    , null    , BasicType.getTDouble() , -2, false);
        def(_irem                , "irem"                , "b"    , null    , BasicType.getTInt()    , -1, true );
        def(_lrem                , "lrem"                , "b"    , null    , BasicType.getTLong()   , -2, true );
        def(_frem                , "frem"                , "b"    , null    , BasicType.getTFloat()  , -1, false);
        def(_drem                , "drem"                , "b"    , null    , BasicType.getTDouble() , -2, false);
        def(_ineg                , "ineg"                , "b"    , null    , BasicType.getTInt()    ,  0, false);
        def(_lneg                , "lneg"                , "b"    , null    , BasicType.getTLong()   ,  0, false);
        def(_fneg                , "fneg"                , "b"    , null    , BasicType.getTFloat()  ,  0, false);
        def(_dneg                , "dneg"                , "b"    , null    , BasicType.getTDouble() ,  0, false);
        def(_ishl                , "ishl"                , "b"    , null    , BasicType.getTInt()    , -1, false);
        def(_lshl                , "lshl"                , "b"    , null    , BasicType.getTLong()   , -1, false);
        def(_ishr                , "ishr"                , "b"    , null    , BasicType.getTInt()    , -1, false);
        def(_lshr                , "lshr"                , "b"    , null    , BasicType.getTLong()   , -1, false);
        def(_iushr               , "iushr"               , "b"    , null    , BasicType.getTInt()    , -1, false);
        def(_lushr               , "lushr"               , "b"    , null    , BasicType.getTLong()   , -1, false);
        def(_iand                , "iand"                , "b"    , null    , BasicType.getTInt()    , -1, false);
        def(_land                , "land"                , "b"    , null    , BasicType.getTLong()   , -2, false);
        def(_ior                 , "ior"                 , "b"    , null    , BasicType.getTInt()    , -1, false);
        def(_lor                 , "lor"                 , "b"    , null    , BasicType.getTLong()   , -2, false);
        def(_ixor                , "ixor"                , "b"    , null    , BasicType.getTInt()    , -1, false);
        def(_lxor                , "lxor"                , "b"    , null    , BasicType.getTLong()   , -2, false);
        def(_iinc                , "iinc"                , "bic"  , "wbiicc", BasicType.getTVoid()   ,  0, false);
        def(_i2l                 , "i2l"                 , "b"    , null    , BasicType.getTLong()   ,  1, false);
        def(_i2f                 , "i2f"                 , "b"    , null    , BasicType.getTFloat()  ,  0, false);
        def(_i2d                 , "i2d"                 , "b"    , null    , BasicType.getTDouble() ,  1, false);
        def(_l2i                 , "l2i"                 , "b"    , null    , BasicType.getTInt()    , -1, false);
        def(_l2f                 , "l2f"                 , "b"    , null    , BasicType.getTFloat()  , -1, false);
        def(_l2d                 , "l2d"                 , "b"    , null    , BasicType.getTDouble() ,  0, false);
        def(_f2i                 , "f2i"                 , "b"    , null    , BasicType.getTInt()    ,  0, false);
        def(_f2l                 , "f2l"                 , "b"    , null    , BasicType.getTLong()   ,  1, false);
        def(_f2d                 , "f2d"                 , "b"    , null    , BasicType.getTDouble() ,  1, false);
        def(_d2i                 , "d2i"                 , "b"    , null    , BasicType.getTInt()    , -1, false);
        def(_d2l                 , "d2l"                 , "b"    , null    , BasicType.getTLong()   ,  0, false);
        def(_d2f                 , "d2f"                 , "b"    , null    , BasicType.getTFloat()  , -1, false);
        def(_i2b                 , "i2b"                 , "b"    , null    , BasicType.getTByte()   ,  0, false);
        def(_i2c                 , "i2c"                 , "b"    , null    , BasicType.getTChar()   ,  0, false);
        def(_i2s                 , "i2s"                 , "b"    , null    , BasicType.getTShort()  ,  0, false);
        def(_lcmp                , "lcmp"                , "b"    , null    , BasicType.getTVoid()   , -3, false);
        def(_fcmpl               , "fcmpl"               , "b"    , null    , BasicType.getTVoid()   , -1, false);
        def(_fcmpg               , "fcmpg"               , "b"    , null    , BasicType.getTVoid()   , -1, false);
        def(_dcmpl               , "dcmpl"               , "b"    , null    , BasicType.getTVoid()   , -3, false);
        def(_dcmpg               , "dcmpg"               , "b"    , null    , BasicType.getTVoid()   , -3, false);
        def(_ifeq                , "ifeq"                , "boo"  , null    , BasicType.getTVoid()   , -1, false);
        def(_ifne                , "ifne"                , "boo"  , null    , BasicType.getTVoid()   , -1, false);
        def(_iflt                , "iflt"                , "boo"  , null    , BasicType.getTVoid()   , -1, false);
        def(_ifge                , "ifge"                , "boo"  , null    , BasicType.getTVoid()   , -1, false);
        def(_ifgt                , "ifgt"                , "boo"  , null    , BasicType.getTVoid()   , -1, false);
        def(_ifle                , "ifle"                , "boo"  , null    , BasicType.getTVoid()   , -1, false);
        def(_if_icmpeq           , "if_icmpeq"           , "boo"  , null    , BasicType.getTVoid()   , -2, false);
        def(_if_icmpne           , "if_icmpne"           , "boo"  , null    , BasicType.getTVoid()   , -2, false);
        def(_if_icmplt           , "if_icmplt"           , "boo"  , null    , BasicType.getTVoid()   , -2, false);
        def(_if_icmpge           , "if_icmpge"           , "boo"  , null    , BasicType.getTVoid()   , -2, false);
        def(_if_icmpgt           , "if_icmpgt"           , "boo"  , null    , BasicType.getTVoid()   , -2, false);
        def(_if_icmple           , "if_icmple"           , "boo"  , null    , BasicType.getTVoid()   , -2, false);
        def(_if_acmpeq           , "if_acmpeq"           , "boo"  , null    , BasicType.getTVoid()   , -2, false);
        def(_if_acmpne           , "if_acmpne"           , "boo"  , null    , BasicType.getTVoid()   , -2, false);
        def(_goto                , "goto"                , "boo"  , null    , BasicType.getTVoid()   ,  0, false);
        def(_jsr                 , "jsr"                 , "boo"  , null    , BasicType.getTInt()    ,  0, false);
        def(_ret                 , "ret"                 , "bi"   , "wbii"  , BasicType.getTVoid()   ,  0, false);
        def(_tableswitch         , "tableswitch"         , ""     , null    , BasicType.getTVoid()   , -1, false); // may have backward branches
        def(_lookupswitch        , "lookupswitch"        , ""     , null    , BasicType.getTVoid()   , -1, false); // rewriting in interpreter
        def(_ireturn             , "ireturn"             , "b"    , null    , BasicType.getTInt()    , -1, true );
        def(_lreturn             , "lreturn"             , "b"    , null    , BasicType.getTLong()   , -2, true );
        def(_freturn             , "freturn"             , "b"    , null    , BasicType.getTFloat()  , -1, true );
        def(_dreturn             , "dreturn"             , "b"    , null    , BasicType.getTDouble() , -2, true );
        def(_areturn             , "areturn"             , "b"    , null    , BasicType.getTObject() , -1, true );
        def(_return              , "return"              , "b"    , null    , BasicType.getTVoid()   ,  0, true );
        def(_getstatic           , "getstatic"           , "bJJ"  , null    , BasicType.getTIllegal(),  1, true );
        def(_putstatic           , "putstatic"           , "bJJ"  , null    , BasicType.getTIllegal(), -1, true );
        def(_getfield            , "getfield"            , "bJJ"  , null    , BasicType.getTIllegal(),  0, true );
        def(_putfield            , "putfield"            , "bJJ"  , null    , BasicType.getTIllegal(), -2, true );
        def(_invokevirtual       , "invokevirtual"       , "bJJ"  , null    , BasicType.getTIllegal(), -1, true );
        def(_invokespecial       , "invokespecial"       , "bJJ"  , null    , BasicType.getTIllegal(), -1, true );
        def(_invokestatic        , "invokestatic"        , "bJJ"  , null    , BasicType.getTIllegal(),  0, true );
        def(_invokeinterface     , "invokeinterface"     , "bJJ__", null    , BasicType.getTIllegal(), -1, true );
        def(_invokedynamic       , "invokedynamic"       , "bJJJJ", null    , BasicType.getTIllegal(),  0, true );
        def(_new                 , "new"                 , "bkk"  , null    , BasicType.getTObject() ,  1, true );
        def(_newarray            , "newarray"            , "bc"   , null    , BasicType.getTObject() ,  0, true );
        def(_anewarray           , "anewarray"           , "bkk"  , null    , BasicType.getTObject() ,  0, true );
        def(_arraylength         , "arraylength"         , "b"    , null    , BasicType.getTVoid()   ,  0, true );
        def(_athrow              , "athrow"              , "b"    , null    , BasicType.getTVoid()   , -1, true );
        def(_checkcast           , "checkcast"           , "bkk"  , null    , BasicType.getTObject() ,  0, true );
        def(_instanceof          , "instanceof"          , "bkk"  , null    , BasicType.getTInt()    ,  0, true );
        def(_monitorenter        , "monitorenter"        , "b"    , null    , BasicType.getTVoid()   , -1, true );
        def(_monitorexit         , "monitorexit"         , "b"    , null    , BasicType.getTVoid()   , -1, true );
        def(_wide                , "wide"                , ""     , null    , BasicType.getTVoid()   ,  0, false);
        def(_multianewarray      , "multianewarray"      , "bkkc" , null    , BasicType.getTObject() ,  1, true );
        def(_ifnull              , "ifnull"              , "boo"  , null    , BasicType.getTVoid()   , -1, false);
        def(_ifnonnull           , "ifnonnull"           , "boo"  , null    , BasicType.getTVoid()   , -1, false);
        def(_goto_w              , "goto_w"              , "boooo", null    , BasicType.getTVoid()   ,  0, false);
        def(_jsr_w               , "jsr_w"               , "boooo", null    , BasicType.getTInt()    ,  0, false);
        def(_breakpoint          , "breakpoint"          , ""     , null    , BasicType.getTVoid()   ,  0, true );
    
        //  JVM bytecodes
        //  bytecode               bytecode name           format   wide f.   result tp               stk traps  std code
    
        def(_fast_agetfield      , "fast_agetfield"      , "bJJ"  , null    , BasicType.getTObject() ,  0, true , _getfield       );
        def(_fast_bgetfield      , "fast_bgetfield"      , "bJJ"  , null    , BasicType.getTInt()    ,  0, true , _getfield       );
        def(_fast_cgetfield      , "fast_cgetfield"      , "bJJ"  , null    , BasicType.getTChar()   ,  0, true , _getfield       );
        def(_fast_dgetfield      , "fast_dgetfield"      , "bJJ"  , null    , BasicType.getTDouble() ,  0, true , _getfield       );
        def(_fast_fgetfield      , "fast_fgetfield"      , "bJJ"  , null    , BasicType.getTFloat()  ,  0, true , _getfield       );
        def(_fast_igetfield      , "fast_igetfield"      , "bJJ"  , null    , BasicType.getTInt()    ,  0, true , _getfield       );
        def(_fast_lgetfield      , "fast_lgetfield"      , "bJJ"  , null    , BasicType.getTLong()   ,  0, true , _getfield       );
        def(_fast_sgetfield      , "fast_sgetfield"      , "bJJ"  , null    , BasicType.getTShort()  ,  0, true , _getfield       );
    
        def(_fast_aputfield      , "fast_aputfield"      , "bJJ"  , null    , BasicType.getTObject() ,  0, true , _putfield       );
        def(_fast_bputfield      , "fast_bputfield"      , "bJJ"  , null    , BasicType.getTInt()    ,  0, true , _putfield       );
        def(_fast_zputfield      , "fast_zputfield"      , "bJJ"  , null    , BasicType.getTInt()    ,  0, true , _putfield       );
        def(_fast_cputfield      , "fast_cputfield"      , "bJJ"  , null    , BasicType.getTChar()   ,  0, true , _putfield       );
        def(_fast_dputfield      , "fast_dputfield"      , "bJJ"  , null    , BasicType.getTDouble() ,  0, true , _putfield       );
        def(_fast_fputfield      , "fast_fputfield"      , "bJJ"  , null    , BasicType.getTFloat()  ,  0, true , _putfield       );
        def(_fast_iputfield      , "fast_iputfield"      , "bJJ"  , null    , BasicType.getTInt()    ,  0, true , _putfield       );
        def(_fast_lputfield      , "fast_lputfield"      , "bJJ"  , null    , BasicType.getTLong()   ,  0, true , _putfield       );
        def(_fast_sputfield      , "fast_sputfield"      , "bJJ"  , null    , BasicType.getTShort()  ,  0, true , _putfield       );
    
        def(_fast_aload_0        , "fast_aload_0"        , "b"    , null    , BasicType.getTObject() ,  1, true , _aload_0        );
        def(_fast_iaccess_0      , "fast_iaccess_0"      , "b_JJ" , null    , BasicType.getTInt()    ,  1, true , _aload_0        );
        def(_fast_aaccess_0      , "fast_aaccess_0"      , "b_JJ" , null    , BasicType.getTObject() ,  1, true , _aload_0        );
        def(_fast_faccess_0      , "fast_faccess_0"      , "b_JJ" , null    , BasicType.getTObject() ,  1, true , _aload_0        );
    
        def(_fast_iload          , "fast_iload"          , "bi"   , null    , BasicType.getTInt()    ,  1, false, _iload          );
        def(_fast_iload2         , "fast_iload2"         , "bi_i" , null    , BasicType.getTInt()    ,  2, false, _iload          );
        def(_fast_icaload        , "fast_icaload"        , "bi_"  , null    , BasicType.getTInt()    ,  0, false, _iload          );
    
        // Faster method invocation.
        def(_fast_invokevfinal   , "fast_invokevfinal"   , "bJJ"  , null    , BasicType.getTIllegal(), -1, true, _invokevirtual   );
    
        def(_fast_linearswitch   , "fast_linearswitch"   , ""     , null    , BasicType.getTVoid()   , -1, false, _lookupswitch   );
        def(_fast_binaryswitch   , "fast_binaryswitch"   , ""     , null    , BasicType.getTVoid()   , -1, false, _lookupswitch   );
        def(_fast_aldc           , "fast_aldc"           , "bj"   , null    , BasicType.getTObject(),   1, true,  _ldc            );
        def(_fast_aldc_w         , "fast_aldc_w"         , "bJJ"  , null    , BasicType.getTObject(),   1, true,  _ldc_w          );
    
        def(_return_register_finalizer, "return_register_finalizer", "b"    , null    , BasicType.getTVoid()   , 0, true, _return );
    
        // special handling of signature-polymorphic methods
        def(_invokehandle        , "invokehandle"        , "bJJ"  , null    , BasicType.getTIllegal(), -1, true, _invokevirtual   );
    
        def(_shouldnotreachhere  , "_shouldnotreachhere" , "b"    , null    , BasicType.getTVoid()   ,  0, false);
    

    相关文章

      网友评论

          本文标题:Java bytecodes

          本文链接:https://www.haomeiwen.com/subject/sgaosktx.html