< prev index next >

src/hotspot/share/interpreter/templateTable.cpp

Print this page




 143 }
 144 
 145 
 146 void TemplateTable::jsr_w() {
 147   transition(vtos, vtos);       // result is not an oop, so do not transition to atos
 148   branch(true, true);
 149 }
 150 
 151 
 152 void TemplateTable::jsr() {
 153   transition(vtos, vtos);       // result is not an oop, so do not transition to atos
 154   branch(true, false);
 155 }
 156 
 157 
 158 
 159 //----------------------------------------------------------------------------------------------------
 160 // Implementation of TemplateTable: Debugging
 161 
 162 void TemplateTable::transition(TosState tos_in, TosState tos_out) {
 163   assert(_desc->tos_in()  == tos_in , "inconsistent tos_in  information");

 164   assert(_desc->tos_out() == tos_out, "inconsistent tos_out information");
 165 }
 166 
 167 
 168 //----------------------------------------------------------------------------------------------------
 169 // Implementation of TemplateTable: Initialization
 170 
 171 bool                       TemplateTable::_is_initialized = false;
 172 Template                   TemplateTable::_template_table     [Bytecodes::number_of_codes];
 173 Template                   TemplateTable::_template_table_wide[Bytecodes::number_of_codes];
 174 
 175 Template*                  TemplateTable::_desc;
 176 InterpreterMacroAssembler* TemplateTable::_masm;
 177 BarrierSet*                TemplateTable::_bs;
 178 
 179 
 180 void TemplateTable::def(Bytecodes::Code code, int flags, TosState in, TosState out, void (*gen)(), char filler) {
 181   assert(filler == ' ', "just checkin'");
 182   def(code, flags, in, out, (Template::generator)gen, 0);
 183 }


 220 
 221 void TemplateTable::def(Bytecodes::Code code, int flags, TosState in, TosState out, void (*gen)(Condition cc), Condition cc) {
 222   def(code, flags, in, out, (Template::generator)gen, (int)cc);
 223 }
 224 
 225 void TemplateTable::initialize() {
 226   if (_is_initialized) return;
 227 
 228   // Initialize table
 229   TraceTime timer("TemplateTable initialization", TRACETIME_LOG(Info, startuptime));
 230 
 231   _bs = BarrierSet::barrier_set();
 232 
 233   // For better readability
 234   const char _    = ' ';
 235   const int  ____ = 0;
 236   const int  ubcp = 1 << Template::uses_bcp_bit;
 237   const int  disp = 1 << Template::does_dispatch_bit;
 238   const int  clvm = 1 << Template::calls_vm_bit;
 239   const int  iswd = 1 << Template::wide_bit;

 240   //                                    interpr. templates
 241   // Java spec bytecodes                ubcp|disp|clvm|iswd  in    out   generator             argument
 242   def(Bytecodes::_nop                 , ____|____|____|____, vtos, vtos, nop                 ,  _           );
 243   def(Bytecodes::_aconst_null         , ____|____|____|____, vtos, atos, aconst_null         ,  _           );
 244   def(Bytecodes::_iconst_m1           , ____|____|____|____, vtos, itos, iconst              , -1           );
 245   def(Bytecodes::_iconst_0            , ____|____|____|____, vtos, itos, iconst              ,  0           );
 246   def(Bytecodes::_iconst_1            , ____|____|____|____, vtos, itos, iconst              ,  1           );
 247   def(Bytecodes::_iconst_2            , ____|____|____|____, vtos, itos, iconst              ,  2           );
 248   def(Bytecodes::_iconst_3            , ____|____|____|____, vtos, itos, iconst              ,  3           );
 249   def(Bytecodes::_iconst_4            , ____|____|____|____, vtos, itos, iconst              ,  4           );
 250   def(Bytecodes::_iconst_5            , ____|____|____|____, vtos, itos, iconst              ,  5           );
 251   def(Bytecodes::_lconst_0            , ____|____|____|____, vtos, ltos, lconst              ,  0           );
 252   def(Bytecodes::_lconst_1            , ____|____|____|____, vtos, ltos, lconst              ,  1           );
 253   def(Bytecodes::_fconst_0            , ____|____|____|____, vtos, ftos, fconst              ,  0           );
 254   def(Bytecodes::_fconst_1            , ____|____|____|____, vtos, ftos, fconst              ,  1           );
 255   def(Bytecodes::_fconst_2            , ____|____|____|____, vtos, ftos, fconst              ,  2           );
 256   def(Bytecodes::_dconst_0            , ____|____|____|____, vtos, dtos, dconst              ,  0           );
 257   def(Bytecodes::_dconst_1            , ____|____|____|____, vtos, dtos, dconst              ,  1           );
 258   def(Bytecodes::_bipush              , ubcp|____|____|____, vtos, itos, bipush              ,  _           );
 259   def(Bytecodes::_sipush              , ubcp|____|____|____, vtos, itos, sipush              ,  _           );


 272   def(Bytecodes::_lload_0             , ____|____|____|____, vtos, ltos, lload               ,  0           );
 273   def(Bytecodes::_lload_1             , ____|____|____|____, vtos, ltos, lload               ,  1           );
 274   def(Bytecodes::_lload_2             , ____|____|____|____, vtos, ltos, lload               ,  2           );
 275   def(Bytecodes::_lload_3             , ____|____|____|____, vtos, ltos, lload               ,  3           );
 276   def(Bytecodes::_fload_0             , ____|____|____|____, vtos, ftos, fload               ,  0           );
 277   def(Bytecodes::_fload_1             , ____|____|____|____, vtos, ftos, fload               ,  1           );
 278   def(Bytecodes::_fload_2             , ____|____|____|____, vtos, ftos, fload               ,  2           );
 279   def(Bytecodes::_fload_3             , ____|____|____|____, vtos, ftos, fload               ,  3           );
 280   def(Bytecodes::_dload_0             , ____|____|____|____, vtos, dtos, dload               ,  0           );
 281   def(Bytecodes::_dload_1             , ____|____|____|____, vtos, dtos, dload               ,  1           );
 282   def(Bytecodes::_dload_2             , ____|____|____|____, vtos, dtos, dload               ,  2           );
 283   def(Bytecodes::_dload_3             , ____|____|____|____, vtos, dtos, dload               ,  3           );
 284   def(Bytecodes::_aload_0             , ubcp|____|clvm|____, vtos, atos, aload_0             ,  _           );
 285   def(Bytecodes::_aload_1             , ____|____|____|____, vtos, atos, aload               ,  1           );
 286   def(Bytecodes::_aload_2             , ____|____|____|____, vtos, atos, aload               ,  2           );
 287   def(Bytecodes::_aload_3             , ____|____|____|____, vtos, atos, aload               ,  3           );
 288   def(Bytecodes::_iaload              , ____|____|____|____, itos, itos, iaload              ,  _           );
 289   def(Bytecodes::_laload              , ____|____|____|____, itos, ltos, laload              ,  _           );
 290   def(Bytecodes::_faload              , ____|____|____|____, itos, ftos, faload              ,  _           );
 291   def(Bytecodes::_daload              , ____|____|____|____, itos, dtos, daload              ,  _           );
 292   def(Bytecodes::_aaload              , ____|____|____|____, itos, atos, aaload              ,  _           );
 293   def(Bytecodes::_baload              , ____|____|____|____, itos, itos, baload              ,  _           );
 294   def(Bytecodes::_caload              , ____|____|____|____, itos, itos, caload              ,  _           );
 295   def(Bytecodes::_saload              , ____|____|____|____, itos, itos, saload              ,  _           );
 296   def(Bytecodes::_istore              , ubcp|____|clvm|____, itos, vtos, istore              ,  _           );
 297   def(Bytecodes::_lstore              , ubcp|____|____|____, ltos, vtos, lstore              ,  _           );
 298   def(Bytecodes::_fstore              , ubcp|____|____|____, ftos, vtos, fstore              ,  _           );
 299   def(Bytecodes::_dstore              , ubcp|____|____|____, dtos, vtos, dstore              ,  _           );
 300   def(Bytecodes::_astore              , ubcp|____|clvm|____, vtos, vtos, astore              ,  _           );
 301   def(Bytecodes::_istore_0            , ____|____|____|____, itos, vtos, istore              ,  0           );
 302   def(Bytecodes::_istore_1            , ____|____|____|____, itos, vtos, istore              ,  1           );
 303   def(Bytecodes::_istore_2            , ____|____|____|____, itos, vtos, istore              ,  2           );
 304   def(Bytecodes::_istore_3            , ____|____|____|____, itos, vtos, istore              ,  3           );
 305   def(Bytecodes::_lstore_0            , ____|____|____|____, ltos, vtos, lstore              ,  0           );
 306   def(Bytecodes::_lstore_1            , ____|____|____|____, ltos, vtos, lstore              ,  1           );
 307   def(Bytecodes::_lstore_2            , ____|____|____|____, ltos, vtos, lstore              ,  2           );
 308   def(Bytecodes::_lstore_3            , ____|____|____|____, ltos, vtos, lstore              ,  3           );
 309   def(Bytecodes::_fstore_0            , ____|____|____|____, ftos, vtos, fstore              ,  0           );
 310   def(Bytecodes::_fstore_1            , ____|____|____|____, ftos, vtos, fstore              ,  1           );
 311   def(Bytecodes::_fstore_2            , ____|____|____|____, ftos, vtos, fstore              ,  2           );
 312   def(Bytecodes::_fstore_3            , ____|____|____|____, ftos, vtos, fstore              ,  3           );


 424   def(Bytecodes::_invokevirtual       , ubcp|disp|clvm|____, vtos, vtos, invokevirtual       , f2_byte      );
 425   def(Bytecodes::_invokespecial       , ubcp|disp|clvm|____, vtos, vtos, invokespecial       , f1_byte      );
 426   def(Bytecodes::_invokestatic        , ubcp|disp|clvm|____, vtos, vtos, invokestatic        , f1_byte      );
 427   def(Bytecodes::_invokeinterface     , ubcp|disp|clvm|____, vtos, vtos, invokeinterface     , f1_byte      );
 428   def(Bytecodes::_invokedynamic       , ubcp|disp|clvm|____, vtos, vtos, invokedynamic       , f1_byte      );
 429   def(Bytecodes::_new                 , ubcp|____|clvm|____, vtos, atos, _new                ,  _           );
 430   def(Bytecodes::_newarray            , ubcp|____|clvm|____, itos, atos, newarray            ,  _           );
 431   def(Bytecodes::_anewarray           , ubcp|____|clvm|____, itos, atos, anewarray           ,  _           );
 432   def(Bytecodes::_arraylength         , ____|____|____|____, atos, itos, arraylength         ,  _           );
 433   def(Bytecodes::_athrow              , ____|disp|____|____, atos, vtos, athrow              ,  _           );
 434   def(Bytecodes::_checkcast           , ubcp|____|clvm|____, atos, atos, checkcast           ,  _           );
 435   def(Bytecodes::_instanceof          , ubcp|____|clvm|____, atos, itos, instanceof          ,  _           );
 436   def(Bytecodes::_monitorenter        , ____|disp|clvm|____, atos, vtos, monitorenter        ,  _           );
 437   def(Bytecodes::_monitorexit         , ____|____|clvm|____, atos, vtos, monitorexit         ,  _           );
 438   def(Bytecodes::_wide                , ubcp|disp|____|____, vtos, vtos, wide                ,  _           );
 439   def(Bytecodes::_multianewarray      , ubcp|____|clvm|____, vtos, atos, multianewarray      ,  _           );
 440   def(Bytecodes::_ifnull              , ubcp|____|clvm|____, atos, vtos, if_nullcmp          , equal        );
 441   def(Bytecodes::_ifnonnull           , ubcp|____|clvm|____, atos, vtos, if_nullcmp          , not_equal    );
 442   def(Bytecodes::_goto_w              , ubcp|____|clvm|____, vtos, vtos, goto_w              ,  _           );
 443   def(Bytecodes::_jsr_w               , ubcp|____|____|____, vtos, vtos, jsr_w               ,  _           );



 444 
 445   // wide Java spec bytecodes
 446   def(Bytecodes::_iload               , ubcp|____|____|iswd, vtos, itos, wide_iload          ,  _           );
 447   def(Bytecodes::_lload               , ubcp|____|____|iswd, vtos, ltos, wide_lload          ,  _           );
 448   def(Bytecodes::_fload               , ubcp|____|____|iswd, vtos, ftos, wide_fload          ,  _           );
 449   def(Bytecodes::_dload               , ubcp|____|____|iswd, vtos, dtos, wide_dload          ,  _           );
 450   def(Bytecodes::_aload               , ubcp|____|____|iswd, vtos, atos, wide_aload          ,  _           );
 451   def(Bytecodes::_istore              , ubcp|____|____|iswd, vtos, vtos, wide_istore         ,  _           );
 452   def(Bytecodes::_lstore              , ubcp|____|____|iswd, vtos, vtos, wide_lstore         ,  _           );
 453   def(Bytecodes::_fstore              , ubcp|____|____|iswd, vtos, vtos, wide_fstore         ,  _           );
 454   def(Bytecodes::_dstore              , ubcp|____|____|iswd, vtos, vtos, wide_dstore         ,  _           );
 455   def(Bytecodes::_astore              , ubcp|____|____|iswd, vtos, vtos, wide_astore         ,  _           );
 456   def(Bytecodes::_iinc                , ubcp|____|____|iswd, vtos, vtos, wide_iinc           ,  _           );
 457   def(Bytecodes::_ret                 , ubcp|disp|____|iswd, vtos, vtos, wide_ret            ,  _           );
 458   def(Bytecodes::_breakpoint          , ubcp|disp|clvm|____, vtos, vtos, _breakpoint         ,  _           );
 459 
 460   // JVM bytecodes
 461   def(Bytecodes::_fast_agetfield      , ubcp|____|____|____, atos, atos, fast_accessfield    ,  atos        );

 462   def(Bytecodes::_fast_bgetfield      , ubcp|____|____|____, atos, itos, fast_accessfield    ,  itos        );
 463   def(Bytecodes::_fast_cgetfield      , ubcp|____|____|____, atos, itos, fast_accessfield    ,  itos        );
 464   def(Bytecodes::_fast_dgetfield      , ubcp|____|____|____, atos, dtos, fast_accessfield    ,  dtos        );
 465   def(Bytecodes::_fast_fgetfield      , ubcp|____|____|____, atos, ftos, fast_accessfield    ,  ftos        );
 466   def(Bytecodes::_fast_igetfield      , ubcp|____|____|____, atos, itos, fast_accessfield    ,  itos        );
 467   def(Bytecodes::_fast_lgetfield      , ubcp|____|____|____, atos, ltos, fast_accessfield    ,  ltos        );
 468   def(Bytecodes::_fast_sgetfield      , ubcp|____|____|____, atos, itos, fast_accessfield    ,  itos        );
 469 
 470   def(Bytecodes::_fast_aputfield      , ubcp|____|____|____, atos, vtos, fast_storefield ,   atos        );

 471   def(Bytecodes::_fast_bputfield      , ubcp|____|____|____, itos, vtos, fast_storefield ,   itos        );
 472   def(Bytecodes::_fast_zputfield      , ubcp|____|____|____, itos, vtos, fast_storefield ,   itos        );
 473   def(Bytecodes::_fast_cputfield      , ubcp|____|____|____, itos, vtos, fast_storefield  ,  itos        );
 474   def(Bytecodes::_fast_dputfield      , ubcp|____|____|____, dtos, vtos, fast_storefield  ,  dtos        );
 475   def(Bytecodes::_fast_fputfield      , ubcp|____|____|____, ftos, vtos, fast_storefield  ,  ftos        );
 476   def(Bytecodes::_fast_iputfield      , ubcp|____|____|____, itos, vtos, fast_storefield  ,  itos        );
 477   def(Bytecodes::_fast_lputfield      , ubcp|____|____|____, ltos, vtos, fast_storefield  ,  ltos        );
 478   def(Bytecodes::_fast_sputfield      , ubcp|____|____|____, itos, vtos, fast_storefield  ,  itos        );
 479 
 480   def(Bytecodes::_fast_aload_0        , ____|____|____|____, vtos, atos, aload               ,  0           );
 481   def(Bytecodes::_fast_iaccess_0      , ubcp|____|____|____, vtos, itos, fast_xaccess        ,  itos        );
 482   def(Bytecodes::_fast_aaccess_0      , ubcp|____|____|____, vtos, atos, fast_xaccess        ,  atos        );
 483   def(Bytecodes::_fast_faccess_0      , ubcp|____|____|____, vtos, ftos, fast_xaccess        ,  ftos        );
 484 
 485   def(Bytecodes::_fast_iload          , ubcp|____|____|____, vtos, itos, fast_iload          ,  _       );
 486   def(Bytecodes::_fast_iload2         , ubcp|____|____|____, vtos, itos, fast_iload2         ,  _       );
 487   def(Bytecodes::_fast_icaload        , ubcp|____|____|____, vtos, itos, fast_icaload        ,  _       );
 488 
 489   def(Bytecodes::_fast_invokevfinal   , ubcp|disp|clvm|____, vtos, vtos, fast_invokevfinal   , f2_byte      );
 490 
 491   def(Bytecodes::_fast_linearswitch   , ubcp|disp|____|____, itos, vtos, fast_linearswitch   ,  _           );
 492   def(Bytecodes::_fast_binaryswitch   , ubcp|disp|____|____, itos, vtos, fast_binaryswitch   ,  _           );
 493 
 494   def(Bytecodes::_fast_aldc           , ubcp|____|clvm|____, vtos, atos, fast_aldc           ,  false       );
 495   def(Bytecodes::_fast_aldc_w         , ubcp|____|clvm|____, vtos, atos, fast_aldc           ,  true        );
 496 
 497   def(Bytecodes::_return_register_finalizer , ____|disp|clvm|____, vtos, vtos, _return       ,  vtos        );
 498 
 499   def(Bytecodes::_invokehandle        , ubcp|disp|clvm|____, vtos, vtos, invokehandle        , f1_byte      );
 500 
 501   def(Bytecodes::_nofast_getfield     , ubcp|____|clvm|____, vtos, vtos, nofast_getfield     , f1_byte      );
 502   def(Bytecodes::_nofast_putfield     , ubcp|____|clvm|____, vtos, vtos, nofast_putfield     , f2_byte      );
 503 
 504   def(Bytecodes::_nofast_aload_0      , ____|____|clvm|____, vtos, atos, nofast_aload_0      ,  _           );
 505   def(Bytecodes::_nofast_iload        , ubcp|____|clvm|____, vtos, itos, nofast_iload        ,  _           );

 506 
 507   def(Bytecodes::_shouldnotreachhere   , ____|____|____|____, vtos, vtos, shouldnotreachhere ,  _           );
 508   // platform specific bytecodes
 509   pd_initialize();
 510 
 511   _is_initialized = true;
 512 }
 513 
 514 void templateTable_init() {
 515   TemplateTable::initialize();
 516 }
 517 
 518 
 519 void TemplateTable::unimplemented_bc() {
 520   _masm->unimplemented( Bytecodes::name(_desc->bytecode()));
 521 }
 522 #endif /* !CC_INTERP */


 143 }
 144 
 145 
 146 void TemplateTable::jsr_w() {
 147   transition(vtos, vtos);       // result is not an oop, so do not transition to atos
 148   branch(true, true);
 149 }
 150 
 151 
 152 void TemplateTable::jsr() {
 153   transition(vtos, vtos);       // result is not an oop, so do not transition to atos
 154   branch(true, false);
 155 }
 156 
 157 
 158 
 159 //----------------------------------------------------------------------------------------------------
 160 // Implementation of TemplateTable: Debugging
 161 
 162 void TemplateTable::transition(TosState tos_in, TosState tos_out) {
 163   assert(_desc->tos_in()  == tos_in,
 164          "inconsistent tos_in  information");
 165   assert(_desc->tos_out() == tos_out, "inconsistent tos_out information");
 166 }
 167 
 168 
 169 //----------------------------------------------------------------------------------------------------
 170 // Implementation of TemplateTable: Initialization
 171 
 172 bool                       TemplateTable::_is_initialized = false;
 173 Template                   TemplateTable::_template_table     [Bytecodes::number_of_codes];
 174 Template                   TemplateTable::_template_table_wide[Bytecodes::number_of_codes];
 175 
 176 Template*                  TemplateTable::_desc;
 177 InterpreterMacroAssembler* TemplateTable::_masm;
 178 BarrierSet*                TemplateTable::_bs;
 179 
 180 
 181 void TemplateTable::def(Bytecodes::Code code, int flags, TosState in, TosState out, void (*gen)(), char filler) {
 182   assert(filler == ' ', "just checkin'");
 183   def(code, flags, in, out, (Template::generator)gen, 0);
 184 }


 221 
 222 void TemplateTable::def(Bytecodes::Code code, int flags, TosState in, TosState out, void (*gen)(Condition cc), Condition cc) {
 223   def(code, flags, in, out, (Template::generator)gen, (int)cc);
 224 }
 225 
 226 void TemplateTable::initialize() {
 227   if (_is_initialized) return;
 228 
 229   // Initialize table
 230   TraceTime timer("TemplateTable initialization", TRACETIME_LOG(Info, startuptime));
 231 
 232   _bs = BarrierSet::barrier_set();
 233 
 234   // For better readability
 235   const char _    = ' ';
 236   const int  ____ = 0;
 237   const int  ubcp = 1 << Template::uses_bcp_bit;
 238   const int  disp = 1 << Template::does_dispatch_bit;
 239   const int  clvm = 1 << Template::calls_vm_bit;
 240   const int  iswd = 1 << Template::wide_bit;
 241 
 242   //                                    interpr. templates
 243   // Java spec bytecodes                ubcp|disp|clvm|iswd  in    out   generator             argument
 244   def(Bytecodes::_nop                 , ____|____|____|____, vtos, vtos, nop                 ,  _           );
 245   def(Bytecodes::_aconst_null         , ____|____|____|____, vtos, atos, aconst_null         ,  _           );
 246   def(Bytecodes::_iconst_m1           , ____|____|____|____, vtos, itos, iconst              , -1           );
 247   def(Bytecodes::_iconst_0            , ____|____|____|____, vtos, itos, iconst              ,  0           );
 248   def(Bytecodes::_iconst_1            , ____|____|____|____, vtos, itos, iconst              ,  1           );
 249   def(Bytecodes::_iconst_2            , ____|____|____|____, vtos, itos, iconst              ,  2           );
 250   def(Bytecodes::_iconst_3            , ____|____|____|____, vtos, itos, iconst              ,  3           );
 251   def(Bytecodes::_iconst_4            , ____|____|____|____, vtos, itos, iconst              ,  4           );
 252   def(Bytecodes::_iconst_5            , ____|____|____|____, vtos, itos, iconst              ,  5           );
 253   def(Bytecodes::_lconst_0            , ____|____|____|____, vtos, ltos, lconst              ,  0           );
 254   def(Bytecodes::_lconst_1            , ____|____|____|____, vtos, ltos, lconst              ,  1           );
 255   def(Bytecodes::_fconst_0            , ____|____|____|____, vtos, ftos, fconst              ,  0           );
 256   def(Bytecodes::_fconst_1            , ____|____|____|____, vtos, ftos, fconst              ,  1           );
 257   def(Bytecodes::_fconst_2            , ____|____|____|____, vtos, ftos, fconst              ,  2           );
 258   def(Bytecodes::_dconst_0            , ____|____|____|____, vtos, dtos, dconst              ,  0           );
 259   def(Bytecodes::_dconst_1            , ____|____|____|____, vtos, dtos, dconst              ,  1           );
 260   def(Bytecodes::_bipush              , ubcp|____|____|____, vtos, itos, bipush              ,  _           );
 261   def(Bytecodes::_sipush              , ubcp|____|____|____, vtos, itos, sipush              ,  _           );


 274   def(Bytecodes::_lload_0             , ____|____|____|____, vtos, ltos, lload               ,  0           );
 275   def(Bytecodes::_lload_1             , ____|____|____|____, vtos, ltos, lload               ,  1           );
 276   def(Bytecodes::_lload_2             , ____|____|____|____, vtos, ltos, lload               ,  2           );
 277   def(Bytecodes::_lload_3             , ____|____|____|____, vtos, ltos, lload               ,  3           );
 278   def(Bytecodes::_fload_0             , ____|____|____|____, vtos, ftos, fload               ,  0           );
 279   def(Bytecodes::_fload_1             , ____|____|____|____, vtos, ftos, fload               ,  1           );
 280   def(Bytecodes::_fload_2             , ____|____|____|____, vtos, ftos, fload               ,  2           );
 281   def(Bytecodes::_fload_3             , ____|____|____|____, vtos, ftos, fload               ,  3           );
 282   def(Bytecodes::_dload_0             , ____|____|____|____, vtos, dtos, dload               ,  0           );
 283   def(Bytecodes::_dload_1             , ____|____|____|____, vtos, dtos, dload               ,  1           );
 284   def(Bytecodes::_dload_2             , ____|____|____|____, vtos, dtos, dload               ,  2           );
 285   def(Bytecodes::_dload_3             , ____|____|____|____, vtos, dtos, dload               ,  3           );
 286   def(Bytecodes::_aload_0             , ubcp|____|clvm|____, vtos, atos, aload_0             ,  _           );
 287   def(Bytecodes::_aload_1             , ____|____|____|____, vtos, atos, aload               ,  1           );
 288   def(Bytecodes::_aload_2             , ____|____|____|____, vtos, atos, aload               ,  2           );
 289   def(Bytecodes::_aload_3             , ____|____|____|____, vtos, atos, aload               ,  3           );
 290   def(Bytecodes::_iaload              , ____|____|____|____, itos, itos, iaload              ,  _           );
 291   def(Bytecodes::_laload              , ____|____|____|____, itos, ltos, laload              ,  _           );
 292   def(Bytecodes::_faload              , ____|____|____|____, itos, ftos, faload              ,  _           );
 293   def(Bytecodes::_daload              , ____|____|____|____, itos, dtos, daload              ,  _           );
 294   def(Bytecodes::_aaload              , ____|____|clvm|____, itos, atos, aaload              ,  _           );
 295   def(Bytecodes::_baload              , ____|____|____|____, itos, itos, baload              ,  _           );
 296   def(Bytecodes::_caload              , ____|____|____|____, itos, itos, caload              ,  _           );
 297   def(Bytecodes::_saload              , ____|____|____|____, itos, itos, saload              ,  _           );
 298   def(Bytecodes::_istore              , ubcp|____|clvm|____, itos, vtos, istore              ,  _           );
 299   def(Bytecodes::_lstore              , ubcp|____|____|____, ltos, vtos, lstore              ,  _           );
 300   def(Bytecodes::_fstore              , ubcp|____|____|____, ftos, vtos, fstore              ,  _           );
 301   def(Bytecodes::_dstore              , ubcp|____|____|____, dtos, vtos, dstore              ,  _           );
 302   def(Bytecodes::_astore              , ubcp|____|clvm|____, vtos, vtos, astore              ,  _           );
 303   def(Bytecodes::_istore_0            , ____|____|____|____, itos, vtos, istore              ,  0           );
 304   def(Bytecodes::_istore_1            , ____|____|____|____, itos, vtos, istore              ,  1           );
 305   def(Bytecodes::_istore_2            , ____|____|____|____, itos, vtos, istore              ,  2           );
 306   def(Bytecodes::_istore_3            , ____|____|____|____, itos, vtos, istore              ,  3           );
 307   def(Bytecodes::_lstore_0            , ____|____|____|____, ltos, vtos, lstore              ,  0           );
 308   def(Bytecodes::_lstore_1            , ____|____|____|____, ltos, vtos, lstore              ,  1           );
 309   def(Bytecodes::_lstore_2            , ____|____|____|____, ltos, vtos, lstore              ,  2           );
 310   def(Bytecodes::_lstore_3            , ____|____|____|____, ltos, vtos, lstore              ,  3           );
 311   def(Bytecodes::_fstore_0            , ____|____|____|____, ftos, vtos, fstore              ,  0           );
 312   def(Bytecodes::_fstore_1            , ____|____|____|____, ftos, vtos, fstore              ,  1           );
 313   def(Bytecodes::_fstore_2            , ____|____|____|____, ftos, vtos, fstore              ,  2           );
 314   def(Bytecodes::_fstore_3            , ____|____|____|____, ftos, vtos, fstore              ,  3           );


 426   def(Bytecodes::_invokevirtual       , ubcp|disp|clvm|____, vtos, vtos, invokevirtual       , f2_byte      );
 427   def(Bytecodes::_invokespecial       , ubcp|disp|clvm|____, vtos, vtos, invokespecial       , f1_byte      );
 428   def(Bytecodes::_invokestatic        , ubcp|disp|clvm|____, vtos, vtos, invokestatic        , f1_byte      );
 429   def(Bytecodes::_invokeinterface     , ubcp|disp|clvm|____, vtos, vtos, invokeinterface     , f1_byte      );
 430   def(Bytecodes::_invokedynamic       , ubcp|disp|clvm|____, vtos, vtos, invokedynamic       , f1_byte      );
 431   def(Bytecodes::_new                 , ubcp|____|clvm|____, vtos, atos, _new                ,  _           );
 432   def(Bytecodes::_newarray            , ubcp|____|clvm|____, itos, atos, newarray            ,  _           );
 433   def(Bytecodes::_anewarray           , ubcp|____|clvm|____, itos, atos, anewarray           ,  _           );
 434   def(Bytecodes::_arraylength         , ____|____|____|____, atos, itos, arraylength         ,  _           );
 435   def(Bytecodes::_athrow              , ____|disp|____|____, atos, vtos, athrow              ,  _           );
 436   def(Bytecodes::_checkcast           , ubcp|____|clvm|____, atos, atos, checkcast           ,  _           );
 437   def(Bytecodes::_instanceof          , ubcp|____|clvm|____, atos, itos, instanceof          ,  _           );
 438   def(Bytecodes::_monitorenter        , ____|disp|clvm|____, atos, vtos, monitorenter        ,  _           );
 439   def(Bytecodes::_monitorexit         , ____|____|clvm|____, atos, vtos, monitorexit         ,  _           );
 440   def(Bytecodes::_wide                , ubcp|disp|____|____, vtos, vtos, wide                ,  _           );
 441   def(Bytecodes::_multianewarray      , ubcp|____|clvm|____, vtos, atos, multianewarray      ,  _           );
 442   def(Bytecodes::_ifnull              , ubcp|____|clvm|____, atos, vtos, if_nullcmp          , equal        );
 443   def(Bytecodes::_ifnonnull           , ubcp|____|clvm|____, atos, vtos, if_nullcmp          , not_equal    );
 444   def(Bytecodes::_goto_w              , ubcp|____|clvm|____, vtos, vtos, goto_w              ,  _           );
 445   def(Bytecodes::_jsr_w               , ubcp|____|____|____, vtos, vtos, jsr_w               ,  _           );
 446   def(Bytecodes::_breakpoint          , ubcp|disp|clvm|____, vtos, vtos, _breakpoint         ,  _           );
 447   def(Bytecodes::_defaultvalue        , ubcp|____|clvm|____, vtos, atos, defaultvalue        , _            );
 448   def(Bytecodes::_withfield           , ubcp|____|clvm|____, vtos, atos, withfield           , _            );
 449 
 450   // wide Java spec bytecodes
 451   def(Bytecodes::_iload               , ubcp|____|____|iswd, vtos, itos, wide_iload          ,  _           );
 452   def(Bytecodes::_lload               , ubcp|____|____|iswd, vtos, ltos, wide_lload          ,  _           );
 453   def(Bytecodes::_fload               , ubcp|____|____|iswd, vtos, ftos, wide_fload          ,  _           );
 454   def(Bytecodes::_dload               , ubcp|____|____|iswd, vtos, dtos, wide_dload          ,  _           );
 455   def(Bytecodes::_aload               , ubcp|____|____|iswd, vtos, atos, wide_aload          ,  _           );
 456   def(Bytecodes::_istore              , ubcp|____|____|iswd, vtos, vtos, wide_istore         ,  _           );
 457   def(Bytecodes::_lstore              , ubcp|____|____|iswd, vtos, vtos, wide_lstore         ,  _           );
 458   def(Bytecodes::_fstore              , ubcp|____|____|iswd, vtos, vtos, wide_fstore         ,  _           );
 459   def(Bytecodes::_dstore              , ubcp|____|____|iswd, vtos, vtos, wide_dstore         ,  _           );
 460   def(Bytecodes::_astore              , ubcp|____|____|iswd, vtos, vtos, wide_astore         ,  _           );
 461   def(Bytecodes::_iinc                , ubcp|____|____|iswd, vtos, vtos, wide_iinc           ,  _           );
 462   def(Bytecodes::_ret                 , ubcp|disp|____|iswd, vtos, vtos, wide_ret            ,  _           );
 463   def(Bytecodes::_breakpoint          , ubcp|disp|clvm|____, vtos, vtos, _breakpoint         ,  _           );
 464 
 465   // JVM bytecodes
 466   def(Bytecodes::_fast_agetfield      , ubcp|____|____|____, atos, atos, fast_accessfield    ,  atos        );
 467   def(Bytecodes::_fast_qgetfield      , ubcp|____|clvm|____, atos, atos, fast_accessfield    ,  atos        );
 468   def(Bytecodes::_fast_bgetfield      , ubcp|____|____|____, atos, itos, fast_accessfield    ,  itos        );
 469   def(Bytecodes::_fast_cgetfield      , ubcp|____|____|____, atos, itos, fast_accessfield    ,  itos        );
 470   def(Bytecodes::_fast_dgetfield      , ubcp|____|____|____, atos, dtos, fast_accessfield    ,  dtos        );
 471   def(Bytecodes::_fast_fgetfield      , ubcp|____|____|____, atos, ftos, fast_accessfield    ,  ftos        );
 472   def(Bytecodes::_fast_igetfield      , ubcp|____|____|____, atos, itos, fast_accessfield    ,  itos        );
 473   def(Bytecodes::_fast_lgetfield      , ubcp|____|____|____, atos, ltos, fast_accessfield    ,  ltos        );
 474   def(Bytecodes::_fast_sgetfield      , ubcp|____|____|____, atos, itos, fast_accessfield    ,  itos        );
 475 
 476   def(Bytecodes::_fast_aputfield      , ubcp|____|____|____, atos, vtos, fast_storefield ,   atos        );
 477   def(Bytecodes::_fast_qputfield      , ubcp|____|clvm|____, atos, vtos, fast_storefield ,   atos        );
 478   def(Bytecodes::_fast_bputfield      , ubcp|____|____|____, itos, vtos, fast_storefield ,   itos        );
 479   def(Bytecodes::_fast_zputfield      , ubcp|____|____|____, itos, vtos, fast_storefield ,   itos        );
 480   def(Bytecodes::_fast_cputfield      , ubcp|____|____|____, itos, vtos, fast_storefield  ,  itos        );
 481   def(Bytecodes::_fast_dputfield      , ubcp|____|____|____, dtos, vtos, fast_storefield  ,  dtos        );
 482   def(Bytecodes::_fast_fputfield      , ubcp|____|____|____, ftos, vtos, fast_storefield  ,  ftos        );
 483   def(Bytecodes::_fast_iputfield      , ubcp|____|____|____, itos, vtos, fast_storefield  ,  itos        );
 484   def(Bytecodes::_fast_lputfield      , ubcp|____|____|____, ltos, vtos, fast_storefield  ,  ltos        );
 485   def(Bytecodes::_fast_sputfield      , ubcp|____|____|____, itos, vtos, fast_storefield  ,  itos        );
 486 
 487   def(Bytecodes::_fast_aload_0        , ____|____|____|____, vtos, atos, aload               ,  0           );
 488   def(Bytecodes::_fast_iaccess_0      , ubcp|____|____|____, vtos, itos, fast_xaccess        ,  itos        );
 489   def(Bytecodes::_fast_aaccess_0      , ubcp|____|____|____, vtos, atos, fast_xaccess        ,  atos        );
 490   def(Bytecodes::_fast_faccess_0      , ubcp|____|____|____, vtos, ftos, fast_xaccess        ,  ftos        );
 491 
 492   def(Bytecodes::_fast_iload          , ubcp|____|____|____, vtos, itos, fast_iload          ,  _       );
 493   def(Bytecodes::_fast_iload2         , ubcp|____|____|____, vtos, itos, fast_iload2         ,  _       );
 494   def(Bytecodes::_fast_icaload        , ubcp|____|____|____, vtos, itos, fast_icaload        ,  _       );
 495 
 496   def(Bytecodes::_fast_invokevfinal   , ubcp|disp|clvm|____, vtos, vtos, fast_invokevfinal   , f2_byte      );
 497 
 498   def(Bytecodes::_fast_linearswitch   , ubcp|disp|____|____, itos, vtos, fast_linearswitch   ,  _           );
 499   def(Bytecodes::_fast_binaryswitch   , ubcp|disp|____|____, itos, vtos, fast_binaryswitch   ,  _           );
 500 
 501   def(Bytecodes::_fast_aldc           , ubcp|____|clvm|____, vtos, atos, fast_aldc           ,  false       );
 502   def(Bytecodes::_fast_aldc_w         , ubcp|____|clvm|____, vtos, atos, fast_aldc           ,  true        );
 503 
 504   def(Bytecodes::_return_register_finalizer , ____|disp|clvm|____, vtos, vtos, _return       ,  vtos        );
 505 
 506   def(Bytecodes::_invokehandle        , ubcp|disp|clvm|____, vtos, vtos, invokehandle        , f1_byte      );
 507 
 508   def(Bytecodes::_nofast_getfield     , ubcp|____|clvm|____, vtos, vtos, nofast_getfield     , f1_byte      );
 509   def(Bytecodes::_nofast_putfield     , ubcp|____|clvm|____, vtos, vtos, nofast_putfield     , f2_byte      );
 510 
 511   def(Bytecodes::_nofast_aload_0      , ____|____|clvm|____, vtos, atos, nofast_aload_0      ,  _           );
 512   def(Bytecodes::_nofast_iload        , ubcp|____|clvm|____, vtos, itos, nofast_iload        ,  _           );
 513 
 514 
 515   def(Bytecodes::_shouldnotreachhere   , ____|____|____|____, vtos, vtos, shouldnotreachhere ,  _           );
 516   // platform specific bytecodes
 517   pd_initialize();
 518 
 519   _is_initialized = true;
 520 }
 521 
 522 void templateTable_init() {
 523   TemplateTable::initialize();
 524 }
 525 
 526 
 527 void TemplateTable::unimplemented_bc() {
 528   _masm->unimplemented( Bytecodes::name(_desc->bytecode()));
 529 }
 530 #endif /* !CC_INTERP */
< prev index next >