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