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