< prev index next >

src/hotspot/share/interpreter/templateTable.cpp

Print this page

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

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

213 
214 
215 void TemplateTable::def(Bytecodes::Code code, int flags, TosState in, TosState out, void (*gen)(Condition cc), Condition cc) {
216   def(code, flags, in, out, (Template::generator)gen, (int)cc);
217 }
218 
219 void TemplateTable::initialize() {
220 #ifdef ASSERT
221   static bool is_initialized = false;
222   assert(!is_initialized, "must only initialize once");
223   is_initialized = true;
224 #endif
225 
226   // For better readability
227   const char _    = ' ';
228   const int  ____ = 0;
229   const int  ubcp = 1 << Template::uses_bcp_bit;
230   const int  disp = 1 << Template::does_dispatch_bit;
231   const int  clvm = 1 << Template::calls_vm_bit;
232   const int  iswd = 1 << Template::wide_bit;

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

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

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

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

455   def(Bytecodes::_fast_bgetfield      , ubcp|____|____|____, atos, itos, fast_accessfield    ,  itos        );
456   def(Bytecodes::_fast_cgetfield      , ubcp|____|____|____, atos, itos, fast_accessfield    ,  itos        );
457   def(Bytecodes::_fast_dgetfield      , ubcp|____|____|____, atos, dtos, fast_accessfield    ,  dtos        );
458   def(Bytecodes::_fast_fgetfield      , ubcp|____|____|____, atos, ftos, fast_accessfield    ,  ftos        );
459   def(Bytecodes::_fast_igetfield      , ubcp|____|____|____, atos, itos, fast_accessfield    ,  itos        );
460   def(Bytecodes::_fast_lgetfield      , ubcp|____|____|____, atos, ltos, fast_accessfield    ,  ltos        );
461   def(Bytecodes::_fast_sgetfield      , ubcp|____|____|____, atos, itos, fast_accessfield    ,  itos        );
462 
463   def(Bytecodes::_fast_aputfield      , ubcp|____|____|____, atos, vtos, fast_storefield ,   atos        );

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

500   def(Bytecodes::_shouldnotreachhere   , ____|____|____|____, vtos, vtos, shouldnotreachhere ,  _           );
501 }
502 
503 void TemplateTable::unimplemented_bc() {
504   _masm->unimplemented( Bytecodes::name(_desc->bytecode()));
505 }
506 #endif /* !ZERO */

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

214 
215 
216 void TemplateTable::def(Bytecodes::Code code, int flags, TosState in, TosState out, void (*gen)(Condition cc), Condition cc) {
217   def(code, flags, in, out, (Template::generator)gen, (int)cc);
218 }
219 
220 void TemplateTable::initialize() {
221 #ifdef ASSERT
222   static bool is_initialized = false;
223   assert(!is_initialized, "must only initialize once");
224   is_initialized = true;
225 #endif
226 
227   // For better readability
228   const char _    = ' ';
229   const int  ____ = 0;
230   const int  ubcp = 1 << Template::uses_bcp_bit;
231   const int  disp = 1 << Template::does_dispatch_bit;
232   const int  clvm = 1 << Template::calls_vm_bit;
233   const int  iswd = 1 << Template::wide_bit;
234 
235   //                                    interpr. templates
236   // Java spec bytecodes                ubcp|disp|clvm|iswd  in    out   generator             argument
237   def(Bytecodes::_nop                 , ____|____|____|____, vtos, vtos, nop                 ,  _           );
238   def(Bytecodes::_aconst_null         , ____|____|____|____, vtos, atos, aconst_null         ,  _           );
239   def(Bytecodes::_iconst_m1           , ____|____|____|____, vtos, itos, iconst              , -1           );
240   def(Bytecodes::_iconst_0            , ____|____|____|____, vtos, itos, iconst              ,  0           );
241   def(Bytecodes::_iconst_1            , ____|____|____|____, vtos, itos, iconst              ,  1           );
242   def(Bytecodes::_iconst_2            , ____|____|____|____, vtos, itos, iconst              ,  2           );
243   def(Bytecodes::_iconst_3            , ____|____|____|____, vtos, itos, iconst              ,  3           );
244   def(Bytecodes::_iconst_4            , ____|____|____|____, vtos, itos, iconst              ,  4           );
245   def(Bytecodes::_iconst_5            , ____|____|____|____, vtos, itos, iconst              ,  5           );
246   def(Bytecodes::_lconst_0            , ____|____|____|____, vtos, ltos, lconst              ,  0           );
247   def(Bytecodes::_lconst_1            , ____|____|____|____, vtos, ltos, lconst              ,  1           );
248   def(Bytecodes::_fconst_0            , ____|____|____|____, vtos, ftos, fconst              ,  0           );
249   def(Bytecodes::_fconst_1            , ____|____|____|____, vtos, ftos, fconst              ,  1           );
250   def(Bytecodes::_fconst_2            , ____|____|____|____, vtos, ftos, fconst              ,  2           );
251   def(Bytecodes::_dconst_0            , ____|____|____|____, vtos, dtos, dconst              ,  0           );
252   def(Bytecodes::_dconst_1            , ____|____|____|____, vtos, dtos, dconst              ,  1           );
253   def(Bytecodes::_bipush              , ubcp|____|____|____, vtos, itos, bipush              ,  _           );
254   def(Bytecodes::_sipush              , ubcp|____|____|____, vtos, itos, sipush              ,  _           );

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

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