forked from MihaZupan/runtime-utils
-
Notifications
You must be signed in to change notification settings - Fork 0
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
Comments
Top method regressions323 (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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 14 minutes 26 seconds.
dotnet/runtime#110596
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: