MihuBot / runtime-utils

0 stars 0 forks source link

[X64] [MichalPetryka] Return type from exact method context for call returns #337

Open MihuBot opened 7 months ago

MihuBot commented 7 months ago

Build completed in 29 minutes. https://github.com/dotnet/runtime/pull/100041

Diffs

Found 311 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 38723597
Total bytes of diff: 38723586
Total bytes of delta: -11 (-0.00 % of base)
Total relative delta: -0.07
    diff is an improvement.
    relative diff is an improvement.

Top file improvements (bytes):
          -6 : System.Private.Xml.dasm (-0.00 % of base)
          -3 : System.Private.DataContractSerialization.dasm (-0.00 % of base)
          -2 : System.Runtime.Caching.dasm (-0.00 % of base)

3 total files with Code Size differences (3 improved, 0 regressed), 253 unchanged.

Top method regressions (bytes):
           2 (0.13 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltArgument(System.Xml.Xsl.XmlQueryType,System.Object,System.Type):System.Object (FullOpts)

Top method improvements (bytes):
          -8 (-5.26 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Runtime.XsltLibrary:FormatMessage(System.String,System.Collections.Generic.IList`1[System.String]):System.String:this (FullOpts)
          -3 (-0.26 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract:Equals(System.Object,System.Collections.Generic.HashSet`1[System.Runtime.Serialization.DataContracts.DataContractPairKey]):ubyte:this (FullOpts)
          -2 (-1.59 % of base) : System.Runtime.Caching.dasm - System.Runtime.Caching.MemoryCache:get_AllSRefTargets():System.Object[]:this (FullOpts)

Top method regressions (percentages):
           2 (0.13 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltArgument(System.Xml.Xsl.XmlQueryType,System.Object,System.Type):System.Object (FullOpts)

Top method improvements (percentages):
          -8 (-5.26 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Runtime.XsltLibrary:FormatMessage(System.String,System.Collections.Generic.IList`1[System.String]):System.String:this (FullOpts)
          -2 (-1.59 % of base) : System.Runtime.Caching.dasm - System.Runtime.Caching.MemoryCache:get_AllSRefTargets():System.Object[]:this (FullOpts)
          -3 (-0.26 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract:Equals(System.Object,System.Collections.Generic.HashSet`1[System.Runtime.Serialization.DataContracts.DataContractPairKey]):ubyte:this (FullOpts)

4 total methods with Code Size differences (3 improved, 1 regressed), 239707 unchanged.

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

Artifacts:

MihuBot commented 7 months ago

Top method regressions

2 (0.13 % of base) - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltArgument(System.Xml.Xsl.XmlQueryType,System.Object,System.Type):System.Object ```diff ; Assembly listing for method System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltArgument(System.Xml.Xsl.XmlQueryType,System.Object,System.Type):System.Object (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 17 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ; -; V00 arg0 [V00,T05] ( 4, 4 ) ref -> rdi class-hnd single-def +; V00 arg0 [V00,T06] ( 4, 4 ) ref -> rdi class-hnd single-def ; V01 arg1 [V01,T02] ( 21, 11.50) ref -> rbx class-hnd -; V02 arg2 [V02,T04] ( 10, 5 ) ref -> r15 class-hnd single-def +; V02 arg2 [V02,T05] ( 10, 5 ) ref -> r15 class-hnd single-def ; V03 loc0 [V03,T07] ( 6, 4 ) int -> rax ; V04 loc1 [V04,T03] ( 5, 9.50) ref -> r15 class-hnd single-def -; V05 loc2 [V05,T06] ( 3, 5 ) ref -> rbx class-hnd exact single-def -; V06 loc3 [V06,T00] ( 6, 20.50) int -> r14 +; V05 loc2 [V05,T04] ( 4, 9 ) ref -> rbx class-hnd exact single-def +;* V06 loc3 [V06,T46] ( 0, 0 ) int -> zero-ref ;* V07 loc4 [V07,T45] ( 0, 0 ) ref -> zero-ref class-hnd single-def ; V08 loc5 [V08,T14] ( 5, 2.50) ref -> r15 class-hnd single-def ; V09 loc6 [V09,T16] ( 4, 2 ) ref -> rax class-hnd single-def ;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V11 tmp1 [V11,T13] ( 3, 3 ) ref -> rbx class-hnd exact single-def "Single-def Box Helper" ; V12 tmp2 [V12,T08] ( 4, 4 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" ; V13 tmp3 [V13,T09] ( 4, 4 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" -; V14 tmp4 [V14,T48] ( 3, 0 ) ref -> r14 class-hnd exact single-def "dup spill" -; V15 tmp5 [V15,T52] ( 2, 0 ) ref -> rbx class-hnd exact single-def "impAppendStmt" -; V16 tmp6 [V16,T53] ( 2, 0 ) ref -> rax class-hnd exact single-def "Strict ordering of exceptions for Array store" -; V17 tmp7 [V17,T49] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" -; V18 tmp8 [V18,T10] ( 4, 4 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" -; V19 tmp9 [V19,T19] ( 3, 2 ) ref -> r14 class-hnd exact single-def "Inlining Arg" -; V20 tmp10 [V20 ] ( 8, 8 ) struct (16) [rbp-0x30] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op "NewObj constructor temp" -; V21 tmp11 [V21 ] ( 13, 6.50) struct (56) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V22 tmp12 [V22,T50] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Single-def Box Helper" -; V23 tmp13 [V23,T54] ( 2, 0 ) ref -> r15 class-hnd exact single-def "impImportAndPushBox" -; V24 tmp14 [V24,T51] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" -;* V25 tmp15 [V25 ] ( 0, 0 ) struct (56) zero-ref do-not-enreg[SF] "Inlining Arg" -;* V26 tmp16 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" -;* V27 tmp17 [V27 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V14 tmp4 [V14,T49] ( 3, 0 ) ref -> r14 class-hnd exact single-def "dup spill" +; V15 tmp5 [V15,T53] ( 2, 0 ) ref -> rbx class-hnd exact single-def "impAppendStmt" +; V16 tmp6 [V16,T54] ( 2, 0 ) ref -> rax class-hnd exact single-def "Strict ordering of exceptions for Array store" +; V17 tmp7 [V17,T50] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" +; V18 tmp8 [V18,T01] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" +; V19 tmp9 [V19,T10] ( 4, 4 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" +; V20 tmp10 [V20,T19] ( 3, 2 ) ref -> r14 class-hnd exact single-def "Inlining Arg" +; V21 tmp11 [V21 ] ( 8, 8 ) struct (16) [rbp-0x30] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op "NewObj constructor temp" +; V22 tmp12 [V22 ] ( 13, 6.50) struct (56) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V23 tmp13 [V23,T51] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Single-def Box Helper" +; V24 tmp14 [V24,T55] ( 2, 0 ) ref -> r15 class-hnd exact single-def "impImportAndPushBox" +; V25 tmp15 [V25,T52] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" +;* V26 tmp16 [V26 ] ( 0, 0 ) struct (56) zero-ref do-not-enreg[SF] "Inlining Arg" +;* V27 tmp17 [V27 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" ;* V28 tmp18 [V28 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V29 tmp19 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V30 tmp20 [V30 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V31 tmp21 [V31 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V32 tmp22 [V32 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V33 tmp23 [V33,T23] ( 2, 2 ) long -> rsi "impAppendStmt" -;* V34 tmp24 [V34 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V35 tmp25 [V35 ] ( 0, 0 ) struct (16) zero-ref -;* V36 tmp26 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" -;* V37 tmp27 [V37 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V33 tmp23 [V33 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V34 tmp24 [V34,T23] ( 2, 2 ) long -> rsi "impAppendStmt" +;* V35 tmp25 [V35 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V36 tmp26 [V36 ] ( 0, 0 ) struct (16) zero-ref +;* V37 tmp27 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ;* V38 tmp28 [V38 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V39 tmp29 [V39,T37] ( 2, 1 ) int -> rsi "Inline stloc first use temp" -;* V40 tmp30 [V40,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V41 tmp31 [V41 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan for CreateSpan" +;* V39 tmp29 [V39 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V40 tmp30 [V40,T37] ( 2, 1 ) int -> rsi "Inline stloc first use temp" +;* V41 tmp31 [V41,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V42 tmp32 [V42 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan for CreateSpan" -; V43 tmp33 [V43,T25] ( 3, 1.50) int -> rsi "Inline stloc first use temp" -; V44 tmp34 [V44,T26] ( 3, 1.50) int -> r10 "Inline stloc first use temp" -;* V45 tmp35 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V43 tmp33 [V43 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan for CreateSpan" +; V44 tmp34 [V44,T25] ( 3, 1.50) int -> rsi "Inline stloc first use temp" +; V45 tmp35 [V45,T26] ( 3, 1.50) int -> r10 "Inline stloc first use temp" ;* V46 tmp36 [V46 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V47 tmp37 [V47 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V48 tmp38 [V48,T20] ( 2, 2 ) ref -> rax class-hnd single-def "Inlining Arg" -; V49 tmp39 [V49,T21] ( 2, 2 ) ref -> rax class-hnd single-def "Inlining Arg" -; V50 tmp40 [V50,T22] ( 2, 2 ) ref -> rax class-hnd single-def "Inlining Arg" -; V51 tmp41 [V51 ] ( 6, 4 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V20._dt (fldOffset=0x0)" P-DEP -; V52 tmp42 [V52 ] ( 4, 3 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V20._extra (fldOffset=0x8)" P-DEP -; V53 tmp43 [V53,T39] ( 2, 1 ) long -> rsi "field V26._dateData (fldOffset=0x0)" P-INDEP -; V54 tmp44 [V54,T17] ( 4, 2 ) byref -> r10 "field V35._reference (fldOffset=0x0)" P-INDEP -;* V55 tmp45 [V55,T40] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP -;* V56 tmp46 [V56 ] ( 0, 0 ) byref -> zero-ref single-def "field V36._reference (fldOffset=0x0)" P-INDEP -;* V57 tmp47 [V57 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP -; V58 tmp48 [V58,T35] ( 2, 1 ) byref -> r10 single-def "field V41._reference (fldOffset=0x0)" P-INDEP -;* V59 tmp49 [V59,T46] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP -; V60 tmp50 [V60,T36] ( 2, 1 ) byref -> r10 single-def "field V42._reference (fldOffset=0x0)" P-INDEP -;* V61 tmp51 [V61,T47] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP -; V62 tmp52 [V62,T41] ( 2, 1 ) int -> rbx "V25.[008..012)" -; V63 tmp53 [V63,T11] ( 7, 3.50) int -> rsi "V25.[012..016)" -; V64 tmp54 [V64,T15] ( 5, 2.50) int -> rdi "V25.[016..020)" -; V65 tmp55 [V65,T18] ( 4, 2 ) int -> rax "V25.[020..024)" -; V66 tmp56 [V66,T27] ( 3, 1.50) int -> rcx "V25.[024..028)" -; V67 tmp57 [V67,T28] ( 3, 1.50) int -> rdx "V25.[028..032)" -; V68 tmp58 [V68,T29] ( 3, 1.50) int -> r8 "V25.[032..036)" -; V69 tmp59 [V69,T30] ( 3, 1.50) int -> r9 "V25.[036..040)" -; V70 tmp60 [V70,T42] ( 2, 1 ) int -> r15 "V25.[040..044)" -; V71 tmp61 [V71,T43] ( 2, 1 ) int -> r14 "V25.[044..048)" -; V72 tmp62 [V72,T44] ( 2, 1 ) int -> r13 "V25.[048..052)" -; V73 tmp63 [V73,T55] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V74 tmp64 [V74,T24] ( 2, 2 ) long -> rsi "argument with side effect" -; V75 tmp65 [V75,T01] ( 2, 16 ) ref -> rdx "argument with side effect" +;* V47 tmp37 [V47 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V48 tmp38 [V48 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V49 tmp39 [V49,T20] ( 2, 2 ) ref -> rax class-hnd single-def "Inlining Arg" +; V50 tmp40 [V50,T21] ( 2, 2 ) ref -> rax class-hnd single-def "Inlining Arg" +; V51 tmp41 [V51,T22] ( 2, 2 ) ref -> rax class-hnd single-def "Inlining Arg" +; V52 tmp42 [V52 ] ( 6, 4 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V21._dt (fldOffset=0x0)" P-DEP +; V53 tmp43 [V53 ] ( 4, 3 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V21._extra (fldOffset=0x8)" P-DEP +; V54 tmp44 [V54,T39] ( 2, 1 ) long -> rsi "field V27._dateData (fldOffset=0x0)" P-INDEP +; V55 tmp45 [V55,T17] ( 4, 2 ) byref -> r10 "field V36._reference (fldOffset=0x0)" P-INDEP +;* V56 tmp46 [V56,T40] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP +;* V57 tmp47 [V57 ] ( 0, 0 ) byref -> zero-ref single-def "field V37._reference (fldOffset=0x0)" P-INDEP +;* V58 tmp48 [V58 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP +; V59 tmp49 [V59,T35] ( 2, 1 ) byref -> r10 single-def "field V42._reference (fldOffset=0x0)" P-INDEP +;* V60 tmp50 [V60,T47] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP +; V61 tmp51 [V61,T36] ( 2, 1 ) byref -> r10 single-def "field V43._reference (fldOffset=0x0)" P-INDEP +;* V62 tmp52 [V62,T48] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP +; V63 tmp53 [V63,T41] ( 2, 1 ) int -> rbx "V26.[008..012)" +; V64 tmp54 [V64,T11] ( 7, 3.50) int -> rsi "V26.[012..016)" +; V65 tmp55 [V65,T15] ( 5, 2.50) int -> rdi "V26.[016..020)" +; V66 tmp56 [V66,T18] ( 4, 2 ) int -> rax "V26.[020..024)" +; V67 tmp57 [V67,T27] ( 3, 1.50) int -> rcx "V26.[024..028)" +; V68 tmp58 [V68,T28] ( 3, 1.50) int -> rdx "V26.[028..032)" +; V69 tmp59 [V69,T29] ( 3, 1.50) int -> r8 "V26.[032..036)" +; V70 tmp60 [V70,T30] ( 3, 1.50) int -> r9 "V26.[036..040)" +; V71 tmp61 [V71,T42] ( 2, 1 ) int -> r15 "V26.[040..044)" +; V72 tmp62 [V72,T43] ( 2, 1 ) int -> r14 "V26.[044..048)" +; V73 tmp63 [V73,T44] ( 2, 1 ) int -> r13 "V26.[048..052)" +; V74 tmp64 [V74,T56] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V75 tmp65 [V75,T24] ( 2, 2 ) long -> rsi "argument with side effect" ; V76 cse0 [V76,T31] ( 3, 1.50) int -> rdi "CSE #04: moderate" ; V77 cse1 [V77,T32] ( 3, 1.50) long -> r14 "CSE #08: moderate" ; V78 cse2 [V78,T33] ( 3, 1.50) int -> rdi "CSE #01: moderate" -; V79 rat0 [V79,T12] ( 4, 3.50) ref -> r14 "replacement local" -; V80 rat1 [V80,T34] ( 3, 1 ) long -> rdi "CSE for expectedClsNode" +; V79 rat0 [V79,T00] ( 7, 24.50) long -> r14 "Widened IV V06" +; V80 rat1 [V80,T12] ( 4, 3.50) ref -> r14 "replacement local" +; V81 rat2 [V81,T34] ( 3, 1 ) long -> rdi "CSE for expectedClsNode" ; ; Lcl frame size = 80 G_M4320_IG01: push rbp push r15 push r14 push r13 push rbx sub rsp, 80 lea rbp, [rsp+0x70] xor eax, eax mov qword ptr [rbp-0x68], rax vxorps xmm8, xmm8, xmm8 vmovdqu ymmword ptr [rbp-0x60], ymm8 vmovdqa xmmword ptr [rbp-0x40], xmm8 mov rbx, rsi mov r15, rdx ;; size=44 bbWeight=1 PerfScore 11.83 G_M4320_IG02: mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x58] call [rax+0x38]System.Xml.Xsl.XmlQueryType:get_TypeCode():int:this cmp eax, 2 jg SHORT G_M4320_IG04 ;; size=15 bbWeight=1 PerfScore 8.25 G_M4320_IG03: cmp eax, 1 je G_M4320_IG17 cmp eax, 2 jne G_M4320_IG21 mov rax, 0xD1FFAB1E ; 'System.Xml.XPath.XPathNodeIterator' cmp r15, rax jne G_M4320_IG14 jmp G_M4320_IG13 ;; size=42 bbWeight=0.50 PerfScore 3.00 G_M4320_IG04: cmp eax, 12 je SHORT G_M4320_IG05 cmp eax, 16 jne G_M4320_IG21 mov rdi, 0xD1FFAB1E ; 'System.Double' cmp r15, rdi je G_M4320_IG21 jmp G_M4320_IG12 ;; size=38 bbWeight=0.50 PerfScore 3.00 G_M4320_IG05: mov rdi, 0xD1FFAB1E ; 'System.DateTime' cmp r15, rdi jne G_M4320_IG21 mov r14, rbx test r14, r14 je SHORT G_M4320_IG07 ;; size=27 bbWeight=0.50 PerfScore 1.50 G_M4320_IG06: mov rdi, 0xD1FFAB1E ; System.String cmp qword ptr [r14], rdi jne G_M4320_IG24 ;; size=19 bbWeight=0.25 PerfScore 1.06 G_M4320_IG07: vxorps xmm0, xmm0, xmm0 vmovups xmmword ptr [rbp-0x30], xmm0 vxorps ymm0, ymm0, ymm0 vmovdqu ymmword ptr [rbp-0x68], ymm0 vmovdqu ymmword ptr [rbp-0x50], ymm0 lea rdi, [rbp-0x68] mov rsi, r14 mov edx, 255 mov rax, 0xD1FFAB1E ; code for System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this call [rax]System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this test eax, eax je G_M4320_IG25 mov ebx, dword ptr [rbp-0x60] mov esi, dword ptr [rbp-0x5C] mov edi, dword ptr [rbp-0x58] mov eax, dword ptr [rbp-0x54] mov ecx, dword ptr [rbp-0x50] mov edx, dword ptr [rbp-0x4C] mov r8d, dword ptr [rbp-0x48] mov r9d, dword ptr [rbp-0x44] mov r15d, dword ptr [rbp-0x40] mov r14d, dword ptr [rbp-0x3C] mov r13d, dword ptr [rbp-0x38] mov r10d, esi sub r10d, 1 cmp r10d, 0x270E ja G_M4320_IG26 mov r10d, edi sub r10d, 1 cmp r10d, 11 ja G_M4320_IG26 test eax, eax jle G_M4320_IG26 test sil, 3 jne SHORT G_M4320_IG08 test sil, 15 je SHORT G_M4320_IG09 mov r10d, esi imul r10, r10, 0xD1FFAB1E shr r10, 35 imul r10d, r10d, 25 mov r11d, esi sub r11d, r10d jne SHORT G_M4320_IG09 ;; size=176 bbWeight=0.50 PerfScore 16.83 G_M4320_IG08: mov r10, 0xD1FFAB1E ; static handle jmp SHORT G_M4320_IG10 ;; size=12 bbWeight=0.50 PerfScore 1.12 G_M4320_IG09: mov r10, 0xD1FFAB1E ; static handle ;; size=10 bbWeight=0.50 PerfScore 0.12 G_M4320_IG10: cmp edi, 13 jae G_M4320_IG23 mov r11d, edi mov r11d, dword ptr [r10+4*r11] dec edi cmp edi, 13 jae G_M4320_IG23 mov edi, dword ptr [r10+4*rdi] sub r11d, edi cmp r11d, eax jb G_M4320_IG26 dec esi mov r10d, esi imul r10, r10, 0xD1FFAB1E shr r10, 37 imul esi, esi, 0x5B5 shr esi, 2 sub esi, r10d shr r10d, 2 add esi, r10d add esi, edi lea esi, [rsi+rax-0x01] mov rdi, 0xD1FFAB1E imul rsi, rdi cmp ecx, 24 jae G_M4320_IG27 cmp edx, 60 jae G_M4320_IG27 cmp r8d, 60 jae G_M4320_IG27 imul edi, ecx, 0xE10 imul eax, edx, 60 add edi, eax add edi, r8d imul rdi, rdi, 0xD1FFAB1E add rsi, rdi mov qword ptr [rbp-0x30], rsi test r9d, r9d je SHORT G_M4320_IG11 movsxd rsi, r9d lea rdi, [rbp-0x30] mov rax, 0xD1FFAB1E ; code for System.DateTime:AddTicks(long):System.DateTime:this call [rax]System.DateTime:AddTicks(long):System.DateTime:this mov qword ptr [rbp-0x30], rax ;; size=182 bbWeight=0.50 PerfScore 18.12 G_M4320_IG11: shl ebx, 24 shl r15d, 16 or ebx, r15d shl r14d, 8 or ebx, r14d or ebx, r13d mov dword ptr [rbp-0x28], ebx mov rdi, 0xD1FFAB1E ; System.DateTime call CORINFO_HELP_NEWSFAST mov rbx, rax mov rdi, qword ptr [rbp-0x30] mov esi, dword ptr [rbp-0x28] mov rax, 0xD1FFAB1E ; code for System.Xml.Schema.XsdDateTime:op_Implicit(System.Xml.Schema.XsdDateTime):System.DateTime call [rax]System.Xml.Schema.XsdDateTime:op_Implicit(System.Xml.Schema.XsdDateTime):System.DateTime mov qword ptr [rbx+0x08], rax jmp G_M4320_IG21 ;; size=69 bbWeight=0.50 PerfScore 6.50 G_M4320_IG12: mov rdx, 0xD1FFAB1E ; const ptr mov rdx, gword ptr [rdx] mov rdi, rbx mov rsi, r15 mov rax, 0xD1FFAB1E ; code for System.Convert:ChangeType(System.Object,System.Type,System.IFormatProvider):System.Object call [rax]System.Convert:ChangeType(System.Object,System.Type,System.IFormatProvider):System.Object mov rbx, rax jmp G_M4320_IG21 ;; size=39 bbWeight=0.50 PerfScore 4.12 G_M4320_IG13: mov rdi, 0xD1FFAB1E ; MS.Internal.Xml.XPath.XPathArrayIterator call CORINFO_HELP_NEWSFAST mov r15, rax mov rsi, rbx mov rdi, 0xD1FFAB1E ; System.Collections.IList mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTINTERFACE call [rax]CORINFO_HELP_CHKCASTINTERFACE mov dword ptr [r15+0x08], -1 lea rdi, bword ptr [r15+0x10] mov rsi, rax call CORINFO_HELP_ASSIGN_REF mov rbx, r15 jmp G_M4320_IG21 ;; size=71 bbWeight=0.50 PerfScore 5.12 G_M4320_IG14: mov rsi, 0xD1FFAB1E ; 'System.Xml.XPath.XPathNavigator[]' cmp r15, rsi jne G_M4320_IG21 mov rsi, rbx mov rdi, 0xD1FFAB1E ; System.Collections.Generic.IList`1[System.Xml.XPath.XPathNavigator] mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTINTERFACE call [rax]CORINFO_HELP_CHKCASTINTERFACE mov r15, rax mov rdi, r15 mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this call [r11]System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this movsxd rsi, eax mov rdi, 0xD1FFAB1E ; System.Xml.XPath.XPathNavigator[] call CORINFO_HELP_NEWARR_1_OBJ mov rbx, rax xor r14d, r14d mov rdi, r15 mov r11, 0xD1FFAB1E ; function address call [r11]System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this test eax, eax jle SHORT G_M4320_IG16 ;; size=107 bbWeight=0.50 PerfScore 7.88 G_M4320_IG15: mov rdi, r15 mov esi, r14d mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[System.__Canon]:get_Item(int):System.__Canon:this call [r11]System.Collections.Generic.IList`1[System.__Canon]:get_Item(int):System.__Canon:this - mov rdx, rax - movsxd rsi, r14d - mov rdi, rbx - mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST - call [rax]CORINFO_HELP_ARRADDR_ST + cmp r14d, dword ptr [rbx+0x08] + jae G_M4320_IG23 + lea rdi, bword ptr [rbx+8*r14+0x10] + mov rsi, rax + call CORINFO_HELP_ASSIGN_REF inc r14d mov rdi, r15 mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this call [r11]System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this cmp eax, r14d jg SHORT G_M4320_IG15 - ;; size=64 bbWeight=4 PerfScore 51.00 + ;; size=66 bbWeight=4 PerfScore 60.00 G_M4320_IG16: jmp G_M4320_IG21 ;; size=5 bbWeight=0.50 PerfScore 1.00 G_M4320_IG17: mov rsi, 0xD1FFAB1E ; 'System.Object' cmp r15, rsi jne G_M4320_IG28 mov rsi, rbx mov rdi, 0xD1FFAB1E ; System.Collections.Generic.IList`1[System.Xml.XPath.XPathItem] mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTINTERFACE call [rax]CORINFO_HELP_CHKCASTINTERFACE mov rdi, rbx mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this call [r11]System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this cmp eax, 1 jne G_M4320_IG20 mov rdi, rbx mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[System.__Canon]:get_Item(int):System.__Canon:this xor esi, esi call [r11]System.Collections.Generic.IList`1[System.__Canon]:get_Item(int):System.__Canon:this mov r15, rax mov rdi, r15 mov rax, qword ptr [r15] mov r14, qword ptr [rax+0x40] call [r14+0x20]System.Xml.XPath.XPathItem:get_IsNode():ubyte:this test eax, eax je SHORT G_M4320_IG19 mov rsi, r15 mov rdi, 0xD1FFAB1E ; System.Xml.Xsl.Runtime.RtfNavigator mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS call [rax]CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax je SHORT G_M4320_IG18 mov rdi, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+0xB8] call [rax+0x08]System.Xml.Xsl.Runtime.RtfNavigator:ToNavigator():System.Xml.XPath.XPathNavigator:this mov rbx, rax jmp G_M4320_IG21 ;; size=162 bbWeight=0.50 PerfScore 18.50 G_M4320_IG18: mov rdi, 0xD1FFAB1E ; MS.Internal.Xml.XPath.XPathArrayIterator call CORINFO_HELP_NEWSFAST mov r15, rax mov rsi, rbx mov rdi, 0xD1FFAB1E ; System.Collections.IList mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTINTERFACE call [rax]CORINFO_HELP_CHKCASTINTERFACE mov dword ptr [r15+0x08], -1 lea rdi, bword ptr [r15+0x10] mov rsi, rax call CORINFO_HELP_ASSIGN_REF mov rbx, r15 jmp SHORT G_M4320_IG21 ;; size=68 bbWeight=0.50 PerfScore 5.12 G_M4320_IG19: mov rdi, r15 call [r14+0x38]System.Xml.XPath.XPathItem:get_TypedValue():System.Object:this mov rbx, rax jmp SHORT G_M4320_IG21 ;; size=12 bbWeight=0.50 PerfScore 2.75 G_M4320_IG20: mov rdi, 0xD1FFAB1E ; MS.Internal.Xml.XPath.XPathArrayIterator call CORINFO_HELP_NEWSFAST mov r15, rax mov rsi, rbx mov rdi, 0xD1FFAB1E ; System.Collections.IList mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTINTERFACE call [rax]CORINFO_HELP_CHKCASTINTERFACE mov dword ptr [r15+0x08], -1 lea rdi, bword ptr [r15+0x10] mov rsi, rax call CORINFO_HELP_ASSIGN_REF mov rbx, r15 ;; size=66 bbWeight=0.50 PerfScore 4.12 G_M4320_IG21: mov rax, rbx ;; size=3 bbWeight=1 PerfScore 0.25 G_M4320_IG22: add rsp, 80 pop rbx pop r13 pop r14 pop r15 pop rbp ret ;; size=13 bbWeight=1 PerfScore 3.75 G_M4320_IG23: call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00 G_M4320_IG24: mov rsi, rbx mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS call [rax]CORINFO_HELP_CHKCASTCLASS int3 ;; size=16 bbWeight=0 PerfScore 0.00 G_M4320_IG25: mov rdi, 0xD1FFAB1E ; System.Xml.Schema.XsdDateTimeFlags call CORINFO_HELP_NEWSFAST mov rbx, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_XmlConvert_BadFormat():System.String call [rax]System.SR:get_XmlConvert_BadFormat():System.String mov r15, rax mov dword ptr [rbx+0x08], 255 mov rdi, 0xD1FFAB1E ; System.FormatException call CORINFO_HELP_NEWSFAST mov r13, rax mov rdx, rbx mov rdi, r15 mov rsi, r14 mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object,System.Object):System.String call [rax]System.SR:Format(System.String,System.Object,System.Object):System.String mov rsi, rax mov rdi, r13 mov rax, 0xD1FFAB1E ; code for System.FormatException:.ctor(System.String):this call [rax]System.FormatException:.ctor(System.String):this mov rdi, r13 call CORINFO_HELP_THROW ;; size=105 bbWeight=0 PerfScore 0.00 G_M4320_IG26: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_BadYearMonthDay() call [rax]System.ThrowHelper:ThrowArgumentOutOfRange_BadYearMonthDay() int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M4320_IG27: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_BadHourMinuteSecond() call [rax]System.ThrowHelper:ThrowArgumentOutOfRange_BadHourMinuteSecond() int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M4320_IG28: mov rax, 0xD1FFAB1E ; code for System.SR:get_Xslt_UnsupportedClrType():System.String call [rax]System.SR:get_Xslt_UnsupportedClrType():System.String mov rbx, rax mov rdi, 0xD1FFAB1E ; System.String[] mov esi, 1 call CORINFO_HELP_NEWARR_1_OBJ mov r14, rax mov rdi, r15 mov rax, qword ptr [r15] mov rax, qword ptr [rax+0x40] call [rax+0x30]System.Reflection.MemberInfo:get_Name():System.String:this lea rdi, bword ptr [r14+0x10] mov rsi, rax call CORINFO_HELP_ASSIGN_REF mov rdi, 0xD1FFAB1E ; System.Xml.Xsl.XslTransformException call CORINFO_HELP_NEWSFAST mov r15, rax mov rdi, r15 mov rsi, rbx mov rdx, r14 mov rax, 0xD1FFAB1E ; code for System.Xml.Xsl.XslTransformException:.ctor(System.String,System.String[]):this call [rax]System.Xml.Xsl.XslTransformException:.ctor(System.String,System.String[]):this mov rdi, r15 call CORINFO_HELP_THROW int3 ;; size=111 bbWeight=0 PerfScore 0.00 -; Total bytes of code 1507, prolog size 38, PerfScore 174.98, instruction count 338, allocated bytes for code 1507 (MethodHash=581aef1f) for method System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltArgument(System.Xml.Xsl.XmlQueryType,System.Object,System.Type):System.Object (FullOpts) +; Total bytes of code 1509, prolog size 38, PerfScore 183.98, instruction count 338, allocated bytes for code 1509 (MethodHash=581aef1f) for method System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltArgument(System.Xml.Xsl.XmlQueryType,System.Object,System.Type):System.Object (FullOpts) ```
MihuBot commented 7 months ago

Top method improvements

-8 (-5.26 % of base) - System.Xml.Xsl.Runtime.XsltLibrary:FormatMessage(System.String,System.Collections.Generic.IList`1[System.String]):System.String:this ```diff ; Assembly listing for method System.Xml.Xsl.Runtime.XsltLibrary:FormatMessage(System.String,System.Collections.Generic.IList`1[System.String]):System.String: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,T05] ( 3, 3 ) ref -> r15 class-hnd single-def ; V02 arg2 [V02,T02] ( 4, 7 ) ref -> rbx class-hnd single-def ; V03 loc0 [V03,T03] ( 4, 7 ) ref -> r14 class-hnd exact single-def -; V04 loc1 [V04,T00] ( 6, 21 ) int -> r13 +;* V04 loc1 [V04,T07] ( 0, 0 ) int -> zero-ref ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V06 tmp1 [V06,T06] ( 2, 4 ) long -> rsi "argument with side effect" -; V07 tmp2 [V07,T01] ( 2, 16 ) ref -> rdx "argument with side effect" +; V06 tmp1 [V06,T01] ( 2, 16 ) ref -> rax class-hnd exact "Strict ordering of exceptions for Array store" +; V07 tmp2 [V07,T06] ( 2, 4 ) long -> rsi "argument with side effect" ; V08 cse0 [V08,T04] ( 3, 6 ) int -> r12 "CSE #01: aggressive" +; V09 rat0 [V09,T00] ( 6, 21 ) long -> r13 "Widened IV V04" ; ; Lcl frame size = 8 G_M4053_IG01: push rbp push r15 push r14 push r13 push r12 push rbx push rax lea rbp, [rsp+0x30] mov r15, rsi mov rbx, rdx ;; size=22 bbWeight=1 PerfScore 8.00 G_M4053_IG02: mov rdi, rbx mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this call [r11]System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this movsxd rsi, eax mov rdi, 0xD1FFAB1E ; System.String[] call CORINFO_HELP_NEWARR_1_OBJ mov r14, rax xor r13d, r13d mov r12d, dword ptr [r14+0x08] test r12d, r12d jle SHORT G_M4053_IG04 ;; size=49 bbWeight=1 PerfScore 8.75 G_M4053_IG03: mov rdi, rbx mov esi, r13d mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IList`1[System.__Canon]:get_Item(int):System.__Canon:this call [r11]System.Collections.Generic.IList`1[System.__Canon]:get_Item(int):System.__Canon:this - mov rdx, rax - movsxd rsi, r13d - mov rdi, r14 - mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST - call [rax]CORINFO_HELP_ARRADDR_ST + lea rdi, bword ptr [r14+8*r13+0x10] + mov rsi, rax + call CORINFO_HELP_ASSIGN_REF inc r13d cmp r12d, r13d jg SHORT G_M4053_IG03 - ;; size=48 bbWeight=4 PerfScore 37.00 + ;; size=40 bbWeight=4 PerfScore 30.00 G_M4053_IG04: mov rdi, r15 mov rsi, r14 mov rax, 0xD1FFAB1E ; code for System.Xml.Xsl.XslTransformException:CreateMessage(System.String,System.String[]):System.String ;; size=16 bbWeight=1 PerfScore 0.75 G_M4053_IG05: add rsp, 8 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp tail.jmp [rax]System.Xml.Xsl.XslTransformException:CreateMessage(System.String,System.String[]):System.String ;; size=17 bbWeight=1 PerfScore 5.25 -; Total bytes of code 152, prolog size 16, PerfScore 59.75, instruction count 44, allocated bytes for code 152 (MethodHash=2adff02a) for method System.Xml.Xsl.Runtime.XsltLibrary:FormatMessage(System.String,System.Collections.Generic.IList`1[System.String]):System.String:this (FullOpts) +; Total bytes of code 144, prolog size 16, PerfScore 52.75, instruction count 42, allocated bytes for code 144 (MethodHash=2adff02a) for method System.Xml.Xsl.Runtime.XsltLibrary:FormatMessage(System.String,System.Collections.Generic.IList`1[System.String]):System.String:this (FullOpts) ```
-3 (-0.26 % of base) - System.Runtime.Serialization.DataContracts.ClassDataContract:Equals(System.Object,System.Collections.Generic.HashSet`1[System.Runtime.Serialization.DataContracts.DataContractPairKey]):ubyte:this ```diff ; Assembly listing for method System.Runtime.Serialization.DataContracts.ClassDataContract:Equals(System.Object,System.Collections.Generic.HashSet`1[System.Runtime.Serialization.DataContracts.DataContractPairKey]):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; 30 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 13, 18.50) ref -> rbx this class-hnd single-def ; V01 arg1 [V01,T20] ( 7, 4.75) ref -> r14 class-hnd single-def ; V02 arg2 [V02,T14] ( 6, 6 ) ref -> r15 class-hnd single-def ; V03 loc0 [V03,T03] ( 13, 16.50) ref -> r14 class-hnd exact ; V04 loc1 [V04,T11] ( 7, 12 ) ref -> r12 class-hnd exact ; V05 loc2 [V05,T10] ( 8, 13 ) ref -> r13 class-hnd exact ; V06 loc3 [V06,T02] ( 6, 20.50) int -> [rbp-0x2C] ; V07 loc4 [V07,T01] ( 7, 20.50) int -> [rbp-0x30] ; V08 loc5 [V08,T15] ( 3, 6 ) ref -> [rbp-0x38] ld-addr-op class-hnd spill-single-def ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling qmarkNull" -; V11 tmp2 [V11,T24] ( 3, 3 ) ref -> r12 class-hnd exact "NewObj constructor temp" -; V12 tmp3 [V12,T25] ( 3, 3 ) ref -> r13 class-hnd exact "NewObj constructor temp" +; V11 tmp2 [V11,T25] ( 3, 3 ) ref -> r12 class-hnd exact "NewObj constructor temp" +; V12 tmp3 [V12,T26] ( 3, 3 ) ref -> r13 class-hnd exact "NewObj constructor temp" ; V13 tmp4 [V13,T04] ( 2, 16 ) ref -> [rbp-0x40] class-hnd exact spill-single-def "non-inline candidate call" ;* V14 tmp5 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" ;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" ;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V18 tmp9 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" -; V19 tmp10 [V19,T29] ( 2, 2 ) ref -> r13 class-hnd "Inlining Arg" +; V19 tmp10 [V19,T30] ( 2, 2 ) ref -> r13 class-hnd "Inlining Arg" ;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" +;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V22 tmp13 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" -; V23 tmp14 [V23,T05] ( 2, 16 ) ref -> rdx class-hnd "Inlining Arg" +; V23 tmp14 [V23,T05] ( 2, 16 ) ref -> rdx class-hnd exact "Inlining Arg" ;* V24 tmp15 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" -;* V26 tmp17 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" +;* V26 tmp17 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V27 tmp18 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V28 tmp19 [V28,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V29 tmp20 [V29,T06] ( 2, 16 ) ref -> rsi class-hnd exact "Inlining Arg" ; V30 tmp21 [V30,T13] ( 3, 10 ) byref -> rax "Inline stloc first use temp" ;* V31 tmp22 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V32 tmp23 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V33 tmp24 [V33,T21] ( 3, 6 ) ref -> rdi class-hnd "Inline stloc first use temp" ; V34 tmp25 [V34,T16] ( 4, 8 ) int -> rsi "Inline stloc first use temp" -; V35 tmp26 [V35,T12] ( 3, 12 ) ref -> rax class-hnd "Inlining Arg" +; V35 tmp26 [V35,T12] ( 3, 12 ) ref -> rax class-hnd exact "Inlining Arg" ;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" ;* V37 tmp28 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" -; V38 tmp29 [V38,T30] ( 2, 2 ) ref -> rdi class-hnd exact "dup spill" -; V39 tmp30 [V39,T28] ( 4, 2 ) ref -> rdi +; V38 tmp29 [V38,T31] ( 2, 2 ) ref -> rdi class-hnd exact "dup spill" +; V39 tmp30 [V39,T29] ( 4, 2 ) ref -> rdi ; V40 tmp31 [V40,T22] ( 4, 4 ) ref -> [rbp-0x48] class-hnd exact spill-single-def "NewObj constructor temp" ;* V41 tmp32 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" ;* V42 tmp33 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V43 tmp34 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V44 tmp35 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V45 tmp36 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V46 tmp37 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" -; V47 tmp38 [V47,T26] ( 3, 3 ) int -> rbx "Single return block return value" +; V47 tmp38 [V47,T27] ( 3, 3 ) int -> rbx "Single return block return value" ; V48 tmp39 [V48,T07] ( 2, 16 ) ref -> rdi "argument with side effect" ; V49 tmp40 [V49,T08] ( 2, 16 ) ref -> rdi "argument with side effect" ; V50 tmp41 [V50,T09] ( 2, 16 ) ref -> rdi "argument with side effect" ; V51 tmp42 [V51,T17] ( 2, 8 ) ref -> rdi "argument with side effect" ; V52 tmp43 [V52,T18] ( 2, 8 ) ref -> rdi "argument with side effect" ; V53 tmp44 [V53,T19] ( 2, 8 ) ref -> rsi "argument with side effect" -; V54 cse0 [V54,T31] ( 3, 1.50) ref -> rdi "CSE #06: moderate" -; V55 cse1 [V55,T27] ( 5, 2.50) ref -> rsi multi-def "CSE #04: moderate" +; V54 cse0 [V54,T32] ( 3, 1.50) ref -> rdi "CSE #07: moderate" +; V55 cse1 [V55,T28] ( 5, 2.50) ref -> rsi multi-def "CSE #05: moderate" +; V56 cse2 [V56,T24] ( 2, 4 ) int -> rcx "CSE #03: moderate" ; ; Lcl frame size = 40 G_M24286_IG01: push rbp push r15 push r14 push r13 push r12 push rbx sub rsp, 40 lea rbp, [rsp+0x50] mov rbx, rdi mov r14, rsi mov r15, rdx ;; size=28 bbWeight=1 PerfScore 7.50 G_M24286_IG02: mov rdi, rbx mov rsi, r14 mov rdx, r15 mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.DataContract:IsEqualOrChecked(System.Object,System.Collections.Generic.HashSet`1[System.Runtime.Serialization.DataContracts.DataContractPairKey]):ubyte:this call [rax]System.Runtime.Serialization.DataContracts.DataContract:IsEqualOrChecked(System.Object,System.Collections.Generic.HashSet`1[System.Runtime.Serialization.DataContracts.DataContractPairKey]):ubyte:this test eax, eax je SHORT G_M24286_IG05 ;; size=25 bbWeight=1 PerfScore 5.25 G_M24286_IG03: mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M24286_IG04: add rsp, 40 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12 G_M24286_IG05: mov rdi, rbx mov rsi, r14 mov rdx, r15 mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.DataContract:Equals(System.Object,System.Collections.Generic.HashSet`1[System.Runtime.Serialization.DataContracts.DataContractPairKey]):ubyte:this call [rax]System.Runtime.Serialization.DataContracts.DataContract:Equals(System.Object,System.Collections.Generic.HashSet`1[System.Runtime.Serialization.DataContracts.DataContractPairKey]):ubyte:this test eax, eax je G_M24286_IG24 test r14, r14 je G_M24286_IG24 ;; size=38 bbWeight=0.50 PerfScore 3.25 G_M24286_IG06: mov rdi, 0xD1FFAB1E ; System.Runtime.Serialization.DataContracts.ClassDataContract cmp qword ptr [r14], rdi jne G_M24286_IG24 ;; size=19 bbWeight=0.25 PerfScore 1.06 G_M24286_IG07: mov rdi, gword ptr [rbx+0x40] cmp byte ptr [rdi+0xC9], 0 je SHORT G_M24286_IG08 mov rdi, gword ptr [r14+0x40] cmp byte ptr [rdi+0xC9], 0 jne G_M24286_IG20 jmp G_M24286_IG24 ;; size=35 bbWeight=0.50 PerfScore 7.00 G_M24286_IG08: mov rdi, gword ptr [r14+0x40] cmp byte ptr [rdi+0xC9], 0 jne G_M24286_IG24 mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this call [rax]System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this test rax, rax jne SHORT G_M24286_IG09 mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this call [rax]System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this test rax, rax je G_M24286_IG20 mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this call [rax]System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.ClassDataContract:IsEveryDataMemberOptional(System.Collections.Generic.IEnumerable`1[System.Runtime.Serialization.DataContracts.DataMember]):ubyte call [rax]System.Runtime.Serialization.DataContracts.ClassDataContract:IsEveryDataMemberOptional(System.Collections.Generic.IEnumerable`1[System.Runtime.Serialization.DataContracts.DataMember]):ubyte test eax, eax jne G_M24286_IG20 jmp G_M24286_IG24 ;; size=104 bbWeight=0.50 PerfScore 12.88 G_M24286_IG09: mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this call [rax]System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this test rax, rax jne SHORT G_M24286_IG10 mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this call [rax]System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.ClassDataContract:IsEveryDataMemberOptional(System.Collections.Generic.IEnumerable`1[System.Runtime.Serialization.DataContracts.DataMember]):ubyte call [rax]System.Runtime.Serialization.DataContracts.ClassDataContract:IsEveryDataMemberOptional(System.Collections.Generic.IEnumerable`1[System.Runtime.Serialization.DataContracts.DataMember]):ubyte test eax, eax jne G_M24286_IG20 jmp G_M24286_IG24 ;; size=63 bbWeight=0.50 PerfScore 7.50 G_M24286_IG10: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this call [rax]System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this mov r13, rax mov rdi, 0xD1FFAB1E ; System.Collections.Generic.Dictionary`2[System.String,System.Runtime.Serialization.DataContracts.DataMember] call CORINFO_HELP_NEWSFAST mov r12, rax mov esi, dword ptr [r13+0x10] mov rdi, r12 xor rdx, rdx mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this call [rax]System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember] call CORINFO_HELP_NEWSFAST mov r13, rax mov rdi, 0xD1FFAB1E mov esi, 64 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS mov rdi, 0xD1FFAB1E ; data for System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:s_emptyArray mov rsi, gword ptr [rdi] lea rdi, bword ptr [r13+0x08] call CORINFO_HELP_ASSIGN_REF xor eax, eax mov dword ptr [rbp-0x2C], eax mov rdi, rbx mov rcx, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this call [rcx]System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this cmp dword ptr [rax+0x10], 0 jle G_M24286_IG12 ;; size=147 bbWeight=0.50 PerfScore 13.25 G_M24286_IG11: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this call [rax]System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this mov rdi, rax mov esi, dword ptr [rbp-0x2C] mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:get_Item(int):System.__Canon:this cmp dword ptr [rdi], edi call [rax]System.Collections.Generic.List`1[System.__Canon]:get_Item(int):System.__Canon:this mov rdi, gword ptr [rax+0x08] mov rax, gword ptr [rdi+0x10] mov gword ptr [rbp-0x40], rax mov rdi, rbx mov rcx, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this call [rcx]System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this mov rdi, rax mov esi, dword ptr [rbp-0x2C] mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:get_Item(int):System.__Canon:this cmp dword ptr [rdi], edi call [rax]System.Collections.Generic.List`1[System.__Canon]:get_Item(int):System.__Canon:this mov rdx, rax mov rdi, r12 mov rsi, gword ptr [rbp-0x40] mov ecx, 2 mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this call [rax]System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this mov esi, dword ptr [rbp-0x2C] inc esi mov dword ptr [rbp-0x2C], esi mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this call [rax]System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this mov edi, dword ptr [rbp-0x2C] cmp dword ptr [rax+0x10], edi mov dword ptr [rbp-0x2C], edi jg G_M24286_IG11 ;; size=147 bbWeight=4 PerfScore 175.00 G_M24286_IG12: xor eax, eax mov dword ptr [rbp-0x30], eax mov rdi, r14 mov rcx, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this call [rcx]System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this cmp dword ptr [rax+0x10], 0 jle G_M24286_IG18 ;; size=30 bbWeight=0.50 PerfScore 4.38 G_M24286_IG13: mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this call [rax]System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this mov rdi, rax mov esi, dword ptr [rbp-0x30] mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:get_Item(int):System.__Canon:this cmp dword ptr [rdi], edi call [rax]System.Collections.Generic.List`1[System.__Canon]:get_Item(int):System.__Canon:this mov rdi, gword ptr [rax+0x08] mov rsi, gword ptr [rdi+0x10] mov rdi, r12 mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this call [rax]System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this test rax, rax je SHORT G_M24286_IG15 ;; size=63 bbWeight=4 PerfScore 79.00 G_M24286_IG14: mov rax, gword ptr [rax] mov gword ptr [rbp-0x38], rax mov rdi, r14 mov rcx, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this call [rcx]System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this mov rdi, rax mov esi, dword ptr [rbp-0x30] mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:get_Item(int):System.__Canon:this cmp dword ptr [rdi], edi call [rax]System.Collections.Generic.List`1[System.__Canon]:get_Item(int):System.__Canon:this mov rsi, rax mov rdi, gword ptr [rbp-0x38] mov rdx, r15 mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.DataMember:Equals(System.Object,System.Collections.Generic.HashSet`1[System.Runtime.Serialization.DataContracts.DataContractPairKey]):ubyte:this cmp dword ptr [rdi], edi call [rax]System.Runtime.Serialization.DataContracts.DataMember:Equals(System.Object,System.Collections.Generic.HashSet`1[System.Runtime.Serialization.DataContracts.DataContractPairKey]):ubyte:this test eax, eax je G_M24286_IG24 mov rsi, gword ptr [rbp-0x38] mov rsi, gword ptr [rsi+0x08] mov rsi, gword ptr [rsi+0x10] mov rdi, r12 mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this call [rax]System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this jmp SHORT G_M24286_IG17 ;; size=103 bbWeight=2 PerfScore 67.00 G_M24286_IG15: mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this call [rax]System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this mov rdi, rax mov esi, dword ptr [rbp-0x30] mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:get_Item(int):System.__Canon:this cmp dword ptr [rdi], edi call [rax]System.Collections.Generic.List`1[System.__Canon]:get_Item(int):System.__Canon:this inc dword ptr [r13+0x14] mov rdi, gword ptr [r13+0x08] mov esi, dword ptr [r13+0x10] - cmp dword ptr [rdi+0x08], esi + mov ecx, dword ptr [rdi+0x08] + cmp ecx, esi jbe SHORT G_M24286_IG16 - lea edx, [rsi+0x01] - mov dword ptr [r13+0x10], edx - movsxd rsi, esi - mov rdx, rax - mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST - call [rax]CORINFO_HELP_ARRADDR_ST + lea ecx, [rsi+0x01] + mov dword ptr [r13+0x10], ecx + lea rdi, bword ptr [rdi+8*rsi+0x10] + mov rsi, rax + call CORINFO_HELP_ASSIGN_REF jmp SHORT G_M24286_IG17 - ;; size=79 bbWeight=2 PerfScore 58.50 + ;; size=76 bbWeight=2 PerfScore 54.00 G_M24286_IG16: mov rdi, r13 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 ;; size=18 bbWeight=2 PerfScore 7.50 G_M24286_IG17: mov esi, dword ptr [rbp-0x30] inc esi mov dword ptr [rbp-0x30], esi mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this call [rax]System.Runtime.Serialization.DataContracts.ClassDataContract:get_Members():System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]:this mov edi, dword ptr [rbp-0x30] cmp dword ptr [rax+0x10], edi mov dword ptr [rbp-0x30], edi jg G_M24286_IG13 ;; size=38 bbWeight=4 PerfScore 47.00 G_M24286_IG18: mov rdi, gword ptr [r12+0x28] test rdi, rdi jne SHORT G_M24286_IG19 mov rdi, 0xD1FFAB1E ; System.Collections.Generic.Dictionary`2+ValueCollection[System.String,System.Runtime.Serialization.DataContracts.DataMember] call CORINFO_HELP_NEWSFAST mov rdi, rax mov gword ptr [rbp-0x48], rdi lea rdi, bword ptr [rdi+0x08] mov rsi, r12 call CORINFO_HELP_ASSIGN_REF lea rdi, bword ptr [r12+0x28] mov rsi, gword ptr [rbp-0x48] call CORINFO_HELP_ASSIGN_REF mov r12, gword ptr [rbp-0x48] mov rdi, r12 ;; size=65 bbWeight=0.50 PerfScore 5.62 G_M24286_IG19: mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.ClassDataContract:IsEveryDataMemberOptional(System.Collections.Generic.IEnumerable`1[System.Runtime.Serialization.DataContracts.DataMember]):ubyte call [rax]System.Runtime.Serialization.DataContracts.ClassDataContract:IsEveryDataMemberOptional(System.Collections.Generic.IEnumerable`1[System.Runtime.Serialization.DataContracts.DataMember]):ubyte test eax, eax je SHORT G_M24286_IG24 mov rdi, r13 mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.ClassDataContract:IsEveryDataMemberOptional(System.Collections.Generic.IEnumerable`1[System.Runtime.Serialization.DataContracts.DataMember]):ubyte call [rax]System.Runtime.Serialization.DataContracts.ClassDataContract:IsEveryDataMemberOptional(System.Collections.Generic.IEnumerable`1[System.Runtime.Serialization.DataContracts.DataMember]):ubyte test eax, eax je SHORT G_M24286_IG24 ;; size=35 bbWeight=0.50 PerfScore 4.62 G_M24286_IG20: mov rdi, gword ptr [rbx+0x40] mov rdi, gword ptr [rdi+0x50] test rdi, rdi jne SHORT G_M24286_IG21 mov rdi, gword ptr [r14+0x40] mov rsi, gword ptr [rdi+0x50] xor ebx, ebx test rsi, rsi sete bl jmp SHORT G_M24286_IG22 ;; size=31 bbWeight=0.50 PerfScore 6.38 G_M24286_IG21: mov rsi, gword ptr [r14+0x40] mov rsi, gword ptr [rsi+0x50] test rsi, rsi je SHORT G_M24286_IG24 mov rdx, r15 mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.ClassDataContract:Equals(System.Object,System.Collections.Generic.HashSet`1[System.Runtime.Serialization.DataContracts.DataContractPairKey]):ubyte:this cmp dword ptr [rdi], edi call [rax]System.Runtime.Serialization.DataContracts.ClassDataContract:Equals(System.Object,System.Collections.Generic.HashSet`1[System.Runtime.Serialization.DataContracts.DataContractPairKey]):ubyte:this mov ebx, eax ;; size=32 bbWeight=0.50 PerfScore 6.00 G_M24286_IG22: movzx rax, bl ;; size=3 bbWeight=0.50 PerfScore 0.12 G_M24286_IG23: add rsp, 40 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12 G_M24286_IG24: xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M24286_IG25: add rsp, 40 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 1155, prolog size 19, PerfScore 525.44, instruction count 288, allocated bytes for code 1155 (MethodHash=ec08a121) for method System.Runtime.Serialization.DataContracts.ClassDataContract:Equals(System.Object,System.Collections.Generic.HashSet`1[System.Runtime.Serialization.DataContracts.DataContractPairKey]):ubyte:this (FullOpts) +; Total bytes of code 1152, prolog size 19, PerfScore 520.94, instruction count 288, allocated bytes for code 1152 (MethodHash=ec08a121) for method System.Runtime.Serialization.DataContracts.ClassDataContract:Equals(System.Object,System.Collections.Generic.HashSet`1[System.Runtime.Serialization.DataContracts.DataContractPairKey]):ubyte:this (FullOpts) ```
-2 (-1.59 % of base) - System.Runtime.Caching.MemoryCache:get_AllSRefTargets():System.Object[]:this ```diff ; Assembly listing for method System.Runtime.Caching.MemoryCache:get_AllSRefTargets():System.Object[]: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,T03] ( 5, 11 ) ref -> rbx this class-hnd single-def -; V01 loc0 [V01,T04] ( 3, 6 ) ref -> r14 class-hnd exact single-def +; V01 loc0 [V01,T04] ( 4, 10 ) ref -> r14 class-hnd exact single-def ;* V02 loc1 [V02,T06] ( 0, 0 ) int -> zero-ref ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V05 tmp1 [V05,T01] ( 3, 24 ) ref -> rdi "arr expr" -; V06 tmp2 [V06,T02] ( 2, 16 ) ref -> rdx "argument with side effect" +; V05 tmp1 [V05,T02] ( 2, 16 ) ref -> rax class-hnd exact "Strict ordering of exceptions for Array store" +; V06 tmp2 [V06,T01] ( 3, 24 ) ref -> rdi "arr expr" ; V07 cse0 [V07,T05] ( 3, 3 ) int -> r15 "CSE #01: aggressive" -; V08 rat0 [V08,T00] ( 7, 25 ) long -> r13 "Widened IV V02" +; V08 rat0 [V08,T00] ( 8, 29 ) long -> r13 "Widened IV V02" ; ; Lcl frame size = 0 G_M34564_IG01: push rbp push r15 push r14 push r13 push rbx lea rbp, [rsp+0x20] mov rbx, rdi ;; size=16 bbWeight=1 PerfScore 5.75 G_M34564_IG02: mov r15d, dword ptr [rbx+0x38] movsxd rsi, r15d mov rdi, 0xD1FFAB1E ; System.Runtime.Caching.MemoryCacheStore[] call CORINFO_HELP_NEWARR_1_OBJ mov r14, rax xor r13d, r13d test r15d, r15d jle SHORT G_M34564_IG04 ;; size=33 bbWeight=1 PerfScore 5.25 G_M34564_IG03: mov rdi, gword ptr [rbx+0x08] cmp r13d, dword ptr [rdi+0x08] jae SHORT G_M34564_IG06 mov rdi, gword ptr [rdi+8*r13+0x10] mov rax, 0xD1FFAB1E ; code for System.Runtime.Caching.GCHandleRef`1[System.__Canon]:get_Target():System.__Canon:this cmp dword ptr [rdi], edi call [rax]System.Runtime.Caching.GCHandleRef`1[System.__Canon]:get_Target():System.__Canon:this - mov rdx, rax - movsxd rsi, r13d - mov rdi, r14 - mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST - call [rax]CORINFO_HELP_ARRADDR_ST + cmp r13d, dword ptr [r14+0x08] + jae SHORT G_M34564_IG06 + lea rdi, bword ptr [r14+8*r13+0x10] + mov rsi, rax + call CORINFO_HELP_ASSIGN_REF inc r13d cmp r13d, dword ptr [rbx+0x38] jl SHORT G_M34564_IG03 - ;; size=59 bbWeight=4 PerfScore 90.00 + ;; size=57 bbWeight=4 PerfScore 99.00 G_M34564_IG04: mov rax, r14 ;; size=3 bbWeight=1 PerfScore 0.25 G_M34564_IG05: pop rbx pop r13 pop r14 pop r15 pop rbp ret ;; size=9 bbWeight=1 PerfScore 3.50 G_M34564_IG06: call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00 -; Total bytes of code 126, prolog size 13, PerfScore 104.75, instruction count 39, allocated bytes for code 126 (MethodHash=ba7878fb) for method System.Runtime.Caching.MemoryCache:get_AllSRefTargets():System.Object[]:this (FullOpts) +; Total bytes of code 124, prolog size 13, PerfScore 113.75, instruction count 39, allocated bytes for code 124 (MethodHash=ba7878fb) for method System.Runtime.Caching.MemoryCache:get_AllSRefTargets():System.Object[]:this (FullOpts) ```
MihuBot commented 7 months ago

@MichalPetryka