Java bytecodes

时间:2022-07-24
本文章向大家介绍Java bytecodes,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
  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);