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