hotspot/agent/src/share/classes/sun/jvm/hotspot/interpreter/Bytecodes.java
changeset 5882 6b2aecc4f7d8
parent 5547 f4b087cbb361
child 7662 5f31baaff55b
equal deleted inserted replaced
5708:e92b3d8118f1 5882:6b2aecc4f7d8
   220   public static final int _putfield             = 181; // 0xb5
   220   public static final int _putfield             = 181; // 0xb5
   221   public static final int _invokevirtual        = 182; // 0xb6
   221   public static final int _invokevirtual        = 182; // 0xb6
   222   public static final int _invokespecial        = 183; // 0xb7
   222   public static final int _invokespecial        = 183; // 0xb7
   223   public static final int _invokestatic         = 184; // 0xb8
   223   public static final int _invokestatic         = 184; // 0xb8
   224   public static final int _invokeinterface      = 185; // 0xb9
   224   public static final int _invokeinterface      = 185; // 0xb9
   225   public static final int _xxxunusedxxx         = 186; // 0xba
   225   public static final int _invokedynamic        = 186; // 0xba
   226   public static final int _new                  = 187; // 0xbb
   226   public static final int _new                  = 187; // 0xbb
   227   public static final int _newarray             = 188; // 0xbc
   227   public static final int _newarray             = 188; // 0xbc
   228   public static final int _anewarray            = 189; // 0xbd
   228   public static final int _anewarray            = 189; // 0xbd
   229   public static final int _arraylength          = 190; // 0xbe
   229   public static final int _arraylength          = 190; // 0xbe
   230   public static final int _athrow               = 191; // 0xbf
   230   public static final int _athrow               = 191; // 0xbf
   267   public static final int _fast_iload2          = 224;
   267   public static final int _fast_iload2          = 224;
   268   public static final int _fast_icaload         = 225;
   268   public static final int _fast_icaload         = 225;
   269   public static final int _fast_invokevfinal    = 226;
   269   public static final int _fast_invokevfinal    = 226;
   270   public static final int _fast_linearswitch    = 227;
   270   public static final int _fast_linearswitch    = 227;
   271   public static final int _fast_binaryswitch    = 228;
   271   public static final int _fast_binaryswitch    = 228;
   272   public static final int _shouldnotreachhere   = 229; // For debugging
   272   public static final int _fast_aldc            = 229;
   273 
   273   public static final int _fast_aldc_w          = 230;
   274   public static final int number_of_codes       = 230;
   274   public static final int _return_register_finalizer = 231;
       
   275   public static final int _shouldnotreachhere   = 232; // For debugging
       
   276 
       
   277   public static final int number_of_codes       = 233;
   275 
   278 
   276   public static int specialLengthAt(Method method, int bci) {
   279   public static int specialLengthAt(Method method, int bci) {
   277     int code = codeAt(method, bci);
   280     int code = codeAt(method, bci);
   278     switch (code) {
   281     switch (code) {
   279     case _wide:
   282     case _wide:
   456     def(_fconst_2            , "fconst_2"            , "b"    , null    , BasicType.getTFloat()  ,  1, false);
   459     def(_fconst_2            , "fconst_2"            , "b"    , null    , BasicType.getTFloat()  ,  1, false);
   457     def(_dconst_0            , "dconst_0"            , "b"    , null    , BasicType.getTDouble() ,  2, false);
   460     def(_dconst_0            , "dconst_0"            , "b"    , null    , BasicType.getTDouble() ,  2, false);
   458     def(_dconst_1            , "dconst_1"            , "b"    , null    , BasicType.getTDouble() ,  2, false);
   461     def(_dconst_1            , "dconst_1"            , "b"    , null    , BasicType.getTDouble() ,  2, false);
   459     def(_bipush              , "bipush"              , "bc"   , null    , BasicType.getTInt()    ,  1, false);
   462     def(_bipush              , "bipush"              , "bc"   , null    , BasicType.getTInt()    ,  1, false);
   460     def(_sipush              , "sipush"              , "bcc"  , null    , BasicType.getTInt()    ,  1, false);
   463     def(_sipush              , "sipush"              , "bcc"  , null    , BasicType.getTInt()    ,  1, false);
   461     def(_ldc                 , "ldc"                 , "bi"   , null    , BasicType.getTIllegal(),  1, true );
   464     def(_ldc                 , "ldc"                 , "bk"   , null    , BasicType.getTIllegal(),  1, true );
   462     def(_ldc_w               , "ldc_w"               , "bii"  , null    , BasicType.getTIllegal(),  1, true );
   465     def(_ldc_w               , "ldc_w"               , "bkk"  , null    , BasicType.getTIllegal(),  1, true );
   463     def(_ldc2_w              , "ldc2_w"              , "bii"  , null    , BasicType.getTIllegal(),  2, true );
   466     def(_ldc2_w              , "ldc2_w"              , "bkk"  , null    , BasicType.getTIllegal(),  2, true );
   464     def(_iload               , "iload"               , "bi"   , "wbii"  , BasicType.getTInt()    ,  1, false);
   467     def(_iload               , "iload"               , "bi"   , "wbii"  , BasicType.getTInt()    ,  1, false);
   465     def(_lload               , "lload"               , "bi"   , "wbii"  , BasicType.getTLong()   ,  2, false);
   468     def(_lload               , "lload"               , "bi"   , "wbii"  , BasicType.getTLong()   ,  2, false);
   466     def(_fload               , "fload"               , "bi"   , "wbii"  , BasicType.getTFloat()  ,  1, false);
   469     def(_fload               , "fload"               , "bi"   , "wbii"  , BasicType.getTFloat()  ,  1, false);
   467     def(_dload               , "dload"               , "bi"   , "wbii"  , BasicType.getTDouble() ,  2, false);
   470     def(_dload               , "dload"               , "bi"   , "wbii"  , BasicType.getTDouble() ,  2, false);
   468     def(_aload               , "aload"               , "bi"   , "wbii"  , BasicType.getTObject() ,  1, false);
   471     def(_aload               , "aload"               , "bi"   , "wbii"  , BasicType.getTObject() ,  1, false);
   616     def(_lreturn             , "lreturn"             , "b"    , null    , BasicType.getTLong()   , -2, true );
   619     def(_lreturn             , "lreturn"             , "b"    , null    , BasicType.getTLong()   , -2, true );
   617     def(_freturn             , "freturn"             , "b"    , null    , BasicType.getTFloat()  , -1, true );
   620     def(_freturn             , "freturn"             , "b"    , null    , BasicType.getTFloat()  , -1, true );
   618     def(_dreturn             , "dreturn"             , "b"    , null    , BasicType.getTDouble() , -2, true );
   621     def(_dreturn             , "dreturn"             , "b"    , null    , BasicType.getTDouble() , -2, true );
   619     def(_areturn             , "areturn"             , "b"    , null    , BasicType.getTObject() , -1, true );
   622     def(_areturn             , "areturn"             , "b"    , null    , BasicType.getTObject() , -1, true );
   620     def(_return              , "return"              , "b"    , null    , BasicType.getTVoid()   ,  0, true );
   623     def(_return              , "return"              , "b"    , null    , BasicType.getTVoid()   ,  0, true );
   621     def(_getstatic           , "getstatic"           , "bjj"  , null    , BasicType.getTIllegal(),  1, true );
   624     def(_getstatic           , "getstatic"           , "bJJ"  , null    , BasicType.getTIllegal(),  1, true );
   622     def(_putstatic           , "putstatic"           , "bjj"  , null    , BasicType.getTIllegal(), -1, true );
   625     def(_putstatic           , "putstatic"           , "bJJ"  , null    , BasicType.getTIllegal(), -1, true );
   623     def(_getfield            , "getfield"            , "bjj"  , null    , BasicType.getTIllegal(),  0, true );
   626     def(_getfield            , "getfield"            , "bJJ"  , null    , BasicType.getTIllegal(),  0, true );
   624     def(_putfield            , "putfield"            , "bjj"  , null    , BasicType.getTIllegal(), -2, true );
   627     def(_putfield            , "putfield"            , "bJJ"  , null    , BasicType.getTIllegal(), -2, true );
   625     def(_invokevirtual       , "invokevirtual"       , "bjj"  , null    , BasicType.getTIllegal(), -1, true );
   628     def(_invokevirtual       , "invokevirtual"       , "bJJ"  , null    , BasicType.getTIllegal(), -1, true );
   626     def(_invokespecial       , "invokespecial"       , "bjj"  , null    , BasicType.getTIllegal(), -1, true );
   629     def(_invokespecial       , "invokespecial"       , "bJJ"  , null    , BasicType.getTIllegal(), -1, true );
   627     def(_invokestatic        , "invokestatic"        , "bjj"  , null    , BasicType.getTIllegal(),  0, true );
   630     def(_invokestatic        , "invokestatic"        , "bJJ"  , null    , BasicType.getTIllegal(),  0, true );
   628     def(_invokeinterface     , "invokeinterface"     , "bjj__", null    , BasicType.getTIllegal(), -1, true );
   631     def(_invokeinterface     , "invokeinterface"     , "bJJ__", null    , BasicType.getTIllegal(), -1, true );
   629     def(_xxxunusedxxx        , "xxxunusedxxx"        , null   , null    , BasicType.getTVoid()   ,  0, false);
   632     def(_invokedynamic       , "invokedynamic"       , "bJJJJ", null    , BasicType.getTIllegal(), -1, true );
   630     def(_new                 , "new"                 , "bii"  , null    , BasicType.getTObject() ,  1, true );
   633     def(_new                 , "new"                 , "bkk"  , null    , BasicType.getTObject() ,  1, true );
   631     def(_newarray            , "newarray"            , "bc"   , null    , BasicType.getTObject() ,  0, true );
   634     def(_newarray            , "newarray"            , "bc"   , null    , BasicType.getTObject() ,  0, true );
   632     def(_anewarray           , "anewarray"           , "bii"  , null    , BasicType.getTObject() ,  0, true );
   635     def(_anewarray           , "anewarray"           , "bkk"  , null    , BasicType.getTObject() ,  0, true );
   633     def(_arraylength         , "arraylength"         , "b"    , null    , BasicType.getTVoid()   ,  0, true );
   636     def(_arraylength         , "arraylength"         , "b"    , null    , BasicType.getTVoid()   ,  0, true );
   634     def(_athrow              , "athrow"              , "b"    , null    , BasicType.getTVoid()   , -1, true );
   637     def(_athrow              , "athrow"              , "b"    , null    , BasicType.getTVoid()   , -1, true );
   635     def(_checkcast           , "checkcast"           , "bii"  , null    , BasicType.getTObject() ,  0, true );
   638     def(_checkcast           , "checkcast"           , "bkk"  , null    , BasicType.getTObject() ,  0, true );
   636     def(_instanceof          , "instanceof"          , "bii"  , null    , BasicType.getTInt()    ,  0, true );
   639     def(_instanceof          , "instanceof"          , "bkk"  , null    , BasicType.getTInt()    ,  0, true );
   637     def(_monitorenter        , "monitorenter"        , "b"    , null    , BasicType.getTVoid()   , -1, true );
   640     def(_monitorenter        , "monitorenter"        , "b"    , null    , BasicType.getTVoid()   , -1, true );
   638     def(_monitorexit         , "monitorexit"         , "b"    , null    , BasicType.getTVoid()   , -1, true );
   641     def(_monitorexit         , "monitorexit"         , "b"    , null    , BasicType.getTVoid()   , -1, true );
   639     def(_wide                , "wide"                , ""     , null    , BasicType.getTVoid()   ,  0, false);
   642     def(_wide                , "wide"                , ""     , null    , BasicType.getTVoid()   ,  0, false);
   640     def(_multianewarray      , "multianewarray"      , "biic" , null    , BasicType.getTObject() ,  1, true );
   643     def(_multianewarray      , "multianewarray"      , "bkkc" , null    , BasicType.getTObject() ,  1, true );
   641     def(_ifnull              , "ifnull"              , "boo"  , null    , BasicType.getTVoid()   , -1, false);
   644     def(_ifnull              , "ifnull"              , "boo"  , null    , BasicType.getTVoid()   , -1, false);
   642     def(_ifnonnull           , "ifnonnull"           , "boo"  , null    , BasicType.getTVoid()   , -1, false);
   645     def(_ifnonnull           , "ifnonnull"           , "boo"  , null    , BasicType.getTVoid()   , -1, false);
   643     def(_goto_w              , "goto_w"              , "boooo", null    , BasicType.getTVoid()   ,  0, false);
   646     def(_goto_w              , "goto_w"              , "boooo", null    , BasicType.getTVoid()   ,  0, false);
   644     def(_jsr_w               , "jsr_w"               , "boooo", null    , BasicType.getTInt()    ,  0, false);
   647     def(_jsr_w               , "jsr_w"               , "boooo", null    , BasicType.getTInt()    ,  0, false);
   645     def(_breakpoint          , "breakpoint"          , ""     , null    , BasicType.getTVoid()   ,  0, true );
   648     def(_breakpoint          , "breakpoint"          , ""     , null    , BasicType.getTVoid()   ,  0, true );
   646 
   649 
   647     //  JVM bytecodes
   650     //  JVM bytecodes
   648     //  bytecode               bytecode name           format   wide f.   result tp               stk traps  std code
   651     //  bytecode               bytecode name           format   wide f.   result tp               stk traps  std code
   649     def(_fast_agetfield      , "fast_agetfield"      , "bjj"  , null    , BasicType.getTObject() ,  0, true , _getfield       );
   652     def(_fast_agetfield      , "fast_agetfield"      , "bJJ"  , null    , BasicType.getTObject() ,  0, true , _getfield       );
   650     def(_fast_bgetfield      , "fast_bgetfield"      , "bjj"  , null    , BasicType.getTInt()    ,  0, true , _getfield       );
   653     def(_fast_bgetfield      , "fast_bgetfield"      , "bJJ"  , null    , BasicType.getTInt()    ,  0, true , _getfield       );
   651     def(_fast_cgetfield      , "fast_cgetfield"      , "bjj"  , null    , BasicType.getTChar()   ,  0, true , _getfield       );
   654     def(_fast_cgetfield      , "fast_cgetfield"      , "bJJ"  , null    , BasicType.getTChar()   ,  0, true , _getfield       );
   652     def(_fast_dgetfield      , "fast_dgetfield"      , "bjj"  , null    , BasicType.getTDouble() ,  0, true , _getfield       );
   655     def(_fast_dgetfield      , "fast_dgetfield"      , "bJJ"  , null    , BasicType.getTDouble() ,  0, true , _getfield       );
   653     def(_fast_fgetfield      , "fast_fgetfield"      , "bjj"  , null    , BasicType.getTFloat()  ,  0, true , _getfield       );
   656     def(_fast_fgetfield      , "fast_fgetfield"      , "bJJ"  , null    , BasicType.getTFloat()  ,  0, true , _getfield       );
   654     def(_fast_igetfield      , "fast_igetfield"      , "bjj"  , null    , BasicType.getTInt()    ,  0, true , _getfield       );
   657     def(_fast_igetfield      , "fast_igetfield"      , "bJJ"  , null    , BasicType.getTInt()    ,  0, true , _getfield       );
   655     def(_fast_lgetfield      , "fast_lgetfield"      , "bjj"  , null    , BasicType.getTLong()   ,  0, true , _getfield       );
   658     def(_fast_lgetfield      , "fast_lgetfield"      , "bJJ"  , null    , BasicType.getTLong()   ,  0, true , _getfield       );
   656     def(_fast_sgetfield      , "fast_sgetfield"      , "bjj"  , null    , BasicType.getTShort()  ,  0, true , _getfield       );
   659     def(_fast_sgetfield      , "fast_sgetfield"      , "bJJ"  , null    , BasicType.getTShort()  ,  0, true , _getfield       );
   657 
   660 
   658     def(_fast_aputfield      , "fast_aputfield"      , "bjj"  , null    , BasicType.getTObject() ,  0, true , _putfield       );
   661     def(_fast_aputfield      , "fast_aputfield"      , "bJJ"  , null    , BasicType.getTObject() ,  0, true , _putfield       );
   659     def(_fast_bputfield      , "fast_bputfield"      , "bjj"  , null    , BasicType.getTInt()    ,  0, true , _putfield       );
   662     def(_fast_bputfield      , "fast_bputfield"      , "bJJ"  , null    , BasicType.getTInt()    ,  0, true , _putfield       );
   660     def(_fast_cputfield      , "fast_cputfield"      , "bjj"  , null    , BasicType.getTChar()   ,  0, true , _putfield       );
   663     def(_fast_cputfield      , "fast_cputfield"      , "bJJ"  , null    , BasicType.getTChar()   ,  0, true , _putfield       );
   661     def(_fast_dputfield      , "fast_dputfield"      , "bjj"  , null    , BasicType.getTDouble() ,  0, true , _putfield       );
   664     def(_fast_dputfield      , "fast_dputfield"      , "bJJ"  , null    , BasicType.getTDouble() ,  0, true , _putfield       );
   662     def(_fast_fputfield      , "fast_fputfield"      , "bjj"  , null    , BasicType.getTFloat()  ,  0, true , _putfield       );
   665     def(_fast_fputfield      , "fast_fputfield"      , "bJJ"  , null    , BasicType.getTFloat()  ,  0, true , _putfield       );
   663     def(_fast_iputfield      , "fast_iputfield"      , "bjj"  , null    , BasicType.getTInt()    ,  0, true , _putfield       );
   666     def(_fast_iputfield      , "fast_iputfield"      , "bJJ"  , null    , BasicType.getTInt()    ,  0, true , _putfield       );
   664     def(_fast_lputfield      , "fast_lputfield"      , "bjj"  , null    , BasicType.getTLong()   ,  0, true , _putfield       );
   667     def(_fast_lputfield      , "fast_lputfield"      , "bJJ"  , null    , BasicType.getTLong()   ,  0, true , _putfield       );
   665     def(_fast_sputfield      , "fast_sputfield"      , "bjj"  , null    , BasicType.getTShort()  ,  0, true , _putfield       );
   668     def(_fast_sputfield      , "fast_sputfield"      , "bJJ"  , null    , BasicType.getTShort()  ,  0, true , _putfield       );
   666 
   669 
   667     def(_fast_aload_0        , "fast_aload_0"        , "b"    , null    , BasicType.getTObject() ,  1, true , _aload_0        );
   670     def(_fast_aload_0        , "fast_aload_0"        , "b"    , null    , BasicType.getTObject() ,  1, true , _aload_0        );
   668     def(_fast_iaccess_0      , "fast_iaccess_0"      , "b_jj" , null    , BasicType.getTInt()    ,  1, true , _aload_0        );
   671     def(_fast_iaccess_0      , "fast_iaccess_0"      , "b_JJ" , null    , BasicType.getTInt()    ,  1, true , _aload_0        );
   669     def(_fast_aaccess_0      , "fast_aaccess_0"      , "b_jj" , null    , BasicType.getTObject() ,  1, true , _aload_0        );
   672     def(_fast_aaccess_0      , "fast_aaccess_0"      , "b_JJ" , null    , BasicType.getTObject() ,  1, true , _aload_0        );
   670     def(_fast_faccess_0      , "fast_faccess_0"      , "b_jj" , null    , BasicType.getTObject() ,  1, true , _aload_0        );
   673     def(_fast_faccess_0      , "fast_faccess_0"      , "b_JJ" , null    , BasicType.getTObject() ,  1, true , _aload_0        );
   671 
   674 
   672     def(_fast_iload          , "fast_iload"          , "bi"   , null    , BasicType.getTInt()    ,  1, false, _iload);
   675     def(_fast_iload          , "fast_iload"          , "bi"   , null    , BasicType.getTInt()    ,  1, false, _iload);
   673     def(_fast_iload2         , "fast_iload2"         , "bi_i" , null    , BasicType.getTInt()    ,  2, false, _iload);
   676     def(_fast_iload2         , "fast_iload2"         , "bi_i" , null    , BasicType.getTInt()    ,  2, false, _iload);
   674     def(_fast_icaload        , "fast_icaload"        , "bi_"  , null    , BasicType.getTInt()    ,  0, false, _iload);
   677     def(_fast_icaload        , "fast_icaload"        , "bi_"  , null    , BasicType.getTInt()    ,  0, false, _iload);
   675 
   678 
   676     // Faster method invocation.
   679     // Faster method invocation.
   677     def(_fast_invokevfinal   , "fast_invokevfinal"   , "bjj"  , null    , BasicType.getTIllegal(), -1, true, _invokevirtual);
   680     def(_fast_invokevfinal   , "fast_invokevfinal"   , "bJJ"  , null    , BasicType.getTIllegal(), -1, true, _invokevirtual);
   678 
   681 
   679     def(_fast_linearswitch   , "fast_linearswitch"   , ""     , null    , BasicType.getTVoid()   , -1, false, _lookupswitch   );
   682     def(_fast_linearswitch   , "fast_linearswitch"   , ""     , null    , BasicType.getTVoid()   , -1, false, _lookupswitch   );
   680     def(_fast_binaryswitch   , "fast_binaryswitch"   , ""     , null    , BasicType.getTVoid()   , -1, false, _lookupswitch   );
   683     def(_fast_binaryswitch   , "fast_binaryswitch"   , ""     , null    , BasicType.getTVoid()   , -1, false, _lookupswitch   );
       
   684 
       
   685     def(_return_register_finalizer, "return_register_finalizer", "b"    , null    , BasicType.getTVoid()   , 0, true, _return );
       
   686 
       
   687     def(_fast_aldc           , "fast_aldc"           , "bj"   , null    , BasicType.getTObject(),   1, true,  _ldc   );
       
   688     def(_fast_aldc_w         , "fast_aldc_w"         , "bJJ"  , null    , BasicType.getTObject(),   1, true,  _ldc_w );
       
   689 
   681     def(_shouldnotreachhere  , "_shouldnotreachhere" , "b"    , null    , BasicType.getTVoid()   ,  0, false);
   690     def(_shouldnotreachhere  , "_shouldnotreachhere" , "b"    , null    , BasicType.getTVoid()   ,  0, false);
   682 
   691 
   683     if (Assert.ASSERTS_ENABLED) {
   692     if (Assert.ASSERTS_ENABLED) {
   684       // compare can_trap information for each bytecode with the
   693       // compare can_trap information for each bytecode with the
   685       // can_trap information for the corresponding base bytecode
   694       // can_trap information for the corresponding base bytecode