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 */
|