class java.lang.invoke.MethodHandles$Lookup$ClassFile
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: java.lang.invoke.MethodHandles$Lookup$ClassFile
super_class: java.lang.Object
{
final java.lang.String name;
descriptor: Ljava/lang/String;
flags: (0x0010) ACC_FINAL
final int accessFlags;
descriptor: I
flags: (0x0010) ACC_FINAL
final byte[] bytes;
descriptor: [B
flags: (0x0010) ACC_FINAL
void <init>(java.lang.String, int, byte[]);
descriptor: (Ljava/lang/String;I[B)V
flags: (0x0000)
Code:
stack=2, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield java.lang.invoke.MethodHandles$Lookup$ClassFile.name:Ljava/lang/String;
2: aload 0
iload 2
putfield java.lang.invoke.MethodHandles$Lookup$ClassFile.accessFlags:I
3: aload 0
aload 3
putfield java.lang.invoke.MethodHandles$Lookup$ClassFile.bytes:[B
4: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/lang/invoke/MethodHandles$Lookup$ClassFile;
0 5 1 name Ljava/lang/String;
0 5 2 accessFlags I
0 5 3 bytes [B
MethodParameters:
Name Flags
name
accessFlags
bytes
static java.lang.invoke.MethodHandles$Lookup$ClassFile newInstanceNoCheck(java.lang.String, byte[]);
descriptor: (Ljava/lang/String;[B)Ljava/lang/invoke/MethodHandles$Lookup$ClassFile;
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: new java.lang.invoke.MethodHandles$Lookup$ClassFile
dup
aload 0
iconst_0
aload 1
invokespecial java.lang.invoke.MethodHandles$Lookup$ClassFile.<init>:(Ljava/lang/String;I[B)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 name Ljava/lang/String;
0 1 1 bytes [B
MethodParameters:
Name Flags
name
bytes
static java.lang.invoke.MethodHandles$Lookup$ClassFile newInstance(byte[], java.lang.String);
descriptor: ([BLjava/lang/String;)Ljava/lang/invoke/MethodHandles$Lookup$ClassFile;
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=11, args_size=2
start local 0 start local 1 0: aload 0
iconst_0
invokestatic java.lang.invoke.MethodHandles$Lookup$ClassFile.readInt:([BI)I
istore 2
start local 2 1: iload 2
ldc -889275714
if_icmpeq 3
2: new java.lang.ClassFormatError
dup
new java.lang.StringBuilder
dup
ldc "Incompatible magic value: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 2
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.ClassFormatError.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals: int
StackMap stack:
aload 0
iconst_4
invokestatic java.lang.invoke.MethodHandles$Lookup$ClassFile.readUnsignedShort:([BI)I
istore 3
start local 3 4: aload 0
bipush 6
invokestatic java.lang.invoke.MethodHandles$Lookup$ClassFile.readUnsignedShort:([BI)I
istore 4
start local 4 5: iload 4
iload 3
invokestatic jdk.internal.misc.VM.isSupportedClassFileVersion:(II)Z
ifne 7
6: new java.lang.UnsupportedClassVersionError
dup
new java.lang.StringBuilder
dup
ldc "Unsupported class file version "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 4
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc "."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 3
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.UnsupportedClassVersionError.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals: int int
StackMap stack:
new jdk.internal.org.objectweb.asm.ClassReader
dup
aload 0
invokespecial jdk.internal.org.objectweb.asm.ClassReader.<init>:([B)V
astore 7
start local 7 8: aload 7
aload 7
getfield jdk.internal.org.objectweb.asm.ClassReader.header:I
iconst_2
iadd
invokevirtual jdk.internal.org.objectweb.asm.ClassReader.readUnsignedShort:(I)I
istore 8
start local 8 9: aload 7
iload 8
aload 7
invokevirtual jdk.internal.org.objectweb.asm.ClassReader.getMaxStringLength:()I
newarray 5
invokevirtual jdk.internal.org.objectweb.asm.ClassReader.readConst:(I[C)Ljava/lang/Object;
astore 9
start local 9 10: aload 9
instanceof jdk.internal.org.objectweb.asm.Type
ifne 12
11: new java.lang.ClassFormatError
dup
new java.lang.StringBuilder
dup
ldc "this_class item: #"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 8
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " not a CONSTANT_Class_info"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.ClassFormatError.<init>:(Ljava/lang/String;)V
athrow
12: StackMap locals: byte[] java.lang.String int int int top top jdk.internal.org.objectweb.asm.ClassReader int java.lang.Object
StackMap stack:
aload 9
checkcast jdk.internal.org.objectweb.asm.Type
astore 10
start local 10 13: aload 10
invokevirtual jdk.internal.org.objectweb.asm.Type.getDescriptor:()Ljava/lang/String;
ldc "L"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifne 15
14: new java.lang.ClassFormatError
dup
new java.lang.StringBuilder
dup
ldc "this_class item: #"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 8
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " not a CONSTANT_Class_info"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.ClassFormatError.<init>:(Ljava/lang/String;)V
athrow
15: StackMap locals: jdk.internal.org.objectweb.asm.Type
StackMap stack:
aload 10
invokevirtual jdk.internal.org.objectweb.asm.Type.getClassName:()Ljava/lang/String;
astore 5
start local 5 16: aload 7
aload 7
getfield jdk.internal.org.objectweb.asm.ClassReader.header:I
invokevirtual jdk.internal.org.objectweb.asm.ClassReader.readUnsignedShort:(I)I
istore 6
end local 10 end local 9 end local 8 end local 7 start local 6 17: goto 22
end local 6 end local 5 StackMap locals: byte[] java.lang.String int int int
StackMap stack: java.lang.RuntimeException
18: astore 7
start local 7 19: new java.lang.ClassFormatError
dup
invokespecial java.lang.ClassFormatError.<init>:()V
astore 8
start local 8 20: aload 8
aload 7
invokevirtual java.lang.ClassFormatError.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
pop
21: aload 8
athrow
end local 8 end local 7 start local 5 start local 6 22: StackMap locals: java.lang.String int
StackMap stack:
iload 6
ldc 32768
iand
ifeq 24
23: ldc "Not a class or interface: ACC_MODULE flag is set"
invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
24: StackMap locals:
StackMap stack:
aload 5
bipush 46
invokevirtual java.lang.String.lastIndexOf:(I)I
istore 7
start local 7 25: iload 7
iconst_m1
if_icmpne 26
ldc ""
goto 27
StackMap locals: int
StackMap stack:
26: aload 5
iconst_0
iload 7
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
StackMap locals:
StackMap stack: java.lang.String
27: astore 8
start local 8 28: aload 8
aload 1
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 30
29: new java.lang.StringBuilder
dup
aload 5
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " not in same package as lookup class"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
30: StackMap locals: java.lang.String
StackMap stack:
new java.lang.invoke.MethodHandles$Lookup$ClassFile
dup
aload 5
iload 6
aload 0
invokespecial java.lang.invoke.MethodHandles$Lookup$ClassFile.<init>:(Ljava/lang/String;I[B)V
areturn
end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 31 0 bytes [B
0 31 1 pkgName Ljava/lang/String;
1 31 2 magic I
4 31 3 minor I
5 31 4 major I
16 18 5 name Ljava/lang/String;
22 31 5 name Ljava/lang/String;
17 18 6 accessFlags I
22 31 6 accessFlags I
8 17 7 reader Ljdk/internal/org/objectweb/asm/ClassReader;
9 17 8 thisClass I
10 17 9 constant Ljava/lang/Object;
13 17 10 type Ljdk/internal/org/objectweb/asm/Type;
19 22 7 e Ljava/lang/RuntimeException;
20 22 8 cfe Ljava/lang/ClassFormatError;
25 31 7 index I
28 31 8 pn Ljava/lang/String;
Exception table:
from to target type
7 17 18 Class java.lang.RuntimeException
MethodParameters:
Name Flags
bytes
pkgName
private static int readInt(byte[], int);
descriptor: ([BI)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: iload 1
iconst_4
iadd
aload 0
arraylength
if_icmple 2
1: new java.lang.ClassFormatError
dup
ldc "Invalid ClassFile structure"
invokespecial java.lang.ClassFormatError.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
iload 1
baload
sipush 255
iand
bipush 24
ishl
3: aload 0
iload 1
iconst_1
iadd
baload
sipush 255
iand
bipush 16
ishl
4: ior
5: aload 0
iload 1
iconst_2
iadd
baload
sipush 255
iand
bipush 8
ishl
6: ior
7: aload 0
iload 1
iconst_3
iadd
baload
sipush 255
iand
8: ior
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 bytes [B
0 9 1 offset I
MethodParameters:
Name Flags
bytes
offset
private static int readUnsignedShort(byte[], int);
descriptor: ([BI)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: iload 1
iconst_2
iadd
aload 0
arraylength
if_icmple 2
1: new java.lang.ClassFormatError
dup
ldc "Invalid ClassFile structure"
invokespecial java.lang.ClassFormatError.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
iload 1
baload
sipush 255
iand
bipush 8
ishl
aload 0
iload 1
iconst_1
iadd
baload
sipush 255
iand
ior
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 bytes [B
0 3 1 offset I
MethodParameters:
Name Flags
bytes
offset
}
SourceFile: "MethodHandles.java"
NestHost: java.lang.invoke.MethodHandles
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
ClassFile = java.lang.invoke.MethodHandles$Lookup$ClassFile of java.lang.invoke.MethodHandles$Lookup