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