MihuBot / runtime-utils

0 stars 0 forks source link

[X64] [MihaZupan] Improve the throughput of SocketsHttpHandler's HTTP/1.1 connection pool #324

Open MihuBot opened 5 months ago

MihuBot commented 5 months ago

Build completed in 19 minutes.

Diffs

Diffs ``` Found 261 files with textual diffs. Summary of Code Size diffs: (Lower is better) Total bytes of base: 38726715 Total bytes of diff: 38726044 Total bytes of delta: -671 (-0.00 % of base) Total relative delta: 14.08 diff is an improvement. relative diff is a regression. Total byte diff includes -353 bytes from reconciling methods Base had 42 unique methods, 45505 unique bytes Diff had 45 unique methods, 45152 unique bytes Top file improvements (bytes): -671 : System.Net.Http.dasm (-0.08 % of base) 1 total files with Code Size differences (1 improved, 0 regressed), 255 unchanged. Top method regressions (bytes): 7803 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__91:MoveNext():this (FullOpts) (0 base, 1 diff methods) 4920 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__105:MoveNext():this (FullOpts) (0 base, 1 diff methods) 3753 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__85:MoveNext():this (FullOpts) (0 base, 1 diff methods) 3282 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__88:MoveNext():this (FullOpts) (0 base, 1 diff methods) 3004 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__106:MoveNext():this (FullOpts) (0 base, 1 diff methods) 2751 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__84:MoveNext():this (FullOpts) (0 base, 1 diff methods) 2278 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__80:MoveNext():this (FullOpts) (0 base, 1 diff methods) 1787 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<g__DisableHttp2ConnectionAsync|124_0>d:MoveNext():this (FullOpts) (0 base, 1 diff methods) 1762 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__111:MoveNext():this (FullOpts) (0 base, 1 diff methods) 1668 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__112:MoveNext():this (FullOpts) (0 base, 1 diff methods) 1645 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__89:MoveNext():this (FullOpts) (0 base, 1 diff methods) 1642 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__113:MoveNext():this (FullOpts) (0 base, 1 diff methods) 1535 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:g__IsUsableConnection|127_3(System.Net.Http.HttpConnectionBase,long,System.TimeSpan,System.TimeSpan):ubyte (FullOpts) (0 base, 1 diff methods) 1525 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__109:MoveNext():this (FullOpts) (0 base, 1 diff methods) 1469 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__107:MoveNext():this (FullOpts) (0 base, 1 diff methods) 1144 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__110:MoveNext():this (FullOpts) (0 base, 1 diff methods) 955 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:ProcessHttp11RequestQueue(System.Net.Http.HttpConnection):this (FullOpts) (0 base, 1 diff methods) 431 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:g__ScavengeConnectionQueue|127_1(System.Collections.Concurrent.ConcurrentQueue`1[System.Net.Http.HttpConnection],byref,long,System.TimeSpan,System.TimeSpan) (FullOpts) (0 base, 1 diff methods) 414 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:AddNewHttp11Connection(System.Net.Http.HttpConnection,System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.Net.Http.HttpConnection]):this (FullOpts) (0 base, 1 diff methods) 242 (1,423.53 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:RecycleHttp11Connection(System.Net.Http.HttpConnection):this (FullOpts) 190 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:ReturnHttp11Connection(System.Net.Http.HttpConnection):this (FullOpts) (0 base, 1 diff methods) 168 (18.38 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:Dispose():this (FullOpts) 164 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c:b__127_0(System.Object):this (FullOpts) (0 base, 1 diff methods) 142 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c__DisplayClass96_0:b__0(System.Threading.Tasks.Task):this (FullOpts) (0 base, 1 diff methods) 121 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c:b__93_0(System.Object):this (FullOpts) (0 base, 1 diff methods) 88 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:g__DisableHttp2ConnectionAsync|124_0(System.Net.Http.Http2Connection):System.Threading.Tasks.Task:this (FullOpts) (0 base, 1 diff methods) 87 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:g__GetRemoteEndPoint|105_0(System.IO.Stream):System.Net.IPEndPoint (FullOpts) (0 base, 1 diff methods) 70 (4.38 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:CheckForHttp2ConnectionInjection():this (FullOpts) 61 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c:b__106_0(System.Object):this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<g__DisableHttp2ConnectionAsync|124_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.HttpConnectionPool+d__80:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__85:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__109:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__105:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__106:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__110:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__111:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__107:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__112:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__113:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__88:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__84:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__91:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__89:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 19 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c:b__127_4(System.Net.Http.HttpConnectionBase):this (FullOpts) (0 base, 1 diff methods) 19 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c:b__126_0(System.Net.Http.HttpConnectionBase):this (FullOpts) (0 base, 1 diff methods) 15 (1.81 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:CleanCacheAndDisposeIfUnused():ubyte:this (FullOpts) 12 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c__DisplayClass96_0:b__1(System.Threading.Tasks.Task):this (FullOpts) (0 base, 1 diff methods) 3 (0.18 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:CheckForHttp11ConnectionInjection():this (FullOpts) 1 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c__DisplayClass96_0:.ctor():this (FullOpts) (0 base, 1 diff methods) Top method improvements (bytes): -7796 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__89:MoveNext():this (FullOpts) (1 base, 0 diff methods) -4920 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__103:MoveNext():this (FullOpts) (1 base, 0 diff methods) -3753 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__83:MoveNext():this (FullOpts) (1 base, 0 diff methods) -3289 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__86:MoveNext():this (FullOpts) (1 base, 0 diff methods) -3004 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__104:MoveNext():this (FullOpts) (1 base, 0 diff methods) -2756 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__82:MoveNext():this (FullOpts) (1 base, 0 diff methods) -2333 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:ReturnHttp11Connection(System.Net.Http.HttpConnection,ubyte,System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.Net.Http.HttpConnection]):this (FullOpts) (1 base, 0 diff methods) -2283 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__79:MoveNext():this (FullOpts) (1 base, 0 diff methods) -1787 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<g__DisableHttp2ConnectionAsync|120_0>d:MoveNext():this (FullOpts) (1 base, 0 diff methods) -1762 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__109:MoveNext():this (FullOpts) (1 base, 0 diff methods) -1668 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__110:MoveNext():this (FullOpts) (1 base, 0 diff methods) -1645 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__87:MoveNext():this (FullOpts) (1 base, 0 diff methods) -1642 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__111:MoveNext():this (FullOpts) (1 base, 0 diff methods) -1535 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:g__IsUsableConnection|123_2(System.Net.Http.HttpConnectionBase,long,System.TimeSpan,System.TimeSpan):ubyte (FullOpts) (1 base, 0 diff methods) -1525 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__107:MoveNext():this (FullOpts) (1 base, 0 diff methods) -1469 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__105:MoveNext():this (FullOpts) (1 base, 0 diff methods) -1144 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__108:MoveNext():this (FullOpts) (1 base, 0 diff methods) -657 (-22.95 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:ReturnHttp2Connection(System.Net.Http.Http2Connection,ubyte,System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.Net.Http.Http2Connection]):this (FullOpts) -164 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c:b__123_0(System.Object):this (FullOpts) (1 base, 0 diff methods) -142 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c__DisplayClass94_0:b__0(System.Threading.Tasks.Task):this (FullOpts) (1 base, 0 diff methods) -121 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c:b__91_0(System.Object):this (FullOpts) (1 base, 0 diff methods) -116 (-12.85 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:TryGetPooledHttp11Connection(System.Net.Http.HttpRequestMessage,ubyte,byref,byref):ubyte:this (FullOpts) -88 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:g__DisableHttp2ConnectionAsync|120_0(System.Net.Http.Http2Connection):System.Threading.Tasks.Task:this (FullOpts) (1 base, 0 diff methods) -87 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:g__GetRemoteEndPoint|103_0(System.IO.Stream):System.Net.IPEndPoint (FullOpts) (1 base, 0 diff methods) -61 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c:b__104_0(System.Object):this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<g__DisableHttp2ConnectionAsync|120_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.HttpConnectionPool+d__79:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__83:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__107:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__103:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__104:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__108:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__109:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__105:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__110:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__111:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__86:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__82:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__89:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__87:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -31 (-1.57 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:.ctor(System.Net.Http.HttpConnectionPoolManager,ubyte,System.String,int,System.String,System.Uri):this (FullOpts) -19 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c:b__123_3(System.Net.Http.HttpConnectionBase):this (FullOpts) (1 base, 0 diff methods) -19 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c:b__122_0(System.Net.Http.HttpConnectionBase):this (FullOpts) (1 base, 0 diff methods) -12 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c__DisplayClass94_0:b__1(System.Threading.Tasks.Task):this (FullOpts) (1 base, 0 diff methods) -7 (-0.61 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:TryGetPooledHttp2Connection(System.Net.Http.HttpRequestMessage,byref,byref):ubyte:this (FullOpts) -5 (-2.03 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnection:ReturnConnectionToPool():this (FullOpts) -1 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c__DisplayClass94_0:.ctor():this (FullOpts) (1 base, 0 diff methods) Top method regressions (percentages): 1535 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:g__IsUsableConnection|127_3(System.Net.Http.HttpConnectionBase,long,System.TimeSpan,System.TimeSpan):ubyte (FullOpts) (0 base, 1 diff methods) 431 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:g__ScavengeConnectionQueue|127_1(System.Collections.Concurrent.ConcurrentQueue`1[System.Net.Http.HttpConnection],byref,long,System.TimeSpan,System.TimeSpan) (FullOpts) (0 base, 1 diff methods) 87 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:g__GetRemoteEndPoint|105_0(System.IO.Stream):System.Net.IPEndPoint (FullOpts) (0 base, 1 diff methods) 88 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:g__DisableHttp2ConnectionAsync|124_0(System.Net.Http.Http2Connection):System.Threading.Tasks.Task:this (FullOpts) (0 base, 1 diff methods) 414 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:AddNewHttp11Connection(System.Net.Http.HttpConnection,System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.Net.Http.HttpConnection]):this (FullOpts) (0 base, 1 diff methods) 955 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:ProcessHttp11RequestQueue(System.Net.Http.HttpConnection):this (FullOpts) (0 base, 1 diff methods) 190 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:ReturnHttp11Connection(System.Net.Http.HttpConnection):this (FullOpts) (0 base, 1 diff methods) 1787 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<g__DisableHttp2ConnectionAsync|124_0>d:MoveNext():this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<g__DisableHttp2ConnectionAsync|124_0>d:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 1 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c__DisplayClass96_0:.ctor():this (FullOpts) (0 base, 1 diff methods) 142 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c__DisplayClass96_0:b__0(System.Threading.Tasks.Task):this (FullOpts) (0 base, 1 diff methods) 12 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c__DisplayClass96_0:b__1(System.Threading.Tasks.Task):this (FullOpts) (0 base, 1 diff methods) 164 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c:b__127_0(System.Object):this (FullOpts) (0 base, 1 diff methods) 19 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c:b__127_4(System.Net.Http.HttpConnectionBase):this (FullOpts) (0 base, 1 diff methods) 61 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c:b__106_0(System.Object):this (FullOpts) (0 base, 1 diff methods) 19 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c:b__126_0(System.Net.Http.HttpConnectionBase):this (FullOpts) (0 base, 1 diff methods) 121 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c:b__93_0(System.Object):this (FullOpts) (0 base, 1 diff methods) 2278 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__80:MoveNext():this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__80:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 3753 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__85:MoveNext():this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__85:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 1525 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__109:MoveNext():this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__109:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 4920 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__105:MoveNext():this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__105:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 3004 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__106:MoveNext():this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__106:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 1144 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__110:MoveNext():this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__110:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 1762 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__111:MoveNext():this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__111:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 1469 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__107:MoveNext():this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__107:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 1668 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__112:MoveNext():this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__112:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 1642 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__113:MoveNext():this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__113:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 3282 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__88:MoveNext():this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__88:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 2751 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__84:MoveNext():this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__84:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 7803 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__91:MoveNext():this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__91:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 1645 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__89:MoveNext():this (FullOpts) (0 base, 1 diff methods) 32 (Infinity of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__89:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (0 base, 1 diff methods) 242 (1,423.53 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:RecycleHttp11Connection(System.Net.Http.HttpConnection):this (FullOpts) 168 (18.38 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:Dispose():this (FullOpts) 70 (4.38 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:CheckForHttp2ConnectionInjection():this (FullOpts) 15 (1.81 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:CleanCacheAndDisposeIfUnused():ubyte:this (FullOpts) 3 (0.18 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:CheckForHttp11ConnectionInjection():this (FullOpts) Top method improvements (percentages): -1535 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:g__IsUsableConnection|123_2(System.Net.Http.HttpConnectionBase,long,System.TimeSpan,System.TimeSpan):ubyte (FullOpts) (1 base, 0 diff methods) -87 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:g__GetRemoteEndPoint|103_0(System.IO.Stream):System.Net.IPEndPoint (FullOpts) (1 base, 0 diff methods) -88 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:g__DisableHttp2ConnectionAsync|120_0(System.Net.Http.Http2Connection):System.Threading.Tasks.Task:this (FullOpts) (1 base, 0 diff methods) -2333 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:ReturnHttp11Connection(System.Net.Http.HttpConnection,ubyte,System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.Net.Http.HttpConnection]):this (FullOpts) (1 base, 0 diff methods) -1787 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<g__DisableHttp2ConnectionAsync|120_0>d:MoveNext():this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<g__DisableHttp2ConnectionAsync|120_0>d:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -1 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c__DisplayClass94_0:.ctor():this (FullOpts) (1 base, 0 diff methods) -142 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c__DisplayClass94_0:b__0(System.Threading.Tasks.Task):this (FullOpts) (1 base, 0 diff methods) -12 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c__DisplayClass94_0:b__1(System.Threading.Tasks.Task):this (FullOpts) (1 base, 0 diff methods) -164 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c:b__123_0(System.Object):this (FullOpts) (1 base, 0 diff methods) -19 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c:b__123_3(System.Net.Http.HttpConnectionBase):this (FullOpts) (1 base, 0 diff methods) -61 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c:b__104_0(System.Object):this (FullOpts) (1 base, 0 diff methods) -19 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c:b__122_0(System.Net.Http.HttpConnectionBase):this (FullOpts) (1 base, 0 diff methods) -121 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+<>c:b__91_0(System.Object):this (FullOpts) (1 base, 0 diff methods) -2283 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__79:MoveNext():this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__79:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -3753 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__83:MoveNext():this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__83:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -1525 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__107:MoveNext():this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__107:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -4920 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__103:MoveNext():this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__103:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -3004 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__104:MoveNext():this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__104:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -1144 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__108:MoveNext():this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__108:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -1762 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__109:MoveNext():this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__109:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -1469 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__105:MoveNext():this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__105:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -1668 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__110:MoveNext():this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__110:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -1642 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__111:MoveNext():this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__111:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -3289 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__86:MoveNext():this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__86:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -2756 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__82:MoveNext():this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__82:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -7796 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__89:MoveNext():this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__89:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -1645 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__87:MoveNext():this (FullOpts) (1 base, 0 diff methods) -32 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool+d__87:SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine):this (FullOpts) (1 base, 0 diff methods) -657 (-22.95 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:ReturnHttp2Connection(System.Net.Http.Http2Connection,ubyte,System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.Net.Http.Http2Connection]):this (FullOpts) -116 (-12.85 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:TryGetPooledHttp11Connection(System.Net.Http.HttpRequestMessage,ubyte,byref,byref):ubyte:this (FullOpts) -5 (-2.03 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnection:ReturnConnectionToPool():this (FullOpts) -31 (-1.57 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:.ctor(System.Net.Http.HttpConnectionPoolManager,ubyte,System.String,int,System.String,System.Uri):this (FullOpts) -7 (-0.61 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:TryGetPooledHttp2Connection(System.Net.Http.HttpRequestMessage,byref,byref):ubyte:this (FullOpts) 97 total methods with Code Size differences (47 improved, 50 regressed), 239573 unchanged. -------------------------------------------------------------------------------- ```

Artifacts:

MihuBot commented 5 months ago

Top method regressions

242 (1,423.53 % of base) - System.Net.Http.HttpConnectionPool:RecycleHttp11Connection(System.Net.Http.HttpConnection):this ```diff ; Assembly listing for method System.Net.Http.HttpConnectionPool:RecycleHttp11Connection(System.Net.Http.HttpConnection):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code -; rsp based frame -; fully interruptible +; rbp based frame +; partially interruptible ; No PGO data +; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T00] ( 3, 3 ) ref -> rdi this class-hnd single-def -; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def -;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +; V00 this [V00,T01] ( 4, 3.50) ref -> r15 this class-hnd single-def +; V01 arg1 [V01,T00] ( 9, 6 ) ref -> rbx class-hnd single-def +; V02 OutArgs [V02 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" +; V04 tmp2 [V04,T03] ( 3, 3 ) ref -> rdi class-hnd exact single-def "dup spill" +; V05 tmp3 [V05,T08] ( 2, 1 ) ref -> r15 single-def +;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref single-def +;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def +; V08 tmp6 [V08,T06] ( 3, 1.50) int -> r14 +; V09 tmp7 [V09,T02] ( 4, 4 ) ref -> rdi class-hnd single-def "dup spill" +; V10 tmp8 [V10,T04] ( 2, 2 ) int -> r13 "impAppendStmt" +;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref single-def +;* V12 tmp10 [V12 ] ( 0, 0 ) int -> zero-ref +;* V13 tmp11 [V13 ] ( 0, 0 ) int -> zero-ref +;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref single-def +;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref single-def +;* V16 tmp14 [V16 ] ( 0, 0 ) int -> zero-ref +;* V17 tmp15 [V17 ] ( 0, 0 ) int -> zero-ref +; V18 tmp16 [V18,T07] ( 3, 1.50) int -> r8 +; V19 cse0 [V19,T05] ( 3, 1.50) ref -> r15 "CSE #01: moderate" ; -; Lcl frame size = 0 +; Lcl frame size = 16 G_M44648_IG01: - ;; size=0 bbWeight=1 PerfScore 0.00 + push rbp + push r15 + push r14 + push r13 + push rbx + sub rsp, 16 + lea rbp, [rsp+0x30] + mov r15, rdi + mov rbx, rsi + ;; size=23 bbWeight=1 PerfScore 6.25 G_M44648_IG02: - xor edx, edx - xor rcx, rcx - mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool:ReturnHttp11Connection(System.Net.Http.HttpConnection,ubyte,System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.Net.Http.HttpConnection]):this - ;; size=14 bbWeight=1 PerfScore 0.75 + mov rdi, r15 + mov rsi, rbx + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool:CheckExpirationOnReturn(System.Net.Http.HttpConnectionBase):ubyte:this + call [rax]System.Net.Http.HttpConnectionPool:CheckExpirationOnReturn(System.Net.Http.HttpConnectionBase):ubyte:this + test eax, eax + je G_M44648_IG10 + ;; size=26 bbWeight=1 PerfScore 5.00 G_M44648_IG03: - tail.jmp [rax]System.Net.Http.HttpConnectionPool:ReturnHttp11Connection(System.Net.Http.HttpConnection,ubyte,System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.Net.Http.HttpConnection]):this - ;; size=3 bbWeight=1 PerfScore 2.00 + mov rdi, 0xD1FFAB1E ; const ptr + mov r15, gword ptr [rdi] + cmp byte ptr [r15+0x9D], 0 + je SHORT G_M44648_IG08 + mov rdi, gword ptr [rbx+0x40] + test rdi, rdi + jne SHORT G_M44648_IG04 + xor r14d, r14d + jmp SHORT G_M44648_IG05 + ;; size=37 bbWeight=0.50 PerfScore 5.88 +G_M44648_IG04: + mov rax, 0xD1FFAB1E ; const ptr + mov rax, qword ptr [rax] + call [rax+0x18]System.Object:GetHashCode():int:this + mov r14d, eax + ;; size=19 bbWeight=0.50 PerfScore 2.75 +G_M44648_IG05: + mov rdi, rbx + call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int + mov r13d, eax + mov rdi, gword ptr [rbx+0x58] + test rdi, rdi + jne SHORT G_M44648_IG06 + xor r8d, r8d + jmp SHORT G_M44648_IG07 + ;; size=25 bbWeight=0.50 PerfScore 3.50 +G_M44648_IG06: + mov rax, qword ptr [rdi] + mov rax, qword ptr [rax+0x40] + call [rax+0x18]System.Object:GetHashCode():int:this + mov r8d, eax + ;; size=13 bbWeight=0.50 PerfScore 3.62 +G_M44648_IG07: + mov rdi, 0xD1FFAB1E ; 'Disposing HTTP/1.1 connection when returning to pool. Connectio' -; Total bytes of code 17, prolog size 0, PerfScore 2.75, instruction count 4, allocated bytes for code 17 (MethodHash=191f5197) for method System.Net.Http.HttpConnectionPool:RecycleHttp11Connection(System.Net.Http.HttpConnection):this (FullOpts) + mov gword ptr [rsp], rdi + mov rdi, r15 + mov edx, r14d + mov ecx, r13d + mov esi, 8 + mov r9, 0xD1FFAB1E ; 'RecycleHttp11Connection' + + mov rax, 0xD1FFAB1E ; code for System.Net.NetEventSource:WriteEvent(int,int,int,int,System.String,System.String):this + call [rax]System.Net.NetEventSource:WriteEvent(int,int,int,int,System.String,System.String):this + ;; size=50 bbWeight=0.50 PerfScore 2.88 +G_M44648_IG08: + cmp byte ptr [rbx], bl + mov rdi, rbx + mov esi, 1 + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnection:Dispose(ubyte):this + ;; size=20 bbWeight=0.50 PerfScore 1.88 +G_M44648_IG09: + add rsp, 16 + pop rbx + pop r13 + pop r14 + pop r15 + pop rbp + tail.jmp [rax]System.Net.Http.HttpConnection:Dispose(ubyte):this + ;; size=15 bbWeight=0.50 PerfScore 2.38 +G_M44648_IG10: + mov rdi, r15 + mov rsi, rbx + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool:ReturnHttp11Connection(System.Net.Http.HttpConnection):this + ;; size=16 bbWeight=0.50 PerfScore 0.38 +G_M44648_IG11: + add rsp, 16 + pop rbx + pop r13 + pop r14 + pop r15 + pop rbp + tail.jmp [rax]System.Net.Http.HttpConnectionPool:ReturnHttp11Connection(System.Net.Http.HttpConnection):this + ;; size=15 bbWeight=0.50 PerfScore 2.38 + +; Total bytes of code 259, prolog size 17, PerfScore 36.88, instruction count 70, allocated bytes for code 259 (MethodHash=191f5197) for method System.Net.Http.HttpConnectionPool:RecycleHttp11Connection(System.Net.Http.HttpConnection):this (FullOpts) ```
15 (1.81 % of base) - System.Net.Http.HttpConnectionPool:CleanCacheAndDisposeIfUnused():ubyte:this ```diff ; Assembly listing for method System.Net.Http.HttpConnectionPool:CleanCacheAndDisposeIfUnused():ubyte:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data ; 0 inlinees with PGO data; 8 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T00] ( 13, 13 ) ref -> rbx this class-hnd single-def +; V00 this [V00,T00] ( 14, 14 ) ref -> rbx this class-hnd single-def ;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ; V03 loc2 [V03,T12] ( 3, 3 ) long -> r13 -; V04 loc3 [V04 ] ( 4, 4 ) ref -> [rbp-0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd -; V05 loc4 [V05,T09] ( 4, 3 ) ref -> [rbp-0x40] class-hnd EH-live spill-single-def -; V06 loc5 [V06 ] ( 5, 5 ) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op -; V07 loc6 [V07,T15] ( 2, 2 ) ubyte -> [rbp-0x34] do-not-enreg[Z] EH-live +; V04 loc3 [V04 ] ( 4, 4 ) ref -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd +; V05 loc4 [V05,T09] ( 4, 3 ) ref -> [rbp-0x48] class-hnd EH-live spill-single-def +; V06 loc5 [V06 ] ( 5, 5 ) ubyte -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op +; V07 loc6 [V07,T15] ( 2, 2 ) ubyte -> [rbp-0x3C] do-not-enreg[Z] EH-live ; V08 loc7 [V08,T16] ( 2, 2 ) int -> rax ; V09 OutArgs [V09 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V10 tmp1 [V10,T07] ( 2, 4 ) ref -> rbx class-hnd single-def "dup spill" +; V10 tmp1 [V10,T07] ( 2, 4 ) ref -> r15 class-hnd single-def "dup spill" ;* V11 tmp2 [V11,T17] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" ;* V12 tmp3 [V12 ] ( 0, 0 ) ref -> zero-ref single-def -; V13 tmp4 [V13,T06] ( 5, 5 ) ref -> rbx -; V14 tmp5 [V14,T08] ( 2, 4 ) ref -> r15 class-hnd single-def "impAppendStmt" +; V13 tmp4 [V13,T06] ( 5, 5 ) ref -> r15 +; V14 tmp5 [V14,T08] ( 2, 4 ) ref -> r14 class-hnd single-def "impAppendStmt" ;* V15 tmp6 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" -; V16 tmp7 [V16,T02] ( 5, 10 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" +; V16 tmp7 [V16,T02] ( 5, 10 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" ;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V18 tmp9 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V19 tmp10 [V19,T04] ( 3, 6 ) ref -> rsi class-hnd exact single-def "Inlining Arg" c> ;* V20 tmp11 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" -; V21 tmp12 [V21,T05] ( 3, 6 ) ref -> r14 class-hnd single-def "Inlining Arg" +; V21 tmp12 [V21,T05] ( 3, 6 ) ref -> r13 class-hnd single-def "Inlining Arg" ;* V22 tmp13 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" ;* V23 tmp14 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" -; V24 tmp15 [V24,T01] ( 6, 12 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" +; V24 tmp15 [V24,T01] ( 6, 12 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" ;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" -; V26 tmp17 [V26,T03] ( 4, 8 ) ref -> r14 class-hnd exact single-def "Inlining Arg" +; V26 tmp17 [V26,T03] ( 4, 8 ) ref -> r13 class-hnd exact single-def "Inlining Arg" ; V27 tmp18 [V27,T13] ( 3, 3 ) long -> r15 "field V01._ticks (fldOffset=0x0)" P-INDEP ; V28 tmp19 [V28,T14] ( 3, 3 ) long -> r14 "field V02._ticks (fldOffset=0x0)" P-INDEP ;* V29 tmp20 [V29,T18] ( 0, 0 ) ref -> zero-ref single-def "field V15._source (fldOffset=0x0)" P-INDEP ;* V30 tmp21 [V30 ] ( 0, 0 ) ref -> zero-ref single-def "field V20._source (fldOffset=0x0)" P-INDEP -; V31 PSPSym [V31,T19] ( 1, 1 ) long -> [rbp-0x48] do-not-enreg[V] "PSPSym" +; V31 PSPSym [V31,T19] ( 1, 1 ) long -> [rbp-0x58] do-not-enreg[V] "PSPSym" ;* V32 cse0 [V32,T20] ( 0, 0 ) long -> zero-ref "CSE #04: moderate" ; V33 cse1 [V33,T10] ( 3, 3 ) ref -> rax "CSE #02: moderate" ; V34 cse2 [V34,T11] ( 3, 3 ) ref -> rsi "CSE #03: moderate" ; -; Lcl frame size = 48 +; Lcl frame size = 56 G_M42560_IG01: push rbp push r15 push r14 push r13 + push r12 push rbx - sub rsp, 48 - lea rbp, [rsp+0x50] + sub rsp, 56 + lea rbp, [rsp+0x60] xor eax, eax - mov qword ptr [rbp-0x28], rax - mov qword ptr [rbp-0x48], rsp + mov qword ptr [rbp-0x30], rax + mov qword ptr [rbp-0x58], rsp mov rbx, rdi - ;; size=30 bbWeight=1 PerfScore 8.25 + ;; size=32 bbWeight=1 PerfScore 9.25 G_M42560_IG02: mov rax, gword ptr [rbx+0x08] mov rax, gword ptr [rax+0x20] mov r15, qword ptr [rax+0xB0] mov r14, qword ptr [rax+0xB8] call System.Environment:get_TickCount64():long mov r13, rax mov rdi, gword ptr [rbx+0x48] - mov gword ptr [rbp-0x40], rdi + mov gword ptr [rbp-0x48], rdi xor esi, esi - mov dword ptr [rbp-0x30], esi + mov dword ptr [rbp-0x38], esi ;; size=43 bbWeight=1 PerfScore 13.50 G_M42560_IG03: - cmp byte ptr [rbp-0x30], 0 + cmp byte ptr [rbp-0x38], 0 jne SHORT G_M42560_IG04 - lea rsi, [rbp-0x30] + lea rsi, [rbp-0x38] call System.Threading.Monitor:ReliableEnter(System.Object,byref) - cmp byte ptr [rbx+0xD6], 0 + cmp byte ptr [rbx+0xD7], 0 jne SHORT G_M42560_IG05 cmp dword ptr [rbx+0xBC], 0 jne SHORT G_M42560_IG05 cmp dword ptr [rbx+0xC4], 0 jne SHORT G_M42560_IG05 - mov byte ptr [rbx+0xD7], 1 - mov dword ptr [rbp-0x34], 1 - jmp G_M42560_IG07 - ;; size=61 bbWeight=1 PerfScore 20.50 + mov byte ptr [rbx+0xD8], 1 + mov dword ptr [rbp-0x3C], 1 + jmp SHORT G_M42560_IG07 + ;; size=58 bbWeight=1 PerfScore 20.50 G_M42560_IG04: mov rax, 0xD1FFAB1E ; code for System.Threading.Monitor:ThrowLockTakenException() call [rax]System.Threading.Monitor:ThrowLockTakenException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M42560_IG05: - mov byte ptr [rbx+0xD6], 0 - mov rsi, gword ptr [rbx+0x48] - lea rdx, [rbp-0x28] - mov r9, r14 - mov rcx, r13 - mov r8, r15 - mov rdi, 0xD1FFAB1E ; System.Net.Http.HttpConnectionPool:g__ScavengeConnectionList|123_1[System.Net.Http.HttpConnection](System.Collections.Generic.List`1[System.Net.Http.HttpConnection],byref,long,System.TimeSpan,System.TimeSpan):int - mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool:g__ScavengeConnectionList|123_1[System.__Canon](System.Collections.Generic.List`1[System.__Canon],byref,long,System.TimeSpan,System.TimeSpan):int - call [rax]System.Net.Http.HttpConnectionPool:g__ScavengeConnectionList|123_1[System.__Canon](System.Collections.Generic.List`1[System.__Canon],byref,long,System.TimeSpan,System.TimeSpan):int + mov byte ptr [rbx+0xD7], 0 + mov rdi, gword ptr [rbx+0x48] + lea rsi, [rbp-0x30] + mov rdx, r13 + mov rcx, r15 + mov r8, r14 + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool:g__ScavengeConnectionQueue|127_1(System.Collections.Concurrent.ConcurrentQueue`1[System.Net.Http.HttpConnection],byref,long,System.TimeSpan,System.TimeSpan) + call [rax]System.Net.Http.HttpConnectionPool:g__ScavengeConnectionQueue|127_1(System.Collections.Concurrent.ConcurrentQueue`1[System.Net.Http.HttpConnection],byref,long,System.TimeSpan,System.TimeSpan) mov rsi, gword ptr [rbx+0x50] test rsi, rsi je SHORT G_M42560_IG06 - lea rdx, [rbp-0x28] + lea rdx, [rbp-0x30] mov r9, r14 mov rcx, r13 mov r8, r15 - mov rdi, 0xD1FFAB1E ; System.Net.Http.HttpConnectionPool:g__ScavengeConnectionList|123_1[System.Net.Http.Http2Connection](System.Collections.Generic.List`1[System.Net.Http.Http2Connection],byref,long,System.TimeSpan,System.TimeSpan):int - mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool:g__ScavengeConnectionList|123_1[System.__Canon](System.Collections.Generic.List`1[System.__Canon],byref,long,System.TimeSpan,System.TimeSpan):int - call [rax]System.Net.Http.HttpConnectionPool:g__ScavengeConnectionList|123_1[System.__Canon](System.Collections.Generic.List`1[System.__Canon],byref,long,System.TimeSpan,System.TimeSpan):int + mov rdi, 0xD1FFAB1E ; System.Net.Http.HttpConnectionPool:g__ScavengeConnectionList|127_2[System.Net.Http.Http2Connection](System.Collections.Generic.List`1[System.Net.Http.Http2Connection],byref,long,System.TimeSpan,System.TimeSpan):int + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool:g__ScavengeConnectionList|127_2[System.__Canon](System.Collections.Generic.List`1[System.__Canon],byref,long,System.TimeSpan,System.TimeSpan):int + call [rax]System.Net.Http.HttpConnectionPool:g__ScavengeConnectionList|127_2[System.__Canon](System.Collections.Generic.List`1[System.__Canon],byref,long,System.TimeSpan,System.TimeSpan):int sub dword ptr [rbx+0xC4], eax - ;; size=96 bbWeight=1 PerfScore 18.75 + ;; size=86 bbWeight=1 PerfScore 18.50 G_M42560_IG06: - cmp byte ptr [rbp-0x30], 0 + cmp byte ptr [rbp-0x38], 0 je SHORT G_M42560_IG09 - mov rdi, gword ptr [rbp-0x40] + mov rdi, gword ptr [rbp-0x48] call System.Threading.Monitor:Exit(System.Object) jmp SHORT G_M42560_IG09 ;; size=17 bbWeight=1 PerfScore 7.00 G_M42560_IG07: mov rdi, rsp call G_M42560_IG26 ;; size=8 bbWeight=1 PerfScore 1.25 G_M42560_IG08: jmp G_M42560_IG18 ;; size=5 bbWeight=1 PerfScore 2.00 G_M42560_IG09: - cmp gword ptr [rbp-0x28], 0 + cmp gword ptr [rbp-0x30], 0 je G_M42560_IG16 mov rdi, 0xD1FFAB1E ; global ptr test byte ptr [rdi], 1 je G_M42560_IG20 ;; size=30 bbWeight=1 PerfScore 7.25 G_M42560_IG10: - mov rdi, 0xD1FFAB1E ; data for System.Net.Http.HttpConnectionPool+<>c:<>9__123_0 - mov rbx, gword ptr [rdi] - test rbx, rbx + mov rdi, 0xD1FFAB1E ; data for System.Net.Http.HttpConnectionPool+<>c:<>9__127_0 + mov r15, gword ptr [rdi] + test r15, r15 jne SHORT G_M42560_IG11 mov rdi, 0xD1FFAB1E ; System.Action`1[System.Object] call CORINFO_HELP_NEWSFAST - mov rbx, rax + mov r15, rax mov rdi, 0xD1FFAB1E ; data for System.Net.Http.HttpConnectionPool+<>c:<>9 mov rsi, gword ptr [rdi] test rsi, rsi je G_M42560_IG21 - lea rdi, bword ptr [rbx+0x08] + lea rdi, bword ptr [r15+0x08] call CORINFO_HELP_ASSIGN_REF - mov rdi, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool+<>c:b__123_0(System.Object):this - mov qword ptr [rbx+0x18], rdi - mov rdi, 0xD1FFAB1E ; data for System.Net.Http.HttpConnectionPool+<>c:<>9__123_0 - mov rsi, rbx + mov rdi, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool+<>c:b__127_0(System.Object):this + mov qword ptr [r15+0x18], rdi + mov rdi, 0xD1FFAB1E ; data for System.Net.Http.HttpConnectionPool+<>c:<>9__127_0 + mov rsi, r15 call CORINFO_HELP_ASSIGN_REF ;; size=99 bbWeight=1 PerfScore 12.75 G_M42560_IG11: - mov r15, gword ptr [rbp-0x28] + mov r14, gword ptr [rbp-0x30] mov rdi, 0xD1FFAB1E ; global ptr test byte ptr [rdi], 1 je G_M42560_IG22 ;; size=23 bbWeight=1 PerfScore 5.25 G_M42560_IG12: mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.TaskScheduler:s_defaultTaskScheduler - mov r14, gword ptr [rdi] - test r14, r14 + mov r13, gword ptr [rdi] + test r13, r13 je G_M42560_IG23 mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task call CORINFO_HELP_NEWSFAST - mov r13, rax - test rbx, rbx + mov r12, rax + test r15, r15 je G_M42560_IG24 - mov gword ptr [rsp], r14 - mov rdi, r13 - mov rsi, rbx - mov rdx, r15 + mov gword ptr [rsp], r13 + mov rdi, r12 + mov rsi, r15 + mov rdx, r14 xor rcx, rcx mov r8d, 8 mov r9d, 0x2000 mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:TaskConstructorCore(System.Delegate,System.Object,System.Threading.CancellationToken,int,int,System.Threading.Tasks.TaskScheduler):this call [rax]System.Threading.Tasks.Task:TaskConstructorCore(System.Delegate,System.Object,System.Threading.CancellationToken,int,int,System.Threading.Tasks.TaskScheduler):this mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext call [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext - mov r14, rax - test r14, r14 + mov r13, rax + test r13, r13 jne SHORT G_M42560_IG13 - or dword ptr [r13+0x34], 0xD1FFAB1E + or dword ptr [r12+0x34], 0xD1FFAB1E jmp SHORT G_M42560_IG15 - ;; size=118 bbWeight=1 PerfScore 21.75 + ;; size=119 bbWeight=1 PerfScore 21.75 G_M42560_IG13: mov rdi, 0xD1FFAB1E ; global ptr test byte ptr [rdi], 1 je G_M42560_IG25 ;; size=19 bbWeight=1 PerfScore 4.25 G_M42560_IG14: mov rdi, 0xD1FFAB1E ; data for System.Threading.ExecutionContext:Default - cmp r14, gword ptr [rdi] + cmp r13, gword ptr [rdi] je SHORT G_M42560_IG15 - mov rdi, r13 + mov rdi, r12 mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:EnsureContingentPropertiesInitializedUnsafe():System.Threading.Tasks.Task+ContingentProperties:this call [rax]System.Threading.Tasks.Task:EnsureContingentPropertiesInitializedUnsafe():System.Threading.Tasks.Task+ContingentProperties:this lea rdi, bword ptr [rax+0x08] - mov rsi, r14 + mov rsi, r13 call CORINFO_HELP_ASSIGN_REF ;; size=42 bbWeight=1 PerfScore 9.50 G_M42560_IG15: - mov rdi, r13 + mov rdi, r12 xor esi, esi mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:ScheduleAndStart(ubyte):this call [rax]System.Threading.Tasks.Task:ScheduleAndStart(ubyte):this ;; size=17 bbWeight=1 PerfScore 3.75 G_M42560_IG16: + mov rdi, rbx + xor rsi, rsi + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool:ProcessHttp11RequestQueue(System.Net.Http.HttpConnection):this + call [rax]System.Net.Http.HttpConnectionPool:ProcessHttp11RequestQueue(System.Net.Http.HttpConnection):this xor eax, eax - ;; size=2 bbWeight=1 PerfScore 0.25 + ;; size=19 bbWeight=1 PerfScore 4.00 G_M42560_IG17: - add rsp, 48 + add rsp, 56 pop rbx + pop r12 pop r13 pop r14 pop r15 pop rbp ret - ;; size=13 bbWeight=1 PerfScore 3.75 + ;; size=15 bbWeight=1 PerfScore 4.25 G_M42560_IG18: - mov eax, dword ptr [rbp-0x34] + mov eax, dword ptr [rbp-0x3C] ;; size=3 bbWeight=1 PerfScore 1.00 G_M42560_IG19: - add rsp, 48 + add rsp, 56 pop rbx + pop r12 pop r13 pop r14 pop r15 pop rbp ret - ;; size=13 bbWeight=1 PerfScore 3.75 + ;; size=15 bbWeight=1 PerfScore 4.25 G_M42560_IG20: mov rdi, 0xD1FFAB1E mov esi, 250 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE jmp G_M42560_IG10 ;; size=25 bbWeight=0 PerfScore 0.00 G_M42560_IG21: mov rax, 0xD1FFAB1E ; code for System.MulticastDelegate:ThrowNullThisInDelegateToInstance() call [rax]System.MulticastDelegate:ThrowNullThisInDelegateToInstance() int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M42560_IG22: mov rdi, 0xD1FFAB1E mov esi, 0x42E call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE jmp G_M42560_IG12 ;; size=25 bbWeight=0 PerfScore 0.00 G_M42560_IG23: mov edi, 47 mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int) call [rax]System.ThrowHelper:ThrowArgumentNullException(int) int3 ;; size=18 bbWeight=0 PerfScore 0.00 G_M42560_IG24: mov edi, 28 mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int) call [rax]System.ThrowHelper:ThrowArgumentNullException(int) int3 ;; size=18 bbWeight=0 PerfScore 0.00 G_M42560_IG25: mov rdi, 0xD1FFAB1E mov esi, 860 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE jmp G_M42560_IG14 ;; size=25 bbWeight=0 PerfScore 0.00 G_M42560_IG26: push rbp push r15 push r14 push r13 + push r12 push rbx - sub rsp, 16 + sub rsp, 24 mov rbp, qword ptr [rdi+0x08] mov qword ptr [rsp+0x08], rbp - lea rbp, [rbp+0x50] - ;; size=25 bbWeight=1 PerfScore 8.75 + lea rbp, [rbp+0x60] + ;; size=27 bbWeight=1 PerfScore 9.75 G_M42560_IG27: - cmp byte ptr [rbp-0x30], 0 + cmp byte ptr [rbp-0x38], 0 je SHORT G_M42560_IG28 - mov rdi, gword ptr [rbp-0x40] + mov rdi, gword ptr [rbp-0x48] call System.Threading.Monitor:Exit(System.Object) ;; size=15 bbWeight=1 PerfScore 5.00 G_M42560_IG28: nop ;; size=1 bbWeight=1 PerfScore 0.25 G_M42560_IG29: - add rsp, 16 + add rsp, 24 pop rbx + pop r12 pop r13 pop r14 pop r15 pop rbp ret - ;; size=13 bbWeight=1 PerfScore 3.75 + ;; size=15 bbWeight=1 PerfScore 4.25 -; Total bytes of code 830, prolog size 30, PerfScore 162.25, instruction count 193, allocated bytes for code 830 (MethodHash=96c459bf) for method System.Net.Http.HttpConnectionPool:CleanCacheAndDisposeIfUnused():ubyte:this (FullOpts) +; Total bytes of code 845, prolog size 32, PerfScore 169.25, instruction count 201, allocated bytes for code 845 (MethodHash=96c459bf) for method System.Net.Http.HttpConnectionPool:CleanCacheAndDisposeIfUnused():ubyte:this (FullOpts) ```

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

Note: some changes were skipped as they were likely noise.

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

MihuBot commented 5 months ago

Top method improvements

-116 (-12.85 % of base) - System.Net.Http.HttpConnectionPool:TryGetPooledHttp11Connection(System.Net.Http.HttpRequestMessage,ubyte,byref,byref):ubyte:this ```diff ; Assembly listing for method System.Net.Http.HttpConnectionPool:TryGetPooledHttp11Connection(System.Net.Http.HttpRequestMessage,ubyte,byref,byref):ubyte:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data -; 0 inlinees with PGO data; 17 single block inlinees; 5 inlinees without PGO data +; 0 inlinees with PGO data; 12 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T03] ( 10, 33 ) ref -> [rbp-0x38] this class-hnd EH-live single-def -; V01 arg1 [V01,T16] ( 3, 3 ) ref -> [rbp-0x40] class-hnd EH-live single-def -; V02 arg2 [V02,T11] ( 3, 10 ) ubyte -> [rbp-0x24] EH-live single-def -; V03 arg3 [V03,T01] ( 10, 68 ) byref -> [rbp-0x48] EH-live single-def -; V04 arg4 [V04,T17] ( 4, 4 ) byref -> [rbp-0x50] EH-live single-def -; V05 loc0 [V05,T09] ( 4, 14 ) ref -> [rbp-0x58] do-not-enreg[Z] class-hnd EH-live -; V06 loc1 [V06 ] ( 5, 18 ) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op -; V07 loc2 [V07,T12] ( 3, 12 ) int -> r15 -;* V08 loc3 [V08,T30] ( 0, 0 ) ubyte -> zero-ref -; V09 OutArgs [V09 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" -; V11 tmp2 [V11,T04] ( 4, 32 ) int -> rcx "Inlining Arg" -; V12 tmp3 [V12,T08] ( 2, 16 ) ref -> rsi class-hnd "Inlining Arg" -;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" -; V14 tmp5 [V14,T15] ( 4, 8 ) ref -> r14 class-hnd exact "NewObj constructor temp" -;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" -; V16 tmp7 [V16,T07] ( 10, 20 ) byref -> r15 "Inlining Arg" -;* V17 tmp8 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" -; V18 tmp9 [V18,T18] ( 3, 6 ) ref -> r13 class-hnd exact "NewObj constructor temp" -;* V19 tmp10 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" -;* V20 tmp11 [V20 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" -; V21 tmp12 [V21,T19] ( 3, 6 ) byref -> rdi "Inlining Arg" -; V22 tmp13 [V22,T24] ( 4, 4 ) int -> rsi "Inline stloc first use temp" -;* V23 tmp14 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" -; V24 tmp15 [V24,T25] ( 2, 4 ) ref -> r15 class-hnd exact "impAppendStmt" -; V25 tmp16 [V25,T26] ( 2, 4 ) int -> rdx "Inlining Arg" -;* V26 tmp17 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" -;* V27 tmp18 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" -;* V28 tmp19 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" -;* V29 tmp20 [V29,T27] ( 0, 0 ) ref -> zero-ref "field V17.Request (fldOffset=0x0)" P-INDEP -;* V30 tmp21 [V30,T28] ( 0, 0 ) ref -> zero-ref "field V17.Waiter (fldOffset=0x8)" P-INDEP -;* V31 tmp22 [V31,T29] ( 0, 0 ) ref -> zero-ref "field V19._source (fldOffset=0x0)" P-INDEP -;* V32 tmp23 [V32 ] ( 0, 0 ) ref -> zero-ref "field V20.Request (fldOffset=0x0)" P-INDEP -;* V33 tmp24 [V33 ] ( 0, 0 ) ref -> zero-ref "field V20.Waiter (fldOffset=0x8)" P-INDEP -; V34 tmp25 [V34,T20] ( 3, 6 ) ref -> rdi "arr expr" -; V35 tmp26 [V35,T23] ( 3, 6 ) int -> rsi "index expr" -; V36 tmp27 [V36,T21] ( 3, 6 ) byref -> r13 "BlockOp address local" -; V37 tmp28 [V37,T05] ( 3, 24 ) ref -> rsi "arr expr" -; V38 tmp29 [V38,T22] ( 3, 6 ) ref -> rdi single-def "argument with side effect" -; V39 tmp30 [V39,T02] ( 3, 48 ) ref -> rdi "argument with side effect" -; V40 tmp31 [V40,T06] ( 3, 24 ) ref -> rdi "argument with side effect" -; V41 tmp32 [V41,T00] ( 3,192 ) ref -> rdi "argument with side effect" -; V42 PSPSym [V42,T31] ( 1, 1 ) long -> [rbp-0x68] do-not-enreg[V] "PSPSym" -; V43 cse0 [V43,T13] ( 3, 12 ) int -> rax "CSE #02: moderate" -; V44 cse1 [V44,T10] ( 3, 12 ) ref -> rsi "CSE #01: moderate" -; V45 cse2 [V45,T14] ( 3, 12 ) int -> r15 "CSE #03: moderate" +; V00 this [V00,T06] ( 9, 14.50) ref -> r14 this class-hnd single-def +; V01 arg1 [V01,T11] ( 3, 2.50) ref -> r12 class-hnd single-def +; V02 arg2 [V02,T05] ( 3, 18 ) ubyte -> r15 single-def +; V03 arg3 [V03,T01] ( 11, 62.50) byref -> rbx single-def +; V04 arg4 [V04,T10] ( 5, 3.50) byref -> r13 single-def +; V05 loc0 [V05,T21] ( 4, 1 ) ref -> [rbp-0x38] class-hnd EH-live spill-single-def +; V06 loc1 [V06 ] ( 5, 2 ) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op +; V07 OutArgs [V07 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +; V08 tmp1 [V08,T12] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" +;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" +;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" +;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" +; V12 tmp5 [V12,T07] ( 2, 8 ) ubyte -> rax "Inline return value spill temp" +; V13 tmp6 [V13,T03] ( 3, 40 ) ref -> [rbp-0x40] class-hnd spill-single-def "Inlining Arg" +; V14 tmp7 [V14,T04] ( 3, 20 ) ref -> [rbp-0x48] class-hnd spill-single-def "Inline stloc first use temp" +; V15 tmp8 [V15,T13] ( 3, 3 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" +;* V16 tmp9 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" +; V17 tmp10 [V17,T09] ( 10, 10 ) byref -> rbx single-def "Inlining Arg" +;* V18 tmp11 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" +; V19 tmp12 [V19,T20] ( 2, 2 ) ref -> r15 class-hnd single-def "Inlining Arg" +;* V20 tmp13 [V20 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" +; V21 tmp14 [V21,T14] ( 3, 3 ) byref -> rdi single-def "Inlining Arg" +; V22 tmp15 [V22,T19] ( 5, 2.50) int -> rax "Inline stloc first use temp" +;* V23 tmp16 [V23,T25] ( 0, 0 ) ref -> zero-ref single-def "field V16._source (fldOffset=0x0)" P-INDEP +; V24 tmp17 [V24,T22] ( 2, 1 ) ref -> r12 single-def "field V18.Request (fldOffset=0x0)" P-INDEP +; V25 tmp18 [V25,T23] ( 2, 1 ) ref -> r15 single-def "field V18.Waiter (fldOffset=0x8)" P-INDEP +;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref single-def "field V20.Request (fldOffset=0x0)" P-INDEP +;* V27 tmp20 [V27 ] ( 0, 0 ) ref -> zero-ref single-def "field V20.Waiter (fldOffset=0x8)" P-INDEP +; V28 tmp21 [V28,T15] ( 3, 3 ) ref -> rdi "argument with side effect" +; V29 tmp22 [V29,T00] ( 3, 96 ) ref -> rdi "argument with side effect" +; V30 tmp23 [V30,T08] ( 3, 12 ) ref -> rdi "argument with side effect" +; V31 tmp24 [V31,T02] ( 3, 48 ) ref -> rdi "argument with side effect" +; V32 tmp25 [V32,T16] ( 3, 3 ) ref -> rdi single-def "arr expr" +; V33 tmp26 [V33,T18] ( 3, 3 ) int -> rsi "index expr" +; V34 tmp27 [V34,T17] ( 3, 3 ) byref -> r13 single-def "BlockOp address local" +; V35 PSPSym [V35,T24] ( 1, 1 ) long -> [rbp-0x58] do-not-enreg[V] "PSPSym" ; -; Lcl frame size = 80 +; Lcl frame size = 56 G_M53569_IG01: push rbp push r15 push r14 push r13 + push r12 push rbx - sub rsp, 80 - lea rbp, [rsp+0x70] - mov qword ptr [rbp-0x68], rsp - mov gword ptr [rbp-0x38], rdi - mov gword ptr [rbp-0x40], rsi - mov dword ptr [rbp-0x24], edx - mov bword ptr [rbp-0x48], rcx - mov bword ptr [rbp-0x50], r8 + sub rsp, 56 + lea rbp, [rsp+0x60] + mov qword ptr [rbp-0x58], rsp + mov r14, rdi + mov r12, rsi + mov r15d, edx mov rbx, rcx - ;; size=43 bbWeight=8 PerfScore 96.00 + mov r13, r8 + ;; size=38 bbWeight=1 PerfScore 9.00 G_M53569_IG02: - mov rcx, gword ptr [rdi+0x48] - mov gword ptr [rbp-0x58], rcx - xor ecx, ecx - mov dword ptr [rbp-0x30], ecx - ;; size=13 bbWeight=8 PerfScore 34.00 + jmp G_M53569_IG06 + ;; size=5 bbWeight=1 PerfScore 2.00 G_M53569_IG03: - cmp byte ptr [rbp-0x30], 0 - jne SHORT G_M53569_IG06 - lea rsi, [rbp-0x30] - mov rdi, gword ptr [rbp-0x58] - call System.Threading.Monitor:ReliableEnter(System.Object,byref) - mov rdi, gword ptr [rbp-0x38] - mov byte ptr [rdi+0xD6], 1 - mov rsi, gword ptr [rdi+0x48] - mov eax, dword ptr [rsi+0x10] - mov r15d, eax - test r15d, r15d - jle SHORT G_M53569_IG07 - dec r15d - mov ecx, r15d - cmp ecx, eax - jae SHORT G_M53569_IG05 - mov rsi, gword ptr [rsi+0x08] - cmp ecx, dword ptr [rsi+0x08] - jae SHORT G_M53569_IG04 - mov eax, ecx - mov rsi, gword ptr [rsi+8*rax+0x10] - mov rdi, rbx - call CORINFO_HELP_CHECKED_ASSIGN_REF - mov rdi, gword ptr [rbp-0x38] - mov rdi, gword ptr [rdi+0x48] - mov esi, r15d - mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this - cmp dword ptr [rdi], edi - call [rax]System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this - jmp G_M53569_IG12 - ;; size=109 bbWeight=4 PerfScore 143.00 -G_M53569_IG04: - call CORINFO_HELP_RNGCHKFAIL - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M53569_IG05: - mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() - call [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() - int3 - ;; size=13 bbWeight=0 PerfScore 0.00 -G_M53569_IG06: - mov rcx, 0xD1FFAB1E ; code for System.Threading.Monitor:ThrowLockTakenException() - call [rcx]System.Threading.Monitor:ThrowLockTakenException() - int3 - ;; size=13 bbWeight=0 PerfScore 0.00 -G_M53569_IG07: - mov rdi, gword ptr [rbp-0x38] - lea r15, bword ptr [rdi+0xD8] - mov rdi, 0xD1FFAB1E ; System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.Net.Http.HttpConnection] - call CORINFO_HELP_NEWSFAST - mov r14, rax - mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[System.Net.Http.HttpConnection] - call CORINFO_HELP_NEWSFAST - mov r13, rax - xor rdi, rdi - mov gword ptr [rsp], rdi - mov rdi, r13 - xor rcx, rcx - xor rsi, rsi - xor rdx, rdx - mov r8d, 64 - mov r9d, 0x400 - mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:TaskConstructorCore(System.Delegate,System.Object,System.Threading.CancellationToken,int,int,System.Threading.Tasks.TaskScheduler):this - call [rax]System.Threading.Tasks.Task:TaskConstructorCore(System.Delegate,System.Object,System.Threading.CancellationToken,int,int,System.Threading.Tasks.TaskScheduler):this - lea rdi, bword ptr [r14+0x08] - mov rsi, r13 - call CORINFO_HELP_ASSIGN_REF - mov edi, dword ptr [r15+0x10] - mov rsi, gword ptr [r15] - cmp edi, dword ptr [rsi+0x08] - jne SHORT G_M53569_IG08 - mov rdi, r15 - mov rsi, 0xD1FFAB1E ; System.Net.Http.HttpConnectionPool+RequestQueue`1[System.Net.Http.HttpConnection] - mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool+RequestQueue`1[System.__Canon]:Grow():this - call [rax]System.Net.Http.HttpConnectionPool+RequestQueue`1[System.__Canon]:Grow():this - ;; size=135 bbWeight=1 PerfScore 24.00 -G_M53569_IG08: - mov rdi, gword ptr [r15] - mov esi, dword ptr [r15+0x0C] - cmp esi, dword ptr [rdi+0x08] - jae G_M53569_IG04 - shl rsi, 4 - lea r13, bword ptr [rdi+rsi+0x10] - mov rsi, gword ptr [rbp-0x40] - mov rdi, r13 - call CORINFO_HELP_ASSIGN_REF - lea rdi, bword ptr [r13+0x08] - mov rsi, r14 - call CORINFO_HELP_ASSIGN_REF - lea rdi, bword ptr [r15+0x0C] - mov esi, dword ptr [rdi] - inc esi - mov rax, gword ptr [r15] - cmp dword ptr [rax+0x08], esi - jne SHORT G_M53569_IG09 - xor esi, esi - ;; size=67 bbWeight=1 PerfScore 22.50 -G_M53569_IG09: - mov dword ptr [rdi], esi - inc dword ptr [r15+0x10] - mov rdi, bword ptr [rbp-0x50] - mov rsi, r14 - call CORINFO_HELP_CHECKED_ASSIGN_REF - mov rdi, gword ptr [rbp-0x38] - mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool:CheckForHttp11ConnectionInjection():this - call [rax]System.Net.Http.HttpConnectionPool:CheckForHttp11ConnectionInjection():this - mov rdi, 0xD1FFAB1E ; const ptr - mov rdi, gword ptr [rdi] - cmp byte ptr [rdi+0x9D], 0 - je SHORT G_M53569_IG10 - mov rdi, 0xD1FFAB1E ; const ptr - mov r15, gword ptr [rdi] - mov rdi, gword ptr [rbp-0x38] - call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int - mov edx, eax - mov rdi, 0xD1FFAB1E ; 'No available HTTP/1.1 connections; request queued.' - - mov gword ptr [rsp], rdi - mov rdi, r15 - mov esi, 8 - xor ecx, ecx - xor r8d, r8d - mov r9, 0xD1FFAB1E ; 'TryGetPooledHttp11Connection' - - mov rax, 0xD1FFAB1E ; code for System.Net.NetEventSource:WriteEvent(int,int,int,int,System.String,System.String):this - call [rax]System.Net.NetEventSource:WriteEvent(int,int,int,int,System.String,System.String):this - ;; size=129 bbWeight=1 PerfScore 27.00 -G_M53569_IG10: - xor rdi, rdi - mov gword ptr [rbx], rdi - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M53569_IG11: - cmp byte ptr [rbp-0x30], 0 - je G_M53569_IG21 - mov rdi, gword ptr [rbp-0x58] - call System.Threading.Monitor:Exit(System.Object) - jmp G_M53569_IG21 - ;; size=24 bbWeight=1 PerfScore 7.00 -G_M53569_IG12: - mov rdi, rsp - call G_M53569_IG23 - ;; size=8 bbWeight=8 PerfScore 10.00 -G_M53569_IG13: - nop - ;; size=1 bbWeight=8 PerfScore 2.00 -G_M53569_IG14: - mov rbx, bword ptr [rbp-0x48] mov rsi, gword ptr [rbx] - mov rdi, gword ptr [rbp-0x38] + mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool:CheckExpirationOnGet(System.Net.Http.HttpConnectionBase):ubyte:this call [rax]System.Net.Http.HttpConnectionPool:CheckExpirationOnGet(System.Net.Http.HttpConnectionBase):ubyte:this test eax, eax - je SHORT G_M53569_IG17 - ;; size=27 bbWeight=8 PerfScore 68.00 -G_M53569_IG15: + je SHORT G_M53569_IG05 mov rdi, 0xD1FFAB1E ; const ptr mov rdi, gword ptr [rdi] cmp byte ptr [rdi+0x9D], 0 - je SHORT G_M53569_IG16 + je SHORT G_M53569_IG04 mov rdi, gword ptr [rbx] mov rsi, 0xD1FFAB1E ; 'Found expired HTTP/1.1 connection in pool.' mov rdx, 0xD1FFAB1E ; 'TryGetPooledHttp11Connection' mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Net.Http.HttpConnectionBase:Trace(System.String,System.String):this - ;; size=55 bbWeight=4 PerfScore 63.00 -G_M53569_IG16: + ;; size=77 bbWeight=2 PerfScore 45.00 +G_M53569_IG04: mov rdi, gword ptr [rbx] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x38]System.Net.Http.HttpConnectionBase:Dispose():this - mov rdi, gword ptr [rbp-0x38] - jmp G_M53569_IG02 - ;; size=22 bbWeight=32 PerfScore 384.00 -G_M53569_IG17: + jmp SHORT G_M53569_IG06 + ;; size=15 bbWeight=8 PerfScore 88.00 +G_M53569_IG05: mov rdi, gword ptr [rbx] - movzx rsi, byte ptr [rbp-0x24] + movzx rsi, r15b mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnection:PrepareForReuse(ubyte):ubyte:this cmp dword ptr [rdi], edi call [rax]System.Net.Http.HttpConnection:PrepareForReuse(ubyte):ubyte:this test eax, eax - jne SHORT G_M53569_IG18 + jne G_M53569_IG10 mov rdi, 0xD1FFAB1E ; const ptr mov rdi, gword ptr [rdi] cmp byte ptr [rdi+0x9D], 0 - je SHORT G_M53569_IG16 + je SHORT G_M53569_IG04 mov rdi, gword ptr [rbx] mov rsi, 0xD1FFAB1E ; 'Found invalid HTTP/1.1 connection in pool.' mov rdx, 0xD1FFAB1E ; 'TryGetPooledHttp11Connection' mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Net.Http.HttpConnectionBase:Trace(System.String,System.String):this - jmp SHORT G_M53569_IG16 - ;; size=83 bbWeight=8 PerfScore 226.00 -G_M53569_IG18: + jmp SHORT G_M53569_IG04 + ;; size=86 bbWeight=16 PerfScore 440.00 +G_M53569_IG06: + mov rax, gword ptr [r14+0x48] + mov gword ptr [rbp-0x40], rax + mov rcx, gword ptr [rax+0x18] + mov gword ptr [rbp-0x48], rcx + mov rdi, rcx + mov rsi, rbx + mov rdx, 0xD1FFAB1E ; code for System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryDequeue(byref):ubyte:this + cmp dword ptr [rdi], edi + call [rdx]System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryDequeue(byref):ubyte:this + test eax, eax + jne G_M53569_IG03 + ;; size=44 bbWeight=8 PerfScore 112.00 +G_M53569_IG07: + mov rdi, gword ptr [rbp-0x48] + cmp gword ptr [rdi+0x10], 0 + jne SHORT G_M53569_IG08 + xor rdi, rdi + mov gword ptr [rbx], rdi + jmp SHORT G_M53569_IG09 + ;; size=18 bbWeight=4 PerfScore 33.00 +G_M53569_IG08: + mov rdi, gword ptr [rbp-0x40] + mov rsi, rbx + mov rax, 0xD1FFAB1E ; code for System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:TryDequeueSlow(byref):ubyte:this + call [rax]System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:TryDequeueSlow(byref):ubyte:this + test eax, eax + jne G_M53569_IG03 + ;; size=27 bbWeight=4 PerfScore 23.00 +G_M53569_IG09: + mov rdi, 0xD1FFAB1E ; System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.Net.Http.HttpConnection] + call CORINFO_HELP_NEWSFAST + mov rbx, rax + mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[System.Net.Http.HttpConnection] + call CORINFO_HELP_NEWSFAST + mov r15, rax + xor rdi, rdi + mov gword ptr [rsp], rdi + mov rdi, r15 + xor rcx, rcx + xor rsi, rsi + xor rdx, rdx + mov r8d, 64 + mov r9d, 0x400 + mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:TaskConstructorCore(System.Delegate,System.Object,System.Threading.CancellationToken,int,int,System.Threading.Tasks.TaskScheduler):this + call [rax]System.Threading.Tasks.Task:TaskConstructorCore(System.Delegate,System.Object,System.Threading.CancellationToken,int,int,System.Threading.Tasks.TaskScheduler):this + lea rdi, bword ptr [rbx+0x08] + mov rsi, r15 + call CORINFO_HELP_ASSIGN_REF + mov rdi, r13 + mov rsi, rbx + call CORINFO_HELP_CHECKED_ASSIGN_REF + mov rdi, gword ptr [r14+0x48] + mov gword ptr [rbp-0x38], rdi + xor esi, esi + mov dword ptr [rbp-0x30], esi + jmp SHORT G_M53569_IG13 + ;; size=113 bbWeight=0.50 PerfScore 9.25 +G_M53569_IG10: mov rdi, 0xD1FFAB1E ; const ptr mov rdi, gword ptr [rdi] cmp byte ptr [rdi+0x9D], 0 - je SHORT G_M53569_IG19 + je SHORT G_M53569_IG11 mov rdi, gword ptr [rbx] mov rsi, 0xD1FFAB1E ; 'Found usable HTTP/1.1 connection in pool.' mov rdx, 0xD1FFAB1E ; 'TryGetPooledHttp11Connection' mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Net.Http.HttpConnectionBase:Trace(System.String,System.String):this - ;; size=55 bbWeight=1 PerfScore 15.75 -G_M53569_IG19: + ;; size=55 bbWeight=0.50 PerfScore 7.88 +G_M53569_IG11: xor rax, rax - mov rdi, bword ptr [rbp-0x50] - mov gword ptr [rdi], rax + mov gword ptr [r13], rax mov eax, 1 - ;; size=14 bbWeight=1 PerfScore 2.50 -G_M53569_IG20: - add rsp, 80 + ;; size=11 bbWeight=0.50 PerfScore 0.75 +G_M53569_IG12: + add rsp, 56 pop rbx + pop r12 pop r13 pop r14 pop r15 pop rbp ret - ;; size=13 bbWeight=1 PerfScore 3.75 -G_M53569_IG21: + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M53569_IG13: + cmp byte ptr [rbp-0x30], 0 + jne G_M53569_IG16 + lea rsi, [rbp-0x30] + call System.Threading.Monitor:ReliableEnter(System.Object,byref) + lea rbx, bword ptr [r14+0xE0] + mov r15, gword ptr [r13] + mov edi, dword ptr [rbx+0x10] + mov rsi, gword ptr [rbx] + cmp edi, dword ptr [rsi+0x08] + jne SHORT G_M53569_IG14 + mov rdi, rbx + mov rsi, 0xD1FFAB1E ; System.Net.Http.HttpConnectionPool+RequestQueue`1[System.Net.Http.HttpConnection] + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool+RequestQueue`1[System.__Canon]:Grow():this + call [rax]System.Net.Http.HttpConnectionPool+RequestQueue`1[System.__Canon]:Grow():this + ;; size=66 bbWeight=0.50 PerfScore 9.38 +G_M53569_IG14: + mov rdi, gword ptr [rbx] + mov esi, dword ptr [rbx+0x0C] + cmp esi, dword ptr [rdi+0x08] + jae SHORT G_M53569_IG15 + shl rsi, 4 + lea r13, bword ptr [rdi+rsi+0x10] + mov rdi, r13 + mov rsi, r12 + call CORINFO_HELP_ASSIGN_REF + lea rdi, bword ptr [r13+0x08] + mov rsi, r15 + call CORINFO_HELP_ASSIGN_REF + lea rdi, bword ptr [rbx+0x0C] + mov eax, dword ptr [rdi] + inc eax + mov rcx, gword ptr [rbx] + xor edx, edx + cmp dword ptr [rcx+0x08], eax + cmove eax, edx + mov dword ptr [rdi], eax + inc dword ptr [rbx+0x10] + mov rdi, r14 + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool:CheckForHttp11ConnectionInjection():this + call [rax]System.Net.Http.HttpConnectionPool:CheckForHttp11ConnectionInjection():this + mov byte ptr [r14+0xD3], 0 + jmp SHORT G_M53569_IG17 + ;; size=92 bbWeight=0.50 PerfScore 15.75 +G_M53569_IG15: + call CORINFO_HELP_RNGCHKFAIL + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M53569_IG16: + mov rax, 0xD1FFAB1E ; code for System.Threading.Monitor:ThrowLockTakenException() + call [rax]System.Threading.Monitor:ThrowLockTakenException() + int3 + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M53569_IG17: + cmp byte ptr [rbp-0x30], 0 + je SHORT G_M53569_IG18 + mov rdi, gword ptr [rbp-0x38] + call System.Threading.Monitor:Exit(System.Object) + ;; size=15 bbWeight=0.50 PerfScore 2.50 +G_M53569_IG18: + mov rdi, r14 + xor rsi, rsi + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool:ProcessHttp11RequestQueue(System.Net.Http.HttpConnection):this + call [rax]System.Net.Http.HttpConnectionPool:ProcessHttp11RequestQueue(System.Net.Http.HttpConnection):this xor eax, eax - ;; size=2 bbWeight=1 PerfScore 0.25 -G_M53569_IG22: - add rsp, 80 + ;; size=19 bbWeight=0.50 PerfScore 2.00 +G_M53569_IG19: + add rsp, 56 pop rbx + pop r12 pop r13 pop r14 pop r15 pop rbp ret - ;; size=13 bbWeight=1 PerfScore 3.75 -G_M53569_IG23: + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M53569_IG20: push rbp push r15 push r14 push r13 + push r12 push rbx - sub rsp, 16 + sub rsp, 24 mov rbp, qword ptr [rdi+0x08] mov qword ptr [rsp+0x08], rbp - lea rbp, [rbp+0x70] - ;; size=25 bbWeight=1 PerfScore 8.75 -G_M53569_IG24: + lea rbp, [rbp+0x60] + ;; size=27 bbWeight=0 PerfScore 0.00 +G_M53569_IG21: cmp byte ptr [rbp-0x30], 0 - je SHORT G_M53569_IG25 - mov rdi, gword ptr [rbp-0x58] + je SHORT G_M53569_IG22 + mov rdi, gword ptr [rbp-0x38] call System.Threading.Monitor:Exit(System.Object) - ;; size=15 bbWeight=1 PerfScore 5.00 -G_M53569_IG25: + ;; size=15 bbWeight=0 PerfScore 0.00 +G_M53569_IG22: nop - ;; size=1 bbWeight=1 PerfScore 0.25 -G_M53569_IG26: - add rsp, 16 + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M53569_IG23: + add rsp, 24 pop rbx + pop r12 pop r13 pop r14 pop r15 pop rbp ret - ;; size=13 bbWeight=1 PerfScore 3.75 + ;; size=15 bbWeight=0 PerfScore 0.00 -; Total bytes of code 903, prolog size 43, PerfScore 1151.50, instruction count 230, allocated bytes for code 903 (MethodHash=e40c2ebe) for method System.Net.Http.HttpConnectionPool:TryGetPooledHttp11Connection(System.Net.Http.HttpRequestMessage,ubyte,byref,byref):ubyte:this (FullOpts) +; Total bytes of code 787, prolog size 38, PerfScore 803.75, instruction count 209, allocated bytes for code 787 (MethodHash=e40c2ebe) for method System.Net.Http.HttpConnectionPool:TryGetPooledHttp11Connection(System.Net.Http.HttpRequestMessage,ubyte,byref,byref):ubyte:this (FullOpts) ```
-7 (-0.61 % of base) - System.Net.Http.HttpConnectionPool:TryGetPooledHttp2Connection(System.Net.Http.HttpRequestMessage,byref,byref):ubyte:this ```diff ; Assembly listing for method System.Net.Http.HttpConnectionPool:TryGetPooledHttp2Connection(System.Net.Http.HttpRequestMessage,byref,byref):ubyte:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data -; 0 inlinees with PGO data; 19 single block inlinees; 6 inlinees without PGO data +; 0 inlinees with PGO data; 20 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T00] ( 15, 69 ) ref -> [rbp-0x38] this class-hnd EH-live single-def +; V00 this [V00,T00] ( 14, 65 ) ref -> [rbp-0x38] this class-hnd EH-live single-def ; V01 arg1 [V01,T18] ( 3, 3 ) ref -> [rbp-0x40] class-hnd EH-live single-def ; V02 arg2 [V02,T01] ( 13, 57 ) byref -> [rbp-0x48] EH-live single-def ; V03 arg3 [V03,T17] ( 5, 5 ) byref -> [rbp-0x50] EH-live single-def -; V04 loc0 [V04,T14] ( 4, 14 ) ref -> [rbp-0x58] do-not-enreg[Z] class-hnd EH-live +; V04 loc0 [V04,T14] ( 4, 14 ) ref -> [rbp-0x58] do-not-enreg[Z] class-hnd EH-live ; V05 loc1 [V05 ] ( 5, 18 ) ubyte -> [rbp-0x28] do-not-enreg[X] addr-exposed ld-addr-op ;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref ;* V07 loc3 [V07,T28] ( 0, 0 ) ubyte -> zero-ref ; V08 loc4 [V08,T11] ( 3, 20 ) ubyte -> r15 -; V09 loc5 [V09,T10] ( 4, 20 ) ref -> [rbp-0x60] do-not-enreg[Z] class-hnd EH-live +; V09 loc5 [V09,T10] ( 4, 20 ) ref -> [rbp-0x60] do-not-enreg[Z] class-hnd EH-live ; V10 loc6 [V10 ] ( 5, 32 ) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op ; V11 loc7 [V11,T12] ( 3, 20 ) int -> rax ; V12 OutArgs [V12 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V13 tmp1 [V13,T04] ( 3, 24 ) ref -> rcx class-hnd "dup spill" ;* V14 tmp2 [V14 ] ( 0, 0 ) ref -> zero-ref ; V15 tmp3 [V15,T13] ( 4, 16 ) int -> rdx ; V16 tmp4 [V16,T03] ( 4, 32 ) int -> rdx "Inlining Arg" ; V17 tmp5 [V17,T05] ( 3, 24 ) ref -> rsi class-hnd "Inlining Arg" ;* V18 tmp6 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" ; V19 tmp7 [V19,T16] ( 4, 8 ) ref -> r14 class-hnd exact "NewObj constructor temp" ;* V20 tmp8 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" ; V21 tmp9 [V21,T09] ( 10, 20 ) byref -> r15 "Inlining Arg" -;* V22 tmp10 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" -; V23 tmp11 [V23,T19] ( 3, 6 ) ref -> r13 class-hnd exact "NewObj constructor temp" -;* V24 tmp12 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" +; V22 tmp10 [V22,T19] ( 3, 6 ) ref -> r13 class-hnd exact "NewObj constructor temp" +;* V23 tmp11 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" +;* V24 tmp12 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ;* V25 tmp13 [V25 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ; V26 tmp14 [V26,T20] ( 3, 6 ) byref -> rdi "Inlining Arg" ; V27 tmp15 [V27,T25] ( 4, 4 ) int -> rsi "Inline stloc first use temp" ;* V28 tmp16 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V29 tmp17 [V29,T26] ( 2, 4 ) ref -> r15 class-hnd exact "impAppendStmt" ; V30 tmp18 [V30,T27] ( 2, 4 ) int -> rdx "Inlining Arg" ;* V31 tmp19 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V32 tmp20 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V33 tmp21 [V33,T02] ( 3, 48 ) ref -> rsi class-hnd "Inlining Arg" ;* V34 tmp22 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" ;* V35 tmp23 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" -;* V36 tmp24 [V36,T29] ( 0, 0 ) ref -> zero-ref "field V22.Request (fldOffset=0x0)" P-INDEP -;* V37 tmp25 [V37,T30] ( 0, 0 ) ref -> zero-ref "field V22.Waiter (fldOffset=0x8)" P-INDEP -;* V38 tmp26 [V38,T31] ( 0, 0 ) ref -> zero-ref "field V24._source (fldOffset=0x0)" P-INDEP +;* V36 tmp24 [V36,T29] ( 0, 0 ) ref -> zero-ref "field V23._source (fldOffset=0x0)" P-INDEP +;* V37 tmp25 [V37,T30] ( 0, 0 ) ref -> zero-ref "field V24.Request (fldOffset=0x0)" P-INDEP +;* V38 tmp26 [V38,T31] ( 0, 0 ) ref -> zero-ref "field V24.Waiter (fldOffset=0x8)" P-INDEP ;* V39 tmp27 [V39 ] ( 0, 0 ) ref -> zero-ref "field V25.Request (fldOffset=0x0)" P-INDEP ;* V40 tmp28 [V40 ] ( 0, 0 ) ref -> zero-ref "field V25.Waiter (fldOffset=0x8)" P-INDEP ; V41 tmp29 [V41,T21] ( 3, 6 ) ref -> rdi "arr expr" ; V42 tmp30 [V42,T24] ( 3, 6 ) int -> rsi "index expr" ; V43 tmp31 [V43,T22] ( 3, 6 ) byref -> r13 "BlockOp address local" ; V44 tmp32 [V44,T06] ( 3, 24 ) ref -> rsi "arr expr" ; V45 tmp33 [V45,T23] ( 3, 6 ) ref -> rdi single-def "argument with side effect" ; V46 tmp34 [V46,T07] ( 3, 24 ) ref -> rdi "argument with side effect" ; V47 tmp35 [V47,T08] ( 3, 24 ) ref -> rdi "argument with side effect" ; V48 PSPSym [V48,T32] ( 1, 1 ) long -> [rbp-0x68] do-not-enreg[V] "PSPSym" ; V49 cse0 [V49,T15] ( 3, 12 ) ref -> rsi "CSE #01: moderate" ; ; Lcl frame size = 80 G_M62304_IG01: push rbp push r15 push r14 push r13 push rbx sub rsp, 80 lea rbp, [rsp+0x70] mov qword ptr [rbp-0x68], rsp mov gword ptr [rbp-0x38], rdi mov gword ptr [rbp-0x40], rsi mov bword ptr [rbp-0x48], rdx mov bword ptr [rbp-0x50], rcx mov rbx, rdx ;; size=40 bbWeight=8 PerfScore 88.00 G_M62304_IG02: mov rdi, gword ptr [rbp-0x38] mov rcx, gword ptr [rdi+0x48] mov gword ptr [rbp-0x58], rcx xor ecx, ecx mov dword ptr [rbp-0x28], ecx ;; size=17 bbWeight=8 PerfScore 42.00 G_M62304_IG03: cmp byte ptr [rbp-0x28], 0 jne SHORT G_M62304_IG10 lea rsi, [rbp-0x28] mov rdi, gword ptr [rbp-0x58] call System.Threading.Monitor:ReliableEnter(System.Object,byref) mov rdi, gword ptr [rbp-0x38] - mov byte ptr [rdi+0xD6], 1 - cmp byte ptr [rdi+0xD4], 0 + cmp byte ptr [rdi+0xD5], 0 jne SHORT G_M62304_IG06 - ;; size=39 bbWeight=4 PerfScore 46.00 + ;; size=32 bbWeight=4 PerfScore 42.00 G_M62304_IG04: xor rsi, rsi mov rax, bword ptr [rbp-0x50] mov gword ptr [rax], rsi ;; size=9 bbWeight=1 PerfScore 2.25 G_M62304_IG05: mov gword ptr [rbx], rsi jmp G_M62304_IG16 ;; size=8 bbWeight=1 PerfScore 3.00 G_M62304_IG06: mov rsi, gword ptr [rdi+0x50] mov rcx, rsi test rcx, rcx jne SHORT G_M62304_IG07 xor edx, edx jmp SHORT G_M62304_IG08 ;; size=16 bbWeight=4 PerfScore 23.00 G_M62304_IG07: mov edx, dword ptr [rcx+0x10] ;; size=3 bbWeight=4 PerfScore 8.00 G_M62304_IG08: test edx, edx jle SHORT G_M62304_IG12 dec edx cmp edx, dword ptr [rsi+0x10] jae SHORT G_M62304_IG11 mov rsi, gword ptr [rsi+0x08] cmp edx, dword ptr [rsi+0x08] jae SHORT G_M62304_IG09 mov ecx, edx mov rsi, gword ptr [rsi+8*rcx+0x10] mov rdi, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF jmp G_M62304_IG17 ;; size=40 bbWeight=4 PerfScore 68.00 G_M62304_IG09: call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00 G_M62304_IG10: mov rcx, 0xD1FFAB1E ; code for System.Threading.Monitor:ThrowLockTakenException() call [rcx]System.Threading.Monitor:ThrowLockTakenException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M62304_IG11: mov rcx, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() call [rcx]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M62304_IG12: mov rdi, gword ptr [rbp-0x38] - lea r15, bword ptr [rdi+0xF0] + lea r15, bword ptr [rdi+0xF8] mov rdi, 0xD1FFAB1E ; System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.Net.Http.Http2Connection] call CORINFO_HELP_NEWSFAST mov r14, rax mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[System.Net.Http.Http2Connection] call CORINFO_HELP_NEWSFAST mov r13, rax xor rdi, rdi mov gword ptr [rsp], rdi mov rdi, r13 xor rcx, rcx xor rsi, rsi xor rdx, rdx mov r8d, 64 mov r9d, 0x400 mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:TaskConstructorCore(System.Delegate,System.Object,System.Threading.CancellationToken,int,int,System.Threading.Tasks.TaskScheduler):this call [rax]System.Threading.Tasks.Task:TaskConstructorCore(System.Delegate,System.Object,System.Threading.CancellationToken,int,int,System.Threading.Tasks.TaskScheduler):this lea rdi, bword ptr [r14+0x08] mov rsi, r13 call CORINFO_HELP_ASSIGN_REF mov edi, dword ptr [r15+0x10] mov rsi, gword ptr [r15] cmp edi, dword ptr [rsi+0x08] jne SHORT G_M62304_IG13 mov rdi, r15 mov rsi, 0xD1FFAB1E ; System.Net.Http.HttpConnectionPool+RequestQueue`1[System.Net.Http.Http2Connection] mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool+RequestQueue`1[System.__Canon]:Grow():this call [rax]System.Net.Http.HttpConnectionPool+RequestQueue`1[System.__Canon]:Grow():this ;; size=135 bbWeight=1 PerfScore 24.00 G_M62304_IG13: mov rdi, gword ptr [r15] mov esi, dword ptr [r15+0x0C] cmp esi, dword ptr [rdi+0x08] jae G_M62304_IG09 shl rsi, 4 lea r13, bword ptr [rdi+rsi+0x10] mov rsi, gword ptr [rbp-0x40] mov rdi, r13 call CORINFO_HELP_ASSIGN_REF lea rdi, bword ptr [r13+0x08] mov rsi, r14 call CORINFO_HELP_ASSIGN_REF lea rdi, bword ptr [r15+0x0C] mov esi, dword ptr [rdi] inc esi mov rax, gword ptr [r15] cmp dword ptr [rax+0x08], esi jne SHORT G_M62304_IG14 xor esi, esi ;; size=67 bbWeight=1 PerfScore 22.50 G_M62304_IG14: mov dword ptr [rdi], esi inc dword ptr [r15+0x10] mov rdi, bword ptr [rbp-0x50] mov rsi, r14 call CORINFO_HELP_CHECKED_ASSIGN_REF mov rdi, gword ptr [rbp-0x38] mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool:CheckForHttp2ConnectionInjection():this call [rax]System.Net.Http.HttpConnectionPool:CheckForHttp2ConnectionInjection():this mov rdi, 0xD1FFAB1E ; const ptr mov rdi, gword ptr [rdi] cmp byte ptr [rdi+0x9D], 0 je SHORT G_M62304_IG15 mov rdi, 0xD1FFAB1E ; const ptr mov r15, gword ptr [rdi] mov rdi, gword ptr [rbp-0x38] call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int mov edx, eax mov rdi, 0xD1FFAB1E ; 'No available HTTP/2 connections; request queued.' mov gword ptr [rsp], rdi mov rdi, r15 mov esi, 8 xor ecx, ecx xor r8d, r8d mov r9, 0xD1FFAB1E ; 'TryGetPooledHttp2Connection' mov rax, 0xD1FFAB1E ; code for System.Net.NetEventSource:WriteEvent(int,int,int,int,System.String,System.String):this call [rax]System.Net.NetEventSource:WriteEvent(int,int,int,int,System.String,System.String):this ;; size=129 bbWeight=1 PerfScore 27.00 G_M62304_IG15: xor rdi, rdi mov gword ptr [rbx], rdi ;; size=5 bbWeight=1 PerfScore 1.25 G_M62304_IG16: cmp byte ptr [rbp-0x28], 0 je G_M62304_IG35 mov rdi, gword ptr [rbp-0x58] call System.Threading.Monitor:Exit(System.Object) jmp G_M62304_IG35 ;; size=24 bbWeight=1 PerfScore 7.00 G_M62304_IG17: mov rdi, rsp call G_M62304_IG37 ;; size=8 bbWeight=8 PerfScore 10.00 G_M62304_IG18: nop ;; size=1 bbWeight=8 PerfScore 2.00 G_M62304_IG19: mov rbx, bword ptr [rbp-0x48] mov rsi, gword ptr [rbx] mov rdi, gword ptr [rbp-0x38] mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool:CheckExpirationOnGet(System.Net.Http.HttpConnectionBase):ubyte:this call [rax]System.Net.Http.HttpConnectionPool:CheckExpirationOnGet(System.Net.Http.HttpConnectionBase):ubyte:this test eax, eax je SHORT G_M62304_IG22 mov rdi, 0xD1FFAB1E ; const ptr mov rdi, gword ptr [rdi] cmp byte ptr [rdi+0x9D], 0 je SHORT G_M62304_IG21 ;; size=49 bbWeight=8 PerfScore 118.00 G_M62304_IG20: mov rdi, gword ptr [rbx] mov rsi, 0xD1FFAB1E ; 'Found expired HTTP/2 connection in pool.' mov rdx, 0xD1FFAB1E ; 'TryGetPooledHttp2Connection' mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Net.Http.HttpConnectionBase:Trace(System.String,System.String):this ;; size=33 bbWeight=4 PerfScore 38.00 G_M62304_IG21: mov rsi, gword ptr [rbx] mov rdi, gword ptr [rbp-0x38] mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool:InvalidateHttp2Connection(System.Net.Http.Http2Connection):this call [rax]System.Net.Http.HttpConnectionPool:InvalidateHttp2Connection(System.Net.Http.Http2Connection):this jmp G_M62304_IG02 ;; size=24 bbWeight=8 PerfScore 66.00 G_M62304_IG22: mov rdi, gword ptr [rbx] mov rax, 0xD1FFAB1E ; code for System.Net.Http.Http2Connection:TryReserveStream():ubyte:this cmp dword ptr [rdi], edi call [rax]System.Net.Http.Http2Connection:TryReserveStream():ubyte:this test eax, eax jne G_M62304_IG32 mov rdi, 0xD1FFAB1E ; const ptr mov rdi, gword ptr [rdi] cmp byte ptr [rdi+0x9D], 0 je SHORT G_M62304_IG24 ;; size=47 bbWeight=8 PerfScore 126.00 G_M62304_IG23: mov rdi, gword ptr [rbx] mov rsi, 0xD1FFAB1E ; 'Found HTTP/2 connection in pool without available streams.' mov rdx, 0xD1FFAB1E ; 'TryGetPooledHttp2Connection' mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Net.Http.HttpConnectionBase:Trace(System.String,System.String):this ;; size=33 bbWeight=4 PerfScore 38.00 G_M62304_IG24: xor r15d, r15d mov rdi, gword ptr [rbp-0x38] mov rsi, gword ptr [rdi+0x48] mov gword ptr [rbp-0x60], rsi xor esi, esi mov dword ptr [rbp-0x30], esi ;; size=20 bbWeight=8 PerfScore 44.00 G_M62304_IG25: cmp byte ptr [rbp-0x30], 0 je SHORT G_M62304_IG27 ;; size=6 bbWeight=8 PerfScore 24.00 G_M62304_IG26: mov rax, 0xD1FFAB1E ; code for System.Threading.Monitor:ThrowLockTakenException() call [rax]System.Threading.Monitor:ThrowLockTakenException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M62304_IG27: lea rsi, [rbp-0x30] mov rdi, gword ptr [rbp-0x60] call System.Threading.Monitor:ReliableEnter(System.Object,byref) mov rdi, gword ptr [rbp-0x38] mov rsi, gword ptr [rdi+0x50] mov r8d, dword ptr [rsi+0x10] mov rsi, gword ptr [rsi+0x08] mov rdx, gword ptr [rbx] mov rdi, 0xD1FFAB1E ; System.Array:IndexOf[System.Net.Http.Http2Connection](System.Net.Http.Http2Connection[],System.Net.Http.Http2Connection,int,int):int xor ecx, ecx mov rax, 0xD1FFAB1E ; code for System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int call [rax]System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int cmp eax, -1 je SHORT G_M62304_IG29 ;; size=61 bbWeight=8 PerfScore 132.00 G_M62304_IG28: mov r15d, 1 mov rdi, gword ptr [rbp-0x38] mov rdi, gword ptr [rdi+0x50] mov esi, eax mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this cmp dword ptr [rdi], edi call [rax]System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this nop ;; size=31 bbWeight=4 PerfScore 40.00 G_M62304_IG29: cmp byte ptr [rbp-0x30], 0 je SHORT G_M62304_IG31 ;; size=6 bbWeight=8 PerfScore 24.00 G_M62304_IG30: mov rdi, gword ptr [rbp-0x60] call System.Threading.Monitor:Exit(System.Object) ;; size=9 bbWeight=4 PerfScore 8.00 G_M62304_IG31: test r15d, r15d je G_M62304_IG02 mov rsi, gword ptr [rbx] mov rdi, gword ptr [rbp-0x38] mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool:DisableHttp2Connection(System.Net.Http.Http2Connection):this call [rax]System.Net.Http.HttpConnectionPool:DisableHttp2Connection(System.Net.Http.Http2Connection):this jmp G_M62304_IG02 ;; size=33 bbWeight=8 PerfScore 76.00 G_M62304_IG32: mov rdi, 0xD1FFAB1E ; const ptr mov rdi, gword ptr [rdi] cmp byte ptr [rdi+0x9D], 0 je SHORT G_M62304_IG33 mov rdi, gword ptr [rbx] mov rsi, 0xD1FFAB1E ; 'Found usable HTTP/2 connection in pool.' mov rdx, 0xD1FFAB1E ; 'TryGetPooledHttp2Connection' mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Net.Http.HttpConnectionBase:Trace(System.String,System.String):this ;; size=55 bbWeight=1 PerfScore 15.75 G_M62304_IG33: xor rax, rax mov rdi, bword ptr [rbp-0x50] mov gword ptr [rdi], rax mov eax, 1 ;; size=14 bbWeight=1 PerfScore 2.50 G_M62304_IG34: add rsp, 80 pop rbx pop r13 pop r14 pop r15 pop rbp ret ;; size=13 bbWeight=1 PerfScore 3.75 G_M62304_IG35: xor eax, eax ;; size=2 bbWeight=1 PerfScore 0.25 G_M62304_IG36: add rsp, 80 pop rbx pop r13 pop r14 pop r15 pop rbp ret ;; size=13 bbWeight=1 PerfScore 3.75 G_M62304_IG37: push rbp push r15 push r14 push r13 push rbx sub rsp, 16 mov rbp, qword ptr [rdi+0x08] mov qword ptr [rsp+0x08], rbp lea rbp, [rbp+0x70] ;; size=25 bbWeight=1 PerfScore 8.75 G_M62304_IG38: cmp byte ptr [rbp-0x28], 0 je SHORT G_M62304_IG39 mov rdi, gword ptr [rbp-0x58] call System.Threading.Monitor:Exit(System.Object) ;; size=15 bbWeight=1 PerfScore 5.00 G_M62304_IG39: nop ;; size=1 bbWeight=1 PerfScore 0.25 G_M62304_IG40: add rsp, 16 pop rbx pop r13 pop r14 pop r15 pop rbp ret ;; size=13 bbWeight=1 PerfScore 3.75 G_M62304_IG41: push rbp push r15 push r14 push r13 push rbx sub rsp, 16 mov rbp, qword ptr [rdi+0x08] mov qword ptr [rsp+0x08], rbp lea rbp, [rbp+0x70] ;; size=25 bbWeight=0 PerfScore 0.00 G_M62304_IG42: cmp byte ptr [rbp-0x30], 0 je SHORT G_M62304_IG43 mov rdi, gword ptr [rbp-0x60] call System.Threading.Monitor:Exit(System.Object) ;; size=15 bbWeight=0 PerfScore 0.00 G_M62304_IG43: nop ;; size=1 bbWeight=0 PerfScore 0.00 G_M62304_IG44: add rsp, 16 pop rbx pop r13 pop r14 pop r15 pop rbp ret ;; size=13 bbWeight=0 PerfScore 0.00 -; Total bytes of code 1142, prolog size 40, PerfScore 1151.75, instruction count 296, allocated bytes for code 1142 (MethodHash=fd270c9f) for method System.Net.Http.HttpConnectionPool:TryGetPooledHttp2Connection(System.Net.Http.HttpRequestMessage,byref,byref):ubyte:this (FullOpts) +; Total bytes of code 1135, prolog size 40, PerfScore 1147.75, instruction count 295, allocated bytes for code 1135 (MethodHash=fd270c9f) for method System.Net.Http.HttpConnectionPool:TryGetPooledHttp2Connection(System.Net.Http.HttpRequestMessage,byref,byref):ubyte:this (FullOpts) ```
-5 (-2.03 % of base) - System.Net.Http.HttpConnection:ReturnConnectionToPool():this ```diff ; Assembly listing for method System.Net.Http.HttpConnection:ReturnConnectionToPool():this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data -; 0 inlinees with PGO data; 5 single block inlinees; 1 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,T00] ( 9, 6 ) ref -> rbx this class-hnd single-def ; V01 OutArgs [V01 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V03 tmp2 [V03,T02] ( 3, 3 ) ref -> rdi class-hnd exact single-def "dup spill" -; V04 tmp3 [V04,T08] ( 2, 1 ) ref -> r15 single-def +; V04 tmp3 [V04,T07] ( 2, 1 ) ref -> r15 single-def ;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref single-def ;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref single-def -; V07 tmp6 [V07,T06] ( 3, 1.50) int -> r14 +; V07 tmp6 [V07,T05] ( 3, 1.50) int -> r14 ; V08 tmp7 [V08,T01] ( 4, 4 ) ref -> rdi class-hnd single-def "dup spill" -; V09 tmp8 [V09,T04] ( 2, 2 ) int -> r13 "impAppendStmt" +; V09 tmp8 [V09,T03] ( 2, 2 ) int -> r13 "impAppendStmt" ;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref single-def ;* V11 tmp10 [V11 ] ( 0, 0 ) int -> zero-ref ;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref ;* V13 tmp12 [V13 ] ( 0, 0 ) ref -> zero-ref single-def ;* V14 tmp13 [V14 ] ( 0, 0 ) ref -> zero-ref single-def ;* V15 tmp14 [V15 ] ( 0, 0 ) int -> zero-ref ;* V16 tmp15 [V16 ] ( 0, 0 ) int -> zero-ref -; V17 tmp16 [V17,T07] ( 3, 1.50) int -> r8 -; V18 tmp17 [V18,T03] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" -; V19 cse0 [V19,T05] ( 3, 1.50) ref -> r15 "CSE #01: moderate" +; V17 tmp16 [V17,T06] ( 3, 1.50) int -> r8 +; V18 cse0 [V18,T04] ( 3, 1.50) ref -> r15 "CSE #01: moderate" ; ; Lcl frame size = 16 G_M26116_IG01: push rbp push r15 push r14 push r13 push rbx sub rsp, 16 lea rbp, [rsp+0x30] mov rbx, rdi ;; size=20 bbWeight=1 PerfScore 6.00 G_M26116_IG02: cmp byte ptr [rbx+0x6C], 0 je G_M26116_IG10 ;; size=10 bbWeight=1 PerfScore 4.00 G_M26116_IG03: mov rdi, 0xD1FFAB1E ; const ptr mov r15, gword ptr [rdi] cmp byte ptr [r15+0x9D], 0 je SHORT G_M26116_IG08 mov rdi, gword ptr [rbx+0x40] test rdi, rdi jne SHORT G_M26116_IG04 xor r14d, r14d jmp SHORT G_M26116_IG05 ;; size=37 bbWeight=0.50 PerfScore 5.88 G_M26116_IG04: mov rax, 0xD1FFAB1E ; const ptr mov rax, qword ptr [rax] call [rax+0x18]System.Object:GetHashCode():int:this mov r14d, eax ;; size=19 bbWeight=0.50 PerfScore 2.75 G_M26116_IG05: mov rdi, rbx call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int mov r13d, eax mov rdi, gword ptr [rbx+0x58] test rdi, rdi jne SHORT G_M26116_IG06 xor r8d, r8d jmp SHORT G_M26116_IG07 ;; size=25 bbWeight=0.50 PerfScore 3.50 G_M26116_IG06: mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x18]System.Object:GetHashCode():int:this mov r8d, eax ;; size=13 bbWeight=0.50 PerfScore 3.62 G_M26116_IG07: mov rdi, 0xD1FFAB1E ; 'Connection will not be reused.' mov gword ptr [rsp], rdi mov rdi, r15 mov edx, r14d mov ecx, r13d mov esi, 8 mov r9, 0xD1FFAB1E ; 'ReturnConnectionToPool' mov rax, 0xD1FFAB1E ; code for System.Net.NetEventSource:WriteEvent(int,int,int,int,System.String,System.String):this call [rax]System.Net.NetEventSource:WriteEvent(int,int,int,int,System.String,System.String):this ;; size=50 bbWeight=0.50 PerfScore 2.88 G_M26116_IG08: mov rdi, rbx mov esi, 1 mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnection:Dispose(ubyte):this ;; size=18 bbWeight=0.50 PerfScore 0.38 G_M26116_IG09: add rsp, 16 pop rbx pop r13 pop r14 pop r15 pop rbp tail.jmp [rax]System.Net.Http.HttpConnection:Dispose(ubyte):this ;; size=15 bbWeight=0.50 PerfScore 2.38 G_M26116_IG10: mov rdi, gword ptr [rbx+0x40] - cmp byte ptr [rdi], dil mov rsi, rbx - xor edx, edx - xor rcx, rcx - mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool:ReturnHttp11Connection(System.Net.Http.HttpConnection,ubyte,System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.Net.Http.HttpConnection]):this - ;; size=24 bbWeight=0.50 PerfScore 3.00 + mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpConnectionPool:RecycleHttp11Connection(System.Net.Http.HttpConnection):this + cmp dword ptr [rdi], edi + ;; size=19 bbWeight=0.50 PerfScore 2.75 G_M26116_IG11: add rsp, 16 pop rbx pop r13 pop r14 pop r15 pop rbp - tail.jmp [rax]System.Net.Http.HttpConnectionPool:ReturnHttp11Connection(System.Net.Http.HttpConnection,ubyte,System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.Net.Http.HttpConnection]):this + tail.jmp [rax]System.Net.Http.HttpConnectionPool:RecycleHttp11Connection(System.Net.Http.HttpConnection):this ;; size=15 bbWeight=0.50 PerfScore 2.38 -; Total bytes of code 246, prolog size 20, PerfScore 36.75, instruction count 67, allocated bytes for code 246 (MethodHash=960399fb) for method System.Net.Http.HttpConnection:ReturnConnectionToPool():this (FullOpts) +; Total bytes of code 241, prolog size 20, PerfScore 36.50, instruction count 65, allocated bytes for code 241 (MethodHash=960399fb) for method System.Net.Http.HttpConnection:ReturnConnectionToPool():this (FullOpts) ```

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

Note: some changes were skipped as they were likely noise.

Larger list of diffs: https://gist.github.com/MihuBot/381c85dcf20f65c6f352a4d13a48f4cd

MihuBot commented 5 months ago

@MihaZupan