Index

A

a bit of history, 1.1
aaload, 4.10.1.9.aaload, 6.5.aaload
stack map frame representation, 4.10.1.4
aastore, 4.10.1.9.aastore, 6.5.aastore
abrupt method invocation completion, 2.6.5
Exceptions, 2.10
invokedynamic, 6.5.invokedynamic
synchronization, 3.14
access control, 5.4.4
class and interface resolution, 5.4.3.1
field resolution, 5.4.3.2
method resolution, 5.4.3.3
type checking for protected members, 4.10.1.8
accessing the run-time constant pool, 3.4
accessors for Java Virtual Machine artifacts, 4.10.1.1
type checking instructions, 4.10.1.9
verification by type checking, 4.10.1
aconst_null, 4.10.1.9.aconst_null, 6.5.aconst_null
actual and computational types in the Java Virtual Machine, 2.11.1
types and the Java Virtual Machine, 2.11.1, 2.11.1
aload, 4.10.1.9.aload, 6.5.aload
astore, 6.5.astore
wide, 6.5.wide
aload_<n>, 4.10.1.9.aload_n, 6.5.aload_n
astore_<n>, 6.5.astore_n
anewarray, 4.10.1.9.anewarray, 6.5.anewarray
multianewarray, 6.5.multianewarray
AnnotationDefault attribute, 4.7.20
methods, 4.6, 4.6
annotations, 3.15
areturn, 4.10.1.9.areturn, 6.5.areturn
arithmetic, 3.3
arithmetic instructions, 2.11.3
control transfer instructions, 2.11.7
array class loading
creation and loading, 5.3
loading constraints, 5.3.4
array type codes, 6.5.newarray
arraylength, 4.10.1.9.arraylength, 6.5.arraylength
getfield, 6.5.getfield
stack map frame representation, 4.10.1.4
arrays, 3.9
assumptions: the meaning of "must", 6.1
astore, 4.10.1.9.astore, 6.5.astore
aload, 6.5.aload
wide, 6.5.wide
astore_<n>, 4.10.1.9.astore_n, 6.5.astore_n
aload_<n>, 6.5.aload_n
athrow, 4.10.1.9.athrow, 6.5.athrow
abrupt method invocation completion, 2.6.5
Exceptions, 2.10
attributes, 4.7
ClassFile structure, 4.1, 4.1
Code attribute, 4.7.3
fields, 4.5, 4.5
methods, 4.6, 4.6

B

baload, 4.10.1.9.baload, 6.5.baload
boolean type, 2.3.4
newarray, 6.5.newarray
stack map frame representation, 4.10.1.4
bastore, 4.10.1.9.bastore, 6.5.bastore
boolean type, 2.3.4
newarray, 6.5.newarray
stack map frame representation, 4.10.1.4
binary class and interface names, 4.2.1
annotations, 3.15
CONSTANT_Class_info structure, 4.4.1
creation and loading, 5.3
element_value structure, 4.7.16.1
field descriptors, 4.3.2
run-time constant pool, 5.1, 5.1
binding native method implementations, 5.6
invokeinterface, 6.5.invokeinterface
invokespecial, 6.5.invokespecial
invokestatic, 6.5.invokestatic
invokevirtual, 6.5.invokevirtual
bipush, 4.10.1.9.bipush, 6.5.bipush
boolean type, 2.3.4
primitive types and values, 2.3
structural constraints, 4.9.2
bootstrap loader
creation and loading, 5.3
Java Virtual Machine startup, 5.2
loading constraints, 5.3.4
notation, 1.4
BootstrapMethods attribute, 4.7.21
ClassFile structure, 4.1, 4.1
CONSTANT_InvokeDynamic_info structure, 4.4.10
bytecode behaviors for method handles, 5.4.3.5
method type and method handle resolution, 5.4.3.5
bytecode verifier, 4.10.2.2

C

call site specifier resolution, 5.4.3.6
invokedynamic, 6.5.invokedynamic
caload, 4.10.1.9.caload, 6.5.caload
castore, 4.10.1.9.castore, 6.5.castore
checkcast, 4.10.1.9.checkcast, 6.5.checkcast
instanceof, 6.5.instanceof
class access and property modifiers, 4.1
ClassFile structure, 4.1, 4.1, 4.1
invokespecial, 6.5.invokespecial
class and interface resolution, 5.4.3.1
anewarray, 6.5.anewarray, 6.5.anewarray
checkcast, 6.5.checkcast, 6.5.checkcast
class and interface resolution, 5.4.3.1
deriving a class from a class file representation, 5.3.5, 5.3.5
field resolution, 5.4.3.2
instanceof, 6.5.instanceof, 6.5.instanceof
interface method resolution, 5.4.3.4
ldc, 6.5.ldc, 6.5.ldc
ldc_w, 6.5.ldc_w, 6.5.ldc_w
method resolution, 5.4.3.3, 5.4.3.3
method type and method handle resolution, 5.4.3.5, 5.4.3.5
multianewarray, 6.5.multianewarray, 6.5.multianewarray
new, 6.5.new, 6.5.new
class file format, 2.1, 4
assumptions: the meaning of "must", 6.1
creation and loading, 5.3
reserved opcodes, 6.2
class libraries, 2.12
attributes, 4.7, 4.7
creation and loading, 5.3
initialization, 5.5
class loading
access control, 5.4.4
class and interface resolution, 5.4.3.1
creating array classes, 5.3.3
format checking, 4.8
getfield, 6.5.getfield
invokespecial, 6.5.invokespecial
invokevirtual, 6.5.invokevirtual
putfield, 6.5.putfield
run-time constant pool, 2.5.5, 5.1
stack map frame representation, 4.10.1.4
verification, 5.4.1
ClassFile structure, 4.1
annotations, 3.15, 3.15
attributes, 4.7
BootstrapMethods attribute, 4.7.21
Deprecated attribute, 4.7.15
deriving a class from a class file representation, 5.3.5, 5.3.5
EnclosingMethod attribute, 4.7.7
format checking, 4.8
InnerClasses attribute, 4.7.6
limitations of the Java Virtual Machine, 4.11, 4.11, 4.11, 4.11
loading using a user-defined class loader, 5.3.2
RuntimeInvisibleAnnotations attribute, 4.7.17
RuntimeVisibleAnnotations attribute, 4.7.16
Signature attribute, 4.7.9
SourceDebugExtension attribute, 4.7.11
SourceFile attribute, 4.7.10
Synthetic attribute, 4.7.8
verification by type checking, 4.10.1
Code attribute, 4.7.3
attributes, 4.7
constraints on Java Virtual Machine code, 4.9
Exceptions, 2.10
frames, 2.6
limitations of the Java Virtual Machine, 4.11, 4.11
LineNumberTable attribute, 4.7.12
local variables, 2.6.1
LocalVariableTable attribute, 4.7.13
LocalVariableTypeTable attribute, 4.7.14
methods, 4.6, 4.6
operand stacks, 2.6.2
StackMapTable attribute, 4.7.4, 4.7.4
throwing and handling Exceptions, 3.12, 3.12
verification by type checking, 4.10.1
verification of class files, 4.10
compiling finally, 3.13
astore, 6.5.astore
astore_<n>, 6.5.astore_n
Code attribute, 4.7.3
jsr, 6.5.jsr
jsr_w, 6.5.jsr_w
more control examples, 3.5
ret, 6.5.ret
compiling for the Java Virtual Machine, 3
instance initialization methods and newly created objects, 4.10.2.4
compiling switches, 3.10
more control examples, 3.5
constant pool, 4.4
ClassFile structure, 4.1
getfield, 6.5.getfield
getstatic, 6.5.getstatic
invokedynamic, 6.5.invokedynamic, 6.5.invokedynamic, 6.5.invokedynamic
invokeinterface, 6.5.invokeinterface
invokespecial, 6.5.invokespecial
invokestatic, 6.5.invokestatic
invokevirtual, 6.5.invokevirtual
ldc, 6.5.ldc, 6.5.ldc, 6.5.ldc, 6.5.ldc
ldc2_w, 6.5.ldc2_w
ldc_w, 6.5.ldc_w, 6.5.ldc_w, 6.5.ldc_w
method type and method handle resolution, 5.4.3.5
putfield, 6.5.putfield
putstatic, 6.5.putstatic
resolution, 5.4.3
run-time constant pool, 2.5.5, 5.1
constant pool tags, 4.4
constant pool, 4.4
constant value attribute types, 4.7.2
ConstantValue attribute, 4.7.2
CONSTANT_Class_info structure, 4.4.1
arrays, 3.9
binary class and interface names, 4.2.1
BootstrapMethods attribute, 4.7.21
ClassFile structure, 4.1, 4.1, 4.1
Code attribute, 4.7.3
CONSTANT_Fieldref_info, CONSTANT_Methodref_info, and CONSTANT_InterfaceMethodref_info structures, 4.4.2
EnclosingMethod attribute, 4.7.7
Exceptions attribute, 4.7.5
InnerClasses attribute, 4.7.6, 4.7.6
ldc_w, 6.5.ldc_w
run-time constant pool, 5.1
StackMapTable attribute, 4.7.4
CONSTANT_Fieldref_info, CONSTANT_Methodref_info, and CONSTANT_InterfaceMethodref_info structures, 4.4.2
CONSTANT_MethodHandle_info structure, 4.4.8, 4.4.8, 4.4.8
instruction representation, 4.10.1.3
run-time constant pool, 5.1, 5.1, 5.1
CONSTANT_Integer_info and CONSTANT_Float_info structures, 4.4.4
BootstrapMethods attribute, 4.7.21
floating-point types, value sets, and values, 2.3.2
ldc, 6.5.ldc
ldc_w, 6.5.ldc_w
run-time constant pool, 5.1, 5.1
CONSTANT_InvokeDynamic_info structure, 4.4.10
BootstrapMethods attribute, 4.7.21
instruction representation, 4.10.1.3
run-time constant pool, 5.1
CONSTANT_Long_info and CONSTANT_Double_info structures, 4.4.5
BootstrapMethods attribute, 4.7.21
ClassFile structure, 4.1
floating-point types, value sets, and values, 2.3.2
ldc2_w, 6.5.ldc2_w
run-time constant pool, 5.1, 5.1
CONSTANT_MethodHandle_info structure, 4.4.8
BootstrapMethods attribute, 4.7.21, 4.7.21, 4.7.21
run-time constant pool, 5.1
CONSTANT_MethodType_info structure, 4.4.9
BootstrapMethods attribute, 4.7.21
run-time constant pool, 5.1
CONSTANT_NameAndType_info structure, 4.4.6
binary class and interface names, 4.2.1
CONSTANT_Fieldref_info, CONSTANT_Methodref_info, and CONSTANT_InterfaceMethodref_info structures, 4.4.2
CONSTANT_InvokeDynamic_info structure, 4.4.10
EnclosingMethod attribute, 4.7.7
run-time constant pool, 5.1
CONSTANT_String_info structure, 4.4.3
BootstrapMethods attribute, 4.7.21
run-time constant pool, 5.1
CONSTANT_Utf8_info structure, 4.4.7
AnnotationDefault attribute, 4.7.20
attributes, 4.7
binary class and interface names, 4.2.1
BootstrapMethods attribute, 4.7.21
Code attribute, 4.7.3
CONSTANT_Class_info structure, 4.4.1
CONSTANT_MethodType_info structure, 4.4.9
CONSTANT_NameAndType_info structure, 4.4.6, 4.4.6
CONSTANT_String_info structure, 4.4.3
ConstantValue attribute, 4.7.2
Deprecated attribute, 4.7.15
descriptors and signatures, 4.3
element_value structure, 4.7.16.1, 4.7.16.1, 4.7.16.1
EnclosingMethod attribute, 4.7.7
Exceptions attribute, 4.7.5
fields, 4.5, 4.5
InnerClasses attribute, 4.7.6, 4.7.6
limitations of the Java Virtual Machine, 4.11
LineNumberTable attribute, 4.7.12
LocalVariableTable attribute, 4.7.13, 4.7.13, 4.7.13
LocalVariableTypeTable attribute, 4.7.14, 4.7.14, 4.7.14
methods, 4.6, 4.6
run-time constant pool, 5.1
RuntimeInvisibleAnnotations attribute, 4.7.17
RuntimeInvisibleParameterAnnotations attribute, 4.7.19
RuntimeVisibleAnnotations attribute, 4.7.16, 4.7.16, 4.7.16
RuntimeVisibleParameterAnnotations attribute, 4.7.18
Signature attribute, 4.7.9, 4.7.9
SourceDebugExtension attribute, 4.7.11, 4.7.11
SourceFile attribute, 4.7.10, 4.7.10
StackMapTable attribute, 4.7.4
Synthetic attribute, 4.7.8
ConstantValue attribute, 4.7.2
fields, 4.5, 4.5
initialization, 5.5
limitations of the Java Virtual Machine, 4.11
constraints
creating array classes, 5.3.3
deriving a class from a class file representation, 5.3.5
field resolution, 5.4.3.2
interface method resolution, 5.4.3.4
loading using a user-defined class loader, 5.3.2
method resolution, 5.4.3.3
preparation, 5.4.2
constraints on Java Virtual Machine code, 4.9
Code attribute, 4.7.3
verification, 5.4.1, 5.4.1
control transfer instructions, 2.11.7
creating array classes, 5.3.3
creation and loading, 5.3
loading constraints, 5.3.4
creation and loading, 5.3
access control, 5.4.4
class and interface resolution, 5.4.3.1
creating array classes, 5.3.3
format checking, 4.8
getfield, 6.5.getfield
invokespecial, 6.5.invokespecial
invokevirtual, 6.5.invokevirtual
putfield, 6.5.putfield
run-time constant pool, 2.5.5, 5.1
stack map frame representation, 4.10.1.4
verification, 5.4.1

D

d2f, 4.10.1.9.d2f, 6.5.d2f
d2i, 4.10.1.9.d2i, 6.5.d2i
d2l, 4.10.1.9.d2l, 6.5.d2l
dadd, 4.10.1.9.dadd, 6.5.dadd
daload, 4.10.1.9.daload, 6.5.daload
dastore, 4.10.1.9.dastore, 6.5.dastore
data types, 2.2
baload, 6.5.baload
bastore, 6.5.bastore
dcmp<op>, 4.10.1.9.dcmp_op, 6.5.dcmp_op
dconst_<d>, 4.10.1.9.dconst_d, 6.5.dconst_d
ddiv, 4.10.1.9.ddiv, 6.5.ddiv
defineclass
creation and loading, 5.3
loading constraints, 5.3.4
loading using a user-defined class loader, 5.3.2
loading using the bootstrap class loader, 5.3.1
defining and naming new attributes, 4.7.1
ClassFile structure, 4.1
Code attribute, 4.7.3
fields, 4.5
methods, 4.6
Deprecated attribute, 4.7.15
ClassFile structure, 4.1
fields, 4.5
methods, 4.6
deriving a class from a class file representation, 5.3.5
creation and loading, 5.3
loading constraints, 5.3.4
loading using a user-defined class loader, 5.3.2
loading using the bootstrap class loader, 5.3.1
descriptors and signatures, 4.3
binary class and interface names, 4.2.1
dload, 4.10.1.9.dload, 6.5.dload
wide, 6.5.wide
dload_<n>, 4.10.1.9.dload_n, 6.5.dload_n
dmul, 4.10.1.9.dmul, 6.5.dmul
dneg, 4.10.1.9.dneg, 6.5.dneg
drem, 4.10.1.9.drem, 6.5.drem
dreturn, 4.10.1.9.dreturn, 6.5.dreturn
dstore, 4.10.1.9.dstore, 6.5.dstore
wide, 6.5.wide
dstore_<n>, 4.10.1.9.dstore_n, 6.5.dstore_n
dsub, 4.10.1.9.dsub, 6.5.dsub
dup, 4.10.1.9.dup, 6.5.dup
operand stacks, 2.6.2
dup2, 4.10.1.9.dup2, 6.5.dup2
dup2_x1, 4.10.1.9.dup2_x1, 6.5.dup2_x1
dup2_x2, 4.10.1.9.dup2_x2, 6.5.dup2_x2
dup_x1, 4.10.1.9.dup_x1, 6.5.dup_x1
dup_x2, 4.10.1.9.dup_x2, 6.5.dup_x2
dynamic linking, 2.6.3

E

element_value structure, 4.7.16.1
EnclosingMethod attribute, 4.7.7
ClassFile structure, 4.1
Exceptions, 2.10
abrupt method invocation completion, 2.6.5
athrow, 6.5.athrow
Code attribute, 4.7.3
normal method invocation completion, 2.6.4
synchronization, 3.14
throwing and handling Exceptions, 3.12, 3.12
Virtual Machine errors, 6.3
Exceptions and finally, 4.10.2.5
compiling finally, 3.13
jsr, 6.5.jsr
jsr_w, 6.5.jsr_w
ret, 6.5.ret
Exceptions attribute, 4.7.5
methods, 4.6, 4.6

F

f2d, 4.10.1.9.f2d, 6.5.f2d
f2i, 4.10.1.9.f2i, 6.5.f2i
f2l, 4.10.1.9.f2l, 6.5.f2l
fadd, 4.10.1.9.fadd, 6.5.fadd
faload, 4.10.1.9.faload, 6.5.faload
fastore, 4.10.1.9.fastore, 6.5.fastore
fcmp<op>, 4.10.1.9.fcmp_op, 6.5.fcmp_op
fconst_<f>, 4.10.1.9.fconst_f, 6.5.fconst_f
fdiv, 4.10.1.9.fdiv, 6.5.fdiv
field access and property flags, 4.5
ConstantValue attribute, 4.7.2
fields, 4.5, 4.5, 4.5, 4.5
field descriptors, 4.3.2
CONSTANT_Fieldref_info, CONSTANT_Methodref_info, and CONSTANT_InterfaceMethodref_info structures, 4.4.2
CONSTANT_NameAndType_info structure, 4.4.6
element_value structure, 4.7.16.1, 4.7.16.1
fields, 4.5, 4.5
instruction representation, 4.10.1.3
LocalVariableTable attribute, 4.7.13
method type and method handle resolution, 5.4.3.5
putfield, 6.5.putfield
putstatic, 6.5.putstatic
run-time constant pool, 5.1
RuntimeVisibleAnnotations attribute, 4.7.16
structural constraints, 4.9.2
verification type system, 4.10.1.2
field resolution, 5.4.3.2
getfield, 6.5.getfield, 6.5.getfield
getstatic, 6.5.getstatic, 6.5.getstatic
loading constraints, 5.3.4
method type and method handle resolution, 5.4.3.5
putfield, 6.5.putfield, 6.5.putfield
putstatic, 6.5.putstatic, 6.5.putstatic
resolution, 5.4.3
fields, 4.5
attributes, 4.7
ClassFile structure, 4.1, 4.1
ConstantValue attribute, 4.7.2
Deprecated attribute, 4.7.15
RuntimeInvisibleAnnotations attribute, 4.7.17
RuntimeVisibleAnnotations attribute, 4.7.16
Signature attribute, 4.7.9
Synthetic attribute, 4.7.8
fload, 4.10.1.9.fload, 6.5.fload
types and the Java Virtual Machine, 2.11.1
wide, 6.5.wide
fload_<n>, 4.10.1.9.fload_n, 6.5.fload_n
floating-point arithmetic, 2.8
floating-point modes, 2.8.2
d2f, 6.5.d2f
f2d, 6.5.f2d
type conversion instructions, 2.11.4
floating-point types, value sets, and values, 2.3.2
CONSTANT_Integer_info and CONSTANT_Float_info structures, 4.4.4
CONSTANT_Long_info and CONSTANT_Double_info structures, 4.4.5
d2f, 6.5.d2f, 6.5.d2f
f2d, 6.5.f2d
floating-point modes, 2.8.2
invokedynamic, 6.5.invokedynamic
ldc, 6.5.ldc
ldc2_w, 6.5.ldc2_w
ldc_w, 6.5.ldc_w
more control examples, 3.5
primitive types and values, 2.3
floating-point value set parameters, 2.3.2
floating-point types, value sets, and values, 2.3.2, 2.3.2, 2.3.2
fmul, 4.10.1.9.fmul, 6.5.fmul
fneg, 4.10.1.9.fneg, 6.5.fneg
format checking, 4.8
deriving a class from a class file representation, 5.3.5
format of examples, 3.1
format of instruction descriptions, 6.4
frames, 2.6
aload, 6.5.aload
aload_<n>, 6.5.aload_n
anewarray, 6.5.anewarray
areturn, 6.5.areturn
astore, 6.5.astore
astore_<n>, 6.5.astore_n
athrow, 6.5.athrow
checkcast, 6.5.checkcast
dload, 6.5.dload
dload_<n>, 6.5.dload_n
dreturn, 6.5.dreturn
dstore, 6.5.dstore
dstore_<n>, 6.5.dstore_n
dynamic linking, 2.6.3
fload, 6.5.fload
fload_<n>, 6.5.fload_n
format of instruction descriptions, 6.4
freturn, 6.5.freturn
fstore, 6.5.fstore
fstore_<n>, 6.5.fstore_n
getfield, 6.5.getfield
getstatic, 6.5.getstatic
iinc, 6.5.iinc
iload, 6.5.iload
iload_<n>, 6.5.iload_n
instanceof, 6.5.instanceof
invokedynamic, 6.5.invokedynamic
invokeinterface, 6.5.invokeinterface
invokespecial, 6.5.invokespecial
invokestatic, 6.5.invokestatic
invokevirtual, 6.5.invokevirtual
ireturn, 6.5.ireturn
istore, 6.5.istore
istore_<n>, 6.5.istore_n
Java Virtual Machine stacks, 2.5.2
ldc, 6.5.ldc
ldc2_w, 6.5.ldc2_w
ldc_w, 6.5.ldc_w
limitations of the Java Virtual Machine, 4.11, 4.11
lload, 6.5.lload
lload_<n>, 6.5.lload_n
load and store instructions, 2.11.2
local variables, 2.6.1
lreturn, 6.5.lreturn
lstore, 6.5.lstore
lstore_<n>, 6.5.lstore_n
multianewarray, 6.5.multianewarray
new, 6.5.new
normal method invocation completion, 2.6.4
operand stacks, 2.6.2
pc register, 2.5.1
putfield, 6.5.putfield
putstatic, 6.5.putstatic
ret, 6.5.ret
return, 6.5.return
use of constants, local variables, and control constructs, 3.2
wide, 6.5.wide
frem, 4.10.1.9.frem, 6.5.frem
freturn, 4.10.1.9.freturn, 6.5.freturn
fstore, 4.10.1.9.fstore, 6.5.fstore
wide, 6.5.wide
fstore_<n>, 4.10.1.9.fstore_n, 6.5.fstore_n
fsub, 4.10.1.9.fsub, 6.5.fsub

G

getfield, 4.10.1.9.getfield, 6.5.getfield
getstatic, 4.10.1.9.getstatic, 6.5.getstatic
initialization, 5.5
goto, 4.10.1.9.goto, 6.5.goto
goto_w, 4.10.1.9.goto_w, 6.5.goto_w
grammar notation, 4.3.1

H

heap, 2.5.3

I

i2b, 4.10.1.9.i2b, 6.5.i2b
i2c, 4.10.1.9.i2c, 6.5.i2c
i2d, 4.10.1.9.i2d, 6.5.i2d
i2f, 4.10.1.9.i2f, 6.5.i2f
i2l, 4.10.1.9.i2l, 6.5.i2l
i2s, 4.10.1.9.i2s, 6.5.i2s
iadd, 4.10.1.9.iadd, 6.5.iadd
operand stacks, 2.6.2
iaload, 4.10.1.9.iaload, 6.5.iaload
iand, 4.10.1.9.iand, 6.5.iand
iastore, 4.10.1.9.iastore, 6.5.iastore
iconst_<i>, 6.5.iconst_i
idiv, 6.5.idiv
if<cond>, 4.10.1.9.if_cond, 6.5.if_cond
if_acmp<cond>, 4.10.1.9.if_acmp_cond, 6.5.if_acmp_cond
if_icmp<cond>, 4.10.1.9.if_icmp_cond, 6.5.if_icmp_cond
ifnonnull, 4.10.1.9.ifnonnull, 6.5.ifnonnull
ifnull, 4.10.1.9.ifnull, 6.5.ifnull
iinc, 4.10.1.9.iinc, 6.5.iinc
wide, 6.5.wide
iload, 4.10.1.9.iload, 6.5.iload
types and the Java Virtual Machine, 2.11.1
wide, 6.5.wide
iload_<n>, 4.10.1.9.iload_n, 6.5.iload_n
imul, 4.10.1.9.imul, 6.5.imul
ineg, 4.10.1.9.ineg, 6.5.ineg
initialization, 5.5
ConstantValue attribute, 4.7.2
creation and loading, 5.3
getstatic, 6.5.getstatic, 6.5.getstatic
invokestatic, 6.5.invokestatic, 6.5.invokestatic
new, 6.5.new
preparation, 5.4.2
putstatic, 6.5.putstatic, 6.5.putstatic, 6.5.putstatic
special methods, 2.9
InnerClasses attribute, 4.7.6
ClassFile structure, 4.1
instance initialization methods and newly created objects, 4.10.2.4
structural constraints, 4.9.2, 4.9.2
instanceof, 4.10.1.9.instanceof, 6.5.instanceof
checkcast, 6.5.checkcast
instruction representation, 4.10.1.3
accessors for Java Virtual Machine artifacts, 4.10.1.1
verification by type checking, 4.10.1
instruction set summary, 2.11
instructions, 6.5
static constraints, 4.9.1
integral types and values, 2.3.1
invokedynamic, 6.5.invokedynamic
primitive types and values, 2.3
interface method resolution, 5.4.3.4
invokeinterface, 6.5.invokeinterface, 6.5.invokeinterface
loading constraints, 5.3.4
method type and method handle resolution, 5.4.3.5
internal form of names, 4.2
interpretation of additional tag values, 4.7.16.1
element_value structure, 4.7.16.1, 4.7.16.1
interpretation of fieldtype characters, 4.3.2
field descriptors, 4.3.2
verification type system, 4.10.1.2
introduction, 1
invokedynamic, 4.10.1.9.invokedynamic, 6.5.invokedynamic
BootstrapMethods attribute, 4.7.21
CONSTANT_InvokeDynamic_info structure, 4.4.10
run-time constant pool, 5.1
invokeinterface, 4.10.1.9.invokeinterface, 6.5.invokeinterface
invokespecial, 4.10.1.9.invokespecial, 6.5.invokespecial
ClassFile structure, 4.1
special methods, 2.9
invokestatic, 4.10.1.9.invokestatic, 6.5.invokestatic
initialization, 5.5
invokevirtual, 4.10.1.9.invokevirtual, 6.5.invokevirtual
invokedynamic, 6.5.invokedynamic, 6.5.invokedynamic
invokespecial, 6.5.invokespecial
special methods, 2.9
invoking methods, 3.7
ior, 4.10.1.9.ior, 6.5.ior
irem, 4.10.1.9.irem, 6.5.irem
ireturn, 4.10.1.9.ireturn, 6.5.ireturn
ishl, 4.10.1.9.ishl, 6.5.ishl
ishr, 4.10.1.9.ishr, 6.5.ishr
istore, 4.10.1.9.istore, 6.5.istore
wide, 6.5.wide
istore_<n>, 4.10.1.9.istore_n, 6.5.istore_n
isub, 4.10.1.9.isub, 6.5.isub
iushr, 4.10.1.9.iushr, 6.5.iushr
ixor, 4.10.1.9.ixor, 6.5.ixor

J

Java Virtual Machine, 1.2
Java Virtual Machine exit, 5.7
Java Virtual Machine floating-point arithmetic and IEEE 754, 2.8.1
Java Virtual Machine instruction set, 6
Java Virtual Machine stacks, 2.5.2
frames, 2.6
Java Virtual Machine startup, 5.2
initialization, 5.5
jsr, 6.5.jsr
ret, 6.5.ret, 6.5.ret
returnaddress type and values, 2.3.3
jsr_w, 6.5.jsr_w
ret, 6.5.ret
returnaddress type and values, 2.3.3

L

l2d, 4.10.1.9.l2d, 6.5.l2d
l2f, 4.10.1.9.l2f, 6.5.l2f
l2i, 4.10.1.9.l2i, 6.5.l2i
ladd, 4.10.1.9.ladd, 6.5.ladd
laload, 4.10.1.9.laload, 6.5.laload
land, 4.10.1.9.land, 6.5.land
lastore, 4.10.1.9.lastore, 6.5.lastore
lcmp, 4.10.1.9.lcmp, 6.5.lcmp
lconst_<l>, 4.10.1.9.lconst_l, 6.5.lconst_l
ldc, 4.10.1.9.ldc, 6.5.ldc
call site specifier resolution, 5.4.3.6
ldc_w, 6.5.ldc_w
ldc2_w, 4.10.1.9.ldc2_w, 6.5.ldc2_w
ldc_w, 4.10.1.9.ldc_w, 6.5.ldc_w
ldiv, 4.10.1.9.ldiv, 6.5.ldiv
limitations of the Java Virtual Machine, 4.11
goto_w, 6.5.goto_w
jsr_w, 6.5.jsr_w
LineNumberTable attribute, 4.7.12
Code attribute, 4.7.3
linking, 5.4
verification of class files, 4.10
lload, 4.10.1.9.lload, 6.5.lload
wide, 6.5.wide
lload_<n>, 4.10.1.9.lload_n, 6.5.lload_n
lmul, 4.10.1.9.lmul, 6.5.lmul
lneg, 4.10.1.9.lneg, 6.5.lneg
load and store instructions, 2.11.2
loading constraints, 5.3.4
creating array classes, 5.3.3
deriving a class from a class file representation, 5.3.5
field resolution, 5.4.3.2
interface method resolution, 5.4.3.4
loading using a user-defined class loader, 5.3.2
method resolution, 5.4.3.3
preparation, 5.4.2
loading using a user-defined class loader, 5.3.2
creation and loading, 5.3
loading constraints, 5.3.4
loading using the bootstrap class loader, 5.3.1
creation and loading, 5.3
Java Virtual Machine startup, 5.2
loading constraints, 5.3.4
notation, 1.4
loading, linking, and initializing, 5
local variables, 2.6.1
Code attribute, 4.7.3
frames, 2.6
load and store instructions, 2.11.2
LocalVariableTable attribute, 4.7.13
Code attribute, 4.7.3
LocalVariableTypeTable attribute, 4.7.14
Code attribute, 4.7.3
lookupswitch, 4.10.1.9.lookupswitch, 6.5.lookupswitch
instruction set summary, 2.11
lor, 4.10.1.9.lor, 6.5.lor
lrem, 4.10.1.9.lrem, 6.5.lrem
lreturn, 4.10.1.9.lreturn, 6.5.lreturn
lshl, 4.10.1.9.lshl, 6.5.lshl
lshr, 4.10.1.9.lshr, 6.5.lshr
lstore, 4.10.1.9.lstore, 6.5.lstore
wide, 6.5.wide
lstore_<n>, 4.10.1.9.lstore_n, 6.5.lstore_n
lsub, 4.10.1.9.lsub, 6.5.lsub
lushr, 4.10.1.9.lushr, 6.5.lushr
lxor, 4.10.1.9.lxor, 6.5.lxor

M

method access and property flags, 4.6
methods, 4.6, 4.6, 4.6, 4.6, 4.6
method area, 2.5.4
creation and loading, 5.3
run-time constant pool, 2.5.5
method descriptors, 4.3.3
areturn, 6.5.areturn
CONSTANT_Fieldref_info, CONSTANT_Methodref_info, and CONSTANT_InterfaceMethodref_info structures, 4.4.2
CONSTANT_InvokeDynamic_info structure, 4.4.10
CONSTANT_MethodType_info structure, 4.4.9
CONSTANT_NameAndType_info structure, 4.4.6
element_value structure, 4.7.16.1
invokeinterface, 6.5.invokeinterface
invokespecial, 6.5.invokespecial
invokestatic, 6.5.invokestatic
invokevirtual, 6.5.invokevirtual
invoking methods, 3.7
limitations of the Java Virtual Machine, 4.11
method type and method handle resolution, 5.4.3.5, 5.4.3.5
methods, 4.6, 4.6
RuntimeInvisibleParameterAnnotations attribute, 4.7.19
RuntimeVisibleParameterAnnotations attribute, 4.7.18
special methods, 2.9
structural constraints, 4.9.2, 4.9.2
method descriptors for method handles, 5.4.3.5
method type and method handle resolution, 5.4.3.5
method invocation and return instructions, 2.11.8
normal method invocation completion, 2.6.4
synchronization, 2.11.10
method overriding, 5.4.5
invokevirtual, 6.5.invokevirtual
preparation, 5.4.2
verification of class files, 4.10
method resolution, 5.4.3.3
invokespecial, 6.5.invokespecial, 6.5.invokespecial
invokestatic, 6.5.invokestatic, 6.5.invokestatic
invokevirtual, 6.5.invokevirtual, 6.5.invokevirtual
invoking methods, 3.7
loading constraints, 5.3.4
method type and method handle resolution, 5.4.3.5
method type and method handle resolution, 5.4.3.5
call site specifier resolution, 5.4.3.6, 5.4.3.6, 5.4.3.6
CONSTANT_MethodHandle_info structure, 4.4.8
initialization, 5.5
invokevirtual, 6.5.invokevirtual, 6.5.invokevirtual, 6.5.invokevirtual
ldc, 6.5.ldc, 6.5.ldc
ldc_w, 6.5.ldc_w, 6.5.ldc_w
special methods, 2.9
methods, 4.6
AnnotationDefault attribute, 4.7.20
attributes, 4.7
ClassFile structure, 4.1
Code attribute, 4.7.3
constraints on Java Virtual Machine code, 4.9
Deprecated attribute, 4.7.15
Exceptions attribute, 4.7.5
floating-point modes, 2.8.2
getfield, 6.5.getfield
invokespecial, 6.5.invokespecial
invokevirtual, 6.5.invokevirtual
method type and method handle resolution, 5.4.3.5
putfield, 6.5.putfield
RuntimeInvisibleAnnotations attribute, 4.7.17
RuntimeInvisibleParameterAnnotations attribute, 4.7.19
RuntimeVisibleAnnotations attribute, 4.7.16
RuntimeVisibleParameterAnnotations attribute, 4.7.18
Signature attribute, 4.7.9
special methods, 2.9
synchronization, 2.11.10
Synthetic attribute, 4.7.8
mnemonic,
monitorenter, 4.10.1.9.monitorenter, 6.5.monitorenter
invokeinterface, 6.5.invokeinterface
invokespecial, 6.5.invokespecial
invokestatic, 6.5.invokestatic
invokevirtual, 6.5.invokevirtual
monitorexit, 6.5.monitorexit
monitorexit, 4.10.1.9.monitorexit, 6.5.monitorexit
areturn, 6.5.areturn
athrow, 6.5.athrow
dreturn, 6.5.dreturn
freturn, 6.5.freturn
invokeinterface, 6.5.invokeinterface
invokespecial, 6.5.invokespecial
invokestatic, 6.5.invokestatic
invokevirtual, 6.5.invokevirtual
ireturn, 6.5.ireturn
lreturn, 6.5.lreturn
monitorenter, 6.5.monitorenter
return, 6.5.return
more control examples, 3.5
dcmp<op>, 6.5.dcmp_op
fcmp<op>, 6.5.fcmp_op
multianewarray, 4.10.1.9.multianewarray, 6.5.multianewarray

N

native method stacks, 2.5.6
native methods
invokeinterface, 6.5.invokeinterface
invokespecial, 6.5.invokespecial
invokestatic, 6.5.invokestatic
invokevirtual, 6.5.invokevirtual
nested class access and property flags, 4.7.6
InnerClasses attribute, 4.7.6, 4.7.6
new, 4.10.1.9.new, 6.5.new
initialization, 5.5
StackMapTable attribute, 4.7.4
newarray, 4.10.1.9.newarray, 6.5.newarray
baload, 6.5.baload
bastore, 6.5.bastore
boolean type, 2.3.4
multianewarray, 6.5.multianewarray
nop, 4.10.1.9.nop, 6.5.nop
normal method invocation completion, 2.6.4
synchronization, 3.14
notation, 1.4

O

Object creation and manipulation, 2.11.5
load and store instructions, 2.11.2
opcode mnemonics by opcode, 7
operand stack, 6.5.dup2, 6.5.dup2_x1, 6.5.dup2_x2, 6.5.dup_x2, 6.5.pop2
operand stack management instructions, 2.11.6
operand stacks, 2.6.2
Code attribute, 4.7.3
format of instruction descriptions, 6.4
frames, 2.6
load and store instructions, 2.11.2
structural constraints, 4.9.2, 4.9.2
operations on the operand stack, 3.11
overriding
invokevirtual, 6.5.invokevirtual
preparation, 5.4.2
verification of class files, 4.10

P

pc register, 2.5.1
pop, 4.10.1.9.pop, 6.5.pop
pop2, 4.10.1.9.pop2, 6.5.pop2
predefined class file attributes, 4.7
attributes, 4.7
preparation, 5.4.2
loading constraints, 5.3.4, 5.3.4
primitive types and values, 2.3
multianewarray, 6.5.multianewarray
new, 6.5.new
newarray, 6.5.newarray
preparation, 5.4.2
process of verification by type inference, 4.10.2.1
public design, private implementation, 2.13
reserved opcodes, 6.2
putfield, 4.10.1.9.putfield, 6.5.putfield
putstatic, 4.10.1.9.putstatic, 6.5.putstatic
initialization, 5.5

R

receiving arguments, 3.6
invoking methods, 3.7
reference types and values, 2.4
anewarray, 6.5.anewarray
control transfer instructions, 2.11.7
field resolution, 5.4.3.2
interface method resolution, 5.4.3.4, 5.4.3.4
method resolution, 5.4.3.3, 5.4.3.3
multianewarray, 6.5.multianewarray
new, 6.5.new
newarray, 6.5.newarray
preparation, 5.4.2, 5.4.2, 5.4.2, 5.4.2, 5.4.2
representation of objects, 2.7
reserved opcodes, 6.2
static constraints, 4.9.1
resolution, 5.4.3
creation and loading, 5.3
loading constraints, 5.3.4
ret, 6.5.ret
jsr, 6.5.jsr
jsr_w, 6.5.jsr_w
returnaddress type and values, 2.3.3
wide, 6.5.wide
return, 4.10.1.9.return, 6.5.return
ret, 6.5.ret
returnaddress type and values, 2.3.3
primitive types and values, 2.3
run-time constant pool, 2.5.5, 5.1
dynamic linking, 2.6.3
frames, 2.6
getfield, 6.5.getfield
getstatic, 6.5.getstatic
invokedynamic, 6.5.invokedynamic, 6.5.invokedynamic, 6.5.invokedynamic
invokeinterface, 6.5.invokeinterface
invokespecial, 6.5.invokespecial
invokestatic, 6.5.invokestatic
invokevirtual, 6.5.invokevirtual
ldc, 6.5.ldc, 6.5.ldc, 6.5.ldc, 6.5.ldc
ldc2_w, 6.5.ldc2_w
ldc_w, 6.5.ldc_w, 6.5.ldc_w, 6.5.ldc_w
method type and method handle resolution, 5.4.3.5
putfield, 6.5.putfield
putstatic, 6.5.putstatic
resolution, 5.4.3
run-time constant pool, 5.1
run-time data areas, 2.5
RuntimeInvisibleAnnotations attribute, 4.7.17
annotations, 3.15, 3.15
ClassFile structure, 4.1, 4.1
fields, 4.5, 4.5
methods, 4.6, 4.6
RuntimeInvisibleParameterAnnotations attribute, 4.7.19
methods, 4.6, 4.6
RuntimeVisibleAnnotations attribute, 4.7.16
annotations, 3.15, 3.15
ClassFile structure, 4.1, 4.1
fields, 4.5, 4.5
methods, 4.6, 4.6
RuntimeVisibleParameterAnnotations attribute, 4.7.18
methods, 4.6, 4.6

S

saload, 4.10.1.9.saload, 6.5.saload
sastore, 4.10.1.9.sastore, 6.5.sastore
Signature attribute, 4.7.9
ClassFile structure, 4.1, 4.1
fields, 4.5, 4.5
methods, 4.6, 4.6
signatures, 4.3.4
LocalVariableTypeTable attribute, 4.7.14
Signature attribute, 4.7.9
sipush, 4.10.1.9.sipush, 6.5.sipush
SourceDebugExtension attribute, 4.7.11
ClassFile structure, 4.1
SourceFile attribute, 4.7.10
ClassFile structure, 4.1
special methods, 2.9
ClassFile structure, 4.1
Code attribute, 4.7.3
CONSTANT_Fieldref_info, CONSTANT_Methodref_info, and CONSTANT_InterfaceMethodref_info structures, 4.4.2
CONSTANT_MethodHandle_info structure, 4.4.8
CONSTANT_NameAndType_info structure, 4.4.6
ConstantValue attribute, 4.7.2
constraints on Java Virtual Machine code, 4.9
initialization, 5.5
instance initialization methods and newly created objects, 4.10.2.4
invokeinterface, 6.5.invokeinterface
invokespecial, 6.5.invokespecial, 6.5.invokespecial
invokestatic, 6.5.invokestatic
invokevirtual, 6.5.invokevirtual, 6.5.invokevirtual, 6.5.invokevirtual
method area, 2.5.4
method invocation and return instructions, 2.11.8
method resolution, 5.4.3.3
methods, 4.6, 4.6, 4.6, 4.6
new, 6.5.new
putfield, 6.5.putfield
putstatic, 6.5.putstatic
static constraints, 4.9.1
structural constraints, 4.9.2, 4.9.2, 4.9.2
Synthetic attribute, 4.7.8
unqualified names, 4.2.2
working with class instances, 3.8
stack map frame representation, 4.10.1.4
accessors for Java Virtual Machine artifacts, 4.10.1.1
type checking load and store instructions, 4.10.1.7, 4.10.1.7
verification by type checking, 4.10.1
StackMapTable attribute, 4.7.4
Code attribute, 4.7.3, 4.7.3
stack map frame representation, 4.10.1.4
verification by type checking, 4.10.1
startup
initialization, 5.5
static constraints, 4.9.1
limitations of the Java Virtual Machine, 4.11
structural constraints, 4.9.2
limitations of the Java Virtual Machine, 4.11
structure of the Java Virtual Machine, 2
summary of chapters, 1.3
swap, 4.10.1.9.swap, 6.5.swap
operand stacks, 2.6.2
synchronization, 2.11.10, 3.14
areturn, 6.5.areturn, 6.5.areturn
athrow, 6.5.athrow, 6.5.athrow
dreturn, 6.5.dreturn, 6.5.dreturn
freturn, 6.5.freturn, 6.5.freturn
ireturn, 6.5.ireturn, 6.5.ireturn
lreturn, 6.5.lreturn, 6.5.lreturn
monitorenter, 6.5.monitorenter
monitorexit, 6.5.monitorexit, 6.5.monitorexit, 6.5.monitorexit
return, 6.5.return, 6.5.return
synchronization, 2.11.10, 3.14
Synthetic attribute, 4.7.8
ClassFile structure, 4.1
fields, 4.5
methods, 4.6, 4.6

T

tableswitch, 4.10.1.9.tableswitch, 6.5.tableswitch
instruction set summary, 2.11
throwing and handling Exceptions, 3.12
Exceptions, 2.10
more control examples, 3.5
throwing Exceptions, 2.11.9
type checking abstract and native methods, 4.10.1.5
verification by type checking, 4.10.1
type checking for protected members, 4.10.1.8
getfield, 4.10.1.9.getfield
invokevirtual, 4.10.1.9.invokevirtual
verification by type checking, 4.10.1
type checking instructions, 4.10.1.9
stack map frame representation, 4.10.1.4
verification by type checking, 4.10.1
type checking load and store instructions, 4.10.1.7
stack map frame representation, 4.10.1.4
verification by type checking, 4.10.1
type checking methods with Code, 4.10.1.6
stack map frame representation, 4.10.1.4
StackMapTable attribute, 4.7.4
verification by type checking, 4.10.1
type conversion instructions, 2.11.4
type support in the Java Virtual Machine instruction set, 2.11.1
types and the Java Virtual Machine, 2.11.1, 2.11.1
use of constants, local variables, and control constructs, 3.2
types and the Java Virtual Machine, 2.11.1
arithmetic instructions, 2.11.3
control transfer instructions, 2.11.7
data types, 2.2
dup, 6.5.dup
dup_x1, 6.5.dup_x1
load and store instructions, 2.11.2
operand stack, 6.5.dup2, 6.5.dup2, 6.5.dup2_x1, 6.5.dup2_x1, 6.5.dup2_x2, 6.5.dup2_x2, 6.5.dup2_x2, 6.5.dup2_x2, 6.5.dup_x2, 6.5.dup_x2, 6.5.pop2, 6.5.pop2
pop, 6.5.pop
stack map frame representation, 4.10.1.4
structural constraints, 4.9.2
swap, 6.5.swap
type conversion instructions, 2.11.4

U

unqualified names, 4.2.2
binary class and interface names, 4.2.1
CONSTANT_NameAndType_info structure, 4.4.6
fields, 4.5
LocalVariableTable attribute, 4.7.13
LocalVariableTypeTable attribute, 4.7.14
methods, 4.6
signatures, 4.3.4
use of constants, local variables, and control constructs, 3.2
accessing the run-time constant pool, 3.4
more control examples, 3.5
user-defined class loaders
creation and loading, 5.3
loading constraints, 5.3.4

V

value set conversion, 2.8.3
d2f, 6.5.d2f
d2i, 6.5.d2i
d2l, 6.5.d2l
dadd, 6.5.dadd
dastore, 6.5.dastore
dcmp<op>, 6.5.dcmp_op
ddiv, 6.5.ddiv
dmul, 6.5.dmul
dneg, 6.5.dneg
drem, 6.5.drem
dreturn, 6.5.dreturn
dstore, 6.5.dstore
dstore_<n>, 6.5.dstore_n
dsub, 6.5.dsub
f2d, 6.5.f2d
f2i, 6.5.f2i
f2l, 6.5.f2l
fadd, 6.5.fadd
fastore, 6.5.fastore
fcmp<op>, 6.5.fcmp_op
fdiv, 6.5.fdiv
floating-point modes, 2.8.2
fmul, 6.5.fmul
fneg, 6.5.fneg
frem, 6.5.frem
freturn, 6.5.freturn
fstore, 6.5.fstore
fstore_<n>, 6.5.fstore_n
fsub, 6.5.fsub
invokeinterface, 6.5.invokeinterface, 6.5.invokeinterface
invokespecial, 6.5.invokespecial, 6.5.invokespecial
invokestatic, 6.5.invokestatic, 6.5.invokestatic
invokevirtual, 6.5.invokevirtual, 6.5.invokevirtual
putfield, 6.5.putfield
putstatic, 6.5.putstatic
values of types long and double, 4.10.2.3
verification, 5.4.1
access control, 5.4.4
creation and loading, 5.3
verification by type checking, 4.10.1
StackMapTable attribute, 4.7.4
verification by type inference, 4.10.2
verification by type checking, 4.10.1
verification of class files, 4.10
assumptions: the meaning of "must", 6.1
operand stacks, 2.6.2
verification, 5.4.1
verification type system, 4.10.1.2
accessors for Java Virtual Machine artifacts, 4.10.1.1
stack map frame representation, 4.10.1.4
StackMapTable attribute, 4.7.4
verification by type checking, 4.10.1
Virtual Machine errors, 6.3
Exceptions, 2.10

W

wide, 4.10.1.9.wide, 6.5.wide
aload, 6.5.aload
astore, 6.5.astore
dload, 6.5.dload
dstore, 6.5.dstore
fload, 6.5.fload
fstore, 6.5.fstore
iinc, 6.5.iinc
iload, 6.5.iload
istore, 6.5.istore
lload, 6.5.lload
lstore, 6.5.lstore
ret, 6.5.ret
working with class instances, 3.8
accessing the run-time constant pool, 3.4
invoking methods, 3.7