Skip to content

Commit 508f140

Browse files
Make System.Net.Http.HPack.IntegerDecoder a struct. (#33563)
See also dotnet/runtime#54209.
1 parent c28dc4c commit 508f140

File tree

6 files changed

+10
-9
lines changed

6 files changed

+10
-9
lines changed

src/Servers/Kestrel/Core/src/Internal/Http3/QPack/DecoderStreamReader.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ private enum State
4343
private const byte InsertCountIncrementPrefixMask = 0x3F;
4444
private const int InsertCountIncrementPrefix = 6;
4545

46-
private readonly IntegerDecoder _integerDecoder = new IntegerDecoder();
46+
private IntegerDecoder _integerDecoder;
4747
private State _state;
4848

4949
public DecoderStreamReader()

src/Servers/Kestrel/Core/src/Internal/Http3/QPack/EncoderStreamReader.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ private enum State
8686
private int _stringIndex;
8787
private readonly DynamicTable _dynamicTable = new DynamicTable(1000); // TODO figure out architecture.
8888

89-
private readonly IntegerDecoder _integerDecoder = new IntegerDecoder();
89+
private IntegerDecoder _integerDecoder;
9090
private State _state = State.Ready;
9191
private bool _huffman;
9292

src/Servers/Kestrel/perf/Microbenchmarks/IntegerDecoderBenchmark.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,28 @@ public class IntegerDecoderBenchmark
1313
private int _prefixLength = 5; // Arbitrary prefix length
1414
private byte _singleByte = 0x1e; // 30
1515
private byte[] _multiByte = new byte[] { 0x1f, 0xe0, 0xff, 0xff, 0xff, 0x03}; // int32.MaxValue
16-
private IntegerDecoder _integerDecoder = new IntegerDecoder();
1716

1817
[Benchmark(Baseline = true, OperationsPerInvoke = Iterations)]
1918
public void DecodeSingleByteInteger()
2019
{
20+
var integerDecoder = new IntegerDecoder();
2121
for (var i = 0; i < Iterations; i++)
2222
{
23-
_integerDecoder.BeginTryDecode(_singleByte, _prefixLength, out _);
23+
integerDecoder.BeginTryDecode(_singleByte, _prefixLength, out _);
2424
}
2525
}
2626

2727
[Benchmark(OperationsPerInvoke = Iterations)]
2828
public void DecodeMultiByteInteger()
2929
{
30+
var integerDecoder = new IntegerDecoder();
3031
for (var i = 0; i < Iterations; i++)
3132
{
32-
_integerDecoder.BeginTryDecode(_multiByte[0], _prefixLength, out _);
33+
integerDecoder.BeginTryDecode(_multiByte[0], _prefixLength, out _);
3334

3435
for (var j = 1; j < _multiByte.Length; j++)
3536
{
36-
_integerDecoder.TryDecode(_multiByte[j], out _);
37+
integerDecoder.TryDecode(_multiByte[j], out _);
3738
}
3839
}
3940
}

src/Shared/runtime/Http2/Hpack/HPackDecoder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ private enum State : byte
8383
private readonly int _maxDynamicTableSize;
8484
private readonly int _maxHeadersLength;
8585
private readonly DynamicTable _dynamicTable;
86-
private readonly IntegerDecoder _integerDecoder = new IntegerDecoder();
86+
private IntegerDecoder _integerDecoder;
8787
private byte[] _stringOctets;
8888
private byte[] _headerNameOctets;
8989
private byte[] _headerValueOctets;

src/Shared/runtime/Http2/Hpack/IntegerDecoder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
namespace System.Net.Http.HPack
88
{
9-
internal sealed class IntegerDecoder
9+
internal struct IntegerDecoder
1010
{
1111
private int _i;
1212
private int _m;

src/Shared/runtime/Http3/QPack/QPackDecoder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ private enum State
123123
private int _headerValueLength;
124124
private int _stringLength;
125125
private int _stringIndex;
126-
private readonly IntegerDecoder _integerDecoder = new IntegerDecoder();
126+
private IntegerDecoder _integerDecoder;
127127

128128
private static ArrayPool<byte> Pool => ArrayPool<byte>.Shared;
129129

0 commit comments

Comments
 (0)