Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[JitDiff X64] [MichalPetryka] Non-PGO calli/delegate call transformation #802

Open
MihuBot opened this issue Dec 1, 2024 · 3 comments
Open

Comments

@MihuBot
Copy link
Owner

MihuBot commented Dec 1, 2024

Job completed in 20 minutes.

Diffs

Found 266 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 39685965
Total bytes of diff: 39686916
Total bytes of delta: 951 (0.00 % of base)
Total relative delta: 11.32
    diff is a regression.
    relative diff is a regression.


Top file regressions (bytes):
         569 : Microsoft.Extensions.Http.dasm (0.83 % of base)
         200 : System.Resources.Extensions.dasm (0.41 % of base)
         111 : System.Runtime.Serialization.Formatters.dasm (0.55 % of base)
         104 : System.Reflection.MetadataLoadContext.dasm (0.05 % of base)

Top file improvements (bytes):
         -22 : System.Security.Cryptography.dasm (-0.00 % of base)
         -11 : System.Data.Common.dasm (-0.00 % of base)

6 total files with Code Size differences (2 improved, 4 regressed), 253 unchanged.

Top method regressions (bytes):
         111 (264.29 % of base) : System.Resources.Extensions.dasm - System.Resources.Extensions.BinaryFormat.SerializationInfoExtensions:UpdateValue(System.Runtime.Serialization.SerializationInfo,System.String,System.Object,System.Type) (FullOpts)
         111 (264.29 % of base) : System.Runtime.Serialization.Formatters.dasm - System.Runtime.Serialization.SerializationInfoExtensions:UpdateValue(System.Runtime.Serialization.SerializationInfo,System.String,System.Object,System.Type) (FullOpts)
          89 (86.41 % of base) : System.Resources.Extensions.dasm - System.Resources.Extensions.BinaryFormat.Deserializer.SerializationInfoValueUpdater:UpdateValue(System.Collections.Generic.IDictionary`2[System.Formats.Nrbf.SerializationRecordId,System.Object]):this (FullOpts)
          78 (89.66 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.Logging.LogHelper:LogRequestFailed(Microsoft.Extensions.Logging.ILogger,System.TimeSpan,System.Net.Http.HttpRequestException) (FullOpts)
          78 (89.66 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.Logging.LogHelper:LogRequestPipelineFailed(Microsoft.Extensions.Logging.ILogger,System.TimeSpan,System.Net.Http.HttpRequestException) (FullOpts)
          66 (44.90 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:CleanupCycleEnd(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],System.TimeSpan,int,int) (FullOpts)
          63 (44.68 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:HandlerExpired(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],System.String,System.TimeSpan) (FullOpts)
          62 (14.19 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.Logging.LogHelper:LogRequestEnd(Microsoft.Extensions.Logging.ILogger,System.Net.Http.HttpResponseMessage,System.TimeSpan,System.Func`2[System.String,ubyte]) (FullOpts)
          62 (14.19 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.Logging.LogHelper:LogRequestPipelineEnd(Microsoft.Extensions.Logging.ILogger,System.Net.Http.HttpResponseMessage,System.TimeSpan,System.Func`2[System.String,ubyte]) (FullOpts)
          54 (48.21 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.RoModule:GetUniqueArrayType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoArrayType:this (FullOpts)
          48 (12.94 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.Logging.LogHelper:LogRequestPipelineStart(Microsoft.Extensions.Logging.ILogger,System.Net.Http.HttpRequestMessage,System.String,System.Func`2[System.String,ubyte]) (FullOpts)
          47 (65.28 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:CleanupCycleStart(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],int) (FullOpts)
          47 (55.29 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:CleanupItemFailed(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],System.String,System.Exception) (FullOpts)
          41 (36.61 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.RoModule:GetUniqueByRefType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoByRefType:this (FullOpts)
           9 (10.11 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.Logging.LogHelper:BeginRequestPipelineScope(Microsoft.Extensions.Logging.ILogger,System.Net.Http.HttpRequestMessage,byref):System.IDisposable (FullOpts)
           9 (2.17 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.Logging.LogHelper:LogRequestStart(Microsoft.Extensions.Logging.ILogger,System.Net.Http.HttpRequestMessage,System.Func`2[System.String,ubyte]) (FullOpts)
           9 (6.52 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.RoModule:GetUniqueArrayType(System.Reflection.TypeLoading.RoType,int):System.Reflection.TypeLoading.RoArrayType:this (FullOpts)

Top method improvements (bytes):
         -11 (-6.01 % of base) : System.Data.Common.dasm - System.Data.SqlTypes.SqlXml:CreateSqlXmlReader(System.IO.Stream,ubyte,ubyte):System.Xml.XmlReader (FullOpts)
         -10 (-3.51 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:MapVerifyErrorToChainStatus(Interop+Crypto+X509VerifyStatusCode):int (FullOpts)
          -9 (-5.70 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.XmlKeyHelper+ParseState+Functions:ParseDocument(System.String):System.Object (FullOpts)
          -3 (-1.82 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoConfigForwarder:CreateFromName[System.__Canon](System.String):System.__Canon (FullOpts)

Top method regressions (percentages):
         111 (264.29 % of base) : System.Resources.Extensions.dasm - System.Resources.Extensions.BinaryFormat.SerializationInfoExtensions:UpdateValue(System.Runtime.Serialization.SerializationInfo,System.String,System.Object,System.Type) (FullOpts)
         111 (264.29 % of base) : System.Runtime.Serialization.Formatters.dasm - System.Runtime.Serialization.SerializationInfoExtensions:UpdateValue(System.Runtime.Serialization.SerializationInfo,System.String,System.Object,System.Type) (FullOpts)
          78 (89.66 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.Logging.LogHelper:LogRequestFailed(Microsoft.Extensions.Logging.ILogger,System.TimeSpan,System.Net.Http.HttpRequestException) (FullOpts)
          78 (89.66 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.Logging.LogHelper:LogRequestPipelineFailed(Microsoft.Extensions.Logging.ILogger,System.TimeSpan,System.Net.Http.HttpRequestException) (FullOpts)
          89 (86.41 % of base) : System.Resources.Extensions.dasm - System.Resources.Extensions.BinaryFormat.Deserializer.SerializationInfoValueUpdater:UpdateValue(System.Collections.Generic.IDictionary`2[System.Formats.Nrbf.SerializationRecordId,System.Object]):this (FullOpts)
          47 (65.28 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:CleanupCycleStart(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],int) (FullOpts)
          47 (55.29 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:CleanupItemFailed(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],System.String,System.Exception) (FullOpts)
          54 (48.21 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.RoModule:GetUniqueArrayType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoArrayType:this (FullOpts)
          66 (44.90 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:CleanupCycleEnd(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],System.TimeSpan,int,int) (FullOpts)
          63 (44.68 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:HandlerExpired(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],System.String,System.TimeSpan) (FullOpts)
          41 (36.61 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.RoModule:GetUniqueByRefType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoByRefType:this (FullOpts)
          62 (14.19 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.Logging.LogHelper:LogRequestEnd(Microsoft.Extensions.Logging.ILogger,System.Net.Http.HttpResponseMessage,System.TimeSpan,System.Func`2[System.String,ubyte]) (FullOpts)
          62 (14.19 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.Logging.LogHelper:LogRequestPipelineEnd(Microsoft.Extensions.Logging.ILogger,System.Net.Http.HttpResponseMessage,System.TimeSpan,System.Func`2[System.String,ubyte]) (FullOpts)
          48 (12.94 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.Logging.LogHelper:LogRequestPipelineStart(Microsoft.Extensions.Logging.ILogger,System.Net.Http.HttpRequestMessage,System.String,System.Func`2[System.String,ubyte]) (FullOpts)
           9 (10.11 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.Logging.LogHelper:BeginRequestPipelineScope(Microsoft.Extensions.Logging.ILogger,System.Net.Http.HttpRequestMessage,byref):System.IDisposable (FullOpts)
           9 (6.52 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.RoModule:GetUniqueArrayType(System.Reflection.TypeLoading.RoType,int):System.Reflection.TypeLoading.RoArrayType:this (FullOpts)
           9 (2.17 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.Logging.LogHelper:LogRequestStart(Microsoft.Extensions.Logging.ILogger,System.Net.Http.HttpRequestMessage,System.Func`2[System.String,ubyte]) (FullOpts)

Top method improvements (percentages):
         -11 (-6.01 % of base) : System.Data.Common.dasm - System.Data.SqlTypes.SqlXml:CreateSqlXmlReader(System.IO.Stream,ubyte,ubyte):System.Xml.XmlReader (FullOpts)
          -9 (-5.70 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.XmlKeyHelper+ParseState+Functions:ParseDocument(System.String):System.Object (FullOpts)
         -10 (-3.51 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:MapVerifyErrorToChainStatus(Interop+Crypto+X509VerifyStatusCode):int (FullOpts)
          -3 (-1.82 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoConfigForwarder:CreateFromName[System.__Canon](System.String):System.__Canon (FullOpts)

21 total methods with Code Size differences (4 improved, 17 regressed), 232841 unchanged.

--------------------------------------------------------------------------------

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Dec 1, 2024

Top method regressions

111 (264.29 % of base) - System.Resources.Extensions.BinaryFormat.SerializationInfoExtensions:UpdateValue(System.Runtime.Serialization.SerializationInfo,System.String,System.Object,System.Type)
 ; Assembly listing for method System.Resources.Extensions.BinaryFormat.SerializationInfoExtensions:UpdateValue(System.Runtime.Serialization.SerializationInfo,System.String,System.Object,System.Type) (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; 0 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  3,  3   )     ref  ->  rdi         class-hnd single-def <System.Runtime.Serialization.SerializationInfo>
-;  V01 arg1         [V01,T02] (  3,  3   )     ref  ->   r8         class-hnd single-def <System.String>
-;  V02 arg2         [V02,T03] (  3,  3   )     ref  ->  rax         class-hnd single-def <System.Object>
-;  V03 arg3         [V03,T04] (  3,  3   )     ref  ->   r9         class-hnd single-def <System.Type>
+;  V00 arg0         [V00,T00] (  6,  4.50)     ref  ->  rbx         class-hnd single-def <System.Runtime.Serialization.SerializationInfo>
+;  V01 arg1         [V01,T01] (  4,  3.50)     ref  ->  r15         class-hnd single-def <System.String>
+;  V02 arg2         [V02,T02] (  4,  3   )     ref  ->  r14         class-hnd single-def <System.Object>
+;  V03 arg3         [V03,T03] (  4,  3   )     ref  ->  r13         class-hnd single-def <System.Type>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V05 rat0         [V05,T00] (  3,  6   )     ref  ->  r10         "delegate invoke call"
+;  V05 tmp1         [V05,T04] (  4,  3   )     int  ->  r12         "Inline stloc first use temp"
 ;
-; Lcl frame size = 0
+; Lcl frame size = 8
 
-G_M13005_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-       mov      r8, rsi
-       ; gcrRegs +[r8]
-       mov      rax, rdx
-       ; gcrRegs +[rax]
-       mov      r9, rcx
-       ; gcrRegs +[r9]
-						;; size=9 bbWeight=1 PerfScore 0.75
-G_M13005_IG02:        ; bbWeight=1, gcrefRegs=0381 {rax rdi r8 r9}, byrefRegs=0000 {}, byref
+G_M13005_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+       push     rbp
+       push     r15
+       push     r14
+       push     r13
+       push     r12
+       push     rbx
+       push     rax
+       lea      rbp, [rsp+0x30]
+       mov      rbx, rdi
+       ; gcrRegs +[rbx]
+       mov      r15, rsi
+       ; gcrRegs +[r15]
+       mov      r14, rdx
+       ; gcrRegs +[r14]
+       mov      r13, rcx
+       ; gcrRegs +[r13]
+						;; size=28 bbWeight=1 PerfScore 8.50
+G_M13005_IG02:        ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+       mov      rdi, rbx
        ; gcrRegs +[rdi]
-       mov      rsi, 0xD1FFAB1E      ; const ptr
-       mov      r10, gword ptr [rsi]
-       ; gcrRegs +[r10]
-       mov      rsi, rdi
+       mov      rsi, r15
        ; gcrRegs +[rsi]
-       mov      rdx, r8
+       mov      rax, 0xD1FFAB1E      ; code for System.Runtime.Serialization.SerializationInfo:FindElement(System.String):int:this
+       call     [rax]System.Runtime.Serialization.SerializationInfo:FindElement(System.String):int:this
+       ; gcrRegs -[rsi rdi]
+       mov      r12d, eax
+       test     r12d, r12d
+       jl       SHORT G_M13005_IG05
+						;; size=26 bbWeight=1 PerfScore 5.25
+G_M13005_IG03:        ; bbWeight=0.50, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[r15]
+       mov      rdi, gword ptr [rbx+0x10]
+       ; gcrRegs +[rdi]
+       movsxd   rsi, r12d
+       mov      rdx, r14
        ; gcrRegs +[rdx]
-       mov      rcx, rax
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
+       call     [rax]CORINFO_HELP_ARRADDR_ST
+       ; gcrRegs -[rdx rdi r14]
+       mov      rdi, gword ptr [rbx+0x18]
+       ; gcrRegs +[rdi]
+       movsxd   rsi, r12d
+       mov      rdx, r13
+       ; gcrRegs +[rdx]
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
+       call     [rax]CORINFO_HELP_ARRADDR_ST
+       ; gcrRegs -[rdx rbx rdi r13]
+       nop      
+						;; size=45 bbWeight=0.50 PerfScore 5.88
+G_M13005_IG04:        ; bbWeight=0.50, epilog, nogc, extend
+       add      rsp, 8
+       pop      rbx
+       pop      r12
+       pop      r13
+       pop      r14
+       pop      r15
+       pop      rbp
+       ret      
+						;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M13005_IG05:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs +[rbx r13-r15]
+       mov      rdi, rbx
+       ; gcrRegs +[rdi]
+       mov      rsi, r15
+       ; gcrRegs +[rsi]
+       mov      rdx, r14
+       ; gcrRegs +[rdx]
+       mov      rcx, r13
        ; gcrRegs +[rcx]
-       mov      r8, r9
-       mov      rdi, gword ptr [r10+0x08]
-						;; size=29 bbWeight=1 PerfScore 5.25
-G_M13005_IG03:        ; bbWeight=1, epilog, nogc, extend
-       tail.jmp [r10+0x18]System.Action`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Invoke(System.__Canon,System.__Canon,System.__Canon,System.__Canon):this
-						;; size=4 bbWeight=1 PerfScore 2.00
+       mov      rax, 0xD1FFAB1E      ; code for System.Runtime.Serialization.SerializationInfo:AddValueInternal(System.String,System.Object,System.Type):this
+						;; size=22 bbWeight=0.50 PerfScore 0.62
+G_M13005_IG06:        ; bbWeight=0.50, epilog, nogc, extend
+       add      rsp, 8
+       pop      rbx
+       pop      r12
+       pop      r13
+       pop      r14
+       pop      r15
+       pop      rbp
+       tail.jmp [rax]System.Runtime.Serialization.SerializationInfo:AddValueInternal(System.String,System.Object,System.Type):this
+						;; size=17 bbWeight=0.50 PerfScore 2.62
 
-; Total bytes of code 42, prolog size 9, PerfScore 8.00, instruction count 11, allocated bytes for code 42 (MethodHash=8b40cd32) for method System.Resources.Extensions.BinaryFormat.SerializationInfoExtensions:UpdateValue(System.Runtime.Serialization.SerializationInfo,System.String,System.Object,System.Type) (FullOpts)
+; Total bytes of code 153, prolog size 16, PerfScore 25.00, instruction count 51, allocated bytes for code 153 (MethodHash=8b40cd32) for method System.Resources.Extensions.BinaryFormat.SerializationInfoExtensions:UpdateValue(System.Runtime.Serialization.SerializationInfo,System.String,System.Object,System.Type) (FullOpts)
 ; ============================================================
111 (264.29 % of base) - System.Runtime.Serialization.SerializationInfoExtensions:UpdateValue(System.Runtime.Serialization.SerializationInfo,System.String,System.Object,System.Type)
 ; Assembly listing for method System.Runtime.Serialization.SerializationInfoExtensions:UpdateValue(System.Runtime.Serialization.SerializationInfo,System.String,System.Object,System.Type) (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; 0 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  3,  3   )     ref  ->  rdi         class-hnd single-def <System.Runtime.Serialization.SerializationInfo>
-;  V01 arg1         [V01,T02] (  3,  3   )     ref  ->   r8         class-hnd single-def <System.String>
-;  V02 arg2         [V02,T03] (  3,  3   )     ref  ->  rax         class-hnd single-def <System.Object>
-;  V03 arg3         [V03,T04] (  3,  3   )     ref  ->   r9         class-hnd single-def <System.Type>
+;  V00 arg0         [V00,T00] (  6,  4.50)     ref  ->  rbx         class-hnd single-def <System.Runtime.Serialization.SerializationInfo>
+;  V01 arg1         [V01,T01] (  4,  3.50)     ref  ->  r15         class-hnd single-def <System.String>
+;  V02 arg2         [V02,T02] (  4,  3   )     ref  ->  r14         class-hnd single-def <System.Object>
+;  V03 arg3         [V03,T03] (  4,  3   )     ref  ->  r13         class-hnd single-def <System.Type>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V05 rat0         [V05,T00] (  3,  6   )     ref  ->  r10         "delegate invoke call"
+;  V05 tmp1         [V05,T04] (  4,  3   )     int  ->  r12         "Inline stloc first use temp"
 ;
-; Lcl frame size = 0
+; Lcl frame size = 8
 
-G_M23470_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-       mov      r8, rsi
-       ; gcrRegs +[r8]
-       mov      rax, rdx
-       ; gcrRegs +[rax]
-       mov      r9, rcx
-       ; gcrRegs +[r9]
-						;; size=9 bbWeight=1 PerfScore 0.75
-G_M23470_IG02:        ; bbWeight=1, gcrefRegs=0381 {rax rdi r8 r9}, byrefRegs=0000 {}, byref
+G_M23470_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+       push     rbp
+       push     r15
+       push     r14
+       push     r13
+       push     r12
+       push     rbx
+       push     rax
+       lea      rbp, [rsp+0x30]
+       mov      rbx, rdi
+       ; gcrRegs +[rbx]
+       mov      r15, rsi
+       ; gcrRegs +[r15]
+       mov      r14, rdx
+       ; gcrRegs +[r14]
+       mov      r13, rcx
+       ; gcrRegs +[r13]
+						;; size=28 bbWeight=1 PerfScore 8.50
+G_M23470_IG02:        ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+       mov      rdi, rbx
        ; gcrRegs +[rdi]
-       mov      rsi, 0xD1FFAB1E      ; const ptr
-       mov      r10, gword ptr [rsi]
-       ; gcrRegs +[r10]
-       mov      rsi, rdi
+       mov      rsi, r15
        ; gcrRegs +[rsi]
-       mov      rdx, r8
+       mov      rax, 0xD1FFAB1E      ; code for System.Runtime.Serialization.SerializationInfo:FindElement(System.String):int:this
+       call     [rax]System.Runtime.Serialization.SerializationInfo:FindElement(System.String):int:this
+       ; gcrRegs -[rsi rdi]
+       mov      r12d, eax
+       test     r12d, r12d
+       jl       SHORT G_M23470_IG05
+						;; size=26 bbWeight=1 PerfScore 5.25
+G_M23470_IG03:        ; bbWeight=0.50, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[r15]
+       mov      rdi, gword ptr [rbx+0x10]
+       ; gcrRegs +[rdi]
+       movsxd   rsi, r12d
+       mov      rdx, r14
        ; gcrRegs +[rdx]
-       mov      rcx, rax
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
+       call     [rax]CORINFO_HELP_ARRADDR_ST
+       ; gcrRegs -[rdx rdi r14]
+       mov      rdi, gword ptr [rbx+0x18]
+       ; gcrRegs +[rdi]
+       movsxd   rsi, r12d
+       mov      rdx, r13
+       ; gcrRegs +[rdx]
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
+       call     [rax]CORINFO_HELP_ARRADDR_ST
+       ; gcrRegs -[rdx rbx rdi r13]
+       nop      
+						;; size=45 bbWeight=0.50 PerfScore 5.88
+G_M23470_IG04:        ; bbWeight=0.50, epilog, nogc, extend
+       add      rsp, 8
+       pop      rbx
+       pop      r12
+       pop      r13
+       pop      r14
+       pop      r15
+       pop      rbp
+       ret      
+						;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M23470_IG05:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs +[rbx r13-r15]
+       mov      rdi, rbx
+       ; gcrRegs +[rdi]
+       mov      rsi, r15
+       ; gcrRegs +[rsi]
+       mov      rdx, r14
+       ; gcrRegs +[rdx]
+       mov      rcx, r13
        ; gcrRegs +[rcx]
-       mov      r8, r9
-       mov      rdi, gword ptr [r10+0x08]
-						;; size=29 bbWeight=1 PerfScore 5.25
-G_M23470_IG03:        ; bbWeight=1, epilog, nogc, extend
-       tail.jmp [r10+0x18]System.Action`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Invoke(System.__Canon,System.__Canon,System.__Canon,System.__Canon):this
-						;; size=4 bbWeight=1 PerfScore 2.00
+       mov      rax, 0xD1FFAB1E      ; code for System.Runtime.Serialization.SerializationInfo:AddValueInternal(System.String,System.Object,System.Type):this
+						;; size=22 bbWeight=0.50 PerfScore 0.62
+G_M23470_IG06:        ; bbWeight=0.50, epilog, nogc, extend
+       add      rsp, 8
+       pop      rbx
+       pop      r12
+       pop      r13
+       pop      r14
+       pop      r15
+       pop      rbp
+       tail.jmp [rax]System.Runtime.Serialization.SerializationInfo:AddValueInternal(System.String,System.Object,System.Type):this
+						;; size=17 bbWeight=0.50 PerfScore 2.62
 
-; Total bytes of code 42, prolog size 9, PerfScore 8.00, instruction count 11, allocated bytes for code 42 (MethodHash=36f5a451) for method System.Runtime.Serialization.SerializationInfoExtensions:UpdateValue(System.Runtime.Serialization.SerializationInfo,System.String,System.Object,System.Type) (FullOpts)
+; Total bytes of code 153, prolog size 16, PerfScore 25.00, instruction count 51, allocated bytes for code 153 (MethodHash=36f5a451) for method System.Runtime.Serialization.SerializationInfoExtensions:UpdateValue(System.Runtime.Serialization.SerializationInfo,System.String,System.Object,System.Type) (FullOpts)
 ; ============================================================
89 (86.41 % of base) - System.Resources.Extensions.BinaryFormat.Deserializer.SerializationInfoValueUpdater:UpdateValue(System.Collections.Generic.IDictionary`2[System.Formats.Nrbf.SerializationRecordId,System.Object]):this
 ; Assembly listing for method System.Resources.Extensions.BinaryFormat.Deserializer.SerializationInfoValueUpdater:UpdateValue(System.Collections.Generic.IDictionary`2[System.Formats.Nrbf.SerializationRecordId,System.Object]):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  5,  5   )     ref  ->  rbx         this class-hnd single-def <System.Resources.Extensions.BinaryFormat.Deserializer.SerializationInfoValueUpdater>
 ;  V01 arg1         [V01,T02] (  3,  3   )     ref  ->  rdi         class-hnd single-def <System.Collections.Generic.IDictionary`2[System.Formats.Nrbf.SerializationRecordId,System.Object]>
-;  V02 loc0         [V02,T06] (  3,  3   )     ref  ->  r15         class-hnd single-def <System.__Canon>
+;  V02 loc0         [V02,T05] (  4,  3   )     ref  ->  r15         class-hnd single-def <System.__Canon>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Formats.Nrbf.SerializationRecordId>
-;* V05 tmp2         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Runtime.Serialization.SerializationInfo>
-;* V06 tmp3         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
-;* V07 tmp4         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.RuntimeType>
-;* V08 tmp5         [V08    ] (  0,  0   )     int  ->  zero-ref    "field V04._id (fldOffset=0x0)" P-INDEP
-;  V09 tmp6         [V09,T03] (  2,  4   )     ref  ->   r8         single-def "argument with side effect"
-;  V10 tmp7         [V10,T04] (  2,  4   )     ref  ->  r14         single-def "argument with side effect"
-;  V11 tmp8         [V11,T05] (  2,  4   )     ref  ->  rbx         single-def "argument with side effect"
-;  V12 rat0         [V12,T01] (  3,  6   )     ref  ->  rax         "delegate invoke call"
+;  V05 tmp2         [V05,T01] (  5,  7   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.Runtime.Serialization.SerializationInfo>
+;  V06 tmp3         [V06,T03] (  3,  5   )     ref  ->  rbx         class-hnd exact single-def "Inlining Arg" <System.String>
+;  V07 tmp4         [V07,T04] (  3,  4   )     ref  ->  r13         class-hnd exact single-def "Inlining Arg" <System.RuntimeType>
+;  V08 tmp5         [V08,T06] (  4,  3   )     int  ->  r12         single-def "Inline stloc first use temp"
+;* V09 tmp6         [V09    ] (  0,  0   )     int  ->  zero-ref    "field V04._id (fldOffset=0x0)" P-INDEP
 ;
 ; Lcl frame size = 8
 
-G_M5755_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M5755_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
        push     rbp
        push     r15
        push     r14
+       push     r13
+       push     r12
        push     rbx
        push     rax
-       lea      rbp, [rsp+0x20]
+       lea      rbp, [rsp+0x30]
        mov      rbx, rdi
        ; gcrRegs +[rbx]
        mov      rdi, rsi
        ; gcrRegs +[rdi]
-						;; size=18 bbWeight=1 PerfScore 6.00
-G_M5755_IG02:        ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+						;; size=22 bbWeight=1 PerfScore 8.00
+G_M5755_IG02:        ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
        mov      esi, dword ptr [rbx+0x08]
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IDictionary`2[System.Formats.Nrbf.SerializationRecordId,System.__Canon]:get_Item(System.Formats.Nrbf.SerializationRecordId):System.__Canon:this
        call     [r11]System.Collections.Generic.IDictionary`2[System.Formats.Nrbf.SerializationRecordId,System.__Canon]:get_Item(System.Formats.Nrbf.SerializationRecordId):System.__Canon:this
        ; gcrRegs -[rdi] +[rax]
        mov      r15, rax
        ; gcrRegs +[r15]
        mov      r14, gword ptr [rbx+0x10]
        ; gcrRegs +[r14]
        mov      rbx, gword ptr [rbx+0x18]
        mov      rdi, r15
        ; gcrRegs +[rdi]
        mov      rax, 0xD1FFAB1E      ; code for System.Object:GetType():System.Type:this
        ; gcrRegs -[rax]
        call     [rax]System.Object:GetType():System.Type:this
        ; gcrRegs -[rdi] +[rax]
-       mov      r8, rax
-       ; gcrRegs +[r8]
-       mov      rsi, r14
-       ; gcrRegs +[rsi]
-       mov      rdx, rbx
-       ; gcrRegs +[rdx]
-       mov      rcx, 0xD1FFAB1E      ; const ptr
-       mov      rax, gword ptr [rcx]
-       mov      rcx, r15
-       ; gcrRegs +[rcx]
-       mov      rdi, gword ptr [rax+0x08]
+       mov      r13, rax
+       ; gcrRegs +[r13]
+       mov      rdi, r14
        ; gcrRegs +[rdi]
-						;; size=71 bbWeight=1 PerfScore 18.25
-G_M5755_IG03:        ; bbWeight=1, epilog, nogc, extend
+       mov      rsi, rbx
+       ; gcrRegs +[rsi]
+       mov      rax, 0xD1FFAB1E      ; code for System.Runtime.Serialization.SerializationInfo:FindElement(System.String):int:this
+       ; gcrRegs -[rax]
+       call     [rax]System.Runtime.Serialization.SerializationInfo:FindElement(System.String):int:this
+       ; gcrRegs -[rsi rdi]
+       mov      r12d, eax
+       test     r12d, r12d
+       jl       SHORT G_M5755_IG05
+						;; size=71 bbWeight=1 PerfScore 18.50
+G_M5755_IG03:        ; bbWeight=0.50, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rbx]
+       mov      rdi, gword ptr [r14+0x10]
+       ; gcrRegs +[rdi]
+       movsxd   rsi, r12d
+       mov      rdx, r15
+       ; gcrRegs +[rdx]
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
+       call     [rax]CORINFO_HELP_ARRADDR_ST
+       ; gcrRegs -[rdx rdi r15]
+       mov      rdi, gword ptr [r14+0x18]
+       ; gcrRegs +[rdi]
+       movsxd   rsi, r12d
+       mov      rdx, r13
+       ; gcrRegs +[rdx]
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
+       call     [rax]CORINFO_HELP_ARRADDR_ST
+       ; gcrRegs -[rdx rdi r13-r14]
+       nop      
+						;; size=45 bbWeight=0.50 PerfScore 5.88
+G_M5755_IG04:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 8
        pop      rbx
+       pop      r12
+       pop      r13
        pop      r14
        pop      r15
        pop      rbp
-       tail.jmp [rax+0x18]System.Action`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Invoke(System.__Canon,System.__Canon,System.__Canon,System.__Canon):this
-						;; size=14 bbWeight=1 PerfScore 4.25
+       ret      
+						;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M5755_IG05:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs +[rbx r13-r15]
+       mov      rdi, r14
+       ; gcrRegs +[rdi]
+       mov      rsi, rbx
+       ; gcrRegs +[rsi]
+       mov      rdx, r15
+       ; gcrRegs +[rdx]
+       mov      rcx, r13
+       ; gcrRegs +[rcx]
+       mov      rax, 0xD1FFAB1E      ; code for System.Runtime.Serialization.SerializationInfo:AddValueInternal(System.String,System.Object,System.Type):this
+						;; size=22 bbWeight=0.50 PerfScore 0.62
+G_M5755_IG06:        ; bbWeight=0.50, epilog, nogc, extend
+       add      rsp, 8
+       pop      rbx
+       pop      r12
+       pop      r13
+       pop      r14
+       pop      r15
+       pop      rbp
+       tail.jmp [rax]System.Runtime.Serialization.SerializationInfo:AddValueInternal(System.String,System.Object,System.Type):this
+						;; size=17 bbWeight=0.50 PerfScore 2.62
 
-; Total bytes of code 103, prolog size 12, PerfScore 28.50, instruction count 30, allocated bytes for code 103 (MethodHash=ba42e984) for method System.Resources.Extensions.BinaryFormat.Deserializer.SerializationInfoValueUpdater:UpdateValue(System.Collections.Generic.IDictionary`2[System.Formats.Nrbf.SerializationRecordId,System.Object]):this (FullOpts)
+; Total bytes of code 192, prolog size 16, PerfScore 37.75, instruction count 59, allocated bytes for code 192 (MethodHash=ba42e984) for method System.Resources.Extensions.BinaryFormat.Deserializer.SerializationInfoValueUpdater:UpdateValue(System.Collections.Generic.IDictionary`2[System.Formats.Nrbf.SerializationRecordId,System.Object]):this (FullOpts)
 ; ============================================================
78 (89.66 % of base) - Microsoft.Extensions.Http.Logging.LogHelper:LogRequestFailed(Microsoft.Extensions.Logging.ILogger,System.TimeSpan,System.Net.Http.HttpRequestException)
 ; Assembly listing for method Microsoft.Extensions.Http.Logging.LogHelper:LogRequestFailed(Microsoft.Extensions.Logging.ILogger,System.TimeSpan,System.Net.Http.HttpRequestException) (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  3,  3   )     ref  ->  rdi         class-hnd single-def <Microsoft.Extensions.Logging.ILogger>
+;  V00 arg0         [V00,T00] (  4,  3.50)     ref  ->  rbx         class-hnd single-def <Microsoft.Extensions.Logging.ILogger>
 ;* V01 arg1         [V01    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <System.TimeSpan>
-;  V02 arg2         [V02,T02] (  3,  3   )     ref  ->  rdx         class-hnd single-def <System.Net.Http.HttpRequestException>
+;  V02 arg2         [V02,T02] (  3,  2.50)     ref  ->  r15         class-hnd single-def <System.Net.Http.HttpRequestException>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T05] (  4,  2.50)  double  ->  mm0         "Inline return value spill temp"
+;  V04 tmp1         [V04,T06] (  4,  2   )  double  ->  [rbp-0x20]  "Inline return value spill temp"
 ;  V05 tmp2         [V05,T04] (  4,  3   )  double  ->  mm0         "Inline stloc first use temp"
-;  V06 tmp3         [V06,T03] (  2,  2   )    long  ->  rsi         single-def "field V01._ticks (fldOffset=0x0)" P-INDEP
-;  V07 cse0         [V07,T07] (  3,  1.50)  double  ->  mm1         "CSE #02: moderate"
-;  V08 cse1         [V08,T06] (  3,  2.50)  double  ->  mm1         "CSE #01: aggressive"
-;  V09 rat0         [V09,T00] (  3,  6   )     ref  ->  rax         "delegate invoke call"
+;  V06 tmp3         [V06,T01] (  3,  5   )     ref  ->  r14         class-hnd single-def "Inlining Arg" <Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass10_0`1[double]>
+;  V07 tmp4         [V07,T03] (  2,  2   )    long  ->  rsi         single-def "field V01._ticks (fldOffset=0x0)" P-INDEP
+;  V08 cse0         [V08,T07] (  3,  1.50)  double  ->  mm1         "CSE #02: moderate"
+;  V09 cse1         [V09,T05] (  3,  2.50)  double  ->  mm1         "CSE #01: aggressive"
 ;
-; Lcl frame size = 0
+; Lcl frame size = 8
 
 G_M17470_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rbp
-       mov      rbp, rsp
-						;; size=4 bbWeight=1 PerfScore 1.25
-G_M17470_IG02:        ; bbWeight=1, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs +[rdx rdi]
+       push     r15
+       push     r14
+       push     rbx
+       push     rax
+       lea      rbp, [rsp+0x20]
+       mov      rbx, rdi
+       ; gcrRegs +[rbx]
+       mov      r15, rdx
+       ; gcrRegs +[r15]
+						;; size=18 bbWeight=1 PerfScore 6.00
+G_M17470_IG02:        ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
        vxorps   xmm0, xmm0, xmm0
        vcvtsi2sd xmm0, xmm0, rsi
        vdivsd   xmm0, xmm0, qword ptr [reloc @RWD00]
        vmovsd   xmm1, qword ptr [reloc @RWD08]
        vucomisd xmm0, xmm1
        ja       SHORT G_M17470_IG05
 						;; size=31 bbWeight=1 PerfScore 26.33
-G_M17470_IG03:        ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
+G_M17470_IG03:        ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
        vmovsd   xmm1, qword ptr [reloc @RWD16]
        vucomisd xmm1, xmm0
        ja       SHORT G_M17470_IG04
+       vmovsd   qword ptr [rbp-0x20], xmm0
        jmp      SHORT G_M17470_IG06
-						;; size=16 bbWeight=0.50 PerfScore 4.00
-G_M17470_IG04:        ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
+						;; size=21 bbWeight=0.50 PerfScore 4.50
+G_M17470_IG04:        ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
        vmovaps  xmm0, xmm1
+       vmovsd   qword ptr [rbp-0x20], xmm0
        jmp      SHORT G_M17470_IG06
-						;; size=6 bbWeight=0.50 PerfScore 1.12
-G_M17470_IG05:        ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
-       vmovaps  xmm0, xmm1
-						;; size=4 bbWeight=0.50 PerfScore 0.12
-G_M17470_IG06:        ; bbWeight=1, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
+						;; size=11 bbWeight=0.50 PerfScore 1.62
+G_M17470_IG05:        ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+       vmovsd   qword ptr [rbp-0x20], xmm1
+						;; size=5 bbWeight=0.50 PerfScore 0.50
+G_M17470_IG06:        ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
        mov      rsi, 0xD1FFAB1E      ; const ptr
-       mov      rax, gword ptr [rsi]
-       ; gcrRegs +[rax]
-       mov      rsi, rdi
+       mov      rsi, gword ptr [rsi]
        ; gcrRegs +[rsi]
-       mov      rdi, gword ptr [rax+0x08]
-       call     [rax+0x18]System.Action`3[System.__Canon,double,System.__Canon]:Invoke(System.__Canon,double,System.__Canon):this
-       ; gcrRegs -[rax rdx rsi rdi]
+       mov      r14, gword ptr [rsi+0x18]
+       ; gcrRegs +[r14]
+       mov      esi, dword ptr [r14+0x10]
+       ; gcrRegs -[rsi]
+       mov      rdi, rbx
+       ; gcrRegs +[rdi]
+       mov      r11, 0xD1FFAB1E      ; code for Microsoft.Extensions.Logging.ILogger:IsEnabled(int):ubyte:this
+       call     [r11]Microsoft.Extensions.Logging.ILogger:IsEnabled(int):ubyte:this
+       ; gcrRegs -[rdi]
+       test     eax, eax
+       je       SHORT G_M17470_IG08
+						;; size=41 bbWeight=1 PerfScore 11.00
+G_M17470_IG07:        ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+       mov      rdi, r14
+       ; gcrRegs +[rdi]
+       mov      rsi, rbx
+       ; gcrRegs +[rsi]
+       vmovsd   xmm0, qword ptr [rbp-0x20]
+       mov      rdx, r15
+       ; gcrRegs +[rdx]
+       mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass10_0`1[double]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,double,System.Exception):this
+       call     [rax]Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass10_0`1[double]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,double,System.Exception):this
+       ; gcrRegs -[rdx rbx rsi rdi r14-r15]
+						;; size=26 bbWeight=0.50 PerfScore 3.50
+G_M17470_IG08:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        nop      
-						;; size=24 bbWeight=1 PerfScore 7.75
-G_M17470_IG07:        ; bbWeight=1, epilog, nogc, extend
+						;; size=1 bbWeight=1 PerfScore 0.25
+G_M17470_IG09:        ; bbWeight=1, epilog, nogc, extend
+       add      rsp, 8
+       pop      rbx
+       pop      r14
+       pop      r15
        pop      rbp
        ret      
-						;; size=2 bbWeight=1 PerfScore 1.50
+						;; size=11 bbWeight=1 PerfScore 3.25
 RWD00  	dq	40C3880000000000h	;        10000
 RWD08  	dq	430A36E2EB1C4328h	; 9.22337204e+14
 RWD16  	dq	C30A36E2EB1C4328h	; -9.22337204e+14
 
 
-; Total bytes of code 87, prolog size 4, PerfScore 42.08, instruction count 23, allocated bytes for code 87 (MethodHash=bb4cbbc1) for method Microsoft.Extensions.Http.Logging.LogHelper:LogRequestFailed(Microsoft.Extensions.Logging.ILogger,System.TimeSpan,System.Net.Http.HttpRequestException) (FullOpts)
+; Total bytes of code 165, prolog size 12, PerfScore 56.96, instruction count 45, allocated bytes for code 165 (MethodHash=bb4cbbc1) for method Microsoft.Extensions.Http.Logging.LogHelper:LogRequestFailed(Microsoft.Extensions.Logging.ILogger,System.TimeSpan,System.Net.Http.HttpRequestException) (FullOpts)
 ; ============================================================
78 (89.66 % of base) - Microsoft.Extensions.Http.Logging.LogHelper:LogRequestPipelineFailed(Microsoft.Extensions.Logging.ILogger,System.TimeSpan,System.Net.Http.HttpRequestException)
 ; Assembly listing for method Microsoft.Extensions.Http.Logging.LogHelper:LogRequestPipelineFailed(Microsoft.Extensions.Logging.ILogger,System.TimeSpan,System.Net.Http.HttpRequestException) (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  3,  3   )     ref  ->  rdi         class-hnd single-def <Microsoft.Extensions.Logging.ILogger>
+;  V00 arg0         [V00,T00] (  4,  3.50)     ref  ->  rbx         class-hnd single-def <Microsoft.Extensions.Logging.ILogger>
 ;* V01 arg1         [V01    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <System.TimeSpan>
-;  V02 arg2         [V02,T02] (  3,  3   )     ref  ->  rdx         class-hnd single-def <System.Net.Http.HttpRequestException>
+;  V02 arg2         [V02,T02] (  3,  2.50)     ref  ->  r15         class-hnd single-def <System.Net.Http.HttpRequestException>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T05] (  4,  2.50)  double  ->  mm0         "Inline return value spill temp"
+;  V04 tmp1         [V04,T06] (  4,  2   )  double  ->  [rbp-0x20]  "Inline return value spill temp"
 ;  V05 tmp2         [V05,T04] (  4,  3   )  double  ->  mm0         "Inline stloc first use temp"
-;  V06 tmp3         [V06,T03] (  2,  2   )    long  ->  rsi         single-def "field V01._ticks (fldOffset=0x0)" P-INDEP
-;  V07 cse0         [V07,T07] (  3,  1.50)  double  ->  mm1         "CSE #02: moderate"
-;  V08 cse1         [V08,T06] (  3,  2.50)  double  ->  mm1         "CSE #01: aggressive"
-;  V09 rat0         [V09,T00] (  3,  6   )     ref  ->  rax         "delegate invoke call"
+;  V06 tmp3         [V06,T01] (  3,  5   )     ref  ->  r14         class-hnd single-def "Inlining Arg" <Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass10_0`1[double]>
+;  V07 tmp4         [V07,T03] (  2,  2   )    long  ->  rsi         single-def "field V01._ticks (fldOffset=0x0)" P-INDEP
+;  V08 cse0         [V08,T07] (  3,  1.50)  double  ->  mm1         "CSE #02: moderate"
+;  V09 cse1         [V09,T05] (  3,  2.50)  double  ->  mm1         "CSE #01: aggressive"
 ;
-; Lcl frame size = 0
+; Lcl frame size = 8
 
 G_M19484_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rbp
-       mov      rbp, rsp
-						;; size=4 bbWeight=1 PerfScore 1.25
-G_M19484_IG02:        ; bbWeight=1, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs +[rdx rdi]
+       push     r15
+       push     r14
+       push     rbx
+       push     rax
+       lea      rbp, [rsp+0x20]
+       mov      rbx, rdi
+       ; gcrRegs +[rbx]
+       mov      r15, rdx
+       ; gcrRegs +[r15]
+						;; size=18 bbWeight=1 PerfScore 6.00
+G_M19484_IG02:        ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
        vxorps   xmm0, xmm0, xmm0
        vcvtsi2sd xmm0, xmm0, rsi
        vdivsd   xmm0, xmm0, qword ptr [reloc @RWD00]
        vmovsd   xmm1, qword ptr [reloc @RWD08]
        vucomisd xmm0, xmm1
        ja       SHORT G_M19484_IG05
 						;; size=31 bbWeight=1 PerfScore 26.33
-G_M19484_IG03:        ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
+G_M19484_IG03:        ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
        vmovsd   xmm1, qword ptr [reloc @RWD16]
        vucomisd xmm1, xmm0
        ja       SHORT G_M19484_IG04
+       vmovsd   qword ptr [rbp-0x20], xmm0
        jmp      SHORT G_M19484_IG06
-						;; size=16 bbWeight=0.50 PerfScore 4.00
-G_M19484_IG04:        ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
+						;; size=21 bbWeight=0.50 PerfScore 4.50
+G_M19484_IG04:        ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
        vmovaps  xmm0, xmm1
+       vmovsd   qword ptr [rbp-0x20], xmm0
        jmp      SHORT G_M19484_IG06
-						;; size=6 bbWeight=0.50 PerfScore 1.12
-G_M19484_IG05:        ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
-       vmovaps  xmm0, xmm1
-						;; size=4 bbWeight=0.50 PerfScore 0.12
-G_M19484_IG06:        ; bbWeight=1, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
+						;; size=11 bbWeight=0.50 PerfScore 1.62
+G_M19484_IG05:        ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+       vmovsd   qword ptr [rbp-0x20], xmm1
+						;; size=5 bbWeight=0.50 PerfScore 0.50
+G_M19484_IG06:        ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
        mov      rsi, 0xD1FFAB1E      ; const ptr
-       mov      rax, gword ptr [rsi]
-       ; gcrRegs +[rax]
-       mov      rsi, rdi
+       mov      rsi, gword ptr [rsi]
        ; gcrRegs +[rsi]
-       mov      rdi, gword ptr [rax+0x08]
-       call     [rax+0x18]System.Action`3[System.__Canon,double,System.__Canon]:Invoke(System.__Canon,double,System.__Canon):this
-       ; gcrRegs -[rax rdx rsi rdi]
+       mov      r14, gword ptr [rsi+0x18]
+       ; gcrRegs +[r14]
+       mov      esi, dword ptr [r14+0x10]
+       ; gcrRegs -[rsi]
+       mov      rdi, rbx
+       ; gcrRegs +[rdi]
+       mov      r11, 0xD1FFAB1E      ; code for Microsoft.Extensions.Logging.ILogger:IsEnabled(int):ubyte:this
+       call     [r11]Microsoft.Extensions.Logging.ILogger:IsEnabled(int):ubyte:this
+       ; gcrRegs -[rdi]
+       test     eax, eax
+       je       SHORT G_M19484_IG08
+						;; size=41 bbWeight=1 PerfScore 11.00
+G_M19484_IG07:        ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+       mov      rdi, r14
+       ; gcrRegs +[rdi]
+       mov      rsi, rbx
+       ; gcrRegs +[rsi]
+       vmovsd   xmm0, qword ptr [rbp-0x20]
+       mov      rdx, r15
+       ; gcrRegs +[rdx]
+       mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass10_0`1[double]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,double,System.Exception):this
+       call     [rax]Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass10_0`1[double]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,double,System.Exception):this
+       ; gcrRegs -[rdx rbx rsi rdi r14-r15]
+						;; size=26 bbWeight=0.50 PerfScore 3.50
+G_M19484_IG08:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        nop      
-						;; size=24 bbWeight=1 PerfScore 7.75
-G_M19484_IG07:        ; bbWeight=1, epilog, nogc, extend
+						;; size=1 bbWeight=1 PerfScore 0.25
+G_M19484_IG09:        ; bbWeight=1, epilog, nogc, extend
+       add      rsp, 8
+       pop      rbx
+       pop      r14
+       pop      r15
        pop      rbp
        ret      
-						;; size=2 bbWeight=1 PerfScore 1.50
+						;; size=11 bbWeight=1 PerfScore 3.25
 RWD00  	dq	40C3880000000000h	;        10000
 RWD08  	dq	430A36E2EB1C4328h	; 9.22337204e+14
 RWD16  	dq	C30A36E2EB1C4328h	; -9.22337204e+14
 
 
-; Total bytes of code 87, prolog size 4, PerfScore 42.08, instruction count 23, allocated bytes for code 87 (MethodHash=0d4fb3e3) for method Microsoft.Extensions.Http.Logging.LogHelper:LogRequestPipelineFailed(Microsoft.Extensions.Logging.ILogger,System.TimeSpan,System.Net.Http.HttpRequestException) (FullOpts)
+; Total bytes of code 165, prolog size 12, PerfScore 56.96, instruction count 45, allocated bytes for code 165 (MethodHash=0d4fb3e3) for method Microsoft.Extensions.Http.Logging.LogHelper:LogRequestPipelineFailed(Microsoft.Extensions.Logging.ILogger,System.TimeSpan,System.Net.Http.HttpRequestException) (FullOpts)
 ; ============================================================
66 (44.90 % of base) - Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:CleanupCycleEnd(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],System.TimeSpan,int,int)
 ; Assembly listing for method Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:CleanupCycleEnd(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],System.TimeSpan,int,int) (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T00] (  3,  3   )     ref  ->  rdi         class-hnd single-def <System.Lazy`1[Microsoft.Extensions.Logging.ILogger]>
 ;* V01 arg1         [V01    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <System.TimeSpan>
 ;  V02 arg2         [V02,T01] (  3,  2.50)     int  ->  rbx         single-def
 ;  V03 arg3         [V03,T02] (  3,  2.50)     int  ->  r15         single-def
-;  V04 loc0         [V04    ] (  2,  1.50)     ref  ->  [rbp-0x20]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.Extensions.Logging.ILogger>
+;  V04 loc0         [V04    ] (  2,  1.50)     ref  ->  [rbp-0x28]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.Extensions.Logging.ILogger>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T05] (  2,  2   )     ref  ->  rsi         class-hnd single-def "impAppendStmt" <Microsoft.Extensions.Logging.ILogger>
-;  V07 tmp2         [V07,T06] (  4,  2   )  double  ->  mm0         "Inline return value spill temp"
+;  V06 tmp1         [V06,T04] (  3,  3   )     ref  ->  r13         class-hnd single-def "impAppendStmt" <Microsoft.Extensions.Logging.ILogger>
+;  V07 tmp2         [V07,T06] (  4,  2   )  double  ->  [rbp-0x30]  "Inline return value spill temp"
 ;  V08 tmp3         [V08,T07] (  4,  2   )  double  ->  mm0         single-def "Inline stloc first use temp"
-;  V09 tmp4         [V09,T03] (  2,  1.50)    long  ->  r14         single-def "field V01._ticks (fldOffset=0x0)" P-INDEP
-;  V10 cse0         [V10,T08] (  3,  1.50)  double  ->  mm1         "CSE #01: moderate"
-;  V11 cse1         [V11,T09] (  3,  1.50)  double  ->  mm1         "CSE #02: moderate"
-;  V12 rat0         [V12,T04] (  3,  3   )     ref  ->  rax         "delegate invoke call"
+;  V09 tmp4         [V09,T05] (  3,  3   )     ref  ->  r14         class-hnd single-def "Inlining Arg" <Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass14_0`3[double,int,int]>
+;  V10 tmp5         [V10,T03] (  2,  1.50)    long  ->  r14         single-def "field V01._ticks (fldOffset=0x0)" P-INDEP
+;  V11 cse0         [V11,T08] (  3,  1.50)  double  ->  mm1         "CSE #01: moderate"
+;  V12 cse1         [V12,T09] (  3,  1.50)  double  ->  mm1         "CSE #02: moderate"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M28485_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rbp
        push     r15
        push     r14
+       push     r13
        push     rbx
-       push     rax
-       lea      rbp, [rsp+0x20]
+       sub      rsp, 16
+       lea      rbp, [rsp+0x30]
        xor      eax, eax
-       mov      qword ptr [rbp-0x20], rax
+       mov      qword ptr [rbp-0x28], rax
        mov      r14, rsi
        mov      ebx, edx
        mov      r15d, ecx
-						;; size=26 bbWeight=1 PerfScore 7.50
-G_M28485_IG02:        ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+						;; size=31 bbWeight=1 PerfScore 7.75
+G_M28485_IG02:        ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rdi]
-       lea      rsi, [rbp-0x20]
+       lea      rsi, [rbp-0x28]
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:TryGetLogger(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],byref):ubyte
        call     [rax]Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:TryGetLogger(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],byref):ubyte
        ; gcrRegs -[rdi]
        test     eax, eax
-       je       SHORT G_M28485_IG07
-						;; size=20 bbWeight=1 PerfScore 5.00
+       je       G_M28485_IG07
+						;; size=24 bbWeight=1 PerfScore 5.00
 G_M28485_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       mov      rsi, gword ptr [rbp-0x20]
-       ; gcrRegs +[rsi]
+       mov      r13, gword ptr [rbp-0x28]
+       ; gcrRegs +[r13]
        vxorps   xmm0, xmm0, xmm0
        vcvtsi2sd xmm0, xmm0, r14
        vdivsd   xmm0, xmm0, qword ptr [reloc @RWD00]
        vmovsd   xmm1, qword ptr [reloc @RWD08]
        vucomisd xmm0, xmm1
        ja       SHORT G_M28485_IG05
        vmovsd   xmm1, qword ptr [reloc @RWD16]
        vucomisd xmm1, xmm0
        ja       SHORT G_M28485_IG04
+       vmovsd   qword ptr [rbp-0x30], xmm0
        jmp      SHORT G_M28485_IG06
-						;; size=51 bbWeight=0.50 PerfScore 17.67
-G_M28485_IG04:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+						;; size=56 bbWeight=0.50 PerfScore 18.17
+G_M28485_IG04:        ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
        vmovaps  xmm0, xmm1
+       vmovsd   qword ptr [rbp-0x30], xmm0
        jmp      SHORT G_M28485_IG06
-						;; size=6 bbWeight=0.50 PerfScore 1.12
-G_M28485_IG05:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
-       vmovaps  xmm0, xmm1
-						;; size=4 bbWeight=0.50 PerfScore 0.12
-G_M28485_IG06:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
-       mov      rdx, 0xD1FFAB1E      ; const ptr
-       mov      rax, gword ptr [rdx]
-       ; gcrRegs +[rax]
+						;; size=11 bbWeight=0.50 PerfScore 1.62
+G_M28485_IG05:        ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
+       vmovsd   qword ptr [rbp-0x30], xmm1
+						;; size=5 bbWeight=0.50 PerfScore 0.50
+G_M28485_IG06:        ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
+       mov      rsi, 0xD1FFAB1E      ; const ptr
+       mov      rsi, gword ptr [rsi]
+       ; gcrRegs +[rsi]
+       mov      r14, gword ptr [rsi+0x18]
+       ; gcrRegs +[r14]
+       mov      esi, dword ptr [r14+0x10]
+       ; gcrRegs -[rsi]
+       mov      rdi, r13
+       ; gcrRegs +[rdi]
+       mov      r11, 0xD1FFAB1E      ; code for Microsoft.Extensions.Logging.ILogger:IsEnabled(int):ubyte:this
+       call     [r11]Microsoft.Extensions.Logging.ILogger:IsEnabled(int):ubyte:this
+       ; gcrRegs -[rdi]
+       test     eax, eax
+       je       SHORT G_M28485_IG07
+       mov      rdi, r14
+       ; gcrRegs +[rdi]
+       mov      rsi, r13
+       ; gcrRegs +[rsi]
+       vmovsd   xmm0, qword ptr [rbp-0x30]
        mov      edx, ebx
        mov      ecx, r15d
        xor      r8, r8
        ; gcrRegs +[r8]
-       mov      rdi, gword ptr [rax+0x08]
-       ; gcrRegs +[rdi]
-       call     [rax+0x18]System.Action`5[System.__Canon,double,int,int,System.__Canon]:Invoke(System.__Canon,double,int,int,System.__Canon):this
-       ; gcrRegs -[rax rsi rdi r8]
-						;; size=28 bbWeight=0.50 PerfScore 4.00
+       mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass14_0`3[double,int,int]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,double,int,int,System.Exception):this
+       call     [rax]Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass14_0`3[double,int,int]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,double,int,int,System.Exception):this
+       ; gcrRegs -[rsi rdi r8 r13-r14]
+						;; size=72 bbWeight=0.50 PerfScore 9.25
 G_M28485_IG07:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        nop      
 						;; size=1 bbWeight=1 PerfScore 0.25
 G_M28485_IG08:        ; bbWeight=1, epilog, nogc, extend
-       add      rsp, 8
+       add      rsp, 16
        pop      rbx
+       pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=11 bbWeight=1 PerfScore 3.25
+						;; size=13 bbWeight=1 PerfScore 3.75
 RWD00  	dq	40C3880000000000h	;        10000
 RWD08  	dq	430A36E2EB1C4328h	; 9.22337204e+14
 RWD16  	dq	C30A36E2EB1C4328h	; -9.22337204e+14
 
 
-; Total bytes of code 147, prolog size 18, PerfScore 38.92, instruction count 44, allocated bytes for code 147 (MethodHash=1f1a90ba) for method Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:CleanupCycleEnd(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],System.TimeSpan,int,int) (FullOpts)
+; Total bytes of code 213, prolog size 23, PerfScore 46.29, instruction count 58, allocated bytes for code 213 (MethodHash=1f1a90ba) for method Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:CleanupCycleEnd(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],System.TimeSpan,int,int) (FullOpts)
 ; ============================================================
63 (44.68 % of base) - Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:HandlerExpired(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],System.String,System.TimeSpan)
 ; Assembly listing for method Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:HandlerExpired(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],System.String,System.TimeSpan) (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T00] (  3,  3   )     ref  ->  rdi         class-hnd single-def <System.Lazy`1[Microsoft.Extensions.Logging.ILogger]>
 ;  V01 arg1         [V01,T01] (  3,  2.50)     ref  ->  rbx         class-hnd single-def <System.String>
 ;* V02 arg2         [V02    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <System.TimeSpan>
-;  V03 loc0         [V03    ] (  2,  1.50)     ref  ->  [rbp-0x18]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.Extensions.Logging.ILogger>
+;  V03 loc0         [V03    ] (  2,  1.50)     ref  ->  [rbp-0x20]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.Extensions.Logging.ILogger>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V05 tmp1         [V05,T04] (  2,  2   )     ref  ->  rsi         class-hnd single-def "impAppendStmt" <Microsoft.Extensions.Logging.ILogger>
-;  V06 tmp2         [V06,T05] (  4,  2   )  double  ->  mm0         "Inline return value spill temp"
+;  V05 tmp1         [V05,T03] (  3,  3   )     ref  ->  r14         class-hnd single-def "impAppendStmt" <Microsoft.Extensions.Logging.ILogger>
+;  V06 tmp2         [V06,T05] (  4,  2   )  double  ->  [rbp-0x28]  "Inline return value spill temp"
 ;  V07 tmp3         [V07,T06] (  4,  2   )  double  ->  mm0         single-def "Inline stloc first use temp"
-;  V08 tmp4         [V08,T02] (  2,  1.50)    long  ->  r15         single-def "field V02._ticks (fldOffset=0x0)" P-INDEP
-;  V09 cse0         [V09,T07] (  3,  1.50)  double  ->  mm1         "CSE #01: moderate"
-;  V10 cse1         [V10,T08] (  3,  1.50)  double  ->  mm1         "CSE #02: moderate"
-;  V11 rat0         [V11,T03] (  3,  3   )     ref  ->  rax         "delegate invoke call"
+;  V08 tmp4         [V08,T04] (  3,  3   )     ref  ->  r15         class-hnd single-def "Inlining Arg" <Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass12_0`2[double,System.__Canon]>
+;  V09 tmp5         [V09,T02] (  2,  1.50)    long  ->  r15         single-def "field V02._ticks (fldOffset=0x0)" P-INDEP
+;  V10 cse0         [V10,T07] (  3,  1.50)  double  ->  mm1         "CSE #01: moderate"
+;  V11 cse1         [V11,T08] (  3,  1.50)  double  ->  mm1         "CSE #02: moderate"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 24
 
 G_M8583_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rbp
        push     r15
+       push     r14
        push     rbx
-       sub      rsp, 16
-       lea      rbp, [rsp+0x20]
+       sub      rsp, 24
+       lea      rbp, [rsp+0x30]
        xor      eax, eax
-       mov      qword ptr [rbp-0x18], rax
+       mov      qword ptr [rbp-0x20], rax
        mov      rbx, rsi
        ; gcrRegs +[rbx]
        mov      r15, rdx
-						;; size=25 bbWeight=1 PerfScore 5.50
-G_M8583_IG02:        ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+						;; size=27 bbWeight=1 PerfScore 6.50
+G_M8583_IG02:        ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rdi]
-       lea      rsi, [rbp-0x18]
+       lea      rsi, [rbp-0x20]
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:TryGetLogger(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],byref):ubyte
        call     [rax]Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:TryGetLogger(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],byref):ubyte
        ; gcrRegs -[rdi]
        test     eax, eax
-       je       SHORT G_M8583_IG07
-						;; size=20 bbWeight=1 PerfScore 5.00
+       je       G_M8583_IG07
+						;; size=24 bbWeight=1 PerfScore 5.00
 G_M8583_IG03:        ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
-       mov      rsi, gword ptr [rbp-0x18]
-       ; gcrRegs +[rsi]
+       mov      r14, gword ptr [rbp-0x20]
+       ; gcrRegs +[r14]
        vxorps   xmm0, xmm0, xmm0
        vcvtsi2sd xmm0, xmm0, r15
        vdivsd   xmm0, xmm0, qword ptr [reloc @RWD00]
        vmovsd   xmm1, qword ptr [reloc @RWD08]
        vucomisd xmm0, xmm1
        ja       SHORT G_M8583_IG05
        vmovsd   xmm1, qword ptr [reloc @RWD16]
        vucomisd xmm1, xmm0
        ja       SHORT G_M8583_IG04
+       vmovsd   qword ptr [rbp-0x28], xmm0
        jmp      SHORT G_M8583_IG06
-						;; size=51 bbWeight=0.50 PerfScore 17.67
-G_M8583_IG04:        ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+						;; size=56 bbWeight=0.50 PerfScore 18.17
+G_M8583_IG04:        ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
        vmovaps  xmm0, xmm1
+       vmovsd   qword ptr [rbp-0x28], xmm0
        jmp      SHORT G_M8583_IG06
-						;; size=6 bbWeight=0.50 PerfScore 1.12
-G_M8583_IG05:        ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
-       vmovaps  xmm0, xmm1
-						;; size=4 bbWeight=0.50 PerfScore 0.12
-G_M8583_IG06:        ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
-       mov      rdx, 0xD1FFAB1E      ; const ptr
-       mov      rax, gword ptr [rdx]
-       ; gcrRegs +[rax]
+						;; size=11 bbWeight=0.50 PerfScore 1.62
+G_M8583_IG05:        ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+       vmovsd   qword ptr [rbp-0x28], xmm1
+						;; size=5 bbWeight=0.50 PerfScore 0.50
+G_M8583_IG06:        ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+       mov      rsi, 0xD1FFAB1E      ; const ptr
+       mov      rsi, gword ptr [rsi]
+       ; gcrRegs +[rsi]
+       mov      r15, gword ptr [rsi+0x18]
+       ; gcrRegs +[r15]
+       mov      esi, dword ptr [r15+0x10]
+       ; gcrRegs -[rsi]
+       mov      rdi, r14
+       ; gcrRegs +[rdi]
+       mov      r11, 0xD1FFAB1E      ; code for Microsoft.Extensions.Logging.ILogger:IsEnabled(int):ubyte:this
+       call     [r11]Microsoft.Extensions.Logging.ILogger:IsEnabled(int):ubyte:this
+       ; gcrRegs -[rdi]
+       test     eax, eax
+       je       SHORT G_M8583_IG07
+       mov      rdi, r15
+       ; gcrRegs +[rdi]
+       mov      rsi, r14
+       ; gcrRegs +[rsi]
+       vmovsd   xmm0, qword ptr [rbp-0x28]
        mov      rdx, rbx
        ; gcrRegs +[rdx]
        xor      rcx, rcx
        ; gcrRegs +[rcx]
-       mov      rdi, gword ptr [rax+0x08]
-       ; gcrRegs +[rdi]
-       call     [rax+0x18]System.Action`4[System.__Canon,double,System.__Canon,System.__Canon]:Invoke(System.__Canon,double,System.__Canon,System.__Canon):this
-       ; gcrRegs -[rax rcx rdx rbx rsi rdi]
-						;; size=25 bbWeight=0.50 PerfScore 3.88
+       mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass12_0`2[double,System.__Canon]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,double,System.__Canon,System.Exception):this
+       call     [rax]Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass12_0`2[double,System.__Canon]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,double,System.__Canon,System.Exception):this
+       ; gcrRegs -[rcx rdx rbx rsi rdi r14-r15]
+						;; size=69 bbWeight=0.50 PerfScore 9.12
 G_M8583_IG07:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        nop      
 						;; size=1 bbWeight=1 PerfScore 0.25
 G_M8583_IG08:        ; bbWeight=1, epilog, nogc, extend
-       add      rsp, 16
+       add      rsp, 24
        pop      rbx
+       pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=9 bbWeight=1 PerfScore 2.75
+						;; size=11 bbWeight=1 PerfScore 3.25
 RWD00  	dq	40C3880000000000h	;        10000
 RWD08  	dq	430A36E2EB1C4328h	; 9.22337204e+14
 RWD16  	dq	C30A36E2EB1C4328h	; -9.22337204e+14
 
 
-; Total bytes of code 141, prolog size 19, PerfScore 36.29, instruction count 40, allocated bytes for code 141 (MethodHash=1edcde78) for method Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:HandlerExpired(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],System.String,System.TimeSpan) (FullOpts)
+; Total bytes of code 204, prolog size 21, PerfScore 44.42, instruction count 54, allocated bytes for code 204 (MethodHash=1edcde78) for method Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:HandlerExpired(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],System.String,System.TimeSpan) (FullOpts)
 ; ============================================================

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

@MihuBot
Copy link
Owner Author

MihuBot commented Dec 1, 2024

Top method improvements

-11 (-6.01 % of base) - System.Data.SqlTypes.SqlXml:CreateSqlXmlReader(System.IO.Stream,ubyte,ubyte):System.Xml.XmlReader
 ; Assembly listing for method System.Data.SqlTypes.SqlXml:CreateSqlXmlReader(System.IO.Stream,ubyte,ubyte):System.Xml.XmlReader (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  3,  3   )     ref  ->  rdi         class-hnd single-def <System.IO.Stream>
-;  V01 arg1         [V01,T02] (  3,  2.50)   ubyte  ->  rsi         single-def
-;  V02 arg2         [V02,T03] (  3,  2   )   ubyte  ->  [rbp-0x14]  EH-live single-def
+;  V00 arg0         [V00,T00] (  3,  3   )     ref  ->  rdi         class-hnd single-def <System.IO.Stream>
+;  V01 arg1         [V01,T01] (  3,  2.50)   ubyte  ->  rsi         single-def
+;  V02 arg2         [V02,T02] (  3,  2   )   ubyte  ->  [rbp-0x14]  EH-live single-def
 ;* V03 loc0         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Xml.XmlReaderSettings>
-;  V04 loc1         [V04,T04] (  2,  2   )     ref  ->  rax         class-hnd single-def <System.Xml.XmlReader>
+;  V04 loc1         [V04,T03] (  2,  2   )     ref  ->  rax         class-hnd single-def <System.Xml.XmlReader>
 ;* V05 loc2         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Exception>
 ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V07 tmp1         [V07,T05] (  2,  1.50)     ref  ->  rdx        
-;  V08 tmp2         [V08,T07] (  3,  0   )     ref  ->  rbx         class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
-;  V09 tmp3         [V09,T08] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TargetInvocationException>
-;  V10 PSPSym       [V10,T06] (  1,  1   )    long  ->  [rbp-0x20]  do-not-enreg[V] "PSPSym"
-;  V11 rat0         [V11,T00] (  3,  6   )     ref  ->  rax         "delegate invoke call"
+;  V07 tmp1         [V07,T04] (  2,  1.50)     ref  ->  rsi        
+;  V08 tmp2         [V08,T06] (  3,  0   )     ref  ->  rbx         class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+;  V09 tmp3         [V09,T07] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TargetInvocationException>
+;  V10 PSPSym       [V10,T05] (  1,  1   )    long  ->  [rbp-0x20]  do-not-enreg[V] "PSPSym"
 ;
 ; Lcl frame size = 16
 
 G_M41339_IG01:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rbp
        push     r15
        push     rbx
        sub      rsp, 16
        lea      rbp, [rsp+0x20]
        mov      qword ptr [rbp-0x20], rsp
        mov      dword ptr [rbp-0x14], edx
 						;; size=20 bbWeight=0.50 PerfScore 2.88
 G_M41339_IG02:        ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rdi]
        mov      rdx, 0xD1FFAB1E      ; const ptr
-       mov      rcx, 0xD1FFAB1E      ; const ptr
+       mov      rax, 0xD1FFAB1E      ; const ptr
        test     sil, sil
-       mov      rdx, gword ptr [rdx]
-       ; gcrRegs +[rdx]
-       cmove    rdx, gword ptr [rcx]
-						;; size=30 bbWeight=0.50 PerfScore 2.88
-G_M41339_IG03:        ; bbWeight=1, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
-       mov      rsi, 0xD1FFAB1E      ; const ptr
-       mov      rax, gword ptr [rsi]
-       ; gcrRegs +[rax]
-       mov      rsi, rdi
+       mov      rsi, gword ptr [rax]
        ; gcrRegs +[rsi]
-       xor      rcx, rcx
-       ; gcrRegs +[rcx]
-       mov      rdi, gword ptr [rax+0x08]
-       call     [rax+0x18]System.Func`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Invoke(System.__Canon,System.__Canon,System.__Canon):System.__Canon:this
-       ; gcrRegs -[rcx rdx rsi rdi]
+       cmovne   rsi, gword ptr [rdx]
+						;; size=30 bbWeight=0.50 PerfScore 2.88
+G_M41339_IG03:        ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+       xor      rdx, rdx
+       ; gcrRegs +[rdx]
+       mov      rax, 0xD1FFAB1E      ; code for System.Xml.XmlReader:CreateSqlReader(System.IO.Stream,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext):System.Xml.XmlReader
+       call     [rax]System.Xml.XmlReader:CreateSqlReader(System.IO.Stream,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext):System.Xml.XmlReader
+       ; gcrRegs -[rdx rsi rdi] +[rax]
        ; gcr arg pop 0
        nop      
-						;; size=26 bbWeight=1 PerfScore 8.00
+						;; size=15 bbWeight=1 PerfScore 3.75
 G_M41339_IG04:        ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
        add      rsp, 16
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=9 bbWeight=1 PerfScore 2.75
 G_M41339_IG05:        ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, funclet prolog, nogc
        ; gcrRegs -[rax] +[rsi]
        push     rbp
        push     r15
        push     rbx
        sub      rsp, 16
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
        lea      rbp, [rbp+0x20]
 						;; size=19 bbWeight=0 PerfScore 0.00
 G_M41339_IG06:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
        mov      rbx, rsi
        ; gcrRegs +[rbx]
        cmp      byte  ptr [rbp-0x14], 0
        je       SHORT G_M41339_IG07
        mov      rdi, rbx
        ; gcrRegs +[rdi]
        mov      rax, 0xD1FFAB1E      ; code for System.Data.Common.ADP:IsCatchableExceptionType(System.Exception):ubyte
        call     [rax]System.Data.Common.ADP:IsCatchableExceptionType(System.Exception):ubyte
        ; gcrRegs -[rsi rdi]
        ; gcr arg pop 0
        test     eax, eax
        je       SHORT G_M41339_IG07
        mov      rdi, 0xD1FFAB1E      ; System.Reflection.TargetInvocationException
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
        ; gcr arg pop 0
        mov      r15, rax
        ; gcrRegs +[r15]
        mov      rdi, r15
        ; gcrRegs +[rdi]
        mov      rsi, rbx
        ; gcrRegs +[rsi]
        mov      rax, 0xD1FFAB1E      ; code for System.Reflection.TargetInvocationException:.ctor(System.Exception):this
        ; gcrRegs -[rax]
        call     [rax]System.Reflection.TargetInvocationException:.ctor(System.Exception):this
        ; gcrRegs -[rbx rsi rdi]
        ; gcr arg pop 0
        mov      rdi, r15
        ; gcrRegs +[rdi]
        call     CORINFO_HELP_THROW
        ; gcrRegs -[rdi r15]
        ; gcr arg pop 0
        int3     
 						;; size=73 bbWeight=0 PerfScore 0.00
 G_M41339_IG07:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        call     CORINFO_HELP_RETHROW
        ; gcr arg pop 0
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 183, prolog size 20, PerfScore 16.50, instruction count 51, allocated bytes for code 183 (MethodHash=b7dc5e84) for method System.Data.SqlTypes.SqlXml:CreateSqlXmlReader(System.IO.Stream,ubyte,ubyte):System.Xml.XmlReader (FullOpts)
+; Total bytes of code 172, prolog size 20, PerfScore 12.25, instruction count 48, allocated bytes for code 172 (MethodHash=b7dc5e84) for method System.Data.SqlTypes.SqlXml:CreateSqlXmlReader(System.IO.Stream,ubyte,ubyte):System.Xml.XmlReader (FullOpts)
 ; ============================================================
-10 (-3.51 % of base) - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:MapVerifyErrorToChainStatus(Interop+Crypto+X509VerifyStatusCode):int
 ; Assembly listing for method System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:MapVerifyErrorToChainStatus(Interop+Crypto+X509VerifyStatusCode):int (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;* V00 arg0         [V00    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <Interop+Crypto+X509VerifyStatusCode>
 ;* V01 loc0         [V01    ] (  0,  0   )     int  ->  zero-ref   
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T03] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
-;  V04 tmp2         [V04,T04] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.OutOfMemoryException>
+;  V03 tmp1         [V03,T02] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
+;  V04 tmp2         [V04,T03] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.OutOfMemoryException>
 ;  V05 tmp3         [V05,T00] ( 16, 16   )     int  ->  rax         "Single return block return value"
 ;  V06 tmp4         [V06,T01] (  4,  3.48)     int  ->  rdi         single-def "field V00.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;  V07 rat0         [V07,T02] (  3,  3   )     ref  ->  rax         "delegate invoke call"
 ;
 ; Lcl frame size = 8
 
 G_M38219_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rbp
        push     rbx
        push     rax
        lea      rbp, [rsp+0x10]
 						;; size=8 bbWeight=1 PerfScore 3.50
 G_M38219_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        cmp      edi, 53
        ja       SHORT G_M38219_IG04
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M38219_IG03:        ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      eax, edi
        lea      rcx, [reloc @RWD00]
        mov      ecx, dword ptr [rcx+4*rax]
        lea      rdx, G_M38219_IG02
        add      rcx, rdx
        jmp      rcx
 						;; size=24 bbWeight=0.98 PerfScore 5.89
 G_M38219_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      rsi, 0xD1FFAB1E      ; const ptr
-       mov      rax, gword ptr [rsi]
-       ; gcrRegs +[rax]
-       mov      esi, edi
-       mov      rdi, gword ptr [rax+0x08]
-       ; gcrRegs +[rdi]
-       call     [rax+0x18]System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+MapVersionSpecificCode:Invoke(Interop+Crypto+X509VerifyStatusCode):int:this
-       ; gcrRegs -[rax rdi]
-						;; size=22 bbWeight=0.50 PerfScore 3.75
+       mov      rax, 0xD1FFAB1E      ; code for System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:MapOpenSsl30Code(Interop+Crypto+X509VerifyStatusCode):int
+       call     [rax]System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:MapOpenSsl30Code(Interop+Crypto+X509VerifyStatusCode):int
+						;; size=12 bbWeight=0.50 PerfScore 1.62
 G_M38219_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        nop      
 						;; size=1 bbWeight=0.50 PerfScore 0.12
 G_M38219_IG06:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 8
        pop      rbx
        pop      rbp
        ret      
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG07:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
        mov      eax, 0x800
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG08:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        mov      eax, 0x1000
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        mov      eax, 0x8000
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG10:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        mov      eax, 0x4000
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG11:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        mov      eax, 512
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG12:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        mov      eax, 256
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG13:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        mov      eax, 0xD1FFAB1E
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG14:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        mov      eax, 0xD1FFAB1E
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG15:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        mov      eax, 16
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG16:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        mov      eax, 0x400
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG17:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      eax, 4
 						;; size=5 bbWeight=0.50 PerfScore 0.12
 G_M38219_IG18:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 8
        pop      rbx
        pop      rbp
        ret      
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG19:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
        mov      eax, 32
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG20:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      eax, 1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
 G_M38219_IG21:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 8
        pop      rbx
        pop      rbp
        ret      
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG22:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
        mov      eax, 8
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG23:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        mov      eax, 64
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG24:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      eax, 0x10000
        jmp      G_M38219_IG05
 						;; size=10 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG25:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M38219_IG26:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 8
        pop      rbx
        pop      rbp
        ret      
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG27:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
        mov      rdi, 0xD1FFAB1E      ; System.Security.Cryptography.CryptographicException
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
        mov      rbx, rax
        ; gcrRegs +[rbx]
        mov      rdi, rbx
        ; gcrRegs +[rdi]
        mov      rax, 0xD1FFAB1E      ; code for System.Security.Cryptography.CryptographicException:.ctor():this
        ; gcrRegs -[rax]
        call     [rax]System.Security.Cryptography.CryptographicException:.ctor():this
        ; gcrRegs -[rdi]
        mov      rdi, rbx
        ; gcrRegs +[rdi]
        call     CORINFO_HELP_THROW
        ; gcrRegs -[rbx rdi]
        int3     
 						;; size=42 bbWeight=0 PerfScore 0.00
 G_M38219_IG28:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      rdi, 0xD1FFAB1E      ; System.OutOfMemoryException
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
        mov      rbx, rax
        ; gcrRegs +[rbx]
        mov      rdi, rbx
        ; gcrRegs +[rdi]
        mov      rax, 0xD1FFAB1E      ; code for System.OutOfMemoryException:.ctor():this
        ; gcrRegs -[rax]
        call     [rax]System.OutOfMemoryException:.ctor():this
        ; gcrRegs -[rdi]
        mov      rdi, rbx
        ; gcrRegs +[rdi]
        call     CORINFO_HELP_THROW
        ; gcrRegs -[rbx rdi]
        int3     
 						;; size=42 bbWeight=0 PerfScore 0.00
 RWD00  	dd	G_M38219_IG25 - G_M38219_IG02
        	dd	G_M38219_IG04 - G_M38219_IG02
        	dd	G_M38219_IG24 - G_M38219_IG02
        	dd	G_M38219_IG23 - G_M38219_IG02
        	dd	G_M38219_IG04 - G_M38219_IG02
        	dd	G_M38219_IG23 - G_M38219_IG02
        	dd	G_M38219_IG22 - G_M38219_IG02
        	dd	G_M38219_IG22 - G_M38219_IG02
        	dd	G_M38219_IG23 - G_M38219_IG02
        	dd	G_M38219_IG20 - G_M38219_IG02
        	dd	G_M38219_IG20 - G_M38219_IG02
        	dd	G_M38219_IG23 - G_M38219_IG02
        	dd	G_M38219_IG23 - G_M38219_IG02
        	dd	G_M38219_IG20 - G_M38219_IG02
        	dd	G_M38219_IG20 - G_M38219_IG02
        	dd	G_M38219_IG23 - G_M38219_IG02
        	dd	G_M38219_IG23 - G_M38219_IG02
        	dd	G_M38219_IG28 - G_M38219_IG02
        	dd	G_M38219_IG19 - G_M38219_IG02
        	dd	G_M38219_IG19 - G_M38219_IG02
        	dd	G_M38219_IG24 - G_M38219_IG02
        	dd	G_M38219_IG24 - G_M38219_IG02
        	dd	G_M38219_IG27 - G_M38219_IG02
        	dd	G_M38219_IG17 - G_M38219_IG02
        	dd	G_M38219_IG04 - G_M38219_IG02
        	dd	G_M38219_IG16 - G_M38219_IG02
        	dd	G_M38219_IG15 - G_M38219_IG02
        	dd	G_M38219_IG19 - G_M38219_IG02
        	dd	G_M38219_IG14 - G_M38219_IG02
        	dd	G_M38219_IG04 - G_M38219_IG02
        	dd	G_M38219_IG04 - G_M38219_IG02
        	dd	G_M38219_IG04 - G_M38219_IG02
        	dd	G_M38219_IG16 - G_M38219_IG02
        	dd	G_M38219_IG23 - G_M38219_IG02
        	dd	G_M38219_IG13 - G_M38219_IG02
        	dd	G_M38219_IG23 - G_M38219_IG02
        	dd	G_M38219_IG23 - G_M38219_IG02
        	dd	G_M38219_IG16 - G_M38219_IG02
        	dd	G_M38219_IG04 - G_M38219_IG02
        	dd	G_M38219_IG16 - G_M38219_IG02
        	dd	G_M38219_IG04 - G_M38219_IG02
        	dd	G_M38219_IG12 - G_M38219_IG02
        	dd	G_M38219_IG11 - G_M38219_IG02
        	dd	G_M38219_IG11 - G_M38219_IG02
        	dd	G_M38219_IG04 - G_M38219_IG02
        	dd	G_M38219_IG04 - G_M38219_IG02
        	dd	G_M38219_IG04 - G_M38219_IG02
        	dd	G_M38219_IG10 - G_M38219_IG02
        	dd	G_M38219_IG09 - G_M38219_IG02
        	dd	G_M38219_IG08 - G_M38219_IG02
        	dd	G_M38219_IG04 - G_M38219_IG02
        	dd	G_M38219_IG04 - G_M38219_IG02
        	dd	G_M38219_IG04 - G_M38219_IG02
        	dd	G_M38219_IG07 - G_M38219_IG02
 
 
-; Total bytes of code 285, prolog size 8, PerfScore 35.14, instruction count 83, allocated bytes for code 285 (MethodHash=1e166ab4) for method System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:MapVerifyErrorToChainStatus(Interop+Crypto+X509VerifyStatusCode):int (FullOpts)
+; Total bytes of code 275, prolog size 8, PerfScore 33.02, instruction count 80, allocated bytes for code 275 (MethodHash=1e166ab4) for method System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:MapVerifyErrorToChainStatus(Interop+Crypto+X509VerifyStatusCode):int (FullOpts)
 ; ============================================================
-9 (-5.70 % of base) - System.Security.Cryptography.XmlKeyHelper+ParseState+Functions:ParseDocument(System.String):System.Object
 ; Assembly listing for method System.Security.Cryptography.XmlKeyHelper+ParseState+Functions:ParseDocument(System.String):System.Object (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 3 inlinees without PGO data
+; 0 inlinees with PGO data; 3 single block inlinees; 3 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  3,  3   )     ref  ->  rdi         class-hnd single-def <System.String>
+;  V00 arg0         [V00,T00] (  3,  3   )     ref  ->  rdi         class-hnd single-def <System.String>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V02 tmp1         [V02    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Reflection.RuntimePropertyInfo>
-;  V03 tmp2         [V03,T02] (  2,  4   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.__Canon>
+;  V03 tmp2         [V03,T01] (  2,  4   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Xml.Linq.XDocument>
 ;* V04 tmp3         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Reflection.RuntimePropertyInfo>
-;  V05 tmp4         [V05,T03] (  2,  4   )     ref  ->  rdi         class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimePropertyInfo>
+;  V05 tmp4         [V05,T02] (  2,  4   )     ref  ->  rdi         class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimePropertyInfo>
 ;* V06 tmp5         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "dup spill" <System.Reflection.RuntimeMethodInfo>
 ;* V07 tmp6         [V07    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V08 tmp7         [V08,T06] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-;  V09 tmp8         [V09,T04] (  3,  3   )     ref  ->  rdi         class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
+;  V08 tmp7         [V08,T05] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+;  V09 tmp8         [V09,T03] (  3,  3   )     ref  ->  rdi         class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
 ;* V10 tmp9         [V10    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V11 tmp10        [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
-;  V12 tmp11        [V12,T07] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V13 cse0         [V13,T05] (  3,  3   )     ref  ->  rdi         "CSE #01: aggressive"
-;  V14 rat0         [V14,T00] (  3,  6   )     ref  ->  rax         "delegate invoke call"
+;  V12 tmp11        [V12,T06] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V13 cse0         [V13,T04] (  3,  3   )     ref  ->  rdi         "CSE #01: aggressive"
 ;
 ; Lcl frame size = 8
 
 G_M47281_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rbp
        push     rbx
        push     rax
        lea      rbp, [rsp+0x10]
 						;; size=8 bbWeight=1 PerfScore 3.50
 G_M47281_IG02:        ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[rdi]
-       mov      rsi, 0xD1FFAB1E      ; const ptr
-       mov      rax, gword ptr [rsi]
-       ; gcrRegs +[rax]
-       mov      rsi, rdi
-       ; gcrRegs +[rsi]
-       mov      rdi, gword ptr [rax+0x08]
-       call     [rax+0x18]System.Func`2[System.__Canon,System.__Canon]:Invoke(System.__Canon):System.__Canon:this
-       ; gcrRegs -[rsi rdi]
+       xor      esi, esi
+       mov      rax, 0xD1FFAB1E      ; code for System.Xml.Linq.XDocument:Parse(System.String,int):System.Xml.Linq.XDocument
+       call     [rax]System.Xml.Linq.XDocument:Parse(System.String,int):System.Xml.Linq.XDocument
+       ; gcrRegs -[rdi] +[rax]
        mov      rsi, rax
        ; gcrRegs +[rsi]
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      rdi, gword ptr [rdi]
        ; gcrRegs +[rdi]
        mov      rdi, gword ptr [rdi+0x18]
        xor      rdx, rdx
        ; gcrRegs +[rdx]
        test     rdi, rdi
        cmove    rdi, rdx
        test     rdi, rdi
        je       SHORT G_M47281_IG04
        mov      edx, 60
        ; gcrRegs -[rdx]
        xor      rcx, rcx
        ; gcrRegs +[rcx]
        xor      r8, r8
        ; gcrRegs +[r8]
        xor      r9, r9
        ; gcrRegs +[r9]
        mov      rax, 0xD1FFAB1E
        ; gcrRegs -[rax]
        mov      rax, qword ptr [rax]
-						;; size=83 bbWeight=1 PerfScore 17.25
+						;; size=74 bbWeight=1 PerfScore 13.25
 G_M47281_IG03:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 8
        pop      rbx
        pop      rbp
        tail.jmp [rax+0x30]System.Reflection.MethodBase:Invoke(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this
 						;; size=10 bbWeight=1 PerfScore 3.25
 G_M47281_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs -[rcx rsi rdi r8-r9]
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentException
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
        mov      rbx, rax
        ; gcrRegs +[rbx]
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Arg_GetMethNotFnd():System.String
        ; gcrRegs -[rax]
        call     [rax]System.SR:get_Arg_GetMethNotFnd():System.String
        ; gcrRegs +[rax]
        mov      rsi, rax
        ; gcrRegs +[rsi]
        mov      rdi, rbx
        ; gcrRegs +[rdi]
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String):this
        ; gcrRegs -[rax]
        call     [rax]System.ArgumentException:.ctor(System.String):this
        ; gcrRegs -[rsi rdi]
        mov      rdi, rbx
        ; gcrRegs +[rdi]
        call     CORINFO_HELP_THROW
        ; gcrRegs -[rbx rdi]
        int3     
 						;; size=57 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 158, prolog size 8, PerfScore 24.00, instruction count 40, allocated bytes for code 158 (MethodHash=197b474e) for method System.Security.Cryptography.XmlKeyHelper+ParseState+Functions:ParseDocument(System.String):System.Object (FullOpts)
+; Total bytes of code 149, prolog size 8, PerfScore 20.00, instruction count 38, allocated bytes for code 149 (MethodHash=197b474e) for method System.Security.Cryptography.XmlKeyHelper+ParseState+Functions:ParseDocument(System.String):System.Object (FullOpts)
 ; ============================================================
-3 (-1.82 % of base) - System.Security.Cryptography.CryptoConfigForwarder:CreateFromName[System.__Canon](System.String):System.__Canon
 ; Assembly listing for method System.Security.Cryptography.CryptoConfigForwarder:CreateFromName[System.__Canon](System.String):System.__Canon (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; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 TypeCtx      [V00,T01] (  4,  4   )    long  ->  rbx         single-def
-;  V01 arg0         [V01,T03] (  3,  3   )     ref  ->  rsi         class-hnd single-def <System.String>
-;  V02 loc0         [V02,T07] (  4,  1.25)     ref  ->  [rbp-0x18]  class-hnd EH-live spill-single-def <System.__Canon>
-;  V03 loc1         [V03,T06] (  2,  2   )     ref  ->  rcx         class-hnd single-def <System.__Canon>
+;  V01 arg0         [V01,T02] (  3,  3   )     ref  ->  rsi         class-hnd single-def <System.String>
+;  V02 loc0         [V02,T06] (  4,  1.25)     ref  ->  [rbp-0x18]  class-hnd EH-live spill-single-def <System.Object>
+;  V03 loc1         [V03,T05] (  2,  2   )     ref  ->  rcx         class-hnd single-def <System.__Canon>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impSpillSpecialSideEff" <System.Object>
-;  V06 tmp2         [V06,T09] (  3,  0   )     ref  ->  rax         class-hnd single-def "dup spill" <System.__Canon>
+;  V06 tmp2         [V06,T08] (  3,  0   )     ref  ->  rax         class-hnd single-def "dup spill" <System.Object>
 ;* V07 tmp3         [V07    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V08 PSPSym       [V08,T08] (  1,  1   )    long  ->  [rbp-0x20]  do-not-enreg[V] "PSPSym"
-;  V09 rat0         [V09,T04] (  2,  3   )    long  ->  rdi         "Spilling to split statement for tree"
+;  V08 PSPSym       [V08,T07] (  1,  1   )    long  ->  [rbp-0x20]  do-not-enreg[V] "PSPSym"
+;  V09 rat0         [V09,T03] (  2,  3   )    long  ->  rdi         "Spilling to split statement for tree"
 ;  V10 rat1         [V10,T00] (  5,  7.50)     ref  ->  rcx         "replacement local"
-;  V11 rat2         [V11,T05] (  3,  2.50)    long  ->  rdi         "CSE for expectedClsNode"
-;  V12 rat3         [V12,T02] (  3,  6   )     ref  ->  rax         "delegate invoke call"
+;  V11 rat2         [V11,T04] (  3,  2.50)    long  ->  rdi         "CSE for expectedClsNode"
 ;
 ; Lcl frame size = 24
 
 G_M41944_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rbp
        push     rbx
        sub      rsp, 24
        lea      rbp, [rsp+0x20]
        mov      qword ptr [rbp-0x20], rsp
        mov      qword ptr [rbp-0x10], rdi
        mov      rbx, rdi
 						;; size=22 bbWeight=1 PerfScore 5.00
 G_M41944_IG02:        ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rsi]
-       mov      rdi, 0xD1FFAB1E      ; const ptr
-       mov      rax, gword ptr [rdi]
-       ; gcrRegs +[rax]
-       mov      rdi, gword ptr [rax+0x08]
+       mov      rdi, rsi
        ; gcrRegs +[rdi]
-       call     [rax+0x18]System.Func`2[System.__Canon,System.__Canon]:Invoke(System.__Canon):System.__Canon:this
-       ; gcrRegs -[rsi rdi]
+       xor      rsi, rsi
+       mov      rax, 0xD1FFAB1E      ; code for System.Security.Cryptography.CryptoConfig:CreateFromName(System.String,System.Object[]):System.Object
+       call     [rax]System.Security.Cryptography.CryptoConfig:CreateFromName(System.String,System.Object[]):System.Object
+       ; gcrRegs -[rsi rdi] +[rax]
        ; gcr arg pop 0
        mov      gword ptr [rbp-0x18], rax
        ; GC ptr vars +{V02}
-						;; size=24 bbWeight=1 PerfScore 8.25
-G_M41944_IG03:        ; bbWeight=1, gcVars=0000000000000080 {V02}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+						;; size=21 bbWeight=1 PerfScore 4.75
+G_M41944_IG03:        ; bbWeight=1, gcVars=0000000000000040 {V02}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
        mov      rdi, qword ptr [rbx+0x18]
        mov      rdi, qword ptr [rdi]
        mov      rcx, rax
        ; gcrRegs +[rcx]
        test     rcx, rcx
        je       SHORT G_M41944_IG06
 						;; size=15 bbWeight=1 PerfScore 5.50
 G_M41944_IG04:        ; bbWeight=0.50, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
        cmp      qword ptr [rcx], rdi
        je       SHORT G_M41944_IG06
 						;; size=5 bbWeight=0.50 PerfScore 2.00
 G_M41944_IG05:        ; bbWeight=0.25, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rcx]
        mov      rsi, rax
        ; gcrRegs +[rsi]
        mov      rcx, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTANY
        call     [rcx]CORINFO_HELP_CHKCASTANY
        ; gcrRegs -[rsi]
        ; gcr arg pop 0
        mov      rcx, rax
        ; gcrRegs +[rcx]
        mov      rax, gword ptr [rbp-0x18]
 						;; size=22 bbWeight=0.25 PerfScore 1.19
 G_M41944_IG06:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs -[rax]
        ; GC ptr vars -{V02}
        mov      rax, rcx
        ; gcrRegs +[rax]
 						;; size=3 bbWeight=1 PerfScore 0.25
 G_M41944_IG07:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 24
        pop      rbx
        pop      rbp
        ret      
 						;; size=7 bbWeight=1 PerfScore 2.25
 G_M41944_IG08:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
        ; gcrRegs -[rax rcx]
        push     rbp
        push     rbx
        push     rax
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
        lea      rbp, [rbp+0x20]
 						;; size=14 bbWeight=0 PerfScore 0.00
-G_M41944_IG09:        ; bbWeight=0, gcVars=0000000000000080 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; GC ptr vars +{V02}
+G_M41944_IG09:        ; bbWeight=0, gcVars=0000000000000040 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+       ; GC ptr vars +{V02 V06}
        mov      rsi, gword ptr [rbp-0x18]
        ; gcrRegs +[rsi]
        mov      rdi, 0xD1FFAB1E      ; System.IDisposable
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ISINSTANCEOFINTERFACE
-       ; GC ptr vars -{V02}
+       ; GC ptr vars -{V02 V06}
        call     [rax]CORINFO_HELP_ISINSTANCEOFINTERFACE
        ; gcrRegs -[rsi] +[rax]
        ; gcr arg pop 0
        test     rax, rax
        je       SHORT G_M41944_IG10
        mov      rdi, rax
        ; gcrRegs +[rdi]
        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
        call     [r11]System.IDisposable:Dispose():this
        ; gcrRegs -[rax rdi]
        ; gcr arg pop 0
 						;; size=47 bbWeight=0 PerfScore 0.00
 G_M41944_IG10:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        call     CORINFO_HELP_RETHROW
        ; gcr arg pop 0
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 165, prolog size 22, PerfScore 24.44, instruction count 46, allocated bytes for code 165 (MethodHash=bd945c27) for method System.Security.Cryptography.CryptoConfigForwarder:CreateFromName[System.__Canon](System.String):System.__Canon (FullOpts)
+; Total bytes of code 162, prolog size 22, PerfScore 20.94, instruction count 46, allocated bytes for code 162 (MethodHash=bd945c27) for method System.Security.Cryptography.CryptoConfigForwarder:CreateFromName[System.__Canon](System.String):System.__Canon (FullOpts)
 ; ============================================================

@MihuBot
Copy link
Owner Author

MihuBot commented Dec 1, 2024

@MichalPetryka

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant