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 #781

Open
MihuBot opened this issue Nov 10, 2024 · 3 comments
Open

Comments

@MihuBot
Copy link
Owner

MihuBot commented Nov 10, 2024

Job completed in 21 minutes 33 seconds.
dotnet/runtime#109679

Diffs

Found 268 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 39730858
Total bytes of diff: 39730322
Total bytes of delta: -536 (-0.00 % of base)
Total relative delta: 5.82
    diff is an improvement.
    relative diff is a regression.


Total byte diff includes -785 bytes from reconciling methods
	Base had    2 unique methods,      785 unique bytes
	Diff had    0 unique methods,        0 unique bytes

Top file regressions (bytes):
         200 : System.Resources.Extensions.dasm (0.40 % of base)
         111 : System.Runtime.Serialization.Formatters.dasm (0.55 % of base)
          95 : System.Reflection.MetadataLoadContext.dasm (0.04 % of base)

Top file improvements (bytes):
        -785 : Microsoft.Extensions.Http.dasm (-1.15 % of base)
        -116 : System.DirectoryServices.Protocols.dasm (-0.08 % of base)
         -22 : System.Security.Cryptography.dasm (-0.00 % of base)
         -11 : System.Data.Common.dasm (-0.00 % of base)
          -8 : System.Net.Mail.dasm (-0.00 % of base)

8 total files with Code Size differences (5 improved, 3 regressed), 251 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)
          54 (48.21 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.RoModule:GetUniqueArrayType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoArrayType:this (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)

Top method improvements (bytes):
        -414 (-100.00 % 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) (1 base, 0 diff methods)
        -371 (-100.00 % 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) (1 base, 0 diff methods)
        -116 (-100.00 % of base) : System.DirectoryServices.Protocols.dasm - System.DirectoryServices.Protocols.LdapConnection:set_AuthType(int):this (FullOpts)
         -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)
          -8 (-0.86 % of base) : System.Net.Mail.dasm - System.Net.Mail.SmtpReplyReaderFactory+ReadLinesAsyncResult:Read():this (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)
          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)
          54 (48.21 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.RoModule:GetUniqueArrayType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoArrayType:this (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)

Top method improvements (percentages):
        -371 (-100.00 % 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) (1 base, 0 diff methods)
        -414 (-100.00 % 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) (1 base, 0 diff methods)
        -116 (-100.00 % of base) : System.DirectoryServices.Protocols.dasm - System.DirectoryServices.Protocols.LdapConnection:set_AuthType(int):this (FullOpts)
         -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)
          -8 (-0.86 % of base) : System.Net.Mail.dasm - System.Net.Mail.SmtpReplyReaderFactory+ReadLinesAsyncResult:Read():this (FullOpts)

13 total methods with Code Size differences (8 improved, 5 regressed), 232799 unchanged.

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

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Nov 10, 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:
-       mov      r8, rsi
-       mov      rax, rdx
-       mov      r9, rcx
-						;; size=9 bbWeight=1 PerfScore 0.75
+       push     rbp
+       push     r15
+       push     r14
+       push     r13
+       push     r12
+       push     rbx
+       push     rax
+       lea      rbp, [rsp+0x30]
+       mov      rbx, rdi
+       mov      r15, rsi
+       mov      r14, rdx
+       mov      r13, rcx
+						;; size=28 bbWeight=1 PerfScore 8.50
 G_M13005_IG02:
-       mov      rsi, 0xD1FFAB1E      ; const ptr
-       mov      r10, gword ptr [rsi]
-       mov      rsi, rdi
-       mov      rdx, r8
-       mov      rcx, rax
-       mov      r8, r9
-       mov      rdi, gword ptr [r10+0x08]
-						;; size=29 bbWeight=1 PerfScore 5.25
+       mov      rdi, rbx
+       mov      rsi, r15
+       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
+       mov      r12d, eax
+       test     r12d, r12d
+       jl       SHORT G_M13005_IG05
+						;; size=26 bbWeight=1 PerfScore 5.25
 G_M13005_IG03:
-       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      rdi, gword ptr [rbx+0x10]
+       movsxd   rsi, r12d
+       mov      rdx, r14
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
+       call     [rax]CORINFO_HELP_ARRADDR_ST
+       mov      rdi, gword ptr [rbx+0x18]
+       movsxd   rsi, r12d
+       mov      rdx, r13
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
+       call     [rax]CORINFO_HELP_ARRADDR_ST
+       nop      
+						;; size=45 bbWeight=0.50 PerfScore 5.88
+G_M13005_IG04:
+       add      rsp, 8
+       pop      rbx
+       pop      r12
+       pop      r13
+       pop      r14
+       pop      r15
+       pop      rbp
+       ret      
+						;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M13005_IG05:
+       mov      rdi, rbx
+       mov      rsi, r15
+       mov      rdx, r14
+       mov      rcx, r13
+       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:
+       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:
-       mov      r8, rsi
-       mov      rax, rdx
-       mov      r9, rcx
-						;; size=9 bbWeight=1 PerfScore 0.75
+       push     rbp
+       push     r15
+       push     r14
+       push     r13
+       push     r12
+       push     rbx
+       push     rax
+       lea      rbp, [rsp+0x30]
+       mov      rbx, rdi
+       mov      r15, rsi
+       mov      r14, rdx
+       mov      r13, rcx
+						;; size=28 bbWeight=1 PerfScore 8.50
 G_M23470_IG02:
-       mov      rsi, 0xD1FFAB1E      ; const ptr
-       mov      r10, gword ptr [rsi]
-       mov      rsi, rdi
-       mov      rdx, r8
-       mov      rcx, rax
-       mov      r8, r9
-       mov      rdi, gword ptr [r10+0x08]
-						;; size=29 bbWeight=1 PerfScore 5.25
+       mov      rdi, rbx
+       mov      rsi, r15
+       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
+       mov      r12d, eax
+       test     r12d, r12d
+       jl       SHORT G_M23470_IG05
+						;; size=26 bbWeight=1 PerfScore 5.25
 G_M23470_IG03:
-       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      rdi, gword ptr [rbx+0x10]
+       movsxd   rsi, r12d
+       mov      rdx, r14
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
+       call     [rax]CORINFO_HELP_ARRADDR_ST
+       mov      rdi, gword ptr [rbx+0x18]
+       movsxd   rsi, r12d
+       mov      rdx, r13
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
+       call     [rax]CORINFO_HELP_ARRADDR_ST
+       nop      
+						;; size=45 bbWeight=0.50 PerfScore 5.88
+G_M23470_IG04:
+       add      rsp, 8
+       pop      rbx
+       pop      r12
+       pop      r13
+       pop      r14
+       pop      r15
+       pop      rbp
+       ret      
+						;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M23470_IG05:
+       mov      rdi, rbx
+       mov      rsi, r15
+       mov      rdx, r14
+       mov      rcx, r13
+       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:
+       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:
        push     rbp
        push     r15
        push     r14
+       push     r13
+       push     r12
        push     rbx
        push     rax
-       lea      rbp, [rsp+0x20]
+       lea      rbp, [rsp+0x30]
        mov      rbx, rdi
        mov      rdi, rsi
-						;; size=18 bbWeight=1 PerfScore 6.00
+						;; size=22 bbWeight=1 PerfScore 8.00
 G_M5755_IG02:
        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
        mov      r15, rax
        mov      r14, gword ptr [rbx+0x10]
        mov      rbx, gword ptr [rbx+0x18]
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Object:GetType():System.Type:this
        call     [rax]System.Object:GetType():System.Type:this
-       mov      r8, rax
-       mov      rsi, r14
-       mov      rdx, rbx
-       mov      rcx, 0xD1FFAB1E      ; const ptr
-       mov      rax, gword ptr [rcx]
-       mov      rcx, r15
-       mov      rdi, gword ptr [rax+0x08]
-						;; size=71 bbWeight=1 PerfScore 18.25
+       mov      r13, rax
+       mov      rdi, r14
+       mov      rsi, rbx
+       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
+       mov      r12d, eax
+       test     r12d, r12d
+       jl       SHORT G_M5755_IG05
+						;; size=71 bbWeight=1 PerfScore 18.50
 G_M5755_IG03:
+       mov      rdi, gword ptr [r14+0x10]
+       movsxd   rsi, r12d
+       mov      rdx, r15
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
+       call     [rax]CORINFO_HELP_ARRADDR_ST
+       mov      rdi, gword ptr [r14+0x18]
+       movsxd   rsi, r12d
+       mov      rdx, r13
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
+       call     [rax]CORINFO_HELP_ARRADDR_ST
+       nop      
+						;; size=45 bbWeight=0.50 PerfScore 5.88
+G_M5755_IG04:
        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:
+       mov      rdi, r14
+       mov      rsi, rbx
+       mov      rdx, r15
+       mov      rcx, r13
+       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:
+       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)
 ; ============================================================
54 (48.21 % of base) - System.Reflection.TypeLoading.RoModule:GetUniqueArrayType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoArrayType:this
 ; Assembly listing for method System.Reflection.TypeLoading.RoModule:GetUniqueArrayType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoArrayType:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
-; rbp based frame
+; rsp based frame
 ; fully interruptible
 ; No PGO data
+; 0 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  3,  2.50)     ref  ->  r15         this class-hnd single-def <System.Reflection.TypeLoading.RoModule>
-;  V01 arg1         [V01,T00] (  5,  4   )     ref  ->  rbx         class-hnd single-def <System.Reflection.TypeLoading.RoType>
+;  V00 this         [V00,T02] (  3,  2.50)     ref  ->  r15         this class-hnd single-def <System.Reflection.TypeLoading.RoModule>
+;  V01 arg1         [V01,T01] (  5,  4   )     ref  ->  rbx         class-hnd single-def <System.Reflection.TypeLoading.RoType>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 rat0         [V03,T02] (  3,  3   )     ref  ->  rax         "delegate invoke call"
+;  V03 tmp1         [V03,T00] (  7,  7   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TypeLoading.RoArrayType>
 ;
-; Lcl frame size = 0
+; Lcl frame size = 8
 
 G_M23311_IG01:
-       push     rbp
        push     r15
        push     rbx
-       lea      rbp, [rsp+0x10]
+       push     rax
        mov      r15, rdi
        mov      rbx, rsi
-						;; size=15 bbWeight=1 PerfScore 4.00
+						;; size=10 bbWeight=1 PerfScore 3.50
 G_M23311_IG02:
        mov      rsi, rbx
        mov      rdi, 0xD1FFAB1E      ; System.Reflection.RoModifiedType
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ISINSTANCEOFCLASS
        call     [rax]CORINFO_HELP_ISINSTANCEOFCLASS
        test     rax, rax
        je       SHORT G_M23311_IG05
 						;; size=30 bbWeight=1 PerfScore 5.00
 G_M23311_IG03:
-       mov      rsi, 0xD1FFAB1E      ; const ptr
-       mov      rax, gword ptr [rsi]
+       mov      rdi, 0xD1FFAB1E      ; System.Reflection.TypeLoading.RoArrayType
+       call     CORINFO_HELP_NEWSFAST
+       mov      r15, rax
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      rsi, gword ptr [rdi]
+       lea      rdi, bword ptr [r15+0x38]
+       call     CORINFO_HELP_ASSIGN_REF
+       mov      dword ptr [r15+0x50], -1
+       lea      rdi, bword ptr [r15+0x60]
        mov      rsi, rbx
-       mov      rdi, gword ptr [rax+0x08]
-						;; size=20 bbWeight=0.50 PerfScore 2.25
+       call     CORINFO_HELP_ASSIGN_REF
+       mov      byte  ptr [r15+0x6C], 0
+       mov      dword ptr [r15+0x68], 1
+       mov      rax, r15
+						;; size=76 bbWeight=0.50 PerfScore 5.12
 G_M23311_IG04:
+       add      rsp, 8
        pop      rbx
        pop      r15
-       pop      rbp
-       tail.jmp [rax+0x18]System.Func`2[System.__Canon,System.__Canon]:Invoke(System.__Canon):System.__Canon:this
-						;; size=8 bbWeight=0.50 PerfScore 1.75
+       ret      
+						;; size=8 bbWeight=0.50 PerfScore 1.12
 G_M23311_IG05:
        mov      rdi, gword ptr [r15+0x18]
        mov      rdx, 0xD1FFAB1E      ; const ptr
        mov      rdx, gword ptr [rdx]
        mov      rsi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetOrAdd(System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this
        cmp      dword ptr [rdi], edi
 						;; size=32 bbWeight=0.50 PerfScore 3.88
 G_M23311_IG06:
+       add      rsp, 8
        pop      rbx
        pop      r15
-       pop      rbp
        tail.jmp [rax]System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetOrAdd(System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this
-						;; size=7 bbWeight=0.50 PerfScore 1.75
+						;; size=10 bbWeight=0.50 PerfScore 1.62
 
-; Total bytes of code 112, prolog size 15, PerfScore 18.62, instruction count 30, allocated bytes for code 112 (MethodHash=7ce8a4f0) for method System.Reflection.TypeLoading.RoModule:GetUniqueArrayType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoArrayType:this (FullOpts)
+; Total bytes of code 166, prolog size 10, PerfScore 20.25, instruction count 39, allocated bytes for code 166 (MethodHash=7ce8a4f0) for method System.Reflection.TypeLoading.RoModule:GetUniqueArrayType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoArrayType:this (FullOpts)
 ; ============================================================
41 (36.61 % of base) - System.Reflection.TypeLoading.RoModule:GetUniqueByRefType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoByRefType:this
 ; Assembly listing for method System.Reflection.TypeLoading.RoModule:GetUniqueByRefType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoByRefType:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
-; rbp based frame
+; rsp based frame
 ; fully interruptible
 ; No PGO data
+; 0 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  3,  2.50)     ref  ->  r15         this class-hnd single-def <System.Reflection.TypeLoading.RoModule>
+;  V00 this         [V00,T02] (  3,  2.50)     ref  ->  r15         this class-hnd single-def <System.Reflection.TypeLoading.RoModule>
 ;  V01 arg1         [V01,T00] (  5,  4   )     ref  ->  rbx         class-hnd single-def <System.Reflection.TypeLoading.RoType>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 rat0         [V03,T02] (  3,  3   )     ref  ->  rax         "delegate invoke call"
+;  V03 tmp1         [V03,T01] (  5,  5   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TypeLoading.RoByRefType>
 ;
-; Lcl frame size = 0
+; Lcl frame size = 8
 
 G_M45263_IG01:
-       push     rbp
        push     r15
        push     rbx
-       lea      rbp, [rsp+0x10]
+       push     rax
        mov      r15, rdi
        mov      rbx, rsi
-						;; size=15 bbWeight=1 PerfScore 4.00
+						;; size=10 bbWeight=1 PerfScore 3.50
 G_M45263_IG02:
        mov      rsi, rbx
        mov      rdi, 0xD1FFAB1E      ; System.Reflection.RoModifiedType
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ISINSTANCEOFCLASS
        call     [rax]CORINFO_HELP_ISINSTANCEOFCLASS
        test     rax, rax
        je       SHORT G_M45263_IG05
 						;; size=30 bbWeight=1 PerfScore 5.00
 G_M45263_IG03:
-       mov      rsi, 0xD1FFAB1E      ; const ptr
-       mov      rax, gword ptr [rsi]
+       mov      rdi, 0xD1FFAB1E      ; System.Reflection.TypeLoading.RoByRefType
+       call     CORINFO_HELP_NEWSFAST
+       mov      r15, rax
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      rsi, gword ptr [rdi]
+       lea      rdi, bword ptr [r15+0x38]
+       call     CORINFO_HELP_ASSIGN_REF
+       mov      dword ptr [r15+0x50], -1
+       lea      rdi, bword ptr [r15+0x60]
        mov      rsi, rbx
-       mov      rdi, gword ptr [rax+0x08]
-						;; size=20 bbWeight=0.50 PerfScore 2.25
+       call     CORINFO_HELP_ASSIGN_REF
+       mov      rax, r15
+						;; size=63 bbWeight=0.50 PerfScore 4.12
 G_M45263_IG04:
+       add      rsp, 8
        pop      rbx
        pop      r15
-       pop      rbp
-       tail.jmp [rax+0x18]System.Func`2[System.__Canon,System.__Canon]:Invoke(System.__Canon):System.__Canon:this
-						;; size=8 bbWeight=0.50 PerfScore 1.75
+       ret      
+						;; size=8 bbWeight=0.50 PerfScore 1.12
 G_M45263_IG05:
        mov      rdi, gword ptr [r15+0x28]
        mov      rdx, 0xD1FFAB1E      ; const ptr
        mov      rdx, gword ptr [rdx]
        mov      rsi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetOrAdd(System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this
        cmp      dword ptr [rdi], edi
 						;; size=32 bbWeight=0.50 PerfScore 3.88
 G_M45263_IG06:
+       add      rsp, 8
        pop      rbx
        pop      r15
-       pop      rbp
        tail.jmp [rax]System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetOrAdd(System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this
-						;; size=7 bbWeight=0.50 PerfScore 1.75
+						;; size=10 bbWeight=0.50 PerfScore 1.62
 
-; Total bytes of code 112, prolog size 15, PerfScore 18.62, instruction count 30, allocated bytes for code 112 (MethodHash=d0934f30) for method System.Reflection.TypeLoading.RoModule:GetUniqueByRefType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoByRefType:this (FullOpts)
+; Total bytes of code 153, prolog size 10, PerfScore 19.25, instruction count 37, allocated bytes for code 153 (MethodHash=d0934f30) for method System.Reflection.TypeLoading.RoModule:GetUniqueByRefType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoByRefType:this (FullOpts)
 ; ============================================================

@MihuBot
Copy link
Owner Author

MihuBot commented Nov 10, 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:
        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:
        mov      rdx, 0xD1FFAB1E      ; const ptr
-       mov      rcx, 0xD1FFAB1E      ; const ptr
+       mov      rax, 0xD1FFAB1E      ; const ptr
        test     sil, sil
-       mov      rdx, gword ptr [rdx]
-       cmove    rdx, gword ptr [rcx]
+       mov      rsi, gword ptr [rax]
+       cmovne   rsi, gword ptr [rdx]
 						;; size=30 bbWeight=0.50 PerfScore 2.88
 G_M41339_IG03:
-       mov      rsi, 0xD1FFAB1E      ; const ptr
-       mov      rax, gword ptr [rsi]
-       mov      rsi, rdi
-       xor      rcx, 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
+       xor      rdx, 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
        nop      
-						;; size=26 bbWeight=1 PerfScore 8.00
+						;; size=15 bbWeight=1 PerfScore 3.75
 G_M41339_IG04:
        add      rsp, 16
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=9 bbWeight=1 PerfScore 2.75
 G_M41339_IG05:
        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:
        mov      rbx, rsi
        cmp      byte  ptr [rbp-0x14], 0
        je       SHORT G_M41339_IG07
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Data.Common.ADP:IsCatchableExceptionType(System.Exception):ubyte
        call     [rax]System.Data.Common.ADP:IsCatchableExceptionType(System.Exception):ubyte
        test     eax, eax
        je       SHORT G_M41339_IG07
        mov      rdi, 0xD1FFAB1E      ; System.Reflection.TargetInvocationException
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      rdi, r15
        mov      rsi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Reflection.TargetInvocationException:.ctor(System.Exception):this
        call     [rax]System.Reflection.TargetInvocationException:.ctor(System.Exception):this
        mov      rdi, r15
        call     CORINFO_HELP_THROW
        int3     
 						;; size=73 bbWeight=0 PerfScore 0.00
 G_M41339_IG07:
        call     CORINFO_HELP_RETHROW
        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:
        push     rbp
        push     rbx
        push     rax
        lea      rbp, [rsp+0x10]
 						;; size=8 bbWeight=1 PerfScore 3.50
 G_M38219_IG02:
        cmp      edi, 53
        ja       SHORT G_M38219_IG04
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M38219_IG03:
        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:
-       mov      rsi, 0xD1FFAB1E      ; const ptr
-       mov      rax, gword ptr [rsi]
-       mov      esi, edi
-       mov      rdi, gword ptr [rax+0x08]
-       call     [rax+0x18]System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+MapVersionSpecificCode:Invoke(Interop+Crypto+X509VerifyStatusCode):int:this
-						;; 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:
        nop      
 						;; size=1 bbWeight=0.50 PerfScore 0.12
 G_M38219_IG06:
        add      rsp, 8
        pop      rbx
        pop      rbp
        ret      
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG07:
        mov      eax, 0x800
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG08:
        mov      eax, 0x1000
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG09:
        mov      eax, 0x8000
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG10:
        mov      eax, 0x4000
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG11:
        mov      eax, 512
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG12:
        mov      eax, 256
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG13:
        mov      eax, 0xD1FFAB1E
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG14:
        mov      eax, 0xD1FFAB1E
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG15:
        mov      eax, 16
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG16:
        mov      eax, 0x400
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG17:
        mov      eax, 4
 						;; size=5 bbWeight=0.50 PerfScore 0.12
 G_M38219_IG18:
        add      rsp, 8
        pop      rbx
        pop      rbp
        ret      
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG19:
        mov      eax, 32
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG20:
        mov      eax, 1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
 G_M38219_IG21:
        add      rsp, 8
        pop      rbx
        pop      rbp
        ret      
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG22:
        mov      eax, 8
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG23:
        mov      eax, 64
        jmp      SHORT G_M38219_IG05
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG24:
        mov      eax, 0x10000
        jmp      G_M38219_IG05
 						;; size=10 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG25:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M38219_IG26:
        add      rsp, 8
        pop      rbx
        pop      rbp
        ret      
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M38219_IG27:
        mov      rdi, 0xD1FFAB1E      ; System.Security.Cryptography.CryptographicException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Security.Cryptography.CryptographicException:.ctor():this
        call     [rax]System.Security.Cryptography.CryptographicException:.ctor():this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
 						;; size=42 bbWeight=0 PerfScore 0.00
 G_M38219_IG28:
        mov      rdi, 0xD1FFAB1E      ; System.OutOfMemoryException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.OutOfMemoryException:.ctor():this
        call     [rax]System.OutOfMemoryException:.ctor():this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        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,T02] (  2,  4   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.__Canon>
+;  V02 tmp1         [V02,T01] (  2,  4   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Xml.Linq.XDocument>
 ;* V03 tmp2         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "dup spill" <System.Reflection.RuntimeMethodInfo>
 ;* V04 tmp3         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V05 tmp4         [V05,T05] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-;  V06 tmp5         [V06,T03] (  3,  3   )     ref  ->  rdi         class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
+;  V05 tmp4         [V05,T04] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+;  V06 tmp5         [V06,T02] (  3,  3   )     ref  ->  rdi         class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
 ;* V07 tmp6         [V07    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V08 tmp7         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
-;  V09 tmp8         [V09,T06] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V10 cse0         [V10,T04] (  3,  3   )     ref  ->  rdi         "CSE #02: aggressive"
-;  V11 rat0         [V11,T00] (  3,  6   )     ref  ->  rax         "delegate invoke call"
+;  V09 tmp8         [V09,T05] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V10 cse0         [V10,T03] (  3,  3   )     ref  ->  rdi         "CSE #02: aggressive"
 ;
 ; Lcl frame size = 8
 
 G_M47281_IG01:
        push     rbp
        push     rbx
        push     rax
        lea      rbp, [rsp+0x10]
 						;; size=8 bbWeight=1 PerfScore 3.50
 G_M47281_IG02:
-       mov      rsi, 0xD1FFAB1E      ; const ptr
-       mov      rax, gword ptr [rsi]
-       mov      rsi, rdi
-       mov      rdi, gword ptr [rax+0x08]
-       call     [rax+0x18]System.Func`2[System.__Canon,System.__Canon]:Invoke(System.__Canon):System.__Canon:this
+       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
        mov      rsi, rax
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      rdi, gword ptr [rdi]
        mov      rdi, gword ptr [rdi+0x18]
        xor      rdx, rdx
        test     rdi, rdi
        cmove    rdi, rdx
        test     rdi, rdi
        je       SHORT G_M47281_IG04
        mov      edx, 60
        xor      rcx, rcx
        xor      r8, r8
        xor      r9, r9
        mov      rax, 0xD1FFAB1E
        mov      rax, qword ptr [rax]
-						;; size=83 bbWeight=1 PerfScore 17.25
+						;; size=74 bbWeight=1 PerfScore 13.25
 G_M47281_IG03:
        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:
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Arg_GetMethNotFnd():System.String
        call     [rax]System.SR:get_Arg_GetMethNotFnd():System.String
        mov      rsi, rax
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String):this
        call     [rax]System.ArgumentException:.ctor(System.String):this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        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)
 ; ============================================================
-8 (-0.86 % of base) - System.Net.Mail.SmtpReplyReaderFactory+ReadLinesAsyncResult:Read():this
 ; Assembly listing for method System.Net.Mail.SmtpReplyReaderFactory+ReadLinesAsyncResult:Read():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; 23 single block inlinees; 14 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T03] (  7, 30   )     ref  ->  rbx         this class-hnd single-def <System.Net.Mail.SmtpReplyReaderFactory+ReadLinesAsyncResult>
 ;* V01 loc0         [V01    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V03 tmp1         [V03,T01] ( 13, 88   )     ref  ->  r15         class-hnd exact "Inlining Arg" <System.Net.BufferedReadStream>
 ;  V04 tmp2         [V04,T05] (  4, 28   )     ref  ->  r14         class-hnd "Inlining Arg" <ubyte[]>
 ;  V05 tmp3         [V05,T02] (  6, 36   )     int  ->  r13         "Inlining Arg"
 ;* V06 tmp4         [V06    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Threading.CancellationToken>
 ;* V07 tmp5         [V07    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
 ;  V08 tmp6         [V08,T04] (  6, 30   )     ref  ->  r13         class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[int]>
-;  V09 tmp7         [V09,T22] (  2,  8   )     int  ->  r13         "Inlining Arg"
+;  V09 tmp7         [V09,T21] (  2,  8   )     int  ->  r13         "Inlining Arg"
 ;* V10 tmp8         [V10    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V11 tmp9         [V11    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V12 tmp10        [V12,T26] (  3,  0   )     ref  ->  rbx         class-hnd exact "NewObj constructor temp" <System.NotSupportedException>
+;  V12 tmp10        [V12,T25] (  3,  0   )     ref  ->  rbx         class-hnd exact "NewObj constructor temp" <System.NotSupportedException>
 ;  V13 tmp11        [V13,T09] ( 10, 20   )     int  ->  r12         "Inline return value spill temp"
-;  V14 tmp12        [V14,T18] (  3, 12   )     int  ->  r12         "Inlining Arg"
-;  V15 tmp13        [V15,T24] (  3,  6   )     ref  ->  r13         class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[int]>
+;  V14 tmp12        [V14,T17] (  3, 12   )     int  ->  r12         "Inlining Arg"
+;  V15 tmp13        [V15,T23] (  3,  6   )     ref  ->  r13         class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[int]>
 ;* V16 tmp14        [V16    ] (  0,  0   )     int  ->  zero-ref    ld-addr-op "Inlining Arg"
 ;* V17 tmp15        [V17    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V18 tmp16        [V18,T11] (  4, 16   )     ref  ->  rax         class-hnd exact "NewObj constructor temp" <System.Threading.Tasks.Task`1[int]>
 ;* V19 tmp17        [V19    ] (  0,  0   )     ref  ->  zero-ref    ld-addr-op class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[int]>
 ;* V20 tmp18        [V20    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
 ;* V21 tmp19        [V21    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V22 tmp20        [V22    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V23 tmp21        [V23    ] ( 11, 22   )  struct (64) [rbp-0x68]  do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Net.BufferedReadStream+<ReadMoreAsync>d__14>
 ;* V24 tmp22        [V24    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]>
-;  V25 tmp23        [V25,T21] (  2,  8   )     ref  ->  r13         class-hnd "dup spill" <System.Threading.Tasks.Task`1[int]>
-;  V26 tmp24        [V26,T19] (  4,  8   )     ref  ->  r13        
+;  V25 tmp23        [V25,T20] (  2,  8   )     ref  ->  r13         class-hnd "dup spill" <System.Threading.Tasks.Task`1[int]>
+;  V26 tmp24        [V26,T18] (  4,  8   )     ref  ->  r13        
 ;  V27 tmp25        [V27,T00] ( 10, 92   )     ref  ->  r15         class-hnd exact "NewObj constructor temp" <System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult>
 ;* V28 tmp26        [V28    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[S] ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable>
 ;* V29 tmp27        [V29    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter>
 ;  V30 tmp28        [V30,T10] (  5, 20   )     ref  ->  r13         class-hnd exact "NewObj constructor temp" <System.Action>
 ;* V31 tmp29        [V31    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;  V32 tmp30        [V32,T12] (  4, 16   )     ref  ->  r14         class-hnd "Inlining Arg" <System.Threading.Tasks.Task>
 ;* V33 tmp31        [V33    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V34 tmp32        [V34    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V35 tmp33        [V35    ] (  0,  0   )     int  ->  zero-ref   
 ;* V36 tmp34        [V36    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable>
 ;* V37 tmp35        [V37    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter>
 ;  V38 tmp36        [V38,T13] (  3, 12   )     ref  ->  r12         class-hnd "Inlining Arg" <System.Action>
 ;* V39 tmp37        [V39    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Threading.Tasks.Task>
-;* V40 tmp38        [V40,T25] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
+;* V40 tmp38        [V40,T24] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V41 tmp39        [V41    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Threading.Tasks.TplEventSource>
 ;* V42 tmp40        [V42    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Net.BufferedReadStream>
 ;* V43 tmp41        [V43    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TaskAwaiter`1[int]>
 ;  V44 tmp42        [V44,T06] (  4, 28   )     ref  ->  r15         class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[int]>
 ;* V45 tmp43        [V45    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TaskAwaiter`1[int]>
 ;* V46 tmp44        [V46    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[int]>
 ;* V47 tmp45        [V47    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[int]>
-;* V48 tmp46        [V48,T23] (  0,  0   )     ref  ->  zero-ref    "field V06._source (fldOffset=0x0)" P-INDEP
+;* V48 tmp46        [V48,T22] (  0,  0   )     ref  ->  zero-ref    "field V06._source (fldOffset=0x0)" P-INDEP
 ;* V49 tmp47        [V49    ] (  0,  0   )     ref  ->  zero-ref    "field V07._source (fldOffset=0x0)" P-INDEP
 ;* V50 tmp48        [V50    ] (  0,  0   )     ref  ->  zero-ref    "field V20._source (fldOffset=0x0)" P-INDEP
 ;* V51 tmp49        [V51    ] (  0,  0   )     ref  ->  zero-ref    "field V24.m_task (fldOffset=0x0)" P-INDEP
 ;* V52 tmp50        [V52    ] (  0,  0   )     ref  ->  zero-ref    "field V29.m_task (fldOffset=0x0)" P-INDEP
 ;* V53 tmp51        [V53    ] (  0,  0   )     int  ->  zero-ref    "field V29.m_options (fldOffset=0x8)" P-INDEP
 ;* V54 tmp52        [V54    ] (  0,  0   )     ref  ->  zero-ref    "field V37.m_task (fldOffset=0x0)" P-INDEP
 ;* V55 tmp53        [V55    ] (  0,  0   )     int  ->  zero-ref    "field V37.m_options (fldOffset=0x8)" P-INDEP
 ;* V56 tmp54        [V56    ] (  0,  0   )     ref  ->  zero-ref    "field V43.m_task (fldOffset=0x0)" P-INDEP
 ;* V57 tmp55        [V57    ] (  0,  0   )     ref  ->  zero-ref    "field V45.m_task (fldOffset=0x0)" P-INDEP
 ;  V58 tmp56        [V58,T14] (  3, 12   )     ref  ->  rdi         "arr expr"
 ;  V59 tmp57        [V59,T15] (  3, 12   )     ref  ->  rdi         "argument with side effect"
 ;  V60 tmp58        [V60,T16] (  3, 12   )     ref  ->  rdi         "argument with side effect"
-;  V61 tmp59        [V61,T27] (  2,  0   )     ref  ->  rsi         "argument with side effect"
+;  V61 tmp59        [V61,T26] (  2,  0   )     ref  ->  rsi         "argument with side effect"
 ;  V62 cse0         [V62,T07] (  3, 24   )     ref  ->  rdi         "CSE #02: moderate"
 ;  V63 cse1         [V63,T08] (  3, 24   )     ref  ->  rdi         "CSE #01: moderate"
-;  V64 cse2         [V64,T20] (  4,  8   )     int  ->  r13         "CSE #05: moderate"
-;  V65 rat0         [V65,T17] (  3, 12   )     ref  ->  rax         "delegate invoke call"
+;  V64 cse2         [V64,T19] (  4,  8   )     int  ->  r13         "CSE #05: moderate"
 ;
 ; Lcl frame size = 72
 
 G_M32800_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 72
        lea      rbp, [rsp+0x70]
        xor      eax, eax
        mov      qword ptr [rbp-0x68], rax
        vxorps   xmm8, xmm8, xmm8
        vmovdqu  ymmword ptr [rbp-0x60], ymm8
        vmovdqa  xmmword ptr [rbp-0x40], xmm8
        mov      qword ptr [rbp-0x30], rax
        mov      rbx, rdi
 						;; size=47 bbWeight=8 PerfScore 108.67
 G_M32800_IG02:
        mov      rdi, gword ptr [rbx+0x48]
        mov      r15, gword ptr [rdi+0x08]
        mov      rdi, gword ptr [rdi+0x10]
        mov      r14, rdi
        mov      r13d, dword ptr [rdi+0x08]
        mov      edi, dword ptr [r15+0x24]
        cmp      edi, dword ptr [r15+0x20]
        jge      G_M32800_IG11
 						;; size=33 bbWeight=8 PerfScore 114.00
 G_M32800_IG03:
        mov      r12d, dword ptr [r15+0x20]
        sub      r12d, dword ptr [r15+0x24]
        cmp      r13d, r12d
        jg       SHORT G_M32800_IG04
        mov      r12d, r13d
 						;; size=16 bbWeight=2 PerfScore 13.00
 G_M32800_IG04:
        mov      rdi, gword ptr [r15+0x18]
        mov      esi, dword ptr [r15+0x24]
        mov      rdx, r14
        mov      r8d, r12d
        xor      ecx, ecx
        mov      rax, 0xD1FFAB1E      ; code for System.Buffer:BlockCopy(System.Array,int,System.Array,int,int)
        call     [rax]System.Buffer:BlockCopy(System.Array,int,System.Array,int,int)
        add      dword ptr [r15+0x24], r12d
        cmp      r12d, r13d
        je       SHORT G_M32800_IG07
        cmp      byte  ptr [r15+0x28], 0
        je       SHORT G_M32800_IG07
        sub      r13d, r12d
        xor      edi, edi
        mov      qword ptr [rbp-0x48], rdi
        mov      gword ptr [rbp-0x68], r15
        mov      dword ptr [rbp-0x4C], r12d
        mov      gword ptr [rbp-0x60], r14
        mov      dword ptr [rbp-0x54], r12d
        mov      dword ptr [rbp-0x50], r13d
 						;; size=73 bbWeight=2 PerfScore 45.50
 G_M32800_IG05:
        mov      qword ptr [rbp-0x40], rdi
        mov      dword ptr [rbp-0x58], -1
        lea      rdi, [rbp-0x68]
        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.CompilerServices.AsyncMethodBuilderCore:Start[System.Net.BufferedReadStream+<ReadMoreAsync>d__14](byref)
        call     [rax]System.Runtime.CompilerServices.AsyncMethodBuilderCore:Start[System.Net.BufferedReadStream+<ReadMoreAsync>d__14](byref)
        mov      r13, gword ptr [rbp-0x48]
        test     r13, r13
        jne      SHORT G_M32800_IG06
        lea      rdi, [rbp-0x48]
        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:InitializeTaskAsPromise():System.Threading.Tasks.Task`1[int]:this
        call     [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:InitializeTaskAsPromise():System.Threading.Tasks.Task`1[int]:this
        mov      r13, rax
 						;; size=55 bbWeight=2 PerfScore 24.00
 G_M32800_IG06:
        jmp      G_M32800_IG12
 						;; size=5 bbWeight=2 PerfScore 4.00
 G_M32800_IG07:
        lea      r13d, [r12+0x01]
        cmp      r13d, 10
        jb       SHORT G_M32800_IG08
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.Task`1[int]
        call     CORINFO_HELP_NEWSFAST
        mov      dword ptr [rax+0x34], 0xD1FFAB1E
        mov      dword ptr [rax+0x38], r12d
        mov      r13, rax
        jmp      SHORT G_M32800_IG10
 						;; size=42 bbWeight=2 PerfScore 14.50
 G_M32800_IG08:
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
        je       G_M32800_IG23
 						;; size=19 bbWeight=2 PerfScore 8.50
 G_M32800_IG09:
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.TaskCache:s_int32Tasks
        mov      rdi, gword ptr [rdi]
        cmp      r13d, dword ptr [rdi+0x08]
        jae      G_M32800_IG27
        mov      eax, r13d
        mov      r13, gword ptr [rdi+8*rax+0x10]
 						;; size=31 bbWeight=2 PerfScore 17.00
 G_M32800_IG10:
        jmp      SHORT G_M32800_IG12
 						;; size=2 bbWeight=2 PerfScore 4.00
 G_M32800_IG11:
        mov      rdi, gword ptr [r15+0x10]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.IO.Stream:get_CanRead():ubyte:this
        test     eax, eax
        je       G_M32800_IG26
        mov      rdi, gword ptr [r15+0x10]
        mov      rsi, r14
        xor      r8, r8
        mov      ecx, r13d
        xor      edx, edx
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x58]
        call     [rax+0x18]System.IO.Stream:ReadAsync(ubyte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[int]:this
        mov      r13, rax
 						;; size=50 bbWeight=2 PerfScore 41.00
 G_M32800_IG12:
        test     r13, r13
        je       G_M32800_IG25
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        lea      rdi, bword ptr [r15+0x08]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [r15+0x18]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        test     dword ptr [r13+0x34], 0xD1FFAB1E
        jne      G_M32800_IG17
 						;; size=65 bbWeight=8 PerfScore 82.00
 G_M32800_IG13:
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      rsi, gword ptr [rdi]
        lea      rdi, bword ptr [r15+0x10]
        call     CORINFO_HELP_ASSIGN_REF
        mov      r14, gword ptr [r15+0x08]
        cmp      byte  ptr [r14], r14b
        mov      rdi, 0xD1FFAB1E      ; System.Action
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
        lea      rdi, bword ptr [r13+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; code for System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult:<.ctor>b__2_0():this
        mov      qword ptr [r13+0x18], rdi
        mov      r12, r13
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
        je       G_M32800_IG24
 						;; size=95 bbWeight=2 PerfScore 35.50
 G_M32800_IG14:
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.TplEventSource:Log
        mov      rdi, gword ptr [rdi]
        cmp      byte  ptr [rdi+0x9D], 0
        jne      SHORT G_M32800_IG15
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task:s_asyncDebuggingEnabled
        cmp      byte  ptr [rdi], 0
        je       SHORT G_M32800_IG16
 						;; size=37 bbWeight=2 PerfScore 21.00
 G_M32800_IG15:
        mov      rdi, r14
        mov      rsi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.CompilerServices.TaskAwaiter:OutputWaitEtwEvents(System.Threading.Tasks.Task,System.Action):System.Action
        call     [rax]System.Runtime.CompilerServices.TaskAwaiter:OutputWaitEtwEvents(System.Threading.Tasks.Task,System.Action):System.Action
        mov      r12, rax
 						;; size=21 bbWeight=2 PerfScore 8.00
 G_M32800_IG16:
        mov      rdi, r14
        mov      rsi, r12
        xor      edx, edx
        mov      ecx, 1
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task:SetContinuationForAwait(System.Action,ubyte,ubyte):this
        call     [rax]System.Threading.Tasks.Task:SetContinuationForAwait(System.Action,ubyte,ubyte):this
        jmp      SHORT G_M32800_IG18
 						;; size=27 bbWeight=2 PerfScore 12.50
 G_M32800_IG17:
        mov      byte  ptr [r15+0x20], 1
-       mov      rsi, 0xD1FFAB1E      ; const ptr
-       mov      rax, gword ptr [rsi]
-       mov      rsi, r15
-       mov      rdi, gword ptr [rax+0x08]
-       call     [rax+0x18]System.AsyncCallback:Invoke(System.IAsyncResult):this
-						;; size=28 bbWeight=2 PerfScore 17.00
+       mov      rdi, r15
+       mov      rax, 0xD1FFAB1E      ; code for System.Net.Mail.SmtpReplyReaderFactory+ReadLinesAsyncResult:ReadCallback(System.IAsyncResult)
+       call     [rax]System.Net.Mail.SmtpReplyReaderFactory+ReadLinesAsyncResult:ReadCallback(System.IAsyncResult)
+						;; size=20 bbWeight=2 PerfScore 9.00
 G_M32800_IG18:
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult:get_CompletedSynchronously():ubyte:this
        call     [rax]System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult:get_CompletedSynchronously():ubyte:this
        test     eax, eax
        je       SHORT G_M32800_IG22
 						;; size=19 bbWeight=8 PerfScore 38.00
 G_M32800_IG19:
        mov      rdi, gword ptr [rbx+0x48]
        mov      rdi, gword ptr [rdi+0x08]
        cmp      byte  ptr [rdi], dil
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.TaskToAsyncResult:Unwrap[int](System.IAsyncResult):System.Threading.Tasks.Task`1[int]
        call     [rax]System.Threading.Tasks.TaskToAsyncResult:Unwrap[int](System.IAsyncResult):System.Threading.Tasks.Task`1[int]
        mov      r15, rax
        mov      edi, dword ptr [r15+0x34]
        and      edi, 0xD1FFAB1E
        cmp      edi, 0xD1FFAB1E
        je       SHORT G_M32800_IG21
 						;; size=47 bbWeight=4 PerfScore 57.00
 G_M32800_IG20:
        mov      rdi, r15
        xor      esi, esi
        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.CompilerServices.TaskAwaiter:HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task,int)
        call     [rax]System.Runtime.CompilerServices.TaskAwaiter:HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task,int)
 						;; size=17 bbWeight=2 PerfScore 7.50
 G_M32800_IG21:
        mov      edi, dword ptr [r15+0x38]
        mov      dword ptr [rbx+0x50], edi
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Mail.SmtpReplyReaderFactory+ReadLinesAsyncResult:ProcessRead():ubyte:this
        call     [rax]System.Net.Mail.SmtpReplyReaderFactory+ReadLinesAsyncResult:ProcessRead():ubyte:this
        test     eax, eax
        jne      G_M32800_IG02
 						;; size=30 bbWeight=4 PerfScore 31.00
 G_M32800_IG22:
        add      rsp, 72
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 G_M32800_IG23:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.TaskCache
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
        call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M32800_IG09
 						;; size=27 bbWeight=0 PerfScore 0.00
 G_M32800_IG24:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.TplEventSource
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
        call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M32800_IG14
 						;; size=27 bbWeight=0 PerfScore 0.00
 G_M32800_IG25:
        mov      edi, 0x134C6
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:Throw(System.String)
        call     [rax]System.ArgumentNullException:Throw(System.String)
        int3     
 						;; size=36 bbWeight=0 PerfScore 0.00
 G_M32800_IG26:
        mov      rdi, 0xD1FFAB1E      ; System.NotSupportedException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ReadNotSupported():System.String
        call     [rax]System.SR:get_ReadNotSupported():System.String
        mov      rsi, rax
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.NotSupportedException:.ctor(System.String):this
        call     [rax]System.NotSupportedException:.ctor(System.String):this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
 						;; size=57 bbWeight=0 PerfScore 0.00
 G_M32800_IG27:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 927, prolog size 44, PerfScore 707.92, instruction count 216, allocated bytes for code 927 (MethodHash=ac987fdf) for method System.Net.Mail.SmtpReplyReaderFactory+ReadLinesAsyncResult:Read():this (FullOpts)
+; Total bytes of code 919, prolog size 44, PerfScore 699.92, instruction count 214, allocated bytes for code 919 (MethodHash=ac987fdf) for method System.Net.Mail.SmtpReplyReaderFactory+ReadLinesAsyncResult:Read():this (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:
        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:
-       mov      rdi, 0xD1FFAB1E      ; const ptr
-       mov      rax, gword ptr [rdi]
-       mov      rdi, gword ptr [rax+0x08]
-       call     [rax+0x18]System.Func`2[System.__Canon,System.__Canon]:Invoke(System.__Canon):System.__Canon:this
+       mov      rdi, rsi
+       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
        mov      gword ptr [rbp-0x18], rax
-						;; size=24 bbWeight=1 PerfScore 8.25
+						;; size=21 bbWeight=1 PerfScore 4.75
 G_M41944_IG03:
        mov      rdi, qword ptr [rbx+0x18]
        mov      rdi, qword ptr [rdi]
        mov      rcx, rax
        test     rcx, rcx
        je       SHORT G_M41944_IG06
 						;; size=15 bbWeight=1 PerfScore 5.50
 G_M41944_IG04:
        cmp      qword ptr [rcx], rdi
        je       SHORT G_M41944_IG06
 						;; size=5 bbWeight=0.50 PerfScore 2.00
 G_M41944_IG05:
        mov      rsi, rax
        mov      rcx, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTANY
        call     [rcx]CORINFO_HELP_CHKCASTANY
        mov      rcx, rax
        mov      rax, gword ptr [rbp-0x18]
 						;; size=22 bbWeight=0.25 PerfScore 1.19
 G_M41944_IG06:
        mov      rax, rcx
 						;; size=3 bbWeight=1 PerfScore 0.25
 G_M41944_IG07:
        add      rsp, 24
        pop      rbx
        pop      rbp
        ret      
 						;; size=7 bbWeight=1 PerfScore 2.25
 G_M41944_IG08:
        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:
        mov      rsi, gword ptr [rbp-0x18]
        mov      rdi, 0xD1FFAB1E      ; System.IDisposable
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ISINSTANCEOFINTERFACE
        call     [rax]CORINFO_HELP_ISINSTANCEOFINTERFACE
        test     rax, rax
        je       SHORT G_M41944_IG10
        mov      rdi, rax
        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
        call     [r11]System.IDisposable:Dispose():this
 						;; size=47 bbWeight=0 PerfScore 0.00
 G_M41944_IG10:
        call     CORINFO_HELP_RETHROW
        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 Nov 10, 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