class java.util.zip.ZipFile$CleanableResource implements java.lang.Runnable
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: java.util.zip.ZipFile$CleanableResource
super_class: java.lang.Object
{
final java.util.Set<java.io.InputStream> istreams;
descriptor: Ljava/util/Set;
flags: (0x0010) ACC_FINAL
Signature: Ljava/util/Set<Ljava/io/InputStream;>;
java.util.Deque<java.util.zip.Inflater> inflaterCache;
descriptor: Ljava/util/Deque;
flags: (0x0000)
Signature: Ljava/util/Deque<Ljava/util/zip/Inflater;>;
final java.lang.ref.Cleaner$Cleanable cleanable;
descriptor: Ljava/lang/ref/Cleaner$Cleanable;
flags: (0x0010) ACC_FINAL
java.util.zip.ZipFile$Source zsrc;
descriptor: Ljava/util/zip/ZipFile$Source;
flags: (0x0000)
void <init>(java.util.zip.ZipFile, java.io.File, int);
descriptor: (Ljava/util/zip/ZipFile;Ljava/io/File;I)V
flags: (0x0000)
Code:
stack=4, 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
invokestatic jdk.internal.ref.CleanerFactory.cleaner:()Ljava/lang/ref/Cleaner;
aload 1
aload 0
invokevirtual java.lang.ref.Cleaner.register:(Ljava/lang/Object;Ljava/lang/Runnable;)Ljava/lang/ref/Cleaner$Cleanable;
putfield java.util.zip.ZipFile$CleanableResource.cleanable:Ljava/lang/ref/Cleaner$Cleanable;
2: aload 0
new java.util.WeakHashMap
dup
invokespecial java.util.WeakHashMap.<init>:()V
invokestatic java.util.Collections.newSetFromMap:(Ljava/util/Map;)Ljava/util/Set;
putfield java.util.zip.ZipFile$CleanableResource.istreams:Ljava/util/Set;
3: aload 0
new java.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
putfield java.util.zip.ZipFile$CleanableResource.inflaterCache:Ljava/util/Deque;
4: aload 0
aload 2
iload 3
iconst_4
iand
ifeq 5
iconst_1
goto 6
StackMap locals: java.util.zip.ZipFile$CleanableResource java.util.zip.ZipFile java.io.File int
StackMap stack: java.util.zip.ZipFile$CleanableResource java.io.File
5: iconst_0
StackMap locals: java.util.zip.ZipFile$CleanableResource java.util.zip.ZipFile java.io.File int
StackMap stack: java.util.zip.ZipFile$CleanableResource java.io.File int
6: aload 1
getfield java.util.zip.ZipFile.zc:Ljava/util/zip/ZipCoder;
invokestatic java.util.zip.ZipFile$Source.get:(Ljava/io/File;ZLjava/util/zip/ZipCoder;)Ljava/util/zip/ZipFile$Source;
putfield java.util.zip.ZipFile$CleanableResource.zsrc:Ljava/util/zip/ZipFile$Source;
7: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Ljava/util/zip/ZipFile$CleanableResource;
0 8 1 zf Ljava/util/zip/ZipFile;
0 8 2 file Ljava/io/File;
0 8 3 mode I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
zf
file
mode
void clean();
descriptor: ()V
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.zip.ZipFile$CleanableResource.cleanable:Ljava/lang/ref/Cleaner$Cleanable;
invokeinterface java.lang.ref.Cleaner$Cleanable.clean:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/util/zip/ZipFile$CleanableResource;
java.util.zip.Inflater getInflater();
descriptor: ()Ljava/util/zip/Inflater;
flags: (0x0000)
Code:
stack=3, locals=3, args_size=1
start local 0 0: aload 0
getfield java.util.zip.ZipFile$CleanableResource.inflaterCache:Ljava/util/Deque;
dup
astore 2
monitorenter
1: aload 0
getfield java.util.zip.ZipFile$CleanableResource.inflaterCache:Ljava/util/Deque;
invokeinterface java.util.Deque.poll:()Ljava/lang/Object;
checkcast java.util.zip.Inflater
dup
astore 1
start local 1 2: ifnull 5
3: aload 1
aload 2
monitorexit
4: areturn
5: StackMap locals: java.util.zip.Inflater java.util.Deque
StackMap stack:
aload 2
monitorexit
6: goto 9
end local 1 StackMap locals: java.util.zip.ZipFile$CleanableResource top java.util.Deque
StackMap stack: java.lang.Throwable
7: aload 2
monitorexit
8: athrow
start local 1 9: StackMap locals: java.util.zip.ZipFile$CleanableResource java.util.zip.Inflater
StackMap stack:
new java.util.zip.Inflater
dup
iconst_1
invokespecial java.util.zip.Inflater.<init>:(Z)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Ljava/util/zip/ZipFile$CleanableResource;
2 7 1 inf Ljava/util/zip/Inflater;
9 10 1 inf Ljava/util/zip/Inflater;
Exception table:
from to target type
1 4 7 any
5 6 7 any
7 8 7 any
void releaseInflater(java.util.zip.Inflater);
descriptor: (Ljava/util/zip/Inflater;)V
flags: (0x0000)
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield java.util.zip.ZipFile$CleanableResource.inflaterCache:Ljava/util/Deque;
astore 2
start local 2 1: aload 2
ifnull 12
2: aload 2
dup
astore 3
monitorenter
3: aload 2
aload 0
getfield java.util.zip.ZipFile$CleanableResource.inflaterCache:Ljava/util/Deque;
if_acmpne 8
4: aload 1
invokevirtual java.util.zip.Inflater.reset:()V
5: aload 2
aload 1
invokeinterface java.util.Deque.add:(Ljava/lang/Object;)Z
pop
6: aload 3
monitorexit
7: return
8: StackMap locals: java.util.Deque java.util.Deque
StackMap stack:
aload 3
monitorexit
9: goto 12
StackMap locals:
StackMap stack: java.lang.Throwable
10: aload 3
monitorexit
11: athrow
12: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.util.zip.Inflater.end:()V
13: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Ljava/util/zip/ZipFile$CleanableResource;
0 14 1 inf Ljava/util/zip/Inflater;
1 14 2 inflaters Ljava/util/Deque<Ljava/util/zip/Inflater;>;
Exception table:
from to target type
3 7 10 any
8 9 10 any
10 11 10 any
MethodParameters:
Name Flags
inf
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=10, args_size=1
start local 0 0: aconst_null
astore 1
start local 1 1: aload 0
getfield java.util.zip.ZipFile$CleanableResource.inflaterCache:Ljava/util/Deque;
astore 2
start local 2 2: aload 2
ifnull 13
3: aload 2
dup
astore 3
monitorenter
4: goto 6
start local 4 5: StackMap locals: java.util.zip.ZipFile$CleanableResource java.io.IOException java.util.Deque java.util.Deque java.util.zip.Inflater
StackMap stack:
aload 4
invokevirtual java.util.zip.Inflater.end:()V
end local 4 6: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.util.Deque.poll:()Ljava/lang/Object;
checkcast java.util.zip.Inflater
dup
astore 4
start local 4 7: ifnonnull 5
8: aload 0
aconst_null
putfield java.util.zip.ZipFile$CleanableResource.inflaterCache:Ljava/util/Deque;
end local 4 9: aload 3
monitorexit
10: goto 13
StackMap locals:
StackMap stack: java.lang.Throwable
11: aload 3
monitorexit
12: athrow
13: StackMap locals:
StackMap stack:
aload 0
getfield java.util.zip.ZipFile$CleanableResource.istreams:Ljava/util/Set;
ifnull 31
14: aload 0
getfield java.util.zip.ZipFile$CleanableResource.istreams:Ljava/util/Set;
dup
astore 3
monitorenter
15: aload 0
getfield java.util.zip.ZipFile$CleanableResource.istreams:Ljava/util/Set;
invokeinterface java.util.Set.isEmpty:()Z
ifne 27
16: aload 0
getfield java.util.zip.ZipFile$CleanableResource.istreams:Ljava/util/Set;
iconst_0
anewarray java.io.InputStream
invokeinterface java.util.Set.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
checkcast java.io.InputStream[]
astore 4
start local 4 17: aload 0
getfield java.util.zip.ZipFile$CleanableResource.istreams:Ljava/util/Set;
invokeinterface java.util.Set.clear:()V
18: aload 4
dup
astore 8
arraylength
istore 7
iconst_0
istore 6
goto 26
StackMap locals: java.util.zip.ZipFile$CleanableResource java.io.IOException java.util.Deque java.util.Set java.io.InputStream[] top int int java.io.InputStream[]
StackMap stack:
19: aload 8
iload 6
aaload
astore 5
start local 5 20: aload 5
invokevirtual java.io.InputStream.close:()V
21: goto 25
StackMap locals: java.util.zip.ZipFile$CleanableResource java.io.IOException java.util.Deque java.util.Set java.io.InputStream[] java.io.InputStream int int java.io.InputStream[]
StackMap stack: java.io.IOException
22: astore 9
start local 9 23: aload 1
ifnonnull 24
aload 9
astore 1
goto 25
24: StackMap locals: java.io.IOException
StackMap stack:
aload 1
aload 9
invokevirtual java.io.IOException.addSuppressed:(Ljava/lang/Throwable;)V
end local 9 end local 5 25: StackMap locals: java.util.zip.ZipFile$CleanableResource java.io.IOException java.util.Deque java.util.Set java.io.InputStream[] top int int java.io.InputStream[]
StackMap stack:
iinc 6 1
StackMap locals:
StackMap stack:
26: iload 6
iload 7
if_icmplt 19
end local 4 27: StackMap locals: java.util.zip.ZipFile$CleanableResource java.io.IOException java.util.Deque java.util.Set
StackMap stack:
aload 3
monitorexit
28: goto 31
StackMap locals:
StackMap stack: java.lang.Throwable
29: aload 3
monitorexit
30: athrow
31: StackMap locals:
StackMap stack:
aload 0
getfield java.util.zip.ZipFile$CleanableResource.zsrc:Ljava/util/zip/ZipFile$Source;
ifnull 43
32: aload 0
getfield java.util.zip.ZipFile$CleanableResource.zsrc:Ljava/util/zip/ZipFile$Source;
dup
astore 3
monitorenter
33: aload 0
getfield java.util.zip.ZipFile$CleanableResource.zsrc:Ljava/util/zip/ZipFile$Source;
invokestatic java.util.zip.ZipFile$Source.release:(Ljava/util/zip/ZipFile$Source;)V
34: aload 0
aconst_null
putfield java.util.zip.ZipFile$CleanableResource.zsrc:Ljava/util/zip/ZipFile$Source;
35: goto 39
StackMap locals: java.util.zip.ZipFile$CleanableResource java.io.IOException java.util.Deque java.util.zip.ZipFile$Source
StackMap stack: java.io.IOException
36: astore 4
start local 4 37: aload 1
ifnonnull 38
aload 4
astore 1
goto 39
38: StackMap locals: java.io.IOException
StackMap stack:
aload 1
aload 4
invokevirtual java.io.IOException.addSuppressed:(Ljava/lang/Throwable;)V
end local 4 39: StackMap locals:
StackMap stack:
aload 3
monitorexit
40: goto 43
StackMap locals:
StackMap stack: java.lang.Throwable
41: aload 3
monitorexit
42: athrow
43: StackMap locals:
StackMap stack:
aload 1
ifnull 45
44: new java.io.UncheckedIOException
dup
aload 1
invokespecial java.io.UncheckedIOException.<init>:(Ljava/io/IOException;)V
athrow
45: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 46 0 this Ljava/util/zip/ZipFile$CleanableResource;
1 46 1 ioe Ljava/io/IOException;
2 46 2 inflaters Ljava/util/Deque<Ljava/util/zip/Inflater;>;
5 6 4 inf Ljava/util/zip/Inflater;
7 9 4 inf Ljava/util/zip/Inflater;
17 27 4 copy [Ljava/io/InputStream;
20 25 5 is Ljava/io/InputStream;
23 25 9 e Ljava/io/IOException;
37 39 4 e Ljava/io/IOException;
Exception table:
from to target type
4 10 11 any
11 12 11 any
20 21 22 Class java.io.IOException
15 28 29 any
29 30 29 any
33 35 36 Class java.io.IOException
33 40 41 any
41 42 41 any
void <init>(java.io.File, int, java.util.zip.ZipCoder);
descriptor: (Ljava/io/File;ILjava/util/zip/ZipCoder;)V
flags: (0x0000)
Code:
stack=4, 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
aconst_null
putfield java.util.zip.ZipFile$CleanableResource.cleanable:Ljava/lang/ref/Cleaner$Cleanable;
2: aload 0
new java.util.WeakHashMap
dup
invokespecial java.util.WeakHashMap.<init>:()V
invokestatic java.util.Collections.newSetFromMap:(Ljava/util/Map;)Ljava/util/Set;
putfield java.util.zip.ZipFile$CleanableResource.istreams:Ljava/util/Set;
3: aload 0
new java.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
putfield java.util.zip.ZipFile$CleanableResource.inflaterCache:Ljava/util/Deque;
4: aload 0
aload 1
iload 2
iconst_4
iand
ifeq 5
iconst_1
goto 6
StackMap locals: java.util.zip.ZipFile$CleanableResource java.io.File int java.util.zip.ZipCoder
StackMap stack: java.util.zip.ZipFile$CleanableResource java.io.File
5: iconst_0
StackMap locals: java.util.zip.ZipFile$CleanableResource java.io.File int java.util.zip.ZipCoder
StackMap stack: java.util.zip.ZipFile$CleanableResource java.io.File int
6: aload 3
invokestatic java.util.zip.ZipFile$Source.get:(Ljava/io/File;ZLjava/util/zip/ZipCoder;)Ljava/util/zip/ZipFile$Source;
putfield java.util.zip.ZipFile$CleanableResource.zsrc:Ljava/util/zip/ZipFile$Source;
7: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Ljava/util/zip/ZipFile$CleanableResource;
0 8 1 file Ljava/io/File;
0 8 2 mode I
0 8 3 zc Ljava/util/zip/ZipCoder;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
file
mode
zc
static java.util.zip.ZipFile$CleanableResource get(java.util.zip.ZipFile, java.io.File, int);
descriptor: (Ljava/util/zip/ZipFile;Ljava/io/File;I)Ljava/util/zip/ZipFile$CleanableResource;
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
astore 3
start local 3 1: goto 5
2: StackMap locals: java.lang.Class
StackMap stack:
getstatic java.util.zip.ZipFile.JLA:Ljdk/internal/misc/JavaLangAccess;
aload 3
ldc "close"
iconst_0
anewarray java.lang.Class
invokeinterface jdk.internal.misc.JavaLangAccess.getDeclaredPublicMethods:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/util/List;
invokeinterface java.util.List.size:()I
ifeq 4
3: new java.util.zip.ZipFile$CleanableResource$FinalizableResource
dup
aload 0
aload 1
iload 2
invokespecial java.util.zip.ZipFile$CleanableResource$FinalizableResource.<init>:(Ljava/util/zip/ZipFile;Ljava/io/File;I)V
areturn
4: StackMap locals:
StackMap stack:
aload 3
invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
astore 3
5: StackMap locals:
StackMap stack:
aload 3
ldc Ljava/util/zip/ZipFile;
if_acmpeq 6
aload 3
ldc Ljava/util/jar/JarFile;
if_acmpne 2
6: StackMap locals:
StackMap stack:
new java.util.zip.ZipFile$CleanableResource
dup
aload 0
aload 1
iload 2
invokespecial java.util.zip.ZipFile$CleanableResource.<init>:(Ljava/util/zip/ZipFile;Ljava/io/File;I)V
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 zf Ljava/util/zip/ZipFile;
0 7 1 file Ljava/io/File;
0 7 2 mode I
1 7 3 clz Ljava/lang/Class<*>;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
zf
file
mode
}
SourceFile: "ZipFile.java"
NestHost: java.util.zip.ZipFile
InnerClasses:
public abstract Cleanable = java.lang.ref.Cleaner$Cleanable of java.lang.ref.Cleaner
private CleanableResource = java.util.zip.ZipFile$CleanableResource of java.util.zip.ZipFile
FinalizableResource = java.util.zip.ZipFile$CleanableResource$FinalizableResource of java.util.zip.ZipFile$CleanableResource
private Source = java.util.zip.ZipFile$Source of java.util.zip.ZipFile