BWAPI
EISBot/c_src/include/jni/classfile_constants.h
Go to the documentation of this file.
00001 /*
00002  * @(#)classfile_constants.h    1.4 05/11/17
00003  * 
00004  * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
00005  * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
00006  * 
00007  */
00008 
00009 #ifndef CLASSFILE_CONSTANTS_H
00010 #define CLASSFILE_CONSTANTS_H
00011 
00012 #ifdef __cplusplus
00013 extern "C" {
00014 #endif
00015 
00016 /* Flags */
00017 
00018 enum {
00019     JVM_ACC_PUBLIC        = 0x0001,
00020     JVM_ACC_PRIVATE       = 0x0002,
00021     JVM_ACC_PROTECTED     = 0x0004,
00022     JVM_ACC_STATIC        = 0x0008,
00023     JVM_ACC_FINAL         = 0x0010,
00024     JVM_ACC_SYNCHRONIZED  = 0x0020,
00025     JVM_ACC_SUPER         = 0x0020,
00026     JVM_ACC_VOLATILE      = 0x0040,
00027     JVM_ACC_BRIDGE        = 0x0040,
00028     JVM_ACC_TRANSIENT     = 0x0080,
00029     JVM_ACC_VARARGS       = 0x0080,
00030     JVM_ACC_NATIVE        = 0x0100,
00031     JVM_ACC_INTERFACE     = 0x0200,
00032     JVM_ACC_ABSTRACT      = 0x0400,
00033     JVM_ACC_STRICT        = 0x0800,
00034     JVM_ACC_SYNTHETIC     = 0x1000,
00035     JVM_ACC_ANNOTATION    = 0x2000,
00036     JVM_ACC_ENUM          = 0x4000
00037 };
00038 
00039 /* Used in newarray instruction. */
00040 
00041 enum {
00042     JVM_T_BOOLEAN = 4,
00043     JVM_T_CHAR    = 5,
00044     JVM_T_FLOAT   = 6,
00045     JVM_T_DOUBLE  = 7,
00046     JVM_T_BYTE    = 8,
00047     JVM_T_SHORT   = 9,
00048     JVM_T_INT     = 10,
00049     JVM_T_LONG    = 11
00050 };
00051 
00052 /* Constant Pool Entries */
00053 
00054 enum {
00055     JVM_CONSTANT_Utf8                   = 1,
00056     JVM_CONSTANT_Unicode                = 2, /* unused */
00057     JVM_CONSTANT_Integer                = 3,
00058     JVM_CONSTANT_Float                  = 4,
00059     JVM_CONSTANT_Long                   = 5,      
00060     JVM_CONSTANT_Double                 = 6,
00061     JVM_CONSTANT_Class                  = 7,
00062     JVM_CONSTANT_String                 = 8,
00063     JVM_CONSTANT_Fieldref               = 9,
00064     JVM_CONSTANT_Methodref              = 10,
00065     JVM_CONSTANT_InterfaceMethodref     = 11,
00066     JVM_CONSTANT_NameAndType            = 12
00067 };
00068 
00069 /* StackMapTable type item numbers */
00070 
00071 enum {
00072     JVM_ITEM_Top                = 0,
00073     JVM_ITEM_Integer            = 1,
00074     JVM_ITEM_Float              = 2,
00075     JVM_ITEM_Double             = 3,
00076     JVM_ITEM_Long               = 4,
00077     JVM_ITEM_Null               = 5,
00078     JVM_ITEM_UninitializedThis  = 6,
00079     JVM_ITEM_Object             = 7,
00080     JVM_ITEM_Uninitialized      = 8
00081 };
00082 
00083 /* Type signatures */
00084 
00085 enum {
00086     JVM_SIGNATURE_ARRAY         = '[',
00087     JVM_SIGNATURE_BYTE          = 'B',
00088     JVM_SIGNATURE_CHAR          = 'C',
00089     JVM_SIGNATURE_CLASS         = 'L',
00090     JVM_SIGNATURE_ENDCLASS      = ';',
00091     JVM_SIGNATURE_ENUM          = 'E',
00092     JVM_SIGNATURE_FLOAT         = 'F',
00093     JVM_SIGNATURE_DOUBLE        = 'D',
00094     JVM_SIGNATURE_FUNC          = '(',
00095     JVM_SIGNATURE_ENDFUNC       = ')',
00096     JVM_SIGNATURE_INT           = 'I',
00097     JVM_SIGNATURE_LONG          = 'J',
00098     JVM_SIGNATURE_SHORT         = 'S',
00099     JVM_SIGNATURE_VOID          = 'V',
00100     JVM_SIGNATURE_BOOLEAN       = 'Z'
00101 };
00102 
00103 /* Opcodes */
00104 
00105 enum {
00106     JVM_OPC_nop                 = 0,
00107     JVM_OPC_aconst_null         = 1,
00108     JVM_OPC_iconst_m1           = 2,
00109     JVM_OPC_iconst_0            = 3,
00110     JVM_OPC_iconst_1            = 4,
00111     JVM_OPC_iconst_2            = 5,
00112     JVM_OPC_iconst_3            = 6,
00113     JVM_OPC_iconst_4            = 7,
00114     JVM_OPC_iconst_5            = 8,
00115     JVM_OPC_lconst_0            = 9,
00116     JVM_OPC_lconst_1            = 10,
00117     JVM_OPC_fconst_0            = 11,
00118     JVM_OPC_fconst_1            = 12,
00119     JVM_OPC_fconst_2            = 13,
00120     JVM_OPC_dconst_0            = 14,
00121     JVM_OPC_dconst_1            = 15,
00122     JVM_OPC_bipush              = 16,
00123     JVM_OPC_sipush              = 17,
00124     JVM_OPC_ldc                 = 18,
00125     JVM_OPC_ldc_w               = 19,
00126     JVM_OPC_ldc2_w              = 20,
00127     JVM_OPC_iload               = 21,
00128     JVM_OPC_lload               = 22,
00129     JVM_OPC_fload               = 23,
00130     JVM_OPC_dload               = 24,
00131     JVM_OPC_aload               = 25,
00132     JVM_OPC_iload_0             = 26,
00133     JVM_OPC_iload_1             = 27,
00134     JVM_OPC_iload_2             = 28,
00135     JVM_OPC_iload_3             = 29,
00136     JVM_OPC_lload_0             = 30,
00137     JVM_OPC_lload_1             = 31,
00138     JVM_OPC_lload_2             = 32,
00139     JVM_OPC_lload_3             = 33,
00140     JVM_OPC_fload_0             = 34,
00141     JVM_OPC_fload_1             = 35,
00142     JVM_OPC_fload_2             = 36,
00143     JVM_OPC_fload_3             = 37,
00144     JVM_OPC_dload_0             = 38,
00145     JVM_OPC_dload_1             = 39,
00146     JVM_OPC_dload_2             = 40,
00147     JVM_OPC_dload_3             = 41,
00148     JVM_OPC_aload_0             = 42,
00149     JVM_OPC_aload_1             = 43,
00150     JVM_OPC_aload_2             = 44,
00151     JVM_OPC_aload_3             = 45,
00152     JVM_OPC_iaload              = 46,
00153     JVM_OPC_laload              = 47,
00154     JVM_OPC_faload              = 48,
00155     JVM_OPC_daload              = 49,
00156     JVM_OPC_aaload              = 50,
00157     JVM_OPC_baload              = 51,
00158     JVM_OPC_caload              = 52,
00159     JVM_OPC_saload              = 53,
00160     JVM_OPC_istore              = 54,
00161     JVM_OPC_lstore              = 55,
00162     JVM_OPC_fstore              = 56,
00163     JVM_OPC_dstore              = 57,
00164     JVM_OPC_astore              = 58,
00165     JVM_OPC_istore_0            = 59,
00166     JVM_OPC_istore_1            = 60,
00167     JVM_OPC_istore_2            = 61,
00168     JVM_OPC_istore_3            = 62,
00169     JVM_OPC_lstore_0            = 63,
00170     JVM_OPC_lstore_1            = 64,
00171     JVM_OPC_lstore_2            = 65,
00172     JVM_OPC_lstore_3            = 66,
00173     JVM_OPC_fstore_0            = 67,
00174     JVM_OPC_fstore_1            = 68,
00175     JVM_OPC_fstore_2            = 69,
00176     JVM_OPC_fstore_3            = 70,
00177     JVM_OPC_dstore_0            = 71,
00178     JVM_OPC_dstore_1            = 72,
00179     JVM_OPC_dstore_2            = 73,
00180     JVM_OPC_dstore_3            = 74,
00181     JVM_OPC_astore_0            = 75,
00182     JVM_OPC_astore_1            = 76,
00183     JVM_OPC_astore_2            = 77,
00184     JVM_OPC_astore_3            = 78,
00185     JVM_OPC_iastore             = 79,
00186     JVM_OPC_lastore             = 80,
00187     JVM_OPC_fastore             = 81,
00188     JVM_OPC_dastore             = 82,
00189     JVM_OPC_aastore             = 83,
00190     JVM_OPC_bastore             = 84,
00191     JVM_OPC_castore             = 85,
00192     JVM_OPC_sastore             = 86,
00193     JVM_OPC_pop                 = 87,
00194     JVM_OPC_pop2                = 88,
00195     JVM_OPC_dup                 = 89,
00196     JVM_OPC_dup_x1              = 90,
00197     JVM_OPC_dup_x2              = 91,
00198     JVM_OPC_dup2                = 92,
00199     JVM_OPC_dup2_x1             = 93,
00200     JVM_OPC_dup2_x2             = 94,
00201     JVM_OPC_swap                = 95,
00202     JVM_OPC_iadd                = 96,
00203     JVM_OPC_ladd                = 97,
00204     JVM_OPC_fadd                = 98,
00205     JVM_OPC_dadd                = 99,
00206     JVM_OPC_isub                = 100,
00207     JVM_OPC_lsub                = 101,
00208     JVM_OPC_fsub                = 102,
00209     JVM_OPC_dsub                = 103,
00210     JVM_OPC_imul                = 104,
00211     JVM_OPC_lmul                = 105,
00212     JVM_OPC_fmul                = 106,
00213     JVM_OPC_dmul                = 107,
00214     JVM_OPC_idiv                = 108,
00215     JVM_OPC_ldiv                = 109,
00216     JVM_OPC_fdiv                = 110,
00217     JVM_OPC_ddiv                = 111,
00218     JVM_OPC_irem                = 112,
00219     JVM_OPC_lrem                = 113,
00220     JVM_OPC_frem                = 114,
00221     JVM_OPC_drem                = 115,
00222     JVM_OPC_ineg                = 116,
00223     JVM_OPC_lneg                = 117,
00224     JVM_OPC_fneg                = 118,
00225     JVM_OPC_dneg                = 119,
00226     JVM_OPC_ishl                = 120,
00227     JVM_OPC_lshl                = 121,
00228     JVM_OPC_ishr                = 122,
00229     JVM_OPC_lshr                = 123,
00230     JVM_OPC_iushr               = 124,
00231     JVM_OPC_lushr               = 125,
00232     JVM_OPC_iand                = 126,
00233     JVM_OPC_land                = 127,
00234     JVM_OPC_ior                 = 128,
00235     JVM_OPC_lor                 = 129,
00236     JVM_OPC_ixor                = 130,
00237     JVM_OPC_lxor                = 131,
00238     JVM_OPC_iinc                = 132,
00239     JVM_OPC_i2l                 = 133,
00240     JVM_OPC_i2f                 = 134,
00241     JVM_OPC_i2d                 = 135,
00242     JVM_OPC_l2i                 = 136,
00243     JVM_OPC_l2f                 = 137,
00244     JVM_OPC_l2d                 = 138,
00245     JVM_OPC_f2i                 = 139,
00246     JVM_OPC_f2l                 = 140,
00247     JVM_OPC_f2d                 = 141,
00248     JVM_OPC_d2i                 = 142,
00249     JVM_OPC_d2l                 = 143,
00250     JVM_OPC_d2f                 = 144,
00251     JVM_OPC_i2b                 = 145,
00252     JVM_OPC_i2c                 = 146,
00253     JVM_OPC_i2s                 = 147,
00254     JVM_OPC_lcmp                = 148,
00255     JVM_OPC_fcmpl               = 149,
00256     JVM_OPC_fcmpg               = 150,
00257     JVM_OPC_dcmpl               = 151,
00258     JVM_OPC_dcmpg               = 152,
00259     JVM_OPC_ifeq                = 153,
00260     JVM_OPC_ifne                = 154,
00261     JVM_OPC_iflt                = 155,
00262     JVM_OPC_ifge                = 156,
00263     JVM_OPC_ifgt                = 157,
00264     JVM_OPC_ifle                = 158,
00265     JVM_OPC_if_icmpeq           = 159,
00266     JVM_OPC_if_icmpne           = 160,
00267     JVM_OPC_if_icmplt           = 161,
00268     JVM_OPC_if_icmpge           = 162,
00269     JVM_OPC_if_icmpgt           = 163,
00270     JVM_OPC_if_icmple           = 164,
00271     JVM_OPC_if_acmpeq           = 165,
00272     JVM_OPC_if_acmpne           = 166,
00273     JVM_OPC_goto                = 167,
00274     JVM_OPC_jsr                 = 168,
00275     JVM_OPC_ret                 = 169,
00276     JVM_OPC_tableswitch         = 170,
00277     JVM_OPC_lookupswitch        = 171,
00278     JVM_OPC_ireturn             = 172,
00279     JVM_OPC_lreturn             = 173,
00280     JVM_OPC_freturn             = 174,
00281     JVM_OPC_dreturn             = 175,
00282     JVM_OPC_areturn             = 176,
00283     JVM_OPC_return              = 177,
00284     JVM_OPC_getstatic           = 178,
00285     JVM_OPC_putstatic           = 179,
00286     JVM_OPC_getfield            = 180,
00287     JVM_OPC_putfield            = 181,
00288     JVM_OPC_invokevirtual       = 182,
00289     JVM_OPC_invokespecial       = 183,
00290     JVM_OPC_invokestatic        = 184,
00291     JVM_OPC_invokeinterface     = 185,
00292     JVM_OPC_xxxunusedxxx        = 186,
00293     JVM_OPC_new                 = 187,
00294     JVM_OPC_newarray            = 188,
00295     JVM_OPC_anewarray           = 189,
00296     JVM_OPC_arraylength         = 190,
00297     JVM_OPC_athrow              = 191,
00298     JVM_OPC_checkcast           = 192,
00299     JVM_OPC_instanceof          = 193,
00300     JVM_OPC_monitorenter        = 194,
00301     JVM_OPC_monitorexit         = 195,
00302     JVM_OPC_wide                = 196,
00303     JVM_OPC_multianewarray      = 197,
00304     JVM_OPC_ifnull              = 198,
00305     JVM_OPC_ifnonnull           = 199,
00306     JVM_OPC_goto_w              = 200,
00307     JVM_OPC_jsr_w               = 201,
00308     JVM_OPC_MAX                 = 201
00309 };
00310 
00311 /* Opcode length initializer, use with something like:
00312  *   unsigned char opcode_length[JVM_OPC_MAX+1] = JVM_OPCODE_LENGTH_INITIALIZER;
00313  */
00314 #define JVM_OPCODE_LENGTH_INITIALIZER { \
00315    1,   /* nop */                       \
00316    1,   /* aconst_null */               \
00317    1,   /* iconst_m1 */                 \
00318    1,   /* iconst_0 */                  \
00319    1,   /* iconst_1 */                  \
00320    1,   /* iconst_2 */                  \
00321    1,   /* iconst_3 */                  \
00322    1,   /* iconst_4 */                  \
00323    1,   /* iconst_5 */                  \
00324    1,   /* lconst_0 */                  \
00325    1,   /* lconst_1 */                  \
00326    1,   /* fconst_0 */                  \
00327    1,   /* fconst_1 */                  \
00328    1,   /* fconst_2 */                  \
00329    1,   /* dconst_0 */                  \
00330    1,   /* dconst_1 */                  \
00331    2,   /* bipush */                    \
00332    3,   /* sipush */                    \
00333    2,   /* ldc */                       \
00334    3,   /* ldc_w */                     \
00335    3,   /* ldc2_w */                    \
00336    2,   /* iload */                     \
00337    2,   /* lload */                     \
00338    2,   /* fload */                     \
00339    2,   /* dload */                     \
00340    2,   /* aload */                     \
00341    1,   /* iload_0 */                   \
00342    1,   /* iload_1 */                   \
00343    1,   /* iload_2 */                   \
00344    1,   /* iload_3 */                   \
00345    1,   /* lload_0 */                   \
00346    1,   /* lload_1 */                   \
00347    1,   /* lload_2 */                   \
00348    1,   /* lload_3 */                   \
00349    1,   /* fload_0 */                   \
00350    1,   /* fload_1 */                   \
00351    1,   /* fload_2 */                   \
00352    1,   /* fload_3 */                   \
00353    1,   /* dload_0 */                   \
00354    1,   /* dload_1 */                   \
00355    1,   /* dload_2 */                   \
00356    1,   /* dload_3 */                   \
00357    1,   /* aload_0 */                   \
00358    1,   /* aload_1 */                   \
00359    1,   /* aload_2 */                   \
00360    1,   /* aload_3 */                   \
00361    1,   /* iaload */                    \
00362    1,   /* laload */                    \
00363    1,   /* faload */                    \
00364    1,   /* daload */                    \
00365    1,   /* aaload */                    \
00366    1,   /* baload */                    \
00367    1,   /* caload */                    \
00368    1,   /* saload */                    \
00369    2,   /* istore */                    \
00370    2,   /* lstore */                    \
00371    2,   /* fstore */                    \
00372    2,   /* dstore */                    \
00373    2,   /* astore */                    \
00374    1,   /* istore_0 */                  \
00375    1,   /* istore_1 */                  \
00376    1,   /* istore_2 */                  \
00377    1,   /* istore_3 */                  \
00378    1,   /* lstore_0 */                  \
00379    1,   /* lstore_1 */                  \
00380    1,   /* lstore_2 */                  \
00381    1,   /* lstore_3 */                  \
00382    1,   /* fstore_0 */                  \
00383    1,   /* fstore_1 */                  \
00384    1,   /* fstore_2 */                  \
00385    1,   /* fstore_3 */                  \
00386    1,   /* dstore_0 */                  \
00387    1,   /* dstore_1 */                  \
00388    1,   /* dstore_2 */                  \
00389    1,   /* dstore_3 */                  \
00390    1,   /* astore_0 */                  \
00391    1,   /* astore_1 */                  \
00392    1,   /* astore_2 */                  \
00393    1,   /* astore_3 */                  \
00394    1,   /* iastore */                   \
00395    1,   /* lastore */                   \
00396    1,   /* fastore */                   \
00397    1,   /* dastore */                   \
00398    1,   /* aastore */                   \
00399    1,   /* bastore */                   \
00400    1,   /* castore */                   \
00401    1,   /* sastore */                   \
00402    1,   /* pop */                       \
00403    1,   /* pop2 */                      \
00404    1,   /* dup */                       \
00405    1,   /* dup_x1 */                    \
00406    1,   /* dup_x2 */                    \
00407    1,   /* dup2 */                      \
00408    1,   /* dup2_x1 */                   \
00409    1,   /* dup2_x2 */                   \
00410    1,   /* swap */                      \
00411    1,   /* iadd */                      \
00412    1,   /* ladd */                      \
00413    1,   /* fadd */                      \
00414    1,   /* dadd */                      \
00415    1,   /* isub */                      \
00416    1,   /* lsub */                      \
00417    1,   /* fsub */                      \
00418    1,   /* dsub */                      \
00419    1,   /* imul */                      \
00420    1,   /* lmul */                      \
00421    1,   /* fmul */                      \
00422    1,   /* dmul */                      \
00423    1,   /* idiv */                      \
00424    1,   /* ldiv */                      \
00425    1,   /* fdiv */                      \
00426    1,   /* ddiv */                      \
00427    1,   /* irem */                      \
00428    1,   /* lrem */                      \
00429    1,   /* frem */                      \
00430    1,   /* drem */                      \
00431    1,   /* ineg */                      \
00432    1,   /* lneg */                      \
00433    1,   /* fneg */                      \
00434    1,   /* dneg */                      \
00435    1,   /* ishl */                      \
00436    1,   /* lshl */                      \
00437    1,   /* ishr */                      \
00438    1,   /* lshr */                      \
00439    1,   /* iushr */                     \
00440    1,   /* lushr */                     \
00441    1,   /* iand */                      \
00442    1,   /* land */                      \
00443    1,   /* ior */                       \
00444    1,   /* lor */                       \
00445    1,   /* ixor */                      \
00446    1,   /* lxor */                      \
00447    3,   /* iinc */                      \
00448    1,   /* i2l */                       \
00449    1,   /* i2f */                       \
00450    1,   /* i2d */                       \
00451    1,   /* l2i */                       \
00452    1,   /* l2f */                       \
00453    1,   /* l2d */                       \
00454    1,   /* f2i */                       \
00455    1,   /* f2l */                       \
00456    1,   /* f2d */                       \
00457    1,   /* d2i */                       \
00458    1,   /* d2l */                       \
00459    1,   /* d2f */                       \
00460    1,   /* i2b */                       \
00461    1,   /* i2c */                       \
00462    1,   /* i2s */                       \
00463    1,   /* lcmp */                      \
00464    1,   /* fcmpl */                     \
00465    1,   /* fcmpg */                     \
00466    1,   /* dcmpl */                     \
00467    1,   /* dcmpg */                     \
00468    3,   /* ifeq */                      \
00469    3,   /* ifne */                      \
00470    3,   /* iflt */                      \
00471    3,   /* ifge */                      \
00472    3,   /* ifgt */                      \
00473    3,   /* ifle */                      \
00474    3,   /* if_icmpeq */                 \
00475    3,   /* if_icmpne */                 \
00476    3,   /* if_icmplt */                 \
00477    3,   /* if_icmpge */                 \
00478    3,   /* if_icmpgt */                 \
00479    3,   /* if_icmple */                 \
00480    3,   /* if_acmpeq */                 \
00481    3,   /* if_acmpne */                 \
00482    3,   /* goto */                      \
00483    3,   /* jsr */                       \
00484    2,   /* ret */                       \
00485    99,  /* tableswitch */               \
00486    99,  /* lookupswitch */              \
00487    1,   /* ireturn */                   \
00488    1,   /* lreturn */                   \
00489    1,   /* freturn */                   \
00490    1,   /* dreturn */                   \
00491    1,   /* areturn */                   \
00492    1,   /* return */                    \
00493    3,   /* getstatic */                 \
00494    3,   /* putstatic */                 \
00495    3,   /* getfield */                  \
00496    3,   /* putfield */                  \
00497    3,   /* invokevirtual */             \
00498    3,   /* invokespecial */             \
00499    3,   /* invokestatic */              \
00500    5,   /* invokeinterface */           \
00501    0,   /* xxxunusedxxx */              \
00502    3,   /* new */                       \
00503    2,   /* newarray */                  \
00504    3,   /* anewarray */                 \
00505    1,   /* arraylength */               \
00506    1,   /* athrow */                    \
00507    3,   /* checkcast */                 \
00508    3,   /* instanceof */                \
00509    1,   /* monitorenter */              \
00510    1,   /* monitorexit */               \
00511    0,   /* wide */                      \
00512    4,   /* multianewarray */            \
00513    3,   /* ifnull */                    \
00514    3,   /* ifnonnull */                 \
00515    5,   /* goto_w */                    \
00516    5    /* jsr_w */                     \
00517 }
00518 
00519 #ifdef __cplusplus
00520 } /* extern "C" */
00521 #endif /* __cplusplus */
00522 
00523 #endif /* CLASSFILE_CONSTANTS */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines