jdk/src/share/javavm/include/opcodes.list
changeset 1130 e1831d987443
parent 1129 ec4dfac10759
parent 1112 6d909d5803e3
child 1131 be55e8bd2866
--- a/jdk/src/share/javavm/include/opcodes.list	Tue Sep 02 15:18:26 2008 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,301 +0,0 @@
-# Copyright 1994-2007 Sun Microsystems, Inc.  All Rights Reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Sun designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Sun in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-# CA 95054 USA or visit www.sun.com if you need additional information or
-# have any questions.
-#
-
-# Any line that doesn't have a-z in the 1st column is a comment.
-#
-# The first column is the name of the opcodes.  The second column is the
-# total length of the instruction.  We use 99 for tableswitch and
-# tablelookup, which must always be treated as special cases.
-#
-# The third and fourth colum give what the opcode pops off the stack, and
-# what it then pushes back onto the stack
-#    -       <no effect on stack>   
-#    I       integer
-#    L       long integer
-#    F       float
-#    D       double float
-#    A       address [array or object]
-#    O       object only
-#    R       return address (for jsr)
-#    a       integer, array, or object
-#    ?       unknown
-#    [I], [L], [F], [D], [A], [B], [C], [?]
-#            array of integer, long, float, double, address, bytes, 
-#                  chars, or anything
-#    1,2,3,4,+ used by stack duplicating/popping routines.  
-# 
-# 1,2,3,4 represent >>any<< stack type except long or double.  Two numbers
-# separated by a + (in the third column) indicate that the two, together, can
-# be used for a double or long.  (Or they can represent two non-long items).
-#
-# The fifth column provides an *approximate* relative cost of executing the
-# opcode. It is used by the instruction profiler. See profiler.h for
-# blurb.
-
-nop			1 -     -	1 /* nop */
-aconst_null		1 -     A	1 /* push null object */
-iconst_m1	    	1 -     I	1 /* push integer constant -1 */
-iconst_0	    	1 -     I	1 /* push integer constant 0 */
-iconst_1	    	1 -     I	1 /* push integer constant 1 */
-iconst_2	    	1 -     I	1 /* push integer constant 2 */
-iconst_3	    	1 -     I	1 /* push integer constant 3 */
-iconst_4	    	1 -     I	1 /* push integer constant 4 */
-iconst_5	    	1 -     I	1 /* push integer constant 5 */
-lconst_0	    	1 -     L	1 /* push long 0L */
-lconst_1	    	1 -     L	1 /* push long 1L */
-fconst_0	    	1 -     F	1 /* push float constant 0.0 */
-fconst_1	    	1 -     F	1 /* push float constant 1.0 */
-fconst_2	    	1 -     F	1 /* push float constant 2.0 */
-dconst_0	    	1 -     D	1 /* push double float constant 0.0d */
-dconst_1	    	1 -     D	1 /* push double float constant 1.0d */
-bipush		    	2 -     I	1 /* push byte-sized value */
-sipush		    	3 -     I	1 /* push two-byte value */
-ldc                	2 -     ?      	1 /* load a const from constant table */
-ldc_w	    	    	3 -     ?	1
-ldc2_w	    	    	3 -     ?	1 /* load a 2-word constant . . . */
-iload		    	2 -     I	1 /* load local integer variable */
-lload		    	2 -     L	1 /* load local long variable */
-fload		    	2 -     F	1 /* load local floating variable */
-dload		    	2 -     D	1 /* load local double variable */
-aload		    	2 -     A	1 /* load local object variable */
-iload_0		    	1 -     I	1 /* load local integer variable #0 */
-iload_1		    	1 -     I	1 /* load local integer variable #1 */
-iload_2		    	1 -     I	1 /* load local integer variable #2 */
-iload_3		    	1 -     I	1 /* load local integer variable #3 */
-lload_0		    	1 -     L	1 /* load local long variable #0 */
-lload_1		    	1 -     L	1 /* load local long variable #1 */
-lload_2		    	1 -     L	1 /* load local long variable #2 */
-lload_3		    	1 -     L	1 /* load local long variable #3 */
-fload_0		    	1 -     F	1 /* load local float variable #0 */
-fload_1		    	1 -     F	1 /* load local float variable #1 */
-fload_2		    	1 -     F	1 /* load local float variable #2 */
-fload_3		    	1 -     F	1 /* load local float variable #3 */
-dload_0		    	1 -     D	1 /* load lcl double float variable #0 */
-dload_1		    	1 -     D	1 /* load lcl double float variable #1 */
-dload_2		    	1 -     D	1 /* load lcl double float variable #2 */
-dload_3		    	1 -     D	1 /* load lcl double float variable #3 */
-aload_0		    	1 -     A	1 /* load local object variable #0 */
-aload_1		    	1 -     A	1 /* load local object variable #1 */
-aload_2		    	1 -     A	1 /* load local object variable #2 */
-aload_3		    	1 -     A	1 /* load local object variable #3 */
-iaload		    	1 [I]I  I	1 /* load from array of integer */
-laload		    	1 [L]I  L	1 /* load from array of long */
-faload		    	1 [F]I  F	1 /* load from array of float */
-daload		    	1 [D]I  D	1 /* load from array of double */
-aaload		    	1 [A]I  A	1 /* load from array of object */
-baload		    	1 [B]I  I	1 /* load from array of (signed) bytes */
-caload		    	1 [C]I  I	1 /* load from array of chars */
-saload		    	1 [S]I  I	1 /* load from array of (signed) shorts */
-istore		    	2 I     -	1 /* store local integer variable */
-lstore		    	2 L     -	1 /* store local long variable */
-fstore		    	2 F     -	1 /* store local float variable */
-dstore		    	2 D     -	1 /* store local double variable */
-astore		    	2 A     -	1 /* store local object variable */
-istore_0	    	1 I     -	1 /* store local integer variable #0 */
-istore_1	    	1 I     -	1 /* store local integer variable #1 */
-istore_2	    	1 I     -	1 /* store local integer variable #2 */
-istore_3	    	1 I     -	1 /* store local integer variable #3 */
-lstore_0	    	1 L     -	1 /* store local long variable #0 */
-lstore_1	    	1 L     -	1 /* store local long variable #1 */
-lstore_2	    	1 L     -	1 /* store local long variable #2 */
-lstore_3	    	1 L     -	1 /* store local long variable #3 */
-fstore_0	    	1 F     -	1 /* store local float variable #0 */
-fstore_1	    	1 F     -	1 /* store local float variable #1 */
-fstore_2	    	1 F     -	1 /* store local float variable #2 */
-fstore_3	    	1 F     -	1 /* store local float variable #3 */
-dstore_0	    	1 D     -	1 /* store lcl double float variable #0 */
-dstore_1	    	1 D     -	1 /* store lcl double float variable #1 */
-dstore_2	    	1 D     -	1 /* store lcl double float variable #2 */
-dstore_3	    	1 D     -	1 /* store lcl double float variable #3 */
-astore_0	    	1 A     -	1 /* store local object variable #0 */
-astore_1	    	1 A     -	1 /* store local object variable #1 */
-astore_2	    	1 A     -	1 /* store local object variable #2 */
-astore_3	    	1 A     -	1 /* store local object variable #3 */
-iastore		    	1 [I]II -	1 /* store into array of int */
-lastore		    	1 [L]IL -	1 /* store into array of long */
-fastore		    	1 [F]IF -	1 /* store into array of float */
-dastore		    	1 [D]ID -	1 /* store into array of double float  */
-aastore		    	1 [A]IA -	1 /* store into array of object */
-bastore		    	1 [B]II -	1 /* store into array of (signed) bytes */
-castore		    	1 [C]II -	1 /* store into array of chars */
-sastore		    	1 [S]II -	1 /* store into array of (signed) shorts*/
-pop		    	1 1     -	1 /* pop top element */
-pop2		    	1 2+1   -	1 /* pop top two elements */
-dup		    	1 1     11	1 /* dup top element */
-dup_x1		    	1 21    121	1 /* dup top element. Skip one */
-dup_x2		    	1 3+21  1321	1 /* dup top element. Skip two */
-dup2		    	1 2+1   2121	1 /* dup top two elements.  */
-dup2_x1		    	1 32+1  21321	1 /* dup top two elements.  Skip one */
-dup2_x2		    	1 4+32+1 214321	1 /* dup top two elements.  Skip two */
-swap                	1 21    12   	1 /* swap top two elements of stack. */
-iadd		    	1 II    I	1 /* integer add */
-ladd		    	1 LL    L	1 /* long add */
-fadd		    	1 FF    F	1 /* floating add */
-dadd		    	1 DD    D	1 /* double float add */
-isub		    	1 II    I	1 /* integer subtract */
-lsub		    	1 LL    L	1 /* long subtract */
-fsub		    	1 FF    F	1 /* floating subtract */
-dsub		    	1 DD    D	1 /* floating double subtract */
-imul		    	1 II    I	1 /* integer multiply */
-lmul		    	1 LL    L	1 /* long multiply */
-fmul		    	1 FF    F	1 /* floating multiply */
-dmul		    	1 DD    D	1 /* double float multiply */
-idiv		    	1 II    I	1 /* integer divide */
-ldiv		    	1 LL    L	1 /* long divide */
-fdiv		    	1 FF    F	1 /* floating divide */
-ddiv		    	1 DD    D	1 /* double float divide */
-irem		    	1 II    I	1 /* integer mod */
-lrem		    	1 LL    L	1 /* long mod */
-frem		    	1 FF    F	1 /* floating mod */
-drem		    	1 DD    D	1 /* double float mod */
-ineg		    	1 I     I	1 /* integer negate */
-lneg		    	1 L     L	1 /* long negate */
-fneg		    	1 F     F	1 /* floating negate */
-dneg		    	1 D     D	1 /* double float negate */
-ishl		    	1 II    I	1 /* shift left */
-lshl		    	1 LI    L	1 /* long shift left */
-ishr		    	1 II    I	1 /* shift right */
-lshr		    	1 LI    L	1 /* long shift right */
-iushr		    	1 II    I	1 /* unsigned shift right */
-lushr		    	1 LI    L	1 /* long unsigned shift right */
-iand		    	1 II    I	1 /* boolean and */
-land		    	1 LL    L	1 /* long boolean and */
-ior		    	1 II    I	1 /* boolean or */
-lor		    	1 LL    L	1 /* long boolean or */
-ixor		    	1 II    I	1 /* boolean xor */
-lxor		    	1 LL    L	1 /* long boolean xor */
-iinc		    	3 -     -	1 /* increment lcl variable by constant */
-i2l		    	1 I     L	1 /* integer to long */
-i2f		    	1 I     F	1 /* integer to float */
-i2d		    	1 I     D	1 /* integer to double */
-l2i		    	1 L     I	1 /* long to integer */
-l2f		    	1 L     F	1 /* long to float */
-l2d		    	1 L     D	1 /* long to double */
-f2i		    	1 F     I	1 /* float to integer */
-f2l		    	1 F     L	1 /* float to long */
-f2d		    	1 F     D	1 /* float to double */
-d2i		    	1 D     I	1 /* double to integer */
-d2l		    	1 D     L	1 /* double to long */
-d2f		    	1 D     F	1 /* double to float */
-i2b		    	1 I     I	1 /* integer to byte */
-i2c		    	1 I     I	1 /* integer to character */
-i2s	   	    	1 I     I     	1 /* integer to signed short */
-lcmp		    	1 LL    I	1 /* long compare */
-fcmpl		    	1 FF    I	1 /* float compare.  -1 on incomparable */
-fcmpg		    	1 FF    I	1 /* float compare.  1 on incomparable */
-dcmpl		    	1 DD    I	1 /* dbl floating cmp.  -1 on incomp */
-dcmpg		    	1 DD    I	1 /* dbl floating cmp.  1 on incomp */
-ifeq		    	3 I     -	1 /* goto if equal */
-ifne		    	3 I     -	1 /* goto if not equal */
-iflt		    	3 I     -	1 /* goto if less than */
-ifge		    	3 I     -	1 /* goto if greater than or equal */
-ifgt		    	3 I     -	1 /* goto if greater than */
-ifle		    	3 I     -	1 /* goto if less than or equal */
-if_icmpeq	    	3 II    -	1 /* compare top two elements of stack */
-if_icmpne	    	3 II    -	1 /* compare top two elements of stack */
-if_icmplt	    	3 II    -	1 /* compare top two elements of stack */
-if_icmpge	    	3 II    -	1 /* compare top two elements of stack */
-if_icmpgt	    	3 II    -	1 /* compare top two elements of stack */
-if_icmple	    	3 II    -	1 /* compare top two elements of stack */
-if_acmpeq	    	3 AA    -	1 /* compare top two objects of stack */
-if_acmpne	    	3 AA    -	1 /* compare top two objects of stack */
-goto		    	3 -     -	1 /* unconditional goto */
-jsr		    	3 -     R	1 /* jump subroutine */
-ret		    	2 -     -	1 /* return from subroutine */
-tableswitch	       99 I     -	1 /* goto (case) */
-lookupswitch	       99 I     -	1 /* goto (case) */
-ireturn		    	1 I     -	1 /* return integer from procedure */
-lreturn		    	1 L     -	1 /* return long from procedure */
-freturn		    	1 F     -	1 /* return float from procedure */
-dreturn		    	1 D     -	1 /* return double from procedure */
-areturn		    	1 A     -	1 /* return object from procedure */
-return		    	1 -     -	1 /* return (void) from procedure */
-getstatic       	3 -     ?	1 /* get static field value. */
-putstatic       	3 ?     -	1 /* assign static field value */
-getfield        	3 A     ?	1 /* get field value from object. */
-putfield        	3 ?     -	1 /* assign field value to object. */
-invokevirtual   	3 ?     ?      	1 /* call method, based on object. */
-invokespecial    	3 ?     ?      	1 /* call method, not based on object. */
-invokestatic       	3 ?     ?      	1 /* call a static method. */
-invokeinterface    	5 ?     ?      	1 /* call an interface method */
-xxxunusedxxx            0 ?     ?       1 /* was newfromname */        
-new                 	3 -     A     	1 /* Create a new object */
-newarray            	2 I     A     	1 /* Create a new array of non-objects*/
-anewarray           	3 I     A     	1 /* Create a new array of objects */
-arraylength	    	1 [?]   I	1 /* get length of array */
-athrow		    	1 O     -	1 /* throw an exception */
-checkcast           	3 A     A     	1 /* error if object not of given type */
-instanceof          	3 A     I     	1 /* is object of given type? */
-monitorenter	    	1 A     -	1 /* enter a monitored region of code */
-monitorexit	    	1 A     -	1 /* exit a monitored region of code */
-wide	        	0 -     -	1 /* prefix operation.   */
-multianewarray          4 ?     A       1 /* create multidimensional array */
-ifnull		    	3 A     -	1 /* goto if null */
-ifnonnull	    	3 A     -	1 /* goto if not null */
-
-# The following instructions are "long" versions.  They allow access to
-# variables with index greater than 255.
-
-goto_w		    	5 -     -	1 /* unconditional goto.  4byte offset */
-jsr_w		    	5 -     R	1 /* jump subroutine.  4byte offset */
-
-breakpoint	    	1 -     -	1 /* call breakpoint handler */
-
-# The compiler will not generate any of the following instructions.  That
-# are created by the interpreter from the non _quick versions of the
-# instructions.  
-
-ldc_quick 	     	2 -     ?	1
-ldc_w_quick      	3 -     ?	1
-ldc2_w_quick     	3 -     ?	1
-getfield_quick  	3 A     ?	1
-putfield_quick  	3 ?     -	1
-getfield2_quick        	3 A     ?	1
-putfield2_quick 	3 ?     -	1
-getstatic_quick 	3 -     ?	1
-putstatic_quick 	3 ?     -	1
-getstatic2_quick 	3 -     ?	1
-putstatic2_quick 	3 ?     _	1
-invokevirtual_quick 	3 ?     ?	1
-invokenonvirtual_quick  3 ?     ?	1
-invokesuper_quick       3 ?     ?	1
-invokestatic_quick 	3 ?     ?	1
-invokeinterface_quick 	5 ?     ?	1
-invokevirtualobject_quick 3 ?     ?	1
-invokeignored_quick     3 ?     ?	1
-new_quick          	3 -     A	1
-anewarray_quick    	3 I     A	1
-multianewarray_quick    4 ?     A	1
-checkcast_quick    	3 A     A	1
-instanceof_quick   	3 A     I	1
-
-# The following are generated when the offset is bigger than 255
-
-invokevirtual_quick_w   3 ?     ?	1
-getfield_quick_w  	3 A     ?	1
-putfield_quick_w  	3 ?     -	1
-
-# used for simplification
-
-nonnull_quick           1 A     -       1 /* throw exception if stacktop null */