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

[X64] [MihaZupan] Implement IEquatable on Uri #416

Open
MihuBot opened this issue Jun 15, 2024 · 4 comments
Open

[X64] [MihaZupan] Implement IEquatable on Uri #416

MihuBot opened this issue Jun 15, 2024 · 4 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented Jun 15, 2024

Job completed in 26 minutes.

Diffs

Found 267 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 40851057
Total bytes of diff: 40851199
Total bytes of delta: 142 (0.00 % of base)
Total relative delta: -0.69
    diff is a regression.
    relative diff is an improvement.


Total byte diff includes 1177 bytes from reconciling methods
	Base had    0 unique methods,        0 unique bytes
	Diff had    1 unique methods,     1177 unique bytes

Top file regressions (bytes):
          89 : System.Private.Uri.dasm (0.10 % of base)
          38 : System.Net.Mail.dasm (0.02 % of base)
          16 : System.Private.Xml.dasm (0.00 % of base)
          10 : System.IO.Packaging.dasm (0.01 % of base)
           4 : System.Net.Primitives.dasm (0.00 % of base)
           2 : System.ServiceModel.Syndication.dasm (0.00 % of base)

Top file improvements (bytes):
         -13 : System.ComponentModel.TypeConverter.dasm (-0.00 % of base)
          -4 : System.Net.Http.dasm (-0.00 % of base)

8 total files with Code Size differences (2 improved, 6 regressed), 250 unchanged.

Top method regressions (bytes):
        1177 (Infinity of base) : System.Private.Uri.dasm - System.Uri:Equals(System.Uri):ubyte:this (FullOpts) (0 base, 1 diff methods)
          38 (1.15 % of base) : System.Net.Mail.dasm - System.Net.Mail.SmtpClient:Send(System.Net.Mail.MailMessage):this (FullOpts)
           8 (0.72 % of base) : System.IO.Packaging.dasm - System.IO.Packaging.PackageRelationshipSelector:Select(System.IO.Packaging.Package):System.Collections.Generic.List`1[System.IO.Packaging.PackageRelationship]:this (FullOpts)
           4 (1.15 % of base) : System.Net.Primitives.dasm - System.Net.CredentialCacheKey:Equals(System.Net.CredentialCacheKey):ubyte:this (FullOpts)
           4 (1.15 % of base) : System.Net.Http.dasm - System.Net.CredentialCacheKey:Equals(System.Net.CredentialCacheKey):ubyte:this (FullOpts)
           4 (2.55 % of base) : System.Private.Xml.dasm - System.Xml.Schema.ChameleonKey:Equals(System.Object):ubyte:this (FullOpts)
           4 (3.25 % of base) : System.Private.Xml.dasm - System.Xml.Schema.Datatype_anyURI:Compare(System.Object,System.Object):int:this (FullOpts)
           4 (0.48 % of base) : System.Private.Xml.dasm - System.Xml.Schema.XmlSchemaSet:RemoveSchemaFromCaches(System.Xml.Schema.XmlSchema):this (FullOpts)
           4 (2.42 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl:UriEqual(System.Uri,System.String,System.String,System.Xml.XmlResolver):ubyte (FullOpts)
           2 (0.35 % of base) : System.IO.Packaging.dasm - System.IO.Packaging.PackUriHelper:ResolvePartUri(System.Uri,System.Uri):System.Uri (FullOpts)
           2 (0.73 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey:Equals(System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey):ubyte:this (FullOpts)
           2 (0.58 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey:Equals(System.Object):ubyte:this (FullOpts)
           2 (1.56 % of base) : System.ServiceModel.Syndication.dasm - System.ServiceModel.Syndication.FeedUtils:GetBaseUriToWrite(System.Uri,System.Uri):System.Uri (FullOpts)
           2 (4.76 % of base) : System.Private.Uri.dasm - System.Uri:op_Equality(System.Uri,System.Uri):ubyte (FullOpts)
           2 (4.00 % of base) : System.Private.Uri.dasm - System.Uri:op_Inequality(System.Uri,System.Uri):ubyte (FullOpts)

Top method improvements (bytes):
       -1092 (-80.65 % of base) : System.Private.Uri.dasm - System.Uri:Equals(System.Object):ubyte:this (FullOpts)
         -13 (-1.59 % of base) : System.ComponentModel.TypeConverter.dasm - System.Timers.Timer:set_Enabled(ubyte):this (FullOpts)
         -12 (-11.65 % of base) : System.Net.Http.dasm - System.Net.Http.HttpEnvironmentProxyCredentials:GetCredential(System.Uri,System.String):System.Net.NetworkCredential:this (FullOpts)

Top method regressions (percentages):
        1177 (Infinity of base) : System.Private.Uri.dasm - System.Uri:Equals(System.Uri):ubyte:this (FullOpts) (0 base, 1 diff methods)
           2 (4.76 % of base) : System.Private.Uri.dasm - System.Uri:op_Equality(System.Uri,System.Uri):ubyte (FullOpts)
           2 (4.00 % of base) : System.Private.Uri.dasm - System.Uri:op_Inequality(System.Uri,System.Uri):ubyte (FullOpts)
           4 (3.25 % of base) : System.Private.Xml.dasm - System.Xml.Schema.Datatype_anyURI:Compare(System.Object,System.Object):int:this (FullOpts)
           4 (2.55 % of base) : System.Private.Xml.dasm - System.Xml.Schema.ChameleonKey:Equals(System.Object):ubyte:this (FullOpts)
           4 (2.42 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl:UriEqual(System.Uri,System.String,System.String,System.Xml.XmlResolver):ubyte (FullOpts)
           2 (1.56 % of base) : System.ServiceModel.Syndication.dasm - System.ServiceModel.Syndication.FeedUtils:GetBaseUriToWrite(System.Uri,System.Uri):System.Uri (FullOpts)
           4 (1.15 % of base) : System.Net.Primitives.dasm - System.Net.CredentialCacheKey:Equals(System.Net.CredentialCacheKey):ubyte:this (FullOpts)
           4 (1.15 % of base) : System.Net.Http.dasm - System.Net.CredentialCacheKey:Equals(System.Net.CredentialCacheKey):ubyte:this (FullOpts)
          38 (1.15 % of base) : System.Net.Mail.dasm - System.Net.Mail.SmtpClient:Send(System.Net.Mail.MailMessage):this (FullOpts)
           2 (0.73 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey:Equals(System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey):ubyte:this (FullOpts)
           8 (0.72 % of base) : System.IO.Packaging.dasm - System.IO.Packaging.PackageRelationshipSelector:Select(System.IO.Packaging.Package):System.Collections.Generic.List`1[System.IO.Packaging.PackageRelationship]:this (FullOpts)
           2 (0.58 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey:Equals(System.Object):ubyte:this (FullOpts)
           4 (0.48 % of base) : System.Private.Xml.dasm - System.Xml.Schema.XmlSchemaSet:RemoveSchemaFromCaches(System.Xml.Schema.XmlSchema):this (FullOpts)
           2 (0.35 % of base) : System.IO.Packaging.dasm - System.IO.Packaging.PackUriHelper:ResolvePartUri(System.Uri,System.Uri):System.Uri (FullOpts)

Top method improvements (percentages):
       -1092 (-80.65 % of base) : System.Private.Uri.dasm - System.Uri:Equals(System.Object):ubyte:this (FullOpts)
         -12 (-11.65 % of base) : System.Net.Http.dasm - System.Net.Http.HttpEnvironmentProxyCredentials:GetCredential(System.Uri,System.String):System.Net.NetworkCredential:this (FullOpts)
         -13 (-1.59 % of base) : System.ComponentModel.TypeConverter.dasm - System.Timers.Timer:set_Enabled(ubyte):this (FullOpts)

18 total methods with Code Size differences (3 improved, 15 regressed), 252029 unchanged.

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

Artifacts:

@MihaZupan
Copy link
Collaborator

MihaZupan commented Jun 15, 2024

Standard_D8ads_v5

@MihuBot
Copy link
Owner Author

MihuBot commented Jun 15, 2024

Top method regressions

8 (0.72 % of base) - System.IO.Packaging.PackageRelationshipSelector:Select(System.IO.Packaging.Package):System.Collections.Generic.List`1[System.IO.Packaging.PackageRelationship]:this
 ; Assembly listing for method System.IO.Packaging.PackageRelationshipSelector:Select(System.IO.Packaging.Package):System.Collections.Generic.List`1[System.IO.Packaging.PackageRelationship]:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 18 single block inlinees; 5 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T04] ( 15,  9   )     ref  ->  rbx         this class-hnd single-def <System.IO.Packaging.PackageRelationshipSelector>
 ;  V01 arg1         [V01,T07] ( 12,  7.50)     ref  ->  r15         class-hnd single-def <System.IO.Packaging.Package>
 ;  V02 loc0         [V02,T00] ( 26, 48   )     ref  ->  r14         class-hnd exact single-def <System.Collections.Generic.List`1[System.IO.Packaging.PackageRelationship]>
-;  V03 loc1         [V03,T15] (  3,  2.50)     int  ->  r13         single-def
-;  V04 loc2         [V04,T16] (  4,  2   )     ref  ->  r15         class-hnd single-def <System.IO.Packaging.PackagePart>
+;  V03 loc1         [V03,T13] (  3,  2.50)     int  ->  r13         single-def
+;  V04 loc2         [V04,T14] (  4,  2   )     ref  ->  r15         class-hnd single-def <System.IO.Packaging.PackagePart>
 ;  V05 loc3         [V05,T01] ( 14, 19   )     ref  ->  [rbp-0x28]  do-not-enreg[M] class-hnd EH-live <System.Collections.Generic.IEnumerator`1[System.IO.Packaging.PackageRelationship]>
 ;  V06 loc4         [V06,T08] (  3,  8   )     ref  ->  rax         class-hnd <System.IO.Packaging.PackageRelationship>
 ;  V07 loc5         [V07,T09] (  3,  8   )     ref  ->  rax         class-hnd <System.IO.Packaging.PackageRelationship>
 ;# V08 OutArgs      [V08    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V09 tmp1         [V09,T10] (  3,  6   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.IO.Packaging.PackageRelationship]>
 ;* V10 tmp2         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Uri>
 ;* V11 tmp3         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Uri>
 ;* V12 tmp4         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.IO.Packaging.PackagePart>
-;  V13 tmp5         [V13,T25] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
-;  V14 tmp6         [V14,T19] (  2,  2   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.String>
-;  V15 tmp7         [V15,T22] (  3,  1.50)     ref  ->  rdi         class-hnd single-def "Inline stloc first use temp" <System.IO.Packaging.PackageRelationship[]>
-;  V16 tmp8         [V16,T17] (  4,  2   )     int  ->  r13         single-def "Inline stloc first use temp"
+;  V13 tmp5         [V13,T23] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
+;  V14 tmp6         [V14,T17] (  2,  2   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.String>
+;  V15 tmp7         [V15,T20] (  3,  1.50)     ref  ->  rdi         class-hnd single-def "Inline stloc first use temp" <System.IO.Packaging.PackageRelationship[]>
+;  V16 tmp8         [V16,T15] (  4,  2   )     int  ->  r13         single-def "Inline stloc first use temp"
 ;  V17 tmp9         [V17,T11] (  3,  3   )     ref  ->  rax         class-hnd single-def "Inlining Arg" <System.IO.Packaging.PackageRelationship>
-;  V18 tmp10        [V18,T20] (  2,  2   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.String>
-;  V19 tmp11        [V19,T23] (  3,  1.50)     ref  ->  rdi         class-hnd single-def "Inline stloc first use temp" <System.IO.Packaging.PackageRelationship[]>
-;  V20 tmp12        [V20,T18] (  4,  2   )     int  ->  rbx         single-def "Inline stloc first use temp"
+;  V18 tmp10        [V18,T18] (  2,  2   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.String>
+;  V19 tmp11        [V19,T21] (  3,  1.50)     ref  ->  rdi         class-hnd single-def "Inline stloc first use temp" <System.IO.Packaging.PackageRelationship[]>
+;  V20 tmp12        [V20,T16] (  4,  2   )     int  ->  rbx         single-def "Inline stloc first use temp"
 ;  V21 tmp13        [V21,T12] (  3,  3   )     ref  ->  rax         class-hnd single-def "Inlining Arg" <System.IO.Packaging.PackageRelationship>
 ;  V22 tmp14        [V22,T05] (  3, 10   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <System.IO.Packaging.PackageRelationship[]>
 ;  V23 tmp15        [V23,T02] (  4, 12   )     int  ->  rbx         "Inline stloc first use temp"
 ;  V24 tmp16        [V24,T06] (  3, 10   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <System.IO.Packaging.PackageRelationship[]>
 ;  V25 tmp17        [V25,T03] (  4, 12   )     int  ->  rbx         "Inline stloc first use temp"
-;  V26 tmp18        [V26,T13] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
-;  V27 tmp19        [V27,T14] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
-;  V28 tmp20        [V28,T21] (  2,  2   )     ref  ->  rdi         single-def "argument with side effect"
-;  V29 tmp21        [V29,T26] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V30 PSPSym       [V30,T24] (  1,  1   )    long  ->  [rbp-0x30]  do-not-enreg[V] "PSPSym"
+;  V26 tmp18        [V26,T19] (  2,  2   )     ref  ->  rdi         single-def "argument with side effect"
+;  V27 tmp19        [V27,T24] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V28 PSPSym       [V28,T22] (  1,  1   )    long  ->  [rbp-0x30]  do-not-enreg[V] "PSPSym"
 ;
 ; Lcl frame size = 16
 
 G_M14552_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        sub      rsp, 16
        lea      rbp, [rsp+0x30]
        mov      qword ptr [rbp-0x30], rsp
        mov      rbx, rdi
        mov      r15, rsi
 						;; size=27 bbWeight=1 PerfScore 7.25
 G_M14552_IG02:
        test     r15, r15
        je       G_M14552_IG25
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.List`1[System.IO.Packaging.PackageRelationship]
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
        je       G_M14552_IG24
 						;; size=46 bbWeight=1 PerfScore 7.00
 G_M14552_IG03:
        mov      rdi, 0xD1FFAB1E      ; data for System.Collections.Generic.List`1[System.IO.Packaging.PackageRelationship]:s_emptyArray
        mov      rsi, gword ptr [rdi]
        lea      rdi, bword ptr [r14+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      r13d, dword ptr [rbx+0x18]
        test     r13d, r13d
        jne      G_M14552_IG08
 						;; size=35 bbWeight=1 PerfScore 7.00
 G_M14552_IG04:
        mov      rdi, gword ptr [rbx+0x08]
        mov      rsi, 0xD1FFAB1E      ; const ptr
        mov      rsi, gword ptr [rsi]
-       mov      rax, qword ptr [rdi]
-       mov      rax, qword ptr [rax+0x40]
-       call     [rax+0x10]System.Object:Equals(System.Object):ubyte:this
+       mov      rax, 0xD1FFAB1E      ; code for System.Uri:Equals(System.Uri):ubyte:this
+       cmp      dword ptr [rdi], edi
+       call     [rax]System.Uri:Equals(System.Uri):ubyte:this
        test     eax, eax
        jne      G_M14552_IG06
        mov      rsi, gword ptr [rbx+0x08]
        mov      rdi, r15
        mov      rax, qword ptr [r15]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x20]System.IO.Packaging.Package:PartExists(System.Uri):ubyte:this
        test     eax, eax
        je       G_M14552_IG15
        mov      rsi, gword ptr [rbx+0x08]
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.IO.Packaging.Package:GetPart(System.Uri):System.IO.Packaging.PackagePart:this
        call     [rax]System.IO.Packaging.Package:GetPart(System.Uri):System.IO.Packaging.PackagePart:this
        mov      r15, rax
        mov      rsi, gword ptr [rbx+0x10]
        cmp      byte  ptr [r15], r15b
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.IO.Packaging.PackagePart:GetRelationshipHelper(System.String):System.IO.Packaging.PackageRelationship:this
        call     [rax]System.IO.Packaging.PackagePart:GetRelationshipHelper(System.String):System.IO.Packaging.PackageRelationship:this
        test     rax, rax
        je       G_M14552_IG15
        mov      rsi, gword ptr [rbx+0x10]
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.IO.Packaging.PackagePart:GetRelationship(System.String):System.IO.Packaging.PackageRelationship:this
        call     [rax]System.IO.Packaging.PackagePart:GetRelationship(System.String):System.IO.Packaging.PackageRelationship:this
        inc      dword ptr [r14+0x14]
        mov      rdi, gword ptr [r14+0x08]
        mov      ebx, dword ptr [r14+0x10]
        cmp      dword ptr [rdi+0x08], ebx
        ja       SHORT G_M14552_IG05
        mov      rdi, r14
        mov      rsi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
        call     [rax]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
        jmp      G_M14552_IG15
-						;; size=172 bbWeight=0.50 PerfScore 30.38
+						;; size=176 bbWeight=0.50 PerfScore 30.00
 G_M14552_IG05:
        lea      esi, [rbx+0x01]
        mov      dword ptr [r14+0x10], esi
        movsxd   rsi, ebx
        mov      rdx, rax
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
        jmp      G_M14552_IG15
 						;; size=30 bbWeight=0.50 PerfScore 3.62
 G_M14552_IG06:
        mov      rsi, gword ptr [rbx+0x10]
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.IO.Packaging.Package:GetRelationshipHelper(System.String):System.IO.Packaging.PackageRelationship:this
        call     [rax]System.IO.Packaging.Package:GetRelationshipHelper(System.String):System.IO.Packaging.PackageRelationship:this
        test     rax, rax
        je       G_M14552_IG15
        mov      rsi, gword ptr [rbx+0x10]
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.IO.Packaging.Package:GetRelationship(System.String):System.IO.Packaging.PackageRelationship:this
        call     [rax]System.IO.Packaging.Package:GetRelationship(System.String):System.IO.Packaging.PackageRelationship:this
        inc      dword ptr [r14+0x14]
        mov      rdi, gword ptr [r14+0x08]
        mov      r13d, dword ptr [r14+0x10]
        cmp      dword ptr [rdi+0x08], r13d
        ja       SHORT G_M14552_IG07
        mov      rdi, r14
        mov      rsi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
        call     [rax]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
        jmp      G_M14552_IG15
 						;; size=88 bbWeight=0.50 PerfScore 14.50
 G_M14552_IG07:
        lea      esi, [r13+0x01]
        mov      dword ptr [r14+0x10], esi
        movsxd   rsi, r13d
        mov      rdx, rax
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
        jmp      G_M14552_IG15
 						;; size=31 bbWeight=0.50 PerfScore 3.62
 G_M14552_IG08:
        cmp      r13d, 1
        jne      G_M14552_IG15
        mov      rdi, gword ptr [rbx+0x08]
        mov      rsi, 0xD1FFAB1E      ; const ptr
        mov      rsi, gword ptr [rsi]
-       mov      rax, qword ptr [rdi]
-       mov      rax, qword ptr [rax+0x40]
-       call     [rax+0x10]System.Object:Equals(System.Object):ubyte:this
+       mov      rax, 0xD1FFAB1E      ; code for System.Uri:Equals(System.Uri):ubyte:this
+       cmp      dword ptr [rdi], edi
+       call     [rax]System.Uri:Equals(System.Uri):ubyte:this
        test     eax, eax
        jne      G_M14552_IG23
        mov      rsi, gword ptr [rbx+0x08]
        mov      rdi, r15
        mov      rax, qword ptr [r15]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x20]System.IO.Packaging.Package:PartExists(System.Uri):ubyte:this
        test     eax, eax
        je       G_M14552_IG15
        mov      rsi, gword ptr [rbx+0x08]
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.IO.Packaging.Package:GetPart(System.Uri):System.IO.Packaging.PackagePart:this
        call     [rax]System.IO.Packaging.Package:GetPart(System.Uri):System.IO.Packaging.PackagePart:this
        mov      rdi, rax
        mov      rsi, gword ptr [rbx+0x10]
        mov      rax, 0xD1FFAB1E      ; code for System.IO.Packaging.PackagePart:GetRelationshipsByType(System.String):System.IO.Packaging.PackageRelationshipCollection:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.IO.Packaging.PackagePart:GetRelationshipsByType(System.String):System.IO.Packaging.PackageRelationshipCollection:this
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.IO.Packaging.PackageRelationshipCollection:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.IO.Packaging.PackageRelationship]:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.IO.Packaging.PackageRelationshipCollection:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.IO.Packaging.PackageRelationship]:this
        mov      gword ptr [rbp-0x28], rax
        jmp      G_M14552_IG17
-						;; size=136 bbWeight=0.50 PerfScore 23.88
+						;; size=140 bbWeight=0.50 PerfScore 23.50
 G_M14552_IG09:
        mov      rdi, gword ptr [rbp-0x28]
        mov      r11, 0xD1FFAB1E      ; function address
        call     [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
        test     eax, eax
        je       SHORT G_M14552_IG14
 						;; size=21 bbWeight=0.50 PerfScore 2.75
 G_M14552_IG10:
        mov      rdi, gword ptr [rbp-0x28]
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IEnumerator`1[System.__Canon]:get_Current():System.__Canon:this
        call     [r11]System.Collections.Generic.IEnumerator`1[System.__Canon]:get_Current():System.__Canon:this
        inc      dword ptr [r14+0x14]
        mov      rdi, gword ptr [r14+0x08]
        mov      ebx, dword ptr [r14+0x10]
        cmp      dword ptr [rdi+0x08], ebx
        ja       SHORT G_M14552_IG12
 						;; size=34 bbWeight=4 PerfScore 61.00
 G_M14552_IG11:
        mov      rdi, r14
        mov      rsi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
        call     [rax]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
        jmp      SHORT G_M14552_IG13
 						;; size=20 bbWeight=2 PerfScore 11.50
 G_M14552_IG12:
        lea      esi, [rbx+0x01]
        mov      dword ptr [r14+0x10], esi
        movsxd   rsi, ebx
        mov      rdx, rax
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
 						;; size=25 bbWeight=2 PerfScore 10.50
 G_M14552_IG13:
        mov      rdi, gword ptr [rbp-0x28]
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
        call     [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
        test     eax, eax
        jne      SHORT G_M14552_IG10
 						;; size=21 bbWeight=4 PerfScore 22.00
 G_M14552_IG14:
        mov      rdi, gword ptr [rbp-0x28]
        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
        call     [r11]System.IDisposable:Dispose():this
 						;; size=17 bbWeight=0.50 PerfScore 2.12
 G_M14552_IG15:
        mov      rax, r14
 						;; size=3 bbWeight=1 PerfScore 0.25
 G_M14552_IG16:
        add      rsp, 16
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=13 bbWeight=1 PerfScore 3.75
 G_M14552_IG17:
        mov      rdi, gword ptr [rbp-0x28]
        mov      r11, 0xD1FFAB1E      ; function address
        call     [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
        test     eax, eax
        je       SHORT G_M14552_IG22
 						;; size=21 bbWeight=0.50 PerfScore 2.75
 G_M14552_IG18:
        mov      rdi, gword ptr [rbp-0x28]
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IEnumerator`1[System.__Canon]:get_Current():System.__Canon:this
        call     [r11]System.Collections.Generic.IEnumerator`1[System.__Canon]:get_Current():System.__Canon:this
        inc      dword ptr [r14+0x14]
        mov      rdi, gword ptr [r14+0x08]
        mov      ebx, dword ptr [r14+0x10]
        cmp      dword ptr [rdi+0x08], ebx
        ja       SHORT G_M14552_IG20
 						;; size=34 bbWeight=4 PerfScore 61.00
 G_M14552_IG19:
        mov      rdi, r14
        mov      rsi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
        call     [rax]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
        jmp      SHORT G_M14552_IG21
 						;; size=20 bbWeight=2 PerfScore 11.50
 G_M14552_IG20:
        lea      esi, [rbx+0x01]
        mov      dword ptr [r14+0x10], esi
        movsxd   rsi, ebx
        mov      rdx, rax
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
 						;; size=25 bbWeight=2 PerfScore 10.50
 G_M14552_IG21:
        mov      rdi, gword ptr [rbp-0x28]
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
        call     [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
        test     eax, eax
        jne      SHORT G_M14552_IG18
 						;; size=21 bbWeight=4 PerfScore 22.00
 G_M14552_IG22:
        mov      rdi, gword ptr [rbp-0x28]
        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
        call     [r11]System.IDisposable:Dispose():this
        jmp      G_M14552_IG15
 						;; size=22 bbWeight=0.50 PerfScore 3.12
 G_M14552_IG23:
        mov      rsi, gword ptr [rbx+0x10]
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.IO.Packaging.Package:GetRelationshipsByType(System.String):System.IO.Packaging.PackageRelationshipCollection:this
        call     [rax]System.IO.Packaging.Package:GetRelationshipsByType(System.String):System.IO.Packaging.PackageRelationshipCollection:this
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.IO.Packaging.PackageRelationshipCollection:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.IO.Packaging.PackageRelationship]:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.IO.Packaging.PackageRelationshipCollection:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.IO.Packaging.PackageRelationship]:this
        mov      gword ptr [rbp-0x28], rax
        jmp      G_M14552_IG09
 						;; size=45 bbWeight=0.50 PerfScore 7.50
 G_M14552_IG24:
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.List`1[System.IO.Packaging.PackageRelationship]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M14552_IG03
 						;; size=20 bbWeight=0 PerfScore 0.00
 G_M14552_IG25:
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentNullException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      edi, 0x1867
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rsi, rax
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:.ctor(System.String):this
        call     [rax]System.ArgumentNullException:.ctor(System.String):this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
 						;; size=65 bbWeight=0 PerfScore 0.00
 G_M14552_IG26:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        sub      rsp, 16
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
        lea      rbp, [rbp+0x30]
 						;; size=23 bbWeight=0 PerfScore 0.00
 G_M14552_IG27:
        cmp      gword ptr [rbp-0x28], 0
        je       SHORT G_M14552_IG28
        mov      rdi, gword ptr [rbp-0x28]
        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
        call     [r11]System.IDisposable:Dispose():this
 						;; size=24 bbWeight=0 PerfScore 0.00
 G_M14552_IG28:
        nop      
 						;; size=1 bbWeight=0 PerfScore 0.00
 G_M14552_IG29:
        add      rsp, 16
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=13 bbWeight=0 PerfScore 0.00
 G_M14552_IG30:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        sub      rsp, 16
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
        lea      rbp, [rbp+0x30]
 						;; size=23 bbWeight=0 PerfScore 0.00
 G_M14552_IG31:
        cmp      gword ptr [rbp-0x28], 0
        je       SHORT G_M14552_IG32
        mov      rdi, gword ptr [rbp-0x28]
        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
        call     [r11]System.IDisposable:Dispose():this
 						;; size=24 bbWeight=0 PerfScore 0.00
 G_M14552_IG32:
        nop      
 						;; size=1 bbWeight=0 PerfScore 0.00
 G_M14552_IG33:
        add      rsp, 16
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1114, prolog size 27, PerfScore 329.50, instruction count 275, allocated bytes for code 1114 (MethodHash=14f6c727) for method System.IO.Packaging.PackageRelationshipSelector:Select(System.IO.Packaging.Package):System.Collections.Generic.List`1[System.IO.Packaging.PackageRelationship]:this (FullOpts)
+; Total bytes of code 1122, prolog size 27, PerfScore 328.75, instruction count 275, allocated bytes for code 1122 (MethodHash=14f6c727) for method System.IO.Packaging.PackageRelationshipSelector:Select(System.IO.Packaging.Package):System.Collections.Generic.List`1[System.IO.Packaging.PackageRelationship]:this (FullOpts)
4 (1.15 % of base) - System.Net.CredentialCacheKey:Equals(System.Net.CredentialCacheKey):ubyte:this
 ; Assembly listing for method System.Net.CredentialCacheKey:Equals(System.Net.CredentialCacheKey):ubyte:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T01] (  6,  4   )     ref  ->  r15         this class-hnd single-def <System.Net.CredentialCacheKey>
 ;  V01 arg1         [V01,T00] (  6,  4.50)     ref  ->  rbx         class-hnd single-def <System.Net.CredentialCacheKey>
-;  V02 loc0         [V02,T08] (  3,  1.50)   ubyte  ->  r14        
+;  V02 loc0         [V02,T07] (  3,  1.50)   ubyte  ->  r14        
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T09] (  3,  1.50)     int  ->  r14        
+;  V04 tmp1         [V04,T08] (  3,  1.50)     int  ->  r14        
 ;  V05 tmp2         [V05,T02] (  5,  5   )     ref  ->  r12         class-hnd exact single-def "dup spill" <System.Object[]>
 ;  V06 tmp3         [V06,T03] (  3,  3   )     ref  ->  rax         class-hnd exact single-def "Single-def Box Helper" <System.Boolean>
 ;* V07 tmp4         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Net.NetEventSource>
 ;* V08 tmp5         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.Net.NetEventSource>
 ;  V09 tmp6         [V09,T04] (  3,  3   )     ref  ->  rbx         class-hnd single-def "Inlining Arg" <System.FormattableString>
-;  V10 tmp7         [V10,T10] (  2,  1   )     ref  ->  r13         single-def
-;  V11 tmp8         [V11,T11] (  2,  1   )     ref  ->  r15         single-def
+;  V10 tmp7         [V10,T09] (  2,  1   )     ref  ->  r13         single-def
+;  V11 tmp8         [V11,T10] (  2,  1   )     ref  ->  r15         single-def
 ;* V12 tmp9         [V12    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V13 tmp10        [V13    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V14 tmp11        [V14    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V15 tmp12        [V15    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V16 tmp13        [V16,T06] (  3,  1.50)     ref  ->  rax        
-;  V17 tmp14        [V17,T12] (  2,  1   )     ref  ->  rdi         single-def
-;* V18 tmp15        [V18,T15] (  0,  0   )     int  ->  zero-ref   
-;  V19 tmp16        [V19,T13] (  2,  1   )     ref  ->  rdx         single-def
-;* V20 tmp17        [V20,T14] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V21 tmp18        [V21,T05] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
-;  V22 cse0         [V22,T07] (  3,  1.50)     ref  ->  r13         "CSE #01: moderate"
+;  V16 tmp13        [V16,T05] (  3,  1.50)     ref  ->  rax        
+;  V17 tmp14        [V17,T11] (  2,  1   )     ref  ->  rdi         single-def
+;* V18 tmp15        [V18,T14] (  0,  0   )     int  ->  zero-ref   
+;  V19 tmp16        [V19,T12] (  2,  1   )     ref  ->  rdx         single-def
+;* V20 tmp17        [V20,T13] (  0,  0   )     ref  ->  zero-ref    single-def
+;  V21 cse0         [V21,T06] (  3,  1.50)     ref  ->  r13         "CSE #01: moderate"
 ;
 ; Lcl frame size = 8
 
 G_M30951_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        push     rax
        lea      rbp, [rsp+0x30]
        mov      r15, rdi
        mov      rbx, rsi
 						;; size=22 bbWeight=1 PerfScore 8.00
 G_M30951_IG02:
        test     rbx, rbx
        je       G_M30951_IG10
 						;; size=9 bbWeight=1 PerfScore 1.25
 G_M30951_IG03:
        mov      rdi, gword ptr [r15+0x10]
        mov      rsi, gword ptr [rbx+0x10]
        mov      edx, 5
        mov      rax, 0xD1FFAB1E      ; code for System.String:Equals(System.String,System.String,int):ubyte
        call     [rax]System.String:Equals(System.String,System.String,int):ubyte
        test     eax, eax
        jne      SHORT G_M30951_IG04
        xor      r14d, r14d
        jmp      SHORT G_M30951_IG05
 						;; size=34 bbWeight=0.50 PerfScore 5.50
 G_M30951_IG04:
        mov      rdi, gword ptr [r15+0x08]
        mov      rsi, gword ptr [rbx+0x08]
-       mov      rax, qword ptr [rdi]
-       mov      rax, qword ptr [rax+0x40]
-       call     [rax+0x10]System.Object:Equals(System.Object):ubyte:this
+       mov      rax, 0xD1FFAB1E      ; code for System.Uri:Equals(System.Uri):ubyte:this
+       cmp      dword ptr [rdi], edi
+       call     [rax]System.Uri:Equals(System.Uri):ubyte:this
        mov      r14d, eax
-						;; size=21 bbWeight=0.50 PerfScore 5.62
+						;; size=25 bbWeight=0.50 PerfScore 5.25
 G_M30951_IG05:
        movzx    r14, r14b
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      r13, gword ptr [rdi]
        cmp      byte  ptr [r13+0x9D], 0
        je       G_M30951_IG08
        mov      rdi, 0xD1FFAB1E      ; System.Object[]
        mov      esi, 3
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      r12, rax
        lea      rdi, bword ptr [r12+0x10]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [r12+0x18]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; System.Boolean
        call     CORINFO_HELP_NEWSFAST
        mov      byte  ptr [rax+0x08], r14b
        lea      rdi, bword ptr [r12+0x20]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, r12
        mov      rdi, 0xD1FFAB1E      ; 'Equals({0},{1}) returns {2}'
        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.CompilerServices.FormattableStringFactory:Create(System.String,System.Object[]):System.FormattableString
        call     [rax]System.Runtime.CompilerServices.FormattableStringFactory:Create(System.String,System.Object[]):System.FormattableString
        mov      rbx, rax
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Net.NetEventSource:IdOf(System.Object):System.String
        call     [rax]System.Net.NetEventSource:IdOf(System.Object):System.String
        mov      r15, rax
        test     rbx, rbx
        je       SHORT G_M30951_IG06
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Net.NetEventSource:Format(System.FormattableString):System.String
        call     [rax]System.Net.NetEventSource:Format(System.FormattableString):System.String
        jmp      SHORT G_M30951_IG07
 						;; size=180 bbWeight=0.50 PerfScore 15.12
 G_M30951_IG06:
        mov      rax, 0xD1FFAB1E      ; ''
 						;; size=10 bbWeight=0.50 PerfScore 0.12
 G_M30951_IG07:
        mov      rdi, r13
        mov      rdx, r15
        mov      esi, 1
        mov      rcx, 0xD1FFAB1E      ; 'Equals'
        mov      r8, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,System.String,System.String,System.String):this
        call     [rax]System.Diagnostics.Tracing.EventSource:WriteEvent(int,System.String,System.String,System.String):this
 						;; size=36 bbWeight=0.50 PerfScore 2.25
 G_M30951_IG08:
        mov      eax, r14d
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M30951_IG09:
        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_M30951_IG10:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M30951_IG11:
        add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 
-; Total bytes of code 347, prolog size 16, PerfScore 42.38, instruction count 89, allocated bytes for code 347 (MethodHash=bef78718) for method System.Net.CredentialCacheKey:Equals(System.Net.CredentialCacheKey):ubyte:this (FullOpts)
+; Total bytes of code 351, prolog size 16, PerfScore 42.00, instruction count 89, allocated bytes for code 351 (MethodHash=bef78718) for method System.Net.CredentialCacheKey:Equals(System.Net.CredentialCacheKey):ubyte:this (FullOpts)
4 (1.15 % of base) - System.Net.CredentialCacheKey:Equals(System.Net.CredentialCacheKey):ubyte:this
 ; Assembly listing for method System.Net.CredentialCacheKey:Equals(System.Net.CredentialCacheKey):ubyte:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T01] (  6,  4   )     ref  ->  r15         this class-hnd single-def <System.Net.CredentialCacheKey>
 ;  V01 arg1         [V01,T00] (  6,  4.50)     ref  ->  rbx         class-hnd single-def <System.Net.CredentialCacheKey>
-;  V02 loc0         [V02,T08] (  3,  1.50)   ubyte  ->  r14        
+;  V02 loc0         [V02,T07] (  3,  1.50)   ubyte  ->  r14        
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T09] (  3,  1.50)     int  ->  r14        
+;  V04 tmp1         [V04,T08] (  3,  1.50)     int  ->  r14        
 ;  V05 tmp2         [V05,T02] (  5,  5   )     ref  ->  r12         class-hnd exact single-def "dup spill" <System.Object[]>
 ;  V06 tmp3         [V06,T03] (  3,  3   )     ref  ->  rax         class-hnd exact single-def "Single-def Box Helper" <System.Boolean>
 ;* V07 tmp4         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Net.NetEventSource>
 ;* V08 tmp5         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.Net.NetEventSource>
 ;  V09 tmp6         [V09,T04] (  3,  3   )     ref  ->  rbx         class-hnd single-def "Inlining Arg" <System.FormattableString>
-;  V10 tmp7         [V10,T10] (  2,  1   )     ref  ->  r13         single-def
-;  V11 tmp8         [V11,T11] (  2,  1   )     ref  ->  r15         single-def
+;  V10 tmp7         [V10,T09] (  2,  1   )     ref  ->  r13         single-def
+;  V11 tmp8         [V11,T10] (  2,  1   )     ref  ->  r15         single-def
 ;* V12 tmp9         [V12    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V13 tmp10        [V13    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V14 tmp11        [V14    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V15 tmp12        [V15    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V16 tmp13        [V16,T06] (  3,  1.50)     ref  ->  rax        
-;  V17 tmp14        [V17,T12] (  2,  1   )     ref  ->  rdi         single-def
-;* V18 tmp15        [V18,T15] (  0,  0   )     int  ->  zero-ref   
-;  V19 tmp16        [V19,T13] (  2,  1   )     ref  ->  rdx         single-def
-;* V20 tmp17        [V20,T14] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V21 tmp18        [V21,T05] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
-;  V22 cse0         [V22,T07] (  3,  1.50)     ref  ->  r13         "CSE #01: moderate"
+;  V16 tmp13        [V16,T05] (  3,  1.50)     ref  ->  rax        
+;  V17 tmp14        [V17,T11] (  2,  1   )     ref  ->  rdi         single-def
+;* V18 tmp15        [V18,T14] (  0,  0   )     int  ->  zero-ref   
+;  V19 tmp16        [V19,T12] (  2,  1   )     ref  ->  rdx         single-def
+;* V20 tmp17        [V20,T13] (  0,  0   )     ref  ->  zero-ref    single-def
+;  V21 cse0         [V21,T06] (  3,  1.50)     ref  ->  r13         "CSE #01: moderate"
 ;
 ; Lcl frame size = 8
 
 G_M30951_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        push     rax
        lea      rbp, [rsp+0x30]
        mov      r15, rdi
        mov      rbx, rsi
 						;; size=22 bbWeight=1 PerfScore 8.00
 G_M30951_IG02:
        test     rbx, rbx
        je       G_M30951_IG10
 						;; size=9 bbWeight=1 PerfScore 1.25
 G_M30951_IG03:
        mov      rdi, gword ptr [r15+0x10]
        mov      rsi, gword ptr [rbx+0x10]
        mov      edx, 5
        mov      rax, 0xD1FFAB1E      ; code for System.String:Equals(System.String,System.String,int):ubyte
        call     [rax]System.String:Equals(System.String,System.String,int):ubyte
        test     eax, eax
        jne      SHORT G_M30951_IG04
        xor      r14d, r14d
        jmp      SHORT G_M30951_IG05
 						;; size=34 bbWeight=0.50 PerfScore 5.50
 G_M30951_IG04:
        mov      rdi, gword ptr [r15+0x08]
        mov      rsi, gword ptr [rbx+0x08]
-       mov      rax, qword ptr [rdi]
-       mov      rax, qword ptr [rax+0x40]
-       call     [rax+0x10]System.Object:Equals(System.Object):ubyte:this
+       mov      rax, 0xD1FFAB1E      ; code for System.Uri:Equals(System.Uri):ubyte:this
+       cmp      dword ptr [rdi], edi
+       call     [rax]System.Uri:Equals(System.Uri):ubyte:this
        mov      r14d, eax
-						;; size=21 bbWeight=0.50 PerfScore 5.62
+						;; size=25 bbWeight=0.50 PerfScore 5.25
 G_M30951_IG05:
        movzx    r14, r14b
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      r13, gword ptr [rdi]
        cmp      byte  ptr [r13+0x9D], 0
        je       G_M30951_IG08
        mov      rdi, 0xD1FFAB1E      ; System.Object[]
        mov      esi, 3
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      r12, rax
        lea      rdi, bword ptr [r12+0x10]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [r12+0x18]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; System.Boolean
        call     CORINFO_HELP_NEWSFAST
        mov      byte  ptr [rax+0x08], r14b
        lea      rdi, bword ptr [r12+0x20]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, r12
        mov      rdi, 0xD1FFAB1E      ; 'Equals({0},{1}) returns {2}'
        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.CompilerServices.FormattableStringFactory:Create(System.String,System.Object[]):System.FormattableString
        call     [rax]System.Runtime.CompilerServices.FormattableStringFactory:Create(System.String,System.Object[]):System.FormattableString
        mov      rbx, rax
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Net.NetEventSource:IdOf(System.Object):System.String
        call     [rax]System.Net.NetEventSource:IdOf(System.Object):System.String
        mov      r15, rax
        test     rbx, rbx
        je       SHORT G_M30951_IG06
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Net.NetEventSource:Format(System.FormattableString):System.String
        call     [rax]System.Net.NetEventSource:Format(System.FormattableString):System.String
        jmp      SHORT G_M30951_IG07
 						;; size=180 bbWeight=0.50 PerfScore 15.12
 G_M30951_IG06:
        mov      rax, 0xD1FFAB1E      ; ''
 						;; size=10 bbWeight=0.50 PerfScore 0.12
 G_M30951_IG07:
        mov      rdi, r13
        mov      rdx, r15
        mov      esi, 1
        mov      rcx, 0xD1FFAB1E      ; 'Equals'
        mov      r8, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,System.String,System.String,System.String):this
        call     [rax]System.Diagnostics.Tracing.EventSource:WriteEvent(int,System.String,System.String,System.String):this
 						;; size=36 bbWeight=0.50 PerfScore 2.25
 G_M30951_IG08:
        mov      eax, r14d
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M30951_IG09:
        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_M30951_IG10:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M30951_IG11:
        add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 
-; Total bytes of code 347, prolog size 16, PerfScore 42.38, instruction count 89, allocated bytes for code 347 (MethodHash=bef78718) for method System.Net.CredentialCacheKey:Equals(System.Net.CredentialCacheKey):ubyte:this (FullOpts)
+; Total bytes of code 351, prolog size 16, PerfScore 42.00, instruction count 89, allocated bytes for code 351 (MethodHash=bef78718) for method System.Net.CredentialCacheKey:Equals(System.Net.CredentialCacheKey):ubyte:this (FullOpts)
4 (2.55 % of base) - System.Xml.Schema.ChameleonKey:Equals(System.Object):ubyte:this
 ; Assembly listing for method System.Xml.Schema.ChameleonKey:Equals(System.Object):ubyte:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  6,  4.50)     ref  ->  rbx         this class-hnd single-def <System.Xml.Schema.ChameleonKey>
 ;  V01 arg1         [V01,T01] (  6,  4.25)     ref  ->  rsi         class-hnd single-def <System.Object>
-;  V02 loc0         [V02,T05] (  4,  2   )     ref  ->  r15         class-hnd exact <System.Xml.Schema.ChameleonKey>
+;  V02 loc0         [V02,T04] (  4,  2   )     ref  ->  r15         class-hnd exact <System.Xml.Schema.ChameleonKey>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling qmarkNull" <System.Xml.Schema.ChameleonKey>
-;  V05 tmp2         [V05,T06] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
+;  V05 tmp2         [V05,T05] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;  V06 tmp3         [V06,T02] (  5,  5   )     ref  ->  rdi         class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V07 tmp4         [V07,T03] (  5,  5   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.String>
-;  V08 tmp5         [V08,T07] (  2,  2   )   byref  ->  rdi         single-def "impAppendStmt"
-;  V09 tmp6         [V09,T04] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
-;  V10 cse0         [V10,T08] (  3,  1.50)     int  ->  rdx         "CSE #01: moderate"
+;  V08 tmp5         [V08,T06] (  2,  2   )   byref  ->  rdi         single-def "impAppendStmt"
+;  V09 cse0         [V09,T07] (  3,  1.50)     int  ->  rdx         "CSE #01: moderate"
 ;
 ; Lcl frame size = 0
 
 G_M47687_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
        mov      rbx, rdi
 						;; size=12 bbWeight=1 PerfScore 3.75
 G_M47687_IG02:
        cmp      rbx, rsi
        je       G_M47687_IG10
 						;; size=9 bbWeight=1 PerfScore 1.25
 G_M47687_IG03:
        test     rsi, rsi
        je       SHORT G_M47687_IG08
 						;; size=5 bbWeight=0.50 PerfScore 0.62
 G_M47687_IG04:
        mov      rdx, 0xD1FFAB1E      ; System.Xml.Schema.ChameleonKey
        cmp      qword ptr [rsi], rdx
        jne      SHORT G_M47687_IG08
 						;; size=15 bbWeight=0.25 PerfScore 1.06
 G_M47687_IG05:
        mov      r15, rsi
        mov      rdi, gword ptr [rbx+0x08]
        mov      rsi, gword ptr [r15+0x08]
        cmp      byte  ptr [rdi], dil
        cmp      rdi, rsi
        je       SHORT G_M47687_IG06
        test     rsi, rsi
        je       SHORT G_M47687_IG08
        mov      edx, dword ptr [rdi+0x08]
        cmp      edx, dword ptr [rsi+0x08]
        jne      SHORT G_M47687_IG08
        add      rdi, 12
        add      edx, edx
        add      rsi, 12
        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
        call     [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
        test     eax, eax
        je       SHORT G_M47687_IG08
 						;; size=58 bbWeight=0.50 PerfScore 10.50
 G_M47687_IG06:
        mov      rdi, gword ptr [rbx+0x10]
        mov      rsi, gword ptr [r15+0x10]
-       mov      rax, qword ptr [rdi]
-       mov      rax, qword ptr [rax+0x40]
-       call     [rax+0x10]System.Object:Equals(System.Object):ubyte:this
+       mov      rax, 0xD1FFAB1E      ; code for System.Uri:Equals(System.Uri):ubyte:this
+       cmp      dword ptr [rdi], edi
+       call     [rax]System.Uri:Equals(System.Uri):ubyte:this
        test     eax, eax
        je       SHORT G_M47687_IG08
        mov      rax, gword ptr [rbx+0x18]
        cmp      rax, gword ptr [r15+0x18]
        sete     al
        movzx    rax, al
-						;; size=36 bbWeight=0.50 PerfScore 9.25
+						;; size=40 bbWeight=0.50 PerfScore 8.88
 G_M47687_IG07:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 1.25
 G_M47687_IG08:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M47687_IG09:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 1.25
 G_M47687_IG10:
        mov      eax, 1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
 G_M47687_IG11:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 1.25
 
-; Total bytes of code 157, prolog size 9, PerfScore 30.44, instruction count 55, allocated bytes for code 157 (MethodHash=423645b8) for method System.Xml.Schema.ChameleonKey:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 161, prolog size 9, PerfScore 30.06, instruction count 55, allocated bytes for code 161 (MethodHash=423645b8) for method System.Xml.Schema.ChameleonKey:Equals(System.Object):ubyte:this (FullOpts)
4 (3.25 % of base) - System.Xml.Schema.Datatype_anyURI:Compare(System.Object,System.Object):int:this
 ; Assembly listing for method System.Xml.Schema.Datatype_anyURI:Compare(System.Object,System.Object):int:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; Final local variable assignments
 ;
 ;* V00 this         [V00    ] (  0,  0   )     ref  ->  zero-ref    this class-hnd single-def <System.Xml.Schema.Datatype_anyURI>
-;  V01 arg1         [V01,T03] (  4,  3.25)     ref  ->  rsi         class-hnd single-def <System.Object>
-;  V02 arg2         [V02,T04] (  4,  3.25)     ref  ->  rbx         class-hnd single-def <System.Object>
+;  V01 arg1         [V01,T02] (  4,  3.25)     ref  ->  rsi         class-hnd single-def <System.Object>
+;  V02 arg2         [V02,T03] (  4,  3.25)     ref  ->  rbx         class-hnd single-def <System.Object>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T02] (  3,  6   )     ref  ->  r15         single-def "argument with side effect"
+;  V04 tmp1         [V04,T04] (  2,  4   )     ref  ->  r15         single-def "argument with side effect"
 ;  V05 tmp2         [V05,T05] (  2,  4   )     ref  ->  rsi         single-def "argument with side effect"
 ;  V06 rat0         [V06,T00] (  5,  7.50)     ref  ->  r15         "replacement local"
 ;  V07 rat1         [V07,T06] (  3,  2.50)    long  ->  rdi         "CSE for expectedClsNode"
 ;  V08 rat2         [V08,T01] (  5,  7.50)     ref  ->  rsi         "replacement local"
 ;  V09 rat3         [V09,T07] (  3,  2.50)    long  ->  rdi         "CSE for expectedClsNode"
 ;
 ; Lcl frame size = 0
 
 G_M61907_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
        mov      rbx, rdx
 						;; size=12 bbWeight=1 PerfScore 3.75
 G_M61907_IG02:
        mov      r15, rsi
        test     r15, r15
        je       SHORT G_M61907_IG05
 						;; size=8 bbWeight=1 PerfScore 1.50
 G_M61907_IG03:
        mov      rdi, 0xD1FFAB1E      ; System.Uri
        cmp      qword ptr [r15], rdi
        je       SHORT G_M61907_IG05
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M61907_IG04:
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
        call     [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
        mov      r15, rax
 						;; size=15 bbWeight=0.25 PerfScore 0.88
 G_M61907_IG05:
        mov      rsi, rbx
        test     rsi, rsi
        je       SHORT G_M61907_IG08
 						;; size=8 bbWeight=1 PerfScore 1.50
 G_M61907_IG06:
        mov      rdi, 0xD1FFAB1E      ; System.Uri
        cmp      qword ptr [rsi], rdi
        je       SHORT G_M61907_IG08
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M61907_IG07:
        mov      rsi, rbx
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
        call     [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
        mov      rsi, rax
 						;; size=18 bbWeight=0.25 PerfScore 0.94
 G_M61907_IG08:
        mov      rdi, r15
-       mov      rax, qword ptr [r15]
-       mov      rax, qword ptr [rax+0x40]
-       call     [rax+0x10]System.Object:Equals(System.Object):ubyte:this
+       mov      rax, 0xD1FFAB1E      ; code for System.Uri:Equals(System.Uri):ubyte:this
+       cmp      dword ptr [rdi], edi
+       call     [rax]System.Uri:Equals(System.Uri):ubyte:this
        xor      ecx, ecx
        mov      edx, -1
        test     eax, eax
        mov      eax, edx
        cmovne   eax, ecx
-						;; size=27 bbWeight=1 PerfScore 8.50
+						;; size=31 bbWeight=1 PerfScore 7.75
 G_M61907_IG09:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=1 PerfScore 2.50
 
-; Total bytes of code 123, prolog size 9, PerfScore 23.81, instruction count 37, allocated bytes for code 123 (MethodHash=9b560e2c) for method System.Xml.Schema.Datatype_anyURI:Compare(System.Object,System.Object):int:this (FullOpts)
+; Total bytes of code 127, prolog size 9, PerfScore 23.06, instruction count 37, allocated bytes for code 127 (MethodHash=9b560e2c) for method System.Xml.Schema.Datatype_anyURI:Compare(System.Object,System.Object):int:this (FullOpts)

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

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

@MihuBot
Copy link
Owner Author

MihuBot commented Jun 15, 2024

Top method improvements

-1092 (-80.65 % of base) - System.Uri:Equals(System.Object):ubyte:this
 ; Assembly listing for method System.Uri:Equals(System.Object):ubyte:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
-; fully interruptible
+; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 27 single block inlinees; 11 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T03] ( 29, 15.25)     ref  ->  rbx         this class-hnd single-def <System.Uri>
-;  V01 arg1         [V01,T07] (  7,  5   )     ref  ->  r15         class-hnd single-def <System.Object>
-;  V02 loc0         [V02,T04] ( 24, 12   )     ref  ->  r14         ld-addr-op class-hnd <System.Uri>
-;  V03 loc1         [V03,T45] (  3,  1.50)     ref  ->  r15         class-hnd exact single-def <System.Uri+MoreInfo>
-;  V04 loc2         [V04,T46] (  3,  1.50)     ref  ->  r13         class-hnd exact single-def <System.Uri+MoreInfo>
-;  V05 loc3         [V05,T25] (  4,  2   )     int  ->  r12        
-;* V06 loc4         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.String>
-;  V07 loc5         [V07,T44] (  3,  1.50)     ref  ->  rdi         class-hnd exact <System.String>
-;  V08 loc6         [V08,T14] (  7,  3.50)     int  ->  rax        
-;  V09 loc7         [V09,T09] (  5,  6   )     int  ->  rdx        
-;  V10 loc8         [V10,T15] (  6,  3   )     int  ->   r8        
-;  V11 loc9         [V11,T26] (  4,  2   )     int  ->  rsi        
-;  V12 loc10        [V12,T06] (  5,  9.50)     ref  ->  r10         class-hnd exact single-def <System.String>
-;* V13 loc11        [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Uri+MoreInfo>
-;* V14 loc12        [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.String>
-;# V15 OutArgs      [V15    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V16 tmp1         [V16    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
-;* V17 tmp2         [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "impAppendStmt" <System.String>
-;* V18 tmp3         [V18    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
-;  V19 tmp4         [V19,T29] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "impAppendStmt" <System.String>
-;  V20 tmp5         [V20,T30] (  2,  2   )     ref  ->  r13         class-hnd exact single-def "impAppendStmt" <System.String>
-;* V21 tmp6         [V21    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;* V22 tmp7         [V22    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;* V23 tmp8         [V23    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;* V24 tmp9         [V24    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V25 tmp10        [V25,T54] (  2,  1   )     int  ->  rdx        
-;  V26 tmp11        [V26,T31] (  2,  2   )     ref  ->  rax         class-hnd exact single-def "dup spill" <System.String>
-;  V27 tmp12        [V27,T20] (  4,  2   )     ref  ->  [rbp-0x40] 
-;  V28 tmp13        [V28,T32] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "dup spill" <System.String>
-;* V29 tmp14        [V29    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V30 tmp15        [V30,T21] (  4,  2   )     ref  ->  r15        
-;* V31 tmp16        [V31    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;* V32 tmp17        [V32    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;* V33 tmp18        [V33    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;* V34 tmp19        [V34    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V35 tmp20        [V35,T55] (  2,  1   )     int  ->  rdx        
-;  V36 tmp21        [V36,T16] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "dup spill" <System.String>
-;  V37 tmp22        [V37,T17] (  3,  3   )     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def "dup spill" <System.String>
-;* V38 tmp23        [V38    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
-;* V39 tmp24        [V39    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "impAppendStmt" <System.String>
-;* V40 tmp25        [V40    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling qmarkNull" <System.String>
-;  V41 tmp26        [V41,T33] (  2,  2   )     ref  ->   r8         class-hnd exact single-def "dup spill" <System.String>
-;  V42 tmp27        [V42,T22] (  4,  2   )     ref  ->   r8        
-;  V43 tmp28        [V43,T52] (  3,  1.50)   ubyte  ->  rdi         "Inline return value spill temp"
-;  V44 tmp29        [V44    ] (  4,  2   )     ref  ->  [rbp-0x30]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.UriFormatException>
-;  V45 tmp30        [V45    ] (  2,  1   )  struct ( 8) [rbp-0x38]  do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.UriCreationOptions>
-;  V46 tmp31        [V46,T56] (  2,  1   )   ubyte  ->  rdi         "Inline return value spill temp"
-;* V47 tmp32        [V47    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Uri>
-;  V48 tmp33        [V48,T34] (  2,  2   )     ref  ->  rdi         class-hnd exact single-def "dup spill" <System.String>
-;  V49 tmp34        [V49,T23] (  4,  2   )     ref  ->  rdi        
-;* V50 tmp35        [V50    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inlining Arg" <System.Uri>
-;  V51 tmp36        [V51,T35] (  2,  2   )     ref  ->  rax         class-hnd exact single-def "dup spill" <System.String>
-;  V52 tmp37        [V52,T24] (  4,  2   )     ref  ->  rax        
-;* V53 tmp38        [V53    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Uri>
-;  V54 tmp39        [V54,T36] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "dup spill" <System.String>
-;  V55 tmp40        [V55,T12] (  8,  4   )     ref  ->  r15        
-;* V56 tmp41        [V56    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inlining Arg" <System.Uri>
-;  V57 tmp42        [V57,T37] (  2,  2   )     ref  ->  rsi         class-hnd exact single-def "dup spill" <System.String>
-;  V58 tmp43        [V58,T13] (  7,  3.50)     ref  ->  rsi        
-;  V59 tmp44        [V59,T27] (  4,  2   )   ubyte  ->  rax         "Inline return value spill temp"
-;  V60 tmp45        [V60,T38] (  2,  2   )   byref  ->  rdi         single-def "impAppendStmt"
-;* V61 tmp46        [V61    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Uri>
-;  V62 tmp47        [V62,T39] (  2,  2   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.UriParser>
-;* V63 tmp48        [V63    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Uri>
-;  V64 tmp49        [V64,T40] (  2,  2   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.UriParser>
-;* V65 tmp50        [V65    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Uri>
-;* V66 tmp51        [V66    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inlining Arg" <System.Uri>
-;  V67 tmp52        [V67,T28] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
-;  V68 tmp53        [V68,T08] (  6,  6   )     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <System.String>
-;  V69 tmp54        [V69,T11] (  5,  5   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.String>
-;  V70 tmp55        [V70,T41] (  2,  2   )   byref  ->  rdi         single-def "impAppendStmt"
-;  V71 tmp56        [V71,T42] (  2,  2   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.UriParser>
-;  V72 tmp57        [V72,T43] (  2,  2   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.UriParser>
-;* V73 tmp58        [V73    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inlining Arg" <System.Uri>
-;  V74 tmp59        [V74,T19] (  3,  3   )     int  ->  rax         "Single return block return value"
-;  V75 tmp60        [V75    ] (  2,  1   )   ubyte  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed "field V45._disablePathAndQueryCanonicalization (fldOffset=0x0)" P-DEP
-;  V76 tmp61        [V76,T00] (  3, 24   )     ref  ->   r8         "arr expr"
-;  V77 tmp62        [V77,T18] (  3,  3   )     ref  ->  r11         single-def "arr expr"
-;  V78 cse0         [V78,T05] (  3, 12   )     int  ->   r8         "CSE #13: aggressive"
-;  V79 cse1         [V79,T53] (  3,  1.50)     int  ->  rdi         "CSE #14: conservative"
-;  V80 cse2         [V80,T10] (  4,  5.25)     ref  ->  r11         hoist multi-def "CSE #09: moderate"
-;  V81 cse3         [V81,T47] (  3,  1.50)     ref  ->  rdi         "CSE #07: conservative"
-;  V82 cse4         [V82,T48] (  3,  1.50)     ref  ->  rdi         "CSE #01: conservative"
-;  V83 cse5         [V83,T49] (  3,  1.50)     ref  ->  r15         "CSE #02: conservative"
-;  V84 cse6         [V84,T50] (  3,  1.50)     ref  ->  rsi         "CSE #04: conservative"
-;  V85 cse7         [V85,T51] (  3,  1.50)     ref  ->  rsi         "CSE #08: conservative"
-;  V86 rat0         [V86,T01] (  9, 22   )    long  ->  rcx         "Widened IV V08"
-;  V87 rat1         [V87,T02] (  8, 18   )    long  ->   r9         "Widened IV V10"
+;  V00 this         [V00,T01] (  7,  4.50)     ref  ->  r15         this class-hnd single-def <System.Uri>
+;  V01 arg1         [V01,T00] (  7,  5   )     ref  ->  rbx         class-hnd single-def <System.Object>
+;  V02 loc0         [V02,T02] (  5,  2.50)     ref  ->  rax         ld-addr-op class-hnd <System.Uri>
+;  V03 loc1         [V03,T06] (  3,  1.50)     ref  ->  rdi         class-hnd exact <System.String>
+;# 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 "spilling qmarkNull" <System.String>
+;  V06 tmp2         [V06,T04] (  2,  2   )     ref  ->   r8         class-hnd exact single-def "dup spill" <System.String>
+;  V07 tmp3         [V07,T03] (  4,  2   )     ref  ->   r8        
+;  V08 tmp4         [V08,T07] (  3,  1.50)   ubyte  ->  rdi         "Inline return value spill temp"
+;  V09 tmp5         [V09    ] (  4,  2   )     ref  ->  [rbp-0x18]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.UriFormatException>
+;  V10 tmp6         [V10    ] (  2,  1   )  struct ( 8) [rbp-0x20]  do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.UriCreationOptions>
+;  V11 tmp7         [V11,T08] (  2,  1   )   ubyte  ->  rdi         "Inline return value spill temp"
+;* V12 tmp8         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Uri>
+;  V13 tmp9         [V13,T05] (  2,  2   )     int  ->  rax         "Single return block return value"
+;  V14 tmp10        [V14    ] (  2,  1   )   ubyte  ->  [rbp-0x20]  do-not-enreg[X] addr-exposed "field V10._disablePathAndQueryCanonicalization (fldOffset=0x0)" P-DEP
 ;
-; Lcl frame size = 40
+; Lcl frame size = 16
 
 G_M60668_IG01:
        push     rbp
        push     r15
-       push     r14
-       push     r13
-       push     r12
        push     rbx
-       sub      rsp, 40
-       lea      rbp, [rsp+0x50]
+       sub      rsp, 16
+       lea      rbp, [rsp+0x20]
        xor      eax, eax
-       mov      qword ptr [rbp-0x30], rax
-       mov      rbx, rdi
-       mov      r15, rsi
-						;; size=31 bbWeight=1 PerfScore 8.50
+       mov      qword ptr [rbp-0x18], rax
+       mov      r15, rdi
+       mov      rbx, rsi
+						;; size=25 bbWeight=1 PerfScore 5.50
 G_M60668_IG02:
-       test     r15, r15
-       je       G_M60668_IG36
+       test     rbx, rbx
+       je       G_M60668_IG11
 						;; size=9 bbWeight=1 PerfScore 1.25
 G_M60668_IG03:
-       cmp      rbx, r15
-       je       G_M60668_IG27
-       mov      rsi, r15
+       cmp      r15, rbx
+       je       G_M60668_IG09
+       mov      rsi, rbx
        mov      rdi, 0xD1FFAB1E      ; System.Uri
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ISINSTANCEOFCLASS
        call     [rax]CORINFO_HELP_ISINSTANCEOFCLASS
-       mov      r14, rax
-       test     r14, r14
+       test     rax, rax
        jne      G_M60668_IG07
-       mov      rdi, rbx
+       mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Uri:get_DisablePathAndQueryCanonicalization():ubyte:this
        call     [rax]System.Uri:get_DisablePathAndQueryCanonicalization():ubyte:this
        test     eax, eax
-       jne      G_M60668_IG36
+       jne      G_M60668_IG11
        mov      r8, 0xD1FFAB1E      ; System.String
-       cmp      qword ptr [r15], r8
-       jne      G_M60668_IG36
-       mov      rdi, r15
-       mov      r8, gword ptr [rbx+0x10]
+       cmp      qword ptr [rbx], r8
+       jne      G_M60668_IG11
+       mov      rdi, rbx
+       mov      r8, gword ptr [r15+0x10]
        test     r8, r8
        jne      SHORT G_M60668_IG04
-       mov      r8, gword ptr [rbx+0x08]
-						;; size=104 bbWeight=0.50 PerfScore 10.50
+       mov      r8, gword ptr [r15+0x08]
+						;; size=101 bbWeight=0.50 PerfScore 10.38
 G_M60668_IG04:
        cmp      rdi, r8
-       je       G_M60668_IG27
+       je       SHORT G_M60668_IG09
        xor      r8, r8
-       mov      gword ptr [rbp-0x30], r8
-       mov      byte  ptr [rbp-0x38], 0
-       lea      r8, [rbp-0x38]
-       lea      rcx, [rbp-0x30]
+       mov      gword ptr [rbp-0x18], r8
+       mov      byte  ptr [rbp-0x20], 0
+       lea      r8, [rbp-0x20]
+       lea      rcx, [rbp-0x18]
        xor      esi, esi
        xor      edx, edx
        mov      rax, 0xD1FFAB1E      ; code for System.Uri:CreateHelper(System.String,ubyte,int,byref,byref):System.Uri
        call     [rax]System.Uri:CreateHelper(System.String,ubyte,int,byref,byref):System.Uri
-       mov      r14, rax
-       cmp      gword ptr [rbp-0x30], 0
+       cmp      gword ptr [rbp-0x18], 0
        je       SHORT G_M60668_IG05
        xor      edi, edi
        jmp      SHORT G_M60668_IG06
-       align    [4 bytes for IG18]
-						;; size=62 bbWeight=0.50 PerfScore 6.88
+						;; size=51 bbWeight=0.50 PerfScore 6.75
 G_M60668_IG05:
-       test     r14, r14
+       test     rax, rax
        setne    dil
        movzx    rdi, dil
 						;; size=11 bbWeight=0.50 PerfScore 0.75
 G_M60668_IG06:
-       xor      rax, rax
-       mov      gword ptr [rbp-0x30], rax
+       xor      rsi, rsi
+       mov      gword ptr [rbp-0x18], rsi
        test     edi, edi
-       je       G_M60668_IG36
-						;; size=14 bbWeight=0.50 PerfScore 1.25
+       je       SHORT G_M60668_IG11
+						;; size=10 bbWeight=0.50 PerfScore 1.25
 G_M60668_IG07:
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.Uri:get_DisablePathAndQueryCanonicalization():ubyte:this
-       call     [rax]System.Uri:get_DisablePathAndQueryCanonicalization():ubyte:this
-       mov      r15d, eax
-       mov      rdi, r14
-       mov      rax, 0xD1FFAB1E      ; code for System.Uri:get_DisablePathAndQueryCanonicalization():ubyte:this
-       cmp      dword ptr [rdi], edi
-       call     [rax]System.Uri:get_DisablePathAndQueryCanonicalization():ubyte:this
-       cmp      r15d, eax
-       jne      G_M60668_IG36
-       mov      r15, gword ptr [rbx+0x10]
        mov      rdi, r15
-       test     rdi, rdi
-       jne      SHORT G_M60668_IG08
-       mov      rdi, gword ptr [rbx+0x08]
-						;; size=60 bbWeight=0.50 PerfScore 8.50
-G_M60668_IG08:
-       mov      rsi, gword ptr [r14+0x10]
-       mov      rax, rsi
-       test     rax, rax
-       jne      SHORT G_M60668_IG09
-       mov      rax, gword ptr [r14+0x08]
-						;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M60668_IG09:
-       cmp      rdi, rax
-       je       G_M60668_IG27
-       mov      rdi, gword ptr [rbx+0x18]
-       test     rdi, rdi
-       setne    al
-       movzx    rax, al
-       cmp      gword ptr [r14+0x18], 0
-       setne    cl
-       movzx    rcx, cl
-       cmp      eax, ecx
-       jne      G_M60668_IG36
-       test     rdi, rdi
-       je       G_M60668_IG29
-       test     dword ptr [rbx+0x28], 0xD1FFAB1E
-       je       SHORT G_M60668_IG10
-       test     dword ptr [r14+0x28], 0xD1FFAB1E
-       jne      SHORT G_M60668_IG11
-						;; size=69 bbWeight=0.50 PerfScore 9.75
-G_M60668_IG10:
-       mov      r15, gword ptr [rbx+0x08]
-       mov      r13, gword ptr [r14+0x08]
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.Uri:get_IsUncOrDosPath():ubyte:this
-       call     [rax]System.Uri:get_IsUncOrDosPath():ubyte:this
-       mov      edx, 5
-       mov      edi, 4
-       test     eax, eax
-       cmove    edx, edi
-       mov      rdi, r15
-       mov      rsi, r13
-       mov      rax, 0xD1FFAB1E      ; code for System.String:Equals(System.String,System.String,int):ubyte
-       call     [rax]System.String:Equals(System.String,System.String,int):ubyte
-       test     eax, eax
-       jne      G_M60668_IG27
-						;; size=64 bbWeight=0.50 PerfScore 6.75
-G_M60668_IG11:
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.Uri:EnsureUriInfo():System.Uri+UriInfo:this
-       call     [rax]System.Uri:EnsureUriInfo():System.Uri+UriInfo:this
-       mov      rdi, r14
-       mov      rax, 0xD1FFAB1E      ; code for System.Uri:EnsureUriInfo():System.Uri+UriInfo:this
-       call     [rax]System.Uri:EnsureUriInfo():System.Uri+UriInfo:this
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.Uri:get_UserDrivenParsing():ubyte:this
-       call     [rax]System.Uri:get_UserDrivenParsing():ubyte:this
-       test     eax, eax
-       jne      G_M60668_IG23
-       mov      rdi, r14
-       mov      rax, 0xD1FFAB1E      ; code for System.Uri:get_UserDrivenParsing():ubyte:this
-       call     [rax]System.Uri:get_UserDrivenParsing():ubyte:this
-       test     eax, eax
-       jne      G_M60668_IG23
-       mov      rdi, gword ptr [rbx+0x18]
-       test     dword ptr [rdi+0x10], 0x20000
-       je       G_M60668_IG23
-       mov      rdi, gword ptr [r14+0x18]
-       test     dword ptr [rdi+0x10], 0x20000
-       je       G_M60668_IG23
-       test     dword ptr [rbx+0x28], 0xD1FFAB1E
-       je       SHORT G_M60668_IG12
-       test     dword ptr [r14+0x28], 0xD1FFAB1E
-       jne      G_M60668_IG15
-						;; size=133 bbWeight=0.50 PerfScore 18.25
-G_M60668_IG12:
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.Uri:EnsureUriInfo():System.Uri+UriInfo:this
-       call     [rax]System.Uri:EnsureUriInfo():System.Uri+UriInfo:this
-       cmp      gword ptr [rax+0x10], 0
-       jne      SHORT G_M60668_IG13
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.Uri:CreateHostString():this
-       call     [rax]System.Uri:CreateHostString():this
-						;; size=37 bbWeight=0.50 PerfScore 5.50
-G_M60668_IG13:
-       mov      rdi, r14
-       mov      rax, 0xD1FFAB1E      ; code for System.Uri:EnsureUriInfo():System.Uri+UriInfo:this
-       call     [rax]System.Uri:EnsureUriInfo():System.Uri+UriInfo:this
-       cmp      gword ptr [rax+0x10], 0
-       jne      SHORT G_M60668_IG14
-       mov      rdi, r14
-       mov      rax, 0xD1FFAB1E      ; code for System.Uri:CreateHostString():this
-       call     [rax]System.Uri:CreateHostString():this
-						;; size=37 bbWeight=0.50 PerfScore 5.50
-G_M60668_IG14:
-       mov      rdx, gword ptr [rbx+0x20]
-       mov      rdx, gword ptr [rdx+0x10]
-       mov      rsi, gword ptr [r14+0x20]
-       mov      rsi, gword ptr [rsi+0x10]
-       cmp      byte  ptr [rdx], dl
-       cmp      rdx, rsi
-       je       G_M60668_IG22
-       test     rsi, rsi
-       je       G_M60668_IG36
-       mov      edi, dword ptr [rdx+0x08]
-       cmp      edi, dword ptr [rsi+0x08]
-       jne      G_M60668_IG36
-       lea      rdi, bword ptr [rdx+0x0C]
-       mov      edx, dword ptr [rdx+0x08]
-       add      edx, edx
-       add      rsi, 12
-       mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
-       call     [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
-       test     eax, eax
-       je       G_M60668_IG36
-       jmp      G_M60668_IG22
-						;; size=86 bbWeight=0.50 PerfScore 14.50
-G_M60668_IG15:
-       mov      rdi, gword ptr [rbx+0x20]
-       movzx    rax, word  ptr [rdi+0x3C]
-       mov      ecx, eax
-       movzx    rdi, word  ptr [rdi+0x40]
-       mov      edx, edi
-       mov      rsi, gword ptr [r14+0x20]
-       movzx    r8, word  ptr [rsi+0x3C]
-       mov      r9d, r8d
-       movzx    rsi, word  ptr [rsi+0x40]
-       mov      r10, gword ptr [r14+0x08]
-       mov      r11d, edx
-       sub      r11d, ecx
-       mov      r15d, esi
-       sub      r15d, r9d
-       cmp      r11d, r15d
-       jle      SHORT G_M60668_IG16
-       lea      edx, [rcx+rsi]
-       sub      edx, r9d
-						;; size=59 bbWeight=0.50 PerfScore 8.88
-G_M60668_IG16:
-       cmp      eax, edx
-       jge      SHORT G_M60668_IG20
-						;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M60668_IG17:
-       mov      r11, gword ptr [rbx+0x08]
-						;; size=4 bbWeight=0.25 PerfScore 0.50
-G_M60668_IG18:
-       mov      r8, r11
-       cmp      ecx, dword ptr [r8+0x08]
-       jae      G_M60668_IG38
-       movzx    rax, word  ptr [r8+2*rcx+0x0C]
-       cmp      r9d, dword ptr [r10+0x08]
-       jae      G_M60668_IG38
-       movzx    r8, word  ptr [r10+2*r9+0x0C]
-       cmp      eax, r8d
-       jne      G_M60668_IG36
-       cmp      r8d, 58
-       je       SHORT G_M60668_IG19
-       inc      ecx
-       inc      r9d
-       cmp      ecx, edx
-       jl       SHORT G_M60668_IG18
-						;; size=59 bbWeight=4 PerfScore 66.00
-G_M60668_IG19:
-       mov      r8d, r9d
-       mov      eax, ecx
-						;; size=5 bbWeight=0.50 PerfScore 0.25
-G_M60668_IG20:
-       cmp      eax, edi
-       jge      SHORT G_M60668_IG21
-       mov      r11, gword ptr [rbx+0x08]
-       cmp      eax, dword ptr [r11+0x08]
-       jae      G_M60668_IG38
-       mov      edi, eax
-       cmp      word  ptr [r11+2*rdi+0x0C], 58
-       jne      G_M60668_IG36
-						;; size=33 bbWeight=0.50 PerfScore 5.75
-G_M60668_IG21:
-       cmp      r8d, esi
-       jge      SHORT G_M60668_IG22
-       cmp      r8d, dword ptr [r10+0x08]
-       jae      G_M60668_IG38
-       mov      edi, r8d
-       cmp      word  ptr [r10+2*rdi+0x0C], 58
-       jne      G_M60668_IG36
-						;; size=31 bbWeight=0.50 PerfScore 4.75
-G_M60668_IG22:
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.Uri:get_Port():int:this
-       call     [rax]System.Uri:get_Port():int:this
-       mov      r15d, eax
-       mov      rdi, r14
-       mov      rax, 0xD1FFAB1E      ; code for System.Uri:get_Port():int:this
-       call     [rax]System.Uri:get_Port():int:this
-       cmp      r15d, eax
-       jne      G_M60668_IG36
-						;; size=42 bbWeight=0.50 PerfScore 4.25
-G_M60668_IG23:
-       mov      rdi, gword ptr [rbx+0x20]
-       mov      rax, 0xD1FFAB1E      ; code for System.Uri+UriInfo:get_MoreInfo():System.Uri+MoreInfo:this
-       cmp      dword ptr [rdi], edi
-       call     [rax]System.Uri+UriInfo:get_MoreInfo():System.Uri+MoreInfo:this
-       mov      r15, rax
-       mov      rdi, gword ptr [r14+0x20]
-       mov      rax, 0xD1FFAB1E      ; code for System.Uri+UriInfo:get_MoreInfo():System.Uri+MoreInfo:this
-       cmp      dword ptr [rdi], edi
-       call     [rax]System.Uri+UriInfo:get_MoreInfo():System.Uri+MoreInfo:this
-       mov      r13, rax
-       mov      r12d, 61
-       mov      rdi, gword ptr [rbx+0x18]
-       test     dword ptr [rdi+0x10], 0x4000
-       je       SHORT G_M60668_IG24
-       mov      rdi, gword ptr [r14+0x18]
-       test     dword ptr [rdi+0x10], 0x4000
-       je       G_M60668_IG36
-       mov      r12d, 63
-						;; size=84 bbWeight=0.50 PerfScore 14.75
-G_M60668_IG24:
-       mov      rax, gword ptr [r15+0x28]
-       test     rax, rax
-       jne      SHORT G_M60668_IG25
-       mov      rdi, rbx
-       mov      esi, r12d
-       mov      edx, 3
-       mov      rax, 0xD1FFAB1E      ; code for System.Uri:InternalGetComponents(int,int):System.String:this
-       call     [rax]System.Uri:InternalGetComponents(int,int):System.String:this
-       mov      gword ptr [rbp-0x48], rax
-       lea      rdi, bword ptr [r15+0x28]
        mov      rsi, rax
-       call     CORINFO_HELP_ASSIGN_REF
-       mov      r15, gword ptr [rbp-0x48]
-       mov      gword ptr [rbp-0x40], r15
-       mov      rax, gword ptr [rbp-0x40]
-						;; size=60 bbWeight=0.50 PerfScore 6.50
-G_M60668_IG25:
-       mov      r15, gword ptr [r13+0x28]
-       test     r15, r15
-       mov      gword ptr [rbp-0x40], rax
-       jne      SHORT G_M60668_IG26
-       mov      rdi, r14
-       mov      esi, r12d
-       mov      edx, 3
-       mov      rcx, 0xD1FFAB1E      ; code for System.Uri:InternalGetComponents(int,int):System.String:this
-       call     [rcx]System.Uri:InternalGetComponents(int,int):System.String:this
-       mov      r15, rax
-       lea      rdi, bword ptr [r13+0x28]
-       mov      rsi, r15
-       call     CORINFO_HELP_ASSIGN_REF
-						;; size=51 bbWeight=0.50 PerfScore 5.12
-G_M60668_IG26:
-       mov      rdi, rbx
-       mov      rcx, 0xD1FFAB1E      ; code for System.Uri:get_IsUncOrDosPath():ubyte:this
-       call     [rcx]System.Uri:get_IsUncOrDosPath():ubyte:this
-       mov      edx, 5
-       mov      edi, 4
-       test     eax, eax
-       cmove    edx, edi
-       mov      rdi, gword ptr [rbp-0x40]
-       mov      rsi, r15
-       mov      rax, 0xD1FFAB1E      ; code for System.String:Equals(System.String,System.String,int):ubyte
-       call     [rax]System.String:Equals(System.String,System.String,int):ubyte
-       jmp      SHORT G_M60668_IG34
-						;; size=51 bbWeight=0.50 PerfScore 5.50
-G_M60668_IG27:
-       mov      eax, 1
-						;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M60668_IG28:
-       add      rsp, 40
+       mov      rax, 0xD1FFAB1E      ; code for System.Uri:Equals(System.Uri):ubyte:this
+       call     [rax]System.Uri:Equals(System.Uri):ubyte:this
+       movzx    rax, al
+						;; size=21 bbWeight=0.50 PerfScore 2.00
+G_M60668_IG08:
+       add      rsp, 16
        pop      rbx
-       pop      r12
-       pop      r13
-       pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M60668_IG29:
-       test     r15, r15
-       jne      SHORT G_M60668_IG30
-       mov      r15, gword ptr [rbx+0x08]
-						;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M60668_IG30:
-       test     rsi, rsi
-       jne      SHORT G_M60668_IG31
-       mov      rsi, gword ptr [r14+0x08]
-						;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M60668_IG31:
-       cmp      byte  ptr [r15], r15b
-       cmp      r15, rsi
-       je       SHORT G_M60668_IG33
-       test     rsi, rsi
-       je       SHORT G_M60668_IG32
-       mov      edx, dword ptr [r15+0x08]
-       cmp      edx, dword ptr [rsi+0x08]
-       jne      SHORT G_M60668_IG32
-       lea      rdi, bword ptr [r15+0x0C]
-       mov      edx, dword ptr [r15+0x08]
-       add      edx, edx
-       add      rsi, 12
-       mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
-       call     [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
-       jmp      SHORT G_M60668_IG34
-						;; size=50 bbWeight=0.50 PerfScore 9.88
-G_M60668_IG32:
-       xor      eax, eax
-       jmp      SHORT G_M60668_IG34
-						;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M60668_IG33:
+						;; size=9 bbWeight=0.50 PerfScore 1.38
+G_M60668_IG09:
        mov      eax, 1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M60668_IG34:
-       movzx    rax, al
-						;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M60668_IG35:
-       add      rsp, 40
+G_M60668_IG10:
+       add      rsp, 16
        pop      rbx
-       pop      r12
-       pop      r13
-       pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M60668_IG36:
+						;; size=9 bbWeight=0.50 PerfScore 1.38
+G_M60668_IG11:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M60668_IG37:
-       add      rsp, 40
+G_M60668_IG12:
+       add      rsp, 16
        pop      rbx
-       pop      r12
-       pop      r13
-       pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M60668_IG38:
-       call     CORINFO_HELP_RNGCHKFAIL
-       int3     
-						;; size=6 bbWeight=0 PerfScore 0.00
+						;; size=9 bbWeight=0.50 PerfScore 1.38
 
-; Total bytes of code 1354, prolog size 31, PerfScore 244.62, instruction count 348, allocated bytes for code 1354 (MethodHash=e6ef1303) for method System.Uri:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 262, prolog size 19, PerfScore 32.25, instruction count 76, allocated bytes for code 262 (MethodHash=e6ef1303) for method System.Uri:Equals(System.Object):ubyte:this (FullOpts)
-13 (-1.59 % of base) - System.Timers.Timer:set_Enabled(ubyte):this
 ; Assembly listing for method System.Timers.Timer:set_Enabled(ubyte):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 15 single block inlinees; 11 inlinees without PGO data
+; 0 inlinees with PGO data; 14 single block inlinees; 12 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] ( 24, 13   )     ref  ->  [rbp-0x30]  this class-hnd single-def <System.Timers.Timer>
+;  V00 this         [V00,T00] ( 24, 13   )     ref  ->  rbx         this class-hnd single-def <System.Timers.Timer>
 ;  V01 arg1         [V01,T02] (  7,  4.50)   ubyte  ->  r15         single-def
-;  V02 loc0         [V02,T14] (  3,  1.50)     int  ->  r14        
+;  V02 loc0         [V02,T16] (  3,  1.50)     int  ->  r14        
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T11] (  2,  2   )     ref  ->  rax         class-hnd exact single-def "NewObj constructor temp" <System.Object>
-;  V05 tmp2         [V05,T05] (  3,  3   )     ref  ->  [rbp-0x38]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Timer>
+;  V04 tmp1         [V04,T12] (  2,  2   )     ref  ->  rax         class-hnd exact single-def "NewObj constructor temp" <System.Object>
+;  V05 tmp2         [V05,T06] (  3,  3   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Threading.Timer>
 ;* V06 tmp3         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.Threading.Timer>
-;  V07 tmp4         [V07,T18] (  2,  1   )     ref  ->  r12         single-def
+;  V07 tmp4         [V07,T22] (  2,  1   )     ref  ->  rdi         single-def
 ;* V08 tmp5         [V08    ] (  0,  0   )     int  ->  zero-ref   
 ;* V09 tmp6         [V09    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V10 tmp7         [V10    ] (  0,  0   )     int  ->  zero-ref   
-;  V11 tmp8         [V11,T20] (  2,  1   )     int  ->  rdx        
-;  V12 tmp9         [V12,T15] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
+;  V11 tmp8         [V11,T24] (  2,  1   )     int  ->  rdx        
+;  V12 tmp9         [V12,T17] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;  V13 tmp10        [V13,T03] (  3,  5   )     ref  ->  rdi         class-hnd single-def "dup spill" <System.ComponentModel.ISite>
 ;* V14 tmp11        [V14    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V15 tmp12        [V15    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Threading.Timer>
-;  V16 tmp13        [V16,T06] (  3,  3   )     ref  ->  r13         class-hnd exact single-def "Inlining Arg" <System.Threading.TimerHolder>
+;  V16 tmp13        [V16,T07] (  3,  3   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.Threading.TimerHolder>
 ;* V17 tmp14        [V17    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V18 tmp15        [V18,T07] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "Inlining Arg" <System.Threading.TimerCallback>
-;  V19 tmp16        [V19,T12] (  2,  2   )     ref  ->  r12         class-hnd single-def "Inlining Arg" <System.Object>
-;* V20 tmp17        [V20,T22] (  0,  0   )     int  ->  zero-ref    ld-addr-op "Inlining Arg"
-;* V21 tmp18        [V21,T25] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V22 tmp19        [V22,T23] (  0,  0   )     int  ->  zero-ref    ld-addr-op "Inlining Arg"
-;* V23 tmp20        [V23,T26] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;  V24 tmp21        [V24,T01] (  7,  7   )     ref  ->  [rbp-0x40]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
-;  V25 tmp22        [V25,T08] (  3,  3   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerHolder>
-;  V26 tmp23        [V26,T09] (  3,  3   )     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-;  V27 tmp24        [V27,T13] (  2,  2   )    long  ->  rax         "impAppendStmt"
+;  V18 tmp15        [V18,T08] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "Inlining Arg" <System.Threading.TimerCallback>
+;  V19 tmp16        [V19,T13] (  2,  2   )     ref  ->  r12         class-hnd single-def "Inlining Arg" <System.Object>
+;* V20 tmp17        [V20,T26] (  0,  0   )     int  ->  zero-ref    ld-addr-op "Inlining Arg"
+;* V21 tmp18        [V21,T29] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V22 tmp19        [V22,T27] (  0,  0   )     int  ->  zero-ref    ld-addr-op "Inlining Arg"
+;* V23 tmp20        [V23,T30] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;  V24 tmp21        [V24,T01] (  7,  7   )     ref  ->  [rbp-0x30]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+;  V25 tmp22        [V25,T09] (  3,  3   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerHolder>
+;  V26 tmp23        [V26,T10] (  3,  3   )     ref  ->  r12         class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V27 tmp24        [V27    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
 ;* V28 tmp25        [V28    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;  V29 tmp26        [V29,T16] (  3,  1.50)     int  ->  rsi         "Inline stloc first use temp"
-;* V30 tmp27        [V30    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.Threading.Timer>
-;  V31 tmp28        [V31,T19] (  2,  1   )     ref  ->  rdi         single-def
-;* V32 tmp29        [V32    ] (  0,  0   )     int  ->  zero-ref   
-;* V33 tmp30        [V33    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;* V34 tmp31        [V34    ] (  0,  0   )     int  ->  zero-ref   
-;  V35 tmp32        [V35,T21] (  2,  1   )     int  ->  rdx        
-;* V36 tmp33        [V36    ] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;* V37 tmp34        [V37    ] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V38 tmp35        [V38,T10] (  3,  3   )    long  ->  rdx         "index expr"
-;* V39 cse0         [V39,T24] (  0,  0   )   byref  ->  zero-ref    "CSE #04: moderate"
-;  V40 cse1         [V40,T04] (  6,  3   )     ref  ->  rdi         multi-def "CSE #02: moderate"
-;  V41 cse2         [V41,T17] (  3,  1.50)     int  ->  rsi         "CSE #01: moderate"
-;  V42 rat0         [V42,T27] (  4,  4   )  double  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
-;  V43 rat1         [V43,T29] (  3,  3   )  simd16  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
-;  V44 rat2         [V44,T28] (  4,  4   )  double  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
-;  V45 rat3         [V45,T30] (  3,  3   )  simd16  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
+;  V29 tmp26        [V29,T18] (  3,  1.50)     int  ->  rcx         "Inline return value spill temp"
+;  V30 tmp27        [V30,T04] (  4,  4   )     int  ->  rcx         "dup spill"
+;* V31 tmp28        [V31    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;  V32 tmp29        [V32,T19] (  3,  1.50)     int  ->  rsi         "Inline stloc first use temp"
+;* V33 tmp30        [V33    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.Threading.Timer>
+;  V34 tmp31        [V34,T23] (  2,  1   )     ref  ->  rdi         single-def
+;* V35 tmp32        [V35    ] (  0,  0   )     int  ->  zero-ref   
+;* V36 tmp33        [V36    ] (  0,  0   )     ref  ->  zero-ref    single-def
+;* V37 tmp34        [V37    ] (  0,  0   )     int  ->  zero-ref   
+;  V38 tmp35        [V38,T25] (  2,  1   )     int  ->  rdx        
+;* V39 tmp36        [V39    ] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;* V40 tmp37        [V40    ] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;  V41 tmp38        [V41,T11] (  3,  3   )    long  ->  rdx         "index expr"
+;* V42 cse0         [V42,T28] (  0,  0   )   byref  ->  zero-ref    "CSE #05: moderate"
+;  V43 cse1         [V43,T20] (  3,  1.50)    long  ->  rax         "CSE #03: moderate"
+;  V44 cse2         [V44,T05] (  6,  3   )     ref  ->  rdi         multi-def "CSE #02: moderate"
+;  V45 cse3         [V45,T21] (  3,  1.50)     int  ->  rsi         "CSE #01: moderate"
+;  V46 rat0         [V46,T14] (  2,  2   )    long  ->  rax         "TLS field access"
+;  V47 rat1         [V47,T15] (  2,  2   )    long  ->  rax         "TLS access"
+;  V48 rat2         [V48,T31] (  4,  4   )  double  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
+;  V49 rat3         [V49,T33] (  3,  3   )  simd16  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
+;  V50 rat4         [V50,T32] (  4,  4   )  double  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
+;  V51 rat5         [V51,T34] (  3,  3   )  simd16  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
 ;
-; Lcl frame size = 40
+; Lcl frame size = 8
 
 G_M60364_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 40
-       vzeroupper 
-       lea      rbp, [rsp+0x50]
+       push     rax
+       lea      rbp, [rsp+0x30]
        mov      rbx, rdi
        mov      r15d, esi
-						;; size=28 bbWeight=1 PerfScore 8.25
+						;; size=22 bbWeight=1 PerfScore 8.00
 G_M60364_IG02:
        mov      rdi, gword ptr [rbx+0x08]
        test     rdi, rdi
        je       SHORT G_M60364_IG04
 						;; size=9 bbWeight=1 PerfScore 3.25
 G_M60364_IG03:
        mov      r11, 0xD1FFAB1E      ; code for System.ComponentModel.ISite:get_DesignMode():ubyte:this
        call     [r11]System.ComponentModel.ISite:get_DesignMode():ubyte:this
        test     eax, eax
        je       SHORT G_M60364_IG04
        mov      byte  ptr [rbx+0x4A], r15b
        jmp      G_M60364_IG10
 						;; size=26 bbWeight=0.50 PerfScore 3.75
 G_M60364_IG04:
        cmp      byte  ptr [rbx+0x49], 0
        jne      G_M60364_IG11
        movzx    rdi, byte  ptr [rbx+0x48]
        movzx    rsi, r15b
        cmp      edi, esi
        je       G_M60364_IG12
        test     esi, esi
        je       G_M60364_IG09
        mov      byte  ptr [rbx+0x48], r15b
        mov      rdi, gword ptr [rbx+0x28]
        test     rdi, rdi
        je       SHORT G_M60364_IG05
        vroundsd xmm0, xmm0, qword ptr [rbx+0x40], 10
        vmovddup xmm1, xmm0
        vmovddup xmm2, xmm0
        vmovddup xmm0, xmm0
        vcmppd   xmm1, xmm2, xmm1, 0
        vandpd   xmm0, xmm1, xmm0
        vcmppd   xmm1, xmm0, xmmword ptr [reloc @RWD00], 13
        vcvttsd2si esi, xmm0
        vmovd    xmm0, esi
        vpbroadcastd xmm0, xmm0
        vpblendvb xmm0, xmm0, xmmword ptr [reloc @RWD16], xmm1
        vmovd    esi, xmm0
        mov      edx, -1
        cmp      byte  ptr [rbx+0x4B], 0
        cmovne   edx, esi
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Timer:Change(int,int):ubyte:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Threading.Timer:Change(int,int):ubyte:this
        jmp      G_M60364_IG12
 						;; size=143 bbWeight=0.50 PerfScore 29.04
 G_M60364_IG05:
        cmp      byte  ptr [rbx+0x4C], 0
-       jne      G_M60364_IG16
+       jne      G_M60364_IG15
        vroundsd xmm0, xmm0, qword ptr [rbx+0x40], 10
        vmovddup xmm1, xmm0
        vmovddup xmm2, xmm0
        vmovddup xmm0, xmm0
        vcmppd   xmm1, xmm2, xmm1, 0
        vandpd   xmm0, xmm1, xmm0
        vcmppd   xmm1, xmm0, xmmword ptr [reloc @RWD00], 13
        vcvttsd2si edi, xmm0
        vmovd    xmm0, edi
        vpbroadcastd xmm0, xmm0
        vpblendvb xmm0, xmm0, xmmword ptr [reloc @RWD16], xmm1
        vmovd    r14d, xmm0
        mov      rdi, 0xD1FFAB1E      ; System.Object
        call     CORINFO_HELP_NEWSFAST
        lea      rdi, bword ptr [rbx+0x38]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Timer
        call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x38], rax
+       mov      r13, rax
        mov      r15, gword ptr [rbx+0x30]
-       mov      gword ptr [rbp-0x30], rbx
        mov      r12, gword ptr [rbx+0x38]
        test     r15, r15
-       je       G_M60364_IG15
+       je       G_M60364_IG14
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerQueueTimer
        call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x40], rax
+       mov      gword ptr [rbp-0x30], rax
        lea      rdi, bword ptr [rax+0x20]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
-       mov      r15, gword ptr [rbp-0x40]
+       mov      r15, gword ptr [rbp-0x30]
        lea      rdi, bword ptr [r15+0x28]
        mov      rsi, r12
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [r15+0x48], -1
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
        call     [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
        lea      rdi, bword ptr [r15+0x30]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, 0xD1FFAB1E      ; global ptr
-       test     byte  ptr [rax], 1
+       mov      rdi, 0xD1FFAB1E      ; global ptr
+       test     byte  ptr [rdi], 1
        je       G_M60364_IG13
-						;; size=240 bbWeight=0.50 PerfScore 32.92
+						;; size=235 bbWeight=0.50 PerfScore 32.04
 G_M60364_IG06:
-       mov      rax, 0xD1FFAB1E      ; data for System.Threading.TimerQueue:<Instances>k__BackingField
-       mov      r12, gword ptr [rax]
-       mov      gword ptr [rbp-0x48], r12
+       mov      rdi, 0xD1FFAB1E      ; data for System.Threading.TimerQueue:<Instances>k__BackingField
+       mov      r12, gword ptr [rdi]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=27 bbWeight=0.50 PerfScore 1.75
+       call     rax
+       add      rax, 76
+       mov      ecx, dword ptr [rax+0x10]
+       lea      edx, [rcx-0x01]
+       mov      dword ptr [rax+0x10], edx
+       movzx    rax, cx
+       test     eax, eax
+       je       SHORT G_M60364_IG07
+       sar      ecx, 16
+       jmp      SHORT G_M60364_IG08
+						;; size=60 bbWeight=0.50 PerfScore 6.75
 G_M60364_IG07:
-       call     rax ; Interop+Sys:SchedGetCpu():int
-       mov      eax, eax
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       mov      ecx, eax
+						;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M60364_IG08:
+       mov      eax, ecx
        mov      rdx, 0xD1FFAB1E      ; data for System.Threading.TimerQueue:<Instances>k__BackingField
        mov      rdx, gword ptr [rdx]
        mov      edi, dword ptr [rdx+0x08]
-       cqo      
-       idiv     rdx:rax, rdi
-       mov      r12, gword ptr [rbp-0x48]
+       xor      edx, edx
+       div      rdx:rax, rdi
        mov      edi, dword ptr [r12+0x08]
        cmp      rdx, rdi
-       jae      G_M60364_IG17
+       jae      G_M60364_IG16
        mov      rsi, gword ptr [r12+8*rdx+0x10]
-       mov      r15, gword ptr [rbp-0x40]
        lea      rdi, bword ptr [r15+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerHolder
        call     CORINFO_HELP_NEWFAST
-       mov      rbx, rax
-       lea      rdi, bword ptr [rbx+0x08]
+       mov      r12, rax
+       lea      rdi, bword ptr [r12+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
-       mov      r13, gword ptr [rbp-0x38]
        lea      rdi, bword ptr [r13+0x08]
-       mov      rsi, rbx
+       mov      rsi, r12
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rbx, gword ptr [rbp-0x30]
        lea      rdi, bword ptr [rbx+0x28]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
-       mov      r12, gword ptr [rbx+0x28]
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rdi], 0
-       jne      G_M60364_IG14
-						;; size=146 bbWeight=0.50 PerfScore 49.88
-G_M60364_IG08:
-       mov      edi, -1
+       mov      rdi, gword ptr [rbx+0x28]
+       mov      esi, -1
        cmp      byte  ptr [rbx+0x4B], 0
-       mov      edx, edi
+       mov      edx, esi
        cmovne   edx, r14d
-       mov      rdi, r12
        mov      esi, r14d
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Timer:Change(int,int):ubyte:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Threading.Timer:Change(int,int):ubyte:this
        jmp      SHORT G_M60364_IG12
-						;; size=37 bbWeight=0.50 PerfScore 6.25
+						;; size=144 bbWeight=0.50 PerfScore 46.75
 G_M60364_IG09:
        mov      rdi, gword ptr [rbx+0x28]
        test     rdi, rdi
        je       SHORT G_M60364_IG10
        xor      rax, rax
        mov      gword ptr [rbx+0x38], rax
-       mov      r13, gword ptr [rdi+0x08]
-       mov      rdi, gword ptr [r13+0x08]
+       mov      r14, gword ptr [rdi+0x08]
+       mov      rdi, gword ptr [r14+0x08]
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.TimerQueueTimer:Dispose():this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Threading.TimerQueueTimer:Dispose():this
-       mov      rdi, r13
+       mov      rdi, r14
        call     System.GC:_SuppressFinalize(System.Object)
        xor      rdi, rdi
        mov      gword ptr [rbx+0x28], rdi
 						;; size=51 bbWeight=0.50 PerfScore 8.62
 G_M60364_IG10:
        mov      byte  ptr [rbx+0x48], r15b
        jmp      SHORT G_M60364_IG12
 						;; size=6 bbWeight=0.50 PerfScore 1.50
 G_M60364_IG11:
        mov      byte  ptr [rbx+0x4A], r15b
 						;; size=4 bbWeight=0.50 PerfScore 0.50
 G_M60364_IG12:
-       add      rsp, 40
+       add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 G_M60364_IG13:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerQueue
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M60364_IG06
 						;; size=20 bbWeight=0 PerfScore 0.00
 G_M60364_IG14:
-       call     CORINFO_HELP_POLL_GC
-       jmp      G_M60364_IG08
-						;; size=10 bbWeight=0 PerfScore 0.00
-G_M60364_IG15:
        mov      edi, 0x9B3
        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_M60364_IG16:
+G_M60364_IG15:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowObjectDisposedException(System.Object)
        call     [rax]System.ThrowHelper:ThrowObjectDisposedException(System.Object)
        int3     
 						;; size=16 bbWeight=0 PerfScore 0.00
-G_M60364_IG17:
+G_M60364_IG16:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 RWD00  	dq	41DFFFFFFFC00000h, 41DFFFFFFFC00000h
 RWD16  	dq	7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
 
 
-; Total bytes of code 820, prolog size 22, PerfScore 149.96, instruction count 187, allocated bytes for code 820 (MethodHash=aa721433) for method System.Timers.Timer:set_Enabled(ubyte):this (FullOpts)
+; Total bytes of code 807, prolog size 16, PerfScore 146.21, instruction count 187, allocated bytes for code 807 (MethodHash=aa721433) for method System.Timers.Timer:set_Enabled(ubyte):this (FullOpts)
-12 (-11.65 % of base) - System.Net.Http.HttpEnvironmentProxyCredentials:GetCredential(System.Uri,System.String):System.Net.NetworkCredential:this
 ; Assembly listing for method System.Net.Http.HttpEnvironmentProxyCredentials:GetCredential(System.Uri,System.String):System.Net.NetworkCredential:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  6,  4   )     ref  ->  r15         this class-hnd single-def <System.Net.Http.HttpEnvironmentProxyCredentials>
-;  V01 arg1         [V01,T00] (  6,  4.50)     ref  ->  rbx         class-hnd single-def <System.Uri>
+;  V00 this         [V00,T00] (  6,  4   )     ref  ->  rbx         this class-hnd single-def <System.Net.Http.HttpEnvironmentProxyCredentials>
+;  V01 arg1         [V01,T01] (  5,  4   )     ref  ->  r15         class-hnd single-def <System.Uri>
 ;* V02 arg2         [V02    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.String>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1         [V04,T03] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V05 cse0         [V05,T02] (  3,  1.50)    long  ->  r14         "CSE #02: moderate"
+;* V04 tmp1         [V04,T02] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 0
 
 G_M41623_IG01:
        push     rbp
        push     r15
-       push     r14
        push     rbx
-       push     rax
-       lea      rbp, [rsp+0x20]
-       mov      r15, rdi
-       mov      rbx, rsi
-						;; size=18 bbWeight=1 PerfScore 6.00
+       lea      rbp, [rsp+0x10]
+       mov      rbx, rdi
+       mov      r15, rsi
+						;; size=15 bbWeight=1 PerfScore 4.00
 G_M41623_IG02:
-       test     rbx, rbx
+       test     r15, r15
        je       SHORT G_M41623_IG07
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M41623_IG03:
-       mov      rsi, gword ptr [r15+0x18]
-       mov      rdi, rbx
-       mov      rax, qword ptr [rbx]
-       mov      r14, qword ptr [rax+0x40]
-       call     [r14+0x10]System.Object:Equals(System.Object):ubyte:this
+       mov      rsi, gword ptr [rbx+0x18]
+       mov      rdi, r15
+       mov      rax, 0xD1FFAB1E      ; code for System.Uri:Equals(System.Uri):ubyte:this
+       call     [rax]System.Uri:Equals(System.Uri):ubyte:this
        test     eax, eax
        je       SHORT G_M41623_IG05
-       mov      rax, gword ptr [r15+0x08]
-						;; size=26 bbWeight=0.50 PerfScore 6.25
+       mov      rax, gword ptr [rbx+0x08]
+						;; size=27 bbWeight=0.50 PerfScore 4.38
 G_M41623_IG04:
-       add      rsp, 8
        pop      rbx
-       pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=11 bbWeight=0.50 PerfScore 1.62
+						;; size=5 bbWeight=0.50 PerfScore 1.25
 G_M41623_IG05:
-       mov      rsi, gword ptr [r15+0x20]
-       mov      rdi, rbx
-       call     [r14+0x10]System.Object:Equals(System.Object):ubyte:this
+       mov      rsi, gword ptr [rbx+0x20]
+       mov      rdi, r15
+       mov      rax, 0xD1FFAB1E      ; code for System.Uri:Equals(System.Uri):ubyte:this
+       call     [rax]System.Uri:Equals(System.Uri):ubyte:this
        test     eax, eax
        je       SHORT G_M41623_IG07
-       mov      rax, gword ptr [r15+0x10]
-						;; size=19 bbWeight=0.50 PerfScore 4.25
+       mov      rax, gword ptr [rbx+0x10]
+						;; size=27 bbWeight=0.50 PerfScore 4.38
 G_M41623_IG06:
-       add      rsp, 8
        pop      rbx
-       pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=11 bbWeight=0.50 PerfScore 1.62
+						;; size=5 bbWeight=0.50 PerfScore 1.25
 G_M41623_IG07:
        xor      rax, rax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M41623_IG08:
-       add      rsp, 8
        pop      rbx
-       pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=11 bbWeight=0.50 PerfScore 1.62
+						;; size=5 bbWeight=0.50 PerfScore 1.25
 
-; Total bytes of code 103, prolog size 12, PerfScore 22.75, instruction count 43, allocated bytes for code 103 (MethodHash=04005d68) for method System.Net.Http.HttpEnvironmentProxyCredentials:GetCredential(System.Uri,System.String):System.Net.NetworkCredential:this (FullOpts)
+; Total bytes of code 91, prolog size 9, PerfScore 17.88, instruction count 35, allocated bytes for code 91 (MethodHash=04005d68) for method System.Net.Http.HttpEnvironmentProxyCredentials:GetCredential(System.Uri,System.String):System.Net.NetworkCredential:this (FullOpts)

@MihuBot
Copy link
Owner Author

MihuBot commented Jun 15, 2024

@MihaZupan

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

2 participants