org.apache.bcel.Const Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcel Show documentation
Show all versions of bcel Show documentation
Apache Commons Bytecode Engineering Library, with type annotations
/*
* 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 org.apache.bcel;
import java.util.Arrays;
import java.util.Collections;
/*>>>
import org.checkerframework.checker.signature.qual.FieldDescriptor;
import org.checkerframework.checker.signature.qual.FullyQualifiedName;
import org.checkerframework.checker.signature.qual.SourceNameForNonArrayNonInner;
*/
/**
* Constants for the project, mostly defined in the JVM specification.
*
* @version $Id$
* @since 6.0 (intended to replace the Constants interface)
*/
public final class Const {
/**
* Java class file format Magic number (0xCAFEBABE)
*
* @see
* The ClassFile Structure in The Java Virtual Machine Specification
*/
public static final int JVM_CLASSFILE_MAGIC = 0xCAFEBABE;
/** 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;
/** Major version number of class files for Java 1.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 1.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
* Flag definitions for Fields in the Java Virtual Machine Specification (Java SE 8 Edition).
* @see
* Flag definitions for Methods in the Java Virtual Machine Specification (Java SE 8 Edition).
* @see
* Flag definitions for Classes in the Java Virtual Machine Specification (Java SE 8 Edition).
*/
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
* The Constant Pool in The Java Virtual Machine Specification
*/
public static final byte CONSTANT_Utf8 = 1;
/**
* Marks a constant pool entry as type Integer.
* @see
* The Constant Pool in The Java Virtual Machine Specification
*/
public static final byte CONSTANT_Integer = 3;
/**
* Marks a constant pool entry as type Float.
* @see
* The Constant Pool in The Java Virtual Machine Specification
*/
public static final byte CONSTANT_Float = 4;
/**
* Marks a constant pool entry as type Long.
* @see
* The Constant Pool in The Java Virtual Machine Specification
*/
public static final byte CONSTANT_Long = 5;
/**
* Marks a constant pool entry as type Double.
* @see
* The Constant Pool in The Java Virtual Machine Specification
*/
public static final byte CONSTANT_Double = 6;
/**
* Marks a constant pool entry as a Class
* @see
* The Constant Pool in The Java Virtual Machine Specification
*/
public static final byte CONSTANT_Class = 7;
/**
* Marks a constant pool entry as a Field Reference.
* @see
* The Constant Pool in The Java Virtual Machine Specification
*/
public static final byte CONSTANT_Fieldref = 9;
/**
* Marks a constant pool entry as type String
* @see
* The Constant Pool in The Java Virtual Machine Specification
*/
public static final byte CONSTANT_String = 8;
/** Marks a constant pool entry as a Method Reference.
* @see
* The Constant Pool in The Java Virtual Machine Specification */
public static final byte CONSTANT_Methodref = 10;
/**
* Marks a constant pool entry as an Interface Method Reference.
* @see
* The Constant Pool in The Java Virtual Machine Specification
*/
public static final byte CONSTANT_InterfaceMethodref = 11;
/** Marks a constant pool entry as a name and type.
* @see
* The Constant Pool in The Java Virtual Machine Specification */
public static final byte CONSTANT_NameAndType = 12;
/**
* Marks a constant pool entry as a Method Handle.
* @see
* The Constant Pool in The Java Virtual Machine Specification
*/
public static final byte CONSTANT_MethodHandle = 15;
/**
* Marks a constant pool entry as a Method Type.
* @see
* The Constant Pool in The Java Virtual Machine Specification
*/
public static final byte CONSTANT_MethodType = 16;
/**
* Marks a constant pool entry as an Invoke Dynamic
* @see
* The Constant Pool in The Java Virtual Machine Specification
*/
public static final byte CONSTANT_InvokeDynamic = 18;
/**
* Marks a constant pool entry as a Module Reference.
*
* Note: Early access Java 9 support- currently subject to change
*
* @see
* JPMS: Modules in the Java Language and JVM
* @since 6.1
*/
public static final byte CONSTANT_Module = 19;
/**
* Marks a constant pool entry as a Package Reference.
*
* Note: Early access Java 9 support- currently subject to change
*
* @see
* JPMS: Modules in the Java Language and JVM
* @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_InvokeDynamic",
"CONSTANT_Module", "CONSTANT_Package"};
/**
*
* @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 = "";
/** The name of every constructor method in a class, also called
* "instance initialization method". This is "<init>".
*/
public static final String CONSTRUCTOR_NAME = "";
/**
* The names of the interfaces implemented by arrays
*/
private static final /*@SourceNameForNonArrayNonInner*/ String[] INTERFACES_IMPLEMENTED_BY_ARRAYS = {"java.lang.Cloneable", "java.io.Serializable"};
/**
* @since 6.0
*/
public static Iterable*@SourceNameForNonArrayNonInner*/ 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
* The Java Virtual Machine Specification, Java SE 8 Edition, page 330, chapter 4.11.
*/
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
* The Java Virtual Machine Specification, Java SE 8 Edition, page 104, chapter 4.7.
*/
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
* Field Descriptors in The Java Virtual Machine Specification
*/
public static final int MAX_ARRAY_DIMENSIONS = 255;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short NOP = 0;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ACONST_NULL = 1;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ICONST_M1 = 2;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ICONST_0 = 3;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ICONST_1 = 4;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ICONST_2 = 5;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ICONST_3 = 6;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ICONST_4 = 7;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ICONST_5 = 8;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LCONST_0 = 9;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LCONST_1 = 10;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FCONST_0 = 11;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FCONST_1 = 12;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FCONST_2 = 13;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DCONST_0 = 14;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DCONST_1 = 15;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short BIPUSH = 16;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short SIPUSH = 17;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LDC = 18;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LDC_W = 19;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LDC2_W = 20;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ILOAD = 21;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LLOAD = 22;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FLOAD = 23;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DLOAD = 24;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ALOAD = 25;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ILOAD_0 = 26;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ILOAD_1 = 27;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ILOAD_2 = 28;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ILOAD_3 = 29;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LLOAD_0 = 30;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LLOAD_1 = 31;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LLOAD_2 = 32;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LLOAD_3 = 33;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FLOAD_0 = 34;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FLOAD_1 = 35;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FLOAD_2 = 36;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FLOAD_3 = 37;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DLOAD_0 = 38;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DLOAD_1 = 39;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DLOAD_2 = 40;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DLOAD_3 = 41;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ALOAD_0 = 42;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ALOAD_1 = 43;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ALOAD_2 = 44;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ALOAD_3 = 45;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IALOAD = 46;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LALOAD = 47;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FALOAD = 48;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DALOAD = 49;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short AALOAD = 50;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short BALOAD = 51;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short CALOAD = 52;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short SALOAD = 53;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ISTORE = 54;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LSTORE = 55;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FSTORE = 56;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DSTORE = 57;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ASTORE = 58;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ISTORE_0 = 59;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ISTORE_1 = 60;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ISTORE_2 = 61;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ISTORE_3 = 62;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LSTORE_0 = 63;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LSTORE_1 = 64;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LSTORE_2 = 65;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LSTORE_3 = 66;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FSTORE_0 = 67;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FSTORE_1 = 68;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FSTORE_2 = 69;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FSTORE_3 = 70;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DSTORE_0 = 71;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DSTORE_1 = 72;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DSTORE_2 = 73;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DSTORE_3 = 74;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ASTORE_0 = 75;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ASTORE_1 = 76;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ASTORE_2 = 77;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ASTORE_3 = 78;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IASTORE = 79;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LASTORE = 80;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FASTORE = 81;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DASTORE = 82;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short AASTORE = 83;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short BASTORE = 84;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short CASTORE = 85;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short SASTORE = 86;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short POP = 87;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short POP2 = 88;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DUP = 89;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DUP_X1 = 90;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DUP_X2 = 91;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DUP2 = 92;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DUP2_X1 = 93;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DUP2_X2 = 94;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short SWAP = 95;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IADD = 96;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LADD = 97;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FADD = 98;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DADD = 99;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ISUB = 100;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LSUB = 101;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FSUB = 102;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DSUB = 103;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IMUL = 104;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LMUL = 105;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FMUL = 106;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DMUL = 107;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IDIV = 108;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LDIV = 109;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FDIV = 110;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DDIV = 111;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IREM = 112;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LREM = 113;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FREM = 114;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DREM = 115;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short INEG = 116;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LNEG = 117;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FNEG = 118;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DNEG = 119;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ISHL = 120;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LSHL = 121;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ISHR = 122;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LSHR = 123;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IUSHR = 124;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LUSHR = 125;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IAND = 126;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LAND = 127;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IOR = 128;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LOR = 129;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IXOR = 130;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LXOR = 131;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IINC = 132;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short I2L = 133;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short I2F = 134;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short I2D = 135;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short L2I = 136;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short L2F = 137;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short L2D = 138;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short F2I = 139;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short F2L = 140;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short F2D = 141;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short D2I = 142;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short D2L = 143;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short D2F = 144;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short I2B = 145;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short INT2BYTE = 145; // Old notation
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short I2C = 146;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short INT2CHAR = 146; // Old notation
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short I2S = 147;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short INT2SHORT = 147; // Old notation
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LCMP = 148;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FCMPL = 149;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FCMPG = 150;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DCMPL = 151;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DCMPG = 152;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IFEQ = 153;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IFNE = 154;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IFLT = 155;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IFGE = 156;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IFGT = 157;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IFLE = 158;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IF_ICMPEQ = 159;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IF_ICMPNE = 160;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IF_ICMPLT = 161;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IF_ICMPGE = 162;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IF_ICMPGT = 163;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IF_ICMPLE = 164;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IF_ACMPEQ = 165;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IF_ACMPNE = 166;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short GOTO = 167;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short JSR = 168;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short RET = 169;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short TABLESWITCH = 170;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LOOKUPSWITCH = 171;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IRETURN = 172;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short LRETURN = 173;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short FRETURN = 174;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short DRETURN = 175;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ARETURN = 176;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short RETURN = 177;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short GETSTATIC = 178;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short PUTSTATIC = 179;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short GETFIELD = 180;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short PUTFIELD = 181;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short INVOKEVIRTUAL = 182;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short INVOKESPECIAL = 183;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short INVOKENONVIRTUAL = 183; // Old name in JDK 1.0
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short INVOKESTATIC = 184;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short INVOKEINTERFACE = 185;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short INVOKEDYNAMIC = 186;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short NEW = 187;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short NEWARRAY = 188;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ANEWARRAY = 189;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ARRAYLENGTH = 190;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short ATHROW = 191;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short CHECKCAST = 192;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short INSTANCEOF = 193;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short MONITORENTER = 194;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short MONITOREXIT = 195;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short WIDE = 196;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short MULTIANEWARRAY = 197;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IFNULL = 198;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short IFNONNULL = 199;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short GOTO_W = 200;
/** Java VM opcode.
* @see
* Opcode definitions in The Java Virtual Machine Specification */
public static final short JSR_W = 201;
/** JVM internal opcode.
* @see
* Reserved opcodes in the Java Virtual Machine Specification */
public static final short BREAKPOINT = 202;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short LDC_QUICK = 203;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short LDC_W_QUICK = 204;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short LDC2_W_QUICK = 205;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short GETFIELD_QUICK = 206;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short PUTFIELD_QUICK = 207;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short GETFIELD2_QUICK = 208;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short PUTFIELD2_QUICK = 209;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short GETSTATIC_QUICK = 210;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short PUTSTATIC_QUICK = 211;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short GETSTATIC2_QUICK = 212;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short PUTSTATIC2_QUICK = 213;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short INVOKEVIRTUAL_QUICK = 214;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short INVOKENONVIRTUAL_QUICK = 215;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short INVOKESUPER_QUICK = 216;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short INVOKESTATIC_QUICK = 217;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short INVOKEINTERFACE_QUICK = 218;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short INVOKEVIRTUALOBJECT_QUICK = 219;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short NEW_QUICK = 221;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short ANEWARRAY_QUICK = 222;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short MULTIANEWARRAY_QUICK = 223;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short CHECKCAST_QUICK = 224;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short INSTANCEOF_QUICK = 225;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short INVOKEVIRTUAL_QUICK_W = 226;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short GETFIELD_QUICK_W = 227;
/** JVM internal opcode.
* @see
* Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)
* @see
* Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification. */
public static final short PUTFIELD_QUICK_W = 228;
/** JVM internal opcode.
* @see
* Reserved opcodes in the Java Virtual Machine Specification */
public static final short IMPDEP1 = 254;
/** JVM internal opcode.
* @see
* Reserved opcodes in the Java Virtual Machine Specification */
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 = "";
/** Mnemonic for an illegal type. */
public static final String ILLEGAL_TYPE = "";
/** Boolean data type.
* @see
* Static Constraints in the Java Virtual Machine Specification */
public static final byte T_BOOLEAN = 4;
/** Char data type.
* @see
* Static Constraints in the Java Virtual Machine Specification */
public static final byte T_CHAR = 5;
/** Float data type.
* @see
* Static Constraints in the Java Virtual Machine Specification */
public static final byte T_FLOAT = 6;
/** Double data type.
* @see
* Static Constraints in the Java Virtual Machine Specification */
public static final byte T_DOUBLE = 7;
/** Byte data type.
* @see
* Static Constraints in the Java Virtual Machine Specification */
public static final byte T_BYTE = 8;
/** Short data type.
* @see
* Static Constraints in the Java Virtual Machine Specification */
public static final byte T_SHORT = 9;
/** Int data type.
* @see
* Static Constraints in the Java Virtual Machine Specification */
public static final byte T_INT = 10;
/** Long data type.
* @see
* Static Constraints in the Java Virtual Machine Specification */
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 /*@FieldDescriptor*/ 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 /*@FieldDescriptor*/ 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" };
/**
*
* @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
}