001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 * 017 */ 018package org.apache.bcel; 019 020import java.util.Arrays; 021import java.util.Collections; 022 023/** 024 * Constants for the project, mostly defined in the JVM specification. 025 * 026 * @version $Id: Const.java 1748987 2016-06-18 12:36:47Z sebb $ 027 * @since 6.0 (intended to replace the Constants interface) 028 */ 029public final class Const { 030 031 /** 032 * Java class file format Magic number (0xCAFEBABE) 033 * 034 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.1-200-A"> 035 * The ClassFile Structure in The Java Virtual Machine Specification</a> 036 */ 037 public static final int JVM_CLASSFILE_MAGIC = 0xCAFEBABE; 038 039 /** Major version number of class files for Java 1.1. 040 * @see #MINOR_1_1 041 * */ 042 public static final short MAJOR_1_1 = 45; 043 044 /** Minor version number of class files for Java 1.1. 045 * @see #MAJOR_1_1 046 * */ 047 public static final short MINOR_1_1 = 3; 048 049 /** Major version number of class files for Java 1.2. 050 * @see #MINOR_1_2 051 * */ 052 public static final short MAJOR_1_2 = 46; 053 054 /** Minor version number of class files for Java 1.2. 055 * @see #MAJOR_1_2 056 * */ 057 public static final short MINOR_1_2 = 0; 058 059 /** Major version number of class files for Java 1.2. 060 * @see #MINOR_1_2 061 * */ 062 public static final short MAJOR_1_3 = 47; 063 064 /** Minor version number of class files for Java 1.3. 065 * @see #MAJOR_1_3 066 * */ 067 public static final short MINOR_1_3 = 0; 068 069 /** Major version number of class files for Java 1.3. 070 * @see #MINOR_1_3 071 * */ 072 public static final short MAJOR_1_4 = 48; 073 074 /** Minor version number of class files for Java 1.4. 075 * @see #MAJOR_1_4 076 * */ 077 public static final short MINOR_1_4 = 0; 078 079 /** Major version number of class files for Java 1.4. 080 * @see #MINOR_1_4 081 * */ 082 public static final short MAJOR_1_5 = 49; 083 084 /** Minor version number of class files for Java 1.5. 085 * @see #MAJOR_1_5 086 * */ 087 public static final short MINOR_1_5 = 0; 088 089 /** Major version number of class files for Java 1.6. 090 * @see #MINOR_1_6 091 * */ 092 public static final short MAJOR_1_6 = 50; 093 094 /** Minor version number of class files for Java 1.6. 095 * @see #MAJOR_1_6 096 * */ 097 public static final short MINOR_1_6 = 0; 098 099 /** Major version number of class files for Java 1.7. 100 * @see #MINOR_1_7 101 * */ 102 public static final short MAJOR_1_7 = 51; 103 104 /** Minor version number of class files for Java 1.7. 105 * @see #MAJOR_1_7 106 * */ 107 public static final short MINOR_1_7 = 0; 108 109 /** Major version number of class files for Java 1.8. 110 * @see #MINOR_1_8 111 * */ 112 public static final short MAJOR_1_8 = 52; 113 114 /** Major version number of class files for Java 1.9. 115 * @see #MINOR_1_9 116 * */ 117 public static final short MAJOR_1_9 = 53; 118 119 /** Minor version number of class files for Java 1.8. 120 * @see #MAJOR_1_8 121 * */ 122 public static final short MINOR_1_8 = 0; 123 124 /** Minor version number of class files for Java 1.9. 125 * @see #MAJOR_1_9 126 * */ 127 public static final short MINOR_1_9 = 0; 128 129 /** Default major version number. Class file is for Java 1.1. 130 * @see #MAJOR_1_1 131 * */ 132 public static final short MAJOR = MAJOR_1_1; 133 134 /** Default major version number. Class file is for Java 1.1. 135 * @see #MAJOR_1_1 136 * */ 137 public static final short MINOR = MINOR_1_1; 138 139 /** Maximum value for an unsigned short. 140 */ 141 public static final int MAX_SHORT = 65535; // 2^16 - 1 142 143 /** Maximum value for an unsigned byte. 144 */ 145 public static final int MAX_BYTE = 255; // 2^8 - 1 146 147 /** One of the access flags for fields, methods, or classes. 148 * @see <a href='http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.5'> 149 * Flag definitions for Fields in the Java Virtual Machine Specification (Java SE 8 Edition).</a> 150 * @see <a href='http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.6'> 151 * Flag definitions for Methods in the Java Virtual Machine Specification (Java SE 8 Edition).</a> 152 * @see <a href='http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.6-300-D.1-D.1'> 153 * Flag definitions for Classes in the Java Virtual Machine Specification (Java SE 8 Edition).</a> 154 */ 155 public static final short ACC_PUBLIC = 0x0001; 156 157 /** One of the access flags for fields, methods, or classes. 158 * @see #ACC_PUBLIC 159 */ 160 public static final short ACC_PRIVATE = 0x0002; 161 162 /** One of the access flags for fields, methods, or classes. 163 * @see #ACC_PUBLIC 164 */ 165 public static final short ACC_PROTECTED = 0x0004; 166 167 /** One of the access flags for fields, methods, or classes. 168 * @see #ACC_PUBLIC 169 */ 170 public static final short ACC_STATIC = 0x0008; 171 172 /** One of the access flags for fields, methods, or classes. 173 * @see #ACC_PUBLIC 174 */ 175 public static final short ACC_FINAL = 0x0010; 176 177 /** One of the access flags for fields, methods, or classes. 178 * @see #ACC_PUBLIC 179 */ 180 public static final short ACC_SYNCHRONIZED = 0x0020; 181 182 /** One of the access flags for fields, methods, or classes. 183 * @see #ACC_PUBLIC 184 */ 185 public static final short ACC_VOLATILE = 0x0040; 186 187 /** One of the access flags for fields, methods, or classes. 188 * @see #ACC_PUBLIC 189 */ 190 public static final short ACC_BRIDGE = 0x0040; 191 192 /** One of the access flags for fields, methods, or classes. 193 * @see #ACC_PUBLIC 194 */ 195 public static final short ACC_TRANSIENT = 0x0080; 196 197 /** One of the access flags for fields, methods, or classes. 198 * @see #ACC_PUBLIC 199 */ 200 public static final short ACC_VARARGS = 0x0080; 201 202 /** One of the access flags for fields, methods, or classes. 203 * @see #ACC_PUBLIC 204 */ 205 public static final short ACC_NATIVE = 0x0100; 206 207 /** One of the access flags for fields, methods, or classes. 208 * @see #ACC_PUBLIC 209 */ 210 public static final short ACC_INTERFACE = 0x0200; 211 212 /** One of the access flags for fields, methods, or classes. 213 * @see #ACC_PUBLIC 214 */ 215 public static final short ACC_ABSTRACT = 0x0400; 216 217 /** One of the access flags for fields, methods, or classes. 218 * @see #ACC_PUBLIC 219 */ 220 public static final short ACC_STRICT = 0x0800; 221 222 /** One of the access flags for fields, methods, or classes. 223 * @see #ACC_PUBLIC 224 */ 225 public static final short ACC_SYNTHETIC = 0x1000; 226 227 /** One of the access flags for fields, methods, or classes. 228 * @see #ACC_PUBLIC 229 */ 230 public static final short ACC_ANNOTATION = 0x2000; 231 232 /** One of the access flags for fields, methods, or classes. 233 * @see #ACC_PUBLIC 234 */ 235 public static final short ACC_ENUM = 0x4000; 236 237 /** One of the access flags for fields, methods, or classes. 238 * @see #ACC_PUBLIC 239 */ 240 public static final short ACC_MANDATED = (short) 0x8000; 241 242 // Applies to classes compiled by new compilers only 243 /** One of the access flags for fields, methods, or classes. 244 * @see #ACC_PUBLIC 245 */ 246 public static final short ACC_SUPER = 0x0020; 247 248 /** One of the access flags for fields, methods, or classes. 249 * @see #ACC_PUBLIC 250 */ 251 public static final short MAX_ACC_FLAG = ACC_ENUM; 252 253 /** 254 * The names of the access flags. 255 */ 256 private static final String[] ACCESS_NAMES = { 257 "public", "private", "protected", "static", "final", "synchronized", 258 "volatile", "transient", "native", "interface", "abstract", "strictfp", 259 "synthetic", "annotation", "enum" 260 }; 261 262 /** @since 6.0 */ 263 public static final int ACCESS_NAMES_LENGTH = ACCESS_NAMES.length; 264 265 /** 266 * @param index 267 * @return the ACCESS_NAMES entry at the given index 268 * @since 6.0 269 */ 270 public static String getAccessName(final int index) { 271 return ACCESS_NAMES[index]; 272 } 273 274 /* 275 * The description of the constant pool is at: 276 * http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4 277 * References below are to the individual sections 278 */ 279 280 /** Marks a constant pool entry as type UTF-8. 281 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.7"> 282 * The Constant Pool in The Java Virtual Machine Specification</a> */ 283 public static final byte CONSTANT_Utf8 = 1; 284 285 /** Marks a constant pool entry as type Integer. 286 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.4"> 287 * The Constant Pool in The Java Virtual Machine Specification</a> */ 288 public static final byte CONSTANT_Integer = 3; 289 290 /** Marks a constant pool entry as type Float. 291 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.4"> 292 * The Constant Pool in The Java Virtual Machine Specification</a> */ 293 public static final byte CONSTANT_Float = 4; 294 295 /** Marks a constant pool entry as type Long. 296 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.5"> 297 * The Constant Pool in The Java Virtual Machine Specification</a> */ 298 public static final byte CONSTANT_Long = 5; 299 300 /** Marks a constant pool entry as type Double. 301 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.5"> 302 * The Constant Pool in The Java Virtual Machine Specification</a> */ 303 public static final byte CONSTANT_Double = 6; 304 305 /** Marks a constant pool entry as a Class 306 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.1"> 307 * The Constant Pool in The Java Virtual Machine Specification</a> */ 308 public static final byte CONSTANT_Class = 7; 309 310 /** Marks a constant pool entry as a Field Reference. 311 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.2"> 312 * The Constant Pool in The Java Virtual Machine Specification</a> */ 313 public static final byte CONSTANT_Fieldref = 9; 314 315 /** Marks a constant pool entry as type String 316 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.3"> 317 * The Constant Pool in The Java Virtual Machine Specification</a> */ 318 public static final byte CONSTANT_String = 8; 319 320 /** Marks a constant pool entry as a Method Reference. 321 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.2"> 322 * The Constant Pool in The Java Virtual Machine Specification</a> */ 323 public static final byte CONSTANT_Methodref = 10; 324 325 /** Marks a constant pool entry as an Interface Method Reference. 326 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.2"> 327 * The Constant Pool in The Java Virtual Machine Specification</a> */ 328 public static final byte CONSTANT_InterfaceMethodref = 11; 329 330 /** Marks a constant pool entry as a name and type. 331 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.6"> 332 * The Constant Pool in The Java Virtual Machine Specification</a> */ 333 public static final byte CONSTANT_NameAndType = 12; 334 335 /** Marks a constant pool entry as a Method Handle. 336 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.8"> 337 * The Constant Pool in The Java Virtual Machine Specification</a> */ 338 public static final byte CONSTANT_MethodHandle = 15; 339 340 /** Marks a constant pool entry as a Method Type. 341 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.9"> 342 * The Constant Pool in The Java Virtual Machine Specification</a> */ 343 public static final byte CONSTANT_MethodType = 16; 344 345 /** Marks a constant pool entry as an Invoke Dynamic 346 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.10"> 347 * The Constant Pool in The Java Virtual Machine Specification</a> */ 348 public static final byte CONSTANT_InvokeDynamic = 18; 349 350 /** 351 * The names of the types of entries in a constant pool. 352 * Use getConstantName instead 353 */ 354 private static final String[] CONSTANT_NAMES = { 355 "", "CONSTANT_Utf8", "", "CONSTANT_Integer", 356 "CONSTANT_Float", "CONSTANT_Long", "CONSTANT_Double", 357 "CONSTANT_Class", "CONSTANT_String", "CONSTANT_Fieldref", 358 "CONSTANT_Methodref", "CONSTANT_InterfaceMethodref", 359 "CONSTANT_NameAndType", "", "", "CONSTANT_MethodHandle", 360 "CONSTANT_MethodType", "", "CONSTANT_InvokeDynamic" }; 361 362 /** 363 * 364 * @param index 365 * @return the CONSTANT_NAMES entry at the given index 366 * @since 6.0 367 */ 368 public static String getConstantName(final int index) { 369 return CONSTANT_NAMES[index]; 370 } 371 372 /** The name of the static initializer, also called "class 373 * initialization method" or "interface initialization 374 * method". This is "<clinit>". 375 */ 376 public static final String STATIC_INITIALIZER_NAME = "<clinit>"; 377 378 /** The name of every constructor method in a class, also called 379 * "instance initialization method". This is "<init>". 380 */ 381 public static final String CONSTRUCTOR_NAME = "<init>"; 382 383 /** 384 * The names of the interfaces implemented by arrays 385 */ 386 private static final String[] INTERFACES_IMPLEMENTED_BY_ARRAYS = {"java.lang.Cloneable", "java.io.Serializable"}; 387 388 /** 389 * @since 6.0 390 */ 391 public static Iterable<String> getInterfacesImplementedByArrays() { 392 return Collections.unmodifiableList(Arrays.asList(INTERFACES_IMPLEMENTED_BY_ARRAYS)); 393 } 394 395 /** 396 * Maximum Constant Pool entries. 397 * One of the limitations of the Java Virtual Machine. 398 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.11-100-A"> 399 * The Java Virtual Machine Specification, Java SE 8 Edition, page 330, chapter 4.11.</a> 400 */ 401 public static final int MAX_CP_ENTRIES = 65535; 402 403 /** 404 * Maximum code size (plus one; the code size must be LESS than this) 405 * One of the limitations of the Java Virtual Machine. 406 * Note vmspec2 page 152 ("Limitations") says: 407 * "The amount of code per non-native, non-abstract method is limited to 65536 bytes by 408 * the sizes of the indices in the exception_table of the Code attribute (§4.7.3), 409 * in the LineNumberTable attribute (§4.7.8), and in the LocalVariableTable attribute (§4.7.9)." 410 * However this should be taken as an upper limit rather than the defined maximum. 411 * On page 134 (4.8.1 Static Constants) of the same spec, it says: 412 * "The value of the code_length item must be less than 65536." 413 * The entry in the Limitations section has been removed from later versions of the spec; 414 * it is not present in the Java SE 8 edition. 415 * 416 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.3-300-E"> 417 * The Java Virtual Machine Specification, Java SE 8 Edition, page 104, chapter 4.7.</a> 418 */ 419 public static final int MAX_CODE_SIZE = 65536; //bytes 420 421 /** 422 * The maximum number of dimensions in an array ({@value}). 423 * One of the limitations of the Java Virtual Machine. 424 * 425 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.3.2-150"> 426 * Field Descriptors in The Java Virtual Machine Specification</a> 427 */ 428 public static final int MAX_ARRAY_DIMENSIONS = 255; 429 430 /** Java VM opcode. 431 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.nop"> 432 * Opcode definitions in The Java Virtual Machine Specification</a> */ 433 public static final short NOP = 0; 434 435 /** Java VM opcode. 436 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aconst_null"> 437 * Opcode definitions in The Java Virtual Machine Specification</a> */ 438 public static final short ACONST_NULL = 1; 439 440 /** Java VM opcode. 441 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> 442 * Opcode definitions in The Java Virtual Machine Specification</a> */ 443 public static final short ICONST_M1 = 2; 444 445 /** Java VM opcode. 446 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> 447 * Opcode definitions in The Java Virtual Machine Specification</a> */ 448 public static final short ICONST_0 = 3; 449 450 /** Java VM opcode. 451 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> 452 * Opcode definitions in The Java Virtual Machine Specification</a> */ 453 public static final short ICONST_1 = 4; 454 455 /** Java VM opcode. 456 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> 457 * Opcode definitions in The Java Virtual Machine Specification</a> */ 458 public static final short ICONST_2 = 5; 459 460 /** Java VM opcode. 461 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> 462 * Opcode definitions in The Java Virtual Machine Specification</a> */ 463 public static final short ICONST_3 = 6; 464 465 /** Java VM opcode. 466 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> 467 * Opcode definitions in The Java Virtual Machine Specification</a> */ 468 public static final short ICONST_4 = 7; 469 470 /** Java VM opcode. 471 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> 472 * Opcode definitions in The Java Virtual Machine Specification</a> */ 473 public static final short ICONST_5 = 8; 474 475 /** Java VM opcode. 476 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lconst_l"> 477 * Opcode definitions in The Java Virtual Machine Specification</a> */ 478 public static final short LCONST_0 = 9; 479 480 /** Java VM opcode. 481 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lconst_l"> 482 * Opcode definitions in The Java Virtual Machine Specification</a> */ 483 public static final short LCONST_1 = 10; 484 485 /** Java VM opcode. 486 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fconst_f"> 487 * Opcode definitions in The Java Virtual Machine Specification</a> */ 488 public static final short FCONST_0 = 11; 489 490 /** Java VM opcode. 491 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fconst_f"> 492 * Opcode definitions in The Java Virtual Machine Specification</a> */ 493 public static final short FCONST_1 = 12; 494 495 /** Java VM opcode. 496 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fconst_f"> 497 * Opcode definitions in The Java Virtual Machine Specification</a> */ 498 public static final short FCONST_2 = 13; 499 500 /** Java VM opcode. 501 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dconst_d"> 502 * Opcode definitions in The Java Virtual Machine Specification</a> */ 503 public static final short DCONST_0 = 14; 504 505 /** Java VM opcode. 506 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dconst_d"> 507 * Opcode definitions in The Java Virtual Machine Specification</a> */ 508 public static final short DCONST_1 = 15; 509 510 /** Java VM opcode. 511 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.bipush"> 512 * Opcode definitions in The Java Virtual Machine Specification</a> */ 513 public static final short BIPUSH = 16; 514 515 /** Java VM opcode. 516 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.sipush"> 517 * Opcode definitions in The Java Virtual Machine Specification</a> */ 518 public static final short SIPUSH = 17; 519 520 /** Java VM opcode. 521 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldc"> 522 * Opcode definitions in The Java Virtual Machine Specification</a> */ 523 public static final short LDC = 18; 524 525 /** Java VM opcode. 526 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldc_w"> 527 * Opcode definitions in The Java Virtual Machine Specification</a> */ 528 public static final short LDC_W = 19; 529 530 /** Java VM opcode. 531 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldc2_w"> 532 * Opcode definitions in The Java Virtual Machine Specification</a> */ 533 public static final short LDC2_W = 20; 534 535 /** Java VM opcode. 536 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload"> 537 * Opcode definitions in The Java Virtual Machine Specification</a> */ 538 public static final short ILOAD = 21; 539 540 /** Java VM opcode. 541 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload"> 542 * Opcode definitions in The Java Virtual Machine Specification</a> */ 543 public static final short LLOAD = 22; 544 545 /** Java VM opcode. 546 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload"> 547 * Opcode definitions in The Java Virtual Machine Specification</a> */ 548 public static final short FLOAD = 23; 549 550 /** Java VM opcode. 551 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload"> 552 * Opcode definitions in The Java Virtual Machine Specification</a> */ 553 public static final short DLOAD = 24; 554 555 /** Java VM opcode. 556 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload"> 557 * Opcode definitions in The Java Virtual Machine Specification</a> */ 558 public static final short ALOAD = 25; 559 560 /** Java VM opcode. 561 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n"> 562 * Opcode definitions in The Java Virtual Machine Specification</a> */ 563 public static final short ILOAD_0 = 26; 564 565 /** Java VM opcode. 566 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n"> 567 * Opcode definitions in The Java Virtual Machine Specification</a> */ 568 public static final short ILOAD_1 = 27; 569 570 /** Java VM opcode. 571 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n"> 572 * Opcode definitions in The Java Virtual Machine Specification</a> */ 573 public static final short ILOAD_2 = 28; 574 575 /** Java VM opcode. 576 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n"> 577 * Opcode definitions in The Java Virtual Machine Specification</a> */ 578 public static final short ILOAD_3 = 29; 579 580 /** Java VM opcode. 581 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n"> 582 * Opcode definitions in The Java Virtual Machine Specification</a> */ 583 public static final short LLOAD_0 = 30; 584 585 /** Java VM opcode. 586 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n"> 587 * Opcode definitions in The Java Virtual Machine Specification</a> */ 588 public static final short LLOAD_1 = 31; 589 590 /** Java VM opcode. 591 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n"> 592 * Opcode definitions in The Java Virtual Machine Specification</a> */ 593 public static final short LLOAD_2 = 32; 594 595 /** Java VM opcode. 596 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n"> 597 * Opcode definitions in The Java Virtual Machine Specification</a> */ 598 public static final short LLOAD_3 = 33; 599 600 /** Java VM opcode. 601 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n"> 602 * Opcode definitions in The Java Virtual Machine Specification</a> */ 603 public static final short FLOAD_0 = 34; 604 605 /** Java VM opcode. 606 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n"> 607 * Opcode definitions in The Java Virtual Machine Specification</a> */ 608 public static final short FLOAD_1 = 35; 609 610 /** Java VM opcode. 611 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n"> 612 * Opcode definitions in The Java Virtual Machine Specification</a> */ 613 public static final short FLOAD_2 = 36; 614 615 /** Java VM opcode. 616 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n"> 617 * Opcode definitions in The Java Virtual Machine Specification</a> */ 618 public static final short FLOAD_3 = 37; 619 620 /** Java VM opcode. 621 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n"> 622 * Opcode definitions in The Java Virtual Machine Specification</a> */ 623 public static final short DLOAD_0 = 38; 624 625 /** Java VM opcode. 626 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n"> 627 * Opcode definitions in The Java Virtual Machine Specification</a> */ 628 public static final short DLOAD_1 = 39; 629 630 /** Java VM opcode. 631 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n"> 632 * Opcode definitions in The Java Virtual Machine Specification</a> */ 633 public static final short DLOAD_2 = 40; 634 635 /** Java VM opcode. 636 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n"> 637 * Opcode definitions in The Java Virtual Machine Specification</a> */ 638 public static final short DLOAD_3 = 41; 639 640 /** Java VM opcode. 641 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n"> 642 * Opcode definitions in The Java Virtual Machine Specification</a> */ 643 public static final short ALOAD_0 = 42; 644 645 /** Java VM opcode. 646 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n"> 647 * Opcode definitions in The Java Virtual Machine Specification</a> */ 648 public static final short ALOAD_1 = 43; 649 650 /** Java VM opcode. 651 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n"> 652 * Opcode definitions in The Java Virtual Machine Specification</a> */ 653 public static final short ALOAD_2 = 44; 654 655 /** Java VM opcode. 656 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n"> 657 * Opcode definitions in The Java Virtual Machine Specification</a> */ 658 public static final short ALOAD_3 = 45; 659 660 /** Java VM opcode. 661 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iaload"> 662 * Opcode definitions in The Java Virtual Machine Specification</a> */ 663 public static final short IALOAD = 46; 664 665 /** Java VM opcode. 666 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.laload"> 667 * Opcode definitions in The Java Virtual Machine Specification</a> */ 668 public static final short LALOAD = 47; 669 670 /** Java VM opcode. 671 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.faload"> 672 * Opcode definitions in The Java Virtual Machine Specification</a> */ 673 public static final short FALOAD = 48; 674 675 /** Java VM opcode. 676 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.daload"> 677 * Opcode definitions in The Java Virtual Machine Specification</a> */ 678 public static final short DALOAD = 49; 679 680 /** Java VM opcode. 681 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aaload"> 682 * Opcode definitions in The Java Virtual Machine Specification</a> */ 683 public static final short AALOAD = 50; 684 685 /** Java VM opcode. 686 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.baload"> 687 * Opcode definitions in The Java Virtual Machine Specification</a> */ 688 public static final short BALOAD = 51; 689 690 /** Java VM opcode. 691 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.caload"> 692 * Opcode definitions in The Java Virtual Machine Specification</a> */ 693 public static final short CALOAD = 52; 694 695 /** Java VM opcode. 696 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.saload"> 697 * Opcode definitions in The Java Virtual Machine Specification</a> */ 698 public static final short SALOAD = 53; 699 700 /** Java VM opcode. 701 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore"> 702 * Opcode definitions in The Java Virtual Machine Specification</a> */ 703 public static final short ISTORE = 54; 704 705 /** Java VM opcode. 706 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore"> 707 * Opcode definitions in The Java Virtual Machine Specification</a> */ 708 public static final short LSTORE = 55; 709 710 /** Java VM opcode. 711 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore"> 712 * Opcode definitions in The Java Virtual Machine Specification</a> */ 713 public static final short FSTORE = 56; 714 715 /** Java VM opcode. 716 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore"> 717 * Opcode definitions in The Java Virtual Machine Specification</a> */ 718 public static final short DSTORE = 57; 719 720 /** Java VM opcode. 721 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore"> 722 * Opcode definitions in The Java Virtual Machine Specification</a> */ 723 public static final short ASTORE = 58; 724 725 /** Java VM opcode. 726 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n"> 727 * Opcode definitions in The Java Virtual Machine Specification</a> */ 728 public static final short ISTORE_0 = 59; 729 730 /** Java VM opcode. 731 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n"> 732 * Opcode definitions in The Java Virtual Machine Specification</a> */ 733 public static final short ISTORE_1 = 60; 734 735 /** Java VM opcode. 736 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n"> 737 * Opcode definitions in The Java Virtual Machine Specification</a> */ 738 public static final short ISTORE_2 = 61; 739 740 /** Java VM opcode. 741 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n"> 742 * Opcode definitions in The Java Virtual Machine Specification</a> */ 743 public static final short ISTORE_3 = 62; 744 745 /** Java VM opcode. 746 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n"> 747 * Opcode definitions in The Java Virtual Machine Specification</a> */ 748 public static final short LSTORE_0 = 63; 749 750 /** Java VM opcode. 751 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n"> 752 * Opcode definitions in The Java Virtual Machine Specification</a> */ 753 public static final short LSTORE_1 = 64; 754 755 /** Java VM opcode. 756 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n"> 757 * Opcode definitions in The Java Virtual Machine Specification</a> */ 758 public static final short LSTORE_2 = 65; 759 760 /** Java VM opcode. 761 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n"> 762 * Opcode definitions in The Java Virtual Machine Specification</a> */ 763 public static final short LSTORE_3 = 66; 764 765 /** Java VM opcode. 766 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n"> 767 * Opcode definitions in The Java Virtual Machine Specification</a> */ 768 public static final short FSTORE_0 = 67; 769 770 /** Java VM opcode. 771 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n"> 772 * Opcode definitions in The Java Virtual Machine Specification</a> */ 773 public static final short FSTORE_1 = 68; 774 775 /** Java VM opcode. 776 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n"> 777 * Opcode definitions in The Java Virtual Machine Specification</a> */ 778 public static final short FSTORE_2 = 69; 779 780 /** Java VM opcode. 781 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n"> 782 * Opcode definitions in The Java Virtual Machine Specification</a> */ 783 public static final short FSTORE_3 = 70; 784 785 /** Java VM opcode. 786 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n"> 787 * Opcode definitions in The Java Virtual Machine Specification</a> */ 788 public static final short DSTORE_0 = 71; 789 790 /** Java VM opcode. 791 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n"> 792 * Opcode definitions in The Java Virtual Machine Specification</a> */ 793 public static final short DSTORE_1 = 72; 794 795 /** Java VM opcode. 796 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n"> 797 * Opcode definitions in The Java Virtual Machine Specification</a> */ 798 public static final short DSTORE_2 = 73; 799 800 /** Java VM opcode. 801 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n"> 802 * Opcode definitions in The Java Virtual Machine Specification</a> */ 803 public static final short DSTORE_3 = 74; 804 805 /** Java VM opcode. 806 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n"> 807 * Opcode definitions in The Java Virtual Machine Specification</a> */ 808 public static final short ASTORE_0 = 75; 809 810 /** Java VM opcode. 811 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n"> 812 * Opcode definitions in The Java Virtual Machine Specification</a> */ 813 public static final short ASTORE_1 = 76; 814 815 /** Java VM opcode. 816 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n"> 817 * Opcode definitions in The Java Virtual Machine Specification</a> */ 818 public static final short ASTORE_2 = 77; 819 820 /** Java VM opcode. 821 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n"> 822 * Opcode definitions in The Java Virtual Machine Specification</a> */ 823 public static final short ASTORE_3 = 78; 824 825 /** Java VM opcode. 826 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iastore"> 827 * Opcode definitions in The Java Virtual Machine Specification</a> */ 828 public static final short IASTORE = 79; 829 830 /** Java VM opcode. 831 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lastore"> 832 * Opcode definitions in The Java Virtual Machine Specification</a> */ 833 public static final short LASTORE = 80; 834 835 /** Java VM opcode. 836 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fastore"> 837 * Opcode definitions in The Java Virtual Machine Specification</a> */ 838 public static final short FASTORE = 81; 839 840 /** Java VM opcode. 841 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dastore"> 842 * Opcode definitions in The Java Virtual Machine Specification</a> */ 843 public static final short DASTORE = 82; 844 845 /** Java VM opcode. 846 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aastore"> 847 * Opcode definitions in The Java Virtual Machine Specification</a> */ 848 public static final short AASTORE = 83; 849 850 /** Java VM opcode. 851 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.bastore"> 852 * Opcode definitions in The Java Virtual Machine Specification</a> */ 853 public static final short BASTORE = 84; 854 855 /** Java VM opcode. 856 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.castore"> 857 * Opcode definitions in The Java Virtual Machine Specification</a> */ 858 public static final short CASTORE = 85; 859 860 /** Java VM opcode. 861 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.sastore"> 862 * Opcode definitions in The Java Virtual Machine Specification</a> */ 863 public static final short SASTORE = 86; 864 865 /** Java VM opcode. 866 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.pop"> 867 * Opcode definitions in The Java Virtual Machine Specification</a> */ 868 public static final short POP = 87; 869 870 /** Java VM opcode. 871 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.pop2"> 872 * Opcode definitions in The Java Virtual Machine Specification</a> */ 873 public static final short POP2 = 88; 874 875 /** Java VM opcode. 876 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup"> 877 * Opcode definitions in The Java Virtual Machine Specification</a> */ 878 public static final short DUP = 89; 879 880 /** Java VM opcode. 881 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup_x1"> 882 * Opcode definitions in The Java Virtual Machine Specification</a> */ 883 public static final short DUP_X1 = 90; 884 885 /** Java VM opcode. 886 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup_x2"> 887 * Opcode definitions in The Java Virtual Machine Specification</a> */ 888 public static final short DUP_X2 = 91; 889 890 /** Java VM opcode. 891 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup2"> 892 * Opcode definitions in The Java Virtual Machine Specification</a> */ 893 public static final short DUP2 = 92; 894 895 /** Java VM opcode. 896 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup2_x1"> 897 * Opcode definitions in The Java Virtual Machine Specification</a> */ 898 public static final short DUP2_X1 = 93; 899 900 /** Java VM opcode. 901 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup2_x2"> 902 * Opcode definitions in The Java Virtual Machine Specification</a> */ 903 public static final short DUP2_X2 = 94; 904 905 /** Java VM opcode. 906 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.swap"> 907 * Opcode definitions in The Java Virtual Machine Specification</a> */ 908 public static final short SWAP = 95; 909 910 /** Java VM opcode. 911 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iadd"> 912 * Opcode definitions in The Java Virtual Machine Specification</a> */ 913 public static final short IADD = 96; 914 915 /** Java VM opcode. 916 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ladd"> 917 * Opcode definitions in The Java Virtual Machine Specification</a> */ 918 public static final short LADD = 97; 919 920 /** Java VM opcode. 921 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fadd"> 922 * Opcode definitions in The Java Virtual Machine Specification</a> */ 923 public static final short FADD = 98; 924 925 /** Java VM opcode. 926 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dadd"> 927 * Opcode definitions in The Java Virtual Machine Specification</a> */ 928 public static final short DADD = 99; 929 930 /** Java VM opcode. 931 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.isub"> 932 * Opcode definitions in The Java Virtual Machine Specification</a> */ 933 public static final short ISUB = 100; 934 935 /** Java VM opcode. 936 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lsub"> 937 * Opcode definitions in The Java Virtual Machine Specification</a> */ 938 public static final short LSUB = 101; 939 940 /** Java VM opcode. 941 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fsub"> 942 * Opcode definitions in The Java Virtual Machine Specification</a> */ 943 public static final short FSUB = 102; 944 945 /** Java VM opcode. 946 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dsub"> 947 * Opcode definitions in The Java Virtual Machine Specification</a> */ 948 public static final short DSUB = 103; 949 950 /** Java VM opcode. 951 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.imul"> 952 * Opcode definitions in The Java Virtual Machine Specification</a> */ 953 public static final short IMUL = 104; 954 955 /** Java VM opcode. 956 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lmul"> 957 * Opcode definitions in The Java Virtual Machine Specification</a> */ 958 public static final short LMUL = 105; 959 960 /** Java VM opcode. 961 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fmul"> 962 * Opcode definitions in The Java Virtual Machine Specification</a> */ 963 public static final short FMUL = 106; 964 965 /** Java VM opcode. 966 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dmul"> 967 * Opcode definitions in The Java Virtual Machine Specification</a> */ 968 public static final short DMUL = 107; 969 970 /** Java VM opcode. 971 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.idiv"> 972 * Opcode definitions in The Java Virtual Machine Specification</a> */ 973 public static final short IDIV = 108; 974 975 /** Java VM opcode. 976 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldiv"> 977 * Opcode definitions in The Java Virtual Machine Specification</a> */ 978 public static final short LDIV = 109; 979 980 /** Java VM opcode. 981 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fdiv"> 982 * Opcode definitions in The Java Virtual Machine Specification</a> */ 983 public static final short FDIV = 110; 984 985 /** Java VM opcode. 986 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ddiv"> 987 * Opcode definitions in The Java Virtual Machine Specification</a> */ 988 public static final short DDIV = 111; 989 990 /** Java VM opcode. 991 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.irem"> 992 * Opcode definitions in The Java Virtual Machine Specification</a> */ 993 public static final short IREM = 112; 994 995 /** Java VM opcode. 996 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lrem"> 997 * Opcode definitions in The Java Virtual Machine Specification</a> */ 998 public static final short LREM = 113; 999 1000 /** Java VM opcode. 1001 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.frem"> 1002 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1003 public static final short FREM = 114; 1004 1005 /** Java VM opcode. 1006 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.drem"> 1007 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1008 public static final short DREM = 115; 1009 1010 /** Java VM opcode. 1011 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ineg"> 1012 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1013 public static final short INEG = 116; 1014 1015 /** Java VM opcode. 1016 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lneg"> 1017 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1018 public static final short LNEG = 117; 1019 1020 /** Java VM opcode. 1021 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fneg"> 1022 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1023 public static final short FNEG = 118; 1024 1025 /** Java VM opcode. 1026 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dneg"> 1027 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1028 public static final short DNEG = 119; 1029 1030 /** Java VM opcode. 1031 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ishl"> 1032 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1033 public static final short ISHL = 120; 1034 1035 /** Java VM opcode. 1036 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lshl"> 1037 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1038 public static final short LSHL = 121; 1039 1040 /** Java VM opcode. 1041 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ishr"> 1042 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1043 public static final short ISHR = 122; 1044 1045 /** Java VM opcode. 1046 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lshr"> 1047 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1048 public static final short LSHR = 123; 1049 1050 /** Java VM opcode. 1051 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iushr"> 1052 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1053 public static final short IUSHR = 124; 1054 1055 /** Java VM opcode. 1056 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lushr"> 1057 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1058 public static final short LUSHR = 125; 1059 1060 /** Java VM opcode. 1061 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iand"> 1062 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1063 public static final short IAND = 126; 1064 1065 /** Java VM opcode. 1066 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.land"> 1067 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1068 public static final short LAND = 127; 1069 1070 /** Java VM opcode. 1071 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ior"> 1072 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1073 public static final short IOR = 128; 1074 1075 /** Java VM opcode. 1076 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lor"> 1077 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1078 public static final short LOR = 129; 1079 1080 /** Java VM opcode. 1081 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ixor"> 1082 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1083 public static final short IXOR = 130; 1084 1085 /** Java VM opcode. 1086 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lxor"> 1087 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1088 public static final short LXOR = 131; 1089 1090 /** Java VM opcode. 1091 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iinc"> 1092 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1093 public static final short IINC = 132; 1094 1095 /** Java VM opcode. 1096 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2l"> 1097 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1098 public static final short I2L = 133; 1099 1100 /** Java VM opcode. 1101 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2f"> 1102 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1103 public static final short I2F = 134; 1104 1105 /** Java VM opcode. 1106 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2d"> 1107 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1108 public static final short I2D = 135; 1109 1110 /** Java VM opcode. 1111 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.l2i"> 1112 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1113 public static final short L2I = 136; 1114 1115 /** Java VM opcode. 1116 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.l2f"> 1117 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1118 public static final short L2F = 137; 1119 1120 /** Java VM opcode. 1121 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.l2d"> 1122 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1123 public static final short L2D = 138; 1124 1125 /** Java VM opcode. 1126 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.f2i"> 1127 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1128 public static final short F2I = 139; 1129 1130 /** Java VM opcode. 1131 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.f2l"> 1132 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1133 public static final short F2L = 140; 1134 1135 /** Java VM opcode. 1136 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.f2d"> 1137 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1138 public static final short F2D = 141; 1139 1140 /** Java VM opcode. 1141 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.d2i"> 1142 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1143 public static final short D2I = 142; 1144 1145 /** Java VM opcode. 1146 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.d2l"> 1147 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1148 public static final short D2L = 143; 1149 1150 /** Java VM opcode. 1151 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.d2f"> 1152 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1153 public static final short D2F = 144; 1154 1155 /** Java VM opcode. 1156 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2b"> 1157 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1158 public static final short I2B = 145; 1159 1160 /** Java VM opcode. 1161 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5"> 1162 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1163 public static final short INT2BYTE = 145; // Old notation 1164 1165 /** Java VM opcode. 1166 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2c"> 1167 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1168 public static final short I2C = 146; 1169 1170 /** Java VM opcode. 1171 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5"> 1172 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1173 public static final short INT2CHAR = 146; // Old notation 1174 1175 /** Java VM opcode. 1176 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2s"> 1177 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1178 public static final short I2S = 147; 1179 1180 /** Java VM opcode. 1181 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5"> 1182 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1183 public static final short INT2SHORT = 147; // Old notation 1184 1185 /** Java VM opcode. 1186 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lcmp"> 1187 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1188 public static final short LCMP = 148; 1189 1190 /** Java VM opcode. 1191 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fcmpl"> 1192 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1193 public static final short FCMPL = 149; 1194 1195 /** Java VM opcode. 1196 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fcmpg"> 1197 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1198 public static final short FCMPG = 150; 1199 1200 /** Java VM opcode. 1201 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dcmpl"> 1202 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1203 public static final short DCMPL = 151; 1204 1205 /** Java VM opcode. 1206 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dcmpg"> 1207 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1208 public static final short DCMPG = 152; 1209 1210 /** Java VM opcode. 1211 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifeq"> 1212 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1213 public static final short IFEQ = 153; 1214 1215 /** Java VM opcode. 1216 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifne"> 1217 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1218 public static final short IFNE = 154; 1219 1220 /** Java VM opcode. 1221 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iflt"> 1222 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1223 public static final short IFLT = 155; 1224 1225 /** Java VM opcode. 1226 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifge"> 1227 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1228 public static final short IFGE = 156; 1229 1230 /** Java VM opcode. 1231 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifgt"> 1232 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1233 public static final short IFGT = 157; 1234 1235 /** Java VM opcode. 1236 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifle"> 1237 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1238 public static final short IFLE = 158; 1239 1240 /** Java VM opcode. 1241 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> 1242 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1243 public static final short IF_ICMPEQ = 159; 1244 1245 /** Java VM opcode. 1246 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> 1247 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1248 public static final short IF_ICMPNE = 160; 1249 1250 /** Java VM opcode. 1251 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> 1252 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1253 public static final short IF_ICMPLT = 161; 1254 1255 /** Java VM opcode. 1256 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> 1257 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1258 public static final short IF_ICMPGE = 162; 1259 1260 /** Java VM opcode. 1261 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> 1262 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1263 public static final short IF_ICMPGT = 163; 1264 1265 /** Java VM opcode. 1266 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> 1267 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1268 public static final short IF_ICMPLE = 164; 1269 1270 /** Java VM opcode. 1271 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_acmp_cond"> 1272 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1273 public static final short IF_ACMPEQ = 165; 1274 1275 /** Java VM opcode. 1276 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_acmp_cond"> 1277 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1278 public static final short IF_ACMPNE = 166; 1279 1280 /** Java VM opcode. 1281 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.goto"> 1282 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1283 public static final short GOTO = 167; 1284 1285 /** Java VM opcode. 1286 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.jsr"> 1287 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1288 public static final short JSR = 168; 1289 1290 /** Java VM opcode. 1291 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ret"> 1292 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1293 public static final short RET = 169; 1294 1295 /** Java VM opcode. 1296 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.tableswitch"> 1297 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1298 public static final short TABLESWITCH = 170; 1299 1300 /** Java VM opcode. 1301 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lookupswitch"> 1302 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1303 public static final short LOOKUPSWITCH = 171; 1304 1305 /** Java VM opcode. 1306 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ireturn"> 1307 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1308 public static final short IRETURN = 172; 1309 1310 /** Java VM opcode. 1311 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lreturn"> 1312 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1313 public static final short LRETURN = 173; 1314 1315 /** Java VM opcode. 1316 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.freturn"> 1317 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1318 public static final short FRETURN = 174; 1319 1320 /** Java VM opcode. 1321 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dreturn"> 1322 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1323 public static final short DRETURN = 175; 1324 1325 /** Java VM opcode. 1326 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.areturn"> 1327 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1328 public static final short ARETURN = 176; 1329 1330 /** Java VM opcode. 1331 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.return"> 1332 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1333 public static final short RETURN = 177; 1334 1335 /** Java VM opcode. 1336 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.getstatic"> 1337 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1338 public static final short GETSTATIC = 178; 1339 1340 /** Java VM opcode. 1341 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.putstatic"> 1342 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1343 public static final short PUTSTATIC = 179; 1344 1345 /** Java VM opcode. 1346 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.getfield"> 1347 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1348 public static final short GETFIELD = 180; 1349 1350 /** Java VM opcode. 1351 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.putfield"> 1352 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1353 public static final short PUTFIELD = 181; 1354 1355 /** Java VM opcode. 1356 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokevirtual"> 1357 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1358 public static final short INVOKEVIRTUAL = 182; 1359 1360 /** Java VM opcode. 1361 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokespecial"> 1362 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1363 public static final short INVOKESPECIAL = 183; 1364 1365 /** Java VM opcode. 1366 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5"> 1367 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1368 public static final short INVOKENONVIRTUAL = 183; // Old name in JDK 1.0 1369 1370 /** Java VM opcode. 1371 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokestatic"> 1372 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1373 public static final short INVOKESTATIC = 184; 1374 1375 /** Java VM opcode. 1376 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokeinterface"> 1377 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1378 public static final short INVOKEINTERFACE = 185; 1379 1380 /** Java VM opcode. 1381 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokedynamic"> 1382 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1383 public static final short INVOKEDYNAMIC = 186; 1384 1385 /** Java VM opcode. 1386 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.new"> 1387 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1388 public static final short NEW = 187; 1389 1390 /** Java VM opcode. 1391 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.newarray"> 1392 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1393 public static final short NEWARRAY = 188; 1394 1395 /** Java VM opcode. 1396 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.anewarray"> 1397 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1398 public static final short ANEWARRAY = 189; 1399 1400 /** Java VM opcode. 1401 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.arraylength"> 1402 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1403 public static final short ARRAYLENGTH = 190; 1404 1405 /** Java VM opcode. 1406 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.athrow"> 1407 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1408 public static final short ATHROW = 191; 1409 1410 /** Java VM opcode. 1411 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.checkcast"> 1412 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1413 public static final short CHECKCAST = 192; 1414 1415 /** Java VM opcode. 1416 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.instanceof"> 1417 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1418 public static final short INSTANCEOF = 193; 1419 1420 /** Java VM opcode. 1421 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.monitorenter"> 1422 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1423 public static final short MONITORENTER = 194; 1424 1425 /** Java VM opcode. 1426 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.monitorexit"> 1427 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1428 public static final short MONITOREXIT = 195; 1429 1430 /** Java VM opcode. 1431 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.wide"> 1432 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1433 public static final short WIDE = 196; 1434 1435 /** Java VM opcode. 1436 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.multianewarray"> 1437 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1438 public static final short MULTIANEWARRAY = 197; 1439 1440 /** Java VM opcode. 1441 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifnull"> 1442 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1443 public static final short IFNULL = 198; 1444 1445 /** Java VM opcode. 1446 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifnonnull"> 1447 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1448 public static final short IFNONNULL = 199; 1449 1450 /** Java VM opcode. 1451 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.goto_w"> 1452 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1453 public static final short GOTO_W = 200; 1454 1455 /** Java VM opcode. 1456 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.jsr_w"> 1457 * Opcode definitions in The Java Virtual Machine Specification</a> */ 1458 public static final short JSR_W = 201; 1459 1460 /** JVM internal opcode. 1461 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.2"> 1462 * Reserved opcodes in the Java Virtual Machine Specification</a> */ 1463 public static final short BREAKPOINT = 202; 1464 1465 /** JVM internal opcode. 1466 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1467 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1468 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1469 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1470 public static final short LDC_QUICK = 203; 1471 1472 /** JVM internal opcode. 1473 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1474 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1475 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1476 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1477 public static final short LDC_W_QUICK = 204; 1478 1479 /** JVM internal opcode. 1480 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1481 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1482 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1483 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1484 public static final short LDC2_W_QUICK = 205; 1485 1486 /** JVM internal opcode. 1487 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1488 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1489 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1490 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1491 public static final short GETFIELD_QUICK = 206; 1492 1493 /** JVM internal opcode. 1494 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1495 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1496 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1497 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1498 public static final short PUTFIELD_QUICK = 207; 1499 1500 /** JVM internal opcode. 1501 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1502 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1503 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1504 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1505 public static final short GETFIELD2_QUICK = 208; 1506 1507 /** JVM internal opcode. 1508 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1509 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1510 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1511 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1512 public static final short PUTFIELD2_QUICK = 209; 1513 1514 /** JVM internal opcode. 1515 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1516 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1517 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1518 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1519 public static final short GETSTATIC_QUICK = 210; 1520 1521 /** JVM internal opcode. 1522 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1523 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1524 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1525 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1526 public static final short PUTSTATIC_QUICK = 211; 1527 1528 /** JVM internal opcode. 1529 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1530 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1531 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1532 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1533 public static final short GETSTATIC2_QUICK = 212; 1534 1535 /** JVM internal opcode. 1536 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1537 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1538 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1539 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1540 public static final short PUTSTATIC2_QUICK = 213; 1541 1542 /** JVM internal opcode. 1543 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1544 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1545 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1546 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1547 public static final short INVOKEVIRTUAL_QUICK = 214; 1548 1549 /** JVM internal opcode. 1550 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1551 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1552 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1553 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1554 public static final short INVOKENONVIRTUAL_QUICK = 215; 1555 1556 /** JVM internal opcode. 1557 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1558 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1559 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1560 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1561 public static final short INVOKESUPER_QUICK = 216; 1562 1563 /** JVM internal opcode. 1564 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1565 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1566 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1567 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1568 public static final short INVOKESTATIC_QUICK = 217; 1569 1570 /** JVM internal opcode. 1571 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1572 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1573 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1574 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1575 public static final short INVOKEINTERFACE_QUICK = 218; 1576 1577 /** JVM internal opcode. 1578 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1579 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1580 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1581 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1582 public static final short INVOKEVIRTUALOBJECT_QUICK = 219; 1583 1584 /** JVM internal opcode. 1585 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1586 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1587 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1588 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1589 public static final short NEW_QUICK = 221; 1590 1591 /** JVM internal opcode. 1592 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1593 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1594 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1595 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1596 public static final short ANEWARRAY_QUICK = 222; 1597 1598 /** JVM internal opcode. 1599 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1600 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1601 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1602 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1603 public static final short MULTIANEWARRAY_QUICK = 223; 1604 1605 /** JVM internal opcode. 1606 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1607 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1608 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1609 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1610 public static final short CHECKCAST_QUICK = 224; 1611 1612 /** JVM internal opcode. 1613 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1614 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1615 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1616 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1617 public static final short INSTANCEOF_QUICK = 225; 1618 1619 /** JVM internal opcode. 1620 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1621 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1622 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1623 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1624 public static final short INVOKEVIRTUAL_QUICK_W = 226; 1625 1626 /** JVM internal opcode. 1627 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1628 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1629 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1630 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1631 public static final short GETFIELD_QUICK_W = 227; 1632 1633 /** JVM internal opcode. 1634 * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html"> 1635 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a> 1636 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> 1637 * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */ 1638 public static final short PUTFIELD_QUICK_W = 228; 1639 1640 /** JVM internal opcode. 1641 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.2"> 1642 * Reserved opcodes in the Java Virtual Machine Specification</a> */ 1643 public static final short IMPDEP1 = 254; 1644 1645 /** JVM internal opcode. 1646 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.2"> 1647 * Reserved opcodes in the Java Virtual Machine Specification</a> */ 1648 public static final short IMPDEP2 = 255; 1649 1650 /** 1651 * BCEL virtual instruction for pushing an arbitrary data type onto the stack. Will be converted to the appropriate JVM 1652 * opcode when the class is dumped. 1653 */ 1654 public static final short PUSH = 4711; 1655 1656 /** 1657 * BCEL virtual instruction for either LOOKUPSWITCH or TABLESWITCH. Will be converted to the appropriate JVM 1658 * opcode when the class is dumped. 1659 */ 1660 public static final short SWITCH = 4712; 1661 1662 /** Illegal opcode. */ 1663 public static final short UNDEFINED = -1; 1664 1665 /** Illegal opcode. */ 1666 public static final short UNPREDICTABLE = -2; 1667 1668 /** Illegal opcode. */ 1669 public static final short RESERVED = -3; 1670 1671 /** Mnemonic for an illegal opcode. */ 1672 public static final String ILLEGAL_OPCODE = "<illegal opcode>"; 1673 1674 /** Mnemonic for an illegal type. */ 1675 public static final String ILLEGAL_TYPE = "<illegal type>"; 1676 1677 /** Boolean data type. 1678 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> 1679 * Static Constraints in the Java Virtual Machine Specification</a> */ 1680 public static final byte T_BOOLEAN = 4; 1681 1682 /** Char data type. 1683 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> 1684 * Static Constraints in the Java Virtual Machine Specification</a> */ 1685 public static final byte T_CHAR = 5; 1686 1687 /** Float data type. 1688 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> 1689 * Static Constraints in the Java Virtual Machine Specification</a> */ 1690 public static final byte T_FLOAT = 6; 1691 1692 /** Double data type. 1693 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> 1694 * Static Constraints in the Java Virtual Machine Specification</a> */ 1695 public static final byte T_DOUBLE = 7; 1696 1697 /** Byte data type. 1698 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> 1699 * Static Constraints in the Java Virtual Machine Specification</a> */ 1700 public static final byte T_BYTE = 8; 1701 1702 /** Short data type. 1703 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> 1704 * Static Constraints in the Java Virtual Machine Specification</a> */ 1705 public static final byte T_SHORT = 9; 1706 1707 /** Int data type. 1708 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> 1709 * Static Constraints in the Java Virtual Machine Specification</a> */ 1710 public static final byte T_INT = 10; 1711 1712 /** Long data type. 1713 * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> 1714 * Static Constraints in the Java Virtual Machine Specification</a> */ 1715 public static final byte T_LONG = 11; 1716 1717 /** Void data type (non-standard). */ 1718 public static final byte T_VOID = 12; // Non-standard 1719 1720 /** Array data type. */ 1721 public static final byte T_ARRAY = 13; 1722 1723 /** Object data type. */ 1724 public static final byte T_OBJECT = 14; 1725 1726 /** Reference data type (deprecated). */ 1727 public static final byte T_REFERENCE = 14; // Deprecated 1728 1729 /** Unknown data type. */ 1730 public static final byte T_UNKNOWN = 15; 1731 1732 /** Address data type. */ 1733 public static final byte T_ADDRESS = 16; 1734 1735 /** The primitive type names corresponding to the T_XX constants, 1736 * e.g., TYPE_NAMES[T_INT] = "int" 1737 */ 1738 private static final String[] TYPE_NAMES = { 1739 ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, 1740 "boolean", "char", "float", "double", "byte", "short", "int", "long", 1741 "void", "array", "object", "unknown", "address" 1742 }; 1743 1744 /** 1745 * The primitive type names corresponding to the T_XX constants, 1746 * e.g., TYPE_NAMES[T_INT] = "int" 1747 * @param index 1748 * @return the type name 1749 * @since 6.0 1750 */ 1751 public static String getTypeName(final int index) { 1752 return TYPE_NAMES[index]; 1753 } 1754 1755 /** The primitive class names corresponding to the T_XX constants, 1756 * e.g., CLASS_TYPE_NAMES[T_INT] = "java.lang.Integer" 1757 */ 1758 private static final String[] CLASS_TYPE_NAMES = { 1759 ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, 1760 "java.lang.Boolean", "java.lang.Character", "java.lang.Float", 1761 "java.lang.Double", "java.lang.Byte", "java.lang.Short", 1762 "java.lang.Integer", "java.lang.Long", "java.lang.Void", 1763 ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE 1764 }; 1765 1766 /** 1767 * The primitive class names corresponding to the T_XX constants, 1768 * e.g., CLASS_TYPE_NAMES[T_INT] = "java.lang.Integer" 1769 * @param index 1770 * @return the class name 1771 * @since 6.0 1772 */ 1773 public static String getClassTypeName(final int index) { 1774 return CLASS_TYPE_NAMES[index]; 1775 } 1776 1777 /** The signature characters corresponding to primitive types, 1778 * e.g., SHORT_TYPE_NAMES[T_INT] = "I" 1779 */ 1780 private static final String[] SHORT_TYPE_NAMES = { 1781 ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, 1782 "Z", "C", "F", "D", "B", "S", "I", "J", 1783 "V", ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE 1784 }; 1785 1786 /** 1787 * 1788 * @param index 1789 * @return the short type name 1790 * @since 6.0 1791 */ 1792 public static String getShortTypeName(final int index) { 1793 return SHORT_TYPE_NAMES[index]; 1794 } 1795 1796 1797 /** 1798 * Number of byte code operands for each opcode, i.e., number of bytes after the tag byte 1799 * itself. Indexed by opcode, so NO_OF_OPERANDS[BIPUSH] = the number of operands for a bipush 1800 * instruction. 1801 */ 1802 private static final short[] NO_OF_OPERANDS = { 1803 0/*nop*/, 0/*aconst_null*/, 0/*iconst_m1*/, 0/*iconst_0*/, 1804 0/*iconst_1*/, 0/*iconst_2*/, 0/*iconst_3*/, 0/*iconst_4*/, 1805 0/*iconst_5*/, 0/*lconst_0*/, 0/*lconst_1*/, 0/*fconst_0*/, 1806 0/*fconst_1*/, 0/*fconst_2*/, 0/*dconst_0*/, 0/*dconst_1*/, 1807 1/*bipush*/, 2/*sipush*/, 1/*ldc*/, 2/*ldc_w*/, 2/*ldc2_w*/, 1808 1/*iload*/, 1/*lload*/, 1/*fload*/, 1/*dload*/, 1/*aload*/, 1809 0/*iload_0*/, 0/*iload_1*/, 0/*iload_2*/, 0/*iload_3*/, 1810 0/*lload_0*/, 0/*lload_1*/, 0/*lload_2*/, 0/*lload_3*/, 1811 0/*fload_0*/, 0/*fload_1*/, 0/*fload_2*/, 0/*fload_3*/, 1812 0/*dload_0*/, 0/*dload_1*/, 0/*dload_2*/, 0/*dload_3*/, 1813 0/*aload_0*/, 0/*aload_1*/, 0/*aload_2*/, 0/*aload_3*/, 1814 0/*iaload*/, 0/*laload*/, 0/*faload*/, 0/*daload*/, 1815 0/*aaload*/, 0/*baload*/, 0/*caload*/, 0/*saload*/, 1816 1/*istore*/, 1/*lstore*/, 1/*fstore*/, 1/*dstore*/, 1817 1/*astore*/, 0/*istore_0*/, 0/*istore_1*/, 0/*istore_2*/, 1818 0/*istore_3*/, 0/*lstore_0*/, 0/*lstore_1*/, 0/*lstore_2*/, 1819 0/*lstore_3*/, 0/*fstore_0*/, 0/*fstore_1*/, 0/*fstore_2*/, 1820 0/*fstore_3*/, 0/*dstore_0*/, 0/*dstore_1*/, 0/*dstore_2*/, 1821 0/*dstore_3*/, 0/*astore_0*/, 0/*astore_1*/, 0/*astore_2*/, 1822 0/*astore_3*/, 0/*iastore*/, 0/*lastore*/, 0/*fastore*/, 1823 0/*dastore*/, 0/*aastore*/, 0/*bastore*/, 0/*castore*/, 1824 0/*sastore*/, 0/*pop*/, 0/*pop2*/, 0/*dup*/, 0/*dup_x1*/, 1825 0/*dup_x2*/, 0/*dup2*/, 0/*dup2_x1*/, 0/*dup2_x2*/, 0/*swap*/, 1826 0/*iadd*/, 0/*ladd*/, 0/*fadd*/, 0/*dadd*/, 0/*isub*/, 1827 0/*lsub*/, 0/*fsub*/, 0/*dsub*/, 0/*imul*/, 0/*lmul*/, 1828 0/*fmul*/, 0/*dmul*/, 0/*idiv*/, 0/*ldiv*/, 0/*fdiv*/, 1829 0/*ddiv*/, 0/*irem*/, 0/*lrem*/, 0/*frem*/, 0/*drem*/, 1830 0/*ineg*/, 0/*lneg*/, 0/*fneg*/, 0/*dneg*/, 0/*ishl*/, 1831 0/*lshl*/, 0/*ishr*/, 0/*lshr*/, 0/*iushr*/, 0/*lushr*/, 1832 0/*iand*/, 0/*land*/, 0/*ior*/, 0/*lor*/, 0/*ixor*/, 0/*lxor*/, 1833 2/*iinc*/, 0/*i2l*/, 0/*i2f*/, 0/*i2d*/, 0/*l2i*/, 0/*l2f*/, 1834 0/*l2d*/, 0/*f2i*/, 0/*f2l*/, 0/*f2d*/, 0/*d2i*/, 0/*d2l*/, 1835 0/*d2f*/, 0/*i2b*/, 0/*i2c*/, 0/*i2s*/, 0/*lcmp*/, 0/*fcmpl*/, 1836 0/*fcmpg*/, 0/*dcmpl*/, 0/*dcmpg*/, 2/*ifeq*/, 2/*ifne*/, 1837 2/*iflt*/, 2/*ifge*/, 2/*ifgt*/, 2/*ifle*/, 2/*if_icmpeq*/, 1838 2/*if_icmpne*/, 2/*if_icmplt*/, 2/*if_icmpge*/, 2/*if_icmpgt*/, 1839 2/*if_icmple*/, 2/*if_acmpeq*/, 2/*if_acmpne*/, 2/*goto*/, 1840 2/*jsr*/, 1/*ret*/, UNPREDICTABLE/*tableswitch*/, UNPREDICTABLE/*lookupswitch*/, 1841 0/*ireturn*/, 0/*lreturn*/, 0/*freturn*/, 1842 0/*dreturn*/, 0/*areturn*/, 0/*return*/, 1843 2/*getstatic*/, 2/*putstatic*/, 2/*getfield*/, 1844 2/*putfield*/, 2/*invokevirtual*/, 2/*invokespecial*/, 2/*invokestatic*/, 1845 4/*invokeinterface*/, 4/*invokedynamic*/, 2/*new*/, 1846 1/*newarray*/, 2/*anewarray*/, 1847 0/*arraylength*/, 0/*athrow*/, 2/*checkcast*/, 1848 2/*instanceof*/, 0/*monitorenter*/, 1849 0/*monitorexit*/, UNPREDICTABLE/*wide*/, 3/*multianewarray*/, 1850 2/*ifnull*/, 2/*ifnonnull*/, 4/*goto_w*/, 1851 4/*jsr_w*/, 0/*breakpoint*/, UNDEFINED, 1852 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 1853 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 1854 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 1855 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 1856 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 1857 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 1858 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 1859 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 1860 UNDEFINED, UNDEFINED, RESERVED/*impdep1*/, RESERVED/*impdep2*/ 1861 }; 1862 1863 /** 1864 * 1865 * @param index 1866 * @return Number of byte code operands 1867 * @since 6.0 1868 */ 1869 public static short getNoOfOperands(final int index) { 1870 return NO_OF_OPERANDS[index]; 1871 } 1872 1873 /** 1874 * How the byte code operands are to be interpreted for each opcode. 1875 * Indexed by opcode. TYPE_OF_OPERANDS[ILOAD] = an array of shorts 1876 * describing the data types for the instruction. 1877 */ 1878 private static final short[][] TYPE_OF_OPERANDS = { 1879 {}/*nop*/, {}/*aconst_null*/, {}/*iconst_m1*/, {}/*iconst_0*/, 1880 {}/*iconst_1*/, {}/*iconst_2*/, {}/*iconst_3*/, {}/*iconst_4*/, 1881 {}/*iconst_5*/, {}/*lconst_0*/, {}/*lconst_1*/, {}/*fconst_0*/, 1882 {}/*fconst_1*/, {}/*fconst_2*/, {}/*dconst_0*/, {}/*dconst_1*/, 1883 {T_BYTE}/*bipush*/, {T_SHORT}/*sipush*/, {T_BYTE}/*ldc*/, 1884 {T_SHORT}/*ldc_w*/, {T_SHORT}/*ldc2_w*/, 1885 {T_BYTE}/*iload*/, {T_BYTE}/*lload*/, {T_BYTE}/*fload*/, 1886 {T_BYTE}/*dload*/, {T_BYTE}/*aload*/, {}/*iload_0*/, 1887 {}/*iload_1*/, {}/*iload_2*/, {}/*iload_3*/, {}/*lload_0*/, 1888 {}/*lload_1*/, {}/*lload_2*/, {}/*lload_3*/, {}/*fload_0*/, 1889 {}/*fload_1*/, {}/*fload_2*/, {}/*fload_3*/, {}/*dload_0*/, 1890 {}/*dload_1*/, {}/*dload_2*/, {}/*dload_3*/, {}/*aload_0*/, 1891 {}/*aload_1*/, {}/*aload_2*/, {}/*aload_3*/, {}/*iaload*/, 1892 {}/*laload*/, {}/*faload*/, {}/*daload*/, {}/*aaload*/, 1893 {}/*baload*/, {}/*caload*/, {}/*saload*/, {T_BYTE}/*istore*/, 1894 {T_BYTE}/*lstore*/, {T_BYTE}/*fstore*/, {T_BYTE}/*dstore*/, 1895 {T_BYTE}/*astore*/, {}/*istore_0*/, {}/*istore_1*/, 1896 {}/*istore_2*/, {}/*istore_3*/, {}/*lstore_0*/, {}/*lstore_1*/, 1897 {}/*lstore_2*/, {}/*lstore_3*/, {}/*fstore_0*/, {}/*fstore_1*/, 1898 {}/*fstore_2*/, {}/*fstore_3*/, {}/*dstore_0*/, {}/*dstore_1*/, 1899 {}/*dstore_2*/, {}/*dstore_3*/, {}/*astore_0*/, {}/*astore_1*/, 1900 {}/*astore_2*/, {}/*astore_3*/, {}/*iastore*/, {}/*lastore*/, 1901 {}/*fastore*/, {}/*dastore*/, {}/*aastore*/, {}/*bastore*/, 1902 {}/*castore*/, {}/*sastore*/, {}/*pop*/, {}/*pop2*/, {}/*dup*/, 1903 {}/*dup_x1*/, {}/*dup_x2*/, {}/*dup2*/, {}/*dup2_x1*/, 1904 {}/*dup2_x2*/, {}/*swap*/, {}/*iadd*/, {}/*ladd*/, {}/*fadd*/, 1905 {}/*dadd*/, {}/*isub*/, {}/*lsub*/, {}/*fsub*/, {}/*dsub*/, 1906 {}/*imul*/, {}/*lmul*/, {}/*fmul*/, {}/*dmul*/, {}/*idiv*/, 1907 {}/*ldiv*/, {}/*fdiv*/, {}/*ddiv*/, {}/*irem*/, {}/*lrem*/, 1908 {}/*frem*/, {}/*drem*/, {}/*ineg*/, {}/*lneg*/, {}/*fneg*/, 1909 {}/*dneg*/, {}/*ishl*/, {}/*lshl*/, {}/*ishr*/, {}/*lshr*/, 1910 {}/*iushr*/, {}/*lushr*/, {}/*iand*/, {}/*land*/, {}/*ior*/, 1911 {}/*lor*/, {}/*ixor*/, {}/*lxor*/, {T_BYTE, T_BYTE}/*iinc*/, 1912 {}/*i2l*/, {}/*i2f*/, {}/*i2d*/, {}/*l2i*/, {}/*l2f*/, {}/*l2d*/, 1913 {}/*f2i*/, {}/*f2l*/, {}/*f2d*/, {}/*d2i*/, {}/*d2l*/, {}/*d2f*/, 1914 {}/*i2b*/, {}/*i2c*/, {}/*i2s*/, {}/*lcmp*/, {}/*fcmpl*/, 1915 {}/*fcmpg*/, {}/*dcmpl*/, {}/*dcmpg*/, {T_SHORT}/*ifeq*/, 1916 {T_SHORT}/*ifne*/, {T_SHORT}/*iflt*/, {T_SHORT}/*ifge*/, 1917 {T_SHORT}/*ifgt*/, {T_SHORT}/*ifle*/, {T_SHORT}/*if_icmpeq*/, 1918 {T_SHORT}/*if_icmpne*/, {T_SHORT}/*if_icmplt*/, 1919 {T_SHORT}/*if_icmpge*/, {T_SHORT}/*if_icmpgt*/, 1920 {T_SHORT}/*if_icmple*/, {T_SHORT}/*if_acmpeq*/, 1921 {T_SHORT}/*if_acmpne*/, {T_SHORT}/*goto*/, {T_SHORT}/*jsr*/, 1922 {T_BYTE}/*ret*/, {}/*tableswitch*/, {}/*lookupswitch*/, 1923 {}/*ireturn*/, {}/*lreturn*/, {}/*freturn*/, {}/*dreturn*/, 1924 {}/*areturn*/, {}/*return*/, {T_SHORT}/*getstatic*/, 1925 {T_SHORT}/*putstatic*/, {T_SHORT}/*getfield*/, 1926 {T_SHORT}/*putfield*/, {T_SHORT}/*invokevirtual*/, 1927 {T_SHORT}/*invokespecial*/, {T_SHORT}/*invokestatic*/, 1928 {T_SHORT, T_BYTE, T_BYTE}/*invokeinterface*/, {T_SHORT, T_BYTE, T_BYTE}/*invokedynamic*/, 1929 {T_SHORT}/*new*/, {T_BYTE}/*newarray*/, 1930 {T_SHORT}/*anewarray*/, {}/*arraylength*/, {}/*athrow*/, 1931 {T_SHORT}/*checkcast*/, {T_SHORT}/*instanceof*/, 1932 {}/*monitorenter*/, {}/*monitorexit*/, {T_BYTE}/*wide*/, 1933 {T_SHORT, T_BYTE}/*multianewarray*/, {T_SHORT}/*ifnull*/, 1934 {T_SHORT}/*ifnonnull*/, {T_INT}/*goto_w*/, {T_INT}/*jsr_w*/, 1935 {}/*breakpoint*/, {}, {}, {}, {}, {}, {}, {}, 1936 {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 1937 {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 1938 {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 1939 {}/*impdep1*/, {}/*impdep2*/ 1940 }; 1941 1942 /** 1943 * @since 6.0 1944 */ 1945 public static short getOperandType(final int opcode, final int index) { 1946 return TYPE_OF_OPERANDS[opcode][index]; 1947 } 1948 1949 /** 1950 * @since 6.0 1951 */ 1952 public static long getOperandTypeCount(final int opcode) { 1953 return TYPE_OF_OPERANDS[opcode].length; 1954 } 1955 1956 /** 1957 * Names of opcodes. Indexed by opcode. OPCODE_NAMES[ALOAD] = "aload". 1958 */ 1959 private static final String[] OPCODE_NAMES = { 1960 "nop", "aconst_null", "iconst_m1", "iconst_0", "iconst_1", 1961 "iconst_2", "iconst_3", "iconst_4", "iconst_5", "lconst_0", 1962 "lconst_1", "fconst_0", "fconst_1", "fconst_2", "dconst_0", 1963 "dconst_1", "bipush", "sipush", "ldc", "ldc_w", "ldc2_w", "iload", 1964 "lload", "fload", "dload", "aload", "iload_0", "iload_1", "iload_2", 1965 "iload_3", "lload_0", "lload_1", "lload_2", "lload_3", "fload_0", 1966 "fload_1", "fload_2", "fload_3", "dload_0", "dload_1", "dload_2", 1967 "dload_3", "aload_0", "aload_1", "aload_2", "aload_3", "iaload", 1968 "laload", "faload", "daload", "aaload", "baload", "caload", "saload", 1969 "istore", "lstore", "fstore", "dstore", "astore", "istore_0", 1970 "istore_1", "istore_2", "istore_3", "lstore_0", "lstore_1", 1971 "lstore_2", "lstore_3", "fstore_0", "fstore_1", "fstore_2", 1972 "fstore_3", "dstore_0", "dstore_1", "dstore_2", "dstore_3", 1973 "astore_0", "astore_1", "astore_2", "astore_3", "iastore", "lastore", 1974 "fastore", "dastore", "aastore", "bastore", "castore", "sastore", 1975 "pop", "pop2", "dup", "dup_x1", "dup_x2", "dup2", "dup2_x1", 1976 "dup2_x2", "swap", "iadd", "ladd", "fadd", "dadd", "isub", "lsub", 1977 "fsub", "dsub", "imul", "lmul", "fmul", "dmul", "idiv", "ldiv", 1978 "fdiv", "ddiv", "irem", "lrem", "frem", "drem", "ineg", "lneg", 1979 "fneg", "dneg", "ishl", "lshl", "ishr", "lshr", "iushr", "lushr", 1980 "iand", "land", "ior", "lor", "ixor", "lxor", "iinc", "i2l", "i2f", 1981 "i2d", "l2i", "l2f", "l2d", "f2i", "f2l", "f2d", "d2i", "d2l", "d2f", 1982 "i2b", "i2c", "i2s", "lcmp", "fcmpl", "fcmpg", 1983 "dcmpl", "dcmpg", "ifeq", "ifne", "iflt", "ifge", "ifgt", "ifle", 1984 "if_icmpeq", "if_icmpne", "if_icmplt", "if_icmpge", "if_icmpgt", 1985 "if_icmple", "if_acmpeq", "if_acmpne", "goto", "jsr", "ret", 1986 "tableswitch", "lookupswitch", "ireturn", "lreturn", "freturn", 1987 "dreturn", "areturn", "return", "getstatic", "putstatic", "getfield", 1988 "putfield", "invokevirtual", "invokespecial", "invokestatic", 1989 "invokeinterface", "invokedynamic", "new", "newarray", "anewarray", 1990 "arraylength", "athrow", "checkcast", "instanceof", "monitorenter", 1991 "monitorexit", "wide", "multianewarray", "ifnull", "ifnonnull", 1992 "goto_w", "jsr_w", "breakpoint", ILLEGAL_OPCODE, ILLEGAL_OPCODE, 1993 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, 1994 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, 1995 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, 1996 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, 1997 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, 1998 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, 1999 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, 2000 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, 2001 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, 2002 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, 2003 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, 2004 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, 2005 ILLEGAL_OPCODE, "impdep1", "impdep2" 2006 }; 2007 2008 /** 2009 * @since 6.0 2010 */ 2011 public static final int OPCODE_NAMES_LENGTH = OPCODE_NAMES.length; 2012 2013 2014 /** 2015 * @since 6.0 2016 */ 2017 public static String getOpcodeName(final int index) { 2018 return OPCODE_NAMES[index]; 2019 } 2020 2021 /** 2022 * Number of words consumed on operand stack by instructions. 2023 * Indexed by opcode. CONSUME_STACK[FALOAD] = number of words 2024 * consumed from the stack by a faload instruction. 2025 */ 2026 private static final int[] CONSUME_STACK = { 2027 0/*nop*/, 0/*aconst_null*/, 0/*iconst_m1*/, 0/*iconst_0*/, 0/*iconst_1*/, 2028 0/*iconst_2*/, 0/*iconst_3*/, 0/*iconst_4*/, 0/*iconst_5*/, 0/*lconst_0*/, 2029 0/*lconst_1*/, 0/*fconst_0*/, 0/*fconst_1*/, 0/*fconst_2*/, 0/*dconst_0*/, 2030 0/*dconst_1*/, 0/*bipush*/, 0/*sipush*/, 0/*ldc*/, 0/*ldc_w*/, 0/*ldc2_w*/, 0/*iload*/, 2031 0/*lload*/, 0/*fload*/, 0/*dload*/, 0/*aload*/, 0/*iload_0*/, 0/*iload_1*/, 0/*iload_2*/, 2032 0/*iload_3*/, 0/*lload_0*/, 0/*lload_1*/, 0/*lload_2*/, 0/*lload_3*/, 0/*fload_0*/, 2033 0/*fload_1*/, 0/*fload_2*/, 0/*fload_3*/, 0/*dload_0*/, 0/*dload_1*/, 0/*dload_2*/, 2034 0/*dload_3*/, 0/*aload_0*/, 0/*aload_1*/, 0/*aload_2*/, 0/*aload_3*/, 2/*iaload*/, 2035 2/*laload*/, 2/*faload*/, 2/*daload*/, 2/*aaload*/, 2/*baload*/, 2/*caload*/, 2/*saload*/, 2036 1/*istore*/, 2/*lstore*/, 1/*fstore*/, 2/*dstore*/, 1/*astore*/, 1/*istore_0*/, 2037 1/*istore_1*/, 1/*istore_2*/, 1/*istore_3*/, 2/*lstore_0*/, 2/*lstore_1*/, 2038 2/*lstore_2*/, 2/*lstore_3*/, 1/*fstore_0*/, 1/*fstore_1*/, 1/*fstore_2*/, 2039 1/*fstore_3*/, 2/*dstore_0*/, 2/*dstore_1*/, 2/*dstore_2*/, 2/*dstore_3*/, 2040 1/*astore_0*/, 1/*astore_1*/, 1/*astore_2*/, 1/*astore_3*/, 3/*iastore*/, 4/*lastore*/, 2041 3/*fastore*/, 4/*dastore*/, 3/*aastore*/, 3/*bastore*/, 3/*castore*/, 3/*sastore*/, 2042 1/*pop*/, 2/*pop2*/, 1/*dup*/, 2/*dup_x1*/, 3/*dup_x2*/, 2/*dup2*/, 3/*dup2_x1*/, 2043 4/*dup2_x2*/, 2/*swap*/, 2/*iadd*/, 4/*ladd*/, 2/*fadd*/, 4/*dadd*/, 2/*isub*/, 4/*lsub*/, 2044 2/*fsub*/, 4/*dsub*/, 2/*imul*/, 4/*lmul*/, 2/*fmul*/, 4/*dmul*/, 2/*idiv*/, 4/*ldiv*/, 2045 2/*fdiv*/, 4/*ddiv*/, 2/*irem*/, 4/*lrem*/, 2/*frem*/, 4/*drem*/, 1/*ineg*/, 2/*lneg*/, 2046 1/*fneg*/, 2/*dneg*/, 2/*ishl*/, 3/*lshl*/, 2/*ishr*/, 3/*lshr*/, 2/*iushr*/, 3/*lushr*/, 2047 2/*iand*/, 4/*land*/, 2/*ior*/, 4/*lor*/, 2/*ixor*/, 4/*lxor*/, 0/*iinc*/, 2048 1/*i2l*/, 1/*i2f*/, 1/*i2d*/, 2/*l2i*/, 2/*l2f*/, 2/*l2d*/, 1/*f2i*/, 1/*f2l*/, 2049 1/*f2d*/, 2/*d2i*/, 2/*d2l*/, 2/*d2f*/, 1/*i2b*/, 1/*i2c*/, 1/*i2s*/, 2050 4/*lcmp*/, 2/*fcmpl*/, 2/*fcmpg*/, 4/*dcmpl*/, 4/*dcmpg*/, 1/*ifeq*/, 1/*ifne*/, 2051 1/*iflt*/, 1/*ifge*/, 1/*ifgt*/, 1/*ifle*/, 2/*if_icmpeq*/, 2/*if_icmpne*/, 2/*if_icmplt*/, 2052 2 /*if_icmpge*/, 2/*if_icmpgt*/, 2/*if_icmple*/, 2/*if_acmpeq*/, 2/*if_acmpne*/, 2053 0/*goto*/, 0/*jsr*/, 0/*ret*/, 1/*tableswitch*/, 1/*lookupswitch*/, 1/*ireturn*/, 2054 2/*lreturn*/, 1/*freturn*/, 2/*dreturn*/, 1/*areturn*/, 0/*return*/, 0/*getstatic*/, 2055 UNPREDICTABLE/*putstatic*/, 1/*getfield*/, UNPREDICTABLE/*putfield*/, 2056 UNPREDICTABLE/*invokevirtual*/, UNPREDICTABLE/*invokespecial*/, 2057 UNPREDICTABLE/*invokestatic*/, 2058 UNPREDICTABLE/*invokeinterface*/, UNPREDICTABLE/*invokedynamic*/, 0/*new*/, 1/*newarray*/, 1/*anewarray*/, 2059 1/*arraylength*/, 1/*athrow*/, 1/*checkcast*/, 1/*instanceof*/, 1/*monitorenter*/, 2060 1/*monitorexit*/, 0/*wide*/, UNPREDICTABLE/*multianewarray*/, 1/*ifnull*/, 1/*ifnonnull*/, 2061 0/*goto_w*/, 0/*jsr_w*/, 0/*breakpoint*/, UNDEFINED, UNDEFINED, 2062 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2063 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2064 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2065 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2066 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2067 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2068 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2069 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2070 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2071 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2072 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2073 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2074 UNDEFINED, UNPREDICTABLE/*impdep1*/, UNPREDICTABLE/*impdep2*/ 2075 }; 2076 2077 /** 2078 * 2079 * @param index 2080 * @return Number of words consumed on operand stack 2081 * @since 6.0 2082 */ 2083 public static int getConsumeStack(final int index) { 2084 return CONSUME_STACK[index]; 2085 } 2086 2087 2088 /** 2089 * Number of words produced onto operand stack by instructions. 2090 * Indexed by opcode. CONSUME_STACK[DALOAD] = number of words 2091 * consumed from the stack by a daload instruction. 2092 */ 2093 private static final int[] PRODUCE_STACK = { 2094 0/*nop*/, 1/*aconst_null*/, 1/*iconst_m1*/, 1/*iconst_0*/, 1/*iconst_1*/, 2095 1/*iconst_2*/, 1/*iconst_3*/, 1/*iconst_4*/, 1/*iconst_5*/, 2/*lconst_0*/, 2096 2/*lconst_1*/, 1/*fconst_0*/, 1/*fconst_1*/, 1/*fconst_2*/, 2/*dconst_0*/, 2097 2/*dconst_1*/, 1/*bipush*/, 1/*sipush*/, 1/*ldc*/, 1/*ldc_w*/, 2/*ldc2_w*/, 1/*iload*/, 2098 2/*lload*/, 1/*fload*/, 2/*dload*/, 1/*aload*/, 1/*iload_0*/, 1/*iload_1*/, 1/*iload_2*/, 2099 1/*iload_3*/, 2/*lload_0*/, 2/*lload_1*/, 2/*lload_2*/, 2/*lload_3*/, 1/*fload_0*/, 2100 1/*fload_1*/, 1/*fload_2*/, 1/*fload_3*/, 2/*dload_0*/, 2/*dload_1*/, 2/*dload_2*/, 2101 2/*dload_3*/, 1/*aload_0*/, 1/*aload_1*/, 1/*aload_2*/, 1/*aload_3*/, 1/*iaload*/, 2102 2/*laload*/, 1/*faload*/, 2/*daload*/, 1/*aaload*/, 1/*baload*/, 1/*caload*/, 1/*saload*/, 2103 0/*istore*/, 0/*lstore*/, 0/*fstore*/, 0/*dstore*/, 0/*astore*/, 0/*istore_0*/, 2104 0/*istore_1*/, 0/*istore_2*/, 0/*istore_3*/, 0/*lstore_0*/, 0/*lstore_1*/, 2105 0/*lstore_2*/, 0/*lstore_3*/, 0/*fstore_0*/, 0/*fstore_1*/, 0/*fstore_2*/, 2106 0/*fstore_3*/, 0/*dstore_0*/, 0/*dstore_1*/, 0/*dstore_2*/, 0/*dstore_3*/, 2107 0/*astore_0*/, 0/*astore_1*/, 0/*astore_2*/, 0/*astore_3*/, 0/*iastore*/, 0/*lastore*/, 2108 0/*fastore*/, 0/*dastore*/, 0/*aastore*/, 0/*bastore*/, 0/*castore*/, 0/*sastore*/, 2109 0/*pop*/, 0/*pop2*/, 2/*dup*/, 3/*dup_x1*/, 4/*dup_x2*/, 4/*dup2*/, 5/*dup2_x1*/, 2110 6/*dup2_x2*/, 2/*swap*/, 1/*iadd*/, 2/*ladd*/, 1/*fadd*/, 2/*dadd*/, 1/*isub*/, 2/*lsub*/, 2111 1/*fsub*/, 2/*dsub*/, 1/*imul*/, 2/*lmul*/, 1/*fmul*/, 2/*dmul*/, 1/*idiv*/, 2/*ldiv*/, 2112 1/*fdiv*/, 2/*ddiv*/, 1/*irem*/, 2/*lrem*/, 1/*frem*/, 2/*drem*/, 1/*ineg*/, 2/*lneg*/, 2113 1/*fneg*/, 2/*dneg*/, 1/*ishl*/, 2/*lshl*/, 1/*ishr*/, 2/*lshr*/, 1/*iushr*/, 2/*lushr*/, 2114 1/*iand*/, 2/*land*/, 1/*ior*/, 2/*lor*/, 1/*ixor*/, 2/*lxor*/, 2115 0/*iinc*/, 2/*i2l*/, 1/*i2f*/, 2/*i2d*/, 1/*l2i*/, 1/*l2f*/, 2/*l2d*/, 1/*f2i*/, 2116 2/*f2l*/, 2/*f2d*/, 1/*d2i*/, 2/*d2l*/, 1/*d2f*/, 2117 1/*i2b*/, 1/*i2c*/, 1/*i2s*/, 1/*lcmp*/, 1/*fcmpl*/, 1/*fcmpg*/, 2118 1/*dcmpl*/, 1/*dcmpg*/, 0/*ifeq*/, 0/*ifne*/, 0/*iflt*/, 0/*ifge*/, 0/*ifgt*/, 0/*ifle*/, 2119 0/*if_icmpeq*/, 0/*if_icmpne*/, 0/*if_icmplt*/, 0/*if_icmpge*/, 0/*if_icmpgt*/, 2120 0/*if_icmple*/, 0/*if_acmpeq*/, 0/*if_acmpne*/, 0/*goto*/, 1/*jsr*/, 0/*ret*/, 2121 0/*tableswitch*/, 0/*lookupswitch*/, 0/*ireturn*/, 0/*lreturn*/, 0/*freturn*/, 2122 0/*dreturn*/, 0/*areturn*/, 0/*return*/, UNPREDICTABLE/*getstatic*/, 0/*putstatic*/, 2123 UNPREDICTABLE/*getfield*/, 0/*putfield*/, UNPREDICTABLE/*invokevirtual*/, 2124 UNPREDICTABLE/*invokespecial*/, UNPREDICTABLE/*invokestatic*/, 2125 UNPREDICTABLE/*invokeinterface*/, UNPREDICTABLE/*invokedynamic*/, 1/*new*/, 1/*newarray*/, 1/*anewarray*/, 2126 1/*arraylength*/, 1/*athrow*/, 1/*checkcast*/, 1/*instanceof*/, 0/*monitorenter*/, 2127 0/*monitorexit*/, 0/*wide*/, 1/*multianewarray*/, 0/*ifnull*/, 0/*ifnonnull*/, 2128 0/*goto_w*/, 1/*jsr_w*/, 0/*breakpoint*/, UNDEFINED, UNDEFINED, 2129 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2130 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2131 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2132 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2133 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2134 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2135 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2136 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2137 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2138 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2139 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2140 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, 2141 UNDEFINED, UNPREDICTABLE/*impdep1*/, UNPREDICTABLE/*impdep2*/ 2142 }; 2143 2144 /** 2145 * 2146 * @param index 2147 * @return Number of words produced onto operand stack 2148 * @since 6.0 2149 */ 2150 public static int getProduceStack(final int index) { 2151 return PRODUCE_STACK[index]; 2152 } 2153 2154 /** Attributes and their corresponding names. 2155 */ 2156 public static final byte ATTR_UNKNOWN = -1; 2157 public static final byte ATTR_SOURCE_FILE = 0; 2158 public static final byte ATTR_CONSTANT_VALUE = 1; 2159 public static final byte ATTR_CODE = 2; 2160 public static final byte ATTR_EXCEPTIONS = 3; 2161 public static final byte ATTR_LINE_NUMBER_TABLE = 4; 2162 public static final byte ATTR_LOCAL_VARIABLE_TABLE = 5; 2163 public static final byte ATTR_INNER_CLASSES = 6; 2164 public static final byte ATTR_SYNTHETIC = 7; 2165 public static final byte ATTR_DEPRECATED = 8; 2166 public static final byte ATTR_PMG = 9; 2167 public static final byte ATTR_SIGNATURE = 10; 2168 public static final byte ATTR_STACK_MAP = 11; 2169 public static final byte ATTR_RUNTIME_VISIBLE_ANNOTATIONS = 12; 2170 public static final byte ATTR_RUNTIME_INVISIBLE_ANNOTATIONS = 13; 2171 public static final byte ATTR_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS = 14; 2172 public static final byte ATTR_RUNTIME_INVISIBLE_PARAMETER_ANNOTATIONS = 15; 2173 public static final byte ATTR_ANNOTATION_DEFAULT = 16; 2174 public static final byte ATTR_LOCAL_VARIABLE_TYPE_TABLE = 17; 2175 public static final byte ATTR_ENCLOSING_METHOD = 18; 2176 public static final byte ATTR_STACK_MAP_TABLE = 19; 2177 public static final byte ATTR_BOOTSTRAP_METHODS = 20; 2178 public static final byte ATTR_METHOD_PARAMETERS = 21; 2179 2180 public static final short KNOWN_ATTRIBUTES = 22; // count of attributes 2181 2182 private static final String[] ATTRIBUTE_NAMES = { 2183 "SourceFile", "ConstantValue", "Code", "Exceptions", 2184 "LineNumberTable", "LocalVariableTable", 2185 "InnerClasses", "Synthetic", "Deprecated", 2186 "PMGClass", "Signature", "StackMap", 2187 "RuntimeVisibleAnnotations", "RuntimeInvisibleAnnotations", 2188 "RuntimeVisibleParameterAnnotations", "RuntimeInvisibleParameterAnnotations", 2189 "AnnotationDefault", "LocalVariableTypeTable", "EnclosingMethod", "StackMapTable", 2190 "BootstrapMethods", "MethodParameters" 2191 }; 2192 2193 /** 2194 * 2195 * @param index 2196 * @return the attribute name 2197 * @since 6.0 2198 */ 2199 public static String getAttributeName(final int index) { 2200 return ATTRIBUTE_NAMES[index]; 2201 } 2202 2203 /** Constants used in the StackMap attribute. 2204 */ 2205 public static final byte ITEM_Bogus = 0; 2206 public static final byte ITEM_Integer = 1; 2207 public static final byte ITEM_Float = 2; 2208 public static final byte ITEM_Double = 3; 2209 public static final byte ITEM_Long = 4; 2210 public static final byte ITEM_Null = 5; 2211 public static final byte ITEM_InitObject = 6; 2212 public static final byte ITEM_Object = 7; 2213 public static final byte ITEM_NewObject = 8; 2214 2215 private static final String[] ITEM_NAMES = { 2216 "Bogus", "Integer", "Float", "Double", "Long", 2217 "Null", "InitObject", "Object", "NewObject" 2218 }; 2219 2220 /** 2221 * 2222 * @param index 2223 * @return the item name 2224 * @since 6.0 2225 */ 2226 public static String getItemName(final int index) { 2227 return ITEM_NAMES[index]; 2228 } 2229 2230 /** Constants used to identify StackMapEntry types. 2231 * 2232 * For those types which can specify a range, the 2233 * constant names the lowest value. 2234 */ 2235 public static final int SAME_FRAME = 0; 2236 public static final int SAME_LOCALS_1_STACK_ITEM_FRAME = 64; 2237 public static final int SAME_LOCALS_1_STACK_ITEM_FRAME_EXTENDED = 247; 2238 public static final int CHOP_FRAME = 248; 2239 public static final int SAME_FRAME_EXTENDED = 251; 2240 public static final int APPEND_FRAME = 252; 2241 public static final int FULL_FRAME = 255; 2242 2243 /** Constants that define the maximum value of 2244 * those constants which store ranges. */ 2245 2246 public static final int SAME_FRAME_MAX = 63; 2247 public static final int SAME_LOCALS_1_STACK_ITEM_FRAME_MAX = 127; 2248 public static final int CHOP_FRAME_MAX = 250; 2249 public static final int APPEND_FRAME_MAX = 254; 2250 2251 2252 // Constants defining the behavior of the Method Handles (JVMS �5.4.3.5) 2253 2254 public static final byte REF_getField = 1; 2255 public static final byte REF_getStatic = 2; 2256 public static final byte REF_putField = 3; 2257 public static final byte REF_putStatic = 4; 2258 public static final byte REF_invokeVirtual = 5; 2259 public static final byte REF_invokeStatic = 6; 2260 public static final byte REF_invokeSpecial = 7; 2261 public static final byte REF_newInvokeSpecial = 8; 2262 public static final byte REF_invokeInterface = 9; 2263 2264 /** 2265 * The names of the reference_kinds of a CONSTANT_MethodHandle_info. 2266 */ 2267 private static final String[] METHODHANDLE_NAMES = { 2268 "", "getField", "getStatic", "putField", "putStatic", "invokeVirtual", 2269 "invokeStatic", "invokeSpecial", "newInvokeSpecial", "invokeInterface" }; 2270 2271 /** 2272 * 2273 * @param index 2274 * @return the method handle name 2275 * @since 6.0 2276 */ 2277 public static String getMethodHandleName(final int index) { 2278 return METHODHANDLE_NAMES[index]; 2279 } 2280 2281 private Const() { } // not instantiable 2282 2283}