469 def(_newarray , "newarray" , "bc" , NULL , T_OBJECT , 0, true );
470 def(_anewarray , "anewarray" , "bkk" , NULL , T_OBJECT , 0, true );
471 def(_arraylength , "arraylength" , "b" , NULL , T_VOID , 0, true );
472 def(_athrow , "athrow" , "b" , NULL , T_VOID , -1, true );
473 def(_checkcast , "checkcast" , "bkk" , NULL , T_OBJECT , 0, true );
474 def(_instanceof , "instanceof" , "bkk" , NULL , T_INT , 0, true );
475 def(_monitorenter , "monitorenter" , "b" , NULL , T_VOID , -1, true );
476 def(_monitorexit , "monitorexit" , "b" , NULL , T_VOID , -1, true );
477 def(_wide , "wide" , "" , NULL , T_VOID , 0, false);
478 def(_multianewarray , "multianewarray" , "bkkc" , NULL , T_OBJECT , 1, true );
479 def(_ifnull , "ifnull" , "boo" , NULL , T_VOID , -1, false);
480 def(_ifnonnull , "ifnonnull" , "boo" , NULL , T_VOID , -1, false);
481 def(_goto_w , "goto_w" , "boooo", NULL , T_VOID , 0, false);
482 def(_jsr_w , "jsr_w" , "boooo", NULL , T_INT , 0, false);
483 def(_breakpoint , "breakpoint" , "" , NULL , T_VOID , 0, true);
484 def(_vload , "vload" , "bi" , "wbii" , T_VALUETYPE,1, false);
485 def(_vstore , "vstore" , "bi" , "wbii" , T_VOID , -1, false);
486 def(_vaload , "vaload" , "b" , NULL , T_VALUETYPE, -1, true);
487 def(_vastore , "vastore" , "b" , NULL , T_VOID , -3, true );
488 def(_vreturn , "vreturn" , "b" , NULL , T_VALUETYPE, -1, true);
489 def(_vgetfield , "vgetfield" , "bJJ" , NULL , T_ILLEGAL, 0, true );
490 def(_vbox , "vbox" , "bkk" , NULL , T_OBJECT , 0, true );
491 def(_vunbox , "vunbox" , "bkk" , NULL , T_VALUETYPE,0, true );
492 def(_vdefault , "vdefault" , "bkk" , NULL , T_VALUETYPE, 1, true);
493 def(_vwithfield , "vwithfield" , "bJJ" , NULL , T_VALUETYPE, -1, true );
494
495 // JVM bytecodes
496 // bytecode bytecode name format wide f. result tp stk traps std code
497
498 def(_fast_agetfield , "fast_agetfield" , "bJJ" , NULL , T_OBJECT , 0, true , _getfield );
499 def(_fast_qgetfield , "fast_qgetfield" , "bJJ" , NULL , T_VALUETYPE, 0, true, _getfield );
500 def(_fast_bgetfield , "fast_bgetfield" , "bJJ" , NULL , T_INT , 0, true , _getfield );
501 def(_fast_cgetfield , "fast_cgetfield" , "bJJ" , NULL , T_CHAR , 0, true , _getfield );
502 def(_fast_dgetfield , "fast_dgetfield" , "bJJ" , NULL , T_DOUBLE , 0, true , _getfield );
503 def(_fast_fgetfield , "fast_fgetfield" , "bJJ" , NULL , T_FLOAT , 0, true , _getfield );
504 def(_fast_igetfield , "fast_igetfield" , "bJJ" , NULL , T_INT , 0, true , _getfield );
505 def(_fast_lgetfield , "fast_lgetfield" , "bJJ" , NULL , T_LONG , 0, true , _getfield );
506 def(_fast_sgetfield , "fast_sgetfield" , "bJJ" , NULL , T_SHORT , 0, true , _getfield );
507
508 def(_fast_aputfield , "fast_aputfield" , "bJJ" , NULL , T_OBJECT , 0, true , _putfield );
509 def(_fast_qputfield , "fast_qputfield" , "bJJ" , NULL , T_VALUETYPE, 0, true, _putfield );
526 def(_fast_icaload , "fast_icaload" , "bi_" , NULL , T_INT , 0, false, _iload);
527
528 // Faster method invocation.
529 def(_fast_invokevfinal , "fast_invokevfinal" , "bJJ" , NULL , T_ILLEGAL, -1, true, _invokevirtual );
530
531 def(_fast_linearswitch , "fast_linearswitch" , "" , NULL , T_VOID , -1, false, _lookupswitch );
532 def(_fast_binaryswitch , "fast_binaryswitch" , "" , NULL , T_VOID , -1, false, _lookupswitch );
533
534 def(_return_register_finalizer , "return_register_finalizer" , "b" , NULL , T_VOID , 0, true, _return);
535
536 def(_invokehandle , "invokehandle" , "bJJ" , NULL , T_ILLEGAL, -1, true, _invokevirtual );
537
538 def(_fast_aldc , "fast_aldc" , "bj" , NULL , T_OBJECT, 1, true, _ldc );
539 def(_fast_aldc_w , "fast_aldc_w" , "bJJ" , NULL , T_OBJECT, 1, true, _ldc_w );
540
541 def(_nofast_getfield , "nofast_getfield" , "bJJ" , NULL , T_ILLEGAL, 0, true, _getfield );
542 def(_nofast_putfield , "nofast_putfield" , "bJJ" , NULL , T_ILLEGAL, -2, true , _putfield );
543
544 def(_nofast_aload_0 , "nofast_aload_0" , "b" , NULL , T_ILLEGAL, 1, true , _aload_0 );
545 def(_nofast_iload , "nofast_iload" , "bi" , NULL , T_ILLEGAL, 1, false, _iload );
546
547 def(_shouldnotreachhere , "_shouldnotreachhere" , "b" , NULL , T_VOID , 0, false);
548
549 // compare can_trap information for each bytecode with the
550 // can_trap information for the corresponding base bytecode
551 // (if a rewritten bytecode can trap, so must the base bytecode)
552 #ifdef ASSERT
553 { for (int i = 0; i < number_of_codes; i++) {
554 if (is_defined(i)) {
555 Code code = cast(i);
556 Code java = java_code(code);
557 if (can_trap(code) && !can_trap(java))
558 fatal("%s can trap => %s can trap, too", name(code), name(java));
559 }
560 }
561 }
562 #endif
563
564 // initialization successful
565 _is_initialized = true;
|
469 def(_newarray , "newarray" , "bc" , NULL , T_OBJECT , 0, true );
470 def(_anewarray , "anewarray" , "bkk" , NULL , T_OBJECT , 0, true );
471 def(_arraylength , "arraylength" , "b" , NULL , T_VOID , 0, true );
472 def(_athrow , "athrow" , "b" , NULL , T_VOID , -1, true );
473 def(_checkcast , "checkcast" , "bkk" , NULL , T_OBJECT , 0, true );
474 def(_instanceof , "instanceof" , "bkk" , NULL , T_INT , 0, true );
475 def(_monitorenter , "monitorenter" , "b" , NULL , T_VOID , -1, true );
476 def(_monitorexit , "monitorexit" , "b" , NULL , T_VOID , -1, true );
477 def(_wide , "wide" , "" , NULL , T_VOID , 0, false);
478 def(_multianewarray , "multianewarray" , "bkkc" , NULL , T_OBJECT , 1, true );
479 def(_ifnull , "ifnull" , "boo" , NULL , T_VOID , -1, false);
480 def(_ifnonnull , "ifnonnull" , "boo" , NULL , T_VOID , -1, false);
481 def(_goto_w , "goto_w" , "boooo", NULL , T_VOID , 0, false);
482 def(_jsr_w , "jsr_w" , "boooo", NULL , T_INT , 0, false);
483 def(_breakpoint , "breakpoint" , "" , NULL , T_VOID , 0, true);
484 def(_vload , "vload" , "bi" , "wbii" , T_VALUETYPE,1, false);
485 def(_vstore , "vstore" , "bi" , "wbii" , T_VOID , -1, false);
486 def(_vaload , "vaload" , "b" , NULL , T_VALUETYPE, -1, true);
487 def(_vastore , "vastore" , "b" , NULL , T_VOID , -3, true );
488 def(_vreturn , "vreturn" , "b" , NULL , T_VALUETYPE, -1, true);
489 def(_vbox , "vbox" , "bkk" , NULL , T_OBJECT , 0, true );
490 def(_vunbox , "vunbox" , "bkk" , NULL , T_VALUETYPE,0, true );
491 def(_vdefault , "vdefault" , "bkk" , NULL , T_VALUETYPE, 1, true);
492 def(_vwithfield , "vwithfield" , "bJJ" , NULL , T_VALUETYPE, -1, true );
493
494 // JVM bytecodes
495 // bytecode bytecode name format wide f. result tp stk traps std code
496
497 def(_fast_agetfield , "fast_agetfield" , "bJJ" , NULL , T_OBJECT , 0, true , _getfield );
498 def(_fast_qgetfield , "fast_qgetfield" , "bJJ" , NULL , T_VALUETYPE, 0, true, _getfield );
499 def(_fast_bgetfield , "fast_bgetfield" , "bJJ" , NULL , T_INT , 0, true , _getfield );
500 def(_fast_cgetfield , "fast_cgetfield" , "bJJ" , NULL , T_CHAR , 0, true , _getfield );
501 def(_fast_dgetfield , "fast_dgetfield" , "bJJ" , NULL , T_DOUBLE , 0, true , _getfield );
502 def(_fast_fgetfield , "fast_fgetfield" , "bJJ" , NULL , T_FLOAT , 0, true , _getfield );
503 def(_fast_igetfield , "fast_igetfield" , "bJJ" , NULL , T_INT , 0, true , _getfield );
504 def(_fast_lgetfield , "fast_lgetfield" , "bJJ" , NULL , T_LONG , 0, true , _getfield );
505 def(_fast_sgetfield , "fast_sgetfield" , "bJJ" , NULL , T_SHORT , 0, true , _getfield );
506
507 def(_fast_aputfield , "fast_aputfield" , "bJJ" , NULL , T_OBJECT , 0, true , _putfield );
508 def(_fast_qputfield , "fast_qputfield" , "bJJ" , NULL , T_VALUETYPE, 0, true, _putfield );
525 def(_fast_icaload , "fast_icaload" , "bi_" , NULL , T_INT , 0, false, _iload);
526
527 // Faster method invocation.
528 def(_fast_invokevfinal , "fast_invokevfinal" , "bJJ" , NULL , T_ILLEGAL, -1, true, _invokevirtual );
529
530 def(_fast_linearswitch , "fast_linearswitch" , "" , NULL , T_VOID , -1, false, _lookupswitch );
531 def(_fast_binaryswitch , "fast_binaryswitch" , "" , NULL , T_VOID , -1, false, _lookupswitch );
532
533 def(_return_register_finalizer , "return_register_finalizer" , "b" , NULL , T_VOID , 0, true, _return);
534
535 def(_invokehandle , "invokehandle" , "bJJ" , NULL , T_ILLEGAL, -1, true, _invokevirtual );
536
537 def(_fast_aldc , "fast_aldc" , "bj" , NULL , T_OBJECT, 1, true, _ldc );
538 def(_fast_aldc_w , "fast_aldc_w" , "bJJ" , NULL , T_OBJECT, 1, true, _ldc_w );
539
540 def(_nofast_getfield , "nofast_getfield" , "bJJ" , NULL , T_ILLEGAL, 0, true, _getfield );
541 def(_nofast_putfield , "nofast_putfield" , "bJJ" , NULL , T_ILLEGAL, -2, true , _putfield );
542
543 def(_nofast_aload_0 , "nofast_aload_0" , "b" , NULL , T_ILLEGAL, 1, true , _aload_0 );
544 def(_nofast_iload , "nofast_iload" , "bi" , NULL , T_ILLEGAL, 1, false, _iload );
545 def(_vgetfield , "vgetfield" , "bJJ" , NULL , T_ILLEGAL, 0, true , _getfield );
546
547 def(_shouldnotreachhere , "_shouldnotreachhere" , "b" , NULL , T_VOID , 0, false);
548
549 // compare can_trap information for each bytecode with the
550 // can_trap information for the corresponding base bytecode
551 // (if a rewritten bytecode can trap, so must the base bytecode)
552 #ifdef ASSERT
553 { for (int i = 0; i < number_of_codes; i++) {
554 if (is_defined(i)) {
555 Code code = cast(i);
556 Code java = java_code(code);
557 if (can_trap(code) && !can_trap(java))
558 fatal("%s can trap => %s can trap, too", name(code), name(java));
559 }
560 }
561 }
562 #endif
563
564 // initialization successful
565 _is_initialized = true;
|