OpenJDK / jdk / jdk
changeset 55496:8e0ae3830fca
8224157: BCEL: update to version 6.3.1
Reviewed-by: dfuchs, lancea
line wrap: on
line diff
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/Const.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/Const.java Wed Jun 26 05:49:59 2019 +0000 @@ -25,3503 +25,2362 @@ /** * Constants for the project, mostly defined in the JVM specification. * - * @version $Id: Const.java 1748987 2016-06-18 12:36:47Z sebb $ + * @version $Id$ * @since 6.0 (intended to replace the Constants interface) */ public final class Const { - /** - * Java class file format Magic number (0xCAFEBABE) - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.1-200-A"> - * The ClassFile Structure in The Java Virtual Machine Specification</a> - */ - public static final int JVM_CLASSFILE_MAGIC = 0xCAFEBABE; + /** + * Java class file format Magic number (0xCAFEBABE) + * + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.1-200-A"> + * The ClassFile Structure in The Java Virtual Machine Specification</a> + */ + public static final int JVM_CLASSFILE_MAGIC = 0xCAFEBABE; - /** - * Major version number of class files for Java 1.1. - * - * @see #MINOR_1_1 + /** Major version number of class files for Java 1.1. + * @see #MINOR_1_1 + * */ + public static final short MAJOR_1_1 = 45; + + /** Minor version number of class files for Java 1.1. + * @see #MAJOR_1_1 + * */ + public static final short MINOR_1_1 = 3; + + /** Major version number of class files for Java 1.2. + * @see #MINOR_1_2 + * */ + public static final short MAJOR_1_2 = 46; + + /** Minor version number of class files for Java 1.2. + * @see #MAJOR_1_2 + * */ + public static final short MINOR_1_2 = 0; + + /** Major version number of class files for Java 1.2. + * @see #MINOR_1_2 + * */ + public static final short MAJOR_1_3 = 47; + + /** Minor version number of class files for Java 1.3. + * @see #MAJOR_1_3 + * */ + public static final short MINOR_1_3 = 0; + + /** Major version number of class files for Java 1.3. + * @see #MINOR_1_3 + * */ + public static final short MAJOR_1_4 = 48; + + /** Minor version number of class files for Java 1.4. + * @see #MAJOR_1_4 + * */ + public static final short MINOR_1_4 = 0; + + /** Major version number of class files for Java 1.4. + * @see #MINOR_1_4 + * */ + public static final short MAJOR_1_5 = 49; + + /** Minor version number of class files for Java 1.5. + * @see #MAJOR_1_5 + * */ + public static final short MINOR_1_5 = 0; + + /** Major version number of class files for Java 1.6. + * @see #MINOR_1_6 + * */ + public static final short MAJOR_1_6 = 50; + + /** Minor version number of class files for Java 1.6. + * @see #MAJOR_1_6 + * */ + public static final short MINOR_1_6 = 0; + + /** Major version number of class files for Java 1.7. + * @see #MINOR_1_7 + * */ + public static final short MAJOR_1_7 = 51; + + /** Minor version number of class files for Java 1.7. + * @see #MAJOR_1_7 + * */ + public static final short MINOR_1_7 = 0; + + /** Major version number of class files for Java 1.8. + * @see #MINOR_1_8 + * */ + public static final short MAJOR_1_8 = 52; + + /** Minor version number of class files for Java 1.8. + * @see #MAJOR_1_8 + * */ + public static final short MINOR_1_8 = 0; + + /** Major version number of class files for Java 9. + * @see #MINOR_9 + * */ + public static final short MAJOR_9 = 53; + + /** Minor version number of class files for Java 9. + * @see #MAJOR_9 + * */ + public static final short MINOR_9 = 0; + + /** + * @deprecated Use {@link #MAJOR_9} instead + */ + @Deprecated + public static final short MAJOR_1_9 = MAJOR_9; + + /** + * @deprecated Use {@link #MINOR_9} instead + */ + @Deprecated + public static final short MINOR_1_9 = MINOR_9; + + /** Major version number of class files for Java 10. + * @see #MINOR_10 + * */ + public static final short MAJOR_10 = 54; + + /** Minor version number of class files for Java 10. + * @see #MAJOR_10 + * */ + public static final short MINOR_10 = 0; + + /** Major version number of class files for Java 11. + * @see #MINOR_11 + * */ + public static final short MAJOR_11 = 55; + + /** Minor version number of class files for Java 11. + * @see #MAJOR_11 + * */ + public static final short MINOR_11 = 0; + + /** Major version number of class files for Java 12. + * @see #MINOR_12 + * */ + public static final short MAJOR_12 = 56; + + /** Minor version number of class files for Java 12. + * @see #MAJOR_12 + * */ + public static final short MINOR_12 = 0; + + /** Major version number of class files for Java 13. + * @see #MINOR_13 + * */ + public static final short MAJOR_13 = 57; + + /** Minor version number of class files for Java 13. + * @see #MAJOR_13 + * */ + public static final short MINOR_13 = 0; + + /** Default major version number. Class file is for Java 1.1. + * @see #MAJOR_1_1 + * */ + public static final short MAJOR = MAJOR_1_1; + + /** Default major version number. Class file is for Java 1.1. + * @see #MAJOR_1_1 + * */ + public static final short MINOR = MINOR_1_1; + + /** Maximum value for an unsigned short. + */ + public static final int MAX_SHORT = 65535; // 2^16 - 1 + + /** Maximum value for an unsigned byte. + */ + public static final int MAX_BYTE = 255; // 2^8 - 1 + + /** One of the access flags for fields, methods, or classes. + * @see <a href='http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.5'> + * Flag definitions for Fields in the Java Virtual Machine Specification (Java SE 8 Edition).</a> + * @see <a href='http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.6'> + * Flag definitions for Methods in the Java Virtual Machine Specification (Java SE 8 Edition).</a> + * @see <a href='http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.6-300-D.1-D.1'> + * Flag definitions for Classes in the Java Virtual Machine Specification (Java SE 8 Edition).</a> + */ + public static final short ACC_PUBLIC = 0x0001; + + /** One of the access flags for fields, methods, or classes. + * @see #ACC_PUBLIC + */ + public static final short ACC_PRIVATE = 0x0002; + + /** One of the access flags for fields, methods, or classes. + * @see #ACC_PUBLIC + */ + public static final short ACC_PROTECTED = 0x0004; + + /** One of the access flags for fields, methods, or classes. + * @see #ACC_PUBLIC + */ + public static final short ACC_STATIC = 0x0008; + + /** One of the access flags for fields, methods, or classes. + * @see #ACC_PUBLIC + */ + public static final short ACC_FINAL = 0x0010; + + /** One of the access flags for fields, methods, or classes. + * @see #ACC_PUBLIC + */ + public static final short ACC_SYNCHRONIZED = 0x0020; + + /** One of the access flags for fields, methods, or classes. + * @see #ACC_PUBLIC + */ + public static final short ACC_VOLATILE = 0x0040; + + /** One of the access flags for fields, methods, or classes. + * @see #ACC_PUBLIC + */ + public static final short ACC_BRIDGE = 0x0040; + + /** One of the access flags for fields, methods, or classes. + * @see #ACC_PUBLIC + */ + public static final short ACC_TRANSIENT = 0x0080; + + /** One of the access flags for fields, methods, or classes. + * @see #ACC_PUBLIC + */ + public static final short ACC_VARARGS = 0x0080; + + /** One of the access flags for fields, methods, or classes. + * @see #ACC_PUBLIC + */ + public static final short ACC_NATIVE = 0x0100; + + /** One of the access flags for fields, methods, or classes. + * @see #ACC_PUBLIC + */ + public static final short ACC_INTERFACE = 0x0200; + + /** One of the access flags for fields, methods, or classes. + * @see #ACC_PUBLIC + */ + public static final short ACC_ABSTRACT = 0x0400; + + /** One of the access flags for fields, methods, or classes. + * @see #ACC_PUBLIC + */ + public static final short ACC_STRICT = 0x0800; + + /** One of the access flags for fields, methods, or classes. + * @see #ACC_PUBLIC + */ + public static final short ACC_SYNTHETIC = 0x1000; + + /** One of the access flags for fields, methods, or classes. + * @see #ACC_PUBLIC + */ + public static final short ACC_ANNOTATION = 0x2000; + + /** One of the access flags for fields, methods, or classes. + * @see #ACC_PUBLIC + */ + public static final short ACC_ENUM = 0x4000; + + /** One of the access flags for fields, methods, or classes. + * @see #ACC_PUBLIC + */ + public static final short ACC_MANDATED = (short) 0x8000; + + // Applies to classes compiled by new compilers only + /** One of the access flags for fields, methods, or classes. + * @see #ACC_PUBLIC + */ + public static final short ACC_SUPER = 0x0020; + + /** One of the access flags for fields, methods, or classes. + * @see #ACC_PUBLIC + */ + public static final short MAX_ACC_FLAG = ACC_ENUM; + + /** + * The names of the access flags. + */ + private static final String[] ACCESS_NAMES = { + "public", "private", "protected", "static", "final", "synchronized", + "volatile", "transient", "native", "interface", "abstract", "strictfp", + "synthetic", "annotation", "enum" + }; + + /** @since 6.0 */ + public static final int ACCESS_NAMES_LENGTH = ACCESS_NAMES.length; + + /** + * @param index + * @return the ACCESS_NAMES entry at the given index + * @since 6.0 + */ + public static String getAccessName(final int index) { + return ACCESS_NAMES[index]; + } + + /* + * The description of the constant pool is at: + * http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4 + * References below are to the individual sections + */ + + /** + * Marks a constant pool entry as type UTF-8. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.7"> + * The Constant Pool in The Java Virtual Machine Specification</a> + */ + public static final byte CONSTANT_Utf8 = 1; + + /** + * Marks a constant pool entry as type Integer. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.4"> + * The Constant Pool in The Java Virtual Machine Specification</a> + */ + public static final byte CONSTANT_Integer = 3; + + /** + * Marks a constant pool entry as type Float. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.4"> + * The Constant Pool in The Java Virtual Machine Specification</a> + */ + public static final byte CONSTANT_Float = 4; + + /** + * Marks a constant pool entry as type Long. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.5"> + * The Constant Pool in The Java Virtual Machine Specification</a> + */ + public static final byte CONSTANT_Long = 5; + + /** + * Marks a constant pool entry as type Double. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.5"> + * The Constant Pool in The Java Virtual Machine Specification</a> + */ + public static final byte CONSTANT_Double = 6; + + /** + * Marks a constant pool entry as a Class + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.1"> + * The Constant Pool in The Java Virtual Machine Specification</a> + */ + public static final byte CONSTANT_Class = 7; + + /** + * Marks a constant pool entry as a Field Reference. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.2"> + * The Constant Pool in The Java Virtual Machine Specification</a> + */ + public static final byte CONSTANT_Fieldref = 9; + + /** + * Marks a constant pool entry as type String + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.3"> + * The Constant Pool in The Java Virtual Machine Specification</a> + */ + public static final byte CONSTANT_String = 8; + + /** Marks a constant pool entry as a Method Reference. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.2"> + * The Constant Pool in The Java Virtual Machine Specification</a> */ + public static final byte CONSTANT_Methodref = 10; + + /** + * Marks a constant pool entry as an Interface Method Reference. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.2"> + * The Constant Pool in The Java Virtual Machine Specification</a> + */ + public static final byte CONSTANT_InterfaceMethodref = 11; + + /** Marks a constant pool entry as a name and type. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.6"> + * The Constant Pool in The Java Virtual Machine Specification</a> */ + public static final byte CONSTANT_NameAndType = 12; + + /** + * Marks a constant pool entry as a Method Handle. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.8"> + * The Constant Pool in The Java Virtual Machine Specification</a> + */ + public static final byte CONSTANT_MethodHandle = 15; + + /** + * Marks a constant pool entry as a Method Type. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.9"> + * The Constant Pool in The Java Virtual Machine Specification</a> + */ + public static final byte CONSTANT_MethodType = 16; + + /** + * Marks a constant pool entry as dynamically computed. + * @see <a href="https://bugs.openjdk.java.net/secure/attachment/74618/constant-dynamic.html"> + * Change request for JEP 309</a> + * @since 6.3 + */ + public static final byte CONSTANT_Dynamic = 17; + + /** + * Marks a constant pool entry as an Invoke Dynamic + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.10"> + * The Constant Pool in The Java Virtual Machine Specification</a> + */ + public static final byte CONSTANT_InvokeDynamic = 18; + + /** + * Marks a constant pool entry as a Module Reference. + * @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.4.11"> + * The Constant Pool in The Java Virtual Machine Specification</a> + * @since 6.1 + */ + public static final byte CONSTANT_Module = 19; + + /** + * Marks a constant pool entry as a Package Reference. + * @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.4.12"> + * The Constant Pool in The Java Virtual Machine Specification</a> + * @since 6.1 + */ + public static final byte CONSTANT_Package = 20; + + /** + * The names of the types of entries in a constant pool. + * Use getConstantName instead + */ + private static final String[] CONSTANT_NAMES = { + "", "CONSTANT_Utf8", "", "CONSTANT_Integer", + "CONSTANT_Float", "CONSTANT_Long", "CONSTANT_Double", + "CONSTANT_Class", "CONSTANT_String", "CONSTANT_Fieldref", + "CONSTANT_Methodref", "CONSTANT_InterfaceMethodref", + "CONSTANT_NameAndType", "", "", "CONSTANT_MethodHandle", + "CONSTANT_MethodType", "CONSTANT_Dynamic", "CONSTANT_InvokeDynamic", + "CONSTANT_Module", "CONSTANT_Package"}; + + /** * - */ - public static final short MAJOR_1_1 = 45; + * @param index + * @return the CONSTANT_NAMES entry at the given index + * @since 6.0 + */ + public static String getConstantName(final int index) { + return CONSTANT_NAMES[index]; + } - /** - * Minor version number of class files for Java 1.1. - * - * @see #MAJOR_1_1 + /** The name of the static initializer, also called "class + * initialization method" or "interface initialization + * method". This is "<clinit>". + */ + public static final String STATIC_INITIALIZER_NAME = "<clinit>"; + + /** The name of every constructor method in a class, also called + * "instance initialization method". This is "<init>". + */ + public static final String CONSTRUCTOR_NAME = "<init>"; + + /** + * The names of the interfaces implemented by arrays + */ + private static final String[] INTERFACES_IMPLEMENTED_BY_ARRAYS = {"java.lang.Cloneable", "java.io.Serializable"}; + + /** + * @since 6.0 + */ + public static Iterable<String> getInterfacesImplementedByArrays() { + return Collections.unmodifiableList(Arrays.asList(INTERFACES_IMPLEMENTED_BY_ARRAYS)); + } + + /** + * Maximum Constant Pool entries. + * One of the limitations of the Java Virtual Machine. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.11-100-A"> + * The Java Virtual Machine Specification, Java SE 8 Edition, page 330, chapter 4.11.</a> + */ + public static final int MAX_CP_ENTRIES = 65535; + + /** + * Maximum code size (plus one; the code size must be LESS than this) + * One of the limitations of the Java Virtual Machine. + * Note vmspec2 page 152 ("Limitations") says: + * "The amount of code per non-native, non-abstract method is limited to 65536 bytes by + * the sizes of the indices in the exception_table of the Code attribute (4.7.3), + * in the LineNumberTable attribute (4.7.8), and in the LocalVariableTable attribute (4.7.9)." + * However this should be taken as an upper limit rather than the defined maximum. + * On page 134 (4.8.1 Static Constants) of the same spec, it says: + * "The value of the code_length item must be less than 65536." + * The entry in the Limitations section has been removed from later versions of the spec; + * it is not present in the Java SE 8 edition. * - */ - public static final short MINOR_1_1 = 3; + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.3-300-E"> + * The Java Virtual Machine Specification, Java SE 8 Edition, page 104, chapter 4.7.3</a> + */ + public static final int MAX_CODE_SIZE = 65536; //bytes - /** - * Major version number of class files for Java 1.2. - * - * @see #MINOR_1_2 + /** + * The maximum number of dimensions in an array ({@value}). + * One of the limitations of the Java Virtual Machine. * - */ - public static final short MAJOR_1_2 = 46; + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.3.2-150"> + * Field Descriptors in The Java Virtual Machine Specification</a> + */ + public static final int MAX_ARRAY_DIMENSIONS = 255; - /** - * Minor version number of class files for Java 1.2. - * - * @see #MAJOR_1_2 + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.nop"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short NOP = 0; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aconst_null"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ACONST_NULL = 1; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ICONST_M1 = 2; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ICONST_0 = 3; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ICONST_1 = 4; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ICONST_2 = 5; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ICONST_3 = 6; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ICONST_4 = 7; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ICONST_5 = 8; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lconst_l"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LCONST_0 = 9; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lconst_l"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LCONST_1 = 10; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fconst_f"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FCONST_0 = 11; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fconst_f"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FCONST_1 = 12; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fconst_f"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FCONST_2 = 13; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dconst_d"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DCONST_0 = 14; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dconst_d"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DCONST_1 = 15; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.bipush"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short BIPUSH = 16; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.sipush"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short SIPUSH = 17; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldc"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LDC = 18; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldc_w"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LDC_W = 19; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldc2_w"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LDC2_W = 20; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ILOAD = 21; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LLOAD = 22; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FLOAD = 23; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DLOAD = 24; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ALOAD = 25; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ILOAD_0 = 26; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ILOAD_1 = 27; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ILOAD_2 = 28; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ILOAD_3 = 29; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LLOAD_0 = 30; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LLOAD_1 = 31; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LLOAD_2 = 32; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LLOAD_3 = 33; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FLOAD_0 = 34; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FLOAD_1 = 35; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FLOAD_2 = 36; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FLOAD_3 = 37; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DLOAD_0 = 38; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DLOAD_1 = 39; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DLOAD_2 = 40; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DLOAD_3 = 41; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ALOAD_0 = 42; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ALOAD_1 = 43; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ALOAD_2 = 44; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ALOAD_3 = 45; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iaload"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IALOAD = 46; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.laload"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LALOAD = 47; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.faload"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FALOAD = 48; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.daload"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DALOAD = 49; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aaload"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short AALOAD = 50; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.baload"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short BALOAD = 51; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.caload"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short CALOAD = 52; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.saload"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short SALOAD = 53; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ISTORE = 54; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LSTORE = 55; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FSTORE = 56; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DSTORE = 57; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ASTORE = 58; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ISTORE_0 = 59; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ISTORE_1 = 60; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ISTORE_2 = 61; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ISTORE_3 = 62; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LSTORE_0 = 63; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LSTORE_1 = 64; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LSTORE_2 = 65; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LSTORE_3 = 66; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FSTORE_0 = 67; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FSTORE_1 = 68; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FSTORE_2 = 69; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FSTORE_3 = 70; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DSTORE_0 = 71; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DSTORE_1 = 72; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DSTORE_2 = 73; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DSTORE_3 = 74; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ASTORE_0 = 75; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ASTORE_1 = 76; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ASTORE_2 = 77; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ASTORE_3 = 78; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iastore"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IASTORE = 79; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lastore"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LASTORE = 80; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fastore"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FASTORE = 81; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dastore"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DASTORE = 82; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aastore"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short AASTORE = 83; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.bastore"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short BASTORE = 84; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.castore"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short CASTORE = 85; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.sastore"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short SASTORE = 86; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.pop"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short POP = 87; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.pop2"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short POP2 = 88; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DUP = 89; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup_x1"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DUP_X1 = 90; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup_x2"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DUP_X2 = 91; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup2"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DUP2 = 92; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup2_x1"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DUP2_X1 = 93; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup2_x2"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DUP2_X2 = 94; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.swap"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short SWAP = 95; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iadd"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IADD = 96; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ladd"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LADD = 97; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fadd"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FADD = 98; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dadd"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DADD = 99; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.isub"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ISUB = 100; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lsub"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LSUB = 101; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fsub"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FSUB = 102; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dsub"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DSUB = 103; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.imul"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IMUL = 104; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lmul"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LMUL = 105; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fmul"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FMUL = 106; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dmul"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DMUL = 107; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.idiv"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IDIV = 108; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldiv"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LDIV = 109; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fdiv"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FDIV = 110; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ddiv"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DDIV = 111; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.irem"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IREM = 112; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lrem"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LREM = 113; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.frem"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FREM = 114; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.drem"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DREM = 115; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ineg"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short INEG = 116; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lneg"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LNEG = 117; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fneg"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FNEG = 118; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dneg"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DNEG = 119; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ishl"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ISHL = 120; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lshl"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LSHL = 121; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ishr"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ISHR = 122; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lshr"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LSHR = 123; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iushr"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IUSHR = 124; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lushr"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LUSHR = 125; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iand"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IAND = 126; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.land"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LAND = 127; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ior"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IOR = 128; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lor"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LOR = 129; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ixor"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IXOR = 130; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lxor"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LXOR = 131; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iinc"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IINC = 132; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2l"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short I2L = 133; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2f"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short I2F = 134; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2d"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short I2D = 135; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.l2i"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short L2I = 136; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.l2f"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short L2F = 137; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.l2d"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short L2D = 138; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.f2i"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short F2I = 139; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.f2l"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short F2L = 140; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.f2d"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short F2D = 141; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.d2i"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short D2I = 142; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.d2l"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short D2L = 143; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.d2f"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short D2F = 144; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2b"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short I2B = 145; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short INT2BYTE = 145; // Old notation + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2c"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short I2C = 146; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short INT2CHAR = 146; // Old notation + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2s"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short I2S = 147; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short INT2SHORT = 147; // Old notation + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lcmp"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LCMP = 148; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fcmpl"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FCMPL = 149; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fcmpg"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FCMPG = 150; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dcmpl"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DCMPL = 151; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dcmpg"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DCMPG = 152; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifeq"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IFEQ = 153; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifne"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IFNE = 154; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iflt"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IFLT = 155; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifge"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IFGE = 156; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifgt"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IFGT = 157; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifle"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IFLE = 158; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IF_ICMPEQ = 159; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IF_ICMPNE = 160; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IF_ICMPLT = 161; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IF_ICMPGE = 162; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IF_ICMPGT = 163; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IF_ICMPLE = 164; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_acmp_cond"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IF_ACMPEQ = 165; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_acmp_cond"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IF_ACMPNE = 166; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.goto"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short GOTO = 167; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.jsr"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short JSR = 168; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ret"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short RET = 169; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.tableswitch"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short TABLESWITCH = 170; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lookupswitch"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LOOKUPSWITCH = 171; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ireturn"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IRETURN = 172; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lreturn"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short LRETURN = 173; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.freturn"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short FRETURN = 174; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dreturn"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short DRETURN = 175; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.areturn"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ARETURN = 176; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.return"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short RETURN = 177; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.getstatic"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short GETSTATIC = 178; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.putstatic"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short PUTSTATIC = 179; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.getfield"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short GETFIELD = 180; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.putfield"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short PUTFIELD = 181; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokevirtual"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short INVOKEVIRTUAL = 182; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokespecial"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short INVOKESPECIAL = 183; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short INVOKENONVIRTUAL = 183; // Old name in JDK 1.0 + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokestatic"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short INVOKESTATIC = 184; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokeinterface"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short INVOKEINTERFACE = 185; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokedynamic"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short INVOKEDYNAMIC = 186; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.new"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short NEW = 187; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.newarray"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short NEWARRAY = 188; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.anewarray"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ANEWARRAY = 189; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.arraylength"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ARRAYLENGTH = 190; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.athrow"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short ATHROW = 191; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.checkcast"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short CHECKCAST = 192; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.instanceof"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short INSTANCEOF = 193; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.monitorenter"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short MONITORENTER = 194; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.monitorexit"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short MONITOREXIT = 195; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.wide"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short WIDE = 196; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.multianewarray"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short MULTIANEWARRAY = 197; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifnull"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IFNULL = 198; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifnonnull"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short IFNONNULL = 199; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.goto_w"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short GOTO_W = 200; + + /** Java VM opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.jsr_w"> + * Opcode definitions in The Java Virtual Machine Specification</a> */ + public static final short JSR_W = 201; + + /** JVM internal opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.2"> + * Reserved opcodes in the Java Virtual Machine Specification</a> */ + public static final short BREAKPOINT = 202; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short LDC_QUICK = 203; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short LDC_W_QUICK = 204; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short LDC2_W_QUICK = 205; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short GETFIELD_QUICK = 206; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short PUTFIELD_QUICK = 207; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short GETFIELD2_QUICK = 208; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short PUTFIELD2_QUICK = 209; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short GETSTATIC_QUICK = 210; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short PUTSTATIC_QUICK = 211; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short GETSTATIC2_QUICK = 212; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short PUTSTATIC2_QUICK = 213; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short INVOKEVIRTUAL_QUICK = 214; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short INVOKENONVIRTUAL_QUICK = 215; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short INVOKESUPER_QUICK = 216; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short INVOKESTATIC_QUICK = 217; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short INVOKEINTERFACE_QUICK = 218; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short INVOKEVIRTUALOBJECT_QUICK = 219; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short NEW_QUICK = 221; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short ANEWARRAY_QUICK = 222; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short MULTIANEWARRAY_QUICK = 223; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short CHECKCAST_QUICK = 224; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short INSTANCEOF_QUICK = 225; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short INVOKEVIRTUAL_QUICK_W = 226; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short GETFIELD_QUICK_W = 227; + + /** JVM internal opcode. + * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> + * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> + * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ + public static final short PUTFIELD_QUICK_W = 228; + + /** JVM internal opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.2"> + * Reserved opcodes in the Java Virtual Machine Specification</a> */ + public static final short IMPDEP1 = 254; + + /** JVM internal opcode. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.2"> + * Reserved opcodes in the Java Virtual Machine Specification</a> */ + public static final short IMPDEP2 = 255; + + /** + * BCEL virtual instruction for pushing an arbitrary data type onto the stack. Will be converted to the appropriate JVM + * opcode when the class is dumped. + */ + public static final short PUSH = 4711; + + /** + * BCEL virtual instruction for either LOOKUPSWITCH or TABLESWITCH. Will be converted to the appropriate JVM + * opcode when the class is dumped. + */ + public static final short SWITCH = 4712; + + /** Illegal opcode. */ + public static final short UNDEFINED = -1; + + /** Illegal opcode. */ + public static final short UNPREDICTABLE = -2; + + /** Illegal opcode. */ + public static final short RESERVED = -3; + + /** Mnemonic for an illegal opcode. */ + public static final String ILLEGAL_OPCODE = "<illegal opcode>"; + + /** Mnemonic for an illegal type. */ + public static final String ILLEGAL_TYPE = "<illegal type>"; + + /** Boolean data type. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> + * Static Constraints in the Java Virtual Machine Specification</a> */ + public static final byte T_BOOLEAN = 4; + + /** Char data type. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> + * Static Constraints in the Java Virtual Machine Specification</a> */ + public static final byte T_CHAR = 5; + + /** Float data type. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> + * Static Constraints in the Java Virtual Machine Specification</a> */ + public static final byte T_FLOAT = 6; + + /** Double data type. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> + * Static Constraints in the Java Virtual Machine Specification</a> */ + public static final byte T_DOUBLE = 7; + + /** Byte data type. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> + * Static Constraints in the Java Virtual Machine Specification</a> */ + public static final byte T_BYTE = 8; + + /** Short data type. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> + * Static Constraints in the Java Virtual Machine Specification</a> */ + public static final byte T_SHORT = 9; + + /** Int data type. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> + * Static Constraints in the Java Virtual Machine Specification</a> */ + public static final byte T_INT = 10; + + /** Long data type. + * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> + * Static Constraints in the Java Virtual Machine Specification</a> */ + public static final byte T_LONG = 11; + + /** Void data type (non-standard). */ + public static final byte T_VOID = 12; // Non-standard + + /** Array data type. */ + public static final byte T_ARRAY = 13; + + /** Object data type. */ + public static final byte T_OBJECT = 14; + + /** Reference data type (deprecated). */ + public static final byte T_REFERENCE = 14; // Deprecated + + /** Unknown data type. */ + public static final byte T_UNKNOWN = 15; + + /** Address data type. */ + public static final byte T_ADDRESS = 16; + + /** The primitive type names corresponding to the T_XX constants, + * e.g., TYPE_NAMES[T_INT] = "int" + */ + private static final String[] TYPE_NAMES = { + ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, + "boolean", "char", "float", "double", "byte", "short", "int", "long", + "void", "array", "object", "unknown", "address" + }; + + /** + * The primitive type names corresponding to the T_XX constants, + * e.g., TYPE_NAMES[T_INT] = "int" + * @param index + * @return the type name + * @since 6.0 + */ + public static String getTypeName(final int index) { + return TYPE_NAMES[index]; + } + + /** The primitive class names corresponding to the T_XX constants, + * e.g., CLASS_TYPE_NAMES[T_INT] = "java.lang.Integer" + */ + private static final String[] CLASS_TYPE_NAMES = { + ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, + "java.lang.Boolean", "java.lang.Character", "java.lang.Float", + "java.lang.Double", "java.lang.Byte", "java.lang.Short", + "java.lang.Integer", "java.lang.Long", "java.lang.Void", + ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE + }; + + /** + * The primitive class names corresponding to the T_XX constants, + * e.g., CLASS_TYPE_NAMES[T_INT] = "java.lang.Integer" + * @param index + * @return the class name + * @since 6.0 + */ + public static String getClassTypeName(final int index) { + return CLASS_TYPE_NAMES[index]; + } + + /** The signature characters corresponding to primitive types, + * e.g., SHORT_TYPE_NAMES[T_INT] = "I" + */ + private static final String[] SHORT_TYPE_NAMES = { + ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, + "Z", "C", "F", "D", "B", "S", "I", "J", + "V", ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE + }; + + /** * - */ - public static final short MINOR_1_2 = 0; + * @param index + * @return the short type name + * @since 6.0 + */ + public static String getShortTypeName(final int index) { + return SHORT_TYPE_NAMES[index]; + } - /** - * Major version number of class files for Java 1.2. - * - * @see #MINOR_1_2 + + /** + * Number of byte code operands for each opcode, i.e., number of bytes after the tag byte + * itself. Indexed by opcode, so NO_OF_OPERANDS[BIPUSH] = the number of operands for a bipush + * instruction. + */ + private static final short[] NO_OF_OPERANDS = { + 0/*nop*/, 0/*aconst_null*/, 0/*iconst_m1*/, 0/*iconst_0*/, + 0/*iconst_1*/, 0/*iconst_2*/, 0/*iconst_3*/, 0/*iconst_4*/, + 0/*iconst_5*/, 0/*lconst_0*/, 0/*lconst_1*/, 0/*fconst_0*/, + 0/*fconst_1*/, 0/*fconst_2*/, 0/*dconst_0*/, 0/*dconst_1*/, + 1/*bipush*/, 2/*sipush*/, 1/*ldc*/, 2/*ldc_w*/, 2/*ldc2_w*/, + 1/*iload*/, 1/*lload*/, 1/*fload*/, 1/*dload*/, 1/*aload*/, + 0/*iload_0*/, 0/*iload_1*/, 0/*iload_2*/, 0/*iload_3*/, + 0/*lload_0*/, 0/*lload_1*/, 0/*lload_2*/, 0/*lload_3*/, + 0/*fload_0*/, 0/*fload_1*/, 0/*fload_2*/, 0/*fload_3*/, + 0/*dload_0*/, 0/*dload_1*/, 0/*dload_2*/, 0/*dload_3*/, + 0/*aload_0*/, 0/*aload_1*/, 0/*aload_2*/, 0/*aload_3*/, + 0/*iaload*/, 0/*laload*/, 0/*faload*/, 0/*daload*/, + 0/*aaload*/, 0/*baload*/, 0/*caload*/, 0/*saload*/, + 1/*istore*/, 1/*lstore*/, 1/*fstore*/, 1/*dstore*/, + 1/*astore*/, 0/*istore_0*/, 0/*istore_1*/, 0/*istore_2*/, + 0/*istore_3*/, 0/*lstore_0*/, 0/*lstore_1*/, 0/*lstore_2*/, + 0/*lstore_3*/, 0/*fstore_0*/, 0/*fstore_1*/, 0/*fstore_2*/, + 0/*fstore_3*/, 0/*dstore_0*/, 0/*dstore_1*/, 0/*dstore_2*/, + 0/*dstore_3*/, 0/*astore_0*/, 0/*astore_1*/, 0/*astore_2*/, + 0/*astore_3*/, 0/*iastore*/, 0/*lastore*/, 0/*fastore*/, + 0/*dastore*/, 0/*aastore*/, 0/*bastore*/, 0/*castore*/, + 0/*sastore*/, 0/*pop*/, 0/*pop2*/, 0/*dup*/, 0/*dup_x1*/, + 0/*dup_x2*/, 0/*dup2*/, 0/*dup2_x1*/, 0/*dup2_x2*/, 0/*swap*/, + 0/*iadd*/, 0/*ladd*/, 0/*fadd*/, 0/*dadd*/, 0/*isub*/, + 0/*lsub*/, 0/*fsub*/, 0/*dsub*/, 0/*imul*/, 0/*lmul*/, + 0/*fmul*/, 0/*dmul*/, 0/*idiv*/, 0/*ldiv*/, 0/*fdiv*/, + 0/*ddiv*/, 0/*irem*/, 0/*lrem*/, 0/*frem*/, 0/*drem*/, + 0/*ineg*/, 0/*lneg*/, 0/*fneg*/, 0/*dneg*/, 0/*ishl*/, + 0/*lshl*/, 0/*ishr*/, 0/*lshr*/, 0/*iushr*/, 0/*lushr*/, + 0/*iand*/, 0/*land*/, 0/*ior*/, 0/*lor*/, 0/*ixor*/, 0/*lxor*/, + 2/*iinc*/, 0/*i2l*/, 0/*i2f*/, 0/*i2d*/, 0/*l2i*/, 0/*l2f*/, + 0/*l2d*/, 0/*f2i*/, 0/*f2l*/, 0/*f2d*/, 0/*d2i*/, 0/*d2l*/, + 0/*d2f*/, 0/*i2b*/, 0/*i2c*/, 0/*i2s*/, 0/*lcmp*/, 0/*fcmpl*/, + 0/*fcmpg*/, 0/*dcmpl*/, 0/*dcmpg*/, 2/*ifeq*/, 2/*ifne*/, + 2/*iflt*/, 2/*ifge*/, 2/*ifgt*/, 2/*ifle*/, 2/*if_icmpeq*/, + 2/*if_icmpne*/, 2/*if_icmplt*/, 2/*if_icmpge*/, 2/*if_icmpgt*/, + 2/*if_icmple*/, 2/*if_acmpeq*/, 2/*if_acmpne*/, 2/*goto*/, + 2/*jsr*/, 1/*ret*/, UNPREDICTABLE/*tableswitch*/, UNPREDICTABLE/*lookupswitch*/, + 0/*ireturn*/, 0/*lreturn*/, 0/*freturn*/, + 0/*dreturn*/, 0/*areturn*/, 0/*return*/, + 2/*getstatic*/, 2/*putstatic*/, 2/*getfield*/, + 2/*putfield*/, 2/*invokevirtual*/, 2/*invokespecial*/, 2/*invokestatic*/, + 4/*invokeinterface*/, 4/*invokedynamic*/, 2/*new*/, + 1/*newarray*/, 2/*anewarray*/, + 0/*arraylength*/, 0/*athrow*/, 2/*checkcast*/, + 2/*instanceof*/, 0/*monitorenter*/, + 0/*monitorexit*/, UNPREDICTABLE/*wide*/, 3/*multianewarray*/, + 2/*ifnull*/, 2/*ifnonnull*/, 4/*goto_w*/, + 4/*jsr_w*/, 0/*breakpoint*/, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, RESERVED/*impdep1*/, RESERVED/*impdep2*/ + }; + + /** * - */ - public static final short MAJOR_1_3 = 47; + * @param index + * @return Number of byte code operands + * @since 6.0 + */ + public static short getNoOfOperands(final int index) { + return NO_OF_OPERANDS[index]; + } - /** - * Minor version number of class files for Java 1.3. - * - * @see #MAJOR_1_3 + /** + * How the byte code operands are to be interpreted for each opcode. + * Indexed by opcode. TYPE_OF_OPERANDS[ILOAD] = an array of shorts + * describing the data types for the instruction. + */ + private static final short[][] TYPE_OF_OPERANDS = { + {}/*nop*/, {}/*aconst_null*/, {}/*iconst_m1*/, {}/*iconst_0*/, + {}/*iconst_1*/, {}/*iconst_2*/, {}/*iconst_3*/, {}/*iconst_4*/, + {}/*iconst_5*/, {}/*lconst_0*/, {}/*lconst_1*/, {}/*fconst_0*/, + {}/*fconst_1*/, {}/*fconst_2*/, {}/*dconst_0*/, {}/*dconst_1*/, + {T_BYTE}/*bipush*/, {T_SHORT}/*sipush*/, {T_BYTE}/*ldc*/, + {T_SHORT}/*ldc_w*/, {T_SHORT}/*ldc2_w*/, + {T_BYTE}/*iload*/, {T_BYTE}/*lload*/, {T_BYTE}/*fload*/, + {T_BYTE}/*dload*/, {T_BYTE}/*aload*/, {}/*iload_0*/, + {}/*iload_1*/, {}/*iload_2*/, {}/*iload_3*/, {}/*lload_0*/, + {}/*lload_1*/, {}/*lload_2*/, {}/*lload_3*/, {}/*fload_0*/, + {}/*fload_1*/, {}/*fload_2*/, {}/*fload_3*/, {}/*dload_0*/, + {}/*dload_1*/, {}/*dload_2*/, {}/*dload_3*/, {}/*aload_0*/, + {}/*aload_1*/, {}/*aload_2*/, {}/*aload_3*/, {}/*iaload*/, + {}/*laload*/, {}/*faload*/, {}/*daload*/, {}/*aaload*/, + {}/*baload*/, {}/*caload*/, {}/*saload*/, {T_BYTE}/*istore*/, + {T_BYTE}/*lstore*/, {T_BYTE}/*fstore*/, {T_BYTE}/*dstore*/, + {T_BYTE}/*astore*/, {}/*istore_0*/, {}/*istore_1*/, + {}/*istore_2*/, {}/*istore_3*/, {}/*lstore_0*/, {}/*lstore_1*/, + {}/*lstore_2*/, {}/*lstore_3*/, {}/*fstore_0*/, {}/*fstore_1*/, + {}/*fstore_2*/, {}/*fstore_3*/, {}/*dstore_0*/, {}/*dstore_1*/, + {}/*dstore_2*/, {}/*dstore_3*/, {}/*astore_0*/, {}/*astore_1*/, + {}/*astore_2*/, {}/*astore_3*/, {}/*iastore*/, {}/*lastore*/, + {}/*fastore*/, {}/*dastore*/, {}/*aastore*/, {}/*bastore*/, + {}/*castore*/, {}/*sastore*/, {}/*pop*/, {}/*pop2*/, {}/*dup*/, + {}/*dup_x1*/, {}/*dup_x2*/, {}/*dup2*/, {}/*dup2_x1*/, + {}/*dup2_x2*/, {}/*swap*/, {}/*iadd*/, {}/*ladd*/, {}/*fadd*/, + {}/*dadd*/, {}/*isub*/, {}/*lsub*/, {}/*fsub*/, {}/*dsub*/, + {}/*imul*/, {}/*lmul*/, {}/*fmul*/, {}/*dmul*/, {}/*idiv*/, + {}/*ldiv*/, {}/*fdiv*/, {}/*ddiv*/, {}/*irem*/, {}/*lrem*/, + {}/*frem*/, {}/*drem*/, {}/*ineg*/, {}/*lneg*/, {}/*fneg*/, + {}/*dneg*/, {}/*ishl*/, {}/*lshl*/, {}/*ishr*/, {}/*lshr*/, + {}/*iushr*/, {}/*lushr*/, {}/*iand*/, {}/*land*/, {}/*ior*/, + {}/*lor*/, {}/*ixor*/, {}/*lxor*/, {T_BYTE, T_BYTE}/*iinc*/, + {}/*i2l*/, {}/*i2f*/, {}/*i2d*/, {}/*l2i*/, {}/*l2f*/, {}/*l2d*/, + {}/*f2i*/, {}/*f2l*/, {}/*f2d*/, {}/*d2i*/, {}/*d2l*/, {}/*d2f*/, + {}/*i2b*/, {}/*i2c*/, {}/*i2s*/, {}/*lcmp*/, {}/*fcmpl*/, + {}/*fcmpg*/, {}/*dcmpl*/, {}/*dcmpg*/, {T_SHORT}/*ifeq*/, + {T_SHORT}/*ifne*/, {T_SHORT}/*iflt*/, {T_SHORT}/*ifge*/, + {T_SHORT}/*ifgt*/, {T_SHORT}/*ifle*/, {T_SHORT}/*if_icmpeq*/, + {T_SHORT}/*if_icmpne*/, {T_SHORT}/*if_icmplt*/, + {T_SHORT}/*if_icmpge*/, {T_SHORT}/*if_icmpgt*/, + {T_SHORT}/*if_icmple*/, {T_SHORT}/*if_acmpeq*/, + {T_SHORT}/*if_acmpne*/, {T_SHORT}/*goto*/, {T_SHORT}/*jsr*/, + {T_BYTE}/*ret*/, {}/*tableswitch*/, {}/*lookupswitch*/, + {}/*ireturn*/, {}/*lreturn*/, {}/*freturn*/, {}/*dreturn*/, + {}/*areturn*/, {}/*return*/, {T_SHORT}/*getstatic*/, + {T_SHORT}/*putstatic*/, {T_SHORT}/*getfield*/, + {T_SHORT}/*putfield*/, {T_SHORT}/*invokevirtual*/, + {T_SHORT}/*invokespecial*/, {T_SHORT}/*invokestatic*/, + {T_SHORT, T_BYTE, T_BYTE}/*invokeinterface*/, {T_SHORT, T_BYTE, T_BYTE}/*invokedynamic*/, + {T_SHORT}/*new*/, {T_BYTE}/*newarray*/, + {T_SHORT}/*anewarray*/, {}/*arraylength*/, {}/*athrow*/, + {T_SHORT}/*checkcast*/, {T_SHORT}/*instanceof*/, + {}/*monitorenter*/, {}/*monitorexit*/, {T_BYTE}/*wide*/, + {T_SHORT, T_BYTE}/*multianewarray*/, {T_SHORT}/*ifnull*/, + {T_SHORT}/*ifnonnull*/, {T_INT}/*goto_w*/, {T_INT}/*jsr_w*/, + {}/*breakpoint*/, {}, {}, {}, {}, {}, {}, {}, + {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, + {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, + {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, + {}/*impdep1*/, {}/*impdep2*/ + }; + + /** + * @since 6.0 + */ + public static short getOperandType(final int opcode, final int index) { + return TYPE_OF_OPERANDS[opcode][index]; + } + + /** + * @since 6.0 + */ + public static long getOperandTypeCount(final int opcode) { + return TYPE_OF_OPERANDS[opcode].length; + } + + /** + * Names of opcodes. Indexed by opcode. OPCODE_NAMES[ALOAD] = "aload". + */ + private static final String[] OPCODE_NAMES = { + "nop", "aconst_null", "iconst_m1", "iconst_0", "iconst_1", + "iconst_2", "iconst_3", "iconst_4", "iconst_5", "lconst_0", + "lconst_1", "fconst_0", "fconst_1", "fconst_2", "dconst_0", + "dconst_1", "bipush", "sipush", "ldc", "ldc_w", "ldc2_w", "iload", + "lload", "fload", "dload", "aload", "iload_0", "iload_1", "iload_2", + "iload_3", "lload_0", "lload_1", "lload_2", "lload_3", "fload_0", + "fload_1", "fload_2", "fload_3", "dload_0", "dload_1", "dload_2", + "dload_3", "aload_0", "aload_1", "aload_2", "aload_3", "iaload", + "laload", "faload", "daload", "aaload", "baload", "caload", "saload", + "istore", "lstore", "fstore", "dstore", "astore", "istore_0", + "istore_1", "istore_2", "istore_3", "lstore_0", "lstore_1", + "lstore_2", "lstore_3", "fstore_0", "fstore_1", "fstore_2", + "fstore_3", "dstore_0", "dstore_1", "dstore_2", "dstore_3", + "astore_0", "astore_1", "astore_2", "astore_3", "iastore", "lastore", + "fastore", "dastore", "aastore", "bastore", "castore", "sastore", + "pop", "pop2", "dup", "dup_x1", "dup_x2", "dup2", "dup2_x1", + "dup2_x2", "swap", "iadd", "ladd", "fadd", "dadd", "isub", "lsub", + "fsub", "dsub", "imul", "lmul", "fmul", "dmul", "idiv", "ldiv", + "fdiv", "ddiv", "irem", "lrem", "frem", "drem", "ineg", "lneg", + "fneg", "dneg", "ishl", "lshl", "ishr", "lshr", "iushr", "lushr", + "iand", "land", "ior", "lor", "ixor", "lxor", "iinc", "i2l", "i2f", + "i2d", "l2i", "l2f", "l2d", "f2i", "f2l", "f2d", "d2i", "d2l", "d2f", + "i2b", "i2c", "i2s", "lcmp", "fcmpl", "fcmpg", + "dcmpl", "dcmpg", "ifeq", "ifne", "iflt", "ifge", "ifgt", "ifle", + "if_icmpeq", "if_icmpne", "if_icmplt", "if_icmpge", "if_icmpgt", + "if_icmple", "if_acmpeq", "if_acmpne", "goto", "jsr", "ret", + "tableswitch", "lookupswitch", "ireturn", "lreturn", "freturn", + "dreturn", "areturn", "return", "getstatic", "putstatic", "getfield", + "putfield", "invokevirtual", "invokespecial", "invokestatic", + "invokeinterface", "invokedynamic", "new", "newarray", "anewarray", + "arraylength", "athrow", "checkcast", "instanceof", "monitorenter", + "monitorexit", "wide", "multianewarray", "ifnull", "ifnonnull", + "goto_w", "jsr_w", "breakpoint", ILLEGAL_OPCODE, ILLEGAL_OPCODE, + ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, + ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, + ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, + ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, + ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, + ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, + ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, + ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, + ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, + ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, + ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, + ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, + ILLEGAL_OPCODE, "impdep1", "impdep2" + }; + + /** + * @since 6.0 + */ + public static final int OPCODE_NAMES_LENGTH = OPCODE_NAMES.length; + + + /** + * @since 6.0 + */ + public static String getOpcodeName(final int index) { + return OPCODE_NAMES[index]; + } + + /** + * Number of words consumed on operand stack by instructions. + * Indexed by opcode. CONSUME_STACK[FALOAD] = number of words + * consumed from the stack by a faload instruction. + */ + private static final int[] CONSUME_STACK = { + 0/*nop*/, 0/*aconst_null*/, 0/*iconst_m1*/, 0/*iconst_0*/, 0/*iconst_1*/, + 0/*iconst_2*/, 0/*iconst_3*/, 0/*iconst_4*/, 0/*iconst_5*/, 0/*lconst_0*/, + 0/*lconst_1*/, 0/*fconst_0*/, 0/*fconst_1*/, 0/*fconst_2*/, 0/*dconst_0*/, + 0/*dconst_1*/, 0/*bipush*/, 0/*sipush*/, 0/*ldc*/, 0/*ldc_w*/, 0/*ldc2_w*/, 0/*iload*/, + 0/*lload*/, 0/*fload*/, 0/*dload*/, 0/*aload*/, 0/*iload_0*/, 0/*iload_1*/, 0/*iload_2*/, + 0/*iload_3*/, 0/*lload_0*/, 0/*lload_1*/, 0/*lload_2*/, 0/*lload_3*/, 0/*fload_0*/, + 0/*fload_1*/, 0/*fload_2*/, 0/*fload_3*/, 0/*dload_0*/, 0/*dload_1*/, 0/*dload_2*/, + 0/*dload_3*/, 0/*aload_0*/, 0/*aload_1*/, 0/*aload_2*/, 0/*aload_3*/, 2/*iaload*/, + 2/*laload*/, 2/*faload*/, 2/*daload*/, 2/*aaload*/, 2/*baload*/, 2/*caload*/, 2/*saload*/, + 1/*istore*/, 2/*lstore*/, 1/*fstore*/, 2/*dstore*/, 1/*astore*/, 1/*istore_0*/, + 1/*istore_1*/, 1/*istore_2*/, 1/*istore_3*/, 2/*lstore_0*/, 2/*lstore_1*/, + 2/*lstore_2*/, 2/*lstore_3*/, 1/*fstore_0*/, 1/*fstore_1*/, 1/*fstore_2*/, + 1/*fstore_3*/, 2/*dstore_0*/, 2/*dstore_1*/, 2/*dstore_2*/, 2/*dstore_3*/, + 1/*astore_0*/, 1/*astore_1*/, 1/*astore_2*/, 1/*astore_3*/, 3/*iastore*/, 4/*lastore*/, + 3/*fastore*/, 4/*dastore*/, 3/*aastore*/, 3/*bastore*/, 3/*castore*/, 3/*sastore*/, + 1/*pop*/, 2/*pop2*/, 1/*dup*/, 2/*dup_x1*/, 3/*dup_x2*/, 2/*dup2*/, 3/*dup2_x1*/, + 4/*dup2_x2*/, 2/*swap*/, 2/*iadd*/, 4/*ladd*/, 2/*fadd*/, 4/*dadd*/, 2/*isub*/, 4/*lsub*/, + 2/*fsub*/, 4/*dsub*/, 2/*imul*/, 4/*lmul*/, 2/*fmul*/, 4/*dmul*/, 2/*idiv*/, 4/*ldiv*/, + 2/*fdiv*/, 4/*ddiv*/, 2/*irem*/, 4/*lrem*/, 2/*frem*/, 4/*drem*/, 1/*ineg*/, 2/*lneg*/, + 1/*fneg*/, 2/*dneg*/, 2/*ishl*/, 3/*lshl*/, 2/*ishr*/, 3/*lshr*/, 2/*iushr*/, 3/*lushr*/, + 2/*iand*/, 4/*land*/, 2/*ior*/, 4/*lor*/, 2/*ixor*/, 4/*lxor*/, 0/*iinc*/, + 1/*i2l*/, 1/*i2f*/, 1/*i2d*/, 2/*l2i*/, 2/*l2f*/, 2/*l2d*/, 1/*f2i*/, 1/*f2l*/, + 1/*f2d*/, 2/*d2i*/, 2/*d2l*/, 2/*d2f*/, 1/*i2b*/, 1/*i2c*/, 1/*i2s*/, + 4/*lcmp*/, 2/*fcmpl*/, 2/*fcmpg*/, 4/*dcmpl*/, 4/*dcmpg*/, 1/*ifeq*/, 1/*ifne*/, + 1/*iflt*/, 1/*ifge*/, 1/*ifgt*/, 1/*ifle*/, 2/*if_icmpeq*/, 2/*if_icmpne*/, 2/*if_icmplt*/, + 2 /*if_icmpge*/, 2/*if_icmpgt*/, 2/*if_icmple*/, 2/*if_acmpeq*/, 2/*if_acmpne*/, + 0/*goto*/, 0/*jsr*/, 0/*ret*/, 1/*tableswitch*/, 1/*lookupswitch*/, 1/*ireturn*/, + 2/*lreturn*/, 1/*freturn*/, 2/*dreturn*/, 1/*areturn*/, 0/*return*/, 0/*getstatic*/, + UNPREDICTABLE/*putstatic*/, 1/*getfield*/, UNPREDICTABLE/*putfield*/, + UNPREDICTABLE/*invokevirtual*/, UNPREDICTABLE/*invokespecial*/, + UNPREDICTABLE/*invokestatic*/, + UNPREDICTABLE/*invokeinterface*/, UNPREDICTABLE/*invokedynamic*/, 0/*new*/, 1/*newarray*/, 1/*anewarray*/, + 1/*arraylength*/, 1/*athrow*/, 1/*checkcast*/, 1/*instanceof*/, 1/*monitorenter*/, + 1/*monitorexit*/, 0/*wide*/, UNPREDICTABLE/*multianewarray*/, 1/*ifnull*/, 1/*ifnonnull*/, + 0/*goto_w*/, 0/*jsr_w*/, 0/*breakpoint*/, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNPREDICTABLE/*impdep1*/, UNPREDICTABLE/*impdep2*/ + }; + + /** * - */ - public static final short MINOR_1_3 = 0; + * @param index + * @return Number of words consumed on operand stack + * @since 6.0 + */ + public static int getConsumeStack(final int index) { + return CONSUME_STACK[index]; + } - /** - * Major version number of class files for Java 1.3. - * - * @see #MINOR_1_3 + + /** + * Number of words produced onto operand stack by instructions. + * Indexed by opcode. CONSUME_STACK[DALOAD] = number of words + * consumed from the stack by a daload instruction. + */ + private static final int[] PRODUCE_STACK = { + 0/*nop*/, 1/*aconst_null*/, 1/*iconst_m1*/, 1/*iconst_0*/, 1/*iconst_1*/, + 1/*iconst_2*/, 1/*iconst_3*/, 1/*iconst_4*/, 1/*iconst_5*/, 2/*lconst_0*/, + 2/*lconst_1*/, 1/*fconst_0*/, 1/*fconst_1*/, 1/*fconst_2*/, 2/*dconst_0*/, + 2/*dconst_1*/, 1/*bipush*/, 1/*sipush*/, 1/*ldc*/, 1/*ldc_w*/, 2/*ldc2_w*/, 1/*iload*/, + 2/*lload*/, 1/*fload*/, 2/*dload*/, 1/*aload*/, 1/*iload_0*/, 1/*iload_1*/, 1/*iload_2*/, + 1/*iload_3*/, 2/*lload_0*/, 2/*lload_1*/, 2/*lload_2*/, 2/*lload_3*/, 1/*fload_0*/, + 1/*fload_1*/, 1/*fload_2*/, 1/*fload_3*/, 2/*dload_0*/, 2/*dload_1*/, 2/*dload_2*/, + 2/*dload_3*/, 1/*aload_0*/, 1/*aload_1*/, 1/*aload_2*/, 1/*aload_3*/, 1/*iaload*/, + 2/*laload*/, 1/*faload*/, 2/*daload*/, 1/*aaload*/, 1/*baload*/, 1/*caload*/, 1/*saload*/, + 0/*istore*/, 0/*lstore*/, 0/*fstore*/, 0/*dstore*/, 0/*astore*/, 0/*istore_0*/, + 0/*istore_1*/, 0/*istore_2*/, 0/*istore_3*/, 0/*lstore_0*/, 0/*lstore_1*/, + 0/*lstore_2*/, 0/*lstore_3*/, 0/*fstore_0*/, 0/*fstore_1*/, 0/*fstore_2*/, + 0/*fstore_3*/, 0/*dstore_0*/, 0/*dstore_1*/, 0/*dstore_2*/, 0/*dstore_3*/, + 0/*astore_0*/, 0/*astore_1*/, 0/*astore_2*/, 0/*astore_3*/, 0/*iastore*/, 0/*lastore*/, + 0/*fastore*/, 0/*dastore*/, 0/*aastore*/, 0/*bastore*/, 0/*castore*/, 0/*sastore*/, + 0/*pop*/, 0/*pop2*/, 2/*dup*/, 3/*dup_x1*/, 4/*dup_x2*/, 4/*dup2*/, 5/*dup2_x1*/, + 6/*dup2_x2*/, 2/*swap*/, 1/*iadd*/, 2/*ladd*/, 1/*fadd*/, 2/*dadd*/, 1/*isub*/, 2/*lsub*/, + 1/*fsub*/, 2/*dsub*/, 1/*imul*/, 2/*lmul*/, 1/*fmul*/, 2/*dmul*/, 1/*idiv*/, 2/*ldiv*/, + 1/*fdiv*/, 2/*ddiv*/, 1/*irem*/, 2/*lrem*/, 1/*frem*/, 2/*drem*/, 1/*ineg*/, 2/*lneg*/, + 1/*fneg*/, 2/*dneg*/, 1/*ishl*/, 2/*lshl*/, 1/*ishr*/, 2/*lshr*/, 1/*iushr*/, 2/*lushr*/, + 1/*iand*/, 2/*land*/, 1/*ior*/, 2/*lor*/, 1/*ixor*/, 2/*lxor*/, + 0/*iinc*/, 2/*i2l*/, 1/*i2f*/, 2/*i2d*/, 1/*l2i*/, 1/*l2f*/, 2/*l2d*/, 1/*f2i*/, + 2/*f2l*/, 2/*f2d*/, 1/*d2i*/, 2/*d2l*/, 1/*d2f*/, + 1/*i2b*/, 1/*i2c*/, 1/*i2s*/, 1/*lcmp*/, 1/*fcmpl*/, 1/*fcmpg*/, + 1/*dcmpl*/, 1/*dcmpg*/, 0/*ifeq*/, 0/*ifne*/, 0/*iflt*/, 0/*ifge*/, 0/*ifgt*/, 0/*ifle*/, + 0/*if_icmpeq*/, 0/*if_icmpne*/, 0/*if_icmplt*/, 0/*if_icmpge*/, 0/*if_icmpgt*/, + 0/*if_icmple*/, 0/*if_acmpeq*/, 0/*if_acmpne*/, 0/*goto*/, 1/*jsr*/, 0/*ret*/, + 0/*tableswitch*/, 0/*lookupswitch*/, 0/*ireturn*/, 0/*lreturn*/, 0/*freturn*/, + 0/*dreturn*/, 0/*areturn*/, 0/*return*/, UNPREDICTABLE/*getstatic*/, 0/*putstatic*/, + UNPREDICTABLE/*getfield*/, 0/*putfield*/, UNPREDICTABLE/*invokevirtual*/, + UNPREDICTABLE/*invokespecial*/, UNPREDICTABLE/*invokestatic*/, + UNPREDICTABLE/*invokeinterface*/, UNPREDICTABLE/*invokedynamic*/, 1/*new*/, 1/*newarray*/, 1/*anewarray*/, + 1/*arraylength*/, 1/*athrow*/, 1/*checkcast*/, 1/*instanceof*/, 0/*monitorenter*/, + 0/*monitorexit*/, 0/*wide*/, 1/*multianewarray*/, 0/*ifnull*/, 0/*ifnonnull*/, + 0/*goto_w*/, 1/*jsr_w*/, 0/*breakpoint*/, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, + UNDEFINED, UNPREDICTABLE/*impdep1*/, UNPREDICTABLE/*impdep2*/ + }; + + /** * - */ - public static final short MAJOR_1_4 = 48; + * @param index + * @return Number of words produced onto operand stack + * @since 6.0 + */ + public static int getProduceStack(final int index) { + return PRODUCE_STACK[index]; + } - /** - * Minor version number of class files for Java 1.4. - * - * @see #MAJOR_1_4 + /** Attributes and their corresponding names. + */ + public static final byte ATTR_UNKNOWN = -1; + public static final byte ATTR_SOURCE_FILE = 0; + public static final byte ATTR_CONSTANT_VALUE = 1; + public static final byte ATTR_CODE = 2; + public static final byte ATTR_EXCEPTIONS = 3; + public static final byte ATTR_LINE_NUMBER_TABLE = 4; + public static final byte ATTR_LOCAL_VARIABLE_TABLE = 5; + public static final byte ATTR_INNER_CLASSES = 6; + public static final byte ATTR_SYNTHETIC = 7; + public static final byte ATTR_DEPRECATED = 8; + public static final byte ATTR_PMG = 9; + public static final byte ATTR_SIGNATURE = 10; + public static final byte ATTR_STACK_MAP = 11; + public static final byte ATTR_RUNTIME_VISIBLE_ANNOTATIONS = 12; + public static final byte ATTR_RUNTIME_INVISIBLE_ANNOTATIONS = 13; + public static final byte ATTR_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS = 14; + public static final byte ATTR_RUNTIME_INVISIBLE_PARAMETER_ANNOTATIONS = 15; + public static final byte ATTR_ANNOTATION_DEFAULT = 16; + public static final byte ATTR_LOCAL_VARIABLE_TYPE_TABLE = 17; + public static final byte ATTR_ENCLOSING_METHOD = 18; + public static final byte ATTR_STACK_MAP_TABLE = 19; + public static final byte ATTR_BOOTSTRAP_METHODS = 20; + public static final byte ATTR_METHOD_PARAMETERS = 21; + + public static final short KNOWN_ATTRIBUTES = 22; // count of attributes + + private static final String[] ATTRIBUTE_NAMES = { + "SourceFile", "ConstantValue", "Code", "Exceptions", + "LineNumberTable", "LocalVariableTable", + "InnerClasses", "Synthetic", "Deprecated", + "PMGClass", "Signature", "StackMap", + "RuntimeVisibleAnnotations", "RuntimeInvisibleAnnotations", + "RuntimeVisibleParameterAnnotations", "RuntimeInvisibleParameterAnnotations", + "AnnotationDefault", "LocalVariableTypeTable", "EnclosingMethod", "StackMapTable", + "BootstrapMethods", "MethodParameters" + }; + + /** * - */ - public static final short MINOR_1_4 = 0; + * @param index + * @return the attribute name + * @since 6.0 + */ + public static String getAttributeName(final int index) { + return ATTRIBUTE_NAMES[index]; + } - /** - * Major version number of class files for Java 1.4. - * - * @see #MINOR_1_4 + /** Constants used in the StackMap attribute. + */ + public static final byte ITEM_Bogus = 0; + public static final byte ITEM_Integer = 1; + public static final byte ITEM_Float = 2; + public static final byte ITEM_Double = 3; + public static final byte ITEM_Long = 4; + public static final byte ITEM_Null = 5; + public static final byte ITEM_InitObject = 6; + public static final byte ITEM_Object = 7; + public static final byte ITEM_NewObject = 8; + + private static final String[] ITEM_NAMES = { + "Bogus", "Integer", "Float", "Double", "Long", + "Null", "InitObject", "Object", "NewObject" + }; + + /** * - */ - public static final short MAJOR_1_5 = 49; + * @param index + * @return the item name + * @since 6.0 + */ + public static String getItemName(final int index) { + return ITEM_NAMES[index]; + } - /** - * Minor version number of class files for Java 1.5. - * - * @see #MAJOR_1_5 + /** Constants used to identify StackMapEntry types. * - */ - public static final short MINOR_1_5 = 0; + * For those types which can specify a range, the + * constant names the lowest value. + */ + public static final int SAME_FRAME = 0; + public static final int SAME_LOCALS_1_STACK_ITEM_FRAME = 64; + public static final int SAME_LOCALS_1_STACK_ITEM_FRAME_EXTENDED = 247; + public static final int CHOP_FRAME = 248; + public static final int SAME_FRAME_EXTENDED = 251; + public static final int APPEND_FRAME = 252; + public static final int FULL_FRAME = 255; - /** - * Major version number of class files for Java 1.6. - * - * @see #MINOR_1_6 - * - */ - public static final short MAJOR_1_6 = 50; + /** Constants that define the maximum value of + * those constants which store ranges. */ - /** - * Minor version number of class files for Java 1.6. - * - * @see #MAJOR_1_6 - * - */ - public static final short MINOR_1_6 = 0; + public static final int SAME_FRAME_MAX = 63; + public static final int SAME_LOCALS_1_STACK_ITEM_FRAME_MAX = 127; + public static final int CHOP_FRAME_MAX = 250; + public static final int APPEND_FRAME_MAX = 254; - /** - * Major version number of class files for Java 1.7. - * - * @see #MINOR_1_7 - * - */ - public static final short MAJOR_1_7 = 51; - - /** - * Minor version number of class files for Java 1.7. - * - * @see #MAJOR_1_7 - * - */ - public static final short MINOR_1_7 = 0; - - /** - * Major version number of class files for Java 1.8. - * - * @see #MINOR_1_8 - * - */ - public static final short MAJOR_1_8 = 52; - - /** - * Major version number of class files for Java 9. - * - * @see #MINOR_1_9 - * - */ - public static final short MAJOR_1_9 = 53; - - /** - * Minor version number of class files for Java 1.8. - * - * @see #MAJOR_1_8 - * - */ - public static final short MINOR_1_8 = 0; - - /** - * Minor version number of class files for Java 9. - * - * @see #MAJOR_1_9 - * - */ - public static final short MINOR_1_9 = 0; - - /** - * Default major version number. Class file is for Java 1.1. - * - * @see #MAJOR_1_1 - * - */ - public static final short MAJOR = MAJOR_1_1; - - /** - * Default major version number. Class file is for Java 1.1. - * - * @see #MAJOR_1_1 - * - */ - public static final short MINOR = MINOR_1_1; - - /** - * Maximum value for an unsigned short. - */ - public static final int MAX_SHORT = 65535; // 2^16 - 1 - - /** - * Maximum value for an unsigned byte. - */ - public static final int MAX_BYTE = 255; // 2^8 - 1 - - /** - * One of the access flags for fields, methods, or classes. - * - * @see <a - * href='http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.5'> - * Flag definitions for Fields in the Java Virtual Machine Specification - * (Java SE 8 Edition).</a> - * @see <a - * href='http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.6'> - * Flag definitions for Methods in the Java Virtual Machine Specification - * (Java SE 8 Edition).</a> - * @see <a - * href='http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.6-300-D.1-D.1'> - * Flag definitions for Classes in the Java Virtual Machine Specification - * (Java SE 8 Edition).</a> - */ - public static final short ACC_PUBLIC = 0x0001; - - /** - * One of the access flags for fields, methods, or classes. - * - * @see #ACC_PUBLIC - */ - public static final short ACC_PRIVATE = 0x0002; - - /** - * One of the access flags for fields, methods, or classes. - * - * @see #ACC_PUBLIC - */ - public static final short ACC_PROTECTED = 0x0004; - - /** - * One of the access flags for fields, methods, or classes. - * - * @see #ACC_PUBLIC - */ - public static final short ACC_STATIC = 0x0008; - - /** - * One of the access flags for fields, methods, or classes. - * - * @see #ACC_PUBLIC - */ - public static final short ACC_FINAL = 0x0010; - - /** - * One of the access flags for fields, methods, or classes. - * - * @see #ACC_PUBLIC - */ - public static final short ACC_SYNCHRONIZED = 0x0020; - - /** - * One of the access flags for fields, methods, or classes. - * - * @see #ACC_PUBLIC - */ - public static final short ACC_VOLATILE = 0x0040; - - /** - * One of the access flags for fields, methods, or classes. - * - * @see #ACC_PUBLIC - */ - public static final short ACC_BRIDGE = 0x0040; - - /** - * One of the access flags for fields, methods, or classes. - * - * @see #ACC_PUBLIC - */ - public static final short ACC_TRANSIENT = 0x0080; - - /** - * One of the access flags for fields, methods, or classes. - * - * @see #ACC_PUBLIC - */ - public static final short ACC_VARARGS = 0x0080; - - /** - * One of the access flags for fields, methods, or classes. - * - * @see #ACC_PUBLIC - */ - public static final short ACC_NATIVE = 0x0100; - - /** - * One of the access flags for fields, methods, or classes. - * - * @see #ACC_PUBLIC - */ - public static final short ACC_INTERFACE = 0x0200; - - /** - * One of the access flags for fields, methods, or classes. - * - * @see #ACC_PUBLIC - */ - public static final short ACC_ABSTRACT = 0x0400; - - /** - * One of the access flags for fields, methods, or classes. - * - * @see #ACC_PUBLIC - */ - public static final short ACC_STRICT = 0x0800; - - /** - * One of the access flags for fields, methods, or classes. - * - * @see #ACC_PUBLIC - */ - public static final short ACC_SYNTHETIC = 0x1000; - - /** - * One of the access flags for fields, methods, or classes. - * - * @see #ACC_PUBLIC - */ - public static final short ACC_ANNOTATION = 0x2000; - - /** - * One of the access flags for fields, methods, or classes. - * - * @see #ACC_PUBLIC - */ - public static final short ACC_ENUM = 0x4000; - - /** - * One of the access flags for fields, methods, or classes. - * - * @see #ACC_PUBLIC - */ - public static final short ACC_MANDATED = (short) 0x8000; - - // Applies to classes compiled by new compilers only - /** - * One of the access flags for fields, methods, or classes. - * - * @see #ACC_PUBLIC - */ - public static final short ACC_SUPER = 0x0020; - - /** - * One of the access flags for fields, methods, or classes. - * - * @see #ACC_PUBLIC - */ - public static final short MAX_ACC_FLAG = ACC_ENUM; - - /** - * The names of the access flags. - */ - private static final String[] ACCESS_NAMES = { - "public", "private", "protected", "static", "final", "synchronized", - "volatile", "transient", "native", "interface", "abstract", "strictfp", - "synthetic", "annotation", "enum" - }; - - /** - * @since 6.0 - */ - public static final int ACCESS_NAMES_LENGTH = ACCESS_NAMES.length; - - /** - * @param index - * @return the ACCESS_NAMES entry at the given index - * @since 6.0 - */ - public static String getAccessName(final int index) { - return ACCESS_NAMES[index]; - } - - /* - * The description of the constant pool is at: - * http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4 - * References below are to the individual sections - */ - /** - * Marks a constant pool entry as type UTF-8. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.7"> - * The Constant Pool in The Java Virtual Machine Specification</a> - */ - public static final byte CONSTANT_Utf8 = 1; - - /** - * Marks a constant pool entry as type Integer. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.4"> - * The Constant Pool in The Java Virtual Machine Specification</a> - */ - public static final byte CONSTANT_Integer = 3; - - /** - * Marks a constant pool entry as type Float. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.4"> - * The Constant Pool in The Java Virtual Machine Specification</a> - */ - public static final byte CONSTANT_Float = 4; - - /** - * Marks a constant pool entry as type Long. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.5"> - * The Constant Pool in The Java Virtual Machine Specification</a> - */ - public static final byte CONSTANT_Long = 5; - - /** - * Marks a constant pool entry as type Double. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.5"> - * The Constant Pool in The Java Virtual Machine Specification</a> - */ - public static final byte CONSTANT_Double = 6; - - /** - * Marks a constant pool entry as a Class - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.1"> - * The Constant Pool in The Java Virtual Machine Specification</a> - */ - public static final byte CONSTANT_Class = 7; - - /** - * Marks a constant pool entry as a Field Reference. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.2"> - * The Constant Pool in The Java Virtual Machine Specification</a> - */ - public static final byte CONSTANT_Fieldref = 9; - - /** - * Marks a constant pool entry as type String - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.3"> - * The Constant Pool in The Java Virtual Machine Specification</a> - */ - public static final byte CONSTANT_String = 8; - - /** - * Marks a constant pool entry as a Method Reference. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.2"> - * The Constant Pool in The Java Virtual Machine Specification</a> - */ - public static final byte CONSTANT_Methodref = 10; - - /** - * Marks a constant pool entry as an Interface Method Reference. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.2"> - * The Constant Pool in The Java Virtual Machine Specification</a> - */ - public static final byte CONSTANT_InterfaceMethodref = 11; - - /** - * Marks a constant pool entry as a name and type. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.6"> - * The Constant Pool in The Java Virtual Machine Specification</a> - */ - public static final byte CONSTANT_NameAndType = 12; - - /** - * Marks a constant pool entry as a Method Handle. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.8"> - * The Constant Pool in The Java Virtual Machine Specification</a> - */ - public static final byte CONSTANT_MethodHandle = 15; - - /** - * Marks a constant pool entry as a Method Type. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.9"> - * The Constant Pool in The Java Virtual Machine Specification</a> - */ - public static final byte CONSTANT_MethodType = 16; - - /** - * Marks a constant pool entry as an Invoke Dynamic - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.10"> - * The Constant Pool in The Java Virtual Machine Specification</a> - */ - public static final byte CONSTANT_InvokeDynamic = 18; - - /** - * The names of the types of entries in a constant pool. Use getConstantName - * instead - */ - private static final String[] CONSTANT_NAMES = { - "", "CONSTANT_Utf8", "", "CONSTANT_Integer", - "CONSTANT_Float", "CONSTANT_Long", "CONSTANT_Double", - "CONSTANT_Class", "CONSTANT_String", "CONSTANT_Fieldref", - "CONSTANT_Methodref", "CONSTANT_InterfaceMethodref", - "CONSTANT_NameAndType", "", "", "CONSTANT_MethodHandle", - "CONSTANT_MethodType", "", "CONSTANT_InvokeDynamic"}; - - /** - * - * @param index - * @return the CONSTANT_NAMES entry at the given index - * @since 6.0 - */ - public static String getConstantName(final int index) { - return CONSTANT_NAMES[index]; - } - - /** - * The name of the static initializer, also called "class - * initialization method" or "interface initialization - * method". This is "<clinit>". - */ - public static final String STATIC_INITIALIZER_NAME = "<clinit>"; - - /** - * The name of every constructor method in a class, also called - * "instance initialization method". This is - * "<init>". - */ - public static final String CONSTRUCTOR_NAME = "<init>"; - - /** - * The names of the interfaces implemented by arrays - */ - private static final String[] INTERFACES_IMPLEMENTED_BY_ARRAYS = {"java.lang.Cloneable", "java.io.Serializable"}; - - /** - * @since 6.0 - */ - public static Iterable<String> getInterfacesImplementedByArrays() { - return Collections.unmodifiableList(Arrays.asList(INTERFACES_IMPLEMENTED_BY_ARRAYS)); - } - - /** - * Maximum Constant Pool entries. One of the limitations of the Java Virtual - * Machine. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.11-100-A"> - * The Java Virtual Machine Specification, Java SE 8 Edition, page 330, - * chapter 4.11.</a> - */ - public static final int MAX_CP_ENTRIES = 65535; - - /** - * Maximum code size (plus one; the code size must be LESS than this) One of - * the limitations of the Java Virtual Machine. Note vmspec2 page 152 - * ("Limitations") says: "The amount of code per non-native, non-abstract - * method is limited to 65536 bytes by the sizes of the indices in the - * exception_table of the Code attribute (4.7.3), in the LineNumberTable - * attribute (4.7.8), and in the LocalVariableTable attribute (4.7.9)." - * However this should be taken as an upper limit rather than the defined - * maximum. On page 134 (4.8.1 Static Constants) of the same spec, it says: - * "The value of the code_length item must be less than 65536." The entry in - * the Limitations section has been removed from later versions of the spec; - * it is not present in the Java SE 8 edition. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.3-300-E"> - * The Java Virtual Machine Specification, Java SE 8 Edition, page 104, - * chapter 4.7.</a> - */ - public static final int MAX_CODE_SIZE = 65536; //bytes - - /** - * The maximum number of dimensions in an array ({@value}). One of the - * limitations of the Java Virtual Machine. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.3.2-150"> - * Field Descriptors in The Java Virtual Machine Specification</a> - */ - public static final int MAX_ARRAY_DIMENSIONS = 255; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.nop"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short NOP = 0; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aconst_null"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ACONST_NULL = 1; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ICONST_M1 = 2; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ICONST_0 = 3; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ICONST_1 = 4; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ICONST_2 = 5; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ICONST_3 = 6; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ICONST_4 = 7; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ICONST_5 = 8; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lconst_l"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LCONST_0 = 9; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lconst_l"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LCONST_1 = 10; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fconst_f"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FCONST_0 = 11; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fconst_f"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FCONST_1 = 12; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fconst_f"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FCONST_2 = 13; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dconst_d"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DCONST_0 = 14; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dconst_d"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DCONST_1 = 15; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.bipush"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short BIPUSH = 16; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.sipush"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short SIPUSH = 17; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldc"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LDC = 18; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldc_w"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LDC_W = 19; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldc2_w"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LDC2_W = 20; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ILOAD = 21; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LLOAD = 22; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FLOAD = 23; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DLOAD = 24; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ALOAD = 25; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ILOAD_0 = 26; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ILOAD_1 = 27; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ILOAD_2 = 28; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ILOAD_3 = 29; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LLOAD_0 = 30; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LLOAD_1 = 31; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LLOAD_2 = 32; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LLOAD_3 = 33; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FLOAD_0 = 34; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FLOAD_1 = 35; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FLOAD_2 = 36; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FLOAD_3 = 37; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DLOAD_0 = 38; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DLOAD_1 = 39; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DLOAD_2 = 40; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DLOAD_3 = 41; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ALOAD_0 = 42; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ALOAD_1 = 43; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ALOAD_2 = 44; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ALOAD_3 = 45; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iaload"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IALOAD = 46; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.laload"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LALOAD = 47; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.faload"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FALOAD = 48; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.daload"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DALOAD = 49; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aaload"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short AALOAD = 50; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.baload"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short BALOAD = 51; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.caload"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short CALOAD = 52; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.saload"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short SALOAD = 53; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ISTORE = 54; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LSTORE = 55; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FSTORE = 56; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DSTORE = 57; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ASTORE = 58; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ISTORE_0 = 59; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ISTORE_1 = 60; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ISTORE_2 = 61; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ISTORE_3 = 62; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LSTORE_0 = 63; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LSTORE_1 = 64; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LSTORE_2 = 65; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LSTORE_3 = 66; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FSTORE_0 = 67; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FSTORE_1 = 68; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FSTORE_2 = 69; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FSTORE_3 = 70; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DSTORE_0 = 71; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DSTORE_1 = 72; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DSTORE_2 = 73; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DSTORE_3 = 74; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ASTORE_0 = 75; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ASTORE_1 = 76; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ASTORE_2 = 77; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ASTORE_3 = 78; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iastore"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IASTORE = 79; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lastore"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LASTORE = 80; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fastore"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FASTORE = 81; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dastore"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DASTORE = 82; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aastore"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short AASTORE = 83; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.bastore"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short BASTORE = 84; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.castore"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short CASTORE = 85; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.sastore"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short SASTORE = 86; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.pop"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short POP = 87; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.pop2"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short POP2 = 88; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DUP = 89; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup_x1"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DUP_X1 = 90; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup_x2"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DUP_X2 = 91; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup2"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DUP2 = 92; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup2_x1"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DUP2_X1 = 93; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup2_x2"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DUP2_X2 = 94; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.swap"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short SWAP = 95; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iadd"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IADD = 96; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ladd"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LADD = 97; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fadd"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FADD = 98; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dadd"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DADD = 99; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.isub"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ISUB = 100; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lsub"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LSUB = 101; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fsub"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FSUB = 102; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dsub"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DSUB = 103; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.imul"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IMUL = 104; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lmul"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LMUL = 105; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fmul"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FMUL = 106; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dmul"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DMUL = 107; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.idiv"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IDIV = 108; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldiv"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LDIV = 109; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fdiv"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FDIV = 110; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ddiv"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DDIV = 111; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.irem"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IREM = 112; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lrem"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LREM = 113; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.frem"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FREM = 114; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.drem"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DREM = 115; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ineg"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short INEG = 116; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lneg"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LNEG = 117; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fneg"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FNEG = 118; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dneg"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DNEG = 119; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ishl"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ISHL = 120; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lshl"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LSHL = 121; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ishr"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ISHR = 122; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lshr"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LSHR = 123; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iushr"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IUSHR = 124; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lushr"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LUSHR = 125; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iand"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IAND = 126; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.land"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LAND = 127; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ior"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IOR = 128; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lor"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LOR = 129; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ixor"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IXOR = 130; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lxor"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LXOR = 131; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iinc"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IINC = 132; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2l"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short I2L = 133; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2f"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short I2F = 134; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2d"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short I2D = 135; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.l2i"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short L2I = 136; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.l2f"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short L2F = 137; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.l2d"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short L2D = 138; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.f2i"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short F2I = 139; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.f2l"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short F2L = 140; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.f2d"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short F2D = 141; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.d2i"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short D2I = 142; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.d2l"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short D2L = 143; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.d2f"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short D2F = 144; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2b"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short I2B = 145; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short INT2BYTE = 145; // Old notation - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2c"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short I2C = 146; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short INT2CHAR = 146; // Old notation - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2s"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short I2S = 147; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short INT2SHORT = 147; // Old notation - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lcmp"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LCMP = 148; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fcmpl"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FCMPL = 149; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fcmpg"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FCMPG = 150; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dcmpl"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DCMPL = 151; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dcmpg"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DCMPG = 152; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifeq"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IFEQ = 153; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifne"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IFNE = 154; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iflt"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IFLT = 155; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifge"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IFGE = 156; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifgt"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IFGT = 157; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifle"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IFLE = 158; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IF_ICMPEQ = 159; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IF_ICMPNE = 160; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IF_ICMPLT = 161; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IF_ICMPGE = 162; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IF_ICMPGT = 163; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IF_ICMPLE = 164; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_acmp_cond"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IF_ACMPEQ = 165; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_acmp_cond"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IF_ACMPNE = 166; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.goto"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short GOTO = 167; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.jsr"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short JSR = 168; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ret"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short RET = 169; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.tableswitch"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short TABLESWITCH = 170; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lookupswitch"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LOOKUPSWITCH = 171; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ireturn"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IRETURN = 172; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lreturn"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short LRETURN = 173; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.freturn"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short FRETURN = 174; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dreturn"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short DRETURN = 175; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.areturn"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ARETURN = 176; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.return"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short RETURN = 177; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.getstatic"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short GETSTATIC = 178; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.putstatic"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short PUTSTATIC = 179; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.getfield"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short GETFIELD = 180; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.putfield"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short PUTFIELD = 181; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokevirtual"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short INVOKEVIRTUAL = 182; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokespecial"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short INVOKESPECIAL = 183; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short INVOKENONVIRTUAL = 183; // Old name in JDK 1.0 - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokestatic"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short INVOKESTATIC = 184; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokeinterface"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short INVOKEINTERFACE = 185; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokedynamic"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short INVOKEDYNAMIC = 186; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.new"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short NEW = 187; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.newarray"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short NEWARRAY = 188; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.anewarray"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ANEWARRAY = 189; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.arraylength"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ARRAYLENGTH = 190; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.athrow"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short ATHROW = 191; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.checkcast"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short CHECKCAST = 192; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.instanceof"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short INSTANCEOF = 193; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.monitorenter"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short MONITORENTER = 194; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.monitorexit"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short MONITOREXIT = 195; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.wide"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short WIDE = 196; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.multianewarray"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short MULTIANEWARRAY = 197; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifnull"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IFNULL = 198; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifnonnull"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short IFNONNULL = 199; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.goto_w"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short GOTO_W = 200; - - /** - * Java VM opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.jsr_w"> - * Opcode definitions in The Java Virtual Machine Specification</a> - */ - public static final short JSR_W = 201; - - /** - * JVM internal opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.2"> - * Reserved opcodes in the Java Virtual Machine Specification</a> - */ - public static final short BREAKPOINT = 202; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short LDC_QUICK = 203; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short LDC_W_QUICK = 204; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short LDC2_W_QUICK = 205; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short GETFIELD_QUICK = 206; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short PUTFIELD_QUICK = 207; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short GETFIELD2_QUICK = 208; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short PUTFIELD2_QUICK = 209; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short GETSTATIC_QUICK = 210; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short PUTSTATIC_QUICK = 211; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short GETSTATIC2_QUICK = 212; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short PUTSTATIC2_QUICK = 213; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short INVOKEVIRTUAL_QUICK = 214; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short INVOKENONVIRTUAL_QUICK = 215; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short INVOKESUPER_QUICK = 216; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short INVOKESTATIC_QUICK = 217; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short INVOKEINTERFACE_QUICK = 218; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short INVOKEVIRTUALOBJECT_QUICK = 219; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short NEW_QUICK = 221; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short ANEWARRAY_QUICK = 222; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short MULTIANEWARRAY_QUICK = 223; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short CHECKCAST_QUICK = 224; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short INSTANCEOF_QUICK = 225; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short INVOKEVIRTUAL_QUICK_W = 226; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short GETFIELD_QUICK_W = 227; - - /** - * JVM internal opcode. - * - * @see <a - * href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> - * Specification of _quick opcodes in the Java Virtual Machine Specification - * (version 1)</a> - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> - * Why the _quick opcodes were removed from the second version of the Java - * Virtual Machine Specification.</a> - */ - public static final short PUTFIELD_QUICK_W = 228; - - /** - * JVM internal opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.2"> - * Reserved opcodes in the Java Virtual Machine Specification</a> - */ - public static final short IMPDEP1 = 254; - - /** - * JVM internal opcode. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.2"> - * Reserved opcodes in the Java Virtual Machine Specification</a> - */ - public static final short IMPDEP2 = 255; - - /** - * BCEL virtual instruction for pushing an arbitrary data type onto the - * stack. Will be converted to the appropriate JVM opcode when the class is - * dumped. - */ - public static final short PUSH = 4711; - - /** - * BCEL virtual instruction for either LOOKUPSWITCH or TABLESWITCH. Will be - * converted to the appropriate JVM opcode when the class is dumped. - */ - public static final short SWITCH = 4712; - - /** - * Illegal opcode. - */ - public static final short UNDEFINED = -1; - - /** - * Illegal opcode. - */ - public static final short UNPREDICTABLE = -2; - - /** - * Illegal opcode. - */ - public static final short RESERVED = -3; - - /** - * Mnemonic for an illegal opcode. - */ - public static final String ILLEGAL_OPCODE = "<illegal opcode>"; - - /** - * Mnemonic for an illegal type. - */ - public static final String ILLEGAL_TYPE = "<illegal type>"; - - /** - * Boolean data type. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> - * Static Constraints in the Java Virtual Machine Specification</a> - */ - public static final byte T_BOOLEAN = 4; - - /** - * Char data type. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> - * Static Constraints in the Java Virtual Machine Specification</a> - */ - public static final byte T_CHAR = 5; - - /** - * Float data type. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> - * Static Constraints in the Java Virtual Machine Specification</a> - */ - public static final byte T_FLOAT = 6; - - /** - * Double data type. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> - * Static Constraints in the Java Virtual Machine Specification</a> - */ - public static final byte T_DOUBLE = 7; - - /** - * Byte data type. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> - * Static Constraints in the Java Virtual Machine Specification</a> - */ - public static final byte T_BYTE = 8; - - /** - * Short data type. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> - * Static Constraints in the Java Virtual Machine Specification</a> - */ - public static final byte T_SHORT = 9; - - /** - * Int data type. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> - * Static Constraints in the Java Virtual Machine Specification</a> - */ - public static final byte T_INT = 10; - - /** - * Long data type. - * - * @see <a - * href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> - * Static Constraints in the Java Virtual Machine Specification</a> - */ - public static final byte T_LONG = 11; - - /** - * Void data type (non-standard). - */ - public static final byte T_VOID = 12; // Non-standard - - /** - * Array data type. - */ - public static final byte T_ARRAY = 13; - - /** - * Object data type. - */ - public static final byte T_OBJECT = 14; - - /** - * Reference data type (deprecated). - */ - public static final byte T_REFERENCE = 14; // Deprecated - - /** - * Unknown data type. - */ - public static final byte T_UNKNOWN = 15; - - /** - * Address data type. - */ - public static final byte T_ADDRESS = 16; - - /** - * The primitive type names corresponding to the T_XX constants, e.g., - * TYPE_NAMES[T_INT] = "int" - */ - private static final String[] TYPE_NAMES = { - ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, - "boolean", "char", "float", "double", "byte", "short", "int", "long", - "void", "array", "object", "unknown", "address" - }; - - /** - * The primitive type names corresponding to the T_XX constants, e.g., - * TYPE_NAMES[T_INT] = "int" - * - * @param index - * @return the type name - * @since 6.0 - */ - public static String getTypeName(final int index) { - return TYPE_NAMES[index]; - } - - /** - * The primitive class names corresponding to the T_XX constants, e.g., - * CLASS_TYPE_NAMES[T_INT] = "java.lang.Integer" - */ - private static final String[] CLASS_TYPE_NAMES = { - ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, - "java.lang.Boolean", "java.lang.Character", "java.lang.Float", - "java.lang.Double", "java.lang.Byte", "java.lang.Short", - "java.lang.Integer", "java.lang.Long", "java.lang.Void", - ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE - }; - - /** - * The primitive class names corresponding to the T_XX constants, e.g., - * CLASS_TYPE_NAMES[T_INT] = "java.lang.Integer" - * - * @param index - * @return the class name - * @since 6.0 - */ - public static String getClassTypeName(final int index) { - return CLASS_TYPE_NAMES[index]; - } - - /** - * The signature characters corresponding to primitive types, e.g., - * SHORT_TYPE_NAMES[T_INT] = "I" - */ - private static final String[] SHORT_TYPE_NAMES = { - ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, - "Z", "C", "F", "D", "B", "S", "I", "J", - "V", ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE - }; - - /** - * - * @param index - * @return the short type name - * @since 6.0 - */ - public static String getShortTypeName(final int index) { - return SHORT_TYPE_NAMES[index]; - } - - /** - * Number of byte code operands for each opcode, i.e., number of bytes after - * the tag byte itself. Indexed by opcode, so NO_OF_OPERANDS[BIPUSH] = the - * number of operands for a bipush instruction. - */ - private static final short[] NO_OF_OPERANDS = { - 0/*nop*/, 0/*aconst_null*/, 0/*iconst_m1*/, 0/*iconst_0*/, - 0/*iconst_1*/, 0/*iconst_2*/, 0/*iconst_3*/, 0/*iconst_4*/, - 0/*iconst_5*/, 0/*lconst_0*/, 0/*lconst_1*/, 0/*fconst_0*/, - 0/*fconst_1*/, 0/*fconst_2*/, 0/*dconst_0*/, 0/*dconst_1*/, - 1/*bipush*/, 2/*sipush*/, 1/*ldc*/, 2/*ldc_w*/, 2/*ldc2_w*/, - 1/*iload*/, 1/*lload*/, 1/*fload*/, 1/*dload*/, 1/*aload*/, - 0/*iload_0*/, 0/*iload_1*/, 0/*iload_2*/, 0/*iload_3*/, - 0/*lload_0*/, 0/*lload_1*/, 0/*lload_2*/, 0/*lload_3*/, - 0/*fload_0*/, 0/*fload_1*/, 0/*fload_2*/, 0/*fload_3*/, - 0/*dload_0*/, 0/*dload_1*/, 0/*dload_2*/, 0/*dload_3*/, - 0/*aload_0*/, 0/*aload_1*/, 0/*aload_2*/, 0/*aload_3*/, - 0/*iaload*/, 0/*laload*/, 0/*faload*/, 0/*daload*/, - 0/*aaload*/, 0/*baload*/, 0/*caload*/, 0/*saload*/, - 1/*istore*/, 1/*lstore*/, 1/*fstore*/, 1/*dstore*/, - 1/*astore*/, 0/*istore_0*/, 0/*istore_1*/, 0/*istore_2*/, - 0/*istore_3*/, 0/*lstore_0*/, 0/*lstore_1*/, 0/*lstore_2*/, - 0/*lstore_3*/, 0/*fstore_0*/, 0/*fstore_1*/, 0/*fstore_2*/, - 0/*fstore_3*/, 0/*dstore_0*/, 0/*dstore_1*/, 0/*dstore_2*/, - 0/*dstore_3*/, 0/*astore_0*/, 0/*astore_1*/, 0/*astore_2*/, - 0/*astore_3*/, 0/*iastore*/, 0/*lastore*/, 0/*fastore*/, - 0/*dastore*/, 0/*aastore*/, 0/*bastore*/, 0/*castore*/, - 0/*sastore*/, 0/*pop*/, 0/*pop2*/, 0/*dup*/, 0/*dup_x1*/, - 0/*dup_x2*/, 0/*dup2*/, 0/*dup2_x1*/, 0/*dup2_x2*/, 0/*swap*/, - 0/*iadd*/, 0/*ladd*/, 0/*fadd*/, 0/*dadd*/, 0/*isub*/, - 0/*lsub*/, 0/*fsub*/, 0/*dsub*/, 0/*imul*/, 0/*lmul*/, - 0/*fmul*/, 0/*dmul*/, 0/*idiv*/, 0/*ldiv*/, 0/*fdiv*/, - 0/*ddiv*/, 0/*irem*/, 0/*lrem*/, 0/*frem*/, 0/*drem*/, - 0/*ineg*/, 0/*lneg*/, 0/*fneg*/, 0/*dneg*/, 0/*ishl*/, - 0/*lshl*/, 0/*ishr*/, 0/*lshr*/, 0/*iushr*/, 0/*lushr*/, - 0/*iand*/, 0/*land*/, 0/*ior*/, 0/*lor*/, 0/*ixor*/, 0/*lxor*/, - 2/*iinc*/, 0/*i2l*/, 0/*i2f*/, 0/*i2d*/, 0/*l2i*/, 0/*l2f*/, - 0/*l2d*/, 0/*f2i*/, 0/*f2l*/, 0/*f2d*/, 0/*d2i*/, 0/*d2l*/, - 0/*d2f*/, 0/*i2b*/, 0/*i2c*/, 0/*i2s*/, 0/*lcmp*/, 0/*fcmpl*/, - 0/*fcmpg*/, 0/*dcmpl*/, 0/*dcmpg*/, 2/*ifeq*/, 2/*ifne*/, - 2/*iflt*/, 2/*ifge*/, 2/*ifgt*/, 2/*ifle*/, 2/*if_icmpeq*/, - 2/*if_icmpne*/, 2/*if_icmplt*/, 2/*if_icmpge*/, 2/*if_icmpgt*/, - 2/*if_icmple*/, 2/*if_acmpeq*/, 2/*if_acmpne*/, 2/*goto*/, - 2/*jsr*/, 1/*ret*/, UNPREDICTABLE/*tableswitch*/, UNPREDICTABLE/*lookupswitch*/, - 0/*ireturn*/, 0/*lreturn*/, 0/*freturn*/, - 0/*dreturn*/, 0/*areturn*/, 0/*return*/, - 2/*getstatic*/, 2/*putstatic*/, 2/*getfield*/, - 2/*putfield*/, 2/*invokevirtual*/, 2/*invokespecial*/, 2/*invokestatic*/, - 4/*invokeinterface*/, 4/*invokedynamic*/, 2/*new*/, - 1/*newarray*/, 2/*anewarray*/, - 0/*arraylength*/, 0/*athrow*/, 2/*checkcast*/, - 2/*instanceof*/, 0/*monitorenter*/, - 0/*monitorexit*/, UNPREDICTABLE/*wide*/, 3/*multianewarray*/, - 2/*ifnull*/, 2/*ifnonnull*/, 4/*goto_w*/, - 4/*jsr_w*/, 0/*breakpoint*/, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, RESERVED/*impdep1*/, RESERVED/*impdep2*/}; - - /** - * - * @param index - * @return Number of byte code operands - * @since 6.0 - */ - public static short getNoOfOperands(final int index) { - return NO_OF_OPERANDS[index]; - } - - /** - * How the byte code operands are to be interpreted for each opcode. Indexed - * by opcode. TYPE_OF_OPERANDS[ILOAD] = an array of shorts describing the - * data types for the instruction. - */ - private static final short[][] TYPE_OF_OPERANDS = { - {}/*nop*/, {}/*aconst_null*/, {}/*iconst_m1*/, {}/*iconst_0*/, - {}/*iconst_1*/, {}/*iconst_2*/, {}/*iconst_3*/, {}/*iconst_4*/, - {}/*iconst_5*/, {}/*lconst_0*/, {}/*lconst_1*/, {}/*fconst_0*/, - {}/*fconst_1*/, {}/*fconst_2*/, {}/*dconst_0*/, {}/*dconst_1*/, - {T_BYTE}/*bipush*/, {T_SHORT}/*sipush*/, {T_BYTE}/*ldc*/, - {T_SHORT}/*ldc_w*/, {T_SHORT}/*ldc2_w*/, - {T_BYTE}/*iload*/, {T_BYTE}/*lload*/, {T_BYTE}/*fload*/, - {T_BYTE}/*dload*/, {T_BYTE}/*aload*/, {}/*iload_0*/, - {}/*iload_1*/, {}/*iload_2*/, {}/*iload_3*/, {}/*lload_0*/, - {}/*lload_1*/, {}/*lload_2*/, {}/*lload_3*/, {}/*fload_0*/, - {}/*fload_1*/, {}/*fload_2*/, {}/*fload_3*/, {}/*dload_0*/, - {}/*dload_1*/, {}/*dload_2*/, {}/*dload_3*/, {}/*aload_0*/, - {}/*aload_1*/, {}/*aload_2*/, {}/*aload_3*/, {}/*iaload*/, - {}/*laload*/, {}/*faload*/, {}/*daload*/, {}/*aaload*/, - {}/*baload*/, {}/*caload*/, {}/*saload*/, {T_BYTE}/*istore*/, - {T_BYTE}/*lstore*/, {T_BYTE}/*fstore*/, {T_BYTE}/*dstore*/, - {T_BYTE}/*astore*/, {}/*istore_0*/, {}/*istore_1*/, - {}/*istore_2*/, {}/*istore_3*/, {}/*lstore_0*/, {}/*lstore_1*/, - {}/*lstore_2*/, {}/*lstore_3*/, {}/*fstore_0*/, {}/*fstore_1*/, - {}/*fstore_2*/, {}/*fstore_3*/, {}/*dstore_0*/, {}/*dstore_1*/, - {}/*dstore_2*/, {}/*dstore_3*/, {}/*astore_0*/, {}/*astore_1*/, - {}/*astore_2*/, {}/*astore_3*/, {}/*iastore*/, {}/*lastore*/, - {}/*fastore*/, {}/*dastore*/, {}/*aastore*/, {}/*bastore*/, - {}/*castore*/, {}/*sastore*/, {}/*pop*/, {}/*pop2*/, {}/*dup*/, - {}/*dup_x1*/, {}/*dup_x2*/, {}/*dup2*/, {}/*dup2_x1*/, - {}/*dup2_x2*/, {}/*swap*/, {}/*iadd*/, {}/*ladd*/, {}/*fadd*/, - {}/*dadd*/, {}/*isub*/, {}/*lsub*/, {}/*fsub*/, {}/*dsub*/, - {}/*imul*/, {}/*lmul*/, {}/*fmul*/, {}/*dmul*/, {}/*idiv*/, - {}/*ldiv*/, {}/*fdiv*/, {}/*ddiv*/, {}/*irem*/, {}/*lrem*/, - {}/*frem*/, {}/*drem*/, {}/*ineg*/, {}/*lneg*/, {}/*fneg*/, - {}/*dneg*/, {}/*ishl*/, {}/*lshl*/, {}/*ishr*/, {}/*lshr*/, - {}/*iushr*/, {}/*lushr*/, {}/*iand*/, {}/*land*/, {}/*ior*/, - {}/*lor*/, {}/*ixor*/, {}/*lxor*/, {T_BYTE, T_BYTE}/*iinc*/, - {}/*i2l*/, {}/*i2f*/, {}/*i2d*/, {}/*l2i*/, {}/*l2f*/, {}/*l2d*/, - {}/*f2i*/, {}/*f2l*/, {}/*f2d*/, {}/*d2i*/, {}/*d2l*/, {}/*d2f*/, - {}/*i2b*/, {}/*i2c*/, {}/*i2s*/, {}/*lcmp*/, {}/*fcmpl*/, - {}/*fcmpg*/, {}/*dcmpl*/, {}/*dcmpg*/, {T_SHORT}/*ifeq*/, - {T_SHORT}/*ifne*/, {T_SHORT}/*iflt*/, {T_SHORT}/*ifge*/, - {T_SHORT}/*ifgt*/, {T_SHORT}/*ifle*/, {T_SHORT}/*if_icmpeq*/, - {T_SHORT}/*if_icmpne*/, {T_SHORT}/*if_icmplt*/, - {T_SHORT}/*if_icmpge*/, {T_SHORT}/*if_icmpgt*/, - {T_SHORT}/*if_icmple*/, {T_SHORT}/*if_acmpeq*/, - {T_SHORT}/*if_acmpne*/, {T_SHORT}/*goto*/, {T_SHORT}/*jsr*/, - {T_BYTE}/*ret*/, {}/*tableswitch*/, {}/*lookupswitch*/, - {}/*ireturn*/, {}/*lreturn*/, {}/*freturn*/, {}/*dreturn*/, - {}/*areturn*/, {}/*return*/, {T_SHORT}/*getstatic*/, - {T_SHORT}/*putstatic*/, {T_SHORT}/*getfield*/, - {T_SHORT}/*putfield*/, {T_SHORT}/*invokevirtual*/, - {T_SHORT}/*invokespecial*/, {T_SHORT}/*invokestatic*/, - {T_SHORT, T_BYTE, T_BYTE}/*invokeinterface*/, {T_SHORT, T_BYTE, T_BYTE}/*invokedynamic*/, - {T_SHORT}/*new*/, {T_BYTE}/*newarray*/, - {T_SHORT}/*anewarray*/, {}/*arraylength*/, {}/*athrow*/, - {T_SHORT}/*checkcast*/, {T_SHORT}/*instanceof*/, - {}/*monitorenter*/, {}/*monitorexit*/, {T_BYTE}/*wide*/, - {T_SHORT, T_BYTE}/*multianewarray*/, {T_SHORT}/*ifnull*/, - {T_SHORT}/*ifnonnull*/, {T_INT}/*goto_w*/, {T_INT}/*jsr_w*/, - {}/*breakpoint*/, {}, {}, {}, {}, {}, {}, {}, - {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, - {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, - {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, - {}/*impdep1*/, {}/*impdep2*/}; - - /** - * @since 6.0 - */ - public static short getOperandType(final int opcode, final int index) { - return TYPE_OF_OPERANDS[opcode][index]; - } - - /** - * @since 6.0 - */ - public static long getOperandTypeCount(final int opcode) { - return TYPE_OF_OPERANDS[opcode].length; - } - - /** - * Names of opcodes. Indexed by opcode. OPCODE_NAMES[ALOAD] = "aload". - */ - private static final String[] OPCODE_NAMES = { - "nop", "aconst_null", "iconst_m1", "iconst_0", "iconst_1", - "iconst_2", "iconst_3", "iconst_4", "iconst_5", "lconst_0", - "lconst_1", "fconst_0", "fconst_1", "fconst_2", "dconst_0", - "dconst_1", "bipush", "sipush", "ldc", "ldc_w", "ldc2_w", "iload", - "lload", "fload", "dload", "aload", "iload_0", "iload_1", "iload_2", - "iload_3", "lload_0", "lload_1", "lload_2", "lload_3", "fload_0", - "fload_1", "fload_2", "fload_3", "dload_0", "dload_1", "dload_2", - "dload_3", "aload_0", "aload_1", "aload_2", "aload_3", "iaload", - "laload", "faload", "daload", "aaload", "baload", "caload", "saload", - "istore", "lstore", "fstore", "dstore", "astore", "istore_0", - "istore_1", "istore_2", "istore_3", "lstore_0", "lstore_1", - "lstore_2", "lstore_3", "fstore_0", "fstore_1", "fstore_2", - "fstore_3", "dstore_0", "dstore_1", "dstore_2", "dstore_3", - "astore_0", "astore_1", "astore_2", "astore_3", "iastore", "lastore", - "fastore", "dastore", "aastore", "bastore", "castore", "sastore", - "pop", "pop2", "dup", "dup_x1", "dup_x2", "dup2", "dup2_x1", - "dup2_x2", "swap", "iadd", "ladd", "fadd", "dadd", "isub", "lsub", - "fsub", "dsub", "imul", "lmul", "fmul", "dmul", "idiv", "ldiv", - "fdiv", "ddiv", "irem", "lrem", "frem", "drem", "ineg", "lneg", - "fneg", "dneg", "ishl", "lshl", "ishr", "lshr", "iushr", "lushr", - "iand", "land", "ior", "lor", "ixor", "lxor", "iinc", "i2l", "i2f", - "i2d", "l2i", "l2f", "l2d", "f2i", "f2l", "f2d", "d2i", "d2l", "d2f", - "i2b", "i2c", "i2s", "lcmp", "fcmpl", "fcmpg", - "dcmpl", "dcmpg", "ifeq", "ifne", "iflt", "ifge", "ifgt", "ifle", - "if_icmpeq", "if_icmpne", "if_icmplt", "if_icmpge", "if_icmpgt", - "if_icmple", "if_acmpeq", "if_acmpne", "goto", "jsr", "ret", - "tableswitch", "lookupswitch", "ireturn", "lreturn", "freturn", - "dreturn", "areturn", "return", "getstatic", "putstatic", "getfield", - "putfield", "invokevirtual", "invokespecial", "invokestatic", - "invokeinterface", "invokedynamic", "new", "newarray", "anewarray", - "arraylength", "athrow", "checkcast", "instanceof", "monitorenter", - "monitorexit", "wide", "multianewarray", "ifnull", "ifnonnull", - "goto_w", "jsr_w", "breakpoint", ILLEGAL_OPCODE, ILLEGAL_OPCODE, - ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, - ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, - ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, - ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, - ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, - ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, - ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, - ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, - ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, - ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, - ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, - ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, - ILLEGAL_OPCODE, "impdep1", "impdep2" - }; - - /** - * @since 6.0 - */ - public static final int OPCODE_NAMES_LENGTH = OPCODE_NAMES.length; - - /** - * @since 6.0 - */ - public static String getOpcodeName(final int index) { - return OPCODE_NAMES[index]; - } - - /** - * Number of words consumed on operand stack by instructions. Indexed by - * opcode. CONSUME_STACK[FALOAD] = number of words consumed from the stack - * by a faload instruction. - */ - private static final int[] CONSUME_STACK = { - 0/*nop*/, 0/*aconst_null*/, 0/*iconst_m1*/, 0/*iconst_0*/, 0/*iconst_1*/, - 0/*iconst_2*/, 0/*iconst_3*/, 0/*iconst_4*/, 0/*iconst_5*/, 0/*lconst_0*/, - 0/*lconst_1*/, 0/*fconst_0*/, 0/*fconst_1*/, 0/*fconst_2*/, 0/*dconst_0*/, - 0/*dconst_1*/, 0/*bipush*/, 0/*sipush*/, 0/*ldc*/, 0/*ldc_w*/, 0/*ldc2_w*/, 0/*iload*/, - 0/*lload*/, 0/*fload*/, 0/*dload*/, 0/*aload*/, 0/*iload_0*/, 0/*iload_1*/, 0/*iload_2*/, - 0/*iload_3*/, 0/*lload_0*/, 0/*lload_1*/, 0/*lload_2*/, 0/*lload_3*/, 0/*fload_0*/, - 0/*fload_1*/, 0/*fload_2*/, 0/*fload_3*/, 0/*dload_0*/, 0/*dload_1*/, 0/*dload_2*/, - 0/*dload_3*/, 0/*aload_0*/, 0/*aload_1*/, 0/*aload_2*/, 0/*aload_3*/, 2/*iaload*/, - 2/*laload*/, 2/*faload*/, 2/*daload*/, 2/*aaload*/, 2/*baload*/, 2/*caload*/, 2/*saload*/, - 1/*istore*/, 2/*lstore*/, 1/*fstore*/, 2/*dstore*/, 1/*astore*/, 1/*istore_0*/, - 1/*istore_1*/, 1/*istore_2*/, 1/*istore_3*/, 2/*lstore_0*/, 2/*lstore_1*/, - 2/*lstore_2*/, 2/*lstore_3*/, 1/*fstore_0*/, 1/*fstore_1*/, 1/*fstore_2*/, - 1/*fstore_3*/, 2/*dstore_0*/, 2/*dstore_1*/, 2/*dstore_2*/, 2/*dstore_3*/, - 1/*astore_0*/, 1/*astore_1*/, 1/*astore_2*/, 1/*astore_3*/, 3/*iastore*/, 4/*lastore*/, - 3/*fastore*/, 4/*dastore*/, 3/*aastore*/, 3/*bastore*/, 3/*castore*/, 3/*sastore*/, - 1/*pop*/, 2/*pop2*/, 1/*dup*/, 2/*dup_x1*/, 3/*dup_x2*/, 2/*dup2*/, 3/*dup2_x1*/, - 4/*dup2_x2*/, 2/*swap*/, 2/*iadd*/, 4/*ladd*/, 2/*fadd*/, 4/*dadd*/, 2/*isub*/, 4/*lsub*/, - 2/*fsub*/, 4/*dsub*/, 2/*imul*/, 4/*lmul*/, 2/*fmul*/, 4/*dmul*/, 2/*idiv*/, 4/*ldiv*/, - 2/*fdiv*/, 4/*ddiv*/, 2/*irem*/, 4/*lrem*/, 2/*frem*/, 4/*drem*/, 1/*ineg*/, 2/*lneg*/, - 1/*fneg*/, 2/*dneg*/, 2/*ishl*/, 3/*lshl*/, 2/*ishr*/, 3/*lshr*/, 2/*iushr*/, 3/*lushr*/, - 2/*iand*/, 4/*land*/, 2/*ior*/, 4/*lor*/, 2/*ixor*/, 4/*lxor*/, 0/*iinc*/, - 1/*i2l*/, 1/*i2f*/, 1/*i2d*/, 2/*l2i*/, 2/*l2f*/, 2/*l2d*/, 1/*f2i*/, 1/*f2l*/, - 1/*f2d*/, 2/*d2i*/, 2/*d2l*/, 2/*d2f*/, 1/*i2b*/, 1/*i2c*/, 1/*i2s*/, - 4/*lcmp*/, 2/*fcmpl*/, 2/*fcmpg*/, 4/*dcmpl*/, 4/*dcmpg*/, 1/*ifeq*/, 1/*ifne*/, - 1/*iflt*/, 1/*ifge*/, 1/*ifgt*/, 1/*ifle*/, 2/*if_icmpeq*/, 2/*if_icmpne*/, 2/*if_icmplt*/, - 2 /*if_icmpge*/, 2/*if_icmpgt*/, 2/*if_icmple*/, 2/*if_acmpeq*/, 2/*if_acmpne*/, - 0/*goto*/, 0/*jsr*/, 0/*ret*/, 1/*tableswitch*/, 1/*lookupswitch*/, 1/*ireturn*/, - 2/*lreturn*/, 1/*freturn*/, 2/*dreturn*/, 1/*areturn*/, 0/*return*/, 0/*getstatic*/, - UNPREDICTABLE/*putstatic*/, 1/*getfield*/, UNPREDICTABLE/*putfield*/, - UNPREDICTABLE/*invokevirtual*/, UNPREDICTABLE/*invokespecial*/, - UNPREDICTABLE/*invokestatic*/, - UNPREDICTABLE/*invokeinterface*/, UNPREDICTABLE/*invokedynamic*/, 0/*new*/, 1/*newarray*/, 1/*anewarray*/, - 1/*arraylength*/, 1/*athrow*/, 1/*checkcast*/, 1/*instanceof*/, 1/*monitorenter*/, - 1/*monitorexit*/, 0/*wide*/, UNPREDICTABLE/*multianewarray*/, 1/*ifnull*/, 1/*ifnonnull*/, - 0/*goto_w*/, 0/*jsr_w*/, 0/*breakpoint*/, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNPREDICTABLE/*impdep1*/, UNPREDICTABLE/*impdep2*/}; - - /** - * - * @param index - * @return Number of words consumed on operand stack - * @since 6.0 - */ - public static int getConsumeStack(final int index) { - return CONSUME_STACK[index]; - } - - /** - * Number of words produced onto operand stack by instructions. Indexed by - * opcode. CONSUME_STACK[DALOAD] = number of words consumed from the stack - * by a daload instruction. - */ - private static final int[] PRODUCE_STACK = { - 0/*nop*/, 1/*aconst_null*/, 1/*iconst_m1*/, 1/*iconst_0*/, 1/*iconst_1*/, - 1/*iconst_2*/, 1/*iconst_3*/, 1/*iconst_4*/, 1/*iconst_5*/, 2/*lconst_0*/, - 2/*lconst_1*/, 1/*fconst_0*/, 1/*fconst_1*/, 1/*fconst_2*/, 2/*dconst_0*/, - 2/*dconst_1*/, 1/*bipush*/, 1/*sipush*/, 1/*ldc*/, 1/*ldc_w*/, 2/*ldc2_w*/, 1/*iload*/, - 2/*lload*/, 1/*fload*/, 2/*dload*/, 1/*aload*/, 1/*iload_0*/, 1/*iload_1*/, 1/*iload_2*/, - 1/*iload_3*/, 2/*lload_0*/, 2/*lload_1*/, 2/*lload_2*/, 2/*lload_3*/, 1/*fload_0*/, - 1/*fload_1*/, 1/*fload_2*/, 1/*fload_3*/, 2/*dload_0*/, 2/*dload_1*/, 2/*dload_2*/, - 2/*dload_3*/, 1/*aload_0*/, 1/*aload_1*/, 1/*aload_2*/, 1/*aload_3*/, 1/*iaload*/, - 2/*laload*/, 1/*faload*/, 2/*daload*/, 1/*aaload*/, 1/*baload*/, 1/*caload*/, 1/*saload*/, - 0/*istore*/, 0/*lstore*/, 0/*fstore*/, 0/*dstore*/, 0/*astore*/, 0/*istore_0*/, - 0/*istore_1*/, 0/*istore_2*/, 0/*istore_3*/, 0/*lstore_0*/, 0/*lstore_1*/, - 0/*lstore_2*/, 0/*lstore_3*/, 0/*fstore_0*/, 0/*fstore_1*/, 0/*fstore_2*/, - 0/*fstore_3*/, 0/*dstore_0*/, 0/*dstore_1*/, 0/*dstore_2*/, 0/*dstore_3*/, - 0/*astore_0*/, 0/*astore_1*/, 0/*astore_2*/, 0/*astore_3*/, 0/*iastore*/, 0/*lastore*/, - 0/*fastore*/, 0/*dastore*/, 0/*aastore*/, 0/*bastore*/, 0/*castore*/, 0/*sastore*/, - 0/*pop*/, 0/*pop2*/, 2/*dup*/, 3/*dup_x1*/, 4/*dup_x2*/, 4/*dup2*/, 5/*dup2_x1*/, - 6/*dup2_x2*/, 2/*swap*/, 1/*iadd*/, 2/*ladd*/, 1/*fadd*/, 2/*dadd*/, 1/*isub*/, 2/*lsub*/, - 1/*fsub*/, 2/*dsub*/, 1/*imul*/, 2/*lmul*/, 1/*fmul*/, 2/*dmul*/, 1/*idiv*/, 2/*ldiv*/, - 1/*fdiv*/, 2/*ddiv*/, 1/*irem*/, 2/*lrem*/, 1/*frem*/, 2/*drem*/, 1/*ineg*/, 2/*lneg*/, - 1/*fneg*/, 2/*dneg*/, 1/*ishl*/, 2/*lshl*/, 1/*ishr*/, 2/*lshr*/, 1/*iushr*/, 2/*lushr*/, - 1/*iand*/, 2/*land*/, 1/*ior*/, 2/*lor*/, 1/*ixor*/, 2/*lxor*/, - 0/*iinc*/, 2/*i2l*/, 1/*i2f*/, 2/*i2d*/, 1/*l2i*/, 1/*l2f*/, 2/*l2d*/, 1/*f2i*/, - 2/*f2l*/, 2/*f2d*/, 1/*d2i*/, 2/*d2l*/, 1/*d2f*/, - 1/*i2b*/, 1/*i2c*/, 1/*i2s*/, 1/*lcmp*/, 1/*fcmpl*/, 1/*fcmpg*/, - 1/*dcmpl*/, 1/*dcmpg*/, 0/*ifeq*/, 0/*ifne*/, 0/*iflt*/, 0/*ifge*/, 0/*ifgt*/, 0/*ifle*/, - 0/*if_icmpeq*/, 0/*if_icmpne*/, 0/*if_icmplt*/, 0/*if_icmpge*/, 0/*if_icmpgt*/, - 0/*if_icmple*/, 0/*if_acmpeq*/, 0/*if_acmpne*/, 0/*goto*/, 1/*jsr*/, 0/*ret*/, - 0/*tableswitch*/, 0/*lookupswitch*/, 0/*ireturn*/, 0/*lreturn*/, 0/*freturn*/, - 0/*dreturn*/, 0/*areturn*/, 0/*return*/, UNPREDICTABLE/*getstatic*/, 0/*putstatic*/, - UNPREDICTABLE/*getfield*/, 0/*putfield*/, UNPREDICTABLE/*invokevirtual*/, - UNPREDICTABLE/*invokespecial*/, UNPREDICTABLE/*invokestatic*/, - UNPREDICTABLE/*invokeinterface*/, UNPREDICTABLE/*invokedynamic*/, 1/*new*/, 1/*newarray*/, 1/*anewarray*/, - 1/*arraylength*/, 1/*athrow*/, 1/*checkcast*/, 1/*instanceof*/, 0/*monitorenter*/, - 0/*monitorexit*/, 0/*wide*/, 1/*multianewarray*/, 0/*ifnull*/, 0/*ifnonnull*/, - 0/*goto_w*/, 1/*jsr_w*/, 0/*breakpoint*/, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, - UNDEFINED, UNPREDICTABLE/*impdep1*/, UNPREDICTABLE/*impdep2*/}; - - /** - * - * @param index - * @return Number of words produced onto operand stack - * @since 6.0 - */ - public static int getProduceStack(final int index) { - return PRODUCE_STACK[index]; - } - - /** - * Attributes and their corresponding names. - */ - public static final byte ATTR_UNKNOWN = -1; - public static final byte ATTR_SOURCE_FILE = 0; - public static final byte ATTR_CONSTANT_VALUE = 1; - public static final byte ATTR_CODE = 2; - public static final byte ATTR_EXCEPTIONS = 3; - public static final byte ATTR_LINE_NUMBER_TABLE = 4; - public static final byte ATTR_LOCAL_VARIABLE_TABLE = 5; - public static final byte ATTR_INNER_CLASSES = 6; - public static final byte ATTR_SYNTHETIC = 7; - public static final byte ATTR_DEPRECATED = 8; - public static final byte ATTR_PMG = 9; - public static final byte ATTR_SIGNATURE = 10; - public static final byte ATTR_STACK_MAP = 11; - public static final byte ATTR_RUNTIME_VISIBLE_ANNOTATIONS = 12; - public static final byte ATTR_RUNTIME_INVISIBLE_ANNOTATIONS = 13; - public static final byte ATTR_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS = 14; - public static final byte ATTR_RUNTIME_INVISIBLE_PARAMETER_ANNOTATIONS = 15; - public static final byte ATTR_ANNOTATION_DEFAULT = 16; - public static final byte ATTR_LOCAL_VARIABLE_TYPE_TABLE = 17; - public static final byte ATTR_ENCLOSING_METHOD = 18; - public static final byte ATTR_STACK_MAP_TABLE = 19; - public static final byte ATTR_BOOTSTRAP_METHODS = 20; - public static final byte ATTR_METHOD_PARAMETERS = 21; - - public static final short KNOWN_ATTRIBUTES = 22; // count of attributes - - private static final String[] ATTRIBUTE_NAMES = { - "SourceFile", "ConstantValue", "Code", "Exceptions", - "LineNumberTable", "LocalVariableTable", - "InnerClasses", "Synthetic", "Deprecated", - "PMGClass", "Signature", "StackMap", - "RuntimeVisibleAnnotations", "RuntimeInvisibleAnnotations", - "RuntimeVisibleParameterAnnotations", "RuntimeInvisibleParameterAnnotations", - "AnnotationDefault", "LocalVariableTypeTable", "EnclosingMethod", "StackMapTable", - "BootstrapMethods", "MethodParameters" - }; - - /** - * - * @param index - * @return the attribute name - * @since 6.0 - */ - public static String getAttributeName(final int index) { - return ATTRIBUTE_NAMES[index]; - } - - /** - * Constants used in the StackMap attribute. - */ - public static final byte ITEM_Bogus = 0; - public static final byte ITEM_Integer = 1; - public static final byte ITEM_Float = 2; - public static final byte ITEM_Double = 3; - public static final byte ITEM_Long = 4; - public static final byte ITEM_Null = 5; - public static final byte ITEM_InitObject = 6; - public static final byte ITEM_Object = 7; - public static final byte ITEM_NewObject = 8; - - private static final String[] ITEM_NAMES = { - "Bogus", "Integer", "Float", "Double", "Long", - "Null", "InitObject", "Object", "NewObject" - }; - - /** - * - * @param index - * @return the item name - * @since 6.0 - */ - public static String getItemName(final int index) { - return ITEM_NAMES[index]; - } - - /** - * Constants used to identify StackMapEntry types. - * - * For those types which can specify a range, the constant names the lowest - * value. - */ - public static final int SAME_FRAME = 0; - public static final int SAME_LOCALS_1_STACK_ITEM_FRAME = 64; - public static final int SAME_LOCALS_1_STACK_ITEM_FRAME_EXTENDED = 247; - public static final int CHOP_FRAME = 248; - public static final int SAME_FRAME_EXTENDED = 251; - public static final int APPEND_FRAME = 252; - public static final int FULL_FRAME = 255; - - /** - * Constants that define the maximum value of those constants which store - * ranges. - */ - public static final int SAME_FRAME_MAX = 63; - public static final int SAME_LOCALS_1_STACK_ITEM_FRAME_MAX = 127; - public static final int CHOP_FRAME_MAX = 250; - public static final int APPEND_FRAME_MAX = 254; // Constants defining the behavior of the Method Handles (JVMS 5.4.3.5) - public static final byte REF_getField = 1; - public static final byte REF_getStatic = 2; - public static final byte REF_putField = 3; - public static final byte REF_putStatic = 4; - public static final byte REF_invokeVirtual = 5; - public static final byte REF_invokeStatic = 6; - public static final byte REF_invokeSpecial = 7; - public static final byte REF_newInvokeSpecial = 8; - public static final byte REF_invokeInterface = 9; - /** - * The names of the reference_kinds of a CONSTANT_MethodHandle_info. - */ - private static final String[] METHODHANDLE_NAMES = { - "", "getField", "getStatic", "putField", "putStatic", "invokeVirtual", - "invokeStatic", "invokeSpecial", "newInvokeSpecial", "invokeInterface"}; + public static final byte REF_getField = 1; + public static final byte REF_getStatic = 2; + public static final byte REF_putField = 3; + public static final byte REF_putStatic = 4; + public static final byte REF_invokeVirtual = 5; + public static final byte REF_invokeStatic = 6; + public static final byte REF_invokeSpecial = 7; + public static final byte REF_newInvokeSpecial = 8; + public static final byte REF_invokeInterface = 9; - /** - * - * @param index - * @return the method handle name - * @since 6.0 - */ - public static String getMethodHandleName(final int index) { - return METHODHANDLE_NAMES[index]; - } + /** + * The names of the reference_kinds of a CONSTANT_MethodHandle_info. + */ + private static final String[] METHODHANDLE_NAMES = { + "", "getField", "getStatic", "putField", "putStatic", "invokeVirtual", + "invokeStatic", "invokeSpecial", "newInvokeSpecial", "invokeInterface" }; - private Const() { - } // not instantiable + /** + * + * @param index + * @return the method handle name + * @since 6.0 + */ + public static String getMethodHandleName(final int index) { + return METHODHANDLE_NAMES[index]; + } + + private Const() { } // not instantiable }
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/Repository.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/Repository.java Wed Jun 26 05:49:59 2019 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. */ /* * Licensed to the Apache Software Foundation (ASF) under one or more @@ -25,59 +25,59 @@ /** * The repository maintains informations about class interdependencies, e.g., - * whether a class is a sub-class of another. Delegates actual class loading to - * SyntheticRepository with current class path by default. + * whether a class is a sub-class of another. Delegates actual class loading + * to SyntheticRepository with current class path by default. * * @see com.sun.org.apache.bcel.internal.util.Repository * @see SyntheticRepository * - * @version $Id: Repository.java 1749603 2016-06-21 20:50:19Z ggregory $ + * @version $Id$ + * @LastModified: Jun 2019 */ public abstract class Repository { private static com.sun.org.apache.bcel.internal.util.Repository repository = SyntheticRepository.getInstance(); - /** - * @return currently used repository instance + + /** @return currently used repository instance */ public static com.sun.org.apache.bcel.internal.util.Repository getRepository() { return repository; } - /** - * Set repository instance to be used for class loading + + /** Set repository instance to be used for class loading */ - public static void setRepository(final com.sun.org.apache.bcel.internal.util.Repository rep) { + public static void setRepository( final com.sun.org.apache.bcel.internal.util.Repository rep ) { repository = rep; } - /** - * Lookup class somewhere found on your CLASSPATH, or whereever the + + /** Lookup class somewhere found on your CLASSPATH, or whereever the * repository instance looks for it. * * @return class object for given fully qualified class name - * @throws ClassNotFoundException if the class could not be found or parsed - * correctly + * @throws ClassNotFoundException if the class could not be found or + * parsed correctly */ - public static JavaClass lookupClass(final String class_name) - throws ClassNotFoundException { + public static JavaClass lookupClass( final String class_name ) throws ClassNotFoundException { return repository.loadClass(class_name); } + /** * Try to find class source using the internal repository instance. - * * @see Class * @return JavaClass object for given runtime class - * @throws ClassNotFoundException if the class could not be found or parsed - * correctly + * @throws ClassNotFoundException if the class could not be found or + * parsed correctly */ - public static JavaClass lookupClass(final Class<?> clazz) - throws ClassNotFoundException { + public static JavaClass lookupClass( final Class<?> clazz ) throws ClassNotFoundException { return repository.loadClass(clazz); } + /** * Clear the repository. */ @@ -85,149 +85,162 @@ repository.clear(); } + /** - * Add clazz to repository if there isn't an equally named class already in - * there. + * Add clazz to repository if there isn't an equally named class already in there. * * @return old entry in repository */ - public static JavaClass addClass(final JavaClass clazz) { + public static JavaClass addClass( final JavaClass clazz ) { final JavaClass old = repository.findClass(clazz.getClassName()); repository.storeClass(clazz); return old; } + /** * Remove class with given (fully qualified) name from repository. */ - public static void removeClass(final String clazz) { + public static void removeClass( final String clazz ) { repository.removeClass(repository.findClass(clazz)); } + /** * Remove given class from repository. */ - public static void removeClass(final JavaClass clazz) { + public static void removeClass( final JavaClass clazz ) { repository.removeClass(clazz); } + /** - * @return list of super classes of clazz in ascending order, i.e., Object - * is always the last element + * @return list of super classes of clazz in ascending order, i.e., + * Object is always the last element * @throws ClassNotFoundException if any of the superclasses can't be found */ - public static JavaClass[] getSuperClasses(final JavaClass clazz) throws ClassNotFoundException { + public static JavaClass[] getSuperClasses( final JavaClass clazz ) throws ClassNotFoundException { return clazz.getSuperClasses(); } + /** - * @return list of super classes of clazz in ascending order, i.e., Object - * is always the last element. + * @return list of super classes of clazz in ascending order, i.e., + * Object is always the last element. * @throws ClassNotFoundException if the named class or any of its - * superclasses can't be found + * superclasses can't be found */ - public static JavaClass[] getSuperClasses(final String class_name) throws ClassNotFoundException { + public static JavaClass[] getSuperClasses( final String class_name ) throws ClassNotFoundException { final JavaClass jc = lookupClass(class_name); return getSuperClasses(jc); } + /** - * @return all interfaces implemented by class and its super classes and the - * interfaces that those interfaces extend, and so on. (Some people call - * this a transitive hull). - * @throws ClassNotFoundException if any of the class's superclasses or - * superinterfaces can't be found + * @return all interfaces implemented by class and its super + * classes and the interfaces that those interfaces extend, and so on. + * (Some people call this a transitive hull). + * @throws ClassNotFoundException if any of the class's + * superclasses or superinterfaces can't be found */ - public static JavaClass[] getInterfaces(final JavaClass clazz) throws ClassNotFoundException { + public static JavaClass[] getInterfaces( final JavaClass clazz ) throws ClassNotFoundException { return clazz.getAllInterfaces(); } + /** - * @return all interfaces implemented by class and its super classes and the - * interfaces that extend those interfaces, and so on - * @throws ClassNotFoundException if the named class can't be found, or if - * any of its superclasses or superinterfaces can't be found + * @return all interfaces implemented by class and its super + * classes and the interfaces that extend those interfaces, and so on + * @throws ClassNotFoundException if the named class can't be found, + * or if any of its superclasses or superinterfaces can't be found */ - public static JavaClass[] getInterfaces(final String class_name) throws ClassNotFoundException { + public static JavaClass[] getInterfaces( final String class_name ) throws ClassNotFoundException { return getInterfaces(lookupClass(class_name)); } + /** * Equivalent to runtime "instanceof" operator. - * * @return true, if clazz is an instance of super_class - * @throws ClassNotFoundException if any superclasses or superinterfaces of - * clazz can't be found + * @throws ClassNotFoundException if any superclasses or superinterfaces + * of clazz can't be found */ - public static boolean instanceOf(final JavaClass clazz, final JavaClass super_class) + public static boolean instanceOf( final JavaClass clazz, final JavaClass super_class ) throws ClassNotFoundException { return clazz.instanceOf(super_class); } + /** * @return true, if clazz is an instance of super_class - * @throws ClassNotFoundException if either clazz or super_class can't be - * found + * @throws ClassNotFoundException if either clazz or super_class + * can't be found */ - public static boolean instanceOf(final String clazz, final String super_class) + public static boolean instanceOf( final String clazz, final String super_class ) throws ClassNotFoundException { return instanceOf(lookupClass(clazz), lookupClass(super_class)); } + /** * @return true, if clazz is an instance of super_class * @throws ClassNotFoundException if super_class can't be found */ - public static boolean instanceOf(final JavaClass clazz, final String super_class) + public static boolean instanceOf( final JavaClass clazz, final String super_class ) throws ClassNotFoundException { return instanceOf(clazz, lookupClass(super_class)); } + /** * @return true, if clazz is an instance of super_class * @throws ClassNotFoundException if clazz can't be found */ - public static boolean instanceOf(final String clazz, final JavaClass super_class) + public static boolean instanceOf( final String clazz, final JavaClass super_class ) throws ClassNotFoundException { return instanceOf(lookupClass(clazz), super_class); } + /** * @return true, if clazz is an implementation of interface inter - * @throws ClassNotFoundException if any superclasses or superinterfaces of - * clazz can't be found + * @throws ClassNotFoundException if any superclasses or superinterfaces + * of clazz can't be found */ - public static boolean implementationOf(final JavaClass clazz, final JavaClass inter) + public static boolean implementationOf( final JavaClass clazz, final JavaClass inter ) throws ClassNotFoundException { return clazz.implementationOf(inter); } + /** * @return true, if clazz is an implementation of interface inter - * @throws ClassNotFoundException if clazz, inter, or any superclasses or - * superinterfaces of clazz can't be found + * @throws ClassNotFoundException if clazz, inter, or any superclasses + * or superinterfaces of clazz can't be found */ - public static boolean implementationOf(final String clazz, final String inter) + public static boolean implementationOf( final String clazz, final String inter ) throws ClassNotFoundException { return implementationOf(lookupClass(clazz), lookupClass(inter)); } + /** * @return true, if clazz is an implementation of interface inter - * @throws ClassNotFoundException if inter or any superclasses or - * superinterfaces of clazz can't be found + * @throws ClassNotFoundException if inter or any superclasses + * or superinterfaces of clazz can't be found */ - public static boolean implementationOf(final JavaClass clazz, final String inter) + public static boolean implementationOf( final JavaClass clazz, final String inter ) throws ClassNotFoundException { return implementationOf(clazz, lookupClass(inter)); } + /** * @return true, if clazz is an implementation of interface inter * @throws ClassNotFoundException if clazz or any superclasses or - * superinterfaces of clazz can't be found + * superinterfaces of clazz can't be found */ - public static boolean implementationOf(final String clazz, final JavaClass inter) + public static boolean implementationOf( final String clazz, final JavaClass inter ) throws ClassNotFoundException { return implementationOf(lookupClass(clazz), inter); }
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/AccessFlags.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/AccessFlags.java Wed Jun 26 05:49:59 2019 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. */ /* * Licensed to the Apache Software Foundation (ASF) under one or more @@ -25,7 +25,8 @@ * Super class for all objects that have modifiers like private, final, ... I.e. * classes, fields, and methods. * - * @version $Id: AccessFlags.java 1748636 2016-06-15 20:45:17Z dbrosius $ + * @version $Id$ + * @LastModified: Jun 2019 */ public abstract class AccessFlags { @@ -35,7 +36,8 @@ } /** - * @param a inital access flags + * @param a + * inital access flags */ public AccessFlags(final int a) { access_flags = a; @@ -58,7 +60,8 @@ /** * Set access flags aka "modifiers". * - * @param access_flags Access flags of the object. + * @param access_flags + * Access flags of the object. */ public final void setAccessFlags(final int access_flags) { this.access_flags = access_flags; @@ -67,7 +70,8 @@ /** * Set access flags aka "modifiers". * - * @param access_flags Access flags of the object. + * @param access_flags + * Access flags of the object. */ public final void setModifiers(final int access_flags) { setAccessFlags(access_flags);
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/Attribute.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/Attribute.java Wed Jun 26 05:49:59 2019 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. */ /* * Licensed to the Apache Software Foundation (ASF) under one or more @@ -36,7 +36,7 @@ * <em>Synthetic</em> attributes are supported. The <em>Unknown</em> * attribute stands for non-standard-attributes. * - * @version $Id: Attribute.java 1750029 2016-06-23 22:14:38Z sebb $ + * @version $Id$ * @see ConstantValue * @see SourceFile * @see Code @@ -48,6 +48,7 @@ * @see Synthetic * @see Deprecated * @see Signature + * @LastModified: Jun 2019 */ public abstract class Attribute implements Cloneable, Node { @@ -79,7 +80,8 @@ * @param file Output file stream * @throws IOException */ - public void dump(final DataOutputStream file) throws IOException { + public void dump(final DataOutputStream file) throws IOException + { file.writeShort(name_index); file.writeInt(length); } @@ -92,9 +94,10 @@ * as "LineNumberTable", because those are handled internally. * * @param name the name of the attribute as stored in the class file - * @param r the reader object + * @param r the reader object */ - public static void addAttributeReader(final String name, final UnknownAttributeReader r) { + public static void addAttributeReader(final String name, final UnknownAttributeReader r) + { readers.put(name, r); } @@ -103,7 +106,8 @@ * * @param name the name of the attribute as stored in the class file */ - public static void removeAttributeReader(final String name) { + public static void removeAttributeReader(final String name) + { readers.remove(name); } @@ -122,7 +126,8 @@ * @throws ClassFormatException */ public static Attribute readAttribute(final DataInputStream file, final ConstantPool constant_pool) - throws IOException, ClassFormatException { + throws IOException, ClassFormatException + { return readAttribute((DataInput) file, constant_pool); } @@ -142,7 +147,8 @@ * @since 6.0 */ public static Attribute readAttribute(final DataInput file, final ConstantPool constant_pool) - throws IOException, ClassFormatException { + throws IOException, ClassFormatException + { byte tag = Const.ATTR_UNKNOWN; // Unknown attribute // Get class name from constant pool via `name_index' indirection final int name_index = file.readUnsignedShort(); @@ -153,18 +159,22 @@ final int length = file.readInt(); // Compare strings to find known attribute - for (byte i = 0; i < Const.KNOWN_ATTRIBUTES; i++) { - if (name.equals(Const.getAttributeName(i))) { + for (byte i = 0; i < Const.KNOWN_ATTRIBUTES; i++) + { + if (name.equals(Const.getAttributeName(i))) + { tag = i; // found! break; } } // Call proper constructor, depending on `tag' - switch (tag) { + switch (tag) + { case Const.ATTR_UNKNOWN: final Object r = readers.get(name); - if (r instanceof UnknownAttributeReader) { + if (r instanceof UnknownAttributeReader) + { return ((UnknownAttributeReader) r).createAttribute(name_index, length, file, constant_pool); } return new Unknown(name_index, length, file, constant_pool); @@ -191,7 +201,10 @@ case Const.ATTR_SIGNATURE: return new Signature(name_index, length, file, constant_pool); case Const.ATTR_STACK_MAP: - return new StackMap(name_index, length, file, constant_pool); + // old style stack map: unneeded for JDK5 and below; + // illegal(?) for JDK6 and above. So just delete with a warning. + System.err.println("Warning: Obsolete StackMap attribute ignored."); + return new Unknown(name_index, length, file, constant_pool); case Const.ATTR_RUNTIME_VISIBLE_ANNOTATIONS: return new RuntimeVisibleAnnotations(name_index, length, file, constant_pool); case Const.ATTR_RUNTIME_INVISIBLE_ANNOTATIONS: @@ -207,6 +220,8 @@ case Const.ATTR_ENCLOSING_METHOD: return new EnclosingMethod(name_index, length, file, constant_pool); case Const.ATTR_STACK_MAP_TABLE: + // read new style stack map: StackMapTable. The rest of the code + // calls this a StackMap for historical reasons. return new StackMap(name_index, length, file, constant_pool); case Const.ATTR_BOOTSTRAP_METHODS: return new BootstrapMethods(name_index, length, file, constant_pool); @@ -222,7 +237,8 @@ * @return Name of attribute * @since 6.0 */ - public String getName() { + public String getName() + { final ConstantUtf8 c = (ConstantUtf8) constant_pool.getConstant(name_index, Const.CONSTANT_Utf8); return c.getBytes(); } @@ -230,36 +246,40 @@ /** * @return Length of attribute field in bytes. */ - public final int getLength() { + public final int getLength() + { return length; } /** * @param length length in bytes. */ - public final void setLength(final int length) { + public final void setLength(final int length) + { this.length = length; } /** * @param name_index of attribute. */ - public final void setNameIndex(final int name_index) { + public final void setNameIndex(final int name_index) + { this.name_index = name_index; } /** * @return Name index in constant pool of attribute name. */ - public final int getNameIndex() { + public final int getNameIndex() + { return name_index; } /** - * @return Tag of attribute, i.e., its type. Value may not be altered, thus - * there is no setTag() method. + * @return Tag of attribute, i.e., its type. Value may not be altered, thus there is no setTag() method. */ - public final byte getTag() { + public final byte getTag() + { return tag; } @@ -267,7 +287,8 @@ * @return Constant pool used by this object. * @see ConstantPool */ - public final ConstantPool getConstantPool() { + public final ConstantPool getConstantPool() + { return constant_pool; } @@ -275,7 +296,8 @@ * @param constant_pool Constant pool to be used for this object. * @see ConstantPool */ - public final void setConstantPool(final ConstantPool constant_pool) { + public final void setConstantPool(final ConstantPool constant_pool) + { this.constant_pool = constant_pool; } @@ -286,11 +308,15 @@ * @return shallow copy of this attribute */ @Override - public Object clone() { + public Object clone() + { Attribute attr = null; - try { + try + { attr = (Attribute) super.clone(); - } catch (final CloneNotSupportedException e) { + } + catch (final CloneNotSupportedException e) + { throw new Error("Clone Not Supported"); // never happens } return attr; @@ -305,7 +331,8 @@ * @return attribute name. */ @Override - public String toString() { + public String toString() + { return Const.getAttributeName(tag); } }
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/AttributeReader.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/AttributeReader.java Wed Jun 26 05:49:59 2019 +0000 @@ -27,7 +27,7 @@ * method. These factory objects should implement this interface. * @see Attribute - * @version $Id: AttributeReader.java 1748467 2016-06-14 21:05:14Z ggregory $ + * @version $Id$ * * @deprecated Use UnknownAttributeReader instead */
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ClassFormatException.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ClassFormatException.java Wed Jun 26 05:49:59 2019 +0000 @@ -26,7 +26,7 @@ * that the file is malformed or otherwise cannot be interpreted as a * class file. * - * @version $Id: ClassFormatException.java 1748973 2016-06-18 12:14:42Z sebb $ + * @version $Id$ */ public class ClassFormatException extends RuntimeException {
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ClassParser.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ClassParser.java Wed Jun 26 05:49:59 2019 +0000 @@ -43,7 +43,7 @@ * JVM specification 1.0</a>. See this paper for * further details about the structure of a bytecode file. * - * @version $Id: ClassParser.java 1749603 2016-06-21 20:50:19Z ggregory $ + * @version $Id$ */ public final class ClassParser {
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/Code.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/Code.java Wed Jun 26 05:49:59 2019 +0000 @@ -39,7 +39,7 @@ * is used for debugging purposes and <em>LocalVariableTable</em> which * contains information about the local variables. * - * @version $Id: Code.java 1749603 2016-06-21 20:50:19Z ggregory $ + * @version $Id$ * @see Attribute * @see CodeException * @see LineNumberTable
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/CodeException.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/CodeException.java Wed Jun 26 05:49:59 2019 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. */ /* * Licensed to the Apache Software Foundation (ASF) under one or more @@ -31,8 +31,9 @@ * attribute and is used only there. It contains a range in which a * particular exception handler is active. * - * @version $Id: CodeException.java 1749603 2016-06-21 20:50:19Z ggregory $ + * @version $Id$ * @see Code + * @LastModified: Jun 2019 */ public final class CodeException implements Cloneable, Node {
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/Constant.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/Constant.java Wed Jun 26 05:49:59 2019 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. */ /* * Licensed to the Apache Software Foundation (ASF) under one or more @@ -22,30 +22,33 @@ import java.io.DataInput; import java.io.DataOutputStream; import java.io.IOException; +import java.util.Objects; import com.sun.org.apache.bcel.internal.Const; import com.sun.org.apache.bcel.internal.util.BCELComparator; /** - * Abstract superclass for classes to represent the different constant types in - * the constant pool of a class file. The classes keep closely to the JVM - * specification. + * Abstract superclass for classes to represent the different constant types + * in the constant pool of a class file. The classes keep closely to + * the JVM specification. * - * @version $Id: Constant.java 1749603 2016-06-21 20:50:19Z ggregory $ + * @version $Id$ + * @LastModified: Jun 2019 */ public abstract class Constant implements Cloneable, Node { private static BCELComparator bcelComparator = new BCELComparator() { @Override - public boolean equals(final Object o1, final Object o2) { + public boolean equals( final Object o1, final Object o2 ) { final Constant THIS = (Constant) o1; final Constant THAT = (Constant) o2; - return THIS.toString().equals(THAT.toString()); + return Objects.equals(THIS.toString(), THAT.toString()); } + @Override - public int hashCode(final Object o) { + public int hashCode( final Object o ) { final Constant THIS = (Constant) o; return THIS.toString().hashCode(); } @@ -61,10 +64,12 @@ */ private byte tag; + Constant(final byte tag) { this.tag = tag; } + /** * Called by objects that are traversing the nodes of the tree implicitely * defined by the contents of a Java class. I.e., the hierarchy of methods, @@ -73,9 +78,11 @@ * @param v Visitor object */ @Override - public abstract void accept(Visitor v); + public abstract void accept( Visitor v ); - public abstract void dump(DataOutputStream file) throws IOException; + + public abstract void dump( DataOutputStream file ) throws IOException; + /** * @return Tag of constant, i.e., its type. No setTag() method to avoid @@ -85,6 +92,7 @@ return tag; } + /** * @return String representation. */ @@ -93,6 +101,7 @@ return Const.getConstantName(tag) + "[" + tag + "]"; } + /** * @return deep copy of this constant */ @@ -105,6 +114,7 @@ return null; } + @Override public Object clone() { try { @@ -114,47 +124,55 @@ } } + /** * Read one constant from the given input, the type depends on a tag byte. * - * @param input Input stream + * @param dataInput Input stream * @return Constant object + * @throws IOException if an I/O error occurs reading from the given {@code dataInput}. + * @throws ClassFormatException if the next byte is not recognized * @since 6.0 made public */ - public static Constant readConstant(final DataInput input) throws IOException, - ClassFormatException { - final byte b = input.readByte(); // Read tag byte + public static Constant readConstant(final DataInput dataInput) throws IOException, ClassFormatException { + final byte b = dataInput.readByte(); // Read tag byte switch (b) { - case Const.CONSTANT_Class: - return new ConstantClass(input); - case Const.CONSTANT_Fieldref: - return new ConstantFieldref(input); - case Const.CONSTANT_Methodref: - return new ConstantMethodref(input); - case Const.CONSTANT_InterfaceMethodref: - return new ConstantInterfaceMethodref(input); - case Const.CONSTANT_String: - return new ConstantString(input); - case Const.CONSTANT_Integer: - return new ConstantInteger(input); - case Const.CONSTANT_Float: - return new ConstantFloat(input); - case Const.CONSTANT_Long: - return new ConstantLong(input); - case Const.CONSTANT_Double: - return new ConstantDouble(input); - case Const.CONSTANT_NameAndType: - return new ConstantNameAndType(input); - case Const.CONSTANT_Utf8: - return ConstantUtf8.getInstance(input); - case Const.CONSTANT_MethodHandle: - return new ConstantMethodHandle(input); - case Const.CONSTANT_MethodType: - return new ConstantMethodType(input); - case Const.CONSTANT_InvokeDynamic: - return new ConstantInvokeDynamic(input); - default: - throw new ClassFormatException("Invalid byte tag in constant pool: " + b); + case Const.CONSTANT_Class: + return new ConstantClass(dataInput); + case Const.CONSTANT_Fieldref: + return new ConstantFieldref(dataInput); + case Const.CONSTANT_Methodref: + return new ConstantMethodref(dataInput); + case Const.CONSTANT_InterfaceMethodref: + return new ConstantInterfaceMethodref(dataInput); + case Const.CONSTANT_String: + return new ConstantString(dataInput); + case Const.CONSTANT_Integer: + return new ConstantInteger(dataInput); + case Const.CONSTANT_Float: + return new ConstantFloat(dataInput); + case Const.CONSTANT_Long: + return new ConstantLong(dataInput); + case Const.CONSTANT_Double: + return new ConstantDouble(dataInput); + case Const.CONSTANT_NameAndType: + return new ConstantNameAndType(dataInput); + case Const.CONSTANT_Utf8: + return ConstantUtf8.getInstance(dataInput); + case Const.CONSTANT_MethodHandle: + return new ConstantMethodHandle(dataInput); + case Const.CONSTANT_MethodType: + return new ConstantMethodType(dataInput); + case Const.CONSTANT_Dynamic: + return new ConstantDynamic(dataInput); + case Const.CONSTANT_InvokeDynamic: + return new ConstantInvokeDynamic(dataInput); + case Const.CONSTANT_Module: + return new ConstantModule(dataInput); + case Const.CONSTANT_Package: + return new ConstantPackage(dataInput); + default: + throw new ClassFormatException("Invalid byte tag in constant pool: " + b); } } @@ -165,28 +183,31 @@ return bcelComparator; } + /** * @param comparator Comparison strategy object */ - public static void setComparator(final BCELComparator comparator) { + public static void setComparator( final BCELComparator comparator ) { bcelComparator = comparator; } + /** - * Return value as defined by given BCELComparator strategy. By default two - * Constant objects are said to be equal when the result of toString() is - * equal. + * Return value as defined by given BCELComparator strategy. + * By default two Constant objects are said to be equal when + * the result of toString() is equal. * * @see java.lang.Object#equals(java.lang.Object) */ @Override - public boolean equals(final Object obj) { + public boolean equals( final Object obj ) { return bcelComparator.equals(this, obj); } + /** - * Return value as defined by given BCELComparator strategy. By default - * return the hashcode of the result of toString(). + * Return value as defined by given BCELComparator strategy. + * By default return the hashcode of the result of toString(). * * @see java.lang.Object#hashCode() */
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantCP.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantCP.java Wed Jun 26 05:49:59 2019 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. */ /* * Licensed to the Apache Software Foundation (ASF) under one or more @@ -27,13 +27,14 @@ /** * Abstract super class for Fieldref, Methodref, InterfaceMethodref and - * InvokeDynamic constants. + * InvokeDynamic constants. * - * @version $Id: ConstantCP.java 1747278 2016-06-07 17:28:43Z britter $ - * @see ConstantFieldref - * @see ConstantMethodref - * @see ConstantInterfaceMethodref - * @see ConstantInvokeDynamic + * @version $Id$ + * @see ConstantFieldref + * @see ConstantMethodref + * @see ConstantInterfaceMethodref + * @see ConstantInvokeDynamic + * @LastModified: Jun 2019 */ public abstract class ConstantCP extends Constant { @@ -53,10 +54,11 @@ this(c.getTag(), c.getClassIndex(), c.getNameAndTypeIndex()); } + /** * Initialize instance from file data. * - * @param tag Constant type tag + * @param tag Constant type tag * @param file Input stream * @throws IOException */ @@ -64,6 +66,7 @@ this(tag, file.readUnsignedShort(), file.readUnsignedShort()); } + /** * @param class_index Reference to the class containing the field * @param name_and_type_index and the field signature @@ -74,6 +77,7 @@ this.name_and_type_index = name_and_type_index; } + /** * Dump constant field reference to file stream in binary format. * @@ -81,12 +85,13 @@ * @throws IOException */ @Override - public final void dump(final DataOutputStream file) throws IOException { + public final void dump( final DataOutputStream file ) throws IOException { file.writeByte(super.getTag()); file.writeShort(class_index); file.writeShort(name_and_type_index); } + /** * @return Reference (index) to class this constant refers to. */ @@ -94,13 +99,15 @@ return class_index; } + /** * @param class_index points to Constant_class */ - public final void setClassIndex(final int class_index) { + public final void setClassIndex( final int class_index ) { this.class_index = class_index; } + /** * @return Reference (index) to signature of the field. */ @@ -108,20 +115,23 @@ return name_and_type_index; } + /** * @param name_and_type_index points to Constant_NameAndType */ - public final void setNameAndTypeIndex(final int name_and_type_index) { + public final void setNameAndTypeIndex( final int name_and_type_index ) { this.name_and_type_index = name_and_type_index; } + /** * @return Class this field belongs to. */ - public String getClass(final ConstantPool cp) { + public String getClass( final ConstantPool cp ) { return cp.constantToString(class_index, Const.CONSTANT_Class); } + /** * @return String representation. *
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantClass.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantClass.java Wed Jun 26 05:49:59 2019 +0000 @@ -31,7 +31,6 @@ * This class is derived from the abstract {@link Constant} * and represents a reference to a (external) class. * - * @version $Id: ConstantClass.java 1749603 2016-06-21 20:50:19Z ggregory $ * @see Constant */ public final class ConstantClass extends Constant implements ConstantObject { @@ -48,13 +47,13 @@ /** - * Initialize instance from file data. + * Constructs an instance from file data. * - * @param file Input stream - * @throws IOException + * @param dataInput Input stream + * @throws IOException if an I/O error occurs reading from the given {@code dataInput}. */ - ConstantClass(final DataInput file) throws IOException { - this(file.readUnsignedShort()); + ConstantClass(final DataInput dataInput) throws IOException { + this(dataInput.readUnsignedShort()); } @@ -82,10 +81,10 @@ /** - * Dump constant class to file stream in binary format. + * Dumps constant class to file stream in binary format. * * @param file Output file stream - * @throws IOException + * @throws IOException if an I/O error occurs writing to the DataOutputStream. */ @Override public final void dump( final DataOutputStream file ) throws IOException {
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantDouble.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantDouble.java Wed Jun 26 05:49:59 2019 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. */ /* * Licensed to the Apache Software Foundation (ASF) under one or more @@ -30,9 +30,9 @@ * This class is derived from the abstract {@link Constant} * and represents a reference to a Double object. * - * @version $Id: ConstantDouble.java 1747278 2016-06-07 17:28:43Z britter $ + * @version $Id$ * @see Constant - * @LastModified: Nov 2017 + * @LastModified: Jun 2019 */ public final class ConstantDouble extends Constant implements ConstantObject {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantDynamic.java Wed Jun 26 05:49:59 2019 +0000 @@ -0,0 +1,94 @@ +/* + * reserved comment block + * DO NOT REMOVE OR ALTER! + */ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package com.sun.org.apache.bcel.internal.classfile; + +import java.io.DataInput; +import java.io.IOException; + +import com.sun.org.apache.bcel.internal.Const; + +/** + * This class is derived from the abstract {@link Constant} + * and represents a reference to a dynamically computed constant. + * + * @see Constant + * @see <a href="https://bugs.openjdk.java.net/secure/attachment/74618/constant-dynamic.html"> + * Change request for JEP 309</a> + * @since 6.3 + */ +public final class ConstantDynamic extends ConstantCP { + + /** + * Initialize from another object. + */ + public ConstantDynamic(final ConstantDynamic c) { + this(c.getBootstrapMethodAttrIndex(), c.getNameAndTypeIndex()); + } + + + /** + * Initialize instance from file data. + * + * @param file Input stream + * @throws IOException + */ + ConstantDynamic(final DataInput file) throws IOException { + this(file.readShort(), file.readShort()); + } + + + public ConstantDynamic(final int bootstrap_method_attr_index, final int name_and_type_index) { + super(Const.CONSTANT_Dynamic, bootstrap_method_attr_index, name_and_type_index); + } + + + /** + * Called by objects that are traversing the nodes of the tree implicitly + * defined by the contents of a Java class. I.e., the hierarchy of methods, + * fields, attributes, etc. spawns a tree of objects. + * + * @param v Visitor object + */ + @Override + public void accept( final Visitor v ) { + v.visitConstantDynamic(this); + } + + /** + * @return Reference (index) to bootstrap method this constant refers to. + * + * Note that this method is a functional duplicate of getClassIndex + * for use by ConstantInvokeDynamic. + * @since 6.0 + */ + public final int getBootstrapMethodAttrIndex() { + return super.getClassIndex(); // AKA bootstrap_method_attr_index + } + + /** + * @return String representation + */ + @Override + public final String toString() { + return super.toString().replace("class_index", "bootstrap_method_attr_index"); + } +}
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantFieldref.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantFieldref.java Wed Jun 26 05:49:59 2019 +0000 @@ -29,7 +29,7 @@ /** * This class represents a constant pool reference to a field. * - * @version $Id: ConstantFieldref.java 1747278 2016-06-07 17:28:43Z britter $ + * @version $Id$ */ public final class ConstantFieldref extends ConstantCP {
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantFloat.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantFloat.java Wed Jun 26 05:49:59 2019 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. */ /* * Licensed to the Apache Software Foundation (ASF) under one or more @@ -30,9 +30,9 @@ * This class is derived from the abstract {@link Constant} * and represents a reference to a float object. * - * @version $Id: ConstantFloat.java 1747278 2016-06-07 17:28:43Z britter $ + * @version $Id$ * @see Constant - * @LastModified: Nov 2017 + * @LastModified: Jun 2019 */ public final class ConstantFloat extends Constant implements ConstantObject {
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantInteger.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantInteger.java Wed Jun 26 05:49:59 2019 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. */ /* * Licensed to the Apache Software Foundation (ASF) under one or more @@ -30,8 +30,9 @@ * This class is derived from the abstract {@link Constant} * and represents a reference to an int object. * - * @version $Id: ConstantInteger.java 1747278 2016-06-07 17:28:43Z britter $ + * @version $Id$ * @see Constant + * @LastModified: Jun 2019 */ public final class ConstantInteger extends Constant implements ConstantObject {
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantInterfaceMethodref.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantInterfaceMethodref.java Wed Jun 26 05:49:59 2019 +0000 @@ -29,7 +29,7 @@ /** * This class represents a constant pool reference to an interface method. * - * @version $Id: ConstantInterfaceMethodref.java 1747278 2016-06-07 17:28:43Z britter $ + * @version $Id$ */ public final class ConstantInterfaceMethodref extends ConstantCP {
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantLong.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantLong.java Wed Jun 26 05:49:59 2019 +0000 @@ -30,7 +30,7 @@ * This class is derived from the abstract {@link Constant} * and represents a reference to a long object. * - * @version $Id: ConstantLong.java 1747278 2016-06-07 17:28:43Z britter $ + * @version $Id$ * @see Constant */ public final class ConstantLong extends Constant implements ConstantObject {
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantMethodref.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantMethodref.java Wed Jun 26 05:49:59 2019 +0000 @@ -29,7 +29,7 @@ /** * This class represents a constant pool reference to a method. * - * @version $Id: ConstantMethodref.java 1747278 2016-06-07 17:28:43Z britter $ + * @version $Id$ */ public final class ConstantMethodref extends ConstantCP {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantModule.java Wed Jun 26 05:49:59 2019 +0000 @@ -0,0 +1,138 @@ +/* + * reserved comment block + * DO NOT REMOVE OR ALTER! + */ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package com.sun.org.apache.bcel.internal.classfile; + +import java.io.DataInput; +import java.io.DataOutputStream; +import java.io.IOException; + +import com.sun.org.apache.bcel.internal.Const; + +/** + * This class is derived from the abstract {@link Constant} + * and represents a reference to a module. + * + * <p>Note: Early access Java 9 support- currently subject to change</p> + * + * @see Constant + * @since 6.1 + */ +public final class ConstantModule extends Constant implements ConstantObject { + + private int name_index; + + + /** + * Initialize from another object. + */ + public ConstantModule(final ConstantModule c) { + this(c.getNameIndex()); + } + + + /** + * Initialize instance from file data. + * + * @param file Input stream + * @throws IOException + */ + ConstantModule(final DataInput file) throws IOException { + this(file.readUnsignedShort()); + } + + + /** + * @param name_index Name index in constant pool. Should refer to a + * ConstantUtf8. + */ + public ConstantModule(final int name_index) { + super(Const.CONSTANT_Module); + this.name_index = name_index; + } + + + /** + * Called by objects that are traversing the nodes of the tree implicitly + * defined by the contents of a Java class. I.e., the hierarchy of methods, + * fields, attributes, etc. spawns a tree of objects. + * + * @param v Visitor object + */ + @Override + public void accept( final Visitor v ) { + v.visitConstantModule(this); + } + + + /** + * Dump constant module to file stream in binary format. + * + * @param file Output file stream + * @throws IOException + */ + @Override + public final void dump( final DataOutputStream file ) throws IOException { + file.writeByte(super.getTag()); + file.writeShort(name_index); + } + + + /** + * @return Name index in constant pool of module name. + */ + public final int getNameIndex() { + return name_index; + } + + + /** + * @param name_index the name index in the constant pool of this Constant Module + */ + public final void setNameIndex( final int name_index ) { + this.name_index = name_index; + } + + + /** @return String object + */ + @Override + public Object getConstantValue( final ConstantPool cp ) { + final Constant c = cp.getConstant(name_index, Const.CONSTANT_Utf8); + return ((ConstantUtf8) c).getBytes(); + } + + + /** @return dereferenced string + */ + public String getBytes( final ConstantPool cp ) { + return (String) getConstantValue(cp); + } + + + /** + * @return String representation. + */ + @Override + public final String toString() { + return super.toString() + "(name_index = " + name_index + ")"; + } +}
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantNameAndType.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantNameAndType.java Wed Jun 26 05:49:59 2019 +0000 @@ -32,7 +32,7 @@ * and represents a reference to the name and signature * of a field or method. * - * @version $Id: ConstantNameAndType.java 1747278 2016-06-07 17:28:43Z britter $ + * @version $Id$ * @see Constant */ public final class ConstantNameAndType extends Constant {
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantObject.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantObject.java Wed Jun 26 05:49:59 2019 +0000 @@ -25,7 +25,7 @@ * This interface denotes those constants that have a "natural" value, * such as ConstantLong, ConstantString, etc.. * - * @version $Id: ConstantObject.java 1747278 2016-06-07 17:28:43Z britter $ + * @version $Id$ * @see Constant */ public interface ConstantObject {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantPackage.java Wed Jun 26 05:49:59 2019 +0000 @@ -0,0 +1,138 @@ +/* + * reserved comment block + * DO NOT REMOVE OR ALTER! + */ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package com.sun.org.apache.bcel.internal.classfile; + +import java.io.DataInput; +import java.io.DataOutputStream; +import java.io.IOException; + +import com.sun.org.apache.bcel.internal.Const; + +/** + * This class is derived from the abstract {@link Constant} + * and represents a reference to a package. + * + * <p>Note: Early access Java 9 support- currently subject to change</p> + * + * @see Constant + * @since 6.1 + */ +public final class ConstantPackage extends Constant implements ConstantObject { + + private int name_index; + + + /** + * Initialize from another object. + */ + public ConstantPackage(final ConstantPackage c) { + this(c.getNameIndex()); + } + + + /** + * Initialize instance from file data. + * + * @param file Input stream + * @throws IOException + */ + ConstantPackage(final DataInput file) throws IOException { + this(file.readUnsignedShort()); + } + + + /** + * @param name_index Name index in constant pool. Should refer to a + * ConstantUtf8. + */ + public ConstantPackage(final int name_index) { + super(Const.CONSTANT_Package); + this.name_index = name_index; + } + + + /** + * Called by objects that are traversing the nodes of the tree implicitely + * defined by the contents of a Java class. I.e., the hierarchy of methods, + * fields, attributes, etc. spawns a tree of objects. + * + * @param v Visitor object + */ + @Override + public void accept( final Visitor v ) { + v.visitConstantPackage(this); + } + + + /** + * Dump constant package to file stream in binary format. + * + * @param file Output file stream + * @throws IOException + */ + @Override + public final void dump( final DataOutputStream file ) throws IOException { + file.writeByte(super.getTag()); + file.writeShort(name_index); + } + + + /** + * @return Name index in constant pool of package name. + */ + public final int getNameIndex() { + return name_index; + } + + + /** + * @param name_index the name index in the constant pool of this Constant Package + */ + public final void setNameIndex( final int name_index ) { + this.name_index = name_index; + } + + + /** @return String object + */ + @Override + public Object getConstantValue( final ConstantPool cp ) { + final Constant c = cp.getConstant(name_index, Const.CONSTANT_Utf8); + return ((ConstantUtf8) c).getBytes(); + } + + + /** @return dereferenced string + */ + public String getBytes( final ConstantPool cp ) { + return (String) getConstantValue(cp); + } + + + /** + * @return String representation. + */ + @Override + public final String toString() { + return super.toString() + "(name_index = " + name_index + ")"; + } +}
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantPool.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantPool.java Wed Jun 26 05:49:59 2019 +0000 @@ -35,7 +35,7 @@ * programatically should see <a href="../generic/ConstantPoolGen.html"> * ConstantPoolGen</a>. - * @version $Id: ConstantPool.java 1749603 2016-06-21 20:50:19Z ggregory $ + * @version $Id$ * @see Constant * @see com.sun.org.apache.bcel.internal.generic.ConstantPoolGen */ @@ -135,7 +135,7 @@ case Const.CONSTANT_NameAndType: str = constantToString(((ConstantNameAndType) c).getNameIndex(), Const.CONSTANT_Utf8) - + ":" + constantToString(((ConstantNameAndType) c).getSignatureIndex(), + + " " + constantToString(((ConstantNameAndType) c).getSignatureIndex(), Const.CONSTANT_Utf8); break; case Const.CONSTANT_InterfaceMethodref:
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantString.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantString.java Wed Jun 26 05:49:59 2019 +0000 @@ -31,7 +31,7 @@ * This class is derived from the abstract {@link Constant} * and represents a reference to a String object. * - * @version $Id: ConstantString.java 1749603 2016-06-21 20:50:19Z ggregory $ + * @version $Id$ * @see Constant */ public final class ConstantString extends Constant implements ConstantObject {
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantUtf8.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantUtf8.java Wed Jun 26 05:49:59 2019 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. */ /* * Licensed to the Apache Software Foundation (ASF) under one or more @@ -32,8 +32,9 @@ * This class is derived from the abstract {@link Constant} * and represents a reference to a Utf8 encoded string. * - * @version $Id: ConstantUtf8.java 1750029 2016-06-23 22:14:38Z sebb $ + * @version $Id$ * @see Constant + * @LastModified: Jun 2019 */ public final class ConstantUtf8 extends Constant {
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantValue.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ConstantValue.java Wed Jun 26 05:49:59 2019 +0000 @@ -32,7 +32,7 @@ * value, i.e., a default value for initializing a class field. * This class is instantiated by the <em>Attribute.readAttribute()</em> method. * - * @version $Id: ConstantValue.java 1749603 2016-06-21 20:50:19Z ggregory $ + * @version $Id$ * @see Attribute */ public final class ConstantValue extends Attribute {
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/Deprecated.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/Deprecated.java Wed Jun 26 05:49:59 2019 +0000 @@ -28,16 +28,17 @@ /** * This class is derived from <em>Attribute</em> and denotes that this is a - * deprecated method. It is instantiated from the - * <em>Attribute.readAttribute()</em> method. + * deprecated method. + * It is instantiated from the <em>Attribute.readAttribute()</em> method. * - * @version $Id: Deprecated.java 1749603 2016-06-21 20:50:19Z ggregory $ - * @see Attribute + * @version $Id$ + * @see Attribute */ public final class Deprecated extends Attribute { private byte[] bytes; + /** * Initialize from another object. Note that both objects use the same * references (shallow copy). Use clone() for a physical copy. @@ -46,6 +47,7 @@ this(c.getNameIndex(), c.getLength(), c.getBytes(), c.getConstantPool()); } + /** * @param name_index Index in constant pool to CONSTANT_Utf8 * @param length Content length in bytes @@ -57,6 +59,7 @@ this.bytes = bytes; } + /** * Construct object from input stream. * @@ -76,6 +79,7 @@ } } + /** * Called by objects that are traversing the nodes of the tree implicitely * defined by the contents of a Java class. I.e., the hierarchy of methods, @@ -84,10 +88,11 @@ * @param v Visitor object */ @Override - public void accept(final Visitor v) { + public void accept( final Visitor v ) { v.visitDeprecated(this); } + /** * Dump source file attribute to file stream in binary format. * @@ -95,13 +100,14 @@ * @throws IOException */ @Override - public final void dump(final DataOutputStream file) throws IOException { + public final void dump( final DataOutputStream file ) throws IOException { super.dump(file); if (super.getLength() > 0) { file.write(bytes, 0, super.getLength()); } } + /** * @return data bytes. */ @@ -109,13 +115,15 @@ return bytes; } + /** * @param bytes the raw bytes that represents this byte array */ - public final void setBytes(final byte[] bytes) { + public final void setBytes( final byte[] bytes ) { this.bytes = bytes; } + /** * @return attribute name */ @@ -124,11 +132,12 @@ return Const.getAttributeName(Const.ATTR_DEPRECATED); } + /** * @return deep copy of this attribute */ @Override - public Attribute copy(final ConstantPool _constant_pool) { + public Attribute copy( final ConstantPool _constant_pool ) { final Deprecated c = (Deprecated) clone(); if (bytes != null) { c.bytes = new byte[bytes.length];
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/DescendingVisitor.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/DescendingVisitor.java Wed Jun 26 05:49:59 2019 +0000 @@ -26,10 +26,10 @@ * applied to all components of a JavaClass object. I.e. this class supplies the * traversal strategy, other classes can make use of it. * - * @version $Id: DescendingVisitor.java 1749603 2016-06-21 20:50:19Z ggregory $ + * @version $Id$ */ -public class DescendingVisitor implements Visitor { - +public class DescendingVisitor implements Visitor +{ private final JavaClass clazz; private final Visitor visitor; @@ -39,17 +39,21 @@ /** * @return container of current entitity, i.e., predecessor during traversal */ - public Object predecessor() { + public Object predecessor() + { return predecessor(0); } /** - * @param level nesting level, i.e., 0 returns the direct predecessor + * @param level + * nesting level, i.e., 0 returns the direct predecessor * @return container of current entitity, i.e., predecessor during traversal */ - public Object predecessor(final int level) { + public Object predecessor(final int level) + { final int size = stack.size(); - if ((size < 2) || (level < 0)) { + if ((size < 2) || (level < 0)) + { return null; } return stack.elementAt(size - (level + 2)); // size - 1 == current @@ -58,15 +62,19 @@ /** * @return current object */ - public Object current() { + public Object current() + { return stack.peek(); } /** - * @param clazz Class to traverse - * @param visitor visitor object to apply to all components + * @param clazz + * Class to traverse + * @param visitor + * visitor object to apply to all components */ - public DescendingVisitor(final JavaClass clazz, final Visitor visitor) { + public DescendingVisitor(final JavaClass clazz, final Visitor visitor) + { this.clazz = clazz; this.visitor = visitor; } @@ -74,12 +82,14 @@ /** * Start traversal. */ - public void visit() { + public void visit() + { clazz.accept(this); } @Override - public void visitJavaClass(final JavaClass _clazz) { + public void visitJavaClass(final JavaClass _clazz) + { stack.push(_clazz); _clazz.accept(visitor); final Field[] fields = _clazz.getFields(); @@ -102,7 +112,8 @@ * @since 6.0 */ @Override - public void visitAnnotation(final Annotations annotation) { + public void visitAnnotation(final Annotations annotation) + { stack.push(annotation); annotation.accept(visitor); final AnnotationEntry[] entries = annotation.getAnnotationEntries(); @@ -116,14 +127,16 @@ * @since 6.0 */ @Override - public void visitAnnotationEntry(final AnnotationEntry annotationEntry) { + public void visitAnnotationEntry(final AnnotationEntry annotationEntry) + { stack.push(annotationEntry); annotationEntry.accept(visitor); stack.pop(); } @Override - public void visitField(final Field field) { + public void visitField(final Field field) + { stack.push(field); field.accept(visitor); final Attribute[] attributes = field.getAttributes(); @@ -134,14 +147,16 @@ } @Override - public void visitConstantValue(final ConstantValue cv) { + public void visitConstantValue(final ConstantValue cv) + { stack.push(cv); cv.accept(visitor); stack.pop(); } @Override - public void visitMethod(final Method method) { + public void visitMethod(final Method method) + { stack.push(method); method.accept(visitor); final Attribute[] attributes = method.getAttributes(); @@ -152,14 +167,16 @@ } @Override - public void visitExceptionTable(final ExceptionTable table) { + public void visitExceptionTable(final ExceptionTable table) + { stack.push(table); table.accept(visitor); stack.pop(); } @Override - public void visitCode(final Code code) { + public void visitCode(final Code code) + { stack.push(code); code.accept(visitor); final CodeException[] table = code.getExceptionTable(); @@ -174,14 +191,16 @@ } @Override - public void visitCodeException(final CodeException ce) { + public void visitCodeException(final CodeException ce) + { stack.push(ce); ce.accept(visitor); stack.pop(); } @Override - public void visitLineNumberTable(final LineNumberTable table) { + public void visitLineNumberTable(final LineNumberTable table) + { stack.push(table); table.accept(visitor); final LineNumber[] numbers = table.getLineNumberTable(); @@ -192,14 +211,16 @@ } @Override - public void visitLineNumber(final LineNumber number) { + public void visitLineNumber(final LineNumber number) + { stack.push(number); number.accept(visitor); stack.pop(); } @Override - public void visitLocalVariableTable(final LocalVariableTable table) { + public void visitLocalVariableTable(final LocalVariableTable table) + { stack.push(table); table.accept(visitor); final LocalVariable[] vars = table.getLocalVariableTable(); @@ -210,7 +231,8 @@ } @Override - public void visitStackMap(final StackMap table) { + public void visitStackMap(final StackMap table) + { stack.push(table); table.accept(visitor); final StackMapEntry[] vars = table.getStackMap(); @@ -221,26 +243,31 @@ } @Override - public void visitStackMapEntry(final StackMapEntry var) { + public void visitStackMapEntry(final StackMapEntry var) + { stack.push(var); var.accept(visitor); stack.pop(); } @Override - public void visitLocalVariable(final LocalVariable var) { + public void visitLocalVariable(final LocalVariable var) + { stack.push(var); var.accept(visitor); stack.pop(); } @Override - public void visitConstantPool(final ConstantPool cp) { + public void visitConstantPool(final ConstantPool cp) + { stack.push(cp); cp.accept(visitor); final Constant[] constants = cp.getConstantPool(); - for (int i = 1; i < constants.length; i++) { - if (constants[i] != null) { + for (int i = 1; i < constants.length; i++) + { + if (constants[i] != null) + { constants[i].accept(this); } } @@ -248,35 +275,40 @@ } @Override - public void visitConstantClass(final ConstantClass constant) { + public void visitConstantClass(final ConstantClass constant) + { stack.push(constant); constant.accept(visitor); stack.pop(); } @Override - public void visitConstantDouble(final ConstantDouble constant) { + public void visitConstantDouble(final ConstantDouble constant) + { stack.push(constant); constant.accept(visitor); stack.pop(); } @Override - public void visitConstantFieldref(final ConstantFieldref constant) { + public void visitConstantFieldref(final ConstantFieldref constant) + { stack.push(constant); constant.accept(visitor); stack.pop(); } @Override - public void visitConstantFloat(final ConstantFloat constant) { + public void visitConstantFloat(final ConstantFloat constant) + { stack.push(constant); constant.accept(visitor); stack.pop(); } @Override - public void visitConstantInteger(final ConstantInteger constant) { + public void visitConstantInteger(final ConstantInteger constant) + { stack.push(constant); constant.accept(visitor); stack.pop(); @@ -284,7 +316,8 @@ @Override public void visitConstantInterfaceMethodref( - final ConstantInterfaceMethodref constant) { + final ConstantInterfaceMethodref constant) + { stack.push(constant); constant.accept(visitor); stack.pop(); @@ -295,49 +328,56 @@ */ @Override public void visitConstantInvokeDynamic( - final ConstantInvokeDynamic constant) { + final ConstantInvokeDynamic constant) + { stack.push(constant); constant.accept(visitor); stack.pop(); } @Override - public void visitConstantLong(final ConstantLong constant) { + public void visitConstantLong(final ConstantLong constant) + { stack.push(constant); constant.accept(visitor); stack.pop(); } @Override - public void visitConstantMethodref(final ConstantMethodref constant) { + public void visitConstantMethodref(final ConstantMethodref constant) + { stack.push(constant); constant.accept(visitor); stack.pop(); } @Override - public void visitConstantNameAndType(final ConstantNameAndType constant) { + public void visitConstantNameAndType(final ConstantNameAndType constant) + { stack.push(constant); constant.accept(visitor); stack.pop(); } @Override - public void visitConstantString(final ConstantString constant) { + public void visitConstantString(final ConstantString constant) + { stack.push(constant); constant.accept(visitor); stack.pop(); } @Override - public void visitConstantUtf8(final ConstantUtf8 constant) { + public void visitConstantUtf8(final ConstantUtf8 constant) + { stack.push(constant); constant.accept(visitor); stack.pop(); } @Override - public void visitInnerClasses(final InnerClasses ic) { + public void visitInnerClasses(final InnerClasses ic) + { stack.push(ic); ic.accept(visitor); final InnerClass[] ics = ic.getInnerClasses(); @@ -348,7 +388,8 @@ } @Override - public void visitInnerClass(final InnerClass inner) { + public void visitInnerClass(final InnerClass inner) + { stack.push(inner); inner.accept(visitor); stack.pop(); @@ -358,7 +399,8 @@ * @since 6.0 */ @Override - public void visitBootstrapMethods(final BootstrapMethods bm) { + public void visitBootstrapMethods(final BootstrapMethods bm) + { stack.push(bm); bm.accept(visitor); // BootstrapMethod[] bms = bm.getBootstrapMethods(); @@ -370,35 +412,40 @@ } @Override - public void visitDeprecated(final Deprecated attribute) { + public void visitDeprecated(final Deprecated attribute) + { stack.push(attribute); attribute.accept(visitor); stack.pop(); } @Override - public void visitSignature(final Signature attribute) { + public void visitSignature(final Signature attribute) + { stack.push(attribute); attribute.accept(visitor); stack.pop(); } @Override - public void visitSourceFile(final SourceFile attribute) { + public void visitSourceFile(final SourceFile attribute) + { stack.push(attribute); attribute.accept(visitor); stack.pop(); } @Override - public void visitSynthetic(final Synthetic attribute) { + public void visitSynthetic(final Synthetic attribute) + { stack.push(attribute); attribute.accept(visitor); stack.pop(); } @Override - public void visitUnknown(final Unknown attribute) { + public void visitUnknown(final Unknown attribute) + { stack.push(attribute); attribute.accept(visitor); stack.pop(); @@ -408,7 +455,8 @@ * @since 6.0 */ @Override - public void visitAnnotationDefault(final AnnotationDefault obj) { + public void visitAnnotationDefault(final AnnotationDefault obj) + { stack.push(obj); obj.accept(visitor); stack.pop(); @@ -418,7 +466,8 @@ * @since 6.0 */ @Override - public void visitEnclosingMethod(final EnclosingMethod obj) { + public void visitEnclosingMethod(final EnclosingMethod obj) + { stack.push(obj); obj.accept(visitor); stack.pop(); @@ -428,21 +477,8 @@ * @since 6.0 */ @Override - public void visitLocalVariableTypeTable(final LocalVariableTypeTable obj) { - stack.push(obj); - obj.accept(visitor); - LocalVariable[] vars = obj.getLocalVariableTypeTable(); - for (LocalVariable var : vars) { - var.accept(this); - } - stack.pop(); - } - - /** - * @since 6.0 - */ - @Override - public void visitParameterAnnotation(final ParameterAnnotations obj) { + public void visitLocalVariableTypeTable(final LocalVariableTypeTable obj) + { stack.push(obj); obj.accept(visitor); stack.pop(); @@ -452,7 +488,8 @@ * @since 6.0 */ @Override - public void visitMethodParameters(final MethodParameters obj) { + public void visitParameterAnnotation(final ParameterAnnotations obj) + { stack.push(obj); obj.accept(visitor); stack.pop(); @@ -462,15 +499,22 @@ * @since 6.0 */ @Override + public void visitMethodParameters(final MethodParameters obj) + { + stack.push(obj); + obj.accept(visitor); + stack.pop(); + } + + /** @since 6.0 */ + @Override public void visitConstantMethodType(final ConstantMethodType obj) { stack.push(obj); obj.accept(visitor); stack.pop(); } - /** - * @since 6.0 - */ + /** @since 6.0 */ @Override public void visitConstantMethodHandle(final ConstantMethodHandle obj) { stack.push(obj); @@ -478,9 +522,7 @@ stack.pop(); } - /** - * @since 6.0 - */ + /** @since 6.0 */ @Override public void visitParameterAnnotationEntry(final ParameterAnnotationEntry obj) { stack.push(obj); @@ -488,4 +530,27 @@ stack.pop(); } + /** @since 6.1 */ + @Override + public void visitConstantPackage(final ConstantPackage obj) { + stack.push(obj); + obj.accept(visitor); + stack.pop(); + } + + /** @since 6.1 */ + @Override + public void visitConstantModule(final ConstantModule obj) { + stack.push(obj); + obj.accept(visitor); + stack.pop(); + } + + /** @since 6.3 */ + @Override + public void visitConstantDynamic(final ConstantDynamic obj) { + stack.push(obj); + obj.accept(visitor); + stack.pop(); + } }
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ElementValue.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ElementValue.java Wed Jun 26 05:49:59 2019 +0000 @@ -1,6 +1,5 @@ /* - * reserved comment block - * DO NOT REMOVE OR ALTER! + * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. */ /* * Licensed to the Apache Software Foundation (ASF) under one or more @@ -28,6 +27,7 @@ /** * @version $Id: ElementValue * @since 6.0 + * @LastModified: Jun 2019 */ public abstract class ElementValue {
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/EmptyVisitor.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/EmptyVisitor.java Wed Jun 26 05:49:59 2019 +0000 @@ -26,7 +26,7 @@ * with the DescendingVisitor class, e.g. By courtesy of David Spencer. * * @see DescendingVisitor - * @version $Id: EmptyVisitor.java 1747278 2016-06-07 17:28:43Z britter $ + * @version $Id$ */ public class EmptyVisitor implements Visitor { @@ -300,4 +300,26 @@ @Override public void visitParameterAnnotationEntry(final ParameterAnnotationEntry parameterAnnotationEntry) { } + + /** + * @since 6.1 + */ + @Override + public void visitConstantPackage(final ConstantPackage constantPackage) { + } + + /** + * @since 6.1 + */ + @Override + public void visitConstantModule(final ConstantModule constantModule) { + } + + + /** + * @since 6.3 + */ + @Override + public void visitConstantDynamic(final ConstantDynamic obj) { + } }
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ExceptionTable.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/ExceptionTable.java Wed Jun 26 05:49:59 2019 +0000 @@ -35,7 +35,7 @@ * attribute using the name <em>Exceptions</em> (which is inconsistent * with the other classes). * - * @version $Id: ExceptionTable.java 1749603 2016-06-21 20:50:19Z ggregory $ + * @version $Id$ * @see Code */ public final class ExceptionTable extends Attribute {
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/Field.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/Field.java Wed Jun 26 05:49:59 2019 +0000 @@ -23,6 +23,7 @@ import java.io.DataInput; import java.io.IOException; +import java.util.Objects; import com.sun.org.apache.bcel.internal.Const; import com.sun.org.apache.bcel.internal.generic.Type; @@ -32,7 +33,7 @@ * This class represents the field info structure, i.e., the representation * for a variable in the class. See JVM specification for details. * - * @version $Id: Field.java 1749603 2016-06-21 20:50:19Z ggregory $ + * @version $Id$ */ public final class Field extends FieldOrMethod { @@ -42,8 +43,8 @@ public boolean equals( final Object o1, final Object o2 ) { final Field THIS = (Field) o1; final Field THAT = (Field) o2; - return THIS.getName().equals(THAT.getName()) - && THIS.getSignature().equals(THAT.getSignature()); + return Objects.equals(THIS.getName(), THAT.getName()) + && Objects.equals(THIS.getSignature(), THAT.getSignature()); }
--- a/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/FieldOrMethod.java Tue Jun 25 18:46:51 2019 -0700 +++ b/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/FieldOrMethod.java Wed Jun 26 05:49:59 2019 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. */ /* * Licensed to the Apache Software Foundation (ASF) under one or more @@ -29,7 +29,8 @@ /** * Abstract super class for fields and methods. * - * @version $Id: FieldOrMethod.java 1750029 2016-06-23 22:14:38Z sebb $ + * @version $Id$ + * @LastModified: Jun 2019 */ public abstract class FieldOrMethod extends AccessFlags implements Cloneable, Node { private int name_index; // Points to field name in constant pool @@ -48,6 +49,7 @@ FieldOrMethod() { } + /** * Initialize from another object. Note that both objects use the same * references (shallow copy). Use clone() for a physical copy. @@ -57,25 +59,23 @@ c.getAttributes(), c.getConstantPool()); } + /** * Construct object from file stream. * * @param file Input stream * @throws IOException * @throws ClassFormatException - * @deprecated (6.0) Use - * {@link #FieldOrMethod(java.io.DataInput, ConstantPool)} instead. + * @deprecated (6.0) Use {@link #FieldOrMethod(java.io.DataInput, ConstantPool)} instead. */ @java.lang.Deprecated - protected FieldOrMethod(final DataInputStream file, - final ConstantPool constant_pool) throws IOException, + protected FieldOrMethod(final DataInputStream file, final ConstantPool constant_pool) throws IOException, ClassFormatException { this((DataInput) file, constant_pool); } /** * Construct object from file stream. - * * @param file Input stream * @throws IOException * @throws ClassFormatException @@ -84,13 +84,15 @@ final ConstantPool constant_pool) throws IOException, ClassFormatException { this(file.readUnsignedShort(), file.readUnsignedShort(), file.readUnsignedShort(), null, constant_pool); - attributes_count = file.readUnsignedShort(); + final int attributes_count = file.readUnsignedShort(); attributes = new Attribute[attributes_count]; for (int i = 0; i < attributes_count; i++) { attributes[i] = Attribute.readAttribute(file, constant_pool); } + this.attributes_count = attributes_count; // init deprecated field } + /** * @param access_flags Access rights of method * @param name_index Points to field name in constant pool @@ -107,6 +109,7 @@ setAttributes(attributes); } +