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