Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

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

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

Comments

@MihuBot
Copy link
Owner

MihuBot commented Jun 15, 2024

Job completed in 29 minutes.
dotnet/runtime#100041

Diffs

Found 318 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 40855775
Total bytes of diff: 40855766
Total bytes of delta: -9 (-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)
          -2 : System.Runtime.Caching.dasm (-0.00 % of base)
          -1 : System.Private.DataContractSerialization.dasm (-0.00 % of base)

3 total files with Code Size differences (3 improved, 0 regressed), 255 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)
          -2 (-1.59 % of base) : System.Runtime.Caching.dasm - System.Runtime.Caching.MemoryCache:get_AllSRefTargets():System.Object[]:this (FullOpts)
          -1 (-0.08 % 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)

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)
          -1 (-0.08 % 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), 252043 unchanged.

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

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Jun 15, 2024

Top method regressions

2 (0.13 % of base) - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltArgument(System.Xml.Xsl.XmlQueryType,System.Object,System.Type):System.Object
 ; 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; 20 single block inlinees; 7 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T05] (  4,  4   )     ref  ->  rdi         class-hnd single-def <System.Xml.Xsl.XmlQueryType>
+;  V00 arg0         [V00,T06] (  4,  4   )     ref  ->  rdi         class-hnd single-def <System.Xml.Xsl.XmlQueryType>
 ;  V01 arg1         [V01,T02] ( 21, 11.50)     ref  ->  rbx         class-hnd <System.Object>
-;  V02 arg2         [V02,T04] ( 10,  5   )     ref  ->  r15         class-hnd single-def <System.Type>
+;  V02 arg2         [V02,T05] ( 10,  5   )     ref  ->  r15         class-hnd single-def <System.Type>
 ;  V03 loc0         [V03,T07] (  6,  4   )     int  ->  rax        
 ;  V04 loc1         [V04,T03] (  5,  9.50)     ref  ->  r15         class-hnd single-def <System.Collections.Generic.IList`1[System.Xml.XPath.XPathNavigator]>
-;  V05 loc2         [V05,T06] (  3,  5   )     ref  ->  rbx         class-hnd exact single-def <System.Xml.XPath.XPathNavigator[]>
-;  V06 loc3         [V06,T00] (  6, 20.50)     int  ->  r14        
+;  V05 loc2         [V05,T04] (  4,  9   )     ref  ->  rbx         class-hnd exact single-def <System.Xml.XPath.XPathNavigator[]>
+;* V06 loc3         [V06,T48] (  0,  0   )     int  ->  zero-ref   
 ;* V07 loc4         [V07,T47] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Collections.Generic.IList`1[System.Xml.XPath.XPathItem]>
 ;  V08 loc5         [V08,T16] (  5,  2.50)     ref  ->  r15         class-hnd single-def <System.Xml.XPath.XPathItem>
 ;  V09 loc6         [V09,T18] (  4,  2   )     ref  ->  rax         class-hnd single-def <System.Xml.Xsl.Runtime.RtfNavigator>
 ;# V10 OutArgs      [V10    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V11 tmp1         [V11,T13] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "Single-def Box Helper" <System.DateTime>
 ;  V12 tmp2         [V12,T08] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <MS.Internal.Xml.XPath.XPathArrayIterator>
 ;  V13 tmp3         [V13,T09] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <MS.Internal.Xml.XPath.XPathArrayIterator>
-;  V14 tmp4         [V14,T50] (  3,  0   )     ref  ->  r14         class-hnd exact single-def "dup spill" <System.String[]>
-;  V15 tmp5         [V15,T54] (  2,  0   )     ref  ->  rbx         class-hnd exact single-def "impAppendStmt" <System.String>
-;  V16 tmp6         [V16,T55] (  2,  0   )     ref  ->  rax         class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.String>
-;  V17 tmp7         [V17,T51] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Xml.Xsl.XslTransformException>
-;  V18 tmp8         [V18,T10] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <MS.Internal.Xml.XPath.XPathArrayIterator>
-;  V19 tmp9         [V19,T22] (  3,  2   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.String>
-;* V20 tmp10        [V20    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.Xml.Schema.XsdDateTime>
-;  V21 tmp11        [V21    ] ( 13,  6.50)  struct (56) [rbp-0x60]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Xml.Schema.XsdDateTime+Parser>
-;  V22 tmp12        [V22,T52] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.Xml.Schema.XsdDateTimeFlags>
-;  V23 tmp13        [V23,T56] (  2,  0   )     ref  ->  r15         class-hnd exact single-def "impImportAndPushBox" <System.String>
-;  V24 tmp14        [V24,T53] (  3,  0   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.FormatException>
-;* V25 tmp15        [V25    ] (  0,  0   )  struct (56) zero-ref    do-not-enreg[SF] "Inlining Arg" <System.Xml.Schema.XsdDateTime+Parser>
-;* V26 tmp16        [V26    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.DateTime>
-;* V27 tmp17        [V27    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;  V14 tmp4         [V14,T51] (  3,  0   )     ref  ->  r14         class-hnd exact single-def "dup spill" <System.String[]>
+;  V15 tmp5         [V15,T55] (  2,  0   )     ref  ->  rbx         class-hnd exact single-def "impAppendStmt" <System.String>
+;  V16 tmp6         [V16,T56] (  2,  0   )     ref  ->  rax         class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.String>
+;  V17 tmp7         [V17,T52] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Xml.Xsl.XslTransformException>
+;  V18 tmp8         [V18,T01] (  2, 16   )     ref  ->  rax         class-hnd "Strict ordering of exceptions for Array store" <System.Xml.XPath.XPathNavigator>
+;  V19 tmp9         [V19,T10] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <MS.Internal.Xml.XPath.XPathArrayIterator>
+;  V20 tmp10        [V20,T22] (  3,  2   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.String>
+;* V21 tmp11        [V21    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.Xml.Schema.XsdDateTime>
+;  V22 tmp12        [V22    ] ( 13,  6.50)  struct (56) [rbp-0x60]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Xml.Schema.XsdDateTime+Parser>
+;  V23 tmp13        [V23,T53] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.Xml.Schema.XsdDateTimeFlags>
+;  V24 tmp14        [V24,T57] (  2,  0   )     ref  ->  r15         class-hnd exact single-def "impImportAndPushBox" <System.String>
+;  V25 tmp15        [V25,T54] (  3,  0   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.FormatException>
+;* V26 tmp16        [V26    ] (  0,  0   )  struct (56) zero-ref    do-not-enreg[SF] "Inlining Arg" <System.Xml.Schema.XsdDateTime+Parser>
+;* V27 tmp17        [V27    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.DateTime>
 ;* 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,T26] (  2,  2   )    long  ->  r12         "impAppendStmt"
-;* V34 tmp24        [V34    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V35 tmp25        [V35    ] (  0,  0   )  struct (16) zero-ref    <System.ReadOnlySpan`1[uint]>
-;* V36 tmp26        [V36    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[uint]>
-;* V37 tmp27        [V37    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;* V33 tmp23        [V33    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;  V34 tmp24        [V34,T26] (  2,  2   )    long  ->  r12         "impAppendStmt"
+;* V35 tmp25        [V35    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;* V36 tmp26        [V36    ] (  0,  0   )  struct (16) zero-ref    <System.ReadOnlySpan`1[uint]>
+;* V37 tmp27        [V37    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[uint]>
 ;* V38 tmp28        [V38    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V39 tmp29        [V39,T39] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V40 tmp30        [V40    ] (  0,  0   )  struct (16) zero-ref    "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[uint]>
+;* V39 tmp29        [V39    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;* V40 tmp30        [V40,T39] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V41 tmp31        [V41    ] (  0,  0   )  struct (16) zero-ref    "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[uint]>
-;  V42 tmp32        [V42,T14] (  3,  3   )     int  ->  rdi         "dup spill"
-;  V43 tmp33        [V43,T28] (  3,  1.50)     int  ->  r10         "Inline stloc first use temp"
-;* V44 tmp34        [V44    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;* V42 tmp32        [V42    ] (  0,  0   )  struct (16) zero-ref    "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[uint]>
+;  V43 tmp33        [V43,T14] (  3,  3   )     int  ->  rdi         "dup spill"
+;  V44 tmp34        [V44,T28] (  3,  1.50)     int  ->  r10         "Inline stloc first use temp"
 ;* V45 tmp35        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V46 tmp36        [V46    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V47 tmp37        [V47,T15] (  3,  3   )    long  ->  rax         "dup spill"
-;* V48 tmp38        [V48    ] (  0,  0   )    long  ->  zero-ref   
-;* V49 tmp39        [V49    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.DateTime>
-;* V50 tmp40        [V50    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V51 tmp41        [V51,T23] (  2,  2   )     ref  ->  rax         class-hnd single-def "Inlining Arg" <System.Object>
-;  V52 tmp42        [V52,T24] (  2,  2   )     ref  ->  rax         class-hnd single-def "Inlining Arg" <System.Object>
-;  V53 tmp43        [V53,T25] (  2,  2   )     ref  ->  rax         class-hnd single-def "Inlining Arg" <System.Object>
-;  V54 tmp44        [V54,T29] (  3,  1.50)    long  ->  [rbp-0x68]  "field V20._dt (fldOffset=0x0)" P-INDEP
-;  V55 tmp45        [V55,T40] (  2,  1   )     int  ->  rbx         "field V20._extra (fldOffset=0x8)" P-INDEP
-;  V56 tmp46        [V56,T20] (  4,  2   )    long  ->  r12         "field V26._dateData (fldOffset=0x0)" P-INDEP
-;  V57 tmp47        [V57,T19] (  4,  2   )   byref  ->  r10         "field V35._reference (fldOffset=0x0)" P-INDEP
-;* V58 tmp48        [V58,T41] (  0,  0   )     int  ->  zero-ref    "field V35._length (fldOffset=0x8)" P-INDEP
-;* V59 tmp49        [V59    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V36._reference (fldOffset=0x0)" P-INDEP
-;* V60 tmp50        [V60    ] (  0,  0   )     int  ->  zero-ref    "field V36._length (fldOffset=0x8)" P-INDEP
-;  V61 tmp51        [V61,T37] (  2,  1   )   byref  ->  r10         single-def "field V40._reference (fldOffset=0x0)" P-INDEP
-;* V62 tmp52        [V62,T48] (  0,  0   )     int  ->  zero-ref    "field V40._length (fldOffset=0x8)" P-INDEP
-;  V63 tmp53        [V63,T38] (  2,  1   )   byref  ->  r10         single-def "field V41._reference (fldOffset=0x0)" P-INDEP
-;* V64 tmp54        [V64,T49] (  0,  0   )     int  ->  zero-ref    "field V41._length (fldOffset=0x8)" P-INDEP
-;  V65 tmp55        [V65,T42] (  2,  1   )    long  ->  rax         "field V49._dateData (fldOffset=0x0)" P-INDEP
-;  V66 tmp56        [V66,T43] (  2,  1   )     int  ->  rbx         "V25.[008..012)"
-;  V67 tmp57        [V67,T11] (  7,  3.50)     int  ->  rdi         "V25.[012..016)"
-;  V68 tmp58        [V68,T17] (  5,  2.50)     int  ->  rax         "V25.[016..020)"
-;  V69 tmp59        [V69,T21] (  4,  2   )     int  ->  rcx         "V25.[020..024)"
-;  V70 tmp60        [V70,T30] (  3,  1.50)     int  ->  rdx         "V25.[024..028)"
-;  V71 tmp61        [V71,T31] (  3,  1.50)     int  ->  rsi         "V25.[028..032)"
-;  V72 tmp62        [V72,T32] (  3,  1.50)     int  ->   r8         "V25.[032..036)"
-;  V73 tmp63        [V73,T33] (  3,  1.50)     int  ->   r9         "V25.[036..040)"
-;  V74 tmp64        [V74,T44] (  2,  1   )     int  ->  r15         "V25.[040..044)"
-;  V75 tmp65        [V75,T45] (  2,  1   )     int  ->  r14         "V25.[044..048)"
-;  V76 tmp66        [V76,T46] (  2,  1   )     int  ->  r13         "V25.[048..052)"
-;  V77 tmp67        [V77,T57] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V78 tmp68        [V78,T27] (  2,  2   )    long  ->  rsi         "argument with side effect"
-;  V79 tmp69        [V79,T01] (  2, 16   )     ref  ->  rdx         "argument with side effect"
+;* V46 tmp36        [V46    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;* V47 tmp37        [V47    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V48 tmp38        [V48,T15] (  3,  3   )    long  ->  rax         "dup spill"
+;* V49 tmp39        [V49    ] (  0,  0   )    long  ->  zero-ref   
+;* V50 tmp40        [V50    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.DateTime>
+;* V51 tmp41        [V51    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V52 tmp42        [V52,T23] (  2,  2   )     ref  ->  rax         class-hnd single-def "Inlining Arg" <System.Object>
+;  V53 tmp43        [V53,T24] (  2,  2   )     ref  ->  rax         class-hnd single-def "Inlining Arg" <System.Object>
+;  V54 tmp44        [V54,T25] (  2,  2   )     ref  ->  rax         class-hnd single-def "Inlining Arg" <System.Object>
+;  V55 tmp45        [V55,T29] (  3,  1.50)    long  ->  [rbp-0x68]  "field V21._dt (fldOffset=0x0)" P-INDEP
+;  V56 tmp46        [V56,T40] (  2,  1   )     int  ->  rbx         "field V21._extra (fldOffset=0x8)" P-INDEP
+;  V57 tmp47        [V57,T20] (  4,  2   )    long  ->  r12         "field V27._dateData (fldOffset=0x0)" P-INDEP
+;  V58 tmp48        [V58,T19] (  4,  2   )   byref  ->  r10         "field V36._reference (fldOffset=0x0)" P-INDEP
+;* V59 tmp49        [V59,T41] (  0,  0   )     int  ->  zero-ref    "field V36._length (fldOffset=0x8)" P-INDEP
+;* V60 tmp50        [V60    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V37._reference (fldOffset=0x0)" P-INDEP
+;* V61 tmp51        [V61    ] (  0,  0   )     int  ->  zero-ref    "field V37._length (fldOffset=0x8)" P-INDEP
+;  V62 tmp52        [V62,T37] (  2,  1   )   byref  ->  r10         single-def "field V41._reference (fldOffset=0x0)" P-INDEP
+;* V63 tmp53        [V63,T49] (  0,  0   )     int  ->  zero-ref    "field V41._length (fldOffset=0x8)" P-INDEP
+;  V64 tmp54        [V64,T38] (  2,  1   )   byref  ->  r10         single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V65 tmp55        [V65,T50] (  0,  0   )     int  ->  zero-ref    "field V42._length (fldOffset=0x8)" P-INDEP
+;  V66 tmp56        [V66,T42] (  2,  1   )    long  ->  rax         "field V50._dateData (fldOffset=0x0)" P-INDEP
+;  V67 tmp57        [V67,T43] (  2,  1   )     int  ->  rbx         "V26.[008..012)"
+;  V68 tmp58        [V68,T11] (  7,  3.50)     int  ->  rdi         "V26.[012..016)"
+;  V69 tmp59        [V69,T17] (  5,  2.50)     int  ->  rax         "V26.[016..020)"
+;  V70 tmp60        [V70,T21] (  4,  2   )     int  ->  rcx         "V26.[020..024)"
+;  V71 tmp61        [V71,T30] (  3,  1.50)     int  ->  rdx         "V26.[024..028)"
+;  V72 tmp62        [V72,T31] (  3,  1.50)     int  ->  rsi         "V26.[028..032)"
+;  V73 tmp63        [V73,T32] (  3,  1.50)     int  ->   r8         "V26.[032..036)"
+;  V74 tmp64        [V74,T33] (  3,  1.50)     int  ->   r9         "V26.[036..040)"
+;  V75 tmp65        [V75,T44] (  2,  1   )     int  ->  r15         "V26.[040..044)"
+;  V76 tmp66        [V76,T45] (  2,  1   )     int  ->  r14         "V26.[044..048)"
+;  V77 tmp67        [V77,T46] (  2,  1   )     int  ->  r13         "V26.[048..052)"
+;  V78 tmp68        [V78,T58] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V79 tmp69        [V79,T27] (  2,  2   )    long  ->  rsi         "argument with side effect"
 ;  V80 cse0         [V80,T34] (  3,  1.50)     int  ->  rax         "CSE #04: conservative"
 ;  V81 cse1         [V81,T35] (  3,  1.50)    long  ->  r14         "CSE #08: conservative"
-;  V82 rat0         [V82,T12] (  4,  3.50)     ref  ->  r14         "replacement local"
-;  V83 rat1         [V83,T36] (  3,  1   )    long  ->  rdi         "CSE for expectedClsNode"
+;  V82 rat0         [V82,T00] (  7, 24.50)    long  ->  r14         "Widened IV V06"
+;  V83 rat1         [V83,T12] (  4,  3.50)     ref  ->  r14         "replacement local"
+;  V84 rat2         [V84,T36] (  3,  1   )    long  ->  rdi         "CSE for expectedClsNode"
 ;
 ; Lcl frame size = 72
 
 G_M4320_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 72
        lea      rbp, [rsp+0x70]
        vxorps   xmm8, xmm8, xmm8
        vmovdqu  ymmword ptr [rbp-0x60], ymm8
        vmovdqa  xmmword ptr [rbp-0x40], xmm8
        xor      eax, eax
        mov      qword ptr [rbp-0x30], rax
        mov      rbx, rsi
        mov      r15, rdx
 						;; size=46 bbWeight=1 PerfScore 12.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
        jle      G_M4320_IG11
 						;; size=19 bbWeight=1 PerfScore 8.25
 G_M4320_IG03:
        cmp      eax, 12
        jne      G_M4320_IG10
        mov      rdi, 0xD1FFAB1E      ; 'System.DateTime'
        cmp      r15, rdi
        jne      G_M4320_IG19
        mov      r14, rbx
        test     r14, r14
        je       SHORT G_M4320_IG05
 						;; size=36 bbWeight=0.50 PerfScore 2.12
 G_M4320_IG04:
        mov      rdi, 0xD1FFAB1E      ; System.String
        cmp      qword ptr [r14], rdi
        jne      G_M4320_IG25
 						;; size=19 bbWeight=0.25 PerfScore 1.06
 G_M4320_IG05:
        vxorps   ymm0, ymm0, ymm0
        vmovdqu  ymmword ptr [rbp-0x60], ymm0
        vmovdqu  ymmword ptr [rbp-0x48], ymm0
        lea      rdi, [rbp-0x60]
        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_IG24
        mov      ebx, dword ptr [rbp-0x58]
        mov      edi, dword ptr [rbp-0x54]
        mov      eax, dword ptr [rbp-0x50]
        mov      ecx, dword ptr [rbp-0x4C]
        mov      edx, dword ptr [rbp-0x48]
        mov      esi, dword ptr [rbp-0x44]
        mov      r8d, dword ptr [rbp-0x40]
        mov      r9d, dword ptr [rbp-0x3C]
        mov      r15d, dword ptr [rbp-0x38]
        mov      r14d, dword ptr [rbp-0x34]
        mov      r13d, dword ptr [rbp-0x30]
        mov      r10d, edi
        sub      r10d, 1
        cmp      r10d, 0x270E
        ja       G_M4320_IG23
        mov      r10d, eax
        sub      r10d, 1
        cmp      r10d, 11
        ja       G_M4320_IG23
        test     ecx, ecx
        jle      G_M4320_IG23
        test     dil, 3
        jne      SHORT G_M4320_IG07
        test     dil, 15
        je       SHORT G_M4320_IG06
        mov      r10d, edi
        imul     r10, r10, 0xD1FFAB1E
        shr      r10, 35
        imul     r10d, r10d, 25
        mov      r11d, edi
        sub      r11d, r10d
        je       SHORT G_M4320_IG07
 						;; size=167 bbWeight=0.50 PerfScore 16.17
 G_M4320_IG06:
        mov      r10, 0xD1FFAB1E      ; static handle
        jmp      SHORT G_M4320_IG08
 						;; size=12 bbWeight=0.50 PerfScore 1.12
 G_M4320_IG07:
        mov      r10, 0xD1FFAB1E      ; static handle
 						;; size=10 bbWeight=0.50 PerfScore 0.12
 G_M4320_IG08:
        mov      r11d, eax
        mov      r11d, dword ptr [r10+4*r11]
        lea      r12d, [rax-0x01]
        cmp      r12d, 13
        jae      G_M4320_IG27
        dec      eax
        mov      eax, dword ptr [r10+4*rax]
        sub      r11d, eax
        cmp      r11d, ecx
        jb       G_M4320_IG23
        dec      edi
        mov      r10d, edi
        imul     r10, r10, 0xD1FFAB1E
        shr      r10, 37
        imul     edi, edi, 0x5B5
        shr      edi, 2
        sub      edi, r10d
        shr      r10d, 2
        add      edi, r10d
        add      edi, eax
        lea      edi, [rdi+rcx-0x01]
        mov      r12d, edi
        mov      rdi, 0xD1FFAB1E
        imul     r12, rdi
        cmp      edx, 24
        jae      G_M4320_IG22
        cmp      esi, 60
        jae      G_M4320_IG22
        cmp      r8d, 60
        jae      G_M4320_IG22
        imul     edi, edx, 0xE10
        imul     eax, esi, 60
        add      edi, eax
        add      edi, r8d
        imul     rdi, rdi, 0xD1FFAB1E
        add      r12, rdi
        mov      rax, r12
        test     r9d, r9d
        mov      qword ptr [rbp-0x68], rax
        je       SHORT G_M4320_IG09
        mov      rax, 0xD1FFAB1E
        and      rax, r12
        movsxd   rdi, r9d
        add      rax, rdi
        mov      rdi, 0xD1FFAB1E
        cmp      rax, rdi
        ja       G_M4320_IG21
        mov      rdi, 0xD1FFAB1E
        and      rdi, r12
        or       rax, rdi
        mov      qword ptr [rbp-0x68], rax
 						;; size=219 bbWeight=0.50 PerfScore 17.62
 G_M4320_IG09:
        shl      ebx, 24
        shl      r15d, 16
        or       ebx, r15d
        shl      r14d, 8
        or       ebx, r14d
        or       ebx, r13d
        mov      rdi, 0xD1FFAB1E      ; System.DateTime
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      rdi, qword ptr [rbp-0x68]
        mov      esi, ebx
        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 [r15+0x08], rax
        mov      rbx, r15
        jmp      G_M4320_IG19
 						;; size=68 bbWeight=0.50 PerfScore 5.75
 G_M4320_IG10:
        cmp      eax, 16
        jne      G_M4320_IG19
        mov      rdx, 0xD1FFAB1E      ; 'System.Double'
        cmp      r15, rdx
        je       G_M4320_IG19
        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_IG19
 						;; size=67 bbWeight=0.50 PerfScore 5.50
 G_M4320_IG11:
        cmp      eax, 1
        jne      G_M4320_IG15
        mov      rsi, 0xD1FFAB1E      ; 'System.Object'
        cmp      r15, rsi
        jne      G_M4320_IG26
        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
        je       SHORT G_M4320_IG12
        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_IG19
 						;; size=145 bbWeight=0.50 PerfScore 10.75
 G_M4320_IG12:
        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
        jne      SHORT G_M4320_IG13
        mov      rdi, r15
        call     [r14+0x38]System.Xml.XPath.XPathItem:get_TypedValue():System.Object:this
        mov      rbx, rax
        jmp      G_M4320_IG19
 						;; size=54 bbWeight=0.50 PerfScore 9.00
 G_M4320_IG13:
        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
        jne      SHORT G_M4320_IG14
        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_IG19
 						;; size=101 bbWeight=0.50 PerfScore 7.62
 G_M4320_IG14:
        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_IG19
 						;; size=24 bbWeight=0.50 PerfScore 4.75
 G_M4320_IG15:
        cmp      eax, 2
        jne      G_M4320_IG19
        mov      rsi, 0xD1FFAB1E      ; 'System.Xml.XPath.XPathNodeIterator'
        cmp      r15, rsi
        je       G_M4320_IG18
        mov      rsi, 0xD1FFAB1E      ; 'System.Xml.XPath.XPathNavigator[]'
        cmp      r15, rsi
        jne      G_M4320_IG19
        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_IG17
 						;; size=135 bbWeight=0.50 PerfScore 9.25
 G_M4320_IG16:
        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_IG27
+       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_IG16
-						;; size=64 bbWeight=4 PerfScore 51.00
+						;; size=66 bbWeight=4 PerfScore 60.00
 G_M4320_IG17:
        jmp      SHORT G_M4320_IG19
 						;; size=2 bbWeight=0.50 PerfScore 1.00
 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
 						;; size=66 bbWeight=0.50 PerfScore 4.12
 G_M4320_IG19:
        mov      rax, rbx
 						;; size=3 bbWeight=1 PerfScore 0.25
 G_M4320_IG20:
        add      rsp, 72
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 G_M4320_IG21:
        xor      edi, edi
        mov      rax, 0xD1FFAB1E      ; code for System.DateTime:ThrowDateArithmetic(int)
        call     [rax]System.DateTime:ThrowDateArithmetic(int)
        int3     
 						;; size=15 bbWeight=0 PerfScore 0.00
 G_M4320_IG22:
        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_IG23:
        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_IG24:
        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
        int3     
 						;; size=106 bbWeight=0 PerfScore 0.00
 G_M4320_IG25:
        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_IG26:
        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
 G_M4320_IG27:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1552, prolog size 40, PerfScore 172.56, instruction count 349, allocated bytes for code 1552 (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 1554, prolog size 40, PerfScore 181.56, instruction count 349, allocated bytes for code 1554 (MethodHash=581aef1f) for method System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltArgument(System.Xml.Xsl.XmlQueryType,System.Object,System.Type):System.Object (FullOpts)

@MihuBot
Copy link
Owner Author

MihuBot commented Jun 15, 2024

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
 ; 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 <System.Xml.Xsl.Runtime.XsltLibrary>
 ;  V01 arg1         [V01,T05] (  3,  3   )     ref  ->  r15         class-hnd single-def <System.String>
 ;  V02 arg2         [V02,T02] (  4,  7   )     ref  ->  rbx         class-hnd single-def <System.Collections.Generic.IList`1[System.String]>
 ;  V03 loc0         [V03,T03] (  4,  7   )     ref  ->  r14         class-hnd exact single-def <System.String[]>
-;  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" <System.String>
+;  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)
-2 (-1.59 % of base) - System.Runtime.Caching.MemoryCache:get_AllSRefTargets():System.Object[]:this
 ; 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 <System.Runtime.Caching.MemoryCache>
-;  V01 loc0         [V01,T04] (  3,  6   )     ref  ->  r14         class-hnd exact single-def <System.Runtime.Caching.MemoryCacheStore[]>
+;  V01 loc0         [V01,T04] (  4, 10   )     ref  ->  r14         class-hnd exact single-def <System.Runtime.Caching.MemoryCacheStore[]>
 ;* V02 loc1         [V02,T06] (  0,  0   )     int  ->  zero-ref   
 ;* V03 loc2         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <System.Runtime.Caching.MemoryCacheStore[]>
 ;# 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" <System.Runtime.Caching.MemoryCacheStore>
+;  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)
-1 (-0.08 % of base) - System.Runtime.Serialization.DataContracts.ClassDataContract:Equals(System.Object,System.Collections.Generic.HashSet`1[System.Runtime.Serialization.DataContracts.DataContractPairKey]):ubyte:this
 ; 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 <System.Runtime.Serialization.DataContracts.ClassDataContract>
 ;  V01 arg1         [V01,T20] (  7,  4.75)     ref  ->  r14         class-hnd single-def <System.Object>
 ;  V02 arg2         [V02,T14] (  6,  6   )     ref  ->  r15         class-hnd single-def <System.Collections.Generic.HashSet`1[System.Runtime.Serialization.DataContracts.DataContractPairKey]>
 ;  V03 loc0         [V03,T03] ( 13, 16.50)     ref  ->  r14         class-hnd exact <System.Runtime.Serialization.DataContracts.ClassDataContract>
 ;  V04 loc1         [V04,T11] (  7, 12   )     ref  ->  r12         class-hnd exact <System.Collections.Generic.Dictionary`2[System.String,System.Runtime.Serialization.DataContracts.DataMember]>
 ;  V05 loc2         [V05,T10] (  8, 13   )     ref  ->  r13         class-hnd exact <System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]>
 ;  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 <System.Runtime.Serialization.DataContracts.DataMember>
 ;# 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" <System.Runtime.Serialization.DataContracts.ClassDataContract>
-;  V11 tmp2         [V11,T24] (  3,  3   )     ref  ->  r12         class-hnd exact "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[System.String,System.Runtime.Serialization.DataContracts.DataMember]>
-;  V12 tmp3         [V12,T25] (  3,  3   )     ref  ->  r13         class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]>
+;  V11 tmp2         [V11,T25] (  3,  3   )     ref  ->  r12         class-hnd exact "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[System.String,System.Runtime.Serialization.DataContracts.DataMember]>
+;  V12 tmp3         [V12,T26] (  3,  3   )     ref  ->  r13         class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]>
 ;  V13 tmp4         [V13,T04] (  2, 16   )     ref  ->  [rbp-0x40]  class-hnd exact spill-single-def "non-inline candidate call" <System.String>
 ;* V14 tmp5         [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "non-inline candidate call" <System.Runtime.Serialization.DataContracts.DataMember>
 ;* V15 tmp6         [V15    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.Runtime.Serialization.DataContracts.ClassDataContract>
 ;* V16 tmp7         [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper>
 ;* V17 tmp8         [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper>
 ;* V18 tmp9         [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper>
-;  V19 tmp10        [V19,T29] (  2,  2   )     ref  ->  r13         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]>
+;  V19 tmp10        [V19,T30] (  2,  2   )     ref  ->  r13         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]>
 ;* V20 tmp11        [V20    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V21 tmp12        [V21    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
+;* V21 tmp12        [V21    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Runtime.Serialization.DataContracts.DataMember>
 ;* V22 tmp13        [V22    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Runtime.Serialization.DataContracts.DataMember+CriticalHelper>
-;  V23 tmp14        [V23,T05] (  2, 16   )     ref  ->  rdx         class-hnd "Inlining Arg" <System.__Canon>
+;  V23 tmp14        [V23,T05] (  2, 16   )     ref  ->  rdx         class-hnd exact "Inlining Arg" <System.Runtime.Serialization.DataContracts.DataMember>
 ;* V24 tmp15        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]>
-;* V25 tmp16        [V25    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
+;* V25 tmp16        [V25    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Runtime.Serialization.DataContracts.DataMember>
 ;* V26 tmp17        [V26    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Runtime.Serialization.DataContracts.DataMember+CriticalHelper>
 ;* V27 tmp18        [V27,T23] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V28 tmp19        [V28,T06] (  2, 16   )     ref  ->  rsi         class-hnd exact "Inlining Arg" <System.String>
 ;  V29 tmp20        [V29,T13] (  3, 10   )   byref  ->  rax         "Inline stloc first use temp"
 ;* V30 tmp21        [V30    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Runtime.Serialization.DataContracts.DataMember>
 ;* V31 tmp22        [V31    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Runtime.Serialization.DataContracts.DataMember+CriticalHelper>
-;  V32 tmp23        [V32,T21] (  3,  6   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <System.Runtime.Serialization.DataContracts.DataMember[]>
-;  V33 tmp24        [V33,T16] (  4,  8   )     int  ->  rcx         "Inline stloc first use temp"
-;  V34 tmp25        [V34,T12] (  3, 12   )     ref  ->  rax         class-hnd "Inlining Arg" <System.__Canon>
+;  V32 tmp23        [V32,T21] (  3,  6   )     ref  ->  rcx         class-hnd "Inline stloc first use temp" <System.Runtime.Serialization.DataContracts.DataMember[]>
+;  V33 tmp24        [V33,T16] (  4,  8   )     int  ->  rdx         "Inline stloc first use temp"
+;  V34 tmp25        [V34,T12] (  3, 12   )     ref  ->  rax         class-hnd exact "Inlining Arg" <System.Runtime.Serialization.DataContracts.DataMember>
 ;* V35 tmp26        [V35    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]>
 ;* V36 tmp27        [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Collections.Generic.Dictionary`2+ValueCollection[System.String,System.Runtime.Serialization.DataContracts.DataMember]>
-;  V37 tmp28        [V37,T30] (  2,  2   )     ref  ->  rdi         class-hnd exact "dup spill" <System.Collections.Generic.Dictionary`2+ValueCollection[System.__Canon,System.__Canon]>
-;  V38 tmp29        [V38,T28] (  4,  2   )     ref  ->  rdi        
+;  V37 tmp28        [V37,T31] (  2,  2   )     ref  ->  rdi         class-hnd exact "dup spill" <System.Collections.Generic.Dictionary`2+ValueCollection[System.__Canon,System.__Canon]>
+;  V38 tmp29        [V38,T29] (  4,  2   )     ref  ->  rdi        
 ;  V39 tmp30        [V39,T22] (  4,  4   )     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+ValueCollection[System.String,System.Runtime.Serialization.DataContracts.DataMember]>
 ;* V40 tmp31        [V40    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <System.Collections.Generic.Dictionary`2+ValueCollection[System.String,System.Runtime.Serialization.DataContracts.DataMember]>
 ;* V41 tmp32        [V41    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper>
 ;* V42 tmp33        [V42    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper>
 ;* V43 tmp34        [V43    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper>
 ;* V44 tmp35        [V44    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper>
 ;* V45 tmp36        [V45    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper>
-;  V46 tmp37        [V46,T26] (  3,  3   )     int  ->  rax         "Single return block return value"
+;  V46 tmp37        [V46,T27] (  3,  3   )     int  ->  rax         "Single return block return value"
 ;  V47 tmp38        [V47,T07] (  2, 16   )     ref  ->  rdi         "argument with side effect"
 ;  V48 tmp39        [V48,T08] (  2, 16   )     ref  ->  rdi         "argument with side effect"
 ;  V49 tmp40        [V49,T09] (  2, 16   )     ref  ->  rdi         "argument with side effect"
 ;  V50 tmp41        [V50,T17] (  2,  8   )     ref  ->  rdi         "argument with side effect"
 ;  V51 tmp42        [V51,T18] (  2,  8   )     ref  ->  rdi         "argument with side effect"
 ;  V52 tmp43        [V52,T19] (  2,  8   )     ref  ->  rsi         "argument with side effect"
-;  V53 cse0         [V53,T31] (  3,  1.50)     ref  ->  rdi         "CSE #07: moderate"
-;  V54 cse1         [V54,T27] (  5,  2.50)     ref  ->  rsi         multi-def "CSE #05: moderate"
+;  V53 cse0         [V53,T32] (  3,  1.50)     ref  ->  rdi         "CSE #08: moderate"
+;  V54 cse1         [V54,T28] (  5,  2.50)     ref  ->  rsi         multi-def "CSE #06: moderate"
+;  V55 cse2         [V55,T24] (  2,  4   )     int  ->  rdi         "CSE #04: 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
        jne      G_M24286_IG25
 						;; size=29 bbWeight=1 PerfScore 5.25
 G_M24286_IG03:
        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_IG23
        test     r14, r14
        je       G_M24286_IG23
 						;; size=38 bbWeight=0.50 PerfScore 3.25
 G_M24286_IG04:
        mov      rdi, 0xD1FFAB1E      ; System.Runtime.Serialization.DataContracts.ClassDataContract
        cmp      qword ptr [r14], rdi
        jne      G_M24286_IG23
 						;; size=19 bbWeight=0.25 PerfScore 1.06
 G_M24286_IG05:
        mov      rdi, gword ptr [rbx+0x40]
        cmp      byte  ptr [rdi+0xC9], 0
        jne      G_M24286_IG18
        mov      rdi, gword ptr [r14+0x40]
        cmp      byte  ptr [rdi+0xC9], 0
        jne      G_M24286_IG23
        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
        je       G_M24286_IG17
        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_IG16
        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      ; global ptr
        test     byte  ptr [rdi], 1
        je       G_M24286_IG27
 						;; size=176 bbWeight=0.50 PerfScore 19.12
 G_M24286_IG06:
        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_IG08
 						;; size=52 bbWeight=0.50 PerfScore 6.25
 G_M24286_IG07:
        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_IG07
 						;; size=147 bbWeight=4 PerfScore 175.00
 G_M24286_IG08:
        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_IG14
 						;; size=30 bbWeight=0.50 PerfScore 4.38
 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
        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
        jne      SHORT G_M24286_IG12
 						;; size=63 bbWeight=4 PerfScore 79.00
 G_M24286_IG10:
        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      ecx, dword ptr [r13+0x10]
-       cmp      dword ptr [rdi+0x08], ecx
+       mov      rcx, gword ptr [r13+0x08]
+       mov      edx, dword ptr [r13+0x10]
+       mov      edi, dword ptr [rcx+0x08]
+       cmp      edi, edx
        ja       SHORT G_M24286_IG11
        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
        jmp      G_M24286_IG13
-						;; size=75 bbWeight=2 PerfScore 55.50
+						;; size=77 bbWeight=2 PerfScore 54.00
 G_M24286_IG11:
-       lea      esi, [rcx+0x01]
-       mov      dword ptr [r13+0x10], esi
-       movsxd   rsi, ecx
-       mov      rdx, rax
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
-       call     [rax]CORINFO_HELP_ARRADDR_ST
+       lea      edi, [rdx+0x01]
+       mov      dword ptr [r13+0x10], edi
+       mov      edi, edx
+       lea      rdi, bword ptr [rcx+8*rdi+0x10]
+       mov      rsi, rax
+       call     CORINFO_HELP_ASSIGN_REF
        jmp      SHORT G_M24286_IG13
-						;; size=27 bbWeight=2 PerfScore 14.50
+						;; size=24 bbWeight=2 PerfScore 12.00
 G_M24286_IG12:
        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_IG23
        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
 						;; size=101 bbWeight=2 PerfScore 63.00
 G_M24286_IG13:
        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_IG09
 						;; size=38 bbWeight=4 PerfScore 47.00
 G_M24286_IG14:
        mov      rdi, gword ptr [r12+0x28]
        test     rdi, rdi
        jne      SHORT G_M24286_IG15
        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_IG15:
        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       G_M24286_IG23
        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       G_M24286_IG23
        jmp      SHORT G_M24286_IG19
 						;; size=45 bbWeight=0.50 PerfScore 5.62
 G_M24286_IG16:
        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      SHORT G_M24286_IG19
        jmp      G_M24286_IG23
 						;; size=39 bbWeight=0.50 PerfScore 5.12
 G_M24286_IG17:
        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       SHORT G_M24286_IG19
        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      SHORT G_M24286_IG19
        jmp      SHORT G_M24286_IG23
 						;; size=56 bbWeight=0.50 PerfScore 7.50
 G_M24286_IG18:
        mov      rdi, gword ptr [r14+0x40]
        cmp      byte  ptr [rdi+0xC9], 0
        je       SHORT G_M24286_IG23
 						;; size=13 bbWeight=0.50 PerfScore 3.00
 G_M24286_IG19:
        mov      rdi, gword ptr [rbx+0x40]
        mov      rdi, gword ptr [rdi+0x50]
        test     rdi, rdi
        je       SHORT G_M24286_IG20
        mov      rsi, gword ptr [r14+0x40]
        mov      rsi, gword ptr [rsi+0x50]
        test     rsi, rsi
        je       SHORT G_M24286_IG23
        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
        jmp      SHORT G_M24286_IG21
 						;; size=45 bbWeight=0.50 PerfScore 9.50
 G_M24286_IG20:
        mov      rax, gword ptr [r14+0x40]
        mov      rsi, gword ptr [rax+0x50]
        test     rsi, rsi
        sete     al
        movzx    rax, al
 						;; size=17 bbWeight=0.50 PerfScore 2.75
 G_M24286_IG21:
        movzx    rax, al
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M24286_IG22:
        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_IG23:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M24286_IG24:
        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_IG25:
        mov      eax, 1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
 G_M24286_IG26:
        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_IG27:
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M24286_IG06
 						;; size=20 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1178, prolog size 19, PerfScore 526.69, instruction count 290, allocated bytes for code 1178 (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 1177, prolog size 19, PerfScore 522.69, instruction count 291, allocated bytes for code 1177 (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)

@MihuBot
Copy link
Owner Author

MihuBot commented Jun 15, 2024

@MichalPetryka

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

No branches or pull requests

1 participant