MihuBot / runtime-utils

0 stars 0 forks source link

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

Open MihuBot opened 2 months ago

MihuBot commented 2 months ago

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 commented 2 months ago

Standard_D8ads_v5

MihuBot commented 2 months ago

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 ```diff ; 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 ; V01 arg1 [V01,T07] ( 12, 7.50) ref -> r15 class-hnd single-def ; V02 loc0 [V02,T00] ( 26, 48 ) ref -> r14 class-hnd exact single-def -; V03 loc1 [V03,T15] ( 3, 2.50) int -> r13 single-def -; V04 loc2 [V04,T16] ( 4, 2 ) ref -> r15 class-hnd single-def +; V03 loc1 [V03,T13] ( 3, 2.50) int -> r13 single-def +; V04 loc2 [V04,T14] ( 4, 2 ) ref -> r15 class-hnd single-def ; V05 loc3 [V05,T01] ( 14, 19 ) ref -> [rbp-0x28] do-not-enreg[M] class-hnd EH-live ; V06 loc4 [V06,T08] ( 3, 8 ) ref -> rax class-hnd ; V07 loc5 [V07,T09] ( 3, 8 ) ref -> rax class-hnd ;# 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" ;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" ;* V11 tmp3 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" ;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" -; V13 tmp5 [V13,T25] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" -; V14 tmp6 [V14,T19] ( 2, 2 ) ref -> rsi class-hnd exact single-def "Inlining Arg" -; V15 tmp7 [V15,T22] ( 3, 1.50) ref -> rdi class-hnd single-def "Inline stloc first use temp" -; 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" +; V14 tmp6 [V14,T17] ( 2, 2 ) ref -> rsi class-hnd exact single-def "Inlining Arg" +; V15 tmp7 [V15,T20] ( 3, 1.50) ref -> rdi class-hnd single-def "Inline stloc first use temp" +; 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" -; V18 tmp10 [V18,T20] ( 2, 2 ) ref -> rsi class-hnd exact single-def "Inlining Arg" -; V19 tmp11 [V19,T23] ( 3, 1.50) ref -> rdi class-hnd single-def "Inline stloc first use temp" -; 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" +; V19 tmp11 [V19,T21] ( 3, 1.50) ref -> rdi class-hnd single-def "Inline stloc first use temp" +; 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" ; V22 tmp14 [V22,T05] ( 3, 10 ) ref -> rdi class-hnd "Inline stloc first use temp" ; 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" ; 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 ```diff ; 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 ; V01 arg1 [V01,T00] ( 6, 4.50) ref -> rbx class-hnd single-def -; 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" ; V06 tmp3 [V06,T03] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" ;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" ; V09 tmp6 [V09,T04] ( 3, 3 ) ref -> rbx class-hnd single-def "Inlining Arg" -; 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 ```diff ; 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 ; V01 arg1 [V01,T00] ( 6, 4.50) ref -> rbx class-hnd single-def -; 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" ; V06 tmp3 [V06,T03] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" ;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" ; V09 tmp6 [V09,T04] ( 3, 3 ) ref -> rbx class-hnd single-def "Inlining Arg" -; 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 ```diff ; 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 ; V01 arg1 [V01,T01] ( 6, 4.25) ref -> rsi class-hnd single-def -; V02 loc0 [V02,T05] ( 4, 2 ) ref -> r15 class-hnd exact +; V02 loc0 [V02,T04] ( 4, 2 ) ref -> r15 class-hnd exact ;# 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" -; 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" ; V07 tmp4 [V07,T03] ( 5, 5 ) ref -> rsi class-hnd exact single-def "Inlining Arg" -; 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 ```diff ; 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 -; V01 arg1 [V01,T03] ( 4, 3.25) ref -> rsi class-hnd single-def -; V02 arg2 [V02,T04] ( 4, 3.25) ref -> rbx class-hnd single-def +; V01 arg1 [V01,T02] ( 4, 3.25) ref -> rsi class-hnd single-def +; V02 arg2 [V02,T03] ( 4, 3.25) ref -> rbx class-hnd single-def ;# 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 commented 2 months ago

Top method improvements

-1092 (-80.65 % of base) - System.Uri:Equals(System.Object):ubyte:this ```diff ; 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 -; V01 arg1 [V01,T07] ( 7, 5 ) ref -> r15 class-hnd single-def -; V02 loc0 [V02,T04] ( 24, 12 ) ref -> r14 ld-addr-op class-hnd -; V03 loc1 [V03,T45] ( 3, 1.50) ref -> r15 class-hnd exact single-def -; V04 loc2 [V04,T46] ( 3, 1.50) ref -> r13 class-hnd exact single-def -; V05 loc3 [V05,T25] ( 4, 2 ) int -> r12 -;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def -; V07 loc5 [V07,T44] ( 3, 1.50) ref -> rdi class-hnd exact -; 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 -;* V13 loc11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd -;* V14 loc12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd -;# 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" -;* V18 tmp3 [V18 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" -; V19 tmp4 [V19,T29] ( 2, 2 ) ref -> r15 class-hnd exact single-def "impAppendStmt" -; V20 tmp5 [V20,T30] ( 2, 2 ) ref -> r13 class-hnd exact single-def "impAppendStmt" -;* 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" -; V27 tmp12 [V27,T20] ( 4, 2 ) ref -> [rbp-0x40] -; V28 tmp13 [V28,T32] ( 2, 2 ) ref -> r15 class-hnd exact single-def "dup spill" -;* 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" -; V37 tmp22 [V37,T17] ( 3, 3 ) ref -> [rbp-0x48] class-hnd exact spill-single-def "dup spill" -;* V38 tmp23 [V38 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" -;* V39 tmp24 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" -;* V40 tmp25 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling qmarkNull" -; V41 tmp26 [V41,T33] ( 2, 2 ) ref -> r8 class-hnd exact single-def "dup spill" -; 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" -; V45 tmp30 [V45 ] ( 2, 1 ) struct ( 8) [rbp-0x38] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; 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" -; V48 tmp33 [V48,T34] ( 2, 2 ) ref -> rdi class-hnd exact single-def "dup spill" -; V49 tmp34 [V49,T23] ( 4, 2 ) ref -> rdi -;* V50 tmp35 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" -; V51 tmp36 [V51,T35] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" -; V52 tmp37 [V52,T24] ( 4, 2 ) ref -> rax -;* V53 tmp38 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" -; V54 tmp39 [V54,T36] ( 2, 2 ) ref -> r15 class-hnd exact single-def "dup spill" -; V55 tmp40 [V55,T12] ( 8, 4 ) ref -> r15 -;* V56 tmp41 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" -; V57 tmp42 [V57,T37] ( 2, 2 ) ref -> rsi class-hnd exact single-def "dup spill" -; 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" -; V62 tmp47 [V62,T39] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" -;* V63 tmp48 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" -; V64 tmp49 [V64,T40] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" -;* V65 tmp50 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" -;* V66 tmp51 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" -; 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" -; V69 tmp54 [V69,T11] ( 5, 5 ) ref -> rsi class-hnd exact single-def "Inlining Arg" -; 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" -; V72 tmp57 [V72,T43] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" -;* V73 tmp58 [V73 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" -; 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 +; V01 arg1 [V01,T00] ( 7, 5 ) ref -> rbx class-hnd single-def +; V02 loc0 [V02,T02] ( 5, 2.50) ref -> rax ld-addr-op class-hnd +; V03 loc1 [V03,T06] ( 3, 1.50) ref -> rdi class-hnd exact +;# 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" +; V06 tmp2 [V06,T04] ( 2, 2 ) ref -> r8 class-hnd exact single-def "dup spill" +; 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" +; V10 tmp6 [V10 ] ( 2, 1 ) struct ( 8) [rbp-0x20] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; 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" +; 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 ```diff ; 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 +; V00 this [V00,T00] ( 24, 13 ) ref -> rbx this class-hnd single-def ; 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" -; V05 tmp2 [V05,T05] ( 3, 3 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" +; V04 tmp1 [V04,T12] ( 2, 2 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" +; V05 tmp2 [V05,T06] ( 3, 3 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" -; 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" ;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref single-def ;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" -; V16 tmp13 [V16,T06] ( 3, 3 ) ref -> r13 class-hnd exact single-def "Inlining Arg" +; V16 tmp13 [V16,T07] ( 3, 3 ) ref -> r14 class-hnd exact single-def "Inlining Arg" ;* 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" -; V19 tmp16 [V19,T12] ( 2, 2 ) ref -> r12 class-hnd single-def "Inlining Arg" -;* 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" -; V25 tmp22 [V25,T08] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" -; V26 tmp23 [V26,T09] ( 3, 3 ) ref -> [rbp-0x48] class-hnd exact spill-single-def "impAppendStmt" -; V27 tmp24 [V27,T13] ( 2, 2 ) long -> rax "impAppendStmt" +; V18 tmp15 [V18,T08] ( 3, 3 ) ref -> r15 class-hnd exact single-def "Inlining Arg" +; V19 tmp16 [V19,T13] ( 2, 2 ) ref -> r12 class-hnd single-def "Inlining Arg" +;* 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" +; V25 tmp22 [V25,T09] ( 3, 3 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" +; V26 tmp23 [V26,T10] ( 3, 3 ) ref -> r12 class-hnd exact single-def "impAppendStmt" +;* 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" -; 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" +; 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:k__BackingField - mov r12, gword ptr [rax] - mov gword ptr [rbp-0x48], r12 + mov rdi, 0xD1FFAB1E ; data for System.Threading.TimerQueue: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: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 ```diff ; 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 -; V01 arg1 [V01,T00] ( 6, 4.50) ref -> rbx class-hnd single-def +; V00 this [V00,T00] ( 6, 4 ) ref -> rbx this class-hnd single-def +; V01 arg1 [V01,T01] ( 5, 4 ) ref -> r15 class-hnd single-def ;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def ;# 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 commented 2 months ago

@MihaZupan