WALA/com.ibm.wala.shrike/src/com/ibm/wala/shrikeBT/Constants.java

587 lines
15 KiB
Java

/*******************************************************************************
* Copyright (c) 2002,2006 IBM Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package com.ibm.wala.shrikeBT;
/**
* This interface defines a bunch of constants from the JVM spec. It also defines some constants we need for other purposes.
*
* Here are the JVM constants:
* <ul>
* <li>The OP_ constants define the JVM instruction opcodes.
* <li>The ACC_ constants define the accessibility flags for classes, fields and methods.
* <li>The CONSTANT_ constants define the constant pool item types.
* <li>The T_ constants define the types of arrays that can be created by OP_newarray.
* <li>The TYPE_ constants define the string representations of various JVM types. Two special non-JVM types are defined, TYPE_null
* and TYPE_unknown, as noted below.
* </ul>
*
* Non-JVM constants:
* <ul>
* <li>The OPR_ constants define the set of operators present in JVM instructions.
* <li>The operatorNames array gives the string names of those operators.
* <li>The TYPE_..._index constants define numeric representations of the JVM base types.
* <li>The indexedTypes array maps those numeric representations to their official string representations.
* <li>The indexedTypes_T array maps those numeric representations to the corresponding T_ constant.
* </ul>
*/
public interface Constants {
public static final short OP_nop = 0;
public static final short OP_aconst_null = 1;
public static final short OP_iconst_m1 = 2;
public static final short OP_iconst_0 = 3;
public static final short OP_iconst_1 = 4;
public static final short OP_iconst_2 = 5;
public static final short OP_iconst_3 = 6;
public static final short OP_iconst_4 = 7;
public static final short OP_iconst_5 = 8;
public static final short OP_lconst_0 = 9;
public static final short OP_lconst_1 = 10;
public static final short OP_fconst_0 = 11;
public static final short OP_fconst_1 = 12;
public static final short OP_fconst_2 = 13;
public static final short OP_dconst_0 = 14;
public static final short OP_dconst_1 = 15;
public static final short OP_bipush = 16;
public static final short OP_sipush = 17;
public static final short OP_ldc = 18;
public static final short OP_ldc_w = 19;
public static final short OP_ldc2_w = 20;
public static final short OP_iload = 21;
public static final short OP_lload = 22;
public static final short OP_fload = 23;
public static final short OP_dload = 24;
public static final short OP_aload = 25;
public static final short OP_iload_0 = 26;
public static final short OP_iload_1 = 27;
public static final short OP_iload_2 = 28;
public static final short OP_iload_3 = 29;
public static final short OP_lload_0 = 30;
public static final short OP_lload_1 = 31;
public static final short OP_lload_2 = 32;
public static final short OP_lload_3 = 33;
public static final short OP_fload_0 = 34;
public static final short OP_fload_1 = 35;
public static final short OP_fload_2 = 36;
public static final short OP_fload_3 = 37;
public static final short OP_dload_0 = 38;
public static final short OP_dload_1 = 39;
public static final short OP_dload_2 = 40;
public static final short OP_dload_3 = 41;
public static final short OP_aload_0 = 42;
public static final short OP_aload_1 = 43;
public static final short OP_aload_2 = 44;
public static final short OP_aload_3 = 45;
public static final short OP_iaload = 46;
public static final short OP_laload = 47;
public static final short OP_faload = 48;
public static final short OP_daload = 49;
public static final short OP_aaload = 50;
public static final short OP_baload = 51;
public static final short OP_caload = 52;
public static final short OP_saload = 53;
public static final short OP_istore = 54;
public static final short OP_lstore = 55;
public static final short OP_fstore = 56;
public static final short OP_dstore = 57;
public static final short OP_astore = 58;
public static final short OP_istore_0 = 59;
public static final short OP_istore_1 = 60;
public static final short OP_istore_2 = 61;
public static final short OP_istore_3 = 62;
public static final short OP_lstore_0 = 63;
public static final short OP_lstore_1 = 64;
public static final short OP_lstore_2 = 65;
public static final short OP_lstore_3 = 66;
public static final short OP_fstore_0 = 67;
public static final short OP_fstore_1 = 68;
public static final short OP_fstore_2 = 69;
public static final short OP_fstore_3 = 70;
public static final short OP_dstore_0 = 71;
public static final short OP_dstore_1 = 72;
public static final short OP_dstore_2 = 73;
public static final short OP_dstore_3 = 74;
public static final short OP_astore_0 = 75;
public static final short OP_astore_1 = 76;
public static final short OP_astore_2 = 77;
public static final short OP_astore_3 = 78;
public static final short OP_iastore = 79;
public static final short OP_lastore = 80;
public static final short OP_fastore = 81;
public static final short OP_dastore = 82;
public static final short OP_aastore = 83;
public static final short OP_bastore = 84;
public static final short OP_castore = 85;
public static final short OP_sastore = 86;
public static final short OP_pop = 87;
public static final short OP_pop2 = 88;
public static final short OP_dup = 89;
public static final short OP_dup_x1 = 90;
public static final short OP_dup_x2 = 91;
public static final short OP_dup2 = 92;
public static final short OP_dup2_x1 = 93;
public static final short OP_dup2_x2 = 94;
public static final short OP_swap = 95;
public static final short OP_iadd = 96;
public static final short OP_ladd = 97;
public static final short OP_fadd = 98;
public static final short OP_dadd = 99;
public static final short OP_isub = 100;
public static final short OP_lsub = 101;
public static final short OP_fsub = 102;
public static final short OP_dsub = 103;
public static final short OP_imul = 104;
public static final short OP_lmul = 105;
public static final short OP_fmul = 106;
public static final short OP_dmul = 107;
public static final short OP_idiv = 108;
public static final short OP_ldiv = 109;
public static final short OP_fdiv = 110;
public static final short OP_ddiv = 111;
public static final short OP_irem = 112;
public static final short OP_lrem = 113;
public static final short OP_frem = 114;
public static final short OP_drem = 115;
public static final short OP_ineg = 116;
public static final short OP_lneg = 117;
public static final short OP_fneg = 118;
public static final short OP_dneg = 119;
public static final short OP_ishl = 120;
public static final short OP_lshl = 121;
public static final short OP_ishr = 122;
public static final short OP_lshr = 123;
public static final short OP_iushr = 124;
public static final short OP_lushr = 125;
public static final short OP_iand = 126;
public static final short OP_land = 127;
public static final short OP_ior = 128;
public static final short OP_lor = 129;
public static final short OP_ixor = 130;
public static final short OP_lxor = 131;
public static final short OP_iinc = 132;
public static final short OP_i2l = 133;
public static final short OP_i2f = 134;
public static final short OP_i2d = 135;
public static final short OP_l2i = 136;
public static final short OP_l2f = 137;
public static final short OP_l2d = 138;
public static final short OP_f2i = 139;
public static final short OP_f2l = 140;
public static final short OP_f2d = 141;
public static final short OP_d2i = 142;
public static final short OP_d2l = 143;
public static final short OP_d2f = 144;
public static final short OP_i2b = 145;
public static final short OP_i2c = 146;
public static final short OP_i2s = 147;
public static final short OP_lcmp = 148;
public static final short OP_fcmpl = 149;
public static final short OP_fcmpg = 150;
public static final short OP_dcmpl = 151;
public static final short OP_dcmpg = 152;
public static final short OP_ifeq = 153;
public static final short OP_ifne = 154;
public static final short OP_iflt = 155;
public static final short OP_ifge = 156;
public static final short OP_ifgt = 157;
public static final short OP_ifle = 158;
public static final short OP_if_icmpeq = 159;
public static final short OP_if_icmpne = 160;
public static final short OP_if_icmplt = 161;
public static final short OP_if_icmpge = 162;
public static final short OP_if_icmpgt = 163;
public static final short OP_if_icmple = 164;
public static final short OP_if_acmpeq = 165;
public static final short OP_if_acmpne = 166;
public static final short OP_goto = 167;
public static final short OP_jsr = 168;
public static final short OP_ret = 169;
public static final short OP_tableswitch = 170;
public static final short OP_lookupswitch = 171;
public static final short OP_ireturn = 172;
public static final short OP_lreturn = 173;
public static final short OP_freturn = 174;
public static final short OP_dreturn = 175;
public static final short OP_areturn = 176;
public static final short OP_return = 177;
public static final short OP_getstatic = 178;
public static final short OP_putstatic = 179;
public static final short OP_getfield = 180;
public static final short OP_putfield = 181;
public static final short OP_invokevirtual = 182;
public static final short OP_invokespecial = 183;
public static final short OP_invokestatic = 184;
public static final short OP_invokeinterface = 185;
public static final short OP_invokedynamic = 186;
public static final short OP_new = 187;
public static final short OP_newarray = 188;
public static final short OP_anewarray = 189;
public static final short OP_arraylength = 190;
public static final short OP_athrow = 191;
public static final short OP_checkcast = 192;
public static final short OP_instanceof = 193;
public static final short OP_monitorenter = 194;
public static final short OP_monitorexit = 195;
public static final short OP_wide = 196;
public static final short OP_multianewarray = 197;
public static final short OP_ifnull = 198;
public static final short OP_ifnonnull = 199;
public static final short OP_goto_w = 200;
public static final short OP_jsr_w = 201;
public static final short ACC_PUBLIC = 0x1;
public static final short ACC_PRIVATE = 0x2;
public static final short ACC_PROTECTED = 0x4;
public static final short ACC_STATIC = 0x8;
public static final short ACC_FINAL = 0x10;
public static final short ACC_SYNCHRONIZED = 0x20;
public static final short ACC_SUPER = 0x20;
public static final short ACC_VOLATILE = 0x40;
public static final short ACC_TRANSIENT = 0x80;
public static final short ACC_NATIVE = 0x100;
public static final short ACC_INTERFACE = 0x200;
public static final short ACC_ABSTRACT = 0x400;
public static final short ACC_STRICT = 0x800;
public static final short ACC_SYNTHETIC = 0x1000;
public static final byte CONSTANT_Utf8 = 1;
public static final byte CONSTANT_Integer = 3;
public static final byte CONSTANT_Float = 4;
public static final byte CONSTANT_Long = 5;
public static final byte CONSTANT_Double = 6;
public static final byte CONSTANT_Class = 7;
public static final byte CONSTANT_String = 8;
public static final byte CONSTANT_FieldRef = 9;
public static final byte CONSTANT_MethodRef = 10;
public static final byte CONSTANT_InterfaceMethodRef = 11;
public static final byte CONSTANT_NameAndType = 12;
public static final byte CONSTANT_MethodHandle = 15;
public static final byte CONSTANT_MethodType = 16;
public static final byte CONSTANT_InvokeDynamic = 18;
public static final byte T_BOOLEAN = 4;
public static final byte T_CHAR = 5;
public static final byte T_FLOAT = 6;
public static final byte T_DOUBLE = 7;
public static final byte T_BYTE = 8;
public static final byte T_SHORT = 9;
public static final byte T_INT = 10;
public static final byte T_LONG = 11;
public static final String TYPE_boolean = "Z";
public static final String TYPE_byte = "B";
public static final String TYPE_int = "I";
public static final String TYPE_short = "S";
public static final String TYPE_long = "J";
public static final String TYPE_float = "F";
public static final String TYPE_double = "D";
public static final String TYPE_char = "C";
public static final String TYPE_void = "V";
public static final String TYPE_String = "Ljava/lang/String;";
public static final String TYPE_MethodHandle = "Ljava/lang/invoke/MethodHandle;";
public static final String TYPE_MethodType = "Ljava/lang/invoke/MethodType;";
public static final String TYPE_Object = "Ljava/lang/Object;";
public static final String TYPE_Throwable = "Ljava/lang/Throwable;";
public static final String TYPE_Class = "Ljava/lang/Class;";
public static final String TYPE_Exception = "Ljava/lang/Exception;";
public static final String TYPE_RuntimeException = "Ljava/lang/RuntimeException;";
public static final String TYPE_Error = "Ljava/lang/Error;";
/**
* This represents the type of "null", which can be any object. It is not defined by the JVM spec.
*/
public static final String TYPE_null = "L;";
/** This represents a type which is unknown. It is not defined by the JVM spec. */
public static final String TYPE_unknown = "L?;";
public static final byte TYPE_int_index = 0;
public static final byte TYPE_long_index = 1;
public static final byte TYPE_float_index = 2;
public static final byte TYPE_double_index = 3;
public static final byte TYPE_Object_index = 4;
public static final byte TYPE_byte_index = 5;
public static final byte TYPE_char_index = 6;
public static final byte TYPE_short_index = 7;
public static final byte TYPE_boolean_index = 8;
public static final String[] indexedTypes = { TYPE_int, TYPE_long, TYPE_float, TYPE_double, TYPE_Object, TYPE_byte, TYPE_char,
TYPE_short, TYPE_boolean };
public static final byte[] indexedTypes_T = { T_INT, T_LONG, T_FLOAT, T_DOUBLE, 0, T_BYTE, T_CHAR, T_SHORT, T_BOOLEAN };
// these constants are used by analyses to report results
public static final int NO = 1;
public static final int YES = 2;
public static final int MAYBE = 3;
}