MihuBot / runtime-utils

0 stars 0 forks source link

[JitDiff X64] [MihaZupan] Rework HttpClient content buffering #801

Open MihuBot opened 2 days ago

MihuBot commented 2 days ago

Job completed in 17 minutes 59 seconds.

Diffs

Diffs ``` Found 265 files with textual diffs. Summary of Code Size diffs: (Lower is better) Total bytes of base: 39685965 Total bytes of diff: 39685139 Total bytes of delta: -826 (-0.00 % of base) Total relative delta: 8.15 diff is an improvement. relative diff is a regression. Total byte diff includes 533 bytes from reconciling methods Base had 47 unique methods, 11805 unique bytes Diff had 42 unique methods, 12338 unique bytes Top file improvements (bytes): -826 : System.Net.Http.dasm (-0.10 % of base) 1 total files with Code Size differences (1 improved, 0 regressed), 258 unchanged. Top method regressions (bytes): 1013 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<g__WaitAsync|46_0>d:MoveNext():this (FullOpts) (0 base, 1 diff methods) 881 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:ReadBufferAsString(System.Net.Http.HttpContent+LimitArrayPoolWriteStream,System.Net.Http.Headers.HttpContentHeaders):System.String (FullOpts) (0 base, 1 diff methods) 858 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:GrowAndWrite(System.ReadOnlySpan`1[ubyte]):this (FullOpts) (0 base, 1 diff methods) 857 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__53:MoveNext():this (FullOpts) (0 base, 1 diff methods) 838 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[System.__Canon,System.Nullable`1[int]]:MoveNext():this (FullOpts) (0 base, 1 diff methods) 704 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:MoveNext():this (FullOpts) (0 base, 1 diff methods) 693 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[double,System.Nullable`1[int]]:MoveNext():this (FullOpts) (0 base, 1 diff methods) 693 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[short,System.Nullable`1[int]]:MoveNext():this (FullOpts) (0 base, 1 diff methods) 693 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[ubyte,System.Nullable`1[int]]:MoveNext():this (FullOpts) (0 base, 1 diff methods) 692 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[long,System.Nullable`1[int]]:MoveNext():this (FullOpts) (0 base, 1 diff methods) 692 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[System.Nullable`1[int],System.Nullable`1[int]]:MoveNext():this (FullOpts) (0 base, 1 diff methods) 691 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[int,System.Nullable`1[int]]:MoveNext():this (FullOpts) (0 base, 1 diff methods) 361 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:GetPreambleLength(System.ReadOnlySpan`1[ubyte],System.Text.Encoding):int (FullOpts) (0 base, 1 diff methods) 353 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:TryDetectEncoding(System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (FullOpts) (0 base, 1 diff methods) 248 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:ReturnAllPooledBuffers():this (FullOpts) (0 base, 1 diff methods) 243 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:CreateMemoryStreamFromBufferedContent():System.IO.MemoryStream:this (FullOpts) (0 base, 1 diff methods) 215 (75.97 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:CreateTemporaryBuffer(long,byref,byref):ubyte:this (FullOpts) 207 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:CopyToCore(System.Span`1[ubyte]):this (FullOpts) (0 base, 1 diff methods) 184 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<>c:b__30_0(System.Net.Http.HttpContent):ubyte[]:this (FullOpts) (0 base, 1 diff methods) 180 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:CreateCopy():ubyte[]:this (FullOpts) (0 base, 1 diff methods) 164 (820.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:ReadBufferedContentAsByteArray():ubyte[]:this (FullOpts) 148 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:.ctor(int,long,ubyte):this (FullOpts) (0 base, 1 diff methods) 102 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:ReallocateIfPooled():this (FullOpts) (0 base, 1 diff methods) 98 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:g__WaitAsync|46_0(System.Threading.Tasks.ValueTask):System.Threading.Tasks.Task (FullOpts) (0 base, 1 diff methods) 98 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:LoadIntoBufferAsyncCore(System.Threading.Tasks.Task,System.Net.Http.HttpContent+LimitArrayPoolWriteStream):System.Threading.Tasks.Task:this (FullOpts) (0 base, 1 diff methods) 95 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:GetFirstBuffer():System.ReadOnlySpan`1[ubyte]:this (FullOpts) (0 base, 1 diff methods) 83 (122.06 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:ToArray():ubyte[]:this (FullOpts) 65 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<>c:b__48_0(System.Object):this (FullOpts) (0 base, 1 diff methods) 57 (65.52 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:Write(ubyte[],int,int):this (FullOpts) 56 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[double,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 56 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[int,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 56 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[long,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 56 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[short,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 56 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[System.__Canon,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 56 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[System.Nullable`1[int],System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 56 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 56 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[ubyte,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 52 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<>c:b__26_0(System.Net.Http.HttpContent):System.String:this (FullOpts) (0 base, 1 diff methods) 35 (22.58 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:Write(System.ReadOnlySpan`1[ubyte]):this (FullOpts) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<g__WaitAsync|46_0>d:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__53:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 23 (69.70 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:CreateContentReadStream(System.Threading.CancellationToken):System.IO.Stream:this (FullOpts) 23 (69.70 % of base) : System.Net.Http.dasm - System.Net.Http.MultipartContent:<>n__1(System.Threading.CancellationToken):System.IO.Stream:this (FullOpts) 18 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<>c:b__55_0(System.Net.Http.HttpContent):System.IO.Stream:this (FullOpts) (0 base, 1 diff methods) 16 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:get_BigEndianUnicodePreamble():System.ReadOnlySpan`1[ubyte] (FullOpts) (0 base, 1 diff methods) 16 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:get_UnicodePreamble():System.ReadOnlySpan`1[ubyte] (FullOpts) (0 base, 1 diff methods) 16 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:get_UTF32Preamble():System.ReadOnlySpan`1[ubyte] (FullOpts) (0 base, 1 diff methods) 16 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:get_UTF8Preamble():System.ReadOnlySpan`1[ubyte] (FullOpts) (0 base, 1 diff methods) 15 (4.41 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:Dispose(ubyte):this (FullOpts) 14 (1.62 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:LoadIntoBuffer(long,System.Threading.CancellationToken):this (FullOpts) 8 (0.45 % of base) : System.Net.Http.dasm - System.Net.Http.MultipartContent+d__28:MoveNext():this (FullOpts) 5 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:GetSingleBuffer():ubyte[]:this (FullOpts) (0 base, 1 diff methods) 2 (1.60 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:GetComputedOrBufferLength():System.Nullable`1[long]:this (FullOpts) Top method improvements (bytes): -1013 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<g__WaitAsync|56_0>d:MoveNext():this (FullOpts) (1 base, 0 diff methods) -960 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__63:MoveNext():this (FullOpts) (1 base, 0 diff methods) -838 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[System.__Canon,System.Nullable`1[int]]:MoveNext():this (FullOpts) (1 base, 0 diff methods) -704 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:MoveNext():this (FullOpts) (1 base, 0 diff methods) -693 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[double,System.Nullable`1[int]]:MoveNext():this (FullOpts) (1 base, 0 diff methods) -693 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[short,System.Nullable`1[int]]:MoveNext():this (FullOpts) (1 base, 0 diff methods) -693 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[ubyte,System.Nullable`1[int]]:MoveNext():this (FullOpts) (1 base, 0 diff methods) -692 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[long,System.Nullable`1[int]]:MoveNext():this (FullOpts) (1 base, 0 diff methods) -692 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[System.Nullable`1[int],System.Nullable`1[int]]:MoveNext():this (FullOpts) (1 base, 0 diff methods) -691 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[int,System.Nullable`1[int]]:MoveNext():this (FullOpts) (1 base, 0 diff methods) -525 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:GetPreambleLength(System.ArraySegment`1[ubyte],System.Text.Encoding):int (FullOpts) (1 base, 0 diff methods) -475 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:ReadBufferAsString(System.ArraySegment`1[ubyte],System.Net.Http.Headers.HttpContentHeaders):System.String (FullOpts) (1 base, 0 diff methods) -402 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:TryDetectEncoding(System.ArraySegment`1[ubyte],byref,byref):ubyte (FullOpts) (1 base, 0 diff methods) -361 (-49.79 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:TryReadAsStream():System.IO.Stream:this (FullOpts) -342 (-61.62 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:ReadAsStream(System.Threading.CancellationToken):System.IO.Stream:this (FullOpts) -269 (-43.25 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:ReadAsStreamAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.IO.Stream]:this (FullOpts) -261 (-8.35 % of base) : System.Net.Http.dasm - System.Net.Http.HttpClient+d__41:MoveNext():this (FullOpts) -222 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitMemoryStream:CopyToAsync(System.IO.Stream,int,System.Threading.CancellationToken):System.Threading.Tasks.Task:this (FullOpts) (1 base, 0 diff methods) -221 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:CreateMemoryStream(long,byref):System.Net.Http.HttpContent+LimitMemoryStream:this (FullOpts) (1 base, 0 diff methods) -215 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:Grow(int):this (FullOpts) (1 base, 0 diff methods) -194 (-6.32 % of base) : System.Net.Http.dasm - System.Net.Http.HttpClient+d__46:MoveNext():this (FullOpts) -167 (-77.31 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:ReadBufferedContentAsString():System.String:this (FullOpts) -153 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:.ctor(int,long):this (FullOpts) (1 base, 0 diff methods) -141 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:.ctor(int):this (FullOpts) (1 base, 0 diff methods) -115 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:BufferHasPrefix(System.ArraySegment`1[ubyte],ubyte[]):ubyte (FullOpts) (1 base, 0 diff methods) -114 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitMemoryStream:BeginWrite(ubyte[],int,int,System.AsyncCallback,System.Object):System.IAsyncResult:this (FullOpts) (1 base, 0 diff methods) -102 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitMemoryStream:WriteAsync(System.ReadOnlyMemory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (FullOpts) (1 base, 0 diff methods) -99 (-27.58 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:CopyTo(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken):this (FullOpts) -98 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:g__WaitAsync|56_0(System.Threading.Tasks.ValueTask):System.Threading.Tasks.Task (FullOpts) (1 base, 0 diff methods) -98 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:LoadIntoBufferAsyncCore(System.Threading.Tasks.Task,System.IO.MemoryStream):System.Threading.Tasks.Task:this (FullOpts) (1 base, 0 diff methods) -97 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitMemoryStream:GetSizedBuffer():ubyte[]:this (FullOpts) (1 base, 0 diff methods) -91 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitMemoryStream:WriteAsync(ubyte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task:this (FullOpts) (1 base, 0 diff methods) -84 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitMemoryStream:CheckSize(int):this (FullOpts) (1 base, 0 diff methods) -83 (-1.98 % of base) : System.Net.Http.dasm - System.Net.Http.Http2Connection+Http2Stream+d__45:MoveNext():this (FullOpts) -81 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:GetBuffer():System.ArraySegment`1[ubyte]:this (FullOpts) (1 base, 0 diff methods) -78 (-24.22 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:InternalCopyToAsync(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (FullOpts) -76 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitMemoryStream:Write(ubyte[],int,int):this (FullOpts) (1 base, 0 diff methods) -65 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<>c:b__58_0(System.Object):this (FullOpts) (1 base, 0 diff methods) -65 (-77.38 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:Dispose(ubyte):this (FullOpts) -59 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:EnsureCapacity(int):this (FullOpts) (1 base, 0 diff methods) -59 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitMemoryStream:WriteByte(ubyte):this (FullOpts) (1 base, 0 diff methods) -56 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[double,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -56 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[int,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -56 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[long,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -56 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[short,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -56 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[System.__Canon,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -56 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[System.Nullable`1[int],System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -56 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -56 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[ubyte,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -45 (-11.75 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:LoadIntoBufferAsync(long,System.Threading.CancellationToken):System.Threading.Tasks.Task:this (FullOpts) -39 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitMemoryStream:.ctor(int,int):this (FullOpts) (1 base, 0 diff methods) -36 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:TryGetBuffer(byref):ubyte:this (FullOpts) (1 base, 0 diff methods) -34 (-49.28 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:WriteByte(ubyte):this (FullOpts) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<g__WaitAsync|56_0>d:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__63:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -20 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<>c:b__40_0(System.Net.Http.HttpContent):ubyte[]:this (FullOpts) (1 base, 0 diff methods) -18 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<>c:b__36_0(System.Net.Http.HttpContent):System.String:this (FullOpts) (1 base, 0 diff methods) -13 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitMemoryStream:EndWrite(System.IAsyncResult):this (FullOpts) (1 base, 0 diff methods) -5 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<>c:b__65_0(System.Net.Http.HttpContent):System.IO.Stream:this (FullOpts) (1 base, 0 diff methods) Top method regressions (percentages): 98 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:g__WaitAsync|46_0(System.Threading.Tasks.ValueTask):System.Threading.Tasks.Task (FullOpts) (0 base, 1 diff methods) 243 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:CreateMemoryStreamFromBufferedContent():System.IO.MemoryStream:this (FullOpts) (0 base, 1 diff methods) 16 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:get_BigEndianUnicodePreamble():System.ReadOnlySpan`1[ubyte] (FullOpts) (0 base, 1 diff methods) 16 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:get_UnicodePreamble():System.ReadOnlySpan`1[ubyte] (FullOpts) (0 base, 1 diff methods) 16 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:get_UTF32Preamble():System.ReadOnlySpan`1[ubyte] (FullOpts) (0 base, 1 diff methods) 16 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:get_UTF8Preamble():System.ReadOnlySpan`1[ubyte] (FullOpts) (0 base, 1 diff methods) 361 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:GetPreambleLength(System.ReadOnlySpan`1[ubyte],System.Text.Encoding):int (FullOpts) (0 base, 1 diff methods) 98 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:LoadIntoBufferAsyncCore(System.Threading.Tasks.Task,System.Net.Http.HttpContent+LimitArrayPoolWriteStream):System.Threading.Tasks.Task:this (FullOpts) (0 base, 1 diff methods) 881 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:ReadBufferAsString(System.Net.Http.HttpContent+LimitArrayPoolWriteStream,System.Net.Http.Headers.HttpContentHeaders):System.String (FullOpts) (0 base, 1 diff methods) 353 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:TryDetectEncoding(System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (FullOpts) (0 base, 1 diff methods) 1013 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<g__WaitAsync|46_0>d:MoveNext():this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<g__WaitAsync|46_0>d:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 18 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<>c:b__55_0(System.Net.Http.HttpContent):System.IO.Stream:this (FullOpts) (0 base, 1 diff methods) 65 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<>c:b__48_0(System.Object):this (FullOpts) (0 base, 1 diff methods) 184 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<>c:b__30_0(System.Net.Http.HttpContent):ubyte[]:this (FullOpts) (0 base, 1 diff methods) 52 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<>c:b__26_0(System.Net.Http.HttpContent):System.String:this (FullOpts) (0 base, 1 diff methods) 857 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__53:MoveNext():this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__53:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 693 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[double,System.Nullable`1[int]]:MoveNext():this (FullOpts) (0 base, 1 diff methods) 56 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[double,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 691 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[int,System.Nullable`1[int]]:MoveNext():this (FullOpts) (0 base, 1 diff methods) 56 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[int,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 692 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[long,System.Nullable`1[int]]:MoveNext():this (FullOpts) (0 base, 1 diff methods) 56 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[long,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 693 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[short,System.Nullable`1[int]]:MoveNext():this (FullOpts) (0 base, 1 diff methods) 56 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[short,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 838 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[System.__Canon,System.Nullable`1[int]]:MoveNext():this (FullOpts) (0 base, 1 diff methods) 56 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[System.__Canon,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 692 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[System.Nullable`1[int],System.Nullable`1[int]]:MoveNext():this (FullOpts) (0 base, 1 diff methods) 56 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[System.Nullable`1[int],System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 704 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:MoveNext():this (FullOpts) (0 base, 1 diff methods) 56 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 693 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[ubyte,System.Nullable`1[int]]:MoveNext():this (FullOpts) (0 base, 1 diff methods) 56 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__70`2[ubyte,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 148 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:.ctor(int,long,ubyte):this (FullOpts) (0 base, 1 diff methods) 207 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:CopyToCore(System.Span`1[ubyte]):this (FullOpts) (0 base, 1 diff methods) 180 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:CreateCopy():ubyte[]:this (FullOpts) (0 base, 1 diff methods) 95 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:GetFirstBuffer():System.ReadOnlySpan`1[ubyte]:this (FullOpts) (0 base, 1 diff methods) 5 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:GetSingleBuffer():ubyte[]:this (FullOpts) (0 base, 1 diff methods) 858 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:GrowAndWrite(System.ReadOnlySpan`1[ubyte]):this (FullOpts) (0 base, 1 diff methods) 102 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:ReallocateIfPooled():this (FullOpts) (0 base, 1 diff methods) 248 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:ReturnAllPooledBuffers():this (FullOpts) (0 base, 1 diff methods) 164 (820.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:ReadBufferedContentAsByteArray():ubyte[]:this (FullOpts) 83 (122.06 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:ToArray():ubyte[]:this (FullOpts) 215 (75.97 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:CreateTemporaryBuffer(long,byref,byref):ubyte:this (FullOpts) 23 (69.70 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:CreateContentReadStream(System.Threading.CancellationToken):System.IO.Stream:this (FullOpts) 23 (69.70 % of base) : System.Net.Http.dasm - System.Net.Http.MultipartContent:<>n__1(System.Threading.CancellationToken):System.IO.Stream:this (FullOpts) 57 (65.52 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:Write(ubyte[],int,int):this (FullOpts) 35 (22.58 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:Write(System.ReadOnlySpan`1[ubyte]):this (FullOpts) 15 (4.41 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:Dispose(ubyte):this (FullOpts) 14 (1.62 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:LoadIntoBuffer(long,System.Threading.CancellationToken):this (FullOpts) 2 (1.60 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:GetComputedOrBufferLength():System.Nullable`1[long]:this (FullOpts) 8 (0.45 % of base) : System.Net.Http.dasm - System.Net.Http.MultipartContent+d__28:MoveNext():this (FullOpts) Top method improvements (percentages): -98 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:g__WaitAsync|56_0(System.Threading.Tasks.ValueTask):System.Threading.Tasks.Task (FullOpts) (1 base, 0 diff methods) -115 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:BufferHasPrefix(System.ArraySegment`1[ubyte],ubyte[]):ubyte (FullOpts) (1 base, 0 diff methods) -221 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:CreateMemoryStream(long,byref):System.Net.Http.HttpContent+LimitMemoryStream:this (FullOpts) (1 base, 0 diff methods) -525 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:GetPreambleLength(System.ArraySegment`1[ubyte],System.Text.Encoding):int (FullOpts) (1 base, 0 diff methods) -98 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:LoadIntoBufferAsyncCore(System.Threading.Tasks.Task,System.IO.MemoryStream):System.Threading.Tasks.Task:this (FullOpts) (1 base, 0 diff methods) -475 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:ReadBufferAsString(System.ArraySegment`1[ubyte],System.Net.Http.Headers.HttpContentHeaders):System.String (FullOpts) (1 base, 0 diff methods) -402 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:TryDetectEncoding(System.ArraySegment`1[ubyte],byref,byref):ubyte (FullOpts) (1 base, 0 diff methods) -36 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:TryGetBuffer(byref):ubyte:this (FullOpts) (1 base, 0 diff methods) -1013 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<g__WaitAsync|56_0>d:MoveNext():this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<g__WaitAsync|56_0>d:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -5 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<>c:b__65_0(System.Net.Http.HttpContent):System.IO.Stream:this (FullOpts) (1 base, 0 diff methods) -65 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<>c:b__58_0(System.Object):this (FullOpts) (1 base, 0 diff methods) -20 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<>c:b__40_0(System.Net.Http.HttpContent):ubyte[]:this (FullOpts) (1 base, 0 diff methods) -18 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+<>c:b__36_0(System.Net.Http.HttpContent):System.String:this (FullOpts) (1 base, 0 diff methods) -960 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__63:MoveNext():this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__63:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -693 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[double,System.Nullable`1[int]]:MoveNext():this (FullOpts) (1 base, 0 diff methods) -56 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[double,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -691 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[int,System.Nullable`1[int]]:MoveNext():this (FullOpts) (1 base, 0 diff methods) -56 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[int,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -692 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[long,System.Nullable`1[int]]:MoveNext():this (FullOpts) (1 base, 0 diff methods) -56 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[long,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -693 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[short,System.Nullable`1[int]]:MoveNext():this (FullOpts) (1 base, 0 diff methods) -56 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[short,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -838 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[System.__Canon,System.Nullable`1[int]]:MoveNext():this (FullOpts) (1 base, 0 diff methods) -56 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[System.__Canon,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -692 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[System.Nullable`1[int],System.Nullable`1[int]]:MoveNext():this (FullOpts) (1 base, 0 diff methods) -56 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[System.Nullable`1[int],System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -704 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:MoveNext():this (FullOpts) (1 base, 0 diff methods) -56 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -693 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[ubyte,System.Nullable`1[int]]:MoveNext():this (FullOpts) (1 base, 0 diff methods) -56 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+d__82`2[ubyte,System.Nullable`1[int]]:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -153 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:.ctor(int,long):this (FullOpts) (1 base, 0 diff methods) -141 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:.ctor(int):this (FullOpts) (1 base, 0 diff methods) -59 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:EnsureCapacity(int):this (FullOpts) (1 base, 0 diff methods) -81 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:GetBuffer():System.ArraySegment`1[ubyte]:this (FullOpts) (1 base, 0 diff methods) -215 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:Grow(int):this (FullOpts) (1 base, 0 diff methods) -39 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitMemoryStream:.ctor(int,int):this (FullOpts) (1 base, 0 diff methods) -114 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitMemoryStream:BeginWrite(ubyte[],int,int,System.AsyncCallback,System.Object):System.IAsyncResult:this (FullOpts) (1 base, 0 diff methods) -84 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitMemoryStream:CheckSize(int):this (FullOpts) (1 base, 0 diff methods) -222 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitMemoryStream:CopyToAsync(System.IO.Stream,int,System.Threading.CancellationToken):System.Threading.Tasks.Task:this (FullOpts) (1 base, 0 diff methods) -13 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitMemoryStream:EndWrite(System.IAsyncResult):this (FullOpts) (1 base, 0 diff methods) -97 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitMemoryStream:GetSizedBuffer():ubyte[]:this (FullOpts) (1 base, 0 diff methods) -76 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitMemoryStream:Write(ubyte[],int,int):this (FullOpts) (1 base, 0 diff methods) -102 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitMemoryStream:WriteAsync(System.ReadOnlyMemory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (FullOpts) (1 base, 0 diff methods) -91 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitMemoryStream:WriteAsync(ubyte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task:this (FullOpts) (1 base, 0 diff methods) -59 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitMemoryStream:WriteByte(ubyte):this (FullOpts) (1 base, 0 diff methods) -65 (-77.38 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:Dispose(ubyte):this (FullOpts) -167 (-77.31 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:ReadBufferedContentAsString():System.String:this (FullOpts) -342 (-61.62 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:ReadAsStream(System.Threading.CancellationToken):System.IO.Stream:this (FullOpts) -361 (-49.79 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:TryReadAsStream():System.IO.Stream:this (FullOpts) -34 (-49.28 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:WriteByte(ubyte):this (FullOpts) -269 (-43.25 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:ReadAsStreamAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.IO.Stream]:this (FullOpts) -99 (-27.58 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:CopyTo(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken):this (FullOpts) -78 (-24.22 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:InternalCopyToAsync(System.IO.Stream,System.Net.TransportContext,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (FullOpts) -45 (-11.75 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:LoadIntoBufferAsync(long,System.Threading.CancellationToken):System.Threading.Tasks.Task:this (FullOpts) -261 (-8.35 % of base) : System.Net.Http.dasm - System.Net.Http.HttpClient+d__41:MoveNext():this (FullOpts) -194 (-6.32 % of base) : System.Net.Http.dasm - System.Net.Http.HttpClient+d__46:MoveNext():this (FullOpts) -83 (-1.98 % of base) : System.Net.Http.dasm - System.Net.Http.Http2Connection+Http2Stream+d__45:MoveNext():this (FullOpts) 112 total methods with Code Size differences (59 improved, 53 regressed), 232703 unchanged. -------------------------------------------------------------------------------- ```

Artifacts:

MihuBot commented 2 days ago

Top method regressions

215 (75.97 % of base) - System.Net.Http.HttpContent:CreateTemporaryBuffer(long,byref,byref):ubyte:this ```diff ; Assembly listing for method System.Net.Http.HttpContent:CreateTemporaryBuffer(long,byref,byref):ubyte:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data +; 0 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T01] ( 4, 3.50) ref -> rdi this class-hnd single-def -; V01 arg1 [V01,T00] ( 5, 3.50) long -> rbx single-def -; V02 arg2 [V02,T02] ( 4, 3 ) byref -> r15 single-def -; V03 arg3 [V03,T03] ( 4, 3 ) byref -> rcx single-def -;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V05 tmp1 [V05,T04] ( 3, 0 ) ref -> r15 class-hnd exact single-def "Single-def Box Helper" -; V06 tmp2 [V06,T07] ( 2, 0 ) ref -> rbx class-hnd exact single-def "non-inline candidate call" -; V07 tmp3 [V07,T05] ( 3, 0 ) ref -> r14 class-hnd exact single-def "Single-def Box Helper" -; V08 tmp4 [V08,T08] ( 2, 0 ) ref -> r13 class-hnd exact single-def "impImportAndPushBox" -; V09 tmp5 [V09,T06] ( 3, 0 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" -; V10 tmp6 [V10,T09] ( 2, 0 ) ref -> [rbp-0x30] spill-single-def "argument with side effect" -; V11 tmp7 [V11,T10] ( 2, 0 ) ref -> rcx single-def "argument with side effect" +; V00 this [V00,T04] ( 4, 3.50) ref -> rdi this class-hnd single-def +; V01 arg1 [V01,T01] ( 7, 4.50) long -> rbx single-def +; V02 arg2 [V02,T02] ( 5, 3.50) byref -> r15 single-def +; V03 arg3 [V03,T03] ( 5, 3.50) byref -> r14 single-def +;* V04 loc0 [V04 ] ( 0, 0 ) long -> zero-ref +;* V05 loc1 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op +;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +; V07 tmp1 [V07,T00] ( 7, 7 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" +; V08 tmp2 [V08,T08] ( 3, 0 ) ref -> r15 class-hnd exact single-def "Single-def Box Helper" +; V09 tmp3 [V09,T11] ( 2, 0 ) ref -> rbx class-hnd exact single-def "non-inline candidate call" +; V10 tmp4 [V10,T09] ( 3, 0 ) ref -> r14 class-hnd exact single-def "Single-def Box Helper" +; V11 tmp5 [V11,T12] ( 2, 0 ) ref -> r13 class-hnd exact single-def "impImportAndPushBox" +; V12 tmp6 [V12,T10] ( 3, 0 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" +; V13 tmp7 [V13,T05] ( 4, 3 ) int -> rbx "Inlining Arg" +;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref +;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref +;* V16 tmp10 [V16 ] ( 0, 0 ) int -> zero-ref +; V17 tmp11 [V17,T07] ( 1, 0.50) ubyte -> rax "field V05.hasValue (fldOffset=0x0)" P-INDEP +; V18 tmp12 [V18,T06] ( 5, 2.50) long -> r13 "field V05.value (fldOffset=0x8)" P-INDEP +; V19 tmp13 [V19,T13] ( 2, 0 ) ref -> [rbp-0x30] spill-single-def "argument with side effect" +; V20 tmp14 [V20,T14] ( 2, 0 ) ref -> rcx single-def "argument with side effect" ; ; Lcl frame size = 8 G_M14512_IG01: push rbp push r15 push r14 push r13 push r12 push rbx push rax lea rbp, [rsp+0x30] mov rbx, rsi mov r15, rdx - ;; size=22 bbWeight=1 PerfScore 8.00 + mov r14, rcx + ;; size=25 bbWeight=1 PerfScore 8.25 G_M14512_IG02: cmp rbx, 0xD1FFAB1E - jg SHORT G_M14512_IG08 + jg G_M14512_IG13 cmp gword ptr [rdi+0x10], 0 - jne SHORT G_M14512_IG05 - ;; size=16 bbWeight=1 PerfScore 5.25 + jne G_M14512_IG08 + ;; size=24 bbWeight=1 PerfScore 5.25 G_M14512_IG03: - mov rsi, rbx - mov rdx, rcx - mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent:CreateMemoryStream(long,byref):System.Net.Http.HttpContent+LimitMemoryStream:this - call [rax]System.Net.Http.HttpContent:CreateMemoryStream(long,byref):System.Net.Http.HttpContent+LimitMemoryStream:this - mov rsi, rax - mov rdi, r15 - call CORINFO_HELP_CHECKED_ASSIGN_REF - mov eax, 1 - ;; size=34 bbWeight=0.50 PerfScore 2.75 + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent:get_Headers():System.Net.Http.Headers.HttpContentHeaders:this + call [rax]System.Net.Http.HttpContent:get_Headers():System.Net.Http.Headers.HttpContentHeaders:this + mov rdi, rax + mov rax, 0xD1FFAB1E ; code for System.Net.Http.Headers.HttpContentHeaders:get_ContentLength():System.Nullable`1[long]:this + cmp dword ptr [rdi], edi + call [rax]System.Net.Http.Headers.HttpContentHeaders:get_ContentLength():System.Nullable`1[long]:this + mov r13, rdx + cmp r13, rbx + jg SHORT G_M14512_IG05 + mov rdi, 0xD1FFAB1E ; System.Net.Http.HttpContent+LimitArrayPoolWriteStream + call CORINFO_HELP_NEWSFAST + mov r12, rax + movsxd rdi, ebx + cmp r13, rdi + jg G_M14512_IG12 + mov dword ptr [r12+0x20], ebx + mov dword ptr [r12+0x24], r13d + test r13, r13 + sete dil + mov byte ptr [r12+0x30], dil + mov byte ptr [r12+0x31], 0 + mov rdi, 0xD1FFAB1E ; global ptr + test byte ptr [rdi], 1 + je SHORT G_M14512_IG11 + ;; size=110 bbWeight=0.50 PerfScore 11.88 G_M14512_IG04: - add rsp, 8 - pop rbx - pop r12 - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=15 bbWeight=0.50 PerfScore 2.12 + mov rdi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[ubyte]:Value + mov rsi, gword ptr [rdi] + lea rdi, bword ptr [r12+0x10] + call CORINFO_HELP_ASSIGN_REF + mov rdi, r15 + mov rsi, r12 + call CORINFO_HELP_CHECKED_ASSIGN_REF + xor rdi, rdi + mov gword ptr [r14], rdi + jmp SHORT G_M14512_IG06 + ;; size=41 bbWeight=0.50 PerfScore 4.25 G_M14512_IG05: - xor rax, rax - mov gword ptr [r15], rax - ;; size=5 bbWeight=0.50 PerfScore 0.62 + xor rdi, rdi + mov gword ptr [r15], rdi + mov rdi, rbx + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent:CreateOverCapacityException(long):System.Net.Http.HttpRequestException + call [rax]System.Net.Http.HttpContent:CreateOverCapacityException(long):System.Net.Http.HttpRequestException + mov rsi, rax + mov rdi, r14 + call CORINFO_HELP_CHECKED_ASSIGN_REF + ;; size=31 bbWeight=0.50 PerfScore 3.12 G_M14512_IG06: - mov gword ptr [rcx], rax - ;; size=3 bbWeight=0.50 PerfScore 0.50 + mov eax, 1 + ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M14512_IG07: add rsp, 8 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12 G_M14512_IG08: + xor rax, rax + mov gword ptr [r15], rax + ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M14512_IG09: + mov gword ptr [r14], rax + ;; size=3 bbWeight=0.50 PerfScore 0.50 +G_M14512_IG10: + add rsp, 8 + pop rbx + pop r12 + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M14512_IG11: + mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[ubyte] + mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE + call [rax]CORINFO_HELP_GET_GCSTATIC_BASE + jmp G_M14512_IG04 + ;; size=27 bbWeight=0 PerfScore 0.00 +G_M14512_IG12: + movsxd rdi, ebx + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent:CreateOverCapacityException(long):System.Net.Http.HttpRequestException + call [rax]System.Net.Http.HttpContent:CreateOverCapacityException(long):System.Net.Http.HttpRequestException + mov rdi, rax + call CORINFO_HELP_THROW + int3 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M14512_IG13: mov rdi, 0xD1FFAB1E ; System.Int64 call CORINFO_HELP_NEWSFAST mov r15, rax mov qword ptr [r15+0x08], rbx mov rdi, 0xD1FFAB1E ; const ptr mov rbx, gword ptr [rdi] mov rdi, 0xD1FFAB1E ; System.Int32 call CORINFO_HELP_NEWSFAST mov r14, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_net_http_content_buffersize_limit():System.String call [rax]System.SR:get_net_http_content_buffersize_limit():System.String mov r13, rax mov dword ptr [r14+0x08], 0xD1FFAB1E mov rdi, 0xD1FFAB1E ; System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov r12, rax mov edi, 0x3E30 mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov gword ptr [rbp-0x30], rax mov rdx, r14 mov rdi, rbx mov rsi, r13 mov rcx, 0xD1FFAB1E ; code for System.SR:Format(System.IFormatProvider,System.String,System.Object):System.String call [rcx]System.SR:Format(System.IFormatProvider,System.String,System.Object):System.String mov rcx, rax mov rsi, gword ptr [rbp-0x30] mov rdx, r15 mov rdi, r12 mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this call [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this mov rdi, r12 call CORINFO_HELP_THROW int3 ;; size=173 bbWeight=0 PerfScore 0.00 -; Total bytes of code 283, prolog size 16, PerfScore 21.38, instruction count 75, allocated bytes for code 283 (MethodHash=1a89c74f) for method System.Net.Http.HttpContent:CreateTemporaryBuffer(long,byref,byref):ubyte:this (FullOpts) +; Total bytes of code 498, prolog size 16, PerfScore 38.25, instruction count 121, allocated bytes for code 498 (MethodHash=1a89c74f) for method System.Net.Http.HttpContent:CreateTemporaryBuffer(long,byref,byref):ubyte:this (FullOpts) ; ============================================================ ```
164 (820.00 % of base) - System.Net.Http.HttpContent:ReadBufferedContentAsByteArray():ubyte[]:this ```diff ; Assembly listing for method System.Net.Http.HttpContent:ReadBufferedContentAsByteArray():ubyte[]:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame -; fully interruptible +; partially interruptible ; No PGO data +; 0 inlinees with PGO data; 3 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def +; V00 this [V00,T03] ( 3, 3 ) ref -> rdi this class-hnd single-def ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V02 rat0 [V02,T00] ( 3, 6 ) ref -> rdi "virtual vtable call" +; V02 tmp1 [V02,T01] ( 3, 6 ) ref -> rsi class-hnd exact single-def "Inlining Arg" +;* V03 tmp2 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" +; V04 tmp3 [V04,T00] ( 4, 6 ) ref -> rbx class-hnd single-def "Inlining Arg" +; V05 tmp4 [V05,T02] ( 4, 5 ) int -> r15 "Inlining Arg" +;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +; V07 tmp6 [V07,T06] ( 3, 2 ) ref -> r14 class-hnd "Inline return value spill temp" +; V08 tmp7 [V08,T05] ( 3, 3 ) ref -> r14 class-hnd exact single-def "dup spill" +;* V09 tmp8 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V10 tmp9 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V11 tmp10 [V11 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V12 tmp11 [V12 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP +;* V13 tmp12 [V13 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP +; V14 tmp13 [V14,T07] ( 3, 1.50) byref -> rbx "field V06._reference (fldOffset=0x0)" P-INDEP +; V15 tmp14 [V15,T04] ( 5, 3 ) int -> r15 "field V06._length (fldOffset=0x8)" P-INDEP ; -; Lcl frame size = 0 +; Lcl frame size = 8 G_M2296_IG01: push rbp - mov rbp, rsp - ;; size=4 bbWeight=1 PerfScore 1.25 + push r15 + push r14 + push rbx + push rax + lea rbp, [rsp+0x20] + ;; size=12 bbWeight=1 PerfScore 5.50 G_M2296_IG02: - mov rdi, gword ptr [rdi+0x10] - mov rax, qword ptr [rdi] - mov rax, qword ptr [rax+0x68] - ;; size=11 bbWeight=1 PerfScore 6.00 + mov rsi, gword ptr [rdi+0x10] + mov rbx, gword ptr [rsi+0x10] + mov r15d, dword ptr [rsi+0x2C] + test rbx, rbx + je SHORT G_M2296_IG04 + ;; size=17 bbWeight=1 PerfScore 7.25 G_M2296_IG03: + cmp dword ptr [rbx+0x08], r15d + jb G_M2296_IG12 + add rbx, 16 + jmp SHORT G_M2296_IG05 + ;; size=16 bbWeight=0.50 PerfScore 3.12 +G_M2296_IG04: + test r15d, r15d + jne SHORT G_M2296_IG12 + xor rbx, rbx + xor r15d, r15d + ;; size=10 bbWeight=0.50 PerfScore 0.88 +G_M2296_IG05: + test r15d, r15d + je SHORT G_M2296_IG07 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M2296_IG06: + mov esi, r15d + mov rdi, 0xD1FFAB1E ; ubyte[] + call CORINFO_HELP_NEWARR_1_VC + mov r14, rax + mov edx, r15d + lea rdi, bword ptr [r14+0x10] + mov rsi, rbx + mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong) + call [rax]System.SpanHelpers:Memmove(byref,byref,ulong) + jmp SHORT G_M2296_IG09 + ;; size=45 bbWeight=0.50 PerfScore 4.00 +G_M2296_IG07: + mov rdi, 0xD1FFAB1E ; global ptr + test byte ptr [rdi], 1 + je SHORT G_M2296_IG11 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M2296_IG08: + mov rax, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[ubyte]:Value + mov r14, gword ptr [rax] + ;; size=13 bbWeight=0.50 PerfScore 1.12 +G_M2296_IG09: + mov rax, r14 + ;; size=3 bbWeight=1 PerfScore 0.25 +G_M2296_IG10: + add rsp, 8 + pop rbx + pop r14 + pop r15 pop rbp - tail.jmp [rax+0x30]System.IO.MemoryStream:ToArray():ubyte[]:this - ;; size=5 bbWeight=1 PerfScore 2.50 + ret + ;; size=11 bbWeight=1 PerfScore 3.25 +G_M2296_IG11: + mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[ubyte] + mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE + call [rax]CORINFO_HELP_GET_GCSTATIC_BASE + jmp SHORT G_M2296_IG08 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M2296_IG12: + mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException() + call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException() + int3 + ;; size=13 bbWeight=0 PerfScore 0.00 -; Total bytes of code 20, prolog size 4, PerfScore 9.75, instruction count 7, allocated bytes for code 20 (MethodHash=f95ef707) for method System.Net.Http.HttpContent:ReadBufferedContentAsByteArray():ubyte[]:this (FullOpts) +; Total bytes of code 184, prolog size 12, PerfScore 28.75, instruction count 50, allocated bytes for code 184 (MethodHash=f95ef707) for method System.Net.Http.HttpContent:ReadBufferedContentAsByteArray():ubyte[]:this (FullOpts) ; ============================================================ ```
83 (122.06 % of base) - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:ToArray():ubyte[]:this ```diff ; Assembly listing for method System.Net.Http.HttpContent+LimitArrayPoolWriteStream:ToArray():ubyte[]:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code -; rsp based frame +; rbp based frame ; partially interruptible ; No PGO data +; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def -; V01 loc0 [V01,T01] ( 3, 3 ) ref -> r14 class-hnd exact single-def +; V00 this [V00,T00] ( 7, 5 ) ref -> rbx this class-hnd single-def +; V01 loc0 [V01,T02] ( 4, 2 ) ref -> r15 class-hnd exact single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V03 cse0 [V03,T02] ( 3, 3 ) int -> r15 "CSE #01: aggressive" +;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V05 tmp3 [V05 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP +;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP +; V07 tmp5 [V07,T04] ( 2, 1 ) byref -> rsi "field V04._reference (fldOffset=0x0)" P-INDEP +; V08 tmp6 [V08,T05] ( 2, 1 ) int -> rdx "field V04._length (fldOffset=0x8)" P-INDEP +; V09 cse0 [V09,T03] ( 3, 1.50) ref -> rax "CSE #01: moderate" +; V10 cse1 [V10,T01] ( 5, 2.50) int -> rsi multi-def "CSE #02: aggressive" ; ; Lcl frame size = 0 G_M28475_IG01: + push rbp push r15 - push r14 push rbx + lea rbp, [rsp+0x10] mov rbx, rdi - ;; size=8 bbWeight=1 PerfScore 3.25 + ;; size=12 bbWeight=1 PerfScore 3.75 G_M28475_IG02: - mov r15d, dword ptr [rbx+0x1C] - movsxd rsi, r15d + cmp byte ptr [rbx+0x31], 0 + jne SHORT G_M28475_IG04 + ;; size=6 bbWeight=1 PerfScore 4.00 +G_M28475_IG03: + mov esi, dword ptr [rbx+0x2C] + mov rax, gword ptr [rbx+0x10] + cmp esi, dword ptr [rax+0x08] + je SHORT G_M28475_IG09 + ;; size=12 bbWeight=0.50 PerfScore 4.00 +G_M28475_IG04: + mov esi, dword ptr [rbx+0x2C] + test esi, esi + je SHORT G_M28475_IG06 + movsxd rsi, esi mov rdi, 0xD1FFAB1E ; ubyte[] call CORINFO_HELP_NEWARR_1_VC - mov r14, rax - mov rdi, gword ptr [rbx+0x10] - mov r8d, r15d - mov rdx, r14 - xor esi, esi - xor ecx, ecx - mov rax, 0xD1FFAB1E ; code for System.Buffer:BlockCopy(System.Array,int,System.Array,int,int) - call [rax]System.Buffer:BlockCopy(System.Array,int,System.Array,int,int) - mov rax, r14 - ;; size=54 bbWeight=1 PerfScore 10.25 -G_M28475_IG03: + mov r15, rax + lea rsi, bword ptr [r15+0x10] + mov edx, dword ptr [r15+0x08] + mov rdi, rbx + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent+LimitArrayPoolWriteStream:CopyToCore(System.Span`1[ubyte]):this + call [rax]System.Net.Http.HttpContent+LimitArrayPoolWriteStream:CopyToCore(System.Span`1[ubyte]):this + mov rax, r15 + ;; size=54 bbWeight=0.50 PerfScore 5.62 +G_M28475_IG05: pop rbx - pop r14 pop r15 + pop rbp ret - ;; size=6 bbWeight=1 PerfScore 2.50 + ;; size=5 bbWeight=0.50 PerfScore 1.25 +G_M28475_IG06: + mov rdi, 0xD1FFAB1E ; global ptr + test byte ptr [rdi], 1 + je SHORT G_M28475_IG10 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M28475_IG07: + mov rax, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[ubyte]:Value + mov rax, gword ptr [rax] + ;; size=13 bbWeight=0.50 PerfScore 1.12 +G_M28475_IG08: + pop rbx + pop r15 + pop rbp + ret + ;; size=5 bbWeight=0.50 PerfScore 1.25 +G_M28475_IG09: + pop rbx + pop r15 + pop rbp + ret + ;; size=5 bbWeight=0.50 PerfScore 1.25 +G_M28475_IG10: + mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[ubyte] + mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE + call [rax]CORINFO_HELP_GET_GCSTATIC_BASE + jmp SHORT G_M28475_IG07 + ;; size=24 bbWeight=0 PerfScore 0.00 -; Total bytes of code 68, prolog size 5, PerfScore 16.00, instruction count 21, allocated bytes for code 68 (MethodHash=4f6790c4) for method System.Net.Http.HttpContent+LimitArrayPoolWriteStream:ToArray():ubyte[]:this (FullOpts) +; Total bytes of code 151, prolog size 9, PerfScore 24.38, instruction count 45, allocated bytes for code 151 (MethodHash=4f6790c4) for method System.Net.Http.HttpContent+LimitArrayPoolWriteStream:ToArray():ubyte[]:this (FullOpts) ; ============================================================ ```
57 (65.52 % of base) - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:Write(ubyte[],int,int):this ```diff ; Assembly listing for method System.Net.Http.HttpContent+LimitArrayPoolWriteStream:Write(ubyte[],int,int):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data +; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T00] ( 8, 8 ) ref -> rbx this class-hnd single-def -; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r14 class-hnd single-def -; V02 arg2 [V02,T03] ( 3, 3 ) int -> r13 single-def -; V03 arg3 [V03,T01] ( 5, 5 ) int -> r15 single-def +; V00 this [V00,T03] ( 3, 3 ) ref -> rdi this class-hnd single-def +; V01 arg1 [V01,T00] ( 5, 5 ) ref -> rsi class-hnd single-def +; V02 arg2 [V02,T01] ( 5, 5 ) int -> rdx single-def +; V03 arg3 [V03,T02] ( 4, 4 ) int -> rcx single-def ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V10 tmp6 [V10 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V12 tmp8 [V12 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP +;* V13 tmp9 [V13 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP +;* V14 tmp10 [V14 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP +;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP +; V16 tmp12 [V16,T07] ( 2, 2 ) byref -> rsi single-def "field V07._reference (fldOffset=0x0)" P-INDEP +;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP +;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP +;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP +; V20 tmp16 [V20,T08] ( 2, 2 ) byref -> rsi single-def "field V09._reference (fldOffset=0x0)" P-INDEP +; V21 tmp17 [V21,T09] ( 2, 2 ) int -> rdx "field V09._length (fldOffset=0x8)" P-INDEP +; V22 cse0 [V22,T04] ( 3, 3 ) int -> rax "CSE #02: aggressive" +; V23 cse1 [V23,T05] ( 3, 3 ) long -> r9 "CSE #01: aggressive" +; V24 cse2 [V24,T06] ( 3, 3 ) long -> rdx "CSE #03: aggressive" ; ; Lcl frame size = 0 G_M28126_IG01: push rbp - push r15 - push r14 - push r13 - push rbx - lea rbp, [rsp+0x20] - mov rbx, rdi - mov r14, rsi - mov r13d, edx - mov r15d, ecx - ;; size=25 bbWeight=1 PerfScore 6.50 + mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 G_M28126_IG02: - mov esi, r15d - add esi, dword ptr [rbx+0x1C] - mov rdi, rbx - mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent+LimitArrayPoolWriteStream:EnsureCapacity(int):this - call [rax]System.Net.Http.HttpContent+LimitArrayPoolWriteStream:EnsureCapacity(int):this - mov rdx, gword ptr [rbx+0x10] - mov ecx, dword ptr [rbx+0x1C] - mov rdi, r14 - mov esi, r13d - mov r8d, r15d - mov rax, 0xD1FFAB1E ; code for System.Buffer:BlockCopy(System.Array,int,System.Array,int,int) - call [rax]System.Buffer:BlockCopy(System.Array,int,System.Array,int,int) - add dword ptr [rbx+0x1C], r15d - ;; size=53 bbWeight=1 PerfScore 17.75 + test rsi, rsi + je SHORT G_M28126_IG07 + test edx, edx + jl SHORT G_M28126_IG06 + mov eax, dword ptr [rsi+0x08] + mov r8d, eax + sub r8d, edx + movsxd r8, r8d + mov r9d, ecx + cmp r8, r9 + jl SHORT G_M28126_IG05 + mov edx, edx + add r9, rdx + cmp r9, rax + ja SHORT G_M28126_IG04 + lea rsi, bword ptr [rsi+rdx+0x10] + mov edx, ecx + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent+LimitArrayPoolWriteStream:Write(System.ReadOnlySpan`1[ubyte]):this + cmp dword ptr [rdi], edi + call [rax]System.Net.Http.HttpContent+LimitArrayPoolWriteStream:Write(System.ReadOnlySpan`1[ubyte]):this + nop + ;; size=61 bbWeight=1 PerfScore 16.25 G_M28126_IG03: - pop rbx - pop r13 - pop r14 - pop r15 pop rbp ret - ;; size=9 bbWeight=1 PerfScore 3.50 + ;; size=2 bbWeight=1 PerfScore 1.50 +G_M28126_IG04: + mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException() + call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException() + int3 + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M28126_IG05: + mov edi, 27 + mov esi, 16 + mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int,int) + call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int,int) + int3 + ;; size=23 bbWeight=0 PerfScore 0.00 +G_M28126_IG06: + mov edi, 90 + mov esi, 13 + mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int,int) + call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int,int) + int3 + ;; size=23 bbWeight=0 PerfScore 0.00 +G_M28126_IG07: + mov edi, 88 + mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int) + call [rax]System.ThrowHelper:ThrowArgumentNullException(int) + int3 + ;; size=18 bbWeight=0 PerfScore 0.00 -; Total bytes of code 87, prolog size 13, PerfScore 27.75, instruction count 29, allocated bytes for code 87 (MethodHash=28219221) for method System.Net.Http.HttpContent+LimitArrayPoolWriteStream:Write(ubyte[],int,int):this (FullOpts) +; Total bytes of code 144, prolog size 4, PerfScore 19.00, instruction count 42, allocated bytes for code 144 (MethodHash=28219221) for method System.Net.Http.HttpContent+LimitArrayPoolWriteStream:Write(ubyte[],int,int):this (FullOpts) ; ============================================================ ```
35 (22.58 % of base) - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:Write(System.ReadOnlySpan`1[ubyte]):this ```diff ; Assembly listing for method System.Net.Http.HttpContent+LimitArrayPoolWriteStream:Write(System.ReadOnlySpan`1[ubyte]):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data +; 0 inlinees with PGO data; 1 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T00] ( 8, 8 ) ref -> rbx this class-hnd single-def +; V00 this [V00,T00] ( 11, 8 ) ref -> rbx this class-hnd single-def ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def -;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -; V04 tmp2 [V04,T02] ( 4, 6 ) ref -> rax class-hnd single-def "Inlining Arg" -; V05 tmp3 [V05,T03] ( 4, 5 ) int -> rcx "Inlining Arg" -;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V08 tmp6 [V08 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -;* V09 tmp7 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -;* V10 tmp8 [V10 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -; V11 tmp9 [V11,T04] ( 2, 2 ) byref -> r14 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V12 tmp10 [V12,T01] ( 8, 6.50) int -> r15 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V13 tmp11 [V13,T05] ( 3, 2 ) byref -> rdi "field V03._reference (fldOffset=0x0)" P-INDEP -; V14 tmp12 [V14,T06] ( 3, 2 ) int -> rax "field V03._length (fldOffset=0x8)" P-INDEP -;* V15 tmp13 [V15 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP -;* V16 tmp14 [V16 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP +; V02 loc0 [V02,T04] ( 3, 2.50) ref -> r14 class-hnd single-def +; V03 loc1 [V03,T03] ( 5, 3.50) int -> r13 +;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" +;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" +; V09 tmp5 [V09,T07] ( 2, 2 ) byref -> rdi single-def "Inlining Arg" +; V10 tmp6 [V10,T08] ( 2, 2 ) int -> rax "Inlining Arg" +;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V12 tmp8 [V12 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V13 tmp9 [V13 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V14 tmp10 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +; V15 tmp11 [V15,T02] ( 3, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V16 tmp12 [V16,T01] ( 8, 5.50) int -> r15 single-def "field V01._length (fldOffset=0x8)" P-INDEP +;* V17 tmp13 [V17 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP +;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP +;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP +;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP +;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP +;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP +;* V23 tmp19 [V23 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP +;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP +;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP +;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP +; V27 cse0 [V27,T05] ( 3, 2.50) int -> rax "CSE #03: aggressive" +; V28 cse1 [V28,T06] ( 3, 2.50) int -> r12 "CSE #02: aggressive" ; ; Lcl frame size = 8 G_M24462_IG01: push rbp push r15 push r14 + push r13 + push r12 push rbx push rax - lea rbp, [rsp+0x20] + lea rbp, [rsp+0x30] mov rbx, rdi - mov r14, rsi mov r15d, edx - ;; size=21 bbWeight=1 PerfScore 6.25 + ;; size=22 bbWeight=1 PerfScore 8.00 G_M24462_IG02: - mov esi, r15d - add esi, dword ptr [rbx+0x1C] - mov rdi, rbx - mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent+LimitArrayPoolWriteStream:EnsureCapacity(int):this - call [rax]System.Net.Http.HttpContent+LimitArrayPoolWriteStream:EnsureCapacity(int):this - mov rax, gword ptr [rbx+0x10] - mov ecx, dword ptr [rbx+0x1C] - test rax, rax - je SHORT G_M24462_IG04 - ;; size=33 bbWeight=1 PerfScore 12.00 + mov edx, dword ptr [rbx+0x20] + sub edx, dword ptr [rbx+0x2C] + cmp edx, r15d + jl G_M24462_IG08 + mov r14, gword ptr [rbx+0x10] + mov r13d, dword ptr [rbx+0x28] + mov r12d, dword ptr [r14+0x08] + mov eax, r12d + sub eax, r13d + cmp eax, r15d + jge SHORT G_M24462_IG04 + ;; size=38 bbWeight=1 PerfScore 14.00 G_M24462_IG03: - mov edx, ecx - mov edi, r15d - add rdx, rdi - mov edi, dword ptr [rax+0x08] - cmp rdx, rdi - ja SHORT G_M24462_IG08 - mov ecx, ecx - lea rdi, bword ptr [rax+rcx+0x10] - mov eax, r15d - jmp SHORT G_M24462_IG05 - ;; size=28 bbWeight=0.50 PerfScore 3.75 -G_M24462_IG04: - or ecx, r15d - jne SHORT G_M24462_IG08 - xor rdi, rdi - xor eax, eax - ;; size=9 bbWeight=0.50 PerfScore 0.88 -G_M24462_IG05: - cmp r15d, eax - jg SHORT G_M24462_IG07 mov edx, r15d - mov rsi, r14 + mov rdi, rbx + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent+LimitArrayPoolWriteStream:GrowAndWrite(System.ReadOnlySpan`1[ubyte]):this + call [rax]System.Net.Http.HttpContent+LimitArrayPoolWriteStream:GrowAndWrite(System.ReadOnlySpan`1[ubyte]):this + jmp SHORT G_M24462_IG05 + ;; size=20 bbWeight=0.50 PerfScore 2.88 +G_M24462_IG04: + cmp r12d, r13d + jb SHORT G_M24462_IG07 + mov ecx, r13d + lea rdi, bword ptr [r14+rcx+0x10] + cmp r15d, eax + ja SHORT G_M24462_IG06 + mov edx, r15d mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong) call [rax]System.SpanHelpers:Memmove(byref,byref,ulong) - add dword ptr [rbx+0x1C], r15d - ;; size=27 bbWeight=1 PerfScore 8.00 -G_M24462_IG06: + add r13d, r15d + mov dword ptr [rbx+0x28], r13d + add dword ptr [rbx+0x2C], r15d + ;; size=44 bbWeight=0.50 PerfScore 5.75 +G_M24462_IG05: add rsp, 8 pop rbx + pop r12 + pop r13 pop r14 pop r15 pop rbp ret - ;; size=11 bbWeight=1 PerfScore 3.25 -G_M24462_IG07: + ;; size=15 bbWeight=1 PerfScore 4.25 +G_M24462_IG06: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort() call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort() int3 ;; size=13 bbWeight=0 PerfScore 0.00 -G_M24462_IG08: +G_M24462_IG07: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException() call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 +G_M24462_IG08: + movsxd rdi, dword ptr [rbx+0x20] + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent:CreateOverCapacityException(long):System.Net.Http.HttpRequestException + call [rax]System.Net.Http.HttpContent:CreateOverCapacityException(long):System.Net.Http.HttpRequestException + mov rdi, rax + call CORINFO_HELP_THROW + int3 + ;; size=25 bbWeight=0 PerfScore 0.00 -; Total bytes of code 155, prolog size 12, PerfScore 34.12, instruction count 51, allocated bytes for code 155 (MethodHash=7a51a071) for method System.Net.Http.HttpContent+LimitArrayPoolWriteStream:Write(System.ReadOnlySpan`1[ubyte]):this (FullOpts) +; Total bytes of code 190, prolog size 16, PerfScore 34.88, instruction count 58, allocated bytes for code 190 (MethodHash=7a51a071) for method System.Net.Http.HttpContent+LimitArrayPoolWriteStream:Write(System.ReadOnlySpan`1[ubyte]):this (FullOpts) ; ============================================================ ```
23 (69.70 % of base) - System.Net.Http.HttpContent:CreateContentReadStream(System.Threading.CancellationToken):System.IO.Stream:this ```diff ; Assembly listing for method System.Net.Http.HttpContent:CreateContentReadStream(System.Threading.CancellationToken):System.IO.Stream:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code -; rsp based frame +; rbp based frame ; partially interruptible ; No PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def ;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 2, 2 ) ref -> rsi single-def "field V01._source (fldOffset=0x0)" P-INDEP ; -; Lcl frame size = 0 +; Lcl frame size = 8 G_M34305_IG01: + push rbp push rbx + push rax + lea rbp, [rsp+0x10] mov rbx, rdi - ;; size=4 bbWeight=1 PerfScore 1.25 + ;; size=11 bbWeight=1 PerfScore 3.75 G_M34305_IG02: mov rdi, rbx mov rdx, rsi mov esi, 0xD1FFAB1E mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent:LoadIntoBuffer(long,System.Threading.CancellationToken):this call [rax]System.Net.Http.HttpContent:LoadIntoBuffer(long,System.Threading.CancellationToken):this - mov rax, gword ptr [rbx+0x10] - ;; size=27 bbWeight=1 PerfScore 6.00 + mov rdi, rbx + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent:CreateMemoryStreamFromBufferedContent():System.IO.MemoryStream:this + ;; size=36 bbWeight=1 PerfScore 4.50 G_M34305_IG03: + add rsp, 8 pop rbx - ret - ;; size=2 bbWeight=1 PerfScore 1.50 + pop rbp + tail.jmp [rax]System.Net.Http.HttpContent:CreateMemoryStreamFromBufferedContent():System.IO.MemoryStream:this + ;; size=9 bbWeight=1 PerfScore 3.25 -; Total bytes of code 33, prolog size 1, PerfScore 8.75, instruction count 10, allocated bytes for code 33 (MethodHash=0a9c79fe) for method System.Net.Http.HttpContent:CreateContentReadStream(System.Threading.CancellationToken):System.IO.Stream:this (FullOpts) +; Total bytes of code 56, prolog size 8, PerfScore 11.50, instruction count 16, allocated bytes for code 56 (MethodHash=0a9c79fe) for method System.Net.Http.HttpContent:CreateContentReadStream(System.Threading.CancellationToken):System.IO.Stream:this (FullOpts) ; ============================================================ ```
23 (69.70 % of base) - System.Net.Http.MultipartContent:<>n__1(System.Threading.CancellationToken):System.IO.Stream:this ```diff ; Assembly listing for method System.Net.Http.MultipartContent:<>n__1(System.Threading.CancellationToken):System.IO.Stream:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code -; rsp based frame +; rbp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def ;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 2, 2 ) ref -> rsi single-def "field V01._source (fldOffset=0x0)" P-INDEP ; -; Lcl frame size = 0 +; Lcl frame size = 8 G_M1337_IG01: + push rbp push rbx + push rax + lea rbp, [rsp+0x10] mov rbx, rdi - ;; size=4 bbWeight=1 PerfScore 1.25 + ;; size=11 bbWeight=1 PerfScore 3.75 G_M1337_IG02: mov rdi, rbx mov rdx, rsi mov esi, 0xD1FFAB1E mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent:LoadIntoBuffer(long,System.Threading.CancellationToken):this call [rax]System.Net.Http.HttpContent:LoadIntoBuffer(long,System.Threading.CancellationToken):this - mov rax, gword ptr [rbx+0x10] - ;; size=27 bbWeight=1 PerfScore 6.00 + mov rdi, rbx + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent:CreateMemoryStreamFromBufferedContent():System.IO.MemoryStream:this + ;; size=36 bbWeight=1 PerfScore 4.50 G_M1337_IG03: + add rsp, 8 pop rbx - ret - ;; size=2 bbWeight=1 PerfScore 1.50 + pop rbp + tail.jmp [rax]System.Net.Http.HttpContent:CreateMemoryStreamFromBufferedContent():System.IO.MemoryStream:this + ;; size=9 bbWeight=1 PerfScore 3.25 -; Total bytes of code 33, prolog size 1, PerfScore 8.75, instruction count 10, allocated bytes for code 33 (MethodHash=6164fac6) for method System.Net.Http.MultipartContent:<>n__1(System.Threading.CancellationToken):System.IO.Stream:this (FullOpts) +; Total bytes of code 56, prolog size 8, PerfScore 11.50, instruction count 16, allocated bytes for code 56 (MethodHash=6164fac6) for method System.Net.Http.MultipartContent:<>n__1(System.Threading.CancellationToken):System.IO.Stream:this (FullOpts) ; ============================================================ ```
15 (4.41 % of base) - System.Net.Http.HttpContent:Dispose(ubyte):this ```diff ; Assembly listing for method System.Net.Http.HttpContent:Dispose(ubyte):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data +; 0 inlinees with PGO data; 12 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 4.50) ref -> rbx this class-hnd single-def ; V01 arg1 [V01,T02] ( 3, 3 ) ubyte -> rsi single-def ; V02 loc0 [V02,T01] ( 11, 5 ) ref -> r15 class-hnd single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T06] ( 2, 2 ) ref -> rdi class-hnd single-def "dup spill" -; V05 tmp2 [V05,T03] ( 7, 3.50) ref -> rdi +; V05 tmp2 [V05,T04] ( 7, 3.50) ref -> rdi ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref single-def ;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" ;* V08 tmp5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V10 tmp7 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ; V11 tmp8 [V11,T08] ( 3, 1 ) ref -> r14 class-hnd single-def "Inline stloc first use temp" -;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" +; V12 tmp9 [V12,T03] ( 4, 4 ) ref -> rbx class-hnd exact single-def "Inlining Arg" ;* V13 tmp10 [V13,T09] ( 0, 0 ) ref -> zero-ref single-def "field V08._source (fldOffset=0x0)" P-INDEP ;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref "field V10._source (fldOffset=0x0)" P-INDEP -; V15 tmp12 [V15,T04] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V16 cse0 [V16,T05] ( 4, 2 ) ref -> r15 "CSE #01: aggressive" -; V17 cse1 [V17,T07] ( 3, 1.50) ref -> rdi "CSE #02: moderate" +; V15 cse0 [V15,T05] ( 4, 2 ) ref -> r15 "CSE #01: aggressive" +; V16 cse1 [V16,T07] ( 3, 1.50) ref -> rbx "CSE #02: moderate" ; ; Lcl frame size = 8 G_M18504_IG01: push rbp push r15 push r14 push rbx push rax lea rbp, [rsp+0x20] mov rbx, rdi ;; size=15 bbWeight=1 PerfScore 5.75 G_M18504_IG02: test sil, sil je G_M18504_IG10 ;; size=9 bbWeight=1 PerfScore 1.25 G_M18504_IG03: cmp byte ptr [rbx+0x20], 0 jne G_M18504_IG10 mov byte ptr [rbx+0x20], 1 mov r15, gword ptr [rbx+0x18] test r15, r15 je G_M18504_IG09 mov rsi, r15 mov rdi, 0xD1FFAB1E ; System.IO.Stream mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS call [rax]CORINFO_HELP_ISINSTANCEOFCLASS mov rdi, rax test rdi, rdi jne G_M18504_IG07 mov rsi, r15 mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[System.IO.Stream] mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS call [rax]CORINFO_HELP_ISINSTANCEOFCLASS mov r15, rax test r15, r15 je G_M18504_IG06 mov rdi, r15 mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Status():int:this call [rax]System.Threading.Tasks.Task:get_Status():int:this cmp eax, 5 jne SHORT G_M18504_IG06 mov edi, dword ptr [r15+0x34] and edi, 0xD1FFAB1E cmp edi, 0xD1FFAB1E je SHORT G_M18504_IG05 test dword ptr [r15+0x34], 0xD1FFAB1E jne SHORT G_M18504_IG04 mov rdi, r15 xor rdx, rdx mov esi, -1 mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:InternalWaitCore(int,System.Threading.CancellationToken):ubyte:this call [rax]System.Threading.Tasks.Task:InternalWaitCore(int,System.Threading.CancellationToken):ubyte:this ;; size=171 bbWeight=0.50 PerfScore 17.50 G_M18504_IG04: mov rdi, r15 mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:NotifyDebuggerOfWaitCompletionIfNecessary():ubyte:this call [rax]System.Threading.Tasks.Task:NotifyDebuggerOfWaitCompletionIfNecessary():ubyte:this mov edi, dword ptr [r15+0x34] and edi, 0xD1FFAB1E cmp edi, 0xD1FFAB1E je SHORT G_M18504_IG05 mov rdi, r15 mov esi, 1 mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:GetExceptions(ubyte):System.AggregateException:this call [rax]System.Threading.Tasks.Task:GetExceptions(ubyte):System.AggregateException:this mov r14, rax test r14, r14 jne SHORT G_M18504_IG12 ;; size=61 bbWeight=0.50 PerfScore 6.12 G_M18504_IG05: mov rdi, gword ptr [r15+0x38] jmp SHORT G_M18504_IG07 ;; size=6 bbWeight=0.50 PerfScore 2.00 G_M18504_IG06: xor rdi, rdi ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M18504_IG07: test rdi, rdi je SHORT G_M18504_IG08 mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x50] call [rax+0x18]System.IO.Stream:Close():this ;; size=15 bbWeight=0.50 PerfScore 4.12 G_M18504_IG08: xor rdi, rdi mov gword ptr [rbx+0x18], rdi ;; size=6 bbWeight=0.50 PerfScore 0.62 G_M18504_IG09: - mov rdi, gword ptr [rbx+0x10] - test rdi, rdi + mov rbx, gword ptr [rbx+0x10] + test rbx, rbx je SHORT G_M18504_IG10 - mov rax, qword ptr [rdi] - mov rax, qword ptr [rax+0x50] - call [rax+0x18]System.IO.Stream:Close():this - ;; size=19 bbWeight=0.50 PerfScore 5.12 + cmp byte ptr [rbx], bl + mov rdi, rbx + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent+LimitArrayPoolWriteStream:ReturnAllPooledBuffers():this + call [rax]System.Net.Http.HttpContent+LimitArrayPoolWriteStream:ReturnAllPooledBuffers():this + mov rdi, rbx + call System.GC:_SuppressFinalize(System.Object) + ;; size=34 bbWeight=0.50 PerfScore 5.50 G_M18504_IG10: nop ;; size=1 bbWeight=1 PerfScore 0.25 G_M18504_IG11: add rsp, 8 pop rbx pop r14 pop r15 pop rbp ret ;; size=11 bbWeight=1 PerfScore 3.25 G_M18504_IG12: mov rdi, r15 mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:UpdateExceptionObservedStatus():this call [rax]System.Threading.Tasks.Task:UpdateExceptionObservedStatus():this mov rdi, r14 call CORINFO_HELP_THROW int3 ;; size=24 bbWeight=0 PerfScore 0.00 -; Total bytes of code 340, prolog size 12, PerfScore 46.12, instruction count 88, allocated bytes for code 340 (MethodHash=f6afb7b7) for method System.Net.Http.HttpContent:Dispose(ubyte):this (FullOpts) +; Total bytes of code 355, prolog size 12, PerfScore 46.50, instruction count 91, allocated bytes for code 355 (MethodHash=f6afb7b7) for method System.Net.Http.HttpContent:Dispose(ubyte):this (FullOpts) ; ============================================================ ```

Note: some changes were skipped as they were too large to fit into a comment.

Larger list of diffs: https://gist.github.com/MihuBot/3884a22754a07c63889aa61e7ade65ba

MihuBot commented 2 days ago

Top method improvements

-361 (-49.79 % of base) - System.Net.Http.HttpContent:TryReadAsStream():System.IO.Stream:this ```diff ; Assembly listing for method System.Net.Http.HttpContent:TryReadAsStream():System.IO.Stream:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 15 single block inlinees; 9 inlinees without PGO data +; 0 inlinees with PGO data; 7 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T01] ( 9, 6 ) ref -> rbx this class-hnd single-def +; V00 this [V00,T00] ( 10, 6.50) ref -> rbx this class-hnd single-def ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def -; V02 loc1 [V02 ] ( 5, 2.50) struct (16) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op -; V03 loc2 [V03,T11] ( 3, 1.50) ref -> rax class-hnd single-def -; V04 loc3 [V04,T03] ( 10, 4.50) ref -> rbx class-hnd single-def -;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V06 tmp1 [V06,T05] ( 4, 4 ) ref -> r15 class-hnd single-def "impAppendStmt" -; V07 tmp2 [V07,T02] ( 7, 6 ) int -> r14 "impAppendStmt" -; V08 tmp3 [V08,T00] ( 9, 9 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" -; V09 tmp4 [V09,T10] ( 4, 2 ) ref -> r13 -;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V11 tmp6 [V11,T15] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" -; V12 tmp7 [V12,T04] ( 5, 4 ) int -> r12 "Inlining Arg" -;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V14 tmp9 [V14,T09] ( 3, 3 ) int -> r12 "dup spill" -; V15 tmp10 [V15,T17] ( 3, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" -;* V16 tmp11 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" -;* V17 tmp12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" -;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V19 tmp14 [V19 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" -; V20 tmp15 [V20,T14] ( 3, 1 ) ref -> r15 class-hnd single-def "Inline stloc first use temp" -; V21 tmp16 [V21 ] ( 3, 1.50) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V02._array (fldOffset=0x0)" P-DEP -; V22 tmp17 [V22 ] ( 3, 1.50) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V02._offset (fldOffset=0x8)" P-DEP -; V23 tmp18 [V23 ] ( 3, 1.50) int -> [rbp-0x2C] do-not-enreg[X] addr-exposed "field V02._count (fldOffset=0xc)" P-DEP -;* V24 tmp19 [V24,T16] ( 0, 0 ) ref -> zero-ref single-def "field V17._source (fldOffset=0x0)" P-INDEP -;* V25 tmp20 [V25 ] ( 0, 0 ) ref -> zero-ref "field V19._source (fldOffset=0x0)" P-INDEP -; V26 tmp21 [V26,T08] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V27 tmp22 [V27,T18] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V28 tmp23 [V28,T19] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V29 tmp24 [V29,T20] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V30 cse0 [V30,T07] ( 5, 3.12) ref -> r15 "CSE #02: moderate" -; V31 cse1 [V31,T12] ( 3, 1.50) ref -> rdi "CSE #01: moderate" -; V32 rat0 [V32,T06] ( 5, 3.75) ref -> rbx "replacement local" -; V33 rat1 [V33,T13] ( 3, 1.25) long -> rdi "CSE for expectedClsNode" +; V02 loc1 [V02,T05] ( 3, 1.50) ref -> rax class-hnd single-def +; V03 loc2 [V03,T01] ( 10, 4.50) ref -> rbx class-hnd single-def +;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +; V05 tmp1 [V05,T04] ( 4, 2 ) ref -> r15 +;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" +;* V08 tmp4 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" +;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V10 tmp6 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" +; V11 tmp7 [V11,T07] ( 3, 1 ) ref -> r15 class-hnd single-def "Inline stloc first use temp" +;* V12 tmp8 [V12,T08] ( 0, 0 ) ref -> zero-ref single-def "field V08._source (fldOffset=0x0)" P-INDEP +;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref "field V10._source (fldOffset=0x0)" P-INDEP +; V14 cse0 [V14,T03] ( 5, 3.12) ref -> r15 "CSE #01: aggressive" +; V15 rat0 [V15,T02] ( 5, 3.75) ref -> rbx "replacement local" +; V16 rat1 [V16,T06] ( 3, 1.25) long -> rdi "CSE for expectedClsNode" ; -; Lcl frame size = 24 +; Lcl frame size = 0 G_M29990_IG01: push rbp push r15 - push r14 - push r13 - push r12 push rbx - sub rsp, 24 - lea rbp, [rsp+0x40] - xor eax, eax - mov qword ptr [rbp-0x38], rax + lea rbp, [rsp+0x10] mov rbx, rdi - ;; size=28 bbWeight=1 PerfScore 8.25 + ;; size=12 bbWeight=1 PerfScore 3.75 G_M29990_IG02: cmp byte ptr [rbx+0x20], 0 - jne G_M29990_IG23 + jne G_M29990_IG18 mov r15, gword ptr [rbx+0x18] test r15, r15 je G_M29990_IG13 ;; size=23 bbWeight=1 PerfScore 7.25 G_M29990_IG03: mov rsi, r15 mov rdi, 0xD1FFAB1E ; System.IO.Stream mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS call [rax]CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax jne G_M29990_IG12 mov rbx, r15 test rbx, rbx je SHORT G_M29990_IG06 ;; size=42 bbWeight=0.50 PerfScore 3.25 G_M29990_IG04: mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[System.IO.Stream] cmp qword ptr [rbx], rdi je SHORT G_M29990_IG06 ;; size=15 bbWeight=0.25 PerfScore 1.06 G_M29990_IG05: mov rsi, r15 mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL call [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL mov rbx, rax ;; size=18 bbWeight=0.12 PerfScore 0.47 G_M29990_IG06: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Status():int:this cmp dword ptr [rdi], edi call [rax]System.Threading.Tasks.Task:get_Status():int:this cmp eax, 5 - jne G_M29990_IG10 + jne SHORT G_M29990_IG10 mov edi, dword ptr [rbx+0x34] and edi, 0xD1FFAB1E cmp edi, 0xD1FFAB1E je SHORT G_M29990_IG08 test dword ptr [rbx+0x34], 0xD1FFAB1E jne SHORT G_M29990_IG07 mov rdi, rbx xor rdx, rdx mov esi, -1 mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:InternalWaitCore(int,System.Threading.CancellationToken):ubyte:this call [rax]System.Threading.Tasks.Task:InternalWaitCore(int,System.Threading.CancellationToken):ubyte:this - ;; size=74 bbWeight=0.50 PerfScore 9.62 + ;; size=70 bbWeight=0.50 PerfScore 9.62 G_M29990_IG07: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:NotifyDebuggerOfWaitCompletionIfNecessary():ubyte:this call [rax]System.Threading.Tasks.Task:NotifyDebuggerOfWaitCompletionIfNecessary():ubyte:this mov edi, dword ptr [rbx+0x34] and edi, 0xD1FFAB1E cmp edi, 0xD1FFAB1E je SHORT G_M29990_IG08 mov rdi, rbx mov esi, 1 mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:GetExceptions(ubyte):System.AggregateException:this call [rax]System.Threading.Tasks.Task:GetExceptions(ubyte):System.AggregateException:this mov r15, rax test r15, r15 - jne G_M29990_IG18 - ;; size=64 bbWeight=0.50 PerfScore 6.12 + jne SHORT G_M29990_IG17 + ;; size=60 bbWeight=0.50 PerfScore 6.12 G_M29990_IG08: mov rax, gword ptr [rbx+0x38] ;; size=4 bbWeight=0.50 PerfScore 1.00 G_M29990_IG09: - add rsp, 24 pop rbx - pop r12 - pop r13 - pop r14 pop r15 pop rbp ret - ;; size=15 bbWeight=0.50 PerfScore 2.12 + ;; size=5 bbWeight=0.50 PerfScore 1.25 G_M29990_IG10: xor rax, rax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M29990_IG11: - add rsp, 24 pop rbx - pop r12 - pop r13 - pop r14 pop r15 pop rbp ret - ;; size=15 bbWeight=0.50 PerfScore 2.12 + ;; size=5 bbWeight=0.50 PerfScore 1.25 G_M29990_IG12: - add rsp, 24 pop rbx - pop r12 - pop r13 - pop r14 pop r15 pop rbp ret - ;; size=15 bbWeight=0.50 PerfScore 2.12 + ;; size=5 bbWeight=0.50 PerfScore 1.25 G_M29990_IG13: - mov rdi, gword ptr [rbx+0x10] - test rdi, rdi - jne SHORT G_M29990_IG17 - vxorps xmm0, xmm0, xmm0 - vmovdqu xmmword ptr [rbp-0x38], xmm0 - ;; size=18 bbWeight=0.50 PerfScore 2.29 + cmp gword ptr [rbx+0x10], 0 + je SHORT G_M29990_IG14 + mov rdi, rbx + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent:CreateMemoryStreamFromBufferedContent():System.IO.MemoryStream:this + call [rax]System.Net.Http.HttpContent:CreateMemoryStreamFromBufferedContent():System.IO.MemoryStream:this + mov r15, rax + jmp SHORT G_M29990_IG15 + ;; size=27 bbWeight=0.50 PerfScore 4.88 G_M29990_IG14: mov rdi, rbx mov rax, qword ptr [rbx] mov rax, qword ptr [rax+0x48] call [rax+0x18]System.Net.Http.HttpContent:TryCreateContentReadStream():System.IO.Stream:this - mov r13, rax + mov r15, rax ;; size=16 bbWeight=0.50 PerfScore 3.75 G_M29990_IG15: lea rdi, bword ptr [rbx+0x18] - mov rsi, r13 + mov rsi, r15 call CORINFO_HELP_ASSIGN_REF - mov rax, r13 + mov rax, r15 ;; size=15 bbWeight=0.50 PerfScore 1.00 G_M29990_IG16: - add rsp, 24 pop rbx - pop r12 - pop r13 - pop r14 pop r15 pop rbp ret - ;; size=15 bbWeight=0.50 PerfScore 2.12 + ;; size=5 bbWeight=0.50 PerfScore 1.25 G_M29990_IG17: - lea rsi, [rbp-0x38] - mov rax, qword ptr [rdi] - mov rax, qword ptr [rax+0x68] - call [rax+0x18]System.IO.MemoryStream:TryGetBuffer(byref):ubyte:this - test eax, eax - je SHORT G_M29990_IG14 - mov r15, gword ptr [rbp-0x38] - mov r14d, dword ptr [rbp-0x30] - mov rdi, 0xD1FFAB1E ; System.IO.MemoryStream - call CORINFO_HELP_NEWSFAST - mov r13, rax - mov r12d, dword ptr [rbp-0x2C] - test r15, r15 - je G_M29990_IG22 - test r14d, r14d - jl G_M29990_IG21 - test r12d, r12d - jl G_M29990_IG20 - mov edi, dword ptr [r15+0x08] - sub edi, r14d - cmp edi, r12d - jl SHORT G_M29990_IG19 - lea rdi, bword ptr [r13+0x10] - mov rsi, r15 - call CORINFO_HELP_ASSIGN_REF - mov dword ptr [r13+0x1C], r14d - mov dword ptr [r13+0x18], r14d - add r12d, r14d - mov dword ptr [r13+0x24], r12d - mov dword ptr [r13+0x20], r12d - mov word ptr [r13+0x29], 0 - mov byte ptr [r13+0x2B], 1 - jmp G_M29990_IG15 - ;; size=135 bbWeight=0.50 PerfScore 15.25 -G_M29990_IG18: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:UpdateExceptionObservedStatus():this call [rax]System.Threading.Tasks.Task:UpdateExceptionObservedStatus():this mov rdi, r15 call CORINFO_HELP_THROW int3 ;; size=24 bbWeight=0 PerfScore 0.00 -G_M29990_IG19: - mov rdi, 0xD1FFAB1E ; System.ArgumentException - call CORINFO_HELP_NEWSFAST - mov r14, rax - mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_InvalidOffLen():System.String - call [rax]System.SR:get_Argument_InvalidOffLen():System.String - mov rsi, rax - mov rdi, r14 - mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String):this - call [rax]System.ArgumentException:.ctor(System.String):this - mov rdi, r14 - call CORINFO_HELP_THROW - int3 - ;; size=57 bbWeight=0 PerfScore 0.00 -G_M29990_IG20: - mov edi, 0x3F3 - mov rsi, 0xD1FFAB1E - call CORINFO_HELP_STRCNS - mov rsi, rax - mov edi, r12d - mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String) - call [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String) - int3 - ;; size=39 bbWeight=0 PerfScore 0.00 -G_M29990_IG21: - mov edi, 0x135AE - mov rsi, 0xD1FFAB1E - call CORINFO_HELP_STRCNS - mov rsi, rax - mov edi, r14d - mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String) - call [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String) - int3 - ;; size=39 bbWeight=0 PerfScore 0.00 -G_M29990_IG22: - mov edi, 0x13968 - mov rsi, 0xD1FFAB1E - call CORINFO_HELP_STRCNS - mov rdi, rax - mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String) - call [rax]System.ArgumentNullException:Throw(System.String) - int3 - ;; size=36 bbWeight=0 PerfScore 0.00 -G_M29990_IG23: +G_M29990_IG18: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowObjectDisposedException(System.Object) call [rax]System.ThrowHelper:ThrowObjectDisposedException(System.Object) int3 ;; size=16 bbWeight=0 PerfScore 0.00 -; Total bytes of code 725, prolog size 25, PerfScore 67.95, instruction count 189, allocated bytes for code 725 (MethodHash=0dcf8ad9) for method System.Net.Http.HttpContent:TryReadAsStream():System.IO.Stream:this (FullOpts) +; Total bytes of code 364, prolog size 9, PerfScore 47.28, instruction count 101, allocated bytes for code 364 (MethodHash=0dcf8ad9) for method System.Net.Http.HttpContent:TryReadAsStream():System.IO.Stream:this (FullOpts) ; ============================================================ ```
-342 (-61.62 % of base) - System.Net.Http.HttpContent:ReadAsStream(System.Threading.CancellationToken):System.IO.Stream:this ```diff ; Assembly listing for method System.Net.Http.HttpContent:ReadAsStream(System.Threading.CancellationToken):System.IO.Stream:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data +; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T01] ( 10, 6.50) ref -> rbx this class-hnd single-def +; V00 this [V00,T00] ( 10, 6.50) ref -> rbx this class-hnd single-def ;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def ;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def -; V03 loc1 [V03 ] ( 5, 2.50) struct (16) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op -; V04 loc2 [V04,T09] ( 3, 1.50) ref -> rax class-hnd single-def -;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V06 tmp1 [V06,T12] ( 4, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" -; V07 tmp2 [V07,T04] ( 4, 4 ) ref -> r15 class-hnd single-def "impAppendStmt" -; V08 tmp3 [V08,T02] ( 7, 6 ) int -> r14 "impAppendStmt" -; V09 tmp4 [V09,T00] ( 9, 9 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" -; V10 tmp5 [V10,T08] ( 4, 2 ) ref -> r13 -;* V11 tmp6 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V12 tmp7 [V12,T11] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" -; V13 tmp8 [V13,T03] ( 5, 4 ) int -> r12 "Inlining Arg" -;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V15 tmp10 [V15,T07] ( 3, 3 ) int -> r12 "dup spill" -; V16 tmp11 [V16,T13] ( 3, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" -; V17 tmp12 [V17,T14] ( 2, 0 ) ref -> r15 class-hnd exact single-def "Inlining Arg" -; V18 tmp13 [V18,T05] ( 2, 1.50) ref -> r15 single-def "field V01._source (fldOffset=0x0)" P-INDEP -; V19 tmp14 [V19 ] ( 3, 1.50) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V03._array (fldOffset=0x0)" P-DEP -; V20 tmp15 [V20 ] ( 3, 1.50) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V03._offset (fldOffset=0x8)" P-DEP -; V21 tmp16 [V21 ] ( 3, 1.50) int -> [rbp-0x2C] do-not-enreg[X] addr-exposed "field V03._count (fldOffset=0xc)" P-DEP -; V22 tmp17 [V22,T06] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V23 tmp18 [V23,T15] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V24 tmp19 [V24,T16] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V25 tmp20 [V25,T17] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V26 cse0 [V26,T10] ( 3, 1.50) ref -> rdi "CSE #01: moderate" +; V03 loc1 [V03,T04] ( 3, 1.50) ref -> rax class-hnd single-def +;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +; V05 tmp1 [V05,T05] ( 4, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" +; V06 tmp2 [V06,T03] ( 4, 2 ) ref -> r15 +;* V07 tmp3 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V08 tmp4 [V08,T06] ( 2, 0 ) ref -> r15 class-hnd exact single-def "Inlining Arg" +; V09 tmp5 [V09,T01] ( 2, 1.50) ref -> rsi single-def "field V01._source (fldOffset=0x0)" P-INDEP +; V10 cse0 [V10,T02] ( 3, 2.50) ref -> rdi "CSE #01: aggressive" ; -; Lcl frame size = 24 +; Lcl frame size = 0 G_M11678_IG01: push rbp push r15 - push r14 - push r13 - push r12 push rbx - sub rsp, 24 - lea rbp, [rsp+0x40] - xor eax, eax - mov qword ptr [rbp-0x38], rax + lea rbp, [rsp+0x10] mov rbx, rdi - mov r15, rsi - ;; size=31 bbWeight=1 PerfScore 8.50 + ;; size=12 bbWeight=1 PerfScore 3.75 G_M11678_IG02: cmp byte ptr [rbx+0x20], 0 - jne G_M11678_IG15 - cmp gword ptr [rbx+0x18], 0 + jne G_M11678_IG10 + mov rdi, gword ptr [rbx+0x18] + test rdi, rdi je SHORT G_M11678_IG05 - ;; size=17 bbWeight=1 PerfScore 8.00 + ;; size=19 bbWeight=1 PerfScore 7.25 G_M11678_IG03: - mov rsi, gword ptr [rbx+0x18] + mov rsi, rdi mov rdi, 0xD1FFAB1E ; System.IO.Stream mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS call [rax]CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax - je G_M11678_IG10 - ;; size=35 bbWeight=0.50 PerfScore 3.38 + je SHORT G_M11678_IG09 + ;; size=30 bbWeight=0.50 PerfScore 2.50 G_M11678_IG04: - add rsp, 24 pop rbx - pop r12 - pop r13 - pop r14 pop r15 pop rbp ret - ;; size=15 bbWeight=0.50 PerfScore 2.12 + ;; size=5 bbWeight=0.50 PerfScore 1.25 G_M11678_IG05: - mov rdi, gword ptr [rbx+0x10] - test rdi, rdi - jne SHORT G_M11678_IG09 - vxorps xmm0, xmm0, xmm0 - vmovdqu xmmword ptr [rbp-0x38], xmm0 - ;; size=18 bbWeight=0.50 PerfScore 2.29 + cmp gword ptr [rbx+0x10], 0 + je SHORT G_M11678_IG06 + mov rdi, rbx + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent:CreateMemoryStreamFromBufferedContent():System.IO.MemoryStream:this + call [rax]System.Net.Http.HttpContent:CreateMemoryStreamFromBufferedContent():System.IO.MemoryStream:this + mov r15, rax + jmp SHORT G_M11678_IG07 + ;; size=27 bbWeight=0.50 PerfScore 4.88 G_M11678_IG06: mov rdi, rbx - mov rsi, r15 mov rax, qword ptr [rbx] mov rax, qword ptr [rax+0x48] call [rax]System.Net.Http.HttpContent:CreateContentReadStream(System.Threading.CancellationToken):System.IO.Stream:this - mov r13, rax - ;; size=18 bbWeight=0.50 PerfScore 3.88 + mov r15, rax + ;; size=15 bbWeight=0.50 PerfScore 3.75 G_M11678_IG07: lea rdi, bword ptr [rbx+0x18] - mov rsi, r13 + mov rsi, r15 call CORINFO_HELP_ASSIGN_REF - mov rax, r13 + mov rax, r15 ;; size=15 bbWeight=0.50 PerfScore 1.00 G_M11678_IG08: - add rsp, 24 pop rbx - pop r12 - pop r13 - pop r14 pop r15 pop rbp ret - ;; size=15 bbWeight=0.50 PerfScore 2.12 + ;; size=5 bbWeight=0.50 PerfScore 1.25 G_M11678_IG09: - lea rsi, [rbp-0x38] - mov rax, qword ptr [rdi] - mov rax, qword ptr [rax+0x68] - call [rax+0x18]System.IO.MemoryStream:TryGetBuffer(byref):ubyte:this - test eax, eax - je SHORT G_M11678_IG06 - mov r15, gword ptr [rbp-0x38] - mov r14d, dword ptr [rbp-0x30] - mov rdi, 0xD1FFAB1E ; System.IO.MemoryStream - call CORINFO_HELP_NEWSFAST - mov r13, rax - mov r12d, dword ptr [rbp-0x2C] - test r15, r15 - je G_M11678_IG14 - test r14d, r14d - jl G_M11678_IG13 - test r12d, r12d - jl G_M11678_IG12 - mov edi, dword ptr [r15+0x08] - sub edi, r14d - cmp edi, r12d - jl SHORT G_M11678_IG11 - lea rdi, bword ptr [r13+0x10] - mov rsi, r15 - call CORINFO_HELP_ASSIGN_REF - mov dword ptr [r13+0x1C], r14d - mov dword ptr [r13+0x18], r14d - add r12d, r14d - mov dword ptr [r13+0x24], r12d - mov dword ptr [r13+0x20], r12d - mov word ptr [r13+0x29], 0 - mov byte ptr [r13+0x2B], 1 - jmp G_M11678_IG07 - ;; size=135 bbWeight=0.50 PerfScore 15.25 -G_M11678_IG10: mov rdi, 0xD1FFAB1E ; System.Net.Http.HttpRequestException call CORINFO_HELP_NEWSFAST mov rbx, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_net_http_content_read_as_stream_has_task():System.String call [rax]System.SR:get_net_http_content_read_as_stream_has_task():System.String mov r15, rax mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Exception:.ctor():this call [rax]System.Exception:.ctor():this lea rdi, bword ptr [rbx+0x10] mov rsi, r15 call CORINFO_HELP_ASSIGN_REF mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=69 bbWeight=0 PerfScore 0.00 -G_M11678_IG11: - mov rdi, 0xD1FFAB1E ; System.ArgumentException - call CORINFO_HELP_NEWSFAST - mov r14, rax - mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_InvalidOffLen():System.String - call [rax]System.SR:get_Argument_InvalidOffLen():System.String - mov rsi, rax - mov rdi, r14 - mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String):this - call [rax]System.ArgumentException:.ctor(System.String):this - mov rdi, r14 - call CORINFO_HELP_THROW - int3 - ;; size=57 bbWeight=0 PerfScore 0.00 -G_M11678_IG12: - mov edi, 0x3F3 - mov rsi, 0xD1FFAB1E - call CORINFO_HELP_STRCNS - mov rsi, rax - mov edi, r12d - mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String) - call [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String) - int3 - ;; size=39 bbWeight=0 PerfScore 0.00 -G_M11678_IG13: - mov edi, 0x135AE - mov rsi, 0xD1FFAB1E - call CORINFO_HELP_STRCNS - mov rsi, rax - mov edi, r14d - mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String) - call [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String) - int3 - ;; size=39 bbWeight=0 PerfScore 0.00 -G_M11678_IG14: - mov edi, 0x13968 - mov rsi, 0xD1FFAB1E - call CORINFO_HELP_STRCNS - mov rdi, rax - mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String) - call [rax]System.ArgumentNullException:Throw(System.String) - int3 - ;; size=36 bbWeight=0 PerfScore 0.00 -G_M11678_IG15: +G_M11678_IG10: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowObjectDisposedException(System.Object) call [rax]System.ThrowHelper:ThrowObjectDisposedException(System.Object) int3 ;; size=16 bbWeight=0 PerfScore 0.00 -; Total bytes of code 555, prolog size 25, PerfScore 46.54, instruction count 140, allocated bytes for code 555 (MethodHash=e6f4d261) for method System.Net.Http.HttpContent:ReadAsStream(System.Threading.CancellationToken):System.IO.Stream:this (FullOpts) +; Total bytes of code 213, prolog size 9, PerfScore 25.62, instruction count 59, allocated bytes for code 213 (MethodHash=e6f4d261) for method System.Net.Http.HttpContent:ReadAsStream(System.Threading.CancellationToken):System.IO.Stream:this (FullOpts) ; ============================================================ ```
-269 (-43.25 % of base) - System.Net.Http.HttpContent:ReadAsStreamAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.IO.Stream]:this ```diff ; Assembly listing for method System.Net.Http.HttpContent:ReadAsStreamAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.IO.Stream]:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 14 single block inlinees; 10 inlinees without PGO data +; 0 inlinees with PGO data; 6 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T01] ( 10, 6.50) ref -> rbx this class-hnd single-def +; V00 this [V00,T00] ( 11, 7 ) ref -> rbx this class-hnd single-def ;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def ;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def -; V03 loc1 [V03 ] ( 5, 2.50) struct (16) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op -; V04 loc2 [V04,T14] ( 3, 1.50) ref -> rax class-hnd single-def -;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def -;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V07 tmp1 [V07,T04] ( 4, 4 ) ref -> r15 class-hnd single-def "impAppendStmt" -; V08 tmp2 [V08,T02] ( 7, 6 ) int -> r14 "impAppendStmt" -; V09 tmp3 [V09,T00] ( 9, 9 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" -; V10 tmp4 [V10,T11] ( 4, 2 ) ref -> r15 -;* V11 tmp5 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V12 tmp6 [V12,T18] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" -; V13 tmp7 [V13,T03] ( 5, 4 ) int -> r12 "Inlining Arg" -;* V14 tmp8 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V15 tmp9 [V15,T10] ( 3, 3 ) int -> r12 "dup spill" -; V16 tmp10 [V16,T19] ( 3, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" -; V17 tmp11 [V17,T17] ( 2, 1 ) ref -> r15 class-hnd "Inline return value spill temp" -;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" -; V19 tmp13 [V19,T05] ( 4, 4 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" -;* V20 tmp14 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" -;* V21 tmp15 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" -;* V22 tmp16 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V23 tmp17 [V23,T15] ( 3, 1.50) ref -> r14 class-hnd "Inline return value spill temp" -; V24 tmp18 [V24,T13] ( 2, 2 ) ref -> r15 ld-addr-op class-hnd single-def "Inlining Arg" -; V25 tmp19 [V25,T06] ( 4, 4 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" -;* V26 tmp20 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" -;* V27 tmp21 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" -;* V28 tmp22 [V28 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V29 tmp23 [V29,T07] ( 2, 1.50) ref -> r15 single-def "field V01._source (fldOffset=0x0)" P-INDEP -; V30 tmp24 [V30 ] ( 3, 1.50) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V03._array (fldOffset=0x0)" P-DEP -; V31 tmp25 [V31 ] ( 3, 1.50) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V03._offset (fldOffset=0x8)" P-DEP -; V32 tmp26 [V32 ] ( 3, 1.50) int -> [rbp-0x2C] do-not-enreg[X] addr-exposed "field V03._count (fldOffset=0xc)" P-DEP -;* V33 tmp27 [V33 ] ( 0, 0 ) ref -> zero-ref "field V20._source (fldOffset=0x0)" P-INDEP -;* V34 tmp28 [V34 ] ( 0, 0 ) ref -> zero-ref "field V26._source (fldOffset=0x0)" P-INDEP -; V35 tmp29 [V35,T09] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V36 tmp30 [V36,T20] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V37 tmp31 [V37,T21] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V38 tmp32 [V38,T22] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V39 cse0 [V39,T08] ( 4, 3 ) ref -> r14 "CSE #03: moderate" -; V40 cse1 [V40,T16] ( 3, 1.50) ref -> rdi "CSE #01: moderate" -; V41 cse2 [V41,T12] ( 4, 2 ) long -> rdi multi-def "CSE #02: moderate" +; V03 loc1 [V03,T08] ( 3, 1.50) ref -> rax class-hnd single-def +;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def +;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +; V06 tmp1 [V06,T06] ( 4, 2 ) ref -> r14 +;* V07 tmp2 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V08 tmp3 [V08,T09] ( 3, 1.50) ref -> r14 class-hnd "Inline return value spill temp" +; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> r15 ld-addr-op class-hnd single-def "Inlining Arg" +; V10 tmp5 [V10,T01] ( 4, 4 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" +;* V11 tmp6 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" +;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" +;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V14 tmp9 [V14,T10] ( 3, 1.50) ref -> r14 class-hnd "Inline return value spill temp" +; V15 tmp10 [V15,T07] ( 2, 2 ) ref -> r15 ld-addr-op class-hnd single-def "Inlining Arg" +; V16 tmp11 [V16,T02] ( 4, 4 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" +;* V17 tmp12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" +;* V18 tmp13 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" +;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V20 tmp15 [V20,T03] ( 2, 1.50) ref -> rsi single-def "field V01._source (fldOffset=0x0)" P-INDEP +;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref "field V11._source (fldOffset=0x0)" P-INDEP +;* V22 tmp17 [V22 ] ( 0, 0 ) ref -> zero-ref "field V17._source (fldOffset=0x0)" P-INDEP +;* V23 cse0 [V23,T12] ( 0, 0 ) byref -> zero-ref "CSE #03: moderate" +; V24 cse1 [V24,T04] ( 4, 3 ) ref -> r15 "CSE #02: moderate" +; V25 cse2 [V25,T11] ( 2, 1 ) long -> rdi "CSE #04: moderate" ; -; Lcl frame size = 24 +; Lcl frame size = 8 G_M63737_IG01: push rbp push r15 push r14 - push r13 - push r12 push rbx - sub rsp, 24 - lea rbp, [rsp+0x40] - xor eax, eax - mov qword ptr [rbp-0x38], rax + push rax + lea rbp, [rsp+0x20] mov rbx, rdi - mov r15, rsi - ;; size=31 bbWeight=1 PerfScore 8.50 + ;; size=15 bbWeight=1 PerfScore 5.75 G_M63737_IG02: cmp byte ptr [rbx+0x20], 0 - jne G_M63737_IG15 - mov r14, gword ptr [rbx+0x18] - test r14, r14 + jne G_M63737_IG14 + mov r15, gword ptr [rbx+0x18] + test r15, r15 je G_M63737_IG06 ;; size=23 bbWeight=1 PerfScore 7.25 G_M63737_IG03: - mov rsi, r14 + mov rsi, r15 mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[System.IO.Stream] mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS call [rax]CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax jne SHORT G_M63737_IG05 - mov rsi, r14 + mov rsi, r15 mov rdi, 0xD1FFAB1E ; System.IO.Stream mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS call [rax]CORINFO_HELP_CHKCASTCLASS mov r15, rax mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[System.IO.Stream] call CORINFO_HELP_NEWSFAST mov r14, rax mov dword ptr [r14+0x34], 0xD1FFAB1E lea rdi, bword ptr [r14+0x38] mov rsi, r15 call CORINFO_HELP_ASSIGN_REF lea rdi, bword ptr [rbx+0x18] mov rsi, r14 call CORINFO_HELP_ASSIGN_REF mov rax, r14 ;; size=111 bbWeight=0.50 PerfScore 7.62 G_M63737_IG04: - add rsp, 24 + add rsp, 8 pop rbx - pop r12 - pop r13 pop r14 pop r15 pop rbp ret - ;; size=15 bbWeight=0.50 PerfScore 2.12 + ;; size=11 bbWeight=0.50 PerfScore 1.62 G_M63737_IG05: - add rsp, 24 + add rsp, 8 pop rbx - pop r12 - pop r13 pop r14 pop r15 pop rbp ret - ;; size=15 bbWeight=0.50 PerfScore 2.12 + ;; size=11 bbWeight=0.50 PerfScore 1.62 G_M63737_IG06: - mov rdi, gword ptr [rbx+0x10] - test rdi, rdi - jne SHORT G_M63737_IG10 - vxorps xmm0, xmm0, xmm0 - vmovdqu xmmword ptr [rbp-0x38], xmm0 - ;; size=18 bbWeight=0.50 PerfScore 2.29 -G_M63737_IG07: + cmp gword ptr [rbx+0x10], 0 + je SHORT G_M63737_IG10 mov rdi, rbx + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent:CreateMemoryStreamFromBufferedContent():System.IO.MemoryStream:this + call [rax]System.Net.Http.HttpContent:CreateMemoryStreamFromBufferedContent():System.IO.MemoryStream:this + mov r15, rax + test r15, r15 + je SHORT G_M63737_IG07 + mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[System.IO.Stream] + call CORINFO_HELP_NEWSFAST + mov r14, rax + mov dword ptr [r14+0x34], 0xD1FFAB1E + lea rdi, bword ptr [r14+0x38] mov rsi, r15 + call CORINFO_HELP_ASSIGN_REF + jmp SHORT G_M63737_IG09 + ;; size=70 bbWeight=0.50 PerfScore 7.62 +G_M63737_IG07: + mov rdi, 0xD1FFAB1E ; global ptr + test byte ptr [rdi], 1 + je SHORT G_M63737_IG13 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M63737_IG08: + mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task`1[System.IO.Stream]:s_defaultResultTask + mov r14, gword ptr [rdi] + ;; size=13 bbWeight=0.50 PerfScore 1.12 +G_M63737_IG09: + jmp SHORT G_M63737_IG11 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M63737_IG10: + mov rdi, rbx mov rax, qword ptr [rbx] mov rax, qword ptr [rax+0x48] call [rax+0x10]System.Net.Http.HttpContent:CreateContentReadStreamAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.IO.Stream]:this - mov r15, rax - ;; size=19 bbWeight=0.50 PerfScore 3.88 -G_M63737_IG08: + mov r14, rax + ;; size=16 bbWeight=0.50 PerfScore 3.75 +G_M63737_IG11: lea rdi, bword ptr [rbx+0x18] - mov rsi, r15 + mov rsi, r14 call CORINFO_HELP_ASSIGN_REF - mov rax, r15 + mov rax, r14 ;; size=15 bbWeight=0.50 PerfScore 1.00 -G_M63737_IG09: - add rsp, 24 +G_M63737_IG12: + add rsp, 8 pop rbx - pop r12 - pop r13 pop r14 pop r15 pop rbp ret - ;; size=15 bbWeight=0.50 PerfScore 2.12 -G_M63737_IG10: - lea rsi, [rbp-0x38] - mov rax, qword ptr [rdi] - mov rax, qword ptr [rax+0x68] - call [rax+0x18]System.IO.MemoryStream:TryGetBuffer(byref):ubyte:this - test eax, eax - je SHORT G_M63737_IG07 - mov r15, gword ptr [rbp-0x38] - mov r14d, dword ptr [rbp-0x30] - mov rdi, 0xD1FFAB1E ; System.IO.MemoryStream - call CORINFO_HELP_NEWSFAST - mov r13, rax - mov r12d, dword ptr [rbp-0x2C] - test r15, r15 - je G_M63737_IG14 - test r14d, r14d - jl G_M63737_IG13 - test r12d, r12d - jl G_M63737_IG12 - mov edi, dword ptr [r15+0x08] - sub edi, r14d - cmp edi, r12d - jl SHORT G_M63737_IG11 - lea rdi, bword ptr [r13+0x10] - mov rsi, r15 - call CORINFO_HELP_ASSIGN_REF - mov dword ptr [r13+0x1C], r14d - mov dword ptr [r13+0x18], r14d - add r12d, r14d - mov dword ptr [r13+0x24], r12d - mov dword ptr [r13+0x20], r12d - mov word ptr [r13+0x29], 0 - mov byte ptr [r13+0x2B], 1 - mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[System.IO.Stream] - call CORINFO_HELP_NEWSFAST - mov r15, rax - mov dword ptr [r15+0x34], 0xD1FFAB1E - lea rdi, bword ptr [r15+0x38] - mov rsi, r13 - call CORINFO_HELP_ASSIGN_REF - jmp G_M63737_IG08 - ;; size=173 bbWeight=0.50 PerfScore 17.38 -G_M63737_IG11: - mov rdi, 0xD1FFAB1E ; System.ArgumentException - call CORINFO_HELP_NEWSFAST - mov r14, rax - mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_InvalidOffLen():System.String - call [rax]System.SR:get_Argument_InvalidOffLen():System.String - mov rsi, rax - mov rdi, r14 - mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String):this - call [rax]System.ArgumentException:.ctor(System.String):this - mov rdi, r14 - call CORINFO_HELP_THROW - int3 - ;; size=57 bbWeight=0 PerfScore 0.00 -G_M63737_IG12: - mov edi, 0x3F3 - mov rsi, 0xD1FFAB1E - call CORINFO_HELP_STRCNS - mov rsi, rax - mov edi, r12d - mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String) - call [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String) - int3 - ;; size=39 bbWeight=0 PerfScore 0.00 + ;; size=11 bbWeight=0.50 PerfScore 1.62 G_M63737_IG13: - mov edi, 0x135AE - mov rsi, 0xD1FFAB1E - call CORINFO_HELP_STRCNS - mov rsi, rax - mov edi, r14d - mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String) - call [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String) - int3 - ;; size=39 bbWeight=0 PerfScore 0.00 + mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[System.IO.Stream] + mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE + call [rax]CORINFO_HELP_GET_GCSTATIC_BASE + jmp SHORT G_M63737_IG08 + ;; size=24 bbWeight=0 PerfScore 0.00 G_M63737_IG14: - mov edi, 0x13968 - mov rsi, 0xD1FFAB1E - call CORINFO_HELP_STRCNS - mov rdi, rax - mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String) - call [rax]System.ArgumentNullException:Throw(System.String) - int3 - ;; size=36 bbWeight=0 PerfScore 0.00 -G_M63737_IG15: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowObjectDisposedException(System.Object) call [rax]System.ThrowHelper:ThrowObjectDisposedException(System.Object) int3 ;; size=16 bbWeight=0 PerfScore 0.00 -; Total bytes of code 622, prolog size 25, PerfScore 54.29, instruction count 157, allocated bytes for code 622 (MethodHash=f93f0706) for method System.Net.Http.HttpContent:ReadAsStreamAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.IO.Stream]:this (FullOpts) +; Total bytes of code 353, prolog size 12, PerfScore 42.12, instruction count 91, allocated bytes for code 353 (MethodHash=f93f0706) for method System.Net.Http.HttpContent:ReadAsStreamAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.IO.Stream]:this (FullOpts) ; ============================================================ ```
-167 (-77.31 % of base) - System.Net.Http.HttpContent:ReadBufferedContentAsString():System.String:this ```diff ; Assembly listing for method System.Net.Http.HttpContent:ReadBufferedContentAsString():System.String:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T00] ( 6, 4.50) ref -> rbx this class-hnd single-def -; V01 loc0 [V01 ] ( 6, 3 ) struct (16) [rbp-0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op -;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" -; V04 tmp2 [V04,T08] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" -; V05 tmp3 [V05,T02] ( 4, 4 ) ref -> rax class-hnd single-def "Inlining Arg" -; V06 tmp4 [V06 ] ( 4, 2 ) ref -> [rbp-0x18] do-not-enreg[X] addr-exposed "field V01._array (fldOffset=0x0)" P-DEP -; V07 tmp5 [V07 ] ( 4, 2 ) int -> [rbp-0x10] do-not-enreg[X] addr-exposed "field V01._offset (fldOffset=0x8)" P-DEP -; V08 tmp6 [V08 ] ( 4, 2 ) int -> [rbp-0x0C] do-not-enreg[X] addr-exposed "field V01._count (fldOffset=0xc)" P-DEP -;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref "field V03._array (fldOffset=0x0)" P-INDEP -;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "field V03._offset (fldOffset=0x8)" P-INDEP -;* V11 tmp9 [V11 ] ( 0, 0 ) int -> zero-ref "field V03._count (fldOffset=0xc)" P-INDEP -; V12 tmp10 [V12,T01] ( 3, 6 ) ref -> rdi single-def "argument with side effect" -; V13 tmp11 [V13,T03] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V14 tmp12 [V14,T04] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V15 tmp13 [V15,T06] ( 2, 2 ) ref -> rdx single-def "argument with side effect" -; V16 tmp14 [V16,T05] ( 3, 3 ) struct (16) [rbp-0x28] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" -; V17 cse0 [V17,T07] ( 3, 1.50) ref -> rdi "CSE #01: moderate" +; V00 this [V00,T00] ( 4, 4 ) ref -> rdi this class-hnd single-def +;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" +; V03 tmp2 [V03,T01] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V04 tmp3 [V04,T02] ( 2, 4 ) ref -> rbx single-def "argument with side effect" ; -; Lcl frame size = 40 +; Lcl frame size = 8 G_M14105_IG01: push rbp push rbx - sub rsp, 40 - lea rbp, [rsp+0x30] - xor eax, eax - mov qword ptr [rbp-0x28], rax - vxorps xmm8, xmm8, xmm8 - vmovdqa xmmword ptr [rbp-0x20], xmm8 - mov qword ptr [rbp-0x10], rax - mov rbx, rdi - ;; size=34 bbWeight=1 PerfScore 7.58 + push rax + lea rbp, [rsp+0x10] + ;; size=8 bbWeight=1 PerfScore 3.50 G_M14105_IG02: - mov rdi, gword ptr [rbx+0x10] - mov rax, qword ptr [rdi] - mov rax, qword ptr [rax+0x48] - call [rax+0x08]System.IO.Stream:get_Length():long:this - test rax, rax - je SHORT G_M14105_IG08 - ;; size=19 bbWeight=1 PerfScore 10.25 -G_M14105_IG03: - mov rdi, gword ptr [rbx+0x10] - test rdi, rdi - jne SHORT G_M14105_IG10 - vxorps xmm0, xmm0, xmm0 - vmovdqu xmmword ptr [rbp-0x18], xmm0 - ;; size=18 bbWeight=0.50 PerfScore 2.29 -G_M14105_IG04: - mov rdi, gword ptr [rbx+0x10] - mov rax, qword ptr [rdi] - mov rax, qword ptr [rax+0x68] - call [rax+0x30]System.IO.MemoryStream:ToArray():ubyte[]:this - test rax, rax - je SHORT G_M14105_IG11 - mov gword ptr [rbp-0x18], rax - xor edi, edi - mov dword ptr [rbp-0x10], edi - mov edi, dword ptr [rax+0x08] - mov dword ptr [rbp-0x0C], edi - ;; size=34 bbWeight=0.50 PerfScore 7.75 -G_M14105_IG05: - vmovdqu xmm0, xmmword ptr [rbp-0x18] - vmovdqu xmmword ptr [rbp-0x28], xmm0 - ;; size=10 bbWeight=0.50 PerfScore 2.00 -G_M14105_IG06: - mov rdi, rbx + mov rbx, gword ptr [rdi+0x10] mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent:get_Headers():System.Net.Http.Headers.HttpContentHeaders:this call [rax]System.Net.Http.HttpContent:get_Headers():System.Net.Http.Headers.HttpContentHeaders:this - mov rdx, rax - mov rdi, gword ptr [rbp-0x28] - mov rsi, qword ptr [rbp-0x20] - mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent:ReadBufferAsString(System.ArraySegment`1[ubyte],System.Net.Http.Headers.HttpContentHeaders):System.String - call [rax]System.Net.Http.HttpContent:ReadBufferAsString(System.ArraySegment`1[ubyte],System.Net.Http.Headers.HttpContentHeaders):System.String - nop - ;; size=39 bbWeight=0.50 PerfScore 4.62 -G_M14105_IG07: - add rsp, 40 + mov rsi, rax + mov rdi, rbx + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent:ReadBufferAsString(System.Net.Http.HttpContent+LimitArrayPoolWriteStream,System.Net.Http.Headers.HttpContentHeaders):System.String + ;; size=32 bbWeight=1 PerfScore 6.00 +G_M14105_IG03: + add rsp, 8 pop rbx pop rbp - ret - ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M14105_IG08: - mov rax, 0xD1FFAB1E ; '' - ;; size=10 bbWeight=0.50 PerfScore 0.12 -G_M14105_IG09: - add rsp, 40 - pop rbx - pop rbp - ret - ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M14105_IG10: - lea rsi, [rbp-0x18] - mov rax, qword ptr [rdi] - mov rax, qword ptr [rax+0x68] - call [rax+0x18]System.IO.MemoryStream:TryGetBuffer(byref):ubyte:this - test eax, eax - jne SHORT G_M14105_IG05 - jmp SHORT G_M14105_IG04 - ;; size=20 bbWeight=0.50 PerfScore 5.38 -G_M14105_IG11: - mov edi, 2 - mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int) - call [rax]System.ThrowHelper:ThrowArgumentNullException(int) - int3 - ;; size=18 bbWeight=0 PerfScore 0.00 + tail.jmp [rax]System.Net.Http.HttpContent:ReadBufferAsString(System.Net.Http.HttpContent+LimitArrayPoolWriteStream,System.Net.Http.Headers.HttpContentHeaders):System.String + ;; size=9 bbWeight=1 PerfScore 3.25 -; Total bytes of code 216, prolog size 31, PerfScore 42.25, instruction count 63, allocated bytes for code 216 (MethodHash=956cc8e6) for method System.Net.Http.HttpContent:ReadBufferedContentAsString():System.String:this (FullOpts) +; Total bytes of code 49, prolog size 8, PerfScore 12.75, instruction count 14, allocated bytes for code 49 (MethodHash=956cc8e6) for method System.Net.Http.HttpContent:ReadBufferedContentAsString():System.String:this (FullOpts) ; ============================================================ ```
-65 (-77.38 % of base) - System.Net.Http.HttpContent+LimitArrayPoolWriteStream:Dispose(ubyte):this ```diff ; Assembly listing for method System.Net.Http.HttpContent+LimitArrayPoolWriteStream:Dispose(ubyte):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rsp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data +; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def +; V00 this [V00,T00] ( 3, 3 ) ref -> rdi this class-hnd single-def ;* V01 arg1 [V01 ] ( 0, 0 ) ubyte -> zero-ref single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V03 tmp1 [V03,T01] ( 2, 4 ) ref -> rdi single-def "argument with side effect" ; -; Lcl frame size = 0 +; Lcl frame size = 8 G_M2610_IG01: - push rbx - mov rbx, rdi - ;; size=4 bbWeight=1 PerfScore 1.25 + push rax + ;; size=1 bbWeight=1 PerfScore 1.00 G_M2610_IG02: - mov rdi, 0xD1FFAB1E ; global ptr - test byte ptr [rdi], 1 - je SHORT G_M2610_IG05 - ;; size=15 bbWeight=1 PerfScore 4.25 + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent+LimitArrayPoolWriteStream:ReturnAllPooledBuffers():this + call [rax]System.Net.Http.HttpContent+LimitArrayPoolWriteStream:ReturnAllPooledBuffers():this + nop + ;; size=13 bbWeight=1 PerfScore 3.50 G_M2610_IG03: - mov rdi, 0xD1FFAB1E ; data for System.Buffers.ArrayPool`1[ubyte]:s_shared - mov rdi, gword ptr [rdi] - mov rsi, gword ptr [rbx+0x10] - xor edx, edx - mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this - cmp dword ptr [rdi], edi - call [rax]System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this - xor rax, rax - mov gword ptr [rbx+0x10], rax - ;; size=39 bbWeight=1 PerfScore 12.00 -G_M2610_IG04: - pop rbx + add rsp, 8 ret - ;; size=2 bbWeight=1 PerfScore 1.50 -G_M2610_IG05: - mov rdi, 0xD1FFAB1E ; System.Buffers.ArrayPool`1[ubyte] - mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE - call [rax]CORINFO_HELP_GET_GCSTATIC_BASE - jmp SHORT G_M2610_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00 + ;; size=5 bbWeight=1 PerfScore 1.25 -; Total bytes of code 84, prolog size 1, PerfScore 19.00, instruction count 20, allocated bytes for code 84 (MethodHash=86e9f5cd) for method System.Net.Http.HttpContent+LimitArrayPoolWriteStream:Dispose(ubyte):this (FullOpts) +; Total bytes of code 19, prolog size 1, PerfScore 5.75, instruction count 6, allocated bytes for code 19 (MethodHash=86e9f5cd) for method System.Net.Http.HttpContent+LimitArrayPoolWriteStream:Dispose(ubyte):this (FullOpts) ; ============================================================ ```

Note: some changes were skipped as they were too large to fit into a comment.

Larger list of diffs: https://gist.github.com/MihuBot/4379a87749009d123e966096eb2afd23

MihuBot commented 2 days ago

@MihaZupan