class org.apache.commons.compress.archivers.zip.ExplodingInputStream extends java.io.InputStream implements org.apache.commons.compress.utils.InputStreamStatistics
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.apache.commons.compress.archivers.zip.ExplodingInputStream
super_class: java.io.InputStream
{
private final java.io.InputStream in;
descriptor: Ljava/io/InputStream;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private org.apache.commons.compress.archivers.zip.BitStream bits;
descriptor: Lorg/apache/commons/compress/archivers/zip/BitStream;
flags: (0x0002) ACC_PRIVATE
private final int dictionarySize;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int numberOfTrees;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int minimumMatchLength;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private org.apache.commons.compress.archivers.zip.BinaryTree literalTree;
descriptor: Lorg/apache/commons/compress/archivers/zip/BinaryTree;
flags: (0x0002) ACC_PRIVATE
private org.apache.commons.compress.archivers.zip.BinaryTree lengthTree;
descriptor: Lorg/apache/commons/compress/archivers/zip/BinaryTree;
flags: (0x0002) ACC_PRIVATE
private org.apache.commons.compress.archivers.zip.BinaryTree distanceTree;
descriptor: Lorg/apache/commons/compress/archivers/zip/BinaryTree;
flags: (0x0002) ACC_PRIVATE
private final org.apache.commons.compress.archivers.zip.CircularBuffer buffer;
descriptor: Lorg/apache/commons/compress/archivers/zip/CircularBuffer;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private long uncompressedCount;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private long treeSizes;
descriptor: J
flags: (0x0002) ACC_PRIVATE
public void <init>(int, int, java.io.InputStream);
descriptor: (IILjava/io/InputStream;)V
flags: (0x0001) ACC_PUBLIC
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.io.InputStream.<init>:()V
1: aload 0
new org.apache.commons.compress.archivers.zip.CircularBuffer
dup
ldc 32768
invokespecial org.apache.commons.compress.archivers.zip.CircularBuffer.<init>:(I)V
putfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.buffer:Lorg/apache/commons/compress/archivers/zip/CircularBuffer;
2: aload 0
lconst_0
putfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.uncompressedCount:J
3: aload 0
lconst_0
putfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.treeSizes:J
4: iload 1
sipush 4096
if_icmpeq 6
iload 1
sipush 8192
if_icmpeq 6
5: new java.lang.IllegalArgumentException
dup
ldc "The dictionary size must be 4096 or 8192"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals: org.apache.commons.compress.archivers.zip.ExplodingInputStream int int java.io.InputStream
StackMap stack:
iload 2
iconst_2
if_icmpeq 8
iload 2
iconst_3
if_icmpeq 8
7: new java.lang.IllegalArgumentException
dup
ldc "The number of trees must be 2 or 3"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
8: StackMap locals:
StackMap stack:
aload 0
iload 1
putfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.dictionarySize:I
9: aload 0
iload 2
putfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.numberOfTrees:I
10: aload 0
iload 2
putfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.minimumMatchLength:I
11: aload 0
aload 3
putfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.in:Ljava/io/InputStream;
12: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lorg/apache/commons/compress/archivers/zip/ExplodingInputStream;
0 13 1 dictionarySize I
0 13 2 numberOfTrees I
0 13 3 in Ljava/io/InputStream;
MethodParameters:
Name Flags
dictionarySize final
numberOfTrees final
in final
private void init();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=4, args_size=1
start local 0 0: aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.bits:Lorg/apache/commons/compress/archivers/zip/BitStream;
ifnonnull 15
1: aconst_null
astore 1
aconst_null
astore 2
2: new org.apache.commons.compress.archivers.zip.ExplodingInputStream$1
dup
aload 0
aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.in:Ljava/io/InputStream;
invokespecial org.apache.commons.compress.archivers.zip.ExplodingInputStream$1.<init>:(Lorg/apache/commons/compress/archivers/zip/ExplodingInputStream;Ljava/io/InputStream;)V
astore 3
start local 3 3: aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.numberOfTrees:I
iconst_3
if_icmpne 5
4: aload 0
aload 3
sipush 256
invokestatic org.apache.commons.compress.archivers.zip.BinaryTree.decode:(Ljava/io/InputStream;I)Lorg/apache/commons/compress/archivers/zip/BinaryTree;
putfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.literalTree:Lorg/apache/commons/compress/archivers/zip/BinaryTree;
5: StackMap locals: java.lang.Throwable java.lang.Throwable org.apache.commons.compress.utils.CountingInputStream
StackMap stack:
aload 0
aload 3
bipush 64
invokestatic org.apache.commons.compress.archivers.zip.BinaryTree.decode:(Ljava/io/InputStream;I)Lorg/apache/commons/compress/archivers/zip/BinaryTree;
putfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.lengthTree:Lorg/apache/commons/compress/archivers/zip/BinaryTree;
6: aload 0
aload 3
bipush 64
invokestatic org.apache.commons.compress.archivers.zip.BinaryTree.decode:(Ljava/io/InputStream;I)Lorg/apache/commons/compress/archivers/zip/BinaryTree;
putfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.distanceTree:Lorg/apache/commons/compress/archivers/zip/BinaryTree;
7: aload 0
dup
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.treeSizes:J
aload 3
invokevirtual org.apache.commons.compress.utils.CountingInputStream.getBytesRead:()J
ladd
putfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.treeSizes:J
8: aload 3
ifnull 14
aload 3
invokevirtual org.apache.commons.compress.utils.CountingInputStream.close:()V
goto 14
StackMap locals:
StackMap stack: java.lang.Throwable
9: astore 1
aload 3
ifnull 10
aload 3
invokevirtual org.apache.commons.compress.utils.CountingInputStream.close:()V
end local 3 StackMap locals:
StackMap stack:
10: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
11: astore 2
aload 1
ifnonnull 12
aload 2
astore 1
goto 13
StackMap locals:
StackMap stack:
12: aload 1
aload 2
if_acmpeq 13
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
13: aload 1
athrow
14: StackMap locals:
StackMap stack:
aload 0
new org.apache.commons.compress.archivers.zip.BitStream
dup
aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.in:Ljava/io/InputStream;
invokespecial org.apache.commons.compress.archivers.zip.BitStream.<init>:(Ljava/io/InputStream;)V
putfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.bits:Lorg/apache/commons/compress/archivers/zip/BitStream;
15: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lorg/apache/commons/compress/archivers/zip/ExplodingInputStream;
3 10 3 i Lorg/apache/commons/compress/utils/CountingInputStream;
Exception table:
from to target type
3 8 9 any
2 11 11 any
Exceptions:
throws java.io.IOException
public int read();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=2, args_size=1
start local 0 0: aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.buffer:Lorg/apache/commons/compress/archivers/zip/CircularBuffer;
invokevirtual org.apache.commons.compress.archivers.zip.CircularBuffer.available:()Z
ifne 2
1: aload 0
invokevirtual org.apache.commons.compress.archivers.zip.ExplodingInputStream.fillBuffer:()V
2: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.buffer:Lorg/apache/commons/compress/archivers/zip/CircularBuffer;
invokevirtual org.apache.commons.compress.archivers.zip.CircularBuffer.get:()I
istore 1
start local 1 3: iload 1
iconst_m1
if_icmple 5
4: aload 0
dup
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.uncompressedCount:J
lconst_1
ladd
putfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.uncompressedCount:J
5: StackMap locals: int
StackMap stack:
iload 1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/apache/commons/compress/archivers/zip/ExplodingInputStream;
3 6 1 ret I
Exceptions:
throws java.io.IOException
public long getCompressedCount();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.bits:Lorg/apache/commons/compress/archivers/zip/BitStream;
invokevirtual org.apache.commons.compress.archivers.zip.BitStream.getBytesRead:()J
aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.treeSizes:J
ladd
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/commons/compress/archivers/zip/ExplodingInputStream;
public long getUncompressedCount();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.uncompressedCount:J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/commons/compress/archivers/zip/ExplodingInputStream;
public void close();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.in:Ljava/io/InputStream;
invokevirtual java.io.InputStream.close:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/commons/compress/archivers/zip/ExplodingInputStream;
Exceptions:
throws java.io.IOException
private void fillBuffer();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=7, args_size=1
start local 0 0: aload 0
invokevirtual org.apache.commons.compress.archivers.zip.ExplodingInputStream.init:()V
1: aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.bits:Lorg/apache/commons/compress/archivers/zip/BitStream;
invokevirtual org.apache.commons.compress.archivers.zip.BitStream.nextBit:()I
istore 1
start local 1 2: iload 1
iconst_1
if_icmpne 11
3: aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.literalTree:Lorg/apache/commons/compress/archivers/zip/BinaryTree;
ifnull 6
4: aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.literalTree:Lorg/apache/commons/compress/archivers/zip/BinaryTree;
aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.bits:Lorg/apache/commons/compress/archivers/zip/BitStream;
invokevirtual org.apache.commons.compress.archivers.zip.BinaryTree.read:(Lorg/apache/commons/compress/archivers/zip/BitStream;)I
istore 2
start local 2 5: goto 7
end local 2 6: StackMap locals: int
StackMap stack:
aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.bits:Lorg/apache/commons/compress/archivers/zip/BitStream;
invokevirtual org.apache.commons.compress.archivers.zip.BitStream.nextByte:()I
istore 2
start local 2 7: StackMap locals: int
StackMap stack:
iload 2
iconst_m1
if_icmpne 9
8: return
9: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.buffer:Lorg/apache/commons/compress/archivers/zip/CircularBuffer;
iload 2
invokevirtual org.apache.commons.compress.archivers.zip.CircularBuffer.put:(I)V
end local 2 10: goto 25
StackMap locals:
StackMap stack:
11: iload 1
ifne 25
12: aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.dictionarySize:I
sipush 4096
if_icmpne 13
bipush 6
goto 14
StackMap locals:
StackMap stack:
13: bipush 7
StackMap locals:
StackMap stack: int
14: istore 2
start local 2 15: aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.bits:Lorg/apache/commons/compress/archivers/zip/BitStream;
iload 2
invokevirtual org.apache.commons.compress.archivers.zip.BitStream.nextBits:(I)J
l2i
istore 3
start local 3 16: aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.distanceTree:Lorg/apache/commons/compress/archivers/zip/BinaryTree;
aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.bits:Lorg/apache/commons/compress/archivers/zip/BitStream;
invokevirtual org.apache.commons.compress.archivers.zip.BinaryTree.read:(Lorg/apache/commons/compress/archivers/zip/BitStream;)I
istore 4
start local 4 17: iload 4
iconst_m1
if_icmpne 19
iload 3
ifgt 19
18: return
19: StackMap locals: int int int
StackMap stack:
iload 4
iload 2
ishl
iload 3
ior
istore 5
start local 5 20: aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.lengthTree:Lorg/apache/commons/compress/archivers/zip/BinaryTree;
aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.bits:Lorg/apache/commons/compress/archivers/zip/BitStream;
invokevirtual org.apache.commons.compress.archivers.zip.BinaryTree.read:(Lorg/apache/commons/compress/archivers/zip/BitStream;)I
istore 6
start local 6 21: iload 6
bipush 63
if_icmpne 23
22: iload 6
i2l
aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.bits:Lorg/apache/commons/compress/archivers/zip/BitStream;
bipush 8
invokevirtual org.apache.commons.compress.archivers.zip.BitStream.nextBits:(I)J
ladd
l2i
istore 6
23: StackMap locals: int int
StackMap stack:
iload 6
aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.minimumMatchLength:I
iadd
istore 6
24: aload 0
getfield org.apache.commons.compress.archivers.zip.ExplodingInputStream.buffer:Lorg/apache/commons/compress/archivers/zip/CircularBuffer;
iload 5
iconst_1
iadd
iload 6
invokevirtual org.apache.commons.compress.archivers.zip.CircularBuffer.copy:(II)V
end local 6 end local 5 end local 4 end local 3 end local 2 25: StackMap locals: org.apache.commons.compress.archivers.zip.ExplodingInputStream int
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 26 0 this Lorg/apache/commons/compress/archivers/zip/ExplodingInputStream;
2 26 1 bit I
5 6 2 literal I
7 10 2 literal I
15 25 2 distanceLowSize I
16 25 3 distanceLow I
17 25 4 distanceHigh I
20 25 5 distance I
21 25 6 length I
Exceptions:
throws java.io.IOException
}
SourceFile: "ExplodingInputStream.java"
NestMembers:
org.apache.commons.compress.archivers.zip.ExplodingInputStream$1
InnerClasses:
org.apache.commons.compress.archivers.zip.ExplodingInputStream$1