I
- I character 
- field descriptor meaning, 91 
 
- i2b instruction, 232 
- i2c instruction, 233 
- i2d instruction, 234 
- i2f instruction, 235 
- i2l instruction, 236 
- i2s instruction, 237 
- in Java Virtual Machine assembly language examples, constants and local variables in a for loop, 345 
 
- iadd instruction, 238 
- in Java Virtual Machine assembly language examples 
- arithmetic, 346 
- constants and local variables in a for loop, 345 
- receiving arguments, 351 
 
 
- iaload instruction, 239 
- in Java Virtual Machine assembly language examples, arrays, 357 
 
- iand instruction, 240 
- in Java Virtual Machine assembly language examples, arithmetic, 346 
 
- iastore instruction, 241 
- in Java Virtual Machine assembly language examples, arrays, 357 
 
- iconst_<i> instructions, 242 
- in Java Virtual Machine assembly language examples 
- arithmetic, 346 
- arrays, 358 
- compiling switches, 359, 360 
- constants and local variables in a for loop, 341, 345 
- while loop, 348, 350 
 
 
- identifiers 
- See also names; strings
- non-name use in Java programs, 20 
- term definition, 6 
- as value of CONSTANT_Utf8_info structure 
- referenced by name_index item (CONSTANT_NameAndType_info structure), 100 
- referenced by name_index item (field_info structure), 103 
- referenced by name_index item (method_info structure), 105
 
 
- identity 
- conversions, 14 
 
- idiv instruction, 243 
- IEEE 754 standard 
- comparing 
- double conformance, dcmpg, 183 
- double conformance, dcmpl, 183 
- float conformance, fcmpg, 211 
- float conformance, fcmpl, 211 
 
- conformance 
- add double, dadd, 179 
- add float, fadd, 208 
 
- dividing 
- double conformance, ddiv, 185 
- float conformance, fdiv, 214 
 
- float and double type conformance, 59 
- floating-point 
- comparison, conformance, 80 
- double bit layout, high_bytes and low_bytes items, CONSTANT_Double_info structure, 98 
- operation conformance to, 76 
 
- multiplying 
- double conformance, dmul, 189 
- float conformance, fmul, 218 
 
- remainder 
- drem not the same as the, drem, 192 
- frem not the same as the, frem, 221 
 
- subtracting 
- double conformance, dsub, 197 
- float conformance, fsub, 225 
 
 
- if_acmpeq instruction, 244 
- constraints, static, 119 
 
- if_acmpne instruction, 244 
- constraints, static, 119 
 
- if_icmpeq instruction, 245 
- constraints, static, 119 
 
- if_icmpge instruction, 245 
- constraints, static, 119 
 
- if_icmpgt instruction, 245 
- constraints, static, 119 
 
- if_icmple instruction, 245 
- constraints, static, 119 
 
- if_icmplt instruction, 245 
- constraints, static, 119 
- in Java Virtual Machine assembly language examples 
- constants and local variables in a for loop, 341, 342, 345 
- while loop, 348 
 
 
- if_icmpne instruction, 245 
- constraints, static, 119 
 
- ifeq instruction, 247 
- constraints, static, 119 
 
- ifge instruction, 247 
- constraints, static, 119 
- in Java Virtual Machine assembly language examples, while loop, 350 
 
- ifgt instruction, 247 
- constraints, static, 119 
 
- ifle instruction 
- constraints, static, 119 
- in Java Virtual Machine assembly language examples, while loop, 350 
 
- iflt instruction, 247 
- constraints, static, 119 
- in Java Virtual Machine assembly language examples 
- constants and local variables in a for loop, 343 
- while loop, 349 
 
 
- ifne instruction, 247 
- constraints, static, 119 
- in Java Virtual Machine assembly language examples, throwing exceptions, 362 
 
- ifnonnull instruction, 249 
- constraints, static, 119 
 
- ifnull instruction, 250 
- constraints, static, 119 
- in Java Virtual Machine assembly language examples, working with class instances, 355 
 
- iinc instruction, 251 
- constraints, static, 121 
- in Java Virtual Machine assembly language examples 
- constants and local variables in a for loop, 341, 342 
- while loop, 348 
 
 
- IllegalAccessError, 45 
- anewarray, 162 
- checkcast, 175 
- constant pool resolution generation of, 143, 146 
- during field reference resolution, 147 
- during method reference resolution, 148 
 
- getfield, 226 
- getstatic, 228 
- instanceof, 257 
- invokeinterface, 260 
- invokeinterface_quick, 403 
- invokespecial, 263 
- invokestatic, 266 
- invokevirtual, 268 
- as linking error, 39 
- multianewarray, 316 
- new, 318 
- putfield, 325 
- putstatic, 327 
 
- IllegalMonitorStateException, 38 
- monitorexit, 314 
 
- iload instruction, 252 
- See also istore instruction; wide instruction; 
- constraints, static, 121 
 
- iload_<n> instructions, 253 
- See also istore_<n> instructions
- constraints, static, 121 
- in Java Virtual Machine assembly language examples 
- arithmetic, 346 
- arrays, 357 
- compiling switches, 359, 360 
- constants and local variables in a for loop, 341, 342, 345 
- receiving arguments, 351 
- throwing exceptions, 362 
- while loop, 348 
- working with class instances, 356 
 
 
- impdep1 reserved opcode, 152 
- impdep2 reserved opcode, 152 
- implementation 
- attributes 
- optional, handling, 107 
- predefined, support requirements, 107 
 
- bugs 
- exclusive end_pc workaround, 112 
- native method stacks, stack overflow not detected, 65 
- string literal resolution, 148 
 
- class files verification issues, 124 
- considerations 
- constant pool, 64 
- exception handling, 114 
- frames, extensions permitted, 68 
- heap, 63 
- Java stacks, 62 
- JDK 1.0.2 release, boolean arrays as byte arrays, 60 
- JDK 1.0.2 release, Java stacks, 62 
- JDK 1.0.2 release, Java stacks, size limit use, 63 
- JDK 1.0.2 release, heap, 63 
- JDK 1.0.2 release, method area, 64 
- JDK 1.0.2 release, constant pool, 64 
- JDK 1.0.2 release, native method stacks, 65 
- local variables, 66 
- method area, 64 
- native method stacks, 65 
- operand stacks, 67 
- word specification, 61 
 
- constraint enforcement strategies, 151 
- constraints 
- Java Virtual Machine code, 118 
- Java Virtual Machine code, static, 118 
- Java Virtual Machine code, structural, 121 
 
- decisions, constant pool entries for eight-byte constants, 98 
- exception handlers 
- Sun's Java compiled code characteristics, 133 
- try-finally clause, Sun's Java compiled code characteristics, 133 
 
- future possibilities, API changes in contract between Java Virtual Machine and ClassLoader class, 144 
- implications, opcode design and alignment, 71 
- integer data type underflow and overflow, not detected by Java Virtual Machine, 76 
- Java Virtual Machine, strategies and requirements, 81 
- JDK 1.0.2 
- line number - source code mapping issues, 115 
- major_version and minor_version numbers, 85 
- verification of class files restricted to those with class loaders, 142 
 
- object representation, 69 
- optimization, alternative instruction use, 127 
- requirements and non-requirements, 57 
 
- import declaration 
- type declaration effects, 21 
 
- imul instruction, 254 
- IncompatibleClassChangeError, 45 
- getfield, 226 
- getstatic, 228 
- invokeinterface, 259 
- invokeinterface_quick, 403 
- invokespecial, 263 
- invokestatic, 266 
- invokevirtual, 269 
- as linking error, 39 
- putfield, 325 
- putstatic, 327 
 
- increment 
- local variable by constant, iinc, 251 
 
- index item 
- (LocalVariableTable_attribute structure), 118 
 
- IndexOutOfBoundsException, 38 
- ineg instruction, 255 
- inexact 
- term definition, 8 
 
- infinities 
- IEEE 754 standard, Java Virtual Machine specification conformance to, 59 
 
- info array 
- (attribute_info generic structure), 106 
 
- inheritance 
- class hierarchy, 25 
- in interfaces, 32 
- methods, 27 
- term definition, 25 
 
- <init> special method 
- as instance initialization method name, 69 
- constant_pool reference to, 95 
- invocation of 
- static constraints, 120 
- structural constraints, 122 
 
- method_info structure access flags, 104 
- name_index item (method_info) reference, 105 
 
- initialization 
- detailed procedure description, 47 
- instance, structural constraints on instructions, 122 
- instances, data-flow analysis during class file verification, 131 
- methods, 69 
- overview, 42 
- static initializers, 29 
- term definition, 46 
 
- instanceof instruction, 256 
- instanceof_quick instruction, 401 
- instances 
- See also arrays
- creating 
- new, 318 
- new_quick, 422 
 
- creation, 49 
- instruction summary, 79 
- situations that cause the, 49 
 
- determining if an object is a particular type 
 
- instances (cont.)
- instanceof, 256 
- instanceof_quick, 401 
 
 
- entering monitor for, monitorenter, 312 
- exiting monitor for, monitorexit, 314 
- field descriptor specification, 91 
- getting values of fields from 
- getfield, 226 
- getfield_quick, 395 
- getfield_quick_w, 396 
- long or double, getfield2_quick, 398 
 
- initialization 
- data-flow analysis during class file verification, 131 
- field_info structure access flags, 104 
- structural constraints on instructions, 122 
 
- instanceof instruction, constraints, static, 120 
- Java Virtual Machine support for, 58 
- manipulation, instruction summary, 79 
- methods, 28 
- accessing, structural constraints on instructions, 122 
- data-flow analysis during class file verification, 132 
- initialization, invoking, invokenonvirtual_quick, 406 
- invoking, instruction summary, 80 
- invoking, invokespecial, 261 
- invoking, invokevirtual, 267 
- invoking, invokevirtual_quick, 411 
- invoking, invokevirtual_quick_w, 413 
- invoking, for java.lang.Object class, invokevirtualobject_quick, 415 
- method_info structure access flags, 104 
 
- operators on, 10 
- putting values into fields into 
- putfield, 325 
- putfield_quick, 423 
- putfield2_quick, 426 
- wide index, putfield_quick_w, 424 
 
- reference type relationship to, 58 
- representation of, in Java Virtual Machine, 69 
- term definition, 9 
- this object role in creation of, 50 
- uninitialized, restrictions, Pass 3 - bytecode verifier, 133 
- unreachable, finalization of, 51 
- variables, 11 
- accessing, structural constraints on instructions, 122 
- getting fields from, getfield, 226 
- getting fields from, getfield_quick, 395 
- getting fields from, getfield_quick_w, 396 
- getting fields from, getfield2_quick, 398 
- putting fields into, putfield, 325 
- putting fields into, putfield_quick, 423 
- putting fields into, putfield2_quick, 426 
 
 
- InstantiationError, 45 
- as linking error, 39 
- new, 318 
 
- instructions 
- alternative forms, optimization use of, 127 
- constraints, static, 118 
- Java Virtual Machine instruction set 
- execution loop, 71 
- format, 71 
 
- load, summary, 74 
- opcodes 
- data flow analysis, 126 
- verification process, 128 
 
- operands, verification process, 128 
- set 
- arithmetic, summary, 75 
- notation for families of, 75 
- summary, 71 
- type encoding limitations of, 72 
 
- store, summary, 74 
- untyped, handling of long and double values, data-flow analysis during class file verification, 131 
 
- int type 
- adding, iadd, 238 
- ANDing, bitwise, iand, 240 
- branch int comparison 
- if_icmp<cond>, 245 
- with zero, if<cond>, 247 
 
- converting 
- double to, d2i, 177 
- float to, f2i, 205 
- long to, l2i, 284 
- to byte, i2b, 232 
- to char, i2c, 233 
- to double, i2d, 234 
- to float, i2f, 235 
- to long, i2l, 236 
- to short, i2s, 237 
 
- dividing, idiv, 243 
- field descriptor specification, 91 
- loading from 
- arrays, iaload, 239 
- local variables, iload, 252 
- local variables, iload_<n>, 253 
 
- multiplying, imul, 254 
- negating, ineg, 255 
- ORing 
- bitwise, exclusive, ixor, 279 
- bitwise, inclusive, ior, 270 
 
- pushing constants, iconst_<i>, 242 
- remainder, irem, 271 
- shift left, arithmetic, ishl, 273 
- shift right 
- arithmetic, ishr, 274 
- logical, iushr, 278 
 
- storing into 
- arrays, iastore, 241 
- local variables, istore, 275 
- local variables, istore_<n>, 276 
 
- subtracting, isub, 277 
- value, return from method, ireturn, 272 
 
- integer 
- See also byte type; char type; int type; long type; short type
- data types, underflow and overflow, not detected by Java Virtual Machine, 76 
- int type 
- boolean values represented as, 60 
- compilation of, Java Virtual Machine assembly language examples, 341 
- instruction set handling of, 72 
- term definition, 58 
- value range, 59 
 
 
- integral 
- types 
- components, 7, 58 
- values, 58 
 
- values, operators on, 8 
 
- interfaces, 30 
- See also ACC_INTERFACE modifier; arrays; class(es); interfaces array, (ClassFile structure)
- constant pool entry resolution, 140 
- extends clause use, 31 
- fields, 31 
- finalization of, 52 
- implements clause use, 31 
- members, 31 
- methods 
- constant pool resolution of, 148 
- invocation instruction summary, 80 
- invoking, invokeinterface, 258 
- invoking, invokeinterface_quick, 403 
- method_info structure access flags, 104 
 
- modifiers, 31 
- term definition, 30 
- types, 9 
- as reference type, 61 
- implications for variables and expressions, 13 
- members of, 22 
 
 
- interfaces array 
- (ClassFile structure), 87 
 
- interfaces_count item 
- (ClassFile structure), 87 
 
- InternalError 
- as asynchronous exception cause, 37 
- as Java Virtual Machine error, 40 
 
- invokeinterface instruction, 258 
- constraints, static, 120 
 
- invokeinterface_quick instruction, 403 
- invokenonvirtual_quick instruction, 406 
- invokespecial instruction, 261
- See also ACC_SUPER modifier
- access flag use to select alternative semantics, 86 
- constraints 
- static, 120 
- structural, 122 
 
- instance initialization by, 69 
- in Java Virtual Machine assembly language examples
- arrays, 358 
- invoking methods, 354 
- throwing exceptions, 362 
- working with class instances, 355 
 
 
- invokestatic instruction, 265 
- constraints, static, 120 
- in Java Virtual Machine assembly language examples, invoking methods, 353 
 
- invokestatic_quick instruction, 410 
- invokesuper_quick instruction, 408 
- invokevirtual instruction, 267 
- constraints, static, 120 
- in Java Virtual Machine assembly language examples 
- catching exceptions, 363, 364, 365 
 
 
- invokevirtual instruction (cont.)
- compiling finally, 367, 368, 369 
- invoking methods, 352 
- synchronization, 370 
- throwing exceptions, 362, 363 
- working with class instances, 355 
 
 
- invokevirtual_quick instruction, 411 
- invokevirtual_quick_w instruction, 413 
- invokevirtualobject_quick instruction, 415 
- invoking 
- methods 
- class, invokestatic, 265 
- class, invokestatic_quick, 410 
- instance, invokespecial, 261 
- instance, invokevirtual, 267 
- instance, invokevirtual_quick, 411 
- instance, invokevirtual_quick_w, 413 
- instance, for java.lang.Object class, invokevirtualobject_quick, 415 
- instance initialization, invokenonvirtual_quick, 406 
- interface, invokeinterface, 258 
- interface, invokeinterface_quick, 403 
- private, invokenonvirtual_quick, 406 
- superclasses, invokesuper_quick, 408 
 
 
- ior instruction, 270 
- irem instruction, 271 
- ireturn instruction, 272 
- constraints, structural, 123 
- in Java Virtual Machine assembly language examples 
- arithmetic, 346 
- compiling switches, 359, 360, 361 
- invoking methods, 352, 353, 354 
- receiving arguments, 351 
- while loop, 350 
 
 
- ishl instruction, 273 
- ishr instruction, 274 
- istore instruction, 275 
- See also iload instruction
- constraints, static, 121 
 
- istore_<n> instructions, 276 
- See also iload_<n> instructions
- constraints, static, 121 
- in Java Virtual Machine assembly language examples 
- accessing the constant pool, 347 
- arrays, 357 
- constants and local variables in a for loop, 341, 345 
- while loop, 348 
 
 
- isub instruction, 277 
- in Java Virtual Machine assembly language examples, arithmetic, 346 
 
- items 
- class file items, 83 
 
- iushr instruction, 278 
- ixor instruction, 279 
- in Java Virtual Machine assembly language examples, arithmetic, 346 
 
Contents | Prev | Next | Index
Java Virtual Machine Specification 
Copyright © 1996, 1997 Sun Microsystems, Inc.
All rights reserved
Please send any comments or corrections to jvm@java.sun.com