final class java.lang.invoke.ProxyClassesDumper
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: java.lang.invoke.ProxyClassesDumper
super_class: java.lang.Object
{
private static final char[] HEX;
descriptor: [C
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final char[] BAD_CHARS;
descriptor: [C
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.lang.String[] REPLACEMENT;
descriptor: [Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final java.nio.file.Path dumpDir;
descriptor: Ljava/nio/file/Path;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: bipush 16
newarray 5
dup
iconst_0
1: bipush 48
castore
dup
iconst_1
bipush 49
castore
dup
iconst_2
bipush 50
castore
dup
iconst_3
bipush 51
castore
dup
iconst_4
bipush 52
castore
dup
iconst_5
bipush 53
castore
dup
bipush 6
bipush 54
castore
dup
bipush 7
bipush 55
castore
dup
bipush 8
2: bipush 56
castore
dup
bipush 9
bipush 57
castore
dup
bipush 10
bipush 65
castore
dup
bipush 11
bipush 66
castore
dup
bipush 12
bipush 67
castore
dup
bipush 13
bipush 68
castore
dup
bipush 14
bipush 69
castore
dup
bipush 15
bipush 70
castore
3: putstatic java.lang.invoke.ProxyClassesDumper.HEX:[C
4: bipush 8
newarray 5
dup
iconst_0
5: bipush 92
castore
dup
iconst_1
bipush 58
castore
dup
iconst_2
bipush 42
castore
dup
iconst_3
bipush 63
castore
dup
iconst_4
bipush 34
castore
dup
iconst_5
bipush 60
castore
dup
bipush 6
bipush 62
castore
dup
bipush 7
bipush 124
castore
6: putstatic java.lang.invoke.ProxyClassesDumper.BAD_CHARS:[C
7: bipush 8
anewarray java.lang.String
dup
iconst_0
8: ldc "%5C"
aastore
dup
iconst_1
ldc "%3A"
aastore
dup
iconst_2
ldc "%2A"
aastore
dup
iconst_3
ldc "%3F"
aastore
dup
iconst_4
ldc "%22"
aastore
dup
iconst_5
ldc "%3C"
aastore
dup
bipush 6
ldc "%3E"
aastore
dup
bipush 7
ldc "%7C"
aastore
9: putstatic java.lang.invoke.ProxyClassesDumper.REPLACEMENT:[Ljava/lang/String;
10: return
LocalVariableTable:
Start End Slot Name Signature
public static java.lang.invoke.ProxyClassesDumper getInstance(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/invoke/ProxyClassesDumper;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=9, locals=2, args_size=1
start local 0 0: aload 0
ifnonnull 2
1: aconst_null
areturn
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.lang.String.trim:()Ljava/lang/String;
astore 0
3: aload 0
invokevirtual java.lang.String.isEmpty:()Z
ifeq 4
ldc "."
goto 5
StackMap locals:
StackMap stack:
4: aload 0
StackMap locals:
StackMap stack: java.lang.String
5: iconst_0
anewarray java.lang.String
invokestatic java.nio.file.Path.of:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
astore 1
start local 1 6: new java.lang.invoke.ProxyClassesDumper$1
dup
aload 1
invokespecial java.lang.invoke.ProxyClassesDumper$1.<init>:(Ljava/nio/file/Path;)V
7: aconst_null
iconst_1
anewarray java.security.Permission
dup
iconst_0
new java.io.FilePermission
dup
ldc "<<ALL FILES>>"
ldc "read, write"
invokespecial java.io.FilePermission.<init>:(Ljava/lang/String;Ljava/lang/String;)V
aastore
8: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;[Ljava/security/Permission;)Ljava/lang/Object;
pop
9: new java.lang.invoke.ProxyClassesDumper
dup
aload 1
invokespecial java.lang.invoke.ProxyClassesDumper.<init>:(Ljava/nio/file/Path;)V
10: areturn
end local 1 11: StackMap locals:
StackMap stack: java.nio.file.InvalidPathException
astore 1
start local 1 12: ldc Ljava/lang/invoke/ProxyClassesDumper;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokestatic sun.util.logging.PlatformLogger.getLogger:(Ljava/lang/String;)Lsun/util/logging/PlatformLogger;
13: new java.lang.StringBuilder
dup
ldc "Path "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " is not valid - dumping disabled"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 1
invokevirtual sun.util.logging.PlatformLogger.warning:(Ljava/lang/String;Ljava/lang/Throwable;)V
end local 1 14: goto 18
15: StackMap locals:
StackMap stack: java.lang.IllegalArgumentException
astore 1
start local 1 16: ldc Ljava/lang/invoke/ProxyClassesDumper;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokestatic sun.util.logging.PlatformLogger.getLogger:(Ljava/lang/String;)Lsun/util/logging/PlatformLogger;
17: new java.lang.StringBuilder
dup
aload 1
invokevirtual java.lang.IllegalArgumentException.getMessage:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " - dumping disabled"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual sun.util.logging.PlatformLogger.warning:(Ljava/lang/String;)V
end local 1 18: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 path Ljava/lang/String;
6 11 1 dir Ljava/nio/file/Path;
12 14 1 ex Ljava/nio/file/InvalidPathException;
16 18 1 iae Ljava/lang/IllegalArgumentException;
Exception table:
from to target type
2 10 11 Class java.nio.file.InvalidPathException
2 10 15 Class java.lang.IllegalArgumentException
MethodParameters:
Name Flags
path
private void <init>(java.nio.file.Path);
descriptor: (Ljava/nio/file/Path;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.nio.file.Path
putfield java.lang.invoke.ProxyClassesDumper.dumpDir:Ljava/nio/file/Path;
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/lang/invoke/ProxyClassesDumper;
0 3 1 path Ljava/nio/file/Path;
MethodParameters:
Name Flags
path
private static void validateDumpDir(java.nio.file.Path);
descriptor: (Ljava/nio/file/Path;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=1, args_size=1
start local 0 0: aload 0
iconst_0
anewarray java.nio.file.LinkOption
invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
ifne 2
1: new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "Directory "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " does not exist"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
iconst_0
anewarray java.nio.file.LinkOption
invokestatic java.nio.file.Files.isDirectory:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
ifne 4
3: new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "Path "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " is not a directory"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
invokestatic java.nio.file.Files.isWritable:(Ljava/nio/file/Path;)Z
ifne 6
5: new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "Directory "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " is not writable"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 path Ljava/nio/file/Path;
MethodParameters:
Name Flags
path
public static java.lang.String encodeForFilename(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/String;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=6, args_size=1
start local 0 0: aload 0
invokevirtual java.lang.String.length:()I
istore 1
start local 1 1: new java.lang.StringBuilder
dup
iload 1
invokespecial java.lang.StringBuilder.<init>:(I)V
astore 2
start local 2 2: iconst_0
istore 3
start local 3 3: goto 20
4: StackMap locals: int java.lang.StringBuilder int
StackMap stack:
aload 0
iload 3
invokevirtual java.lang.String.charAt:(I)C
istore 4
start local 4 5: iload 4
bipush 31
if_icmpgt 10
6: aload 2
bipush 37
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
7: aload 2
getstatic java.lang.invoke.ProxyClassesDumper.HEX:[C
iload 4
iconst_4
ishr
bipush 15
iand
caload
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
8: aload 2
getstatic java.lang.invoke.ProxyClassesDumper.HEX:[C
iload 4
bipush 15
iand
caload
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
9: goto 19
10: StackMap locals: int
StackMap stack:
iconst_0
istore 5
start local 5 11: goto 16
12: StackMap locals: int
StackMap stack:
iload 4
getstatic java.lang.invoke.ProxyClassesDumper.BAD_CHARS:[C
iload 5
caload
if_icmpne 15
13: aload 2
getstatic java.lang.invoke.ProxyClassesDumper.REPLACEMENT:[Ljava/lang/String;
iload 5
aaload
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
14: goto 17
15: StackMap locals:
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
16: iload 5
getstatic java.lang.invoke.ProxyClassesDumper.BAD_CHARS:[C
arraylength
if_icmplt 12
17: StackMap locals:
StackMap stack:
iload 5
getstatic java.lang.invoke.ProxyClassesDumper.BAD_CHARS:[C
arraylength
if_icmplt 19
18: aload 2
iload 4
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
end local 5 end local 4 19: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
20: iload 3
iload 1
if_icmplt 4
end local 3 21: aload 2
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 className Ljava/lang/String;
1 22 1 len I
2 22 2 sb Ljava/lang/StringBuilder;
3 21 3 i I
5 19 4 c C
11 19 5 j I
MethodParameters:
Name Flags
className
public void dumpClass(java.lang.String, byte[]);
descriptor: (Ljava/lang/String;[B)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield java.lang.invoke.ProxyClassesDumper.dumpDir:Ljava/nio/file/Path;
new java.lang.StringBuilder
dup
aload 1
invokestatic java.lang.invoke.ProxyClassesDumper.encodeForFilename:(Ljava/lang/String;)Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ".class"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
astore 3
start local 3 1: goto 6
end local 3 StackMap locals:
StackMap stack: java.nio.file.InvalidPathException
2: pop
3: ldc Ljava/lang/invoke/ProxyClassesDumper;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokestatic sun.util.logging.PlatformLogger.getLogger:(Ljava/lang/String;)Lsun/util/logging/PlatformLogger;
4: new java.lang.StringBuilder
dup
ldc "Invalid path for class "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual sun.util.logging.PlatformLogger.warning:(Ljava/lang/String;)V
5: return
start local 3 6: StackMap locals: java.nio.file.Path
StackMap stack:
aload 3
invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
astore 4
start local 4 7: aload 4
iconst_0
anewarray java.nio.file.attribute.FileAttribute
invokestatic java.nio.file.Files.createDirectories:(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;
pop
8: aload 3
aload 2
iconst_0
anewarray java.nio.file.OpenOption
invokestatic java.nio.file.Files.write:(Ljava/nio/file/Path;[B[Ljava/nio/file/OpenOption;)Ljava/nio/file/Path;
pop
end local 4 9: goto 13
StackMap locals:
StackMap stack: java.lang.Exception
10: pop
11: ldc Ljava/lang/invoke/ProxyClassesDumper;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokestatic sun.util.logging.PlatformLogger.getLogger:(Ljava/lang/String;)Lsun/util/logging/PlatformLogger;
12: new java.lang.StringBuilder
dup
ldc "Exception writing to path at "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual sun.util.logging.PlatformLogger.warning:(Ljava/lang/String;)V
13: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Ljava/lang/invoke/ProxyClassesDumper;
0 14 1 className Ljava/lang/String;
0 14 2 classBytes [B
1 2 3 file Ljava/nio/file/Path;
6 14 3 file Ljava/nio/file/Path;
7 9 4 dir Ljava/nio/file/Path;
Exception table:
from to target type
0 1 2 Class java.nio.file.InvalidPathException
6 9 10 Class java.lang.Exception
MethodParameters:
Name Flags
className
classBytes final
}
SourceFile: "ProxyClassesDumper.java"
NestMembers:
java.lang.invoke.ProxyClassesDumper$1
InnerClasses:
java.lang.invoke.ProxyClassesDumper$1