Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[JitDiff X64] [AndyAyersMS] JIT: boost inlining when callee unboxes an arg #810

Open
MihuBot opened this issue Dec 10, 2024 · 2 comments
Open

Comments

@MihuBot
Copy link
Owner

MihuBot commented Dec 10, 2024

Job completed in 14 minutes 26 seconds.
dotnet/runtime#110596

Diffs

Found 267 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 40203327
Total bytes of diff: 40206665
Total bytes of delta: 3338 (0.01 % of base)
Total relative delta: 4.10
    diff is a regression.
    relative diff is a regression.


Top file regressions (bytes):
        2694 : System.Configuration.ConfigurationManager.dasm (0.67 % of base)
         266 : System.Net.Http.dasm (0.03 % of base)
         225 : System.Private.DataContractSerialization.dasm (0.02 % of base)
          92 : System.Text.RegularExpressions.dasm (0.01 % of base)
          22 : System.ComponentModel.Composition.dasm (0.01 % of base)
          20 : System.Private.CoreLib.dasm (0.00 % of base)
          19 : Microsoft.CSharp.dasm (0.01 % of base)

7 total files with Code Size differences (0 improved, 7 regressed), 252 unchanged.

Top method regressions (bytes):
        1051 (62.01 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.ConfigurationElement:UnMergeLockList(System.Configuration.ConfigurationLockCollection,System.Configuration.ConfigurationLockCollection,int):System.Configuration.ConfigurationLockCollection:this (FullOpts)
         880 (33.45 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.ConfigurationElement:MergeLocks(System.Configuration.ConfigurationElement):this (FullOpts)
         323 (19.67 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.ConfigurationElement:ParseLockedAttributes(System.Configuration.ConfigurationValue,int):System.Configuration.ConfigurationLockCollection:this (FullOpts)
         266 (24.88 % of base) : System.Net.Http.dasm - System.Net.Http.Headers.HttpHeaders:TryParseAndAddRawHeaderValue(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo,System.String,ubyte):ubyte (FullOpts)
         225 (8.42 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadSimpleDictionary(System.Runtime.Serialization.DataContracts.CollectionDataContract,System.Type):this (FullOpts)
         116 (63.74 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.TimeSpanMinutesOrInfiniteConverter:ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type):System.Object:this (FullOpts)
         116 (63.74 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.TimeSpanSecondsOrInfiniteConverter:ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type):System.Object:this (FullOpts)
         105 (8.68 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.ConfigurationElement:ResetLockLists(System.Configuration.ConfigurationElement):this (FullOpts)
          55 (6.12 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.ConfigurationLockCollection:ClearInternal(ubyte):this (FullOpts)
          52 (31.71 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.GroupCollection:GetGroup(int):System.Text.RegularExpressions.Group:this (FullOpts)
          48 (8.60 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.ConfigurationLockCollection:.ctor(System.Configuration.ConfigurationElement,int,System.String,System.Configuration.ConfigurationLockCollection):this (FullOpts)
          40 (24.39 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexParser:GroupNameFromNumber(System.Collections.Hashtable,System.String[],int,int):System.String (FullOpts)
          22 (9.09 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.Hosting.ScopingExtensions:ContainsPartMetadata[long](System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.String,long):ubyte (FullOpts)
          20 (42.55 % of base) : System.Private.CoreLib.dasm - System.Nullable`1[long]:Equals(System.Object):ubyte:this (FullOpts)
          19 (3.00 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)

Top method regressions (percentages):
         116 (63.74 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.TimeSpanMinutesOrInfiniteConverter:ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type):System.Object:this (FullOpts)
         116 (63.74 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.TimeSpanSecondsOrInfiniteConverter:ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type):System.Object:this (FullOpts)
        1051 (62.01 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.ConfigurationElement:UnMergeLockList(System.Configuration.ConfigurationLockCollection,System.Configuration.ConfigurationLockCollection,int):System.Configuration.ConfigurationLockCollection:this (FullOpts)
          20 (42.55 % of base) : System.Private.CoreLib.dasm - System.Nullable`1[long]:Equals(System.Object):ubyte:this (FullOpts)
         880 (33.45 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.ConfigurationElement:MergeLocks(System.Configuration.ConfigurationElement):this (FullOpts)
          52 (31.71 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.GroupCollection:GetGroup(int):System.Text.RegularExpressions.Group:this (FullOpts)
         266 (24.88 % of base) : System.Net.Http.dasm - System.Net.Http.Headers.HttpHeaders:TryParseAndAddRawHeaderValue(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo,System.String,ubyte):ubyte (FullOpts)
          40 (24.39 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexParser:GroupNameFromNumber(System.Collections.Hashtable,System.String[],int,int):System.String (FullOpts)
         323 (19.67 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.ConfigurationElement:ParseLockedAttributes(System.Configuration.ConfigurationValue,int):System.Configuration.ConfigurationLockCollection:this (FullOpts)
          22 (9.09 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.Hosting.ScopingExtensions:ContainsPartMetadata[long](System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.String,long):ubyte (FullOpts)
         105 (8.68 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.ConfigurationElement:ResetLockLists(System.Configuration.ConfigurationElement):this (FullOpts)
          48 (8.60 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.ConfigurationLockCollection:.ctor(System.Configuration.ConfigurationElement,int,System.String,System.Configuration.ConfigurationLockCollection):this (FullOpts)
         225 (8.42 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadSimpleDictionary(System.Runtime.Serialization.DataContracts.CollectionDataContract,System.Type):this (FullOpts)
          55 (6.12 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.ConfigurationLockCollection:ClearInternal(ubyte):this (FullOpts)
          19 (3.00 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)

15 total methods with Code Size differences (0 improved, 15 regressed), 232918 unchanged.

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

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Dec 10, 2024

Top method regressions

323 (19.67 % of base) - System.Configuration.ConfigurationElement:ParseLockedAttributes(System.Configuration.ConfigurationValue,int):System.Configuration.ConfigurationLockCollection:this
 ; Assembly listing for method System.Configuration.ConfigurationElement:ParseLockedAttributes(System.Configuration.ConfigurationValue,int):System.Configuration.ConfigurationLockCollection:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 21 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 21 single block inlinees; 9 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T02] ( 11, 19   )     ref  ->  r15         this class-hnd single-def <System.Configuration.ConfigurationElement>
-;  V01 arg1         [V01,T09] ( 13,  7   )     ref  ->  r14         class-hnd single-def <System.Configuration.ConfigurationValue>
+;  V01 arg1         [V01,T21] ( 13,  7   )     ref  ->  r14         class-hnd single-def <System.Configuration.ConfigurationValue>
 ;  V02 arg2         [V02,T01] ( 13, 21.50)     int  ->  rbx         single-def
-;  V03 loc0         [V03,T23] (  3,  4   )     ref  ->  r13         class-hnd exact single-def <System.Configuration.ConfigurationLockCollection>
-;  V04 loc1         [V04,T22] (  5,  4.50)     ref  ->  rdi         class-hnd exact single-def <System.String>
-;  V05 loc2         [V05,T26] (  3,  2.25)     ref  ->  rax         class-hnd exact single-def <System.String[]>
-;* V06 loc3         [V06,T31] (  0,  0   )     int  ->  zero-ref   
-;  V07 loc4         [V07,T00] ( 15, 32.50)     ref  ->  [rbp-0x40]  class-hnd exact spill-single-def <System.String>
-;  V08 loc5         [V08,T05] (  7, 12   )     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def <System.Configuration.ConfigurationProperty>
-;  V09 loc6         [V09,T06] (  6, 12   )     ref  ->  [rbp-0x50]  class-hnd <System.Configuration.ConfigurationElementCollection>
+;  V03 loc0         [V03,T04] (  8, 14   )     ref  ->  r13         class-hnd exact single-def <System.Configuration.ConfigurationLockCollection>
+;  V04 loc1         [V04,T41] (  5,  4.50)     ref  ->  rdi         class-hnd exact single-def <System.String>
+;  V05 loc2         [V05,T20] (  4, 10   )     ref  ->  r12         class-hnd exact single-def <System.String[]>
+;* V06 loc3         [V06,T47] (  0,  0   )     int  ->  zero-ref   
+;  V07 loc4         [V07,T00] ( 23, 48.50)     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def <System.String>
+;  V08 loc5         [V08,T05] (  7, 12   )     ref  ->  [rbp-0x58]  class-hnd exact spill-single-def <System.Configuration.ConfigurationProperty>
+;  V09 loc6         [V09,T06] (  6, 12   )     ref  ->  [rbp-0x60]  class-hnd <System.Configuration.ConfigurationElementCollection>
 ;# V10 OutArgs      [V10    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V11 tmp1         [V11,T21] (  3,  6   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Configuration.ConfigurationLockCollection>
+;  V11 tmp1         [V11,T33] (  3,  6   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Configuration.ConfigurationLockCollection>
 ;* V12 tmp2         [V12    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[ushort]>
-;  V13 tmp3         [V13,T42] (  2,  0   )     ref  ->  rbx         class-hnd exact "impAppendStmt" <System.String>
-;  V14 tmp4         [V14,T37] (  3,  0   )     ref  ->  r15         class-hnd exact "NewObj constructor temp" <System.Configuration.ConfigurationErrorsException>
+;  V13 tmp3         [V13,T58] (  2,  0   )     ref  ->  rbx         class-hnd exact "impAppendStmt" <System.String>
+;  V14 tmp4         [V14,T53] (  3,  0   )     ref  ->  r15         class-hnd exact "NewObj constructor temp" <System.Configuration.ConfigurationErrorsException>
 ;* V15 tmp5         [V15    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.RuntimeType>
 ;* V16 tmp6         [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.RuntimeType>
-;  V17 tmp7         [V17,T43] (  2,  0   )     ref  ->  r12         class-hnd exact single-def "impAppendStmt" <System.String>
-;  V18 tmp8         [V18,T44] (  2,  0   )     ref  ->  r13         class-hnd exact single-def "impAppendStmt" <System.String>
-;  V19 tmp9         [V19,T38] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Configuration.ConfigurationErrorsException>
-;  V20 tmp10        [V20,T45] (  2,  0   )     ref  ->  rbx         class-hnd exact single-def "impAppendStmt" <System.String>
-;  V21 tmp11        [V21,T46] (  2,  0   )     ref  ->  r15         class-hnd exact single-def "impAppendStmt" <System.String>
-;  V22 tmp12        [V22,T39] (  3,  0   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Configuration.ConfigurationErrorsException>
-;  V23 tmp13        [V23,T47] (  2,  0   )     ref  ->  rbx         class-hnd exact single-def "impAppendStmt" <System.String>
-;  V24 tmp14        [V24,T48] (  2,  0   )     ref  ->  r15         class-hnd exact single-def "impAppendStmt" <System.String>
-;  V25 tmp15        [V25,T40] (  3,  0   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Configuration.ConfigurationErrorsException>
-;  V26 tmp16        [V26,T49] (  2,  0   )     ref  ->  rbx         class-hnd exact single-def "impAppendStmt" <System.String>
-;  V27 tmp17        [V27,T50] (  2,  0   )     ref  ->  r15         class-hnd exact single-def "impAppendStmt" <System.String>
-;  V28 tmp18        [V28,T41] (  3,  0   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Configuration.ConfigurationErrorsException>
-;* V29 tmp19        [V29,T33] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;  V17 tmp7         [V17,T59] (  2,  0   )     ref  ->  r13         class-hnd exact single-def "impAppendStmt" <System.String>
+;  V18 tmp8         [V18,T60] (  2,  0   )     ref  ->  rbx         class-hnd exact single-def "impAppendStmt" <System.String>
+;  V19 tmp9         [V19,T54] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Configuration.ConfigurationErrorsException>
+;  V20 tmp10        [V20,T61] (  2,  0   )     ref  ->  rbx         class-hnd exact single-def "impAppendStmt" <System.String>
+;  V21 tmp11        [V21,T62] (  2,  0   )     ref  ->  r15         class-hnd exact single-def "impAppendStmt" <System.String>
+;  V22 tmp12        [V22,T55] (  3,  0   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Configuration.ConfigurationErrorsException>
+;  V23 tmp13        [V23,T63] (  2,  0   )     ref  ->  rbx         class-hnd exact single-def "impAppendStmt" <System.String>
+;  V24 tmp14        [V24,T64] (  2,  0   )     ref  ->  r15         class-hnd exact single-def "impAppendStmt" <System.String>
+;  V25 tmp15        [V25,T56] (  3,  0   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Configuration.ConfigurationErrorsException>
+;  V26 tmp16        [V26,T65] (  2,  0   )     ref  ->  rbx         class-hnd exact single-def "impAppendStmt" <System.String>
+;  V27 tmp17        [V27,T66] (  2,  0   )     ref  ->  r15         class-hnd exact single-def "impAppendStmt" <System.String>
+;  V28 tmp18        [V28,T57] (  3,  0   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Configuration.ConfigurationErrorsException>
+;* V29 tmp19        [V29,T49] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V30 tmp20        [V30    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Configuration.PropertySourceInfo>
-;  V31 tmp21        [V31,T51] (  2,  0   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.Configuration.PropertySourceInfo>
+;  V31 tmp21        [V31,T67] (  2,  0   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.Configuration.PropertySourceInfo>
 ;* V32 tmp22        [V32    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Configuration.PropertySourceInfo>
-;  V33 tmp23        [V33,T52] (  2,  0   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.Configuration.PropertySourceInfo>
+;  V33 tmp23        [V33,T68] (  2,  0   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.Configuration.PropertySourceInfo>
 ;* V34 tmp24        [V34    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Configuration.PropertySourceInfo>
-;  V35 tmp25        [V35,T53] (  2,  0   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.Configuration.PropertySourceInfo>
+;  V35 tmp25        [V35,T69] (  2,  0   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.Configuration.PropertySourceInfo>
 ;* V36 tmp26        [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Configuration.PropertySourceInfo>
-;  V37 tmp27        [V37,T54] (  2,  0   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.Configuration.PropertySourceInfo>
-;* V38 tmp28        [V38,T30] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;  V37 tmp27        [V37,T70] (  2,  0   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.Configuration.PropertySourceInfo>
+;* V38 tmp28        [V38,T46] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V39 tmp29        [V39    ] (  0,  0   )     ref  ->  zero-ref    "spilling varStr"
 ;* V40 tmp30        [V40    ] (  0,  0   )     int  ->  zero-ref    "spilling unroll qmark"
 ;* V41 tmp31        [V41    ] (  0,  0   )     ref  ->  zero-ref    "spilling varStr"
-;  V42 tmp32        [V42,T16] (  2,  8   )     int  ->  rdi         "spilling unroll qmark"
+;  V42 tmp32        [V42,T29] (  2,  8   )     int  ->  rdi         "spilling unroll qmark"
 ;* V43 tmp33        [V43    ] (  0,  0   )     ref  ->  zero-ref    "spilling varStr"
-;  V44 tmp34        [V44,T17] (  2,  8   )     int  ->  rdi         "spilling unroll qmark"
+;  V44 tmp34        [V44,T30] (  2,  8   )     int  ->  rdi         "spilling unroll qmark"
 ;* V45 tmp35        [V45    ] (  0,  0   )     ref  ->  zero-ref    "spilling varStr"
-;  V46 tmp36        [V46,T18] (  2,  8   )     int  ->  rsi         "spilling unroll qmark"
+;  V46 tmp36        [V46,T31] (  2,  8   )     int  ->  rsi         "spilling unroll qmark"
 ;  V47 tmp37        [V47,T07] (  3, 12   )     ref  ->  rax         class-hnd "Inlining Arg" <System.Configuration.ConfigurationPropertyCollection>
 ;  V48 tmp38        [V48,T08] (  3, 12   )     ref  ->  rax         class-hnd "Inlining Arg" <System.Configuration.ConfigurationPropertyCollection>
-;  V49 tmp39        [V49,T29] (  2,  2   )   byref  ->  rsi         single-def "field V12._reference (fldOffset=0x0)" P-INDEP
-;* V50 tmp40        [V50,T32] (  0,  0   )     int  ->  zero-ref    single-def "field V12._length (fldOffset=0x8)" P-INDEP
-;  V51 tmp41        [V51,T12] (  2,  8   )     ref  ->  rdi         "argument with side effect"
-;  V52 tmp42        [V52,T13] (  2,  8   )     ref  ->  rsi         "argument with side effect"
-;  V53 tmp43        [V53,T14] (  2,  8   )     ref  ->  rsi         "argument with side effect"
-;  V54 tmp44        [V54,T15] (  2,  8   )     ref  ->   r8         "argument with side effect"
-;  V55 tmp45        [V55,T55] (  2,  0   )     ref  ->  rsi         "argument with side effect"
-;  V56 tmp46        [V56,T56] (  2,  0   )     ref  ->  rbx         single-def "argument with side effect"
-;  V57 tmp47        [V57,T57] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V58 tmp48        [V58,T58] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V59 tmp49        [V59,T59] (  2,  0   )     ref  ->  rbx         single-def "argument with side effect"
-;  V60 tmp50        [V60,T60] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V61 tmp51        [V61,T61] (  2,  0   )     ref  ->  rbx         single-def "argument with side effect"
-;  V62 tmp52        [V62,T62] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V63 tmp53        [V63,T63] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V64 tmp54        [V64,T64] (  2,  0   )     ref  ->  rbx         single-def "argument with side effect"
-;  V65 tmp55        [V65,T65] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V66 cse0         [V66,T11] (  4,  8   )    long  ->  [rbp-0x30]  spill-single-def "CSE #10: moderate"
-;  V67 cse1         [V67,T20] (  4,  6   )     ref  ->  r12         "CSE #11: moderate"
-;  V68 cse2         [V68,T27] (  3,  2.25)     int  ->  rcx         "CSE #12: moderate"
-;  V69 cse3         [V69,T10] (  6,  8   )     int  ->  [rbp-0x34]  spill-single-def "CSE #06: moderate"
-;  V70 rat0         [V70,T03] (  4, 12.25)   byref  ->  [rbp-0x58]  "Strength reduced derived IV"
-;  V71 rat1         [V71,T04] (  4, 12.25)     int  ->  [rbp-0x38]  "Trip count IV"
-;  V72 rat2         [V72,T24] (  3,  4   )     ref  ->  rsi         "Spilling to split statement for tree"
-;  V73 rat3         [V73,T19] (  4,  7   )     ref  ->  rdi         "replacement local"
-;  V74 rat4         [V74,T28] (  3,  2   )    long  ->  rax         "CSE for expectedClsNode"
-;  V75 rat5         [V75,T25] (  3,  2.80)     int  ->  rax         "ReplaceWithLclVar is creating a new local variable"
-;  V76 rat6         [V76,T34] (  3, 12   )  simd16  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
-;  V77 rat7         [V77,T35] (  3, 12   )  simd32  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
-;  V78 rat8         [V78,T36] (  3, 12   )  simd16  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
+;  V49 tmp39        [V49,T18] (  3, 12   )     int  ->  [rbp-0x2C]  "Inlining Arg"
+;  V50 tmp40        [V50,T09] (  3, 12   )     ref  ->  rax         class-hnd exact "Single-def Box Helper" <System.Configuration.ConfigurationValueFlags>
+;  V51 tmp41        [V51,T24] (  2,  8   )     ref  ->  rdi         class-hnd "impImportAndPushBox" <System.Collections.Specialized.HybridDictionary>
+;* V52 tmp42        [V52    ] (  0,  0   )     ref  ->  zero-ref    "inline UNBOX clone1"
+;  V53 tmp43        [V53,T40] (  3,  6   )   ubyte  ->  rax         "Inline return value spill temp"
+;  V54 tmp44        [V54,T10] (  3, 12   )     ref  ->  rdi         class-hnd "Inlining Arg" <System.Collections.Specialized.HybridDictionary>
+;  V55 tmp45        [V55,T34] (  3,  6   )     ref  ->  rsi         class-hnd "Inline stloc first use temp" <System.Collections.Specialized.ListDictionary>
+;  V56 tmp46        [V56,T19] (  6, 11   )     ref  ->  [rbp-0x68]  class-hnd "Inline return value spill temp" <System.Object>
+;  V57 tmp47        [V57,T11] (  3, 12   )     ref  ->  rdi         class-hnd "Inlining Arg" <System.Collections.Specialized.HybridDictionary>
+;  V58 tmp48        [V58,T35] (  3,  6   )     ref  ->  rsi         class-hnd "Inline stloc first use temp" <System.Collections.Specialized.ListDictionary>
+;  V59 tmp49        [V59,T12] (  3, 12   )     ref  ->  rdi         class-hnd "Inlining Arg" <System.Collections.Specialized.HybridDictionary>
+;  V60 tmp50        [V60,T45] (  2,  2   )   byref  ->  rsi         single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+;* V61 tmp51        [V61,T48] (  0,  0   )     int  ->  zero-ref    single-def "field V12._length (fldOffset=0x8)" P-INDEP
+;  V62 tmp52        [V62,T25] (  2,  8   )     ref  ->  rdi         "argument with side effect"
+;  V63 tmp53        [V63,T26] (  2,  8   )     ref  ->  rsi         "argument with side effect"
+;  V64 tmp54        [V64,T27] (  2,  8   )     ref  ->  rsi         "argument with side effect"
+;  V65 tmp55        [V65,T28] (  2,  8   )     ref  ->   r8         "argument with side effect"
+;  V66 tmp56        [V66,T13] (  3, 12   )     ref  ->  rdi         "argument with side effect"
+;  V67 tmp57        [V67,T14] (  3, 12   )     ref  ->  rdi         "argument with side effect"
+;  V68 tmp58        [V68,T15] (  3, 12   )     ref  ->  rcx         "argument with side effect"
+;  V69 tmp59        [V69,T16] (  3, 12   )     ref  ->  rdi         "argument with side effect"
+;  V70 tmp60        [V70,T17] (  3, 12   )     ref  ->  rdi         "argument with side effect"
+;  V71 tmp61        [V71,T71] (  2,  0   )     ref  ->  rsi         "argument with side effect"
+;  V72 tmp62        [V72,T72] (  2,  0   )     ref  ->  rbx         single-def "argument with side effect"
+;  V73 tmp63        [V73,T73] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
+;  V74 tmp64        [V74,T74] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V75 tmp65        [V75,T75] (  2,  0   )     ref  ->  rbx         single-def "argument with side effect"
+;  V76 tmp66        [V76,T76] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V77 tmp67        [V77,T77] (  2,  0   )     ref  ->  rbx         single-def "argument with side effect"
+;  V78 tmp68        [V78,T78] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
+;  V79 tmp69        [V79,T79] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V80 tmp70        [V80,T80] (  2,  0   )     ref  ->  rbx         single-def "argument with side effect"
+;  V81 tmp71        [V81,T81] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V82 cse0         [V82,T23] (  4,  8   )    long  ->  [rbp-0x38]  spill-single-def "CSE #10: moderate"
+;  V83 cse1         [V83,T36] (  3,  6   )     ref  ->  rdi         "CSE #12: conservative"
+;  V84 cse2         [V84,T37] (  3,  6   )     ref  ->  rdi         "CSE #13: conservative"
+;  V85 cse3         [V85,T38] (  3,  6   )     ref  ->  rcx         "CSE #15: conservative"
+;  V86 cse4         [V86,T39] (  3,  6   )     ref  ->  rdi         "CSE #16: conservative"
+;  V87 cse5         [V87,T22] (  6,  8   )     int  ->  [rbp-0x3C]  spill-single-def "CSE #06: moderate"
+;  V88 rat0         [V88,T03] (  5, 17   )    long  ->  [rbp-0x48]  "Widened IV V06"
+;  V89 rat1         [V89,T42] (  3,  4   )     ref  ->  rsi         "Spilling to split statement for tree"
+;  V90 rat2         [V90,T32] (  4,  7   )     ref  ->  rdi         "replacement local"
+;  V91 rat3         [V91,T44] (  3,  2   )    long  ->  rax         "CSE for expectedClsNode"
+;  V92 rat4         [V92,T43] (  3,  2.80)     int  ->  rax         "ReplaceWithLclVar is creating a new local variable"
+;  V93 rat5         [V93,T50] (  3, 12   )  simd16  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
+;  V94 rat6         [V94,T51] (  3, 12   )  simd32  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
+;  V95 rat7         [V95,T52] (  3, 12   )  simd16  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
 ;
-; Lcl frame size = 56
+; Lcl frame size = 72
 
 G_M35525_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 56
-       lea      rbp, [rsp+0x60]
+       sub      rsp, 72
+       lea      rbp, [rsp+0x70]
        mov      r15, rdi
        mov      r14, rsi
        mov      ebx, edx
 						;; size=27 bbWeight=1 PerfScore 7.50
 G_M35525_IG02:
        mov      rdi, 0xD1FFAB1E      ; System.Configuration.ConfigurationLockCollection
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
        mov      rdi, r13
        mov      rsi, r15
        mov      edx, ebx
-       mov      r12, 0xD1FFAB1E      ; ''
-       mov      rcx, r12
+       mov      rcx, 0xD1FFAB1E      ; ''
        xor      r8, r8
        mov      rax, 0xD1FFAB1E      ; code for System.Configuration.ConfigurationLockCollection:.ctor(System.Configuration.ConfigurationElement,int,System.String,System.Configuration.ConfigurationLockCollection):this
        call     [rax]System.Configuration.ConfigurationLockCollection:.ctor(System.Configuration.ConfigurationElement,int,System.String,System.Configuration.ConfigurationLockCollection):this
        mov      rsi, gword ptr [r14+0x10]
        mov      rdi, rsi
        test     rdi, rdi
        je       SHORT G_M35525_IG04
-						;; size=66 bbWeight=1 PerfScore 9.75
+						;; size=63 bbWeight=1 PerfScore 9.50
 G_M35525_IG03:
        mov      rax, 0xD1FFAB1E      ; System.String
        cmp      qword ptr [rdi], rax
-       jne      G_M35525_IG48
+       jne      G_M35525_IG57
 						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M35525_IG04:
        test     rdi, rdi
        je       SHORT G_M35525_IG06
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M35525_IG05:
        cmp      dword ptr [rdi+0x08], 0
        jne      SHORT G_M35525_IG08
 						;; size=6 bbWeight=0.50 PerfScore 2.00
 G_M35525_IG06:
        lea      eax, [rbx-0x01]
        cmp      eax, 3
        ja       SHORT G_M35525_IG08
 						;; size=8 bbWeight=0.50 PerfScore 0.88
 G_M35525_IG07:
        mov      eax, eax
        lea      rcx, [reloc @RWD00]
        mov      ecx, dword ptr [rcx+4*rax]
        lea      rdx, G_M35525_IG02
        add      rcx, rdx
        jmp      rcx
 						;; size=24 bbWeight=0.40 PerfScore 2.40
 G_M35525_IG08:
        mov      rsi, 0xD1FFAB1E      ; static handle
        cmp      byte  ptr [rdi], dil
        mov      edx, 3
        mov      ecx, 0xD1FFAB1E
        xor      r8d, r8d
        mov      rax, 0xD1FFAB1E      ; code for System.String:SplitInternal(System.ReadOnlySpan`1[ushort],int,int):System.String[]:this
        call     [rax]System.String:SplitInternal(System.ReadOnlySpan`1[ushort],int,int):System.String[]:this
-       mov      ecx, dword ptr [rax+0x08]
-       test     ecx, ecx
-       jle      G_M35525_IG41
-						;; size=49 bbWeight=1 PerfScore 10.50
+       mov      r12, rax
+       xor      eax, eax
+       cmp      dword ptr [r12+0x08], 0
+       jle      G_M35525_IG50
+						;; size=55 bbWeight=1 PerfScore 11.75
 G_M35525_IG09:
-       add      rax, 16
-       mov      dword ptr [rbp-0x38], ecx
-						;; size=7 bbWeight=0.25 PerfScore 0.31
-G_M35525_IG10:
-       mov      bword ptr [rbp-0x58], rax
-       mov      rdi, gword ptr [rax]
-       mov      rdx, 0xD1FFAB1E      ; code for System.String:Trim():System.String:this
+       mov      qword ptr [rbp-0x48], rax
+       mov      rdi, gword ptr [r12+8*rax+0x10]
+       mov      rcx, 0xD1FFAB1E      ; code for System.String:Trim():System.String:this
        cmp      dword ptr [rdi], edi
-       call     [rdx]System.String:Trim():System.String:this
-       mov      gword ptr [rbp-0x40], rax
+       call     [rcx]System.String:Trim():System.String:this
+       mov      gword ptr [rbp-0x50], rax
        test     rax, rax
-       je       G_M35525_IG40
-						;; size=34 bbWeight=4 PerfScore 46.00
-G_M35525_IG11:
+       je       G_M35525_IG49
+						;; size=36 bbWeight=4 PerfScore 46.00
+G_M35525_IG10:
        mov      ecx, dword ptr [rax+0x08]
-       mov      dword ptr [rbp-0x34], ecx
+       mov      dword ptr [rbp-0x3C], ecx
        test     ecx, ecx
-       je       G_M35525_IG40
+       je       G_M35525_IG49
        cmp      ebx, 3
-       je       G_M35525_IG26
+       je       G_M35525_IG25
        cmp      ebx, 1
-       je       G_M35525_IG26
+       je       G_M35525_IG25
 						;; size=32 bbWeight=2 PerfScore 13.50
-G_M35525_IG12:
+G_M35525_IG11:
        mov      rdi, r15
        mov      rdx, qword ptr [r15]
        mov      rdx, qword ptr [rdx+0x40]
-       mov      qword ptr [rbp-0x30], rdx
+       mov      qword ptr [rbp-0x38], rdx
        call     [rdx+0x20]System.Configuration.ConfigurationElement:get_Properties():System.Configuration.ConfigurationPropertyCollection:this
        mov      rdi, rax
-       mov      rsi, gword ptr [rbp-0x40]
+       mov      rsi, gword ptr [rbp-0x50]
        mov      rax, 0xD1FFAB1E      ; code for System.Configuration.ConfigurationPropertyCollection:get_Item(System.String):System.Configuration.ConfigurationProperty:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Configuration.ConfigurationPropertyCollection:get_Item(System.String):System.Configuration.ConfigurationProperty:this
-       mov      gword ptr [rbp-0x48], rax
+       mov      gword ptr [rbp-0x58], rax
        test     rax, rax
-       je       G_M35525_IG29
+       je       G_M35525_IG28
 						;; size=51 bbWeight=2 PerfScore 36.00
-G_M35525_IG13:
-       mov      esi, dword ptr [rbp-0x34]
+G_M35525_IG12:
+       mov      esi, dword ptr [rbp-0x3C]
        cmp      esi, 14
-       jne      G_M35525_IG30
+       jne      G_M35525_IG29
 						;; size=12 bbWeight=1 PerfScore 2.25
-G_M35525_IG14:
-       mov      rcx, gword ptr [rbp-0x40]
+G_M35525_IG13:
+       mov      rcx, gword ptr [rbp-0x50]
        vmovups  xmm0, xmmword ptr [rcx+0x0C]
        vmovups  xmm1, xmmword ptr [rcx+0x18]
        vpxor    xmm1, xmm1, xmmword ptr [reloc @RWD16]
        vpternlogq xmm0, xmm1, xmmword ptr [reloc @RWD32], -34
        vptest   xmm0, xmm0
        sete     dil
        movzx    rdi, dil
        test     edi, edi
-       jne      G_M35525_IG31
+       jne      G_M35525_IG30
 						;; size=54 bbWeight=2 PerfScore 37.00
-G_M35525_IG15:
+G_M35525_IG14:
        cmp      esi, 23
-       jne      SHORT G_M35525_IG17
+       jne      SHORT G_M35525_IG16
 						;; size=5 bbWeight=1 PerfScore 1.25
-G_M35525_IG16:
+G_M35525_IG15:
        vmovups  ymm0, ymmword ptr [rcx+0x0C]
        vmovups  ymm1, ymmword ptr [rcx+0x1A]
        vpxor    ymm1, ymm1, ymmword ptr [reloc @RWD64]
        vpternlogq ymm0, ymm1, ymmword ptr [reloc @RWD96], -34
        vptest   ymm0, ymm0
        sete     dil
        movzx    rdi, dil
        test     edi, edi
-       jne      G_M35525_IG32
+       jne      G_M35525_IG31
 						;; size=50 bbWeight=2 PerfScore 43.00
-G_M35525_IG17:
+G_M35525_IG16:
        cmp      esi, 12
-       jne      G_M35525_IG33
+       jne      G_M35525_IG32
 						;; size=9 bbWeight=1 PerfScore 1.25
-G_M35525_IG18:
+G_M35525_IG17:
        vmovups  xmm0, xmmword ptr [rcx+0x0C]
        vmovups  xmm1, xmmword ptr [rcx+0x14]
        vpxor    xmm1, xmm1, xmmword ptr [reloc @RWD128]
        vpternlogq xmm0, xmm1, xmmword ptr [reloc @RWD144], -34
        vptest   xmm0, xmm0
        sete     sil
        movzx    rsi, sil
        test     esi, esi
-       jne      G_M35525_IG34
+       jne      G_M35525_IG33
 						;; size=50 bbWeight=2 PerfScore 35.00
-G_M35525_IG19:
+G_M35525_IG18:
        cmp      ebx, 3
-       je       SHORT G_M35525_IG22
-       cmp      ebx, 4
        je       SHORT G_M35525_IG21
-       mov      rsi, gword ptr [rax+0x28]
-       mov      rdi, 0xD1FFAB1E      ; 'System.Configuration.ConfigurationElement'
-       mov      rdx, 0xD1FFAB1E      ; code for System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this
-       call     [rdx]System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this
-       test     eax, eax
-       jne      SHORT G_M35525_IG23
-						;; size=40 bbWeight=2 PerfScore 18.50
-G_M35525_IG20:
-       mov      rax, gword ptr [rbp-0x48]
-						;; size=4 bbWeight=1 PerfScore 1.00
-G_M35525_IG21:
        cmp      ebx, 4
-       jne      G_M35525_IG35
-						;; size=9 bbWeight=2 PerfScore 2.50
-G_M35525_IG22:
+       je       SHORT G_M35525_IG20
        mov      rsi, gword ptr [rax+0x28]
        mov      rdi, 0xD1FFAB1E      ; 'System.Configuration.ConfigurationElement'
        mov      rdx, 0xD1FFAB1E      ; code for System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this
        call     [rdx]System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this
        test     eax, eax
-       jne      G_M35525_IG38
+       jne      SHORT G_M35525_IG22
+						;; size=40 bbWeight=2 PerfScore 18.50
+G_M35525_IG19:
+       mov      rax, gword ptr [rbp-0x58]
+						;; size=4 bbWeight=1 PerfScore 1.00
+G_M35525_IG20:
+       cmp      ebx, 4
+       jne      G_M35525_IG34
+						;; size=9 bbWeight=2 PerfScore 2.50
+G_M35525_IG21:
+       mov      rsi, gword ptr [rax+0x28]
+       mov      rdi, 0xD1FFAB1E      ; 'System.Configuration.ConfigurationElement'
+       mov      rdx, 0xD1FFAB1E      ; code for System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this
+       call     [rdx]System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this
+       test     eax, eax
+       jne      G_M35525_IG37
 						;; size=34 bbWeight=2 PerfScore 13.50
-G_M35525_IG23:
+G_M35525_IG22:
        mov      rsi, r15
        mov      rdi, 0xD1FFAB1E      ; System.Configuration.ConfigurationElementCollection
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ISINSTANCEOFCLASS
        call     [rax]CORINFO_HELP_ISINSTANCEOFCLASS
-       mov      gword ptr [rbp-0x50], rax
+       mov      gword ptr [rbp-0x60], rax
        test     rax, rax
-       jne      SHORT G_M35525_IG24
+       jne      G_M35525_IG23
        mov      rdi, r15
-       mov      rcx, qword ptr [rbp-0x30]
+       mov      rcx, qword ptr [rbp-0x38]
        call     [rcx+0x20]System.Configuration.ConfigurationElement:get_Properties():System.Configuration.ConfigurationPropertyCollection:this
        cmp      byte  ptr [rax], al
        mov      rdi, rax
-       mov      rsi, r12
+       mov      rsi, 0xD1FFAB1E      ; ''
        mov      rax, 0xD1FFAB1E      ; code for System.Configuration.ConfigurationPropertyCollection:get_Item(System.String):System.Configuration.ConfigurationProperty:this
        call     [rax]System.Configuration.ConfigurationPropertyCollection:get_Item(System.String):System.Configuration.ConfigurationProperty:this
        test     rax, rax
-       je       SHORT G_M35525_IG24
+       je       SHORT G_M35525_IG23
        mov      rdi, r15
-       mov      rcx, qword ptr [rbp-0x30]
+       mov      rcx, qword ptr [rbp-0x38]
        call     [rcx+0x20]System.Configuration.ConfigurationElement:get_Properties():System.Configuration.ConfigurationPropertyCollection:this
        cmp      byte  ptr [rax], al
        mov      rdi, rax
-       mov      rsi, r12
+       mov      rsi, 0xD1FFAB1E      ; ''
        mov      rax, 0xD1FFAB1E      ; code for System.Configuration.ConfigurationPropertyCollection:get_Item(System.String):System.Configuration.ConfigurationProperty:this
        call     [rax]System.Configuration.ConfigurationPropertyCollection:get_Item(System.String):System.Configuration.ConfigurationProperty:this
        mov      rsi, rax
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Configuration.ConfigurationElement:get_Item(System.Configuration.ConfigurationProperty):System.Object:this
        call     [rax]System.Configuration.ConfigurationElement:get_Item(System.Configuration.ConfigurationProperty):System.Object:this
        mov      rsi, rax
        mov      rdi, 0xD1FFAB1E      ; System.Configuration.ConfigurationElementCollection
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ISINSTANCEOFCLASS
        call     [rax]CORINFO_HELP_ISINSTANCEOFCLASS
-       mov      gword ptr [rbp-0x50], rax
-						;; size=146 bbWeight=2 PerfScore 75.50
-G_M35525_IG24:
-       mov      rax, gword ptr [rbp-0x50]
+       mov      gword ptr [rbp-0x60], rax
+						;; size=164 bbWeight=2 PerfScore 75.50
+G_M35525_IG23:
+       mov      rax, gword ptr [rbp-0x60]
        test     rax, rax
-       je       SHORT G_M35525_IG25
+       je       SHORT G_M35525_IG24
        cmp      ebx, 1
-       je       SHORT G_M35525_IG25
+       je       SHORT G_M35525_IG24
        cmp      ebx, 2
-       jne      SHORT G_M35525_IG36
+       jne      SHORT G_M35525_IG35
 						;; size=19 bbWeight=2 PerfScore 9.50
-G_M35525_IG25:
+G_M35525_IG24:
        mov      rdi, r15
-       mov      rsi, gword ptr [rbp-0x40]
+       mov      rsi, gword ptr [rbp-0x50]
        mov      edx, ebx
        mov      rcx, r14
        xor      r8, r8
        mov      rax, 0xD1FFAB1E      ; code for System.Configuration.ConfigurationElement:ReportInvalidLock(System.String,int,System.Configuration.ConfigurationValue,System.String):this
        call     [rax]System.Configuration.ConfigurationElement:ReportInvalidLock(System.String,int,System.Configuration.ConfigurationValue,System.String):this
-       jmp      G_M35525_IG37
+       jmp      G_M35525_IG36
 						;; size=32 bbWeight=2 PerfScore 14.50
-G_M35525_IG26:
+G_M35525_IG25:
        cmp      ecx, 1
-       je       SHORT G_M35525_IG28
+       je       SHORT G_M35525_IG27
 						;; size=5 bbWeight=1 PerfScore 1.25
-G_M35525_IG27:
-       jmp      G_M35525_IG12
+G_M35525_IG26:
+       jmp      G_M35525_IG11
 						;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M35525_IG28:
+G_M35525_IG27:
        cmp      word  ptr [rax+0x0C], 42
-       je       G_M35525_IG39
-       jmp      G_M35525_IG12
+       je       G_M35525_IG38
+       jmp      G_M35525_IG11
 						;; size=16 bbWeight=0.50 PerfScore 3.00
-G_M35525_IG29:
-       jmp      G_M35525_IG23
+G_M35525_IG28:
+       jmp      G_M35525_IG22
 						;; size=5 bbWeight=1 PerfScore 2.00
-G_M35525_IG30:
-       mov      rcx, gword ptr [rbp-0x40]
-       jmp      G_M35525_IG15
+G_M35525_IG29:
+       mov      rcx, gword ptr [rbp-0x50]
+       jmp      G_M35525_IG14
 						;; size=9 bbWeight=0.50 PerfScore 1.50
+G_M35525_IG30:
+       jmp      G_M35525_IG22
+						;; size=5 bbWeight=1 PerfScore 2.00
 G_M35525_IG31:
-       jmp      G_M35525_IG23
+       jmp      G_M35525_IG22
 						;; size=5 bbWeight=1 PerfScore 2.00
 G_M35525_IG32:
-       jmp      G_M35525_IG23
-						;; size=5 bbWeight=1 PerfScore 2.00
-G_M35525_IG33:
-       jmp      G_M35525_IG19
+       jmp      G_M35525_IG18
 						;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M35525_IG34:
-       jmp      G_M35525_IG23
+G_M35525_IG33:
+       jmp      G_M35525_IG22
 						;; size=5 bbWeight=1 PerfScore 2.00
-G_M35525_IG35:
-       jmp      SHORT G_M35525_IG38
+G_M35525_IG34:
+       jmp      SHORT G_M35525_IG37
 						;; size=2 bbWeight=1 PerfScore 2.00
-G_M35525_IG36:
-       mov      gword ptr [rbp-0x50], rax
+G_M35525_IG35:
+       mov      gword ptr [rbp-0x60], rax
        mov      rdi, rax
-       mov      rsi, gword ptr [rbp-0x40]
+       mov      rsi, gword ptr [rbp-0x50]
        mov      rcx, 0xD1FFAB1E      ; code for System.Configuration.ConfigurationElementCollection:IsLockableElement(System.String):ubyte:this
        call     [rcx]System.Configuration.ConfigurationElementCollection:IsLockableElement(System.String):ubyte:this
        test     eax, eax
-       jne      SHORT G_M35525_IG37
-       mov      rdi, gword ptr [rbp-0x50]
+       jne      SHORT G_M35525_IG36
+       mov      rdi, gword ptr [rbp-0x60]
        mov      rax, 0xD1FFAB1E      ; code for System.Configuration.ConfigurationElementCollection:get_LockableElements():System.String:this
        call     [rax]System.Configuration.ConfigurationElementCollection:get_LockableElements():System.String:this
        mov      r8, rax
-       mov      rsi, gword ptr [rbp-0x40]
+       mov      rsi, gword ptr [rbp-0x50]
        mov      edx, ebx
        mov      rcx, r14
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Configuration.ConfigurationElement:ReportInvalidLock(System.String,int,System.Configuration.ConfigurationValue,System.String):this
        call     [rax]System.Configuration.ConfigurationElement:ReportInvalidLock(System.String,int,System.Configuration.ConfigurationValue,System.String):this
 						;; size=70 bbWeight=2 PerfScore 32.50
-G_M35525_IG37:
-       mov      rax, gword ptr [rbp-0x48]
+G_M35525_IG36:
+       mov      rax, gword ptr [rbp-0x58]
        test     rax, rax
-       je       SHORT G_M35525_IG39
+       je       SHORT G_M35525_IG38
 						;; size=9 bbWeight=2 PerfScore 4.50
-G_M35525_IG38:
-       mov      rax, gword ptr [rbp-0x48]
+G_M35525_IG37:
+       mov      rax, gword ptr [rbp-0x58]
        test     byte  ptr [rax+0x58], 2
-       jne      G_M35525_IG47
+       jne      G_M35525_IG56
 						;; size=14 bbWeight=2 PerfScore 10.00
+G_M35525_IG38:
+       xor      eax, eax
+       mov      dword ptr [rbp-0x2C], eax
+       mov      rdi, gword ptr [r13+0x20]
+       mov      rsi, gword ptr [rdi+0x08]
+       mov      rdi, gword ptr [rdi+0x10]
+       test     rdi, rdi
+       jne      SHORT G_M35525_IG39
+       test     rsi, rsi
+       je       G_M35525_IG48
+       mov      rdi, rsi
+       mov      rsi, gword ptr [rbp-0x50]
+       mov      rcx, 0xD1FFAB1E      ; code for System.Collections.Specialized.ListDictionary:Contains(System.Object):ubyte:this
+       call     [rcx]System.Collections.Specialized.ListDictionary:Contains(System.Object):ubyte:this
+       jmp      SHORT G_M35525_IG40
+						;; size=52 bbWeight=2 PerfScore 32.50
 G_M35525_IG39:
-       mov      rdi, r13
-       mov      rsi, gword ptr [rbp-0x40]
-       xor      edx, edx
-       mov      rax, 0xD1FFAB1E      ; code for System.Configuration.ConfigurationLockCollection:Add(System.String,int):this
-       call     [rax]System.Configuration.ConfigurationLockCollection:Add(System.String,int):this
-						;; size=21 bbWeight=2 PerfScore 9.50
+       mov      rsi, gword ptr [rbp-0x50]
+       mov      rcx, qword ptr [rdi]
+       mov      rcx, qword ptr [rcx+0x40]
+       call     [rcx+0x38]System.Collections.Hashtable:Contains(System.Object):ubyte:this
+						;; size=14 bbWeight=2 PerfScore 16.00
 G_M35525_IG40:
-       mov      rax, bword ptr [rbp-0x58]
-       add      rax, 8
-       mov      ecx, dword ptr [rbp-0x38]
-       dec      ecx
-       mov      dword ptr [rbp-0x38], ecx
-       jne      G_M35525_IG10
-						;; size=22 bbWeight=4 PerfScore 18.00
+       test     eax, eax
+       je       G_M35525_IG48
+       mov      rdi, gword ptr [r13+0x20]
+       mov      rsi, gword ptr [rdi+0x08]
+       mov      rdi, gword ptr [rdi+0x10]
+       test     rdi, rdi
+       jne      SHORT G_M35525_IG42
+       test     rsi, rsi
+       jne      SHORT G_M35525_IG41
+       xor      rax, rax
+       jmp      SHORT G_M35525_IG43
+						;; size=34 bbWeight=2 PerfScore 24.00
 G_M35525_IG41:
+       mov      rdi, rsi
+       mov      rsi, gword ptr [rbp-0x50]
+       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Specialized.ListDictionary:get_Item(System.Object):System.Object:this
+       call     [rax]System.Collections.Specialized.ListDictionary:get_Item(System.Object):System.Object:this
+       jmp      SHORT G_M35525_IG43
+						;; size=21 bbWeight=2 PerfScore 13.00
+G_M35525_IG42:
+       mov      rsi, gword ptr [rbp-0x50]
+       mov      rax, qword ptr [rdi]
+       mov      rax, qword ptr [rax+0x48]
+       call     [rax+0x20]System.Collections.Hashtable:get_Item(System.Object):System.Object:this
+						;; size=14 bbWeight=2 PerfScore 16.00
+G_M35525_IG43:
+       mov      rsi, 0xD1FFAB1E      ; System.Configuration.ConfigurationValueFlags
+       cmp      qword ptr [rax], rsi
+       je       SHORT G_M35525_IG45
+						;; size=15 bbWeight=2 PerfScore 8.50
+G_M35525_IG44:
+       mov      gword ptr [rbp-0x68], rax
+       mov      rsi, rax
+       mov      rdi, 0xD1FFAB1E      ; System.Configuration.ConfigurationValueFlags
+       mov      rcx, 0xD1FFAB1E      ; code for CORINFO_HELP_UNBOX
+       call     [rcx]CORINFO_HELP_UNBOX
+       mov      rax, gword ptr [rbp-0x68]
+						;; size=33 bbWeight=1 PerfScore 5.75
+G_M35525_IG45:
+       mov      eax, dword ptr [rax+0x08]
+       or       eax, 2
+       mov      dword ptr [rbp-0x2C], eax
+       mov      rdi, gword ptr [r13+0x20]
+       mov      rcx, gword ptr [rdi+0x10]
+       test     rcx, rcx
+       jne      SHORT G_M35525_IG46
+       mov      rdi, gword ptr [rdi+0x08]
+       test     rdi, rdi
+       je       SHORT G_M35525_IG47
+       mov      rsi, gword ptr [rbp-0x50]
+       mov      rcx, 0xD1FFAB1E      ; code for System.Collections.Specialized.ListDictionary:Remove(System.Object):this
+       cmp      dword ptr [rdi], edi
+       call     [rcx]System.Collections.Specialized.ListDictionary:Remove(System.Object):this
+       jmp      SHORT G_M35525_IG47
+						;; size=51 bbWeight=2 PerfScore 42.00
+G_M35525_IG46:
+       mov      rdi, rcx
+       mov      rsi, gword ptr [rbp-0x50]
+       mov      rcx, qword ptr [rcx]
+       mov      rcx, qword ptr [rcx+0x50]
+       call     [rcx+0x38]System.Collections.Hashtable:Remove(System.Object):this
+						;; size=17 bbWeight=2 PerfScore 16.50
+G_M35525_IG47:
+       mov      rdi, gword ptr [r13+0x18]
+       mov      rsi, gword ptr [rbp-0x50]
+       mov      rax, qword ptr [rdi]
+       mov      rax, qword ptr [rax+0x60]
+       call     [rax+0x10]System.Collections.ArrayList:Remove(System.Object):this
+						;; size=18 bbWeight=2 PerfScore 20.00
+G_M35525_IG48:
+       mov      rdi, 0xD1FFAB1E      ; System.Configuration.ConfigurationValueFlags
+       call     CORINFO_HELP_NEWSFAST
+       mov      rdi, gword ptr [r13+0x20]
+       mov      edx, dword ptr [rbp-0x2C]
+       mov      dword ptr [rax+0x08], edx
+       mov      rdx, rax
+       mov      rsi, gword ptr [rbp-0x50]
+       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Specialized.HybridDictionary:Add(System.Object,System.Object):this
+       cmp      dword ptr [rdi], edi
+       call     [rax]System.Collections.Specialized.HybridDictionary:Add(System.Object,System.Object):this
+       mov      rdi, gword ptr [r13+0x18]
+       mov      rsi, gword ptr [rbp-0x50]
+       mov      rax, qword ptr [rdi]
+       mov      rax, qword ptr [rax+0x48]
+       call     [rax+0x28]System.Collections.ArrayList:Add(System.Object):int:this
+						;; size=64 bbWeight=2 PerfScore 45.50
+G_M35525_IG49:
+       mov      rax, qword ptr [rbp-0x48]
+       inc      eax
+       cmp      dword ptr [r12+0x08], eax
+       jg       G_M35525_IG09
+						;; size=17 bbWeight=4 PerfScore 21.00
+G_M35525_IG50:
        mov      rax, r13
 						;; size=3 bbWeight=1 PerfScore 0.25
-G_M35525_IG42:
+G_M35525_IG51:
        vzeroupper 
-       add      rsp, 56
+       add      rsp, 72
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=18 bbWeight=1 PerfScore 5.25
-G_M35525_IG43:
+G_M35525_IG52:
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Config_empty_lock_element_except():System.String
        call     [rax]System.SR:get_Config_empty_lock_element_except():System.String
        mov      rbx, rax
        mov      edi, 0x49FD
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      r15, rax
        mov      edi, 0x49E3
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rdi, rbx
        mov      rsi, r15
        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      r12, rax
+       mov      r13, rax
        mov      rdi, gword ptr [r14+0x08]
-       mov      r13, gword ptr [rdi+0x08]
+       mov      rbx, gword ptr [rdi+0x08]
        mov      r14, gword ptr [r14+0x08]
        mov      rdi, 0xD1FFAB1E      ; System.Configuration.ConfigurationErrorsException
        call     CORINFO_HELP_NEWSFAST
-       mov      rbx, rax
+       mov      r15, rax
        mov      ecx, dword ptr [r14+0x10]
-       mov      rdi, rbx
-       mov      rsi, r12
-       mov      rdx, r13
+       mov      rdi, r15
+       mov      rsi, r13
+       mov      rdx, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Configuration.ConfigurationErrorsException:.ctor(System.String,System.String,int):this
        call     [rax]System.Configuration.ConfigurationErrorsException:.ctor(System.String,System.String,int):this
-       mov      rdi, rbx
+       mov      rdi, r15
        call     CORINFO_HELP_THROW
        int3     
 						;; size=146 bbWeight=0 PerfScore 0.00
-G_M35525_IG44:
+G_M35525_IG53:
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Empty_attribute():System.String
        call     [rax]System.SR:get_Empty_attribute():System.String
        mov      rbx, rax
        mov      edi, 0x49E3
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rsi, rax
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.SR:Format(System.String,System.Object):System.String
        call     [rax]System.SR:Format(System.String,System.Object):System.String
        mov      rbx, rax
        mov      rdi, gword ptr [r14+0x08]
        mov      r15, gword ptr [rdi+0x08]
        mov      r14, gword ptr [r14+0x08]
        mov      rdi, 0xD1FFAB1E      ; System.Configuration.ConfigurationErrorsException
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
        mov      ecx, dword ptr [r14+0x10]
        mov      rdi, r13
        mov      rsi, rbx
        mov      rdx, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Configuration.ConfigurationErrorsException:.ctor(System.String,System.String,int):this
        call     [rax]System.Configuration.ConfigurationErrorsException:.ctor(System.String,System.String,int):this
        mov      rdi, r13
        call     CORINFO_HELP_THROW
        int3     
 						;; size=120 bbWeight=0 PerfScore 0.00
-G_M35525_IG45:
+G_M35525_IG54:
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Config_empty_lock_attributes_except():System.String
        call     [rax]System.SR:get_Config_empty_lock_attributes_except():System.String
        mov      rbx, rax
        mov      edi, 0x4993
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      r15, rax
        mov      edi, 0x4975
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rdi, rbx
        mov      rsi, r15
        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      rbx, rax
        mov      rdi, gword ptr [r14+0x08]
        mov      r15, gword ptr [rdi+0x08]
        mov      r14, gword ptr [r14+0x08]
        mov      rdi, 0xD1FFAB1E      ; System.Configuration.ConfigurationErrorsException
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
        mov      ecx, dword ptr [r14+0x10]
        mov      rdi, r13
        mov      rsi, rbx
        mov      rdx, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Configuration.ConfigurationErrorsException:.ctor(System.String,System.String,int):this
        call     [rax]System.Configuration.ConfigurationErrorsException:.ctor(System.String,System.String,int):this
        mov      rdi, r13
        call     CORINFO_HELP_THROW
        int3     
 						;; size=146 bbWeight=0 PerfScore 0.00
-G_M35525_IG46:
+G_M35525_IG55:
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Empty_attribute():System.String
        call     [rax]System.SR:get_Empty_attribute():System.String
        mov      rbx, rax
        mov      edi, 0x4975
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rsi, rax
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.SR:Format(System.String,System.Object):System.String
        call     [rax]System.SR:Format(System.String,System.Object):System.String
        mov      rbx, rax
        mov      rdi, gword ptr [r14+0x08]
        mov      r15, gword ptr [rdi+0x08]
        mov      r14, gword ptr [r14+0x08]
        mov      rdi, 0xD1FFAB1E      ; System.Configuration.ConfigurationErrorsException
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
        mov      ecx, dword ptr [r14+0x10]
        mov      rdi, r13
        mov      rsi, rbx
        mov      rdx, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Configuration.ConfigurationErrorsException:.ctor(System.String,System.String,int):this
        call     [rax]System.Configuration.ConfigurationErrorsException:.ctor(System.String,System.String,int):this
        mov      rdi, r13
        call     CORINFO_HELP_THROW
        int3     
 						;; size=120 bbWeight=0 PerfScore 0.00
-G_M35525_IG47:
+G_M35525_IG56:
        mov      rcx, 0xD1FFAB1E      ; code for System.SR:get_Config_base_required_attribute_lock_attempt():System.String
        call     [rcx]System.SR:get_Config_base_required_attribute_lock_attempt():System.String
        mov      rbx, rax
        mov      rdi, 0xD1FFAB1E      ; System.Configuration.ConfigurationErrorsException
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
-       mov      r14, gword ptr [rbp-0x48]
+       mov      r14, gword ptr [rbp-0x58]
        mov      rsi, gword ptr [r14+0x10]
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.SR:Format(System.String,System.Object):System.String
        call     [rax]System.SR:Format(System.String,System.Object):System.String
        mov      rsi, rax
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Configuration.ConfigurationErrorsException:.ctor(System.String):this
        call     [rax]System.Configuration.ConfigurationErrorsException:.ctor(System.String):this
        mov      rdi, r15
        call     CORINFO_HELP_THROW
        int3     
 						;; size=83 bbWeight=0 PerfScore 0.00
-G_M35525_IG48:
+G_M35525_IG57:
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS
        call     [rax]CORINFO_HELP_CHKCASTCLASS
        int3     
 						;; size=16 bbWeight=0 PerfScore 0.00
-RWD00  	dd	G_M35525_IG46 - G_M35525_IG02
-       	dd	G_M35525_IG45 - G_M35525_IG02
-       	dd	G_M35525_IG44 - G_M35525_IG02
-       	dd	G_M35525_IG43 - G_M35525_IG02
+RWD00  	dd	G_M35525_IG55 - G_M35525_IG02
+       	dd	G_M35525_IG54 - G_M35525_IG02
+       	dd	G_M35525_IG53 - G_M35525_IG02
+       	dd	G_M35525_IG52 - G_M35525_IG02
 RWD16  	dq	0062006900720074h, 0073006500740075h
 RWD32  	dq	006B0063006F006Ch, 0072007400740041h
 RWD48  	dd	00000000h, 00000000h, 00000000h, 00000000h
 RWD64  	dq	0072007400740041h, 0074007500620069h, 0078004500730065h, 0074007000650063h
 RWD96  	dq	006B0063006F006Ch, 0041006C006C0041h, 0069007200740074h, 0065007400750062h
 RWD128 	dq	006D0065006C0045h, 00730074006E0065h
 RWD144 	dq	006B0063006F006Ch, 006D0065006C0045h
 
 
-; Total bytes of code 1642, prolog size 19, PerfScore 484.71, instruction count 380, allocated bytes for code 1642 (MethodHash=f30a753a) for method System.Configuration.ConfigurationElement:ParseLockedAttributes(System.Configuration.ConfigurationValue,int):System.Configuration.ConfigurationLockCollection:this (FullOpts)
+; Total bytes of code 1965, prolog size 19, PerfScore 718.65, instruction count 458, allocated bytes for code 1965 (MethodHash=f30a753a) for method System.Configuration.ConfigurationElement:ParseLockedAttributes(System.Configuration.ConfigurationValue,int):System.Configuration.ConfigurationLockCollection:this (FullOpts)
 ; ============================================================
52 (31.71 % of base) - System.Text.RegularExpressions.GroupCollection:GetGroup(int):System.Text.RegularExpressions.Group:this
 ; Assembly listing for method System.Text.RegularExpressions.GroupCollection:GetGroup(int):System.Text.RegularExpressions.Group:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  7,  5   )     ref  ->  rbx         this class-hnd single-def <System.Text.RegularExpressions.GroupCollection>
+;  V00 this         [V00,T00] (  6,  4.50)     ref  ->  rbx         this class-hnd single-def <System.Text.RegularExpressions.GroupCollection>
 ;  V01 arg1         [V01,T01] (  5,  3.50)     int  ->  r15         single-def
-;  V02 loc0         [V02    ] (  2,  1   )     int  ->  [rbp-0x18]  do-not-enreg[X] addr-exposed ld-addr-op
+;  V02 loc0         [V02,T08] (  2,  1   )     int  ->  rsi         ld-addr-op
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T02] (  3,  3   )     ref  ->  rax         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
-;  V05 tmp2         [V05,T03] (  2,  2   )     ref  ->  rdi         class-hnd single-def "impImportAndPushBox" <System.Collections.Hashtable>
+;  V04 tmp1         [V04,T04] (  3,  3   )     ref  ->  r13         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
+;  V05 tmp2         [V05,T02] (  4,  4   )     ref  ->  r14         class-hnd single-def "impImportAndPushBox" <System.Collections.Hashtable>
+;* V06 tmp3         [V06    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;  V07 tmp4         [V07,T05] (  3,  3   )     ref  ->  r13         class-hnd exact single-def "Inlining Arg" <System.Int32>
+;  V08 tmp5         [V08,T03] (  4,  3.50)     ref  ->  r15         single-def "inline UNBOX clone1"
+;  V09 cse0         [V09,T07] (  3,  1.50)    long  ->  r15         "CSE #03: moderate"
+;  V10 cse1         [V10,T06] (  3,  2.50)     ref  ->  r14         "CSE #01: aggressive"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 0
 
 G_M37515_IG01:
        push     rbp
        push     r15
+       push     r14
+       push     r13
        push     rbx
-       sub      rsp, 16
        lea      rbp, [rsp+0x20]
        mov      rbx, rdi
        mov      r15d, esi
-						;; size=19 bbWeight=1 PerfScore 4.25
+						;; size=19 bbWeight=1 PerfScore 6.00
 G_M37515_IG02:
-       cmp      gword ptr [rbx+0x10], 0
+       mov      r14, gword ptr [rbx+0x10]
+       test     r14, r14
        jne      SHORT G_M37515_IG05
-						;; size=7 bbWeight=1 PerfScore 4.00
+						;; size=9 bbWeight=1 PerfScore 3.25
 G_M37515_IG03:
        mov      rdi, gword ptr [rbx+0x08]
        mov      rdi, gword ptr [rdi+0x50]
        cmp      dword ptr [rdi+0x08], r15d
        jbe      SHORT G_M37515_IG06
        mov      rdi, rbx
        mov      esi, r15d
        mov      rax, 0xD1FFAB1E      ; code for System.Text.RegularExpressions.GroupCollection:GetGroupImpl(int):System.Text.RegularExpressions.Group:this
        call     [rax]System.Text.RegularExpressions.GroupCollection:GetGroupImpl(int):System.Text.RegularExpressions.Group:this
        nop      
 						;; size=33 bbWeight=0.50 PerfScore 6.00
 G_M37515_IG04:
-       add      rsp, 16
        pop      rbx
+       pop      r13
+       pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=9 bbWeight=0.50 PerfScore 1.38
+						;; size=9 bbWeight=0.50 PerfScore 1.75
 G_M37515_IG05:
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        call     CORINFO_HELP_NEWSFAST
-       mov      rdi, gword ptr [rbx+0x10]
-       mov      dword ptr [rax+0x08], r15d
-       mov      rsi, rax
-       lea      rdx, [rbp-0x18]
-       mov      rax, 0xD1FFAB1E      ; code for System.Collections.HashtableExtensions:TryGetValue[int](System.Collections.Hashtable,System.Object,byref):ubyte
-       call     [rax]System.Collections.HashtableExtensions:TryGetValue[int](System.Collections.Hashtable,System.Object,byref):ubyte
+       mov      r13, rax
+       mov      dword ptr [r13+0x08], r15d
+       mov      rdi, r14
+       mov      rsi, r13
+       mov      rax, qword ptr [r14]
+       mov      r15, qword ptr [rax+0x48]
+       call     [r15]System.Collections.Hashtable:ContainsKey(System.Object):ubyte:this
        test     eax, eax
        jne      SHORT G_M37515_IG08
-						;; size=46 bbWeight=0.50 PerfScore 4.75
+						;; size=42 bbWeight=0.50 PerfScore 5.62
 G_M37515_IG06:
        mov      rax, 0xD1FFAB1E      ; const ptr
        mov      rax, gword ptr [rax]
 						;; size=13 bbWeight=0.50 PerfScore 1.12
 G_M37515_IG07:
-       add      rsp, 16
        pop      rbx
+       pop      r13
+       pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=9 bbWeight=0.50 PerfScore 1.38
+						;; size=9 bbWeight=0.50 PerfScore 1.75
 G_M37515_IG08:
+       mov      rdi, r14
+       mov      rsi, r13
+       call     [r15+0x20]System.Collections.Hashtable:get_Item(System.Object):System.Object:this
+       mov      r15, rax
+       mov      rsi, 0xD1FFAB1E      ; System.Int32
+       cmp      qword ptr [r15], rsi
+       je       SHORT G_M37515_IG10
+						;; size=28 bbWeight=0.50 PerfScore 4.00
+G_M37515_IG09:
+       mov      rsi, r15
+       mov      rdi, 0xD1FFAB1E      ; System.Int32
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_UNBOX
+       call     [rax]CORINFO_HELP_UNBOX
+						;; size=25 bbWeight=0.25 PerfScore 0.94
+G_M37515_IG10:
+       mov      esi, dword ptr [r15+0x08]
        mov      rdi, rbx
-       mov      esi, dword ptr [rbp-0x18]
        mov      rax, 0xD1FFAB1E      ; code for System.Text.RegularExpressions.GroupCollection:GetGroupImpl(int):System.Text.RegularExpressions.Group:this
        call     [rax]System.Text.RegularExpressions.GroupCollection:GetGroupImpl(int):System.Text.RegularExpressions.Group:this
        nop      
-						;; size=19 bbWeight=0.50 PerfScore 2.38
-G_M37515_IG09:
-       add      rsp, 16
+						;; size=20 bbWeight=0.50 PerfScore 2.88
+G_M37515_IG11:
        pop      rbx
+       pop      r13
+       pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=9 bbWeight=0.50 PerfScore 1.38
+						;; size=9 bbWeight=0.50 PerfScore 1.75
 
-; Total bytes of code 164, prolog size 13, PerfScore 26.62, instruction count 50, allocated bytes for code 164 (MethodHash=dd986d74) for method System.Text.RegularExpressions.GroupCollection:GetGroup(int):System.Text.RegularExpressions.Group:this (FullOpts)
+; Total bytes of code 216, prolog size 13, PerfScore 35.06, instruction count 67, allocated bytes for code 216 (MethodHash=dd986d74) for method System.Text.RegularExpressions.GroupCollection:GetGroup(int):System.Text.RegularExpressions.Group:this (FullOpts)
 ; ============================================================

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

Larger list of diffs: https://gist.github.com/MihuBot/69a183fb68a8fe27e5ff061a5436a75a

@MihuBot
Copy link
Owner Author

MihuBot commented Dec 10, 2024

@AndyAyersMS

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