BWAPI
|
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 */