final class io.netty.handler.codec.http2.HpackHuffmanDecoder
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: io.netty.handler.codec.http2.HpackHuffmanDecoder
super_class: java.lang.Object
{
private static final io.netty.handler.codec.http2.Http2Exception EOS_DECODED;
descriptor: Lio/netty/handler/codec/http2/Http2Exception;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final io.netty.handler.codec.http2.Http2Exception INVALID_PADDING;
descriptor: Lio/netty/handler/codec/http2/Http2Exception;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final io.netty.handler.codec.http2.HpackHuffmanDecoder$Node ROOT;
descriptor: Lio/netty/handler/codec/http2/HpackHuffmanDecoder$Node;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final io.netty.handler.codec.http2.HpackHuffmanDecoder$DecoderProcessor processor;
descriptor: Lio/netty/handler/codec/http2/HpackHuffmanDecoder$DecoderProcessor;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: getstatic io.netty.handler.codec.http2.Http2Error.COMPRESSION_ERROR:Lio/netty/handler/codec/http2/Http2Error;
ldc "HPACK - EOS Decoded"
iconst_0
anewarray java.lang.Object
invokestatic io.netty.handler.codec.http2.Http2Exception.connectionError:(Lio/netty/handler/codec/http2/Http2Error;Ljava/lang/String;[Ljava/lang/Object;)Lio/netty/handler/codec/http2/Http2Exception;
ldc Lio/netty/handler/codec/http2/HpackHuffmanDecoder;
ldc "decode(..)"
1: invokestatic io.netty.util.internal.ThrowableUtil.unknownStackTrace:(Ljava/lang/Throwable;Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Throwable;
checkcast io.netty.handler.codec.http2.Http2Exception
putstatic io.netty.handler.codec.http2.HpackHuffmanDecoder.EOS_DECODED:Lio/netty/handler/codec/http2/Http2Exception;
2: getstatic io.netty.handler.codec.http2.Http2Error.COMPRESSION_ERROR:Lio/netty/handler/codec/http2/Http2Error;
ldc "HPACK - Invalid Padding"
iconst_0
anewarray java.lang.Object
invokestatic io.netty.handler.codec.http2.Http2Exception.connectionError:(Lio/netty/handler/codec/http2/Http2Error;Ljava/lang/String;[Ljava/lang/Object;)Lio/netty/handler/codec/http2/Http2Exception;
ldc Lio/netty/handler/codec/http2/HpackHuffmanDecoder;
ldc "decode(..)"
3: invokestatic io.netty.util.internal.ThrowableUtil.unknownStackTrace:(Ljava/lang/Throwable;Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Throwable;
checkcast io.netty.handler.codec.http2.Http2Exception
putstatic io.netty.handler.codec.http2.HpackHuffmanDecoder.INVALID_PADDING:Lio/netty/handler/codec/http2/Http2Exception;
4: getstatic io.netty.handler.codec.http2.HpackUtil.HUFFMAN_CODES:[I
getstatic io.netty.handler.codec.http2.HpackUtil.HUFFMAN_CODE_LENGTHS:[B
invokestatic io.netty.handler.codec.http2.HpackHuffmanDecoder.buildTree:([I[B)Lio/netty/handler/codec/http2/HpackHuffmanDecoder$Node;
putstatic io.netty.handler.codec.http2.HpackHuffmanDecoder.ROOT:Lio/netty/handler/codec/http2/HpackHuffmanDecoder$Node;
return
LocalVariableTable:
Start End Slot Name Signature
void <init>(int);
descriptor: (I)V
flags: (0x0000)
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new io.netty.handler.codec.http2.HpackHuffmanDecoder$DecoderProcessor
dup
iload 1
invokespecial io.netty.handler.codec.http2.HpackHuffmanDecoder$DecoderProcessor.<init>:(I)V
putfield io.netty.handler.codec.http2.HpackHuffmanDecoder.processor:Lio/netty/handler/codec/http2/HpackHuffmanDecoder$DecoderProcessor;
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/netty/handler/codec/http2/HpackHuffmanDecoder;
0 3 1 initialCapacity I
MethodParameters:
Name Flags
initialCapacity
public io.netty.util.AsciiString decode(io.netty.buffer.ByteBuf, int);
descriptor: (Lio/netty/buffer/ByteBuf;I)Lio/netty/util/AsciiString;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield io.netty.handler.codec.http2.HpackHuffmanDecoder.processor:Lio/netty/handler/codec/http2/HpackHuffmanDecoder$DecoderProcessor;
invokevirtual io.netty.handler.codec.http2.HpackHuffmanDecoder$DecoderProcessor.reset:()V
1: aload 1
aload 1
invokevirtual io.netty.buffer.ByteBuf.readerIndex:()I
iload 2
aload 0
getfield io.netty.handler.codec.http2.HpackHuffmanDecoder.processor:Lio/netty/handler/codec/http2/HpackHuffmanDecoder$DecoderProcessor;
invokevirtual io.netty.buffer.ByteBuf.forEachByte:(IILio/netty/util/ByteProcessor;)I
pop
2: aload 1
iload 2
invokevirtual io.netty.buffer.ByteBuf.skipBytes:(I)Lio/netty/buffer/ByteBuf;
pop
3: aload 0
getfield io.netty.handler.codec.http2.HpackHuffmanDecoder.processor:Lio/netty/handler/codec/http2/HpackHuffmanDecoder$DecoderProcessor;
invokevirtual io.netty.handler.codec.http2.HpackHuffmanDecoder$DecoderProcessor.end:()Lio/netty/util/AsciiString;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/netty/handler/codec/http2/HpackHuffmanDecoder;
0 4 1 buf Lio/netty/buffer/ByteBuf;
0 4 2 length I
Exceptions:
throws io.netty.handler.codec.http2.Http2Exception
MethodParameters:
Name Flags
buf
length
private static io.netty.handler.codec.http2.HpackHuffmanDecoder$Node buildTree(int[], byte[]);
descriptor: ([I[B)Lio/netty/handler/codec/http2/HpackHuffmanDecoder$Node;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=4, args_size=2
start local 0 start local 1 0: new io.netty.handler.codec.http2.HpackHuffmanDecoder$Node
dup
invokespecial io.netty.handler.codec.http2.HpackHuffmanDecoder$Node.<init>:()V
astore 2
start local 2 1: iconst_0
istore 3
start local 3 2: goto 5
3: StackMap locals: io.netty.handler.codec.http2.HpackHuffmanDecoder$Node int
StackMap stack:
aload 2
iload 3
aload 0
iload 3
iaload
aload 1
iload 3
baload
invokestatic io.netty.handler.codec.http2.HpackHuffmanDecoder.insert:(Lio/netty/handler/codec/http2/HpackHuffmanDecoder$Node;IIB)V
4: iinc 3 1
StackMap locals:
StackMap stack:
5: iload 3
aload 0
arraylength
if_icmplt 3
end local 3 6: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 codes [I
0 7 1 lengths [B
1 7 2 root Lio/netty/handler/codec/http2/HpackHuffmanDecoder$Node;
2 6 3 i I
MethodParameters:
Name Flags
codes
lengths
private static void insert(io.netty.handler.codec.http2.HpackHuffmanDecoder$Node, int, int, byte);
descriptor: (Lio/netty/handler/codec/http2/HpackHuffmanDecoder$Node;IIB)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=10, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
astore 4
start local 4 1: goto 9
2: StackMap locals: io.netty.handler.codec.http2.HpackHuffmanDecoder$Node
StackMap stack:
aload 4
invokevirtual io.netty.handler.codec.http2.HpackHuffmanDecoder$Node.isTerminal:()Z
ifeq 4
3: new java.lang.IllegalStateException
dup
ldc "invalid Huffman code: prefix not unique"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
iload 3
bipush 8
isub
i2b
istore 3
5: iload 2
iload 3
iushr
sipush 255
iand
istore 5
start local 5 6: aload 4
getfield io.netty.handler.codec.http2.HpackHuffmanDecoder$Node.children:[Lio/netty/handler/codec/http2/HpackHuffmanDecoder$Node;
iload 5
aaload
ifnonnull 8
7: aload 4
getfield io.netty.handler.codec.http2.HpackHuffmanDecoder$Node.children:[Lio/netty/handler/codec/http2/HpackHuffmanDecoder$Node;
iload 5
new io.netty.handler.codec.http2.HpackHuffmanDecoder$Node
dup
invokespecial io.netty.handler.codec.http2.HpackHuffmanDecoder$Node.<init>:()V
aastore
8: StackMap locals: int
StackMap stack:
aload 4
getfield io.netty.handler.codec.http2.HpackHuffmanDecoder$Node.children:[Lio/netty/handler/codec/http2/HpackHuffmanDecoder$Node;
iload 5
aaload
astore 4
end local 5 9: StackMap locals:
StackMap stack:
iload 3
bipush 8
if_icmpgt 2
10: new io.netty.handler.codec.http2.HpackHuffmanDecoder$Node
dup
iload 1
iload 3
invokespecial io.netty.handler.codec.http2.HpackHuffmanDecoder$Node.<init>:(II)V
astore 5
start local 5 11: bipush 8
iload 3
isub
istore 6
start local 6 12: iload 2
iload 6
ishl
sipush 255
iand
istore 7
start local 7 13: iconst_1
iload 6
ishl
istore 8
start local 8 14: iload 7
istore 9
start local 9 15: goto 18
16: StackMap locals: io.netty.handler.codec.http2.HpackHuffmanDecoder$Node int int int io.netty.handler.codec.http2.HpackHuffmanDecoder$Node io.netty.handler.codec.http2.HpackHuffmanDecoder$Node int int int int
StackMap stack:
aload 4
getfield io.netty.handler.codec.http2.HpackHuffmanDecoder$Node.children:[Lio/netty/handler/codec/http2/HpackHuffmanDecoder$Node;
iload 9
aload 5
aastore
17: iinc 9 1
StackMap locals:
StackMap stack:
18: iload 9
iload 7
iload 8
iadd
if_icmplt 16
end local 9 19: return
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 20 0 root Lio/netty/handler/codec/http2/HpackHuffmanDecoder$Node;
0 20 1 symbol I
0 20 2 code I
0 20 3 length B
1 20 4 current Lio/netty/handler/codec/http2/HpackHuffmanDecoder$Node;
6 9 5 i I
11 20 5 terminal Lio/netty/handler/codec/http2/HpackHuffmanDecoder$Node;
12 20 6 shift I
13 20 7 start I
14 20 8 end I
15 19 9 i I
MethodParameters:
Name Flags
root
symbol
code
length
}
SourceFile: "HpackHuffmanDecoder.java"
NestMembers:
io.netty.handler.codec.http2.HpackHuffmanDecoder$DecoderProcessor io.netty.handler.codec.http2.HpackHuffmanDecoder$Node
InnerClasses:
private final DecoderProcessor = io.netty.handler.codec.http2.HpackHuffmanDecoder$DecoderProcessor of io.netty.handler.codec.http2.HpackHuffmanDecoder
private final Node = io.netty.handler.codec.http2.HpackHuffmanDecoder$Node of io.netty.handler.codec.http2.HpackHuffmanDecoder