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
[X64] [stephentoub] Clean up some [InlineArray] use #291
Comments
Top method improvements-32 (-1.71 % of base) - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object ; Assembly listing for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
-; 0 inlinees with PGO data; 18 single block inlinees; 10 inlinees without PGO data
+; 0 inlinees with PGO data; 20 single block inlinees; 10 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T13] ( 7, 6.98) ref -> r14 class-hnd single-def <System.IServiceProvider>
-; V01 arg1 [V01,T11] ( 8, 7.48) ref -> r15 class-hnd single-def <System.Type>
-; V02 arg2 [V02,T09] ( 11, 13.77) ref -> rbx class-hnd single-def <System.Object[]>
+; V00 arg0 [V00,T14] ( 7, 6.98) ref -> r14 class-hnd single-def <System.IServiceProvider>
+; V01 arg1 [V01,T12] ( 8, 7.48) ref -> r15 class-hnd single-def <System.Type>
+; V02 arg2 [V02,T08] ( 11, 13.77) ref -> rbx class-hnd single-def <System.Object[]>
; V03 loc0 [V03 ] ( 17, 43.96) struct ( 8) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+<>c__DisplayClass4_0>
-;* V04 loc1 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[System.Object]>
-; V05 loc2 [V05 ] ( 2, 1.50) struct (64) [rbp-0x70] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects>
-; V06 loc3 [V06,T17] ( 7, 5.50) int -> r13 single-def
+; V04 loc1 [V04 ] ( 2, 1.50) struct (64) [rbp-0x70] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects>
+; V05 loc2 [V05,T19] ( 5, 4.50) int -> r13 single-def
+;* V06 loc3 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[System.Object]>
;* V07 loc4 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[System.Object]>
;* V08 loc5 [V08 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[System.Object]>
; V09 loc6 [V09 ] ( 16, 31.40) struct (24) [rbp-0x88] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher>
; V10 loc7 [V10,T00] ( 10, 26.94) ref -> [rbp-0xE8] class-hnd <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx>
; V11 loc8 [V11,T18] ( 4, 6.50) ref -> [rbp-0xF0] class-hnd spill-single-def <Microsoft.Extensions.DependencyInjection.IServiceProviderIsService>
-; V12 loc9 [V12,T15] ( 6, 7.48) ref -> [rbp-0xF8] class-hnd <System.Type[]>
+; V12 loc9 [V12,T16] ( 6, 7.48) ref -> [rbp-0xF8] class-hnd <System.Type[]>
; V13 loc10 [V13 ] ( 2, 3.96) ref -> [rbp-0x90] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.ConstructorInfo>
; V14 loc11 [V14 ] ( 2, 3.96) ref -> [rbp-0x98] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Nullable`1[int][]>
-; V15 loc12 [V15,T12] ( 6, 9 ) int -> [rbp-0x9C]
+; V15 loc12 [V15,T13] ( 6, 9 ) int -> [rbp-0x9C]
; V16 loc13 [V16 ] ( 5, 7 ) struct (24) [rbp-0xB8] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher>
-; V17 loc14 [V17,T20] ( 4, 5 ) ubyte -> [rbp-0xBC]
-; V18 loc15 [V18,T34] ( 2, 1 ) int -> rsi
-; V19 loc16 [V19,T36] ( 2, 1 ) int -> rsi
-;* V20 loc17 [V20,T39] ( 0, 0 ) int -> zero-ref
+; V17 loc14 [V17,T21] ( 4, 5 ) ubyte -> [rbp-0xBC]
+; V18 loc15 [V18,T30] ( 2, 1 ) int -> rsi
+; V19 loc16 [V19,T33] ( 2, 1 ) int -> rsi
+;* V20 loc17 [V20,T37] ( 0, 0 ) int -> zero-ref
; V21 loc18 [V21,T10] ( 4, 12 ) int -> rax
; V22 loc19 [V22,T03] ( 12, 20.54) int -> [rbp-0xC0]
;# V23 OutArgs [V23 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V24 tmp1 [V24,T05] ( 6, 20 ) ref -> rdi class-hnd "dup spill" <System.Object>
-;* V25 tmp2 [V25 ] ( 0, 0 ) ref -> zero-ref
-;* V26 tmp3 [V26 ] ( 0, 0 ) int -> zero-ref
-;* V27 tmp4 [V27 ] ( 0, 0 ) ref -> zero-ref
+;* V24 tmp1 [V24 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[System.__Canon]>
+; V25 tmp2 [V25,T05] ( 6, 20 ) ref -> rdi class-hnd "dup spill" <System.Object>
+;* V26 tmp3 [V26 ] ( 0, 0 ) ref -> zero-ref
+;* V27 tmp4 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp5 [V28 ] ( 0, 0 ) ref -> zero-ref
-;* V29 tmp6 [V29 ] ( 0, 0 ) int -> zero-ref
-; V30 tmp7 [V30,T14] ( 6, 8 ) ref -> [rbp-0x100]
-; V31 tmp8 [V31,T40] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Single-def Box Helper" <System.Int32>
-; V32 tmp9 [V32,T44] ( 2, 0 ) ref -> r14 class-hnd exact single-def "impImportAndPushBox" <System.String>
-; V33 tmp10 [V33,T41] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
-; V34 tmp11 [V34,T42] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
-; V35 tmp12 [V35,T43] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
-;* V36 tmp13 [V36 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V37 tmp14 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
-;* V38 tmp15 [V38 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V39 tmp16 [V39,T28] ( 3, 3 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Object[]>
-; V40 tmp17 [V40,T29] ( 3, 3 ) int -> rdi "Inlining Arg"
-;* V41 tmp18 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
-;* V42 tmp19 [V42 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V43 tmp20 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
-; V44 tmp21 [V44,T23] ( 2, 4 ) byref -> rdx single-def "Inlining Arg"
-; V45 tmp22 [V45,T25] ( 2, 4 ) int -> rax "Inlining Arg"
-;* V46 tmp23 [V46 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[System.Object]>
-;* V47 tmp24 [V47 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[System.Object]>
-;* V48 tmp25 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
-;* V49 tmp26 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V50 tmp27 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V51 tmp28 [V51,T26] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V52 tmp29 [V52,T08] ( 4, 16 ) long -> rdx "Inlining Arg"
-;* V53 tmp30 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx>
-;* V54 tmp31 [V54 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[System.Object]>
-; V55 tmp32 [V55 ] ( 17, 43.96) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V03.constructors (fldOffset=0x0)" P-DEP
-; V56 tmp33 [V56,T30] ( 3, 2 ) byref -> r12 "field V04._reference (fldOffset=0x0)" P-INDEP
-; V57 tmp34 [V57,T27] ( 4, 3 ) int -> rax "field V04._length (fldOffset=0x8)" P-INDEP
-; V58 tmp35 [V58,T07] ( 10, 18.96) byref -> r12 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-; V59 tmp36 [V59,T06] ( 10, 17.96) int -> r13 single-def "field V07._length (fldOffset=0x8)" P-INDEP
-; V60 tmp37 [V60,T16] ( 4, 7 ) byref -> [rbp-0x108] spill-single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-; V61 tmp38 [V61,T21] ( 3, 5 ) int -> [rbp-0xC4] spill-single-def "field V08._length (fldOffset=0x8)" P-INDEP
-; V62 tmp39 [V62,T35] ( 2, 1 ) byref -> r12 single-def "field V37._reference (fldOffset=0x0)" P-INDEP
-; V63 tmp40 [V63,T37] ( 2, 1 ) int -> rax single-def "field V37._length (fldOffset=0x8)" P-INDEP
-; V64 tmp41 [V64,T31] ( 2, 2 ) byref -> r12 single-def "field V41._reference (fldOffset=0x0)" P-INDEP
-;* V65 tmp42 [V65,T38] ( 0, 0 ) int -> zero-ref single-def "field V41._length (fldOffset=0x8)" P-INDEP
-; V66 tmp43 [V66,T32] ( 2, 2 ) byref -> rdx single-def "field V43._reference (fldOffset=0x0)" P-INDEP
-; V67 tmp44 [V67,T33] ( 2, 2 ) int -> rax single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;* V68 tmp45 [V68 ] ( 0, 0 ) byref -> zero-ref "field V46._reference (fldOffset=0x0)" P-INDEP
-;* V69 tmp46 [V69 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP
-;* V70 tmp47 [V70 ] ( 0, 0 ) byref -> zero-ref "field V47._reference (fldOffset=0x0)" P-INDEP
-;* V71 tmp48 [V71 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP
-;* V72 tmp49 [V72 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-INDEP
-;* V73 tmp50 [V73 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP
-;* V74 tmp51 [V74 ] ( 0, 0 ) byref -> zero-ref single-def "field V54._reference (fldOffset=0x0)" P-INDEP
-;* V75 tmp52 [V75 ] ( 0, 0 ) int -> zero-ref single-def "field V54._length (fldOffset=0x8)" P-INDEP
-; V76 tmp53 [V76,T24] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
-; V77 tmp54 [V77,T45] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V78 tmp55 [V78,T46] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V79 tmp56 [V79,T47] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V80 cse0 [V80,T22] ( 3, 4 ) long -> [rbp-0xD0] spill-single-def "CSE #03: conservative"
-; V81 cse1 [V81,T19] ( 5, 5.25) int -> [rbp-0xD4] spill-single-def "CSE #07: moderate"
-; V82 rat0 [V82,T01] ( 7, 21 ) long -> rsi "Widened IV V18"
-; V83 rat1 [V83,T04] ( 6, 20.50) long -> [rbp-0xE0] "Widened IV V20"
-; V84 rat2 [V84,T02] ( 7, 21 ) long -> rsi "Widened IV V19"
+;* V29 tmp6 [V29 ] ( 0, 0 ) ref -> zero-ref
+;* V30 tmp7 [V30 ] ( 0, 0 ) int -> zero-ref
+; V31 tmp8 [V31,T15] ( 6, 8 ) ref -> [rbp-0x100]
+; V32 tmp9 [V32,T39] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Single-def Box Helper" <System.Int32>
+; V33 tmp10 [V33,T43] ( 2, 0 ) ref -> r14 class-hnd exact single-def "impImportAndPushBox" <System.String>
+; V34 tmp11 [V34,T40] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
+; V35 tmp12 [V35,T41] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
+; V36 tmp13 [V36,T42] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
+; V37 tmp14 [V37,T26] ( 3, 3 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Object[]>
+;* V38 tmp15 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
+;* V39 tmp16 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
+;* V40 tmp17 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
+;* V41 tmp18 [V41 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V42 tmp19 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
+;* V43 tmp20 [V43 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V44 tmp21 [V44 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[System.Object]>
+;* V45 tmp22 [V45 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[System.Object]>
+;* V46 tmp23 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
+;* V47 tmp24 [V47 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V48 tmp25 [V48 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V49 tmp26 [V49,T24] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V50 tmp27 [V50,T07] ( 4, 16 ) long -> rdx "Inlining Arg"
+;* V51 tmp28 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx>
+;* V52 tmp29 [V52 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Span`1[System.Object]>
+; V53 tmp30 [V53 ] ( 17, 43.96) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V03.constructors (fldOffset=0x0)" P-DEP
+;* V54 tmp31 [V54 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
+;* V55 tmp32 [V55 ] ( 0, 0 ) int -> zero-ref single-def "field V06._length (fldOffset=0x8)" P-INDEP
+; V56 tmp33 [V56,T06] ( 10, 18.96) byref -> r12 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+; V57 tmp34 [V57,T09] ( 10, 11.96) int -> r13 single-def "field V07._length (fldOffset=0x8)" P-INDEP
+; V58 tmp35 [V58,T17] ( 4, 7 ) byref -> [rbp-0x108] spill-single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V59 tmp36 [V59,T11] ( 3, 9 ) int -> [rbp-0xC4] spill-single-def "field V08._length (fldOffset=0x8)" P-INDEP
+; V60 tmp37 [V60,T27] ( 3, 2 ) byref -> r12 "field V24._reference (fldOffset=0x0)" P-INDEP
+; V61 tmp38 [V61,T25] ( 4, 3 ) int -> rdi "field V24._length (fldOffset=0x8)" P-INDEP
+; V62 tmp39 [V62,T31] ( 2, 1 ) byref -> r12 "field V38._reference (fldOffset=0x0)" P-INDEP
+; V63 tmp40 [V63,T34] ( 2, 1 ) int -> rdi "field V38._length (fldOffset=0x8)" P-INDEP
+; V64 tmp41 [V64,T32] ( 2, 1 ) byref -> r12 single-def "field V39._reference (fldOffset=0x0)" P-INDEP
+;* V65 tmp42 [V65,T38] ( 0, 0 ) int -> zero-ref single-def "field V39._length (fldOffset=0x8)" P-INDEP
+; V66 tmp43 [V66,T28] ( 2, 2 ) byref -> r12 single-def "field V40._reference (fldOffset=0x0)" P-INDEP
+;* V67 tmp44 [V67,T35] ( 0, 0 ) int -> zero-ref single-def "field V40._length (fldOffset=0x8)" P-INDEP
+; V68 tmp45 [V68,T29] ( 2, 2 ) byref -> rcx single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V69 tmp46 [V69,T36] ( 0, 0 ) int -> zero-ref single-def "field V42._length (fldOffset=0x8)" P-INDEP
+;* V70 tmp47 [V70 ] ( 0, 0 ) byref -> zero-ref "field V44._reference (fldOffset=0x0)" P-INDEP
+;* V71 tmp48 [V71 ] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x8)" P-INDEP
+;* V72 tmp49 [V72 ] ( 0, 0 ) byref -> zero-ref "field V45._reference (fldOffset=0x0)" P-INDEP
+;* V73 tmp50 [V73 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP
+;* V74 tmp51 [V74 ] ( 0, 0 ) byref -> zero-ref "field V46._reference (fldOffset=0x0)" P-INDEP
+;* V75 tmp52 [V75 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP
+;* V76 tmp53 [V76 ] ( 0, 0 ) byref -> zero-ref single-def "field V52._reference (fldOffset=0x0)" P-INDEP
+;* V77 tmp54 [V77 ] ( 0, 0 ) int -> zero-ref single-def "field V52._length (fldOffset=0x8)" P-INDEP
+; V78 tmp55 [V78,T23] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V79 tmp56 [V79,T44] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V80 tmp57 [V80,T45] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V81 tmp58 [V81,T46] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V82 cse0 [V82,T22] ( 3, 4 ) long -> [rbp-0xD0] spill-single-def "CSE #02: conservative"
+; V83 cse1 [V83,T20] ( 5, 5.25) int -> [rbp-0xD4] spill-single-def "CSE #06: moderate"
+; V84 rat0 [V84,T01] ( 7, 21 ) long -> rsi "Widened IV V18"
+; V85 rat1 [V85,T04] ( 6, 20.50) long -> [rbp-0xE0] "Widened IV V20"
+; V86 rat2 [V86,T02] ( 7, 21 ) long -> rsi "Widened IV V19"
;
; Lcl frame size = 232
G_M32498_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 232
lea rbp, [rsp+0x110]
xor eax, eax
mov qword ptr [rbp-0xB8], rax
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0xB0], ymm8
vmovdqu ymmword ptr [rbp-0x90], ymm8
vmovdqu ymmword ptr [rbp-0x70], ymm8
vmovdqu ymmword ptr [rbp-0x50], ymm8
mov qword ptr [rbp-0x30], rax
mov r14, rdi
mov r15, rsi
mov rbx, rdx
;; size=78 bbWeight=1 PerfScore 18.08
G_M32498_IG02:
test r14, r14
je G_M32498_IG42
mov rdi, r15
mov rax, qword ptr [r15]
mov rax, qword ptr [rax+0x70]
call [rax+0x18]System.Type:GetAttributeFlagsImpl():int:this
test al, 128
jne G_M32498_IG43
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
lea rdx, [rbp-0x30]
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this
call [rax]System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this
test eax, eax
jne SHORT G_M32498_IG04
;; size=66 bbWeight=1 PerfScore 17.25
G_M32498_IG03:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities:GetOrAddConstructors(System.Type):Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx[]
call [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities:GetOrAddConstructors(System.Type):Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx[]
mov gword ptr [rbp-0x30], rax
;; size=19 bbWeight=0.50 PerfScore 2.25
G_M32498_IG04:
vxorps ymm0, ymm0, ymm0
vmovdqu ymmword ptr [rbp-0x70], ymm0
vmovdqu ymmword ptr [rbp-0x50], ymm0
lea rdi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities:<CreateInstance>g__GetMaxArgCount|4_0(byref):int
call [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities:<CreateInstance>g__GetMaxArgCount|4_0(byref):int
mov r13d, eax
cmp r13d, 4
- jg SHORT G_M32498_IG06
+ jle SHORT G_M32498_IG06
;; size=39 bbWeight=1 PerfScore 7.58
G_M32498_IG05:
- lea r12, bword ptr [rbp-0x70]
- lea eax, [r13+r13]
- jmp SHORT G_M32498_IG07
- align [0 bytes for IG09]
- ;; size=11 bbWeight=0.50 PerfScore 2.25
-G_M32498_IG06:
lea esi, [r13+r13]
movsxd rsi, esi
mov rdi, 0xD1FFAB1E ; System.Object[]
call CORINFO_HELP_NEWARR_1_OBJ
- lea edi, [r13+r13]
- cmp dword ptr [rax+0x08], edi
- jb G_M32498_IG44
lea r12, bword ptr [rax+0x10]
- mov eax, edi
- ;; size=43 bbWeight=0.50 PerfScore 5.12
+ mov edi, dword ptr [rax+0x08]
+ jmp SHORT G_M32498_IG07
+ align [0 bytes for IG09]
+ ;; size=32 bbWeight=0.50 PerfScore 4.00
+G_M32498_IG06:
+ lea r12, bword ptr [rbp-0x70]
+ mov edi, 8
+ ;; size=9 bbWeight=0.50 PerfScore 0.38
G_M32498_IG07:
- cmp r13d, eax
+ cmp r13d, edi
+ ja G_M32498_IG44
+ mov r11d, r13d
+ mov esi, r13d
+ add r11, rsi
+ mov edi, edi
+ cmp r11, rdi
ja G_M32498_IG44
- mov ecx, r13d
- shl rcx, 3
- mov qword ptr [rbp-0xD0], rcx
- lea rdx, bword ptr [r12+rcx]
- sub eax, r13d
- mov bword ptr [rbp-0x108], rdx
- mov dword ptr [rbp-0xC4], eax
+ mov eax, r13d
+ shl rax, 3
+ mov qword ptr [rbp-0xD0], rax
+ lea rcx, bword ptr [r12+rax]
+ mov bword ptr [rbp-0x108], rcx
+ mov dword ptr [rbp-0xC4], r13d
vxorps xmm0, xmm0, xmm0
vmovdqu xmmword ptr [rbp-0x88], xmm0
vmovdqu xmmword ptr [rbp-0x80], xmm0
mov rdi, r14
mov r11, 0xD1FFAB1E ; code for System.IServiceProvider:GetService(System.Type):System.Object:this
mov rsi, 0xD1FFAB1E ; 'Microsoft.Extensions.DependencyInjection.IServiceProviderIsServ'
call [r11]System.IServiceProvider:GetService(System.Type):System.Object:this
mov rsi, rax
mov rdi, 0xD1FFAB1E ; Microsoft.Extensions.DependencyInjection.IServiceProviderIsService
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTINTERFACE
call [rax]CORINFO_HELP_CHKCASTINTERFACE
mov gword ptr [rbp-0xF0], rax
test rax, rax
je G_M32498_IG26
- ;; size=127 bbWeight=1 PerfScore 17.83
+ ;; size=145 bbWeight=1 PerfScore 19.83
G_M32498_IG08:
xor esi, esi
mov rdi, gword ptr [rbp-0x30]
cmp dword ptr [rdi+0x08], 0
jle SHORT G_M32498_IG10
;; size=12 bbWeight=0.50 PerfScore 2.62
G_M32498_IG09:
mov rdi, gword ptr [rbp-0x30]
cmp esi, dword ptr [rdi+0x08]
jae G_M32498_IG41
mov rdi, gword ptr [rbp-0x30]
mov rcx, gword ptr [rdi+8*rsi+0x10]
cmp byte ptr [rcx+0x28], 0
jne G_M32498_IG22
inc esi
mov rcx, gword ptr [rbp-0x30]
cmp dword ptr [rcx+0x08], esi
jg SHORT G_M32498_IG09
;; size=43 bbWeight=4 PerfScore 69.00
G_M32498_IG10:
mov dword ptr [rbp-0x9C], -1
vxorps xmm0, xmm0, xmm0
vmovdqu xmmword ptr [rbp-0xB8], xmm0
vmovdqu xmmword ptr [rbp-0xB0], xmm0
xor edx, edx
mov dword ptr [rbp-0xBC], edx
xor r8d, r8d
mov rsi, gword ptr [rbp-0x30]
cmp dword ptr [rsi+0x08], 0
jle G_M32498_IG13
;; size=55 bbWeight=0.50 PerfScore 4.92
G_M32498_IG11:
mov rsi, gword ptr [rbp-0x30]
cmp r8d, dword ptr [rsi+0x08]
jae G_M32498_IG41
mov rsi, gword ptr [rbp-0x30]
mov qword ptr [rbp-0xE0], r8
mov rsi, gword ptr [rsi+8*r8+0x10]
mov r9, rsi
mov gword ptr [rbp-0xE8], r9
mov rsi, gword ptr [r9+0x10]
mov esi, dword ptr [rsi+0x08]
- mov esi, r13d
+ mov esi, dword ptr [rbp-0xC4]
mov rdi, r12
- mov r10, 0xD1FFAB1E ; code for System.SpanHelpers:ClearWithReferences(byref,ulong)
- call [r10]System.SpanHelpers:ClearWithReferences(byref,ulong)
+ mov r11, 0xD1FFAB1E ; code for System.SpanHelpers:ClearWithReferences(byref,ulong)
+ call [r11]System.SpanHelpers:ClearWithReferences(byref,ulong)
mov rax, gword ptr [rbp-0xE8]
mov gword ptr [rbp-0x88], rax
mov bword ptr [rbp-0x80], r12
- mov dword ptr [rbp-0x78], r13d
+ mov eax, dword ptr [rbp-0xC4]
+ mov dword ptr [rbp-0x78], eax
lea rdi, [rbp-0x88]
mov rsi, rbx
mov rdx, gword ptr [rbp-0xF0]
- mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:Match(System.Object[],Microsoft.Extensions.DependencyInjection.IServiceProviderIsService):int:this
- call [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:Match(System.Object[],Microsoft.Extensions.DependencyInjection.IServiceProviderIsService):int:this
+ mov rcx, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:Match(System.Object[],Microsoft.Extensions.DependencyInjection.IServiceProviderIsService):int:this
+ call [rcx]Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:Match(System.Object[],Microsoft.Extensions.DependencyInjection.IServiceProviderIsService):int:this
mov ecx, dword ptr [rbp-0x9C]
cmp ecx, eax
- jge G_M32498_IG16
- ;; size=131 bbWeight=4 PerfScore 117.00
+ jge SHORT G_M32498_IG16
+ ;; size=135 bbWeight=4 PerfScore 124.00
G_M32498_IG12:
mov dword ptr [rbp-0x9C], eax
- cmp r13d, dword ptr [rbp-0xC4]
- ja G_M32498_IG48
- mov r9, qword ptr [rbp-0xD0]
- mov rdx, r9
+ mov r8, qword ptr [rbp-0xD0]
+ mov rdx, r8
cmp rdx, 0x4000
ja SHORT G_M32498_IG14
mov rdi, bword ptr [rbp-0x108]
mov rsi, r12
call System.Buffer:__BulkMoveWithWriteBarrier(byref,byref,ulong)
jmp SHORT G_M32498_IG15
- ;; size=55 bbWeight=2 PerfScore 21.50
+ ;; size=42 bbWeight=2 PerfScore 15.50
G_M32498_IG13:
- mov edx, dword ptr [rbp-0xBC]
+ mov edi, dword ptr [rbp-0xBC]
jmp SHORT G_M32498_IG18
align [0 bytes for IG23]
;; size=8 bbWeight=0.25 PerfScore 0.75
G_M32498_IG14:
mov rdi, bword ptr [rbp-0x108]
mov rsi, r12
mov rax, 0xD1FFAB1E ; code for System.Buffer:_BulkMoveWithWriteBarrier(byref,byref,ulong)
call [rax]System.Buffer:_BulkMoveWithWriteBarrier(byref,byref,ulong)
;; size=22 bbWeight=2 PerfScore 9.00
G_M32498_IG15:
mov rsi, gword ptr [rbp-0x88]
mov gword ptr [rbp-0xB8], rsi
mov rsi, bword ptr [rbp-0x108]
mov bword ptr [rbp-0xB0], rsi
- mov edi, dword ptr [rbp-0xC4]
- mov dword ptr [rbp-0xA8], edi
+ mov dword ptr [rbp-0xA8], r13d
xor edx, edx
+ xor edi, edi
jmp SHORT G_M32498_IG17
- ;; size=44 bbWeight=2 PerfScore 16.50
+ ;; size=41 bbWeight=2 PerfScore 15.00
G_M32498_IG16:
cmp ecx, eax
- mov edx, dword ptr [rbp-0xBC]
+ mov edi, dword ptr [rbp-0xBC]
jne SHORT G_M32498_IG21
- mov edx, 1
+ mov edi, 1
mov dword ptr [rbp-0x9C], ecx
mov rsi, bword ptr [rbp-0x108]
- mov edi, dword ptr [rbp-0xC4]
- ;; size=34 bbWeight=2 PerfScore 11.00
+ ;; size=28 bbWeight=2 PerfScore 9.00
G_M32498_IG17:
mov r8, qword ptr [rbp-0xE0]
inc r8d
mov rax, gword ptr [rbp-0x30]
cmp dword ptr [rax+0x08], r8d
jg SHORT G_M32498_IG20
;; size=20 bbWeight=4 PerfScore 25.00
G_M32498_IG18:
cmp dword ptr [rbp-0x9C], -1
je G_M32498_IG26
- test edx, edx
+ test edi, edi
jne G_M32498_IG45
lea rdi, [rbp-0xB8]
mov rsi, r14
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:CreateInstance(System.IServiceProvider):System.Object:this
call [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:CreateInstance(System.IServiceProvider):System.Object:this
nop
;; size=44 bbWeight=0.50 PerfScore 4.25
G_M32498_IG19:
add rsp, 232
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=0.50 PerfScore 2.12
G_M32498_IG20:
- mov dword ptr [rbp-0xBC], edx
+ mov dword ptr [rbp-0xBC], edi
jmp G_M32498_IG11
;; size=11 bbWeight=2 PerfScore 6.00
G_M32498_IG21:
mov dword ptr [rbp-0x9C], ecx
mov rsi, bword ptr [rbp-0x108]
- mov edi, dword ptr [rbp-0xC4]
jmp SHORT G_M32498_IG17
- ;; size=21 bbWeight=1 PerfScore 5.00
+ ;; size=15 bbWeight=1 PerfScore 4.00
G_M32498_IG22:
inc esi
mov rdi, gword ptr [rbp-0x30]
cmp dword ptr [rdi+0x08], esi
jle SHORT G_M32498_IG24
;; size=11 bbWeight=0.50 PerfScore 2.62
G_M32498_IG23:
mov rdi, gword ptr [rbp-0x30]
cmp esi, dword ptr [rdi+0x08]
jae G_M32498_IG41
mov rdi, gword ptr [rbp-0x30]
mov rdi, gword ptr [rdi+8*rsi+0x10]
cmp byte ptr [rdi+0x28], 0
jne G_M32498_IG47
inc esi
mov rdi, gword ptr [rbp-0x30]
cmp dword ptr [rdi+0x08], esi
jg SHORT G_M32498_IG23
;; size=43 bbWeight=4 PerfScore 69.00
G_M32498_IG24:
mov gword ptr [rbp-0xE8], rcx
mov rsi, gword ptr [rcx+0x10]
mov esi, dword ptr [rsi+0x08]
mov esi, r13d
mov rdi, r12
mov rdx, 0xD1FFAB1E ; code for System.SpanHelpers:ClearWithReferences(byref,ulong)
call [rdx]System.SpanHelpers:ClearWithReferences(byref,ulong)
mov r15, gword ptr [rbp-0xE8]
mov gword ptr [rbp-0x88], r15
mov bword ptr [rbp-0x80], r12
mov dword ptr [rbp-0x78], r13d
lea rdi, [rbp-0x88]
mov rsi, rbx
mov rdx, gword ptr [rbp-0xF0]
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:Match(System.Object[],Microsoft.Extensions.DependencyInjection.IServiceProviderIsService):int:this
call [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:Match(System.Object[],Microsoft.Extensions.DependencyInjection.IServiceProviderIsService):int:this
cmp eax, -1
je G_M32498_IG46
lea rdi, [rbp-0x88]
mov rsi, r14
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:CreateInstance(System.IServiceProvider):System.Object:this
call [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:CreateInstance(System.IServiceProvider):System.Object:this
nop
;; size=115 bbWeight=0.50 PerfScore 11.62
G_M32498_IG25:
add rsp, 232
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=0.50 PerfScore 2.12
G_M32498_IG26:
cmp dword ptr [rbx+0x08], 0
jne SHORT G_M32498_IG27
mov rax, 0xD1FFAB1E ; 'System.Type[]'
jmp G_M32498_IG38
;; size=21 bbWeight=0.50 PerfScore 3.12
G_M32498_IG27:
mov esi, dword ptr [rbx+0x08]
mov rdi, 0xD1FFAB1E ; System.Type[]
call CORINFO_HELP_NEWARR_1_OBJ
xor ecx, ecx
mov gword ptr [rbp-0xF8], rax
mov edx, dword ptr [rax+0x08]
mov dword ptr [rbp-0xD4], edx
test edx, edx
mov rax, gword ptr [rbp-0xF8]
jle G_M32498_IG38
;; size=51 bbWeight=0.50 PerfScore 4.88
G_M32498_IG28:
cmp dword ptr [rbx+0x08], edx
jl SHORT G_M32498_IG34
;; size=5 bbWeight=0.25 PerfScore 1.00
G_M32498_IG29:
mov dword ptr [rbp-0xC0], ecx
mov edi, ecx
mov rdi, gword ptr [rbx+8*rdi+0x10]
test rdi, rdi
jne SHORT G_M32498_IG31
;; size=18 bbWeight=3.96 PerfScore 17.82
G_M32498_IG30:
xor rsi, rsi
mov gword ptr [rbp-0x100], rsi
jmp SHORT G_M32498_IG32
;; size=11 bbWeight=1.98 PerfScore 6.44
G_M32498_IG31:
mov gword ptr [rbp-0xF8], rax
call System.Object:GetType():System.Type:this
mov gword ptr [rbp-0x100], rax
mov rax, gword ptr [rbp-0xF8]
;; size=26 bbWeight=1.98 PerfScore 7.92
G_M32498_IG32:
movsxd rsi, dword ptr [rbp-0xC0]
mov gword ptr [rbp-0xF8], rax
mov rdi, rax
mov rdx, gword ptr [rbp-0x100]
call CORINFO_HELP_ARRADDR_ST
mov ecx, dword ptr [rbp-0xC0]
inc ecx
cmp dword ptr [rbp-0xD4], ecx
mov rax, gword ptr [rbp-0xF8]
jg SHORT G_M32498_IG29
;; size=52 bbWeight=3.96 PerfScore 45.54
G_M32498_IG33:
jmp G_M32498_IG38
;; size=5 bbWeight=1.98 PerfScore 3.96
G_M32498_IG34:
cmp ecx, dword ptr [rbx+0x08]
jae G_M32498_IG41
mov dword ptr [rbp-0xC0], ecx
mov edi, ecx
mov rdi, gword ptr [rbx+8*rdi+0x10]
test rdi, rdi
jne SHORT G_M32498_IG36
;; size=27 bbWeight=0.04 PerfScore 0.34
G_M32498_IG35:
xor rdi, rdi
xor rsi, rsi
mov gword ptr [rbp-0x100], rsi
jmp SHORT G_M32498_IG37
;; size=13 bbWeight=0.02 PerfScore 0.07
G_M32498_IG36:
mov gword ptr [rbp-0xF8], rax
call System.Object:GetType():System.Type:this
mov gword ptr [rbp-0x100], rax
mov rax, gword ptr [rbp-0xF8]
;; size=26 bbWeight=0.02 PerfScore 0.08
G_M32498_IG37:
movsxd rsi, dword ptr [rbp-0xC0]
mov gword ptr [rbp-0xF8], rax
mov rdi, rax
mov rdx, gword ptr [rbp-0x100]
call CORINFO_HELP_ARRADDR_ST
mov r8d, dword ptr [rbp-0xC0]
inc r8d
mov ecx, dword ptr [rbp-0xD4]
cmp ecx, r8d
mov rax, gword ptr [rbp-0xF8]
jg G_M32498_IG40
;; size=61 bbWeight=0.04 PerfScore 0.43
G_M32498_IG38:
lea r8, [rbp-0x98]
lea rcx, [rbp-0x90]
mov rdi, r15
mov rsi, rax
mov rdx, gword ptr [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities:FindApplicableConstructor(System.Type,System.Type[],Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx[],byref,byref)
call [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities:FindApplicableConstructor(System.Type,System.Type[],Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx[],byref,byref)
mov rdi, gword ptr [rbp-0x90]
mov rsi, gword ptr [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities:FindConstructorEx(System.Reflection.ConstructorInfo,Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx[]):Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx
call [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities:FindConstructorEx(System.Reflection.ConstructorInfo,Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx[]):Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx
mov r15, rax
mov rsi, gword ptr [r15+0x10]
mov esi, dword ptr [rsi+0x08]
mov esi, r13d
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:ClearWithReferences(byref,ulong)
call [rax]System.SpanHelpers:ClearWithReferences(byref,ulong)
mov gword ptr [rbp-0x88], r15
mov bword ptr [rbp-0x80], r12
mov dword ptr [rbp-0x78], r13d
lea rdi, [rbp-0x88]
mov rsi, gword ptr [rbp-0x98]
mov rdx, rbx
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:MapParameters(System.Nullable`1[int][],System.Object[]):this
call [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:MapParameters(System.Nullable`1[int][],System.Object[]):this
lea rdi, [rbp-0x88]
mov rsi, r14
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:CreateInstance(System.IServiceProvider):System.Object:this
call [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:CreateInstance(System.IServiceProvider):System.Object:this
nop
;; size=154 bbWeight=1.98 PerfScore 61.87
G_M32498_IG39:
add rsp, 232
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=1.98 PerfScore 8.42
G_M32498_IG40:
mov ecx, r8d
jmp G_M32498_IG34
;; size=8 bbWeight=0.02 PerfScore 0.05
G_M32498_IG41:
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
G_M32498_IG42:
mov rdi, 0xD1FFAB1E ; System.ArgumentNullException
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov edi, 945
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rsi, rax
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:.ctor(System.String):this
call [rax]System.ArgumentNullException:.ctor(System.String):this
mov rdi, r15
call CORINFO_HELP_THROW
;; size=64 bbWeight=0 PerfScore 0.00
G_M32498_IG43:
mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_CannotCreateAbstractClasses():System.String
call [rax]System.SR:get_CannotCreateAbstractClasses():System.String
mov rsi, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor(System.String):this
call [rax]System.InvalidOperationException:.ctor(System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
;; size=56 bbWeight=0 PerfScore 0.00
G_M32498_IG44:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M32498_IG45:
mov rdi, 0xD1FFAB1E ; System.Int32
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_MultipleCtorsFoundWithBestLength():System.String
call [rax]System.SR:get_MultipleCtorsFoundWithBestLength():System.String
mov r14, rax
mov r13d, dword ptr [rbp-0x9C]
mov dword ptr [rbx+0x08], r13d
mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
call CORINFO_HELP_NEWSFAST
mov r13, rax
mov rdx, rbx
mov rdi, r14
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 rsi, rax
mov rdi, r13
mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor(System.String):this
call [rax]System.InvalidOperationException:.ctor(System.String):this
mov rdi, r13
call CORINFO_HELP_THROW
;; size=109 bbWeight=0 PerfScore 0.00
G_M32498_IG46:
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities:ThrowMarkedCtorDoesNotTakeAllProvidedArguments()
call [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities:ThrowMarkedCtorDoesNotTakeAllProvidedArguments()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M32498_IG47:
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities:ThrowMultipleCtorsMarkedWithAttributeException()
call [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities:ThrowMultipleCtorsMarkedWithAttributeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M32498_IG48:
- mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
- call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
- int3
- ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1870, prolog size 78, PerfScore 612.35, instruction count 406, allocated bytes for code 1873 (MethodHash=9f15810d) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object (FullOpts)
+; Total bytes of code 1838, prolog size 78, PerfScore 607.85, instruction count 402, allocated bytes for code 1845 (MethodHash=9f15810d) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object (FullOpts) -14 (-5.93 % of base) - System.Runtime.Loader.AssemblyLoadContext:GetResolvedUnmanagedDll(System.Reflection.Assembly,System.String):long:this ; Assembly listing for method System.Runtime.Loader.AssemblyLoadContext:GetResolvedUnmanagedDll(System.Reflection.Assembly,System.String):long: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; 4 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T10] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Runtime.Loader.AssemblyLoadContext>
; V01 arg1 [V01,T07] ( 3, 4 ) ref -> rbx class-hnd single-def <System.Reflection.Assembly>
; V02 arg2 [V02,T08] ( 3, 4 ) ref -> r15 class-hnd single-def <System.String>
; V03 loc0 [V03 ] ( 8, 33 ) struct (24) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Delegate+InvocationListEnumerator`1[System.Func`3[System.Reflection.Assembly,System.String,long]]>
;* V04 loc1 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Delegate+InvocationListEnumerator`1[System.Func`3[System.Reflection.Assembly,System.String,long]]>
; V05 loc2 [V05,T09] ( 3, 6 ) ref -> rax class-hnd <System.Func`3[System.Reflection.Assembly,System.String,long]>
; V06 loc3 [V06,T11] ( 3, 4.50) long -> rax
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T12] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Func`3[System.Reflection.Assembly,System.String,long]>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Delegate+InvocationListEnumerator`1[System.Func`3[System.Reflection.Assembly,System.String,long]]>
;* V10 tmp3 [V10,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V11 tmp4 [V11,T01] ( 6, 34 ) int -> r14 "Inline stloc first use temp"
; V12 tmp5 [V12,T00] ( 5, 84 ) ref -> r13 class-hnd "dup spill" <System.MulticastDelegate>
; V13 tmp6 [V13,T04] ( 2, 16 ) byref -> r12
;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref
;* V15 tmp8 [V15 ] ( 0, 0 ) byref -> zero-ref
; V16 tmp9 [V16,T02] ( 4, 20 ) ref -> rax
;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Func`3[System.Reflection.Assembly,System.String,long]>
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Func`3[System.Reflection.Assembly,System.String,long]>
; V19 tmp12 [V19,T03] ( 4, 20 ) ref -> rax class-hnd "Inline return value spill temp" <System.Object>
; V20 tmp13 [V20,T05] ( 4, 8 ) ref -> rax class-hnd "Inline stloc first use temp" <System.Object[]>
;* V21 tmp14 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V22 tmp15 [V22 ] ( 3, 17 ) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V03._delegate (fldOffset=0x0)" P-DEP
; V23 tmp16 [V23 ] ( 3, 11 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x8)" P-DEP
; V24 tmp17 [V24 ] ( 4, 21 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V03._index (fldOffset=0x10)" P-DEP
;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref "field V04._delegate (fldOffset=0x0)" P-INDEP
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V04._current (fldOffset=0x8)" P-INDEP
;* V27 tmp20 [V27 ] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x10)" P-INDEP
; V28 tmp21 [V28,T13] ( 2, 2 ) ref -> rsi single-def "field V09._delegate (fldOffset=0x0)" P-INDEP
;* V29 tmp22 [V29,T14] ( 0, 0 ) ref -> zero-ref single-def "field V09._current (fldOffset=0x8)" P-INDEP
;* V30 tmp23 [V30,T15] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x10)" P-INDEP
;
; Lcl frame size = 24
G_M27358_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 24
lea rbp, [rsp+0x40]
vxorps xmm8, xmm8, xmm8
vmovdqa xmmword ptr [rbp-0x40], xmm8
xor eax, eax
mov qword ptr [rbp-0x30], rax
mov rbx, rsi
mov r15, rdx
;; size=41 bbWeight=1 PerfScore 10.83
G_M27358_IG02:
mov rsi, gword ptr [rdi+0x10]
mov gword ptr [rbp-0x40], rsi
xor rsi, rsi
mov gword ptr [rbp-0x38], rsi
mov dword ptr [rbp-0x30], -1
jmp SHORT G_M27358_IG04
;; size=23 bbWeight=1 PerfScore 7.25
G_M27358_IG03:
mov rax, gword ptr [rbp-0x38]
mov rsi, rbx
mov rdx, r15
mov rdi, gword ptr [rax+0x08]
call [rax+0x18]System.Func`3[System.__Canon,System.__Canon,long]:Invoke(System.__Canon,System.__Canon):long:this
test rax, rax
- jne G_M27358_IG15
- ;; size=26 bbWeight=2 PerfScore 15.50
+ jne SHORT G_M27358_IG15
+ ;; size=22 bbWeight=2 PerfScore 15.50
G_M27358_IG04:
mov r14d, dword ptr [rbp-0x30]
inc r14d
mov r13, gword ptr [rbp-0x40]
lea r12, bword ptr [rbp-0x40]
test r13, r13
jne SHORT G_M27358_IG06
;; size=20 bbWeight=8 PerfScore 32.00
G_M27358_IG05:
xor rax, rax
jmp SHORT G_M27358_IG11
;; size=4 bbWeight=2 PerfScore 4.50
G_M27358_IG06:
mov rsi, gword ptr [r13+0x28]
mov rdi, 0xD1FFAB1E ; System.Object[]
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFARRAY
- call [rax]CORINFO_HELP_ISINSTANCEOFARRAY
+ call CORINFO_HELP_ISINSTANCEOFARRAY
test rax, rax
jne SHORT G_M27358_IG09
test r14d, r14d
je SHORT G_M27358_IG08
- ;; size=36 bbWeight=2 PerfScore 16.00
+ ;; size=29 bbWeight=2 PerfScore 11.50
G_M27358_IG07:
xor rax, rax
jmp SHORT G_M27358_IG11
;; size=4 bbWeight=8 PerfScore 18.00
G_M27358_IG08:
mov rax, r13
jmp SHORT G_M27358_IG11
;; size=5 bbWeight=8 PerfScore 18.00
G_M27358_IG09:
cmp r14d, dword ptr [r13+0x30]
jae SHORT G_M27358_IG07
;; size=6 bbWeight=16 PerfScore 64.00
G_M27358_IG10:
cmp r14d, dword ptr [rax+0x08]
jae SHORT G_M27358_IG16
mov esi, r14d
mov rax, gword ptr [rax+8*rsi+0x10]
;; size=14 bbWeight=2 PerfScore 12.50
G_M27358_IG11:
mov gword ptr [r12+0x08], rax
test rax, rax
je SHORT G_M27358_IG13
;; size=10 bbWeight=8 PerfScore 18.00
G_M27358_IG12:
mov dword ptr [rbp-0x30], r14d
- jmp G_M27358_IG03
- ;; size=9 bbWeight=4 PerfScore 12.00
+ jmp SHORT G_M27358_IG03
+ ;; size=6 bbWeight=4 PerfScore 12.00
G_M27358_IG13:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M27358_IG14:
add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M27358_IG15:
add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M27358_IG16:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 236, prolog size 35, PerfScore 232.96, instruction count 77, allocated bytes for code 236 (MethodHash=16d79521) for method System.Runtime.Loader.AssemblyLoadContext:GetResolvedUnmanagedDll(System.Reflection.Assembly,System.String):long:this (FullOpts)
+; Total bytes of code 222, prolog size 35, PerfScore 228.46, instruction count 76, allocated bytes for code 222 (MethodHash=16d79521) for method System.Runtime.Loader.AssemblyLoadContext:GetResolvedUnmanagedDll(System.Reflection.Assembly,System.String):long:this (FullOpts) Larger list of diffs: https://gist.github.com/MihuBot/336cc04d852259e3c14fa07cafe0a825 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Build completed in 1 hour 45 minutes.
dotnet/runtime#99766
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: