/* * Copyright 2002-2005 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Sun designates this * particular file as subject to the "Classpath" exception as provided * by Sun in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, * CA 95054 USA or visit www.sun.com if you need additional information or * have any questions. */ package sun.tools.javap; public interface RuntimeConstants { /* Signature Characters */ public static final char SIGC_VOID = 'V'; public static final String SIG_VOID = "V"; public static final char SIGC_BOOLEAN = 'Z'; public static final String SIG_BOOLEAN = "Z"; public static final char SIGC_BYTE = 'B'; public static final String SIG_BYTE = "B"; public static final char SIGC_CHAR = 'C'; public static final String SIG_CHAR = "C"; public static final char SIGC_SHORT = 'S'; public static final String SIG_SHORT = "S"; public static final char SIGC_INT = 'I'; public static final String SIG_INT = "I"; public static final char SIGC_LONG = 'J'; public static final String SIG_LONG = "J"; public static final char SIGC_FLOAT = 'F'; public static final String SIG_FLOAT = "F"; public static final char SIGC_DOUBLE = 'D'; public static final String SIG_DOUBLE = "D"; public static final char SIGC_ARRAY = '['; public static final String SIG_ARRAY = "["; public static final char SIGC_CLASS = 'L'; public static final String SIG_CLASS = "L"; public static final char SIGC_METHOD = '('; public static final String SIG_METHOD = "("; public static final char SIGC_ENDCLASS = ';'; public static final String SIG_ENDCLASS = ";"; public static final char SIGC_ENDMETHOD = ')'; public static final String SIG_ENDMETHOD = ")"; public static final char SIGC_PACKAGE = '/'; public static final String SIG_PACKAGE = "/"; /* Class File Constants */ public static final int JAVA_MAGIC = 0xcafebabe; public static final int JAVA_VERSION = 45; public static final int JAVA_MINOR_VERSION = 3; /* Constant table */ public static final int CONSTANT_UTF8 = 1; public static final int CONSTANT_UNICODE = 2; public static final int CONSTANT_INTEGER = 3; public static final int CONSTANT_FLOAT = 4; public static final int CONSTANT_LONG = 5; public static final int CONSTANT_DOUBLE = 6; public static final int CONSTANT_CLASS = 7; public static final int CONSTANT_STRING = 8; public static final int CONSTANT_FIELD = 9; public static final int CONSTANT_METHOD = 10; public static final int CONSTANT_INTERFACEMETHOD = 11; public static final int CONSTANT_NAMEANDTYPE = 12; /* Access Flags */ public static final int ACC_PUBLIC = 0x00000001; public static final int ACC_PRIVATE = 0x00000002; public static final int ACC_PROTECTED = 0x00000004; public static final int ACC_STATIC = 0x00000008; public static final int ACC_FINAL = 0x00000010; public static final int ACC_SYNCHRONIZED = 0x00000020; public static final int ACC_SUPER = 0x00000020; public static final int ACC_VOLATILE = 0x00000040; public static final int ACC_TRANSIENT = 0x00000080; public static final int ACC_NATIVE = 0x00000100; public static final int ACC_INTERFACE = 0x00000200; public static final int ACC_ABSTRACT = 0x00000400; public static final int ACC_STRICT = 0x00000800; public static final int ACC_EXPLICIT = 0x00001000; public static final int ACC_SYNTHETIC = 0x00010000; // actually, this is an attribute /* Type codes */ public static final int T_CLASS = 0x00000002; public static final int T_BOOLEAN = 0x00000004; public static final int T_CHAR = 0x00000005; public static final int T_FLOAT = 0x00000006; public static final int T_DOUBLE = 0x00000007; public static final int T_BYTE = 0x00000008; public static final int T_SHORT = 0x00000009; public static final int T_INT = 0x0000000a; public static final int T_LONG = 0x0000000b; /* Type codes for StackMap attribute */ public static final int ITEM_Bogus =0; // an unknown or uninitialized value public static final int ITEM_Integer =1; // a 32-bit integer public static final int ITEM_Float =2; // not used public static final int ITEM_Double =3; // not used public static final int ITEM_Long =4; // a 64-bit integer public static final int ITEM_Null =5; // the type of null public static final int ITEM_InitObject =6; // "this" in constructor public static final int ITEM_Object =7; // followed by 2-byte index of class name public static final int ITEM_NewObject =8; // followed by 2-byte ref to "new" /* Constants used in StackMapTable attribute */ public static final int SAME_FRAME_BOUND = 64; public static final int SAME_LOCALS_1_STACK_ITEM_BOUND = 128; public static final int SAME_LOCALS_1_STACK_ITEM_EXTENDED = 247; public static final int SAME_FRAME_EXTENDED = 251; public static final int FULL_FRAME = 255; /* Opcodes */ public static final int opc_dead = -2; public static final int opc_label = -1; public static final int opc_nop = 0; public static final int opc_aconst_null = 1; public static final int opc_iconst_m1 = 2; public static final int opc_iconst_0 = 3; public static final int opc_iconst_1 = 4; public static final int opc_iconst_2 = 5; public static final int opc_iconst_3 = 6; public static final int opc_iconst_4 = 7; public static final int opc_iconst_5 = 8; public static final int opc_lconst_0 = 9; public static final int opc_lconst_1 = 10; public static final int opc_fconst_0 = 11; public static final int opc_fconst_1 = 12; public static final int opc_fconst_2 = 13; public static final int opc_dconst_0 = 14; public static final int opc_dconst_1 = 15; public static final int opc_bipush = 16; public static final int opc_sipush = 17; public static final int opc_ldc = 18; public static final int opc_ldc_w = 19; public static final int opc_ldc2_w = 20; public static final int opc_iload = 21; public static final int opc_lload = 22; public static final int opc_fload = 23; public static final int opc_dload = 24; public static final int opc_aload = 25; public static final int opc_iload_0 = 26; public static final int opc_iload_1 = 27; public static final int opc_iload_2 = 28; public static final int opc_iload_3 = 29; public static final int opc_lload_0 = 30; public static final int opc_lload_1 = 31; public static final int opc_lload_2 = 32; public static final int opc_lload_3 = 33; public static final int opc_fload_0 = 34; public static final int opc_fload_1 = 35; public static final int opc_fload_2 = 36; public static final int opc_fload_3 = 37; public static final int opc_dload_0 = 38; public static final int opc_dload_1 = 39; public static final int opc_dload_2 = 40; public static final int opc_dload_3 = 41; public static final int opc_aload_0 = 42; public static final int opc_aload_1 = 43; public static final int opc_aload_2 = 44; public static final int opc_aload_3 = 45; public static final int opc_iaload = 46; public static final int opc_laload = 47; public static final int opc_faload = 48; public static final int opc_daload = 49; public static final int opc_aaload = 50; public static final int opc_baload = 51; public static final int opc_caload = 52; public static final int opc_saload = 53; public static final int opc_istore = 54; public static final int opc_lstore = 55; public static final int opc_fstore = 56; public static final int opc_dstore = 57; public static final int opc_astore = 58; public static final int opc_istore_0 = 59; public static final int opc_istore_1 = 60; public static final int opc_istore_2 = 61; public static final int opc_istore_3 = 62; public static final int opc_lstore_0 = 63; public static final int opc_lstore_1 = 64; public static final int opc_lstore_2 = 65; public static final int opc_lstore_3 = 66; public static final int opc_fstore_0 = 67; public static final int opc_fstore_1 = 68; public static final int opc_fstore_2 = 69; public static final int opc_fstore_3 = 70; public static final int opc_dstore_0 = 71; public static final int opc_dstore_1 = 72; public static final int opc_dstore_2 = 73; public static final int opc_dstore_3 = 74; public static final int opc_astore_0 = 75; public static final int opc_astore_1 = 76; public static final int opc_astore_2 = 77; public static final int opc_astore_3 = 78; public static final int opc_iastore = 79; public static final int opc_lastore = 80; public static final int opc_fastore = 81; public static final int opc_dastore = 82; public static final int opc_aastore = 83; public static final int opc_bastore = 84; public static final int opc_castore = 85; public static final int opc_sastore = 86; public static final int opc_pop = 87; public static final int opc_pop2 = 88; public static final int opc_dup = 89; public static final int opc_dup_x1 = 90; public static final int opc_dup_x2 = 91; public static final int opc_dup2 = 92; public static final int opc_dup2_x1 = 93; public static final int opc_dup2_x2 = 94; public static final int opc_swap = 95; public static final int opc_iadd = 96; public static final int opc_ladd = 97; public static final int opc_fadd = 98; public static final int opc_dadd = 99; public static final int opc_isub = 100; public static final int opc_lsub = 101; public static final int opc_fsub = 102; public static final int opc_dsub = 103; public static final int opc_imul = 104; public static final int opc_lmul = 105; public static final int opc_fmul = 106; public static final int opc_dmul = 107; public static final int opc_idiv = 108; public static final int opc_ldiv = 109; public static final int opc_fdiv = 110; public static final int opc_ddiv = 111; public static final int opc_irem = 112; public static final int opc_lrem = 113; public static final int opc_frem = 114; public static final int opc_drem = 115; public static final int opc_ineg = 116; public static final int opc_lneg = 117; public static final int opc_fneg = 118; public static final int opc_dneg = 119; public static final int opc_ishl = 120; public static final int opc_lshl = 121; public static final int opc_ishr = 122; public static final int opc_lshr = 123; public static final int opc_iushr = 124; public static final int opc_lushr = 125; public static final int opc_iand = 126; public static final int opc_land = 127; public static final int opc_ior = 128; public static final int opc_lor = 129; public static final int opc_ixor = 130; public static final int opc_lxor = 131; public static final int opc_iinc = 132; public static final int opc_i2l = 133; public static final int opc_i2f = 134; public static final int opc_i2d = 135; public static final int opc_l2i = 136; public static final int opc_l2f = 137; public static final int opc_l2d = 138; public static final int opc_f2i = 139; public static final int opc_f2l = 140; public static final int opc_f2d = 141; public static final int opc_d2i = 142; public static final int opc_d2l = 143; public static final int opc_d2f = 144; public static final int opc_i2b = 145; public static final int opc_int2byte = 145; public static final int opc_i2c = 146; public static final int opc_int2char = 146; public static final int opc_i2s = 147; public static final int opc_int2short = 147; public static final int opc_lcmp = 148; public static final int opc_fcmpl = 149; public static final int opc_fcmpg = 150; public static final int opc_dcmpl = 151; public static final int opc_dcmpg = 152; public static final int opc_ifeq = 153; public static final int opc_ifne = 154; public static final int opc_iflt = 155; public static final int opc_ifge = 156; public static final int opc_ifgt = 157; public static final int opc_ifle = 158; public static final int opc_if_icmpeq = 159; public static final int opc_if_icmpne = 160; public static final int opc_if_icmplt = 161; public static final int opc_if_icmpge = 162; public static final int opc_if_icmpgt = 163; public static final int opc_if_icmple = 164; public static final int opc_if_acmpeq = 165; public static final int opc_if_acmpne = 166; public static final int opc_goto = 167; public static final int opc_jsr = 168; public static final int opc_ret = 169; public static final int opc_tableswitch = 170; public static final int opc_lookupswitch = 171; public static final int opc_ireturn = 172; public static final int opc_lreturn = 173; public static final int opc_freturn = 174; public static final int opc_dreturn = 175; public static final int opc_areturn = 176; public static final int opc_return = 177; public static final int opc_getstatic = 178; public static final int opc_putstatic = 179; public static final int opc_getfield = 180; public static final int opc_putfield = 181; public static final int opc_invokevirtual = 182; public static final int opc_invokenonvirtual = 183; public static final int opc_invokespecial = 183; public static final int opc_invokestatic = 184; public static final int opc_invokeinterface = 185; // public static final int opc_xxxunusedxxx = 186; public static final int opc_new = 187; public static final int opc_newarray = 188; public static final int opc_anewarray = 189; public static final int opc_arraylength = 190; public static final int opc_athrow = 191; public static final int opc_checkcast = 192; public static final int opc_instanceof = 193; public static final int opc_monitorenter = 194; public static final int opc_monitorexit = 195; public static final int opc_wide = 196; public static final int opc_multianewarray = 197; public static final int opc_ifnull = 198; public static final int opc_ifnonnull = 199; public static final int opc_goto_w = 200; public static final int opc_jsr_w = 201; /* Pseudo-instructions */ public static final int opc_bytecode = 203; public static final int opc_try = 204; public static final int opc_endtry = 205; public static final int opc_catch = 206; public static final int opc_var = 207; public static final int opc_endvar = 208; public static final int opc_localsmap = 209; public static final int opc_stackmap = 210; /* PicoJava prefixes */ public static final int opc_nonpriv = 254; public static final int opc_priv = 255; /* Wide instructions */ public static final int opc_iload_w = (opc_wide<<8)|opc_iload; public static final int opc_lload_w = (opc_wide<<8)|opc_lload; public static final int opc_fload_w = (opc_wide<<8)|opc_fload; public static final int opc_dload_w = (opc_wide<<8)|opc_dload; public static final int opc_aload_w = (opc_wide<<8)|opc_aload; public static final int opc_istore_w = (opc_wide<<8)|opc_istore; public static final int opc_lstore_w = (opc_wide<<8)|opc_lstore; public static final int opc_fstore_w = (opc_wide<<8)|opc_fstore; public static final int opc_dstore_w = (opc_wide<<8)|opc_dstore; public static final int opc_astore_w = (opc_wide<<8)|opc_astore; public static final int opc_ret_w = (opc_wide<<8)|opc_ret; public static final int opc_iinc_w = (opc_wide<<8)|opc_iinc; /* Opcode Names */ public static final String opcNamesTab[] = { "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", // was "invokenonvirtual", "invokestatic", "invokeinterface", "bytecode 186", //"xxxunusedxxx", "new", "newarray", "anewarray", "arraylength", "athrow", "checkcast", "instanceof", "monitorenter", "monitorexit", null, // "wide", "multianewarray", "ifnull", "ifnonnull", "goto_w", "jsr_w", "bytecode 202", // "breakpoint", "bytecode", "try", "endtry", "catch", "var", "endvar", "locals_map", "stack_map" }; /* Opcode Lengths */ public static final int opcLengthsTab[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 2, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 99, 99, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 5, 0, 3, 2, 3, 1, 1, 3, 3, 1, 1, 0, // wide 4, 3, 3, 5, 5, 1, 1, 0, 0, 0, 0, 0 // pseudo }; }