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] [EgorBo] JIT: Use faster write barriers when we know the target address is on the heap #235
Comments
Top method improvements-19 (-2.09 % of base) - System.Runtime.Loader.AssemblyLoadContext:InvokeResolveEvent(System.ResolveEventHandler,System.Reflection.RuntimeAssembly,System.String):System.Reflection.RuntimeAssembly ; Assembly listing for method System.Runtime.Loader.AssemblyLoadContext:InvokeResolveEvent(System.ResolveEventHandler,System.Reflection.RuntimeAssembly,System.String):System.Reflection.RuntimeAssembly (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; 15 single block inlinees; 10 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T07] ( 6, 7.50) ref -> [rbp-0x70] class-hnd single-def <System.ResolveEventHandler>
; V01 arg1 [V01,T29] ( 3, 2.50) ref -> r14 class-hnd single-def <System.Reflection.RuntimeAssembly>
; V02 arg2 [V02,T09] ( 5, 6.50) ref -> [rbp-0x78] class-hnd single-def <System.String>
; V03 loc0 [V03,T33] ( 2, 2.50) ref -> [rbp-0x80] class-hnd exact single-def <System.ResolveEventArgs>
; V04 loc1 [V04 ] ( 8, 19.50) struct (24) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Delegate+InvocationListEnumerator`1[System.ResolveEventHandler]>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Delegate+InvocationListEnumerator`1[System.ResolveEventHandler]>
; V06 loc3 [V06,T10] ( 4, 8 ) ref -> r14 class-hnd exact <System.ResolveEventHandler>
; V07 loc4 [V07,T04] ( 7, 14 ) ref -> [rbp-0x88] class-hnd spill-single-def <System.Reflection.Assembly>
; V08 loc5 [V08,T30] ( 3, 4.50) ref -> rax class-hnd exact <System.Reflection.RuntimeAssembly>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V10 tmp1 [V10,T31] ( 4, 4 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.ResolveEventArgs>
;* V11 tmp2 [V11 ] ( 0, 0 ) ref -> zero-ref
; V12 tmp3 [V12,T27] ( 3, 6 ) ref -> r14
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref
;* V14 tmp5 [V14 ] ( 0, 0 ) ref -> zero-ref
; V15 tmp6 [V15,T11] ( 4, 8 ) ref -> [rbp-0x90]
;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) ref -> zero-ref
;* V19 tmp10 [V19 ] ( 0, 0 ) ref -> zero-ref
;* V20 tmp11 [V20 ] ( 0, 0 ) ref -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref
; V22 tmp13 [V22,T12] ( 3, 6 ) ref -> rax
;* V23 tmp14 [V23 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Delegate+InvocationListEnumerator`1[System.ResolveEventHandler]>
; V24 tmp15 [V24,T28] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
; V25 tmp16 [V25,T03] ( 4, 16 ) ref -> rdi class-hnd exact "Inlining Arg" <System.ResolveEventHandler>
;* V26 tmp17 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V27 tmp18 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V28 tmp19 [V28 ] ( 2, 4 ) byref -> [rbp-0x48] must-init pinned "Inline stloc first use temp"
;* V29 tmp20 [V29 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
; V30 tmp21 [V30 ] ( 2, 4 ) byref -> [rbp-0x50] must-init pinned "Inline stloc first use temp"
;* V31 tmp22 [V31 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
; V32 tmp23 [V32 ] ( 2, 4 ) byref -> [rbp-0x58] must-init pinned "Inline stloc first use temp"
;* V33 tmp24 [V33 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
; V34 tmp25 [V34 ] ( 2, 4 ) byref -> [rbp-0x60] must-init pinned "Inline stloc first use temp"
;* V35 tmp26 [V35 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V37 tmp28 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V38 tmp29 [V38,T13] ( 4, 8 ) byref -> rcx "Inline return value spill temp"
; V39 tmp30 [V39,T14] ( 4, 8 ) byref -> rdx "Inline return value spill temp"
; V40 tmp31 [V40,T15] ( 4, 8 ) byref -> rsi "Inline return value spill temp"
; V41 tmp32 [V41,T16] ( 4, 8 ) byref -> rdi "Inline return value spill temp"
;* V42 tmp33 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V43 tmp34 [V43,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V44 tmp35 [V44,T01] ( 6, 30 ) int -> r14 "Inline stloc first use temp"
; V45 tmp36 [V45,T00] ( 5, 68 ) ref -> [rbp-0x98] class-hnd spill-single-def "dup spill" <System.MulticastDelegate>
; V46 tmp37 [V46,T19] ( 2, 8 ) byref -> [rbp-0xA0] spill-single-def
;* V47 tmp38 [V47 ] ( 0, 0 ) ref -> zero-ref
;* V48 tmp39 [V48 ] ( 0, 0 ) byref -> zero-ref
-; V49 tmp40 [V49,T05] ( 4, 12 ) ref -> [rbp-0xA8]
+; V49 tmp40 [V49,T05] ( 4, 12 ) ref -> rdx
;* V50 tmp41 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.ResolveEventHandler>
;* V51 tmp42 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.ResolveEventHandler>
; V52 tmp43 [V52,T02] ( 4, 20 ) ref -> rdx class-hnd "Inline return value spill temp" <System.Object>
; V53 tmp44 [V53,T17] ( 4, 8 ) ref -> rax class-hnd "Inline stloc first use temp" <System.Object[]>
;* V54 tmp45 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V55 tmp46 [V55,T32] ( 3, 4 ) ref -> rax "Single return block return value"
; V56 FramesRoot [V56,T08] ( 6, 10 ) long -> r13 "Pinvoke FrameListRoot"
-; V57 PInvokeFrame [V57 ] ( 8, 12 ) struct (72) [rbp-0xF0] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V57 PInvokeFrame [V57 ] ( 8, 12 ) struct (72) [rbp-0xE8] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
; V58 tmp49 [V58 ] ( 3, 8.50) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V04._delegate (fldOffset=0x0)" P-DEP
; V59 tmp50 [V59 ] ( 3, 6.50) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V04._current (fldOffset=0x8)" P-DEP
; V60 tmp51 [V60 ] ( 4, 12.50) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V04._index (fldOffset=0x10)" P-DEP
;* V61 tmp52 [V61 ] ( 0, 0 ) ref -> zero-ref "field V05._delegate (fldOffset=0x0)" P-INDEP
;* V62 tmp53 [V62 ] ( 0, 0 ) ref -> zero-ref "field V05._current (fldOffset=0x8)" P-INDEP
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref "field V05._index (fldOffset=0x10)" P-INDEP
;* V64 tmp55 [V64,T34] ( 0, 0 ) ref -> zero-ref single-def "field V23._delegate (fldOffset=0x0)" P-INDEP
;* V65 tmp56 [V65,T35] ( 0, 0 ) ref -> zero-ref single-def "field V23._current (fldOffset=0x8)" P-INDEP
;* V66 tmp57 [V66,T36] ( 0, 0 ) int -> zero-ref "field V23._index (fldOffset=0x10)" P-INDEP
; V67 tmp58 [V67,T20] ( 2, 8 ) ref -> rsi "argument with side effect"
; V68 tmp59 [V68,T06] ( 3, 12 ) ref -> rax "argument with side effect"
; V69 tmp60 [V69,T22] ( 2, 8 ) long -> rcx "Cast away GC"
; V70 tmp61 [V70,T23] ( 2, 8 ) long -> rdx "Cast away GC"
; V71 tmp62 [V71,T24] ( 2, 8 ) long -> rsi "Cast away GC"
; V72 tmp63 [V72,T25] ( 2, 8 ) long -> rdi "Cast away GC"
; V73 tmp64 [V73,T26] ( 2, 8 ) long -> rdi "argument with side effect"
; V74 cse0 [V74,T18] ( 4, 8 ) long -> [rbp-0x68] spill-single-def "CSE - moderate"
;
; Lcl frame size = 200
G_M55783_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 200
lea rbp, [rsp+0xF0]
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x60], ymm8
vmovdqa xmmword ptr [rbp-0x40], xmm8
xor ecx, ecx
mov qword ptr [rbp-0x30], rcx
mov rbx, rdi
mov r14, rsi
mov r15, rdx
;; size=55 bbWeight=1 PerfScore 13.08
G_M55783_IG02:
- lea rdi, [rbp-0xE8]
+ lea rdi, [rbp-0xE0]
mov rsi, r10
call CORINFO_HELP_INIT_PINVOKE_FRAME
mov r13, rax
mov rdi, rsp
- mov qword ptr [rbp-0xC8], rdi
+ mov qword ptr [rbp-0xC0], rdi
mov rdi, rbp
- mov qword ptr [rbp-0xB8], rdi
+ mov qword ptr [rbp-0xB0], rdi
test rbx, rbx
jne SHORT G_M55783_IG04
;; size=43 bbWeight=1 PerfScore 5.75
G_M55783_IG03:
xor rax, rax
- jmp G_M55783_IG39
+ jmp G_M55783_IG38
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M55783_IG04:
mov rdi, 0xD1FFAB1E ; System.ResolveEventArgs
call CORINFO_HELP_NEWSFAST
mov r12, rax
lea rdi, bword ptr [r12+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r12+0x10]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov gword ptr [rbp-0x40], rbx
xor rsi, rsi
mov gword ptr [rbp-0x38], rsi
mov dword ptr [rbp-0x30], -1
jmp G_M55783_IG30
;; size=66 bbWeight=0.50 PerfScore 5.12
G_M55783_IG05:
mov r14, gword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.AppDomain:get_CurrentDomain():System.AppDomain
call [rax]System.AppDomain:get_CurrentDomain():System.AppDomain
mov rsi, rax
mov gword ptr [rbp-0x80], r12
mov rdx, r12
mov rdi, gword ptr [r14+0x08]
call [r14+0x18]System.ResolveEventHandler:Invoke(System.Object,System.ResolveEventArgs):System.Reflection.Assembly:this
mov gword ptr [rbp-0x88], rax
mov rcx, 0xD1FFAB1E ; data for System.Runtime.Loader.AssemblyLoadContext:AssemblyResolve
mov rdi, gword ptr [rcx]
test rdi, rdi
je G_M55783_IG10
mov gword ptr [rbp-0x70], rbx
cmp rdi, rbx
je SHORT G_M55783_IG07
mov rbx, gword ptr [rbp-0x70]
mov rsi, rbx
mov rcx, 0xD1FFAB1E ; code for System.MulticastDelegate:Equals(System.Object):ubyte:this
call [rcx]System.MulticastDelegate:Equals(System.Object):ubyte:this
test eax, eax
je SHORT G_M55783_IG09
;; size=95 bbWeight=2 PerfScore 46.50
G_M55783_IG06:
mov gword ptr [rbp-0x70], rbx
;; size=4 bbWeight=1 PerfScore 1.00
G_M55783_IG07:
call System.Runtime.Loader.AssemblyLoadContext:IsTracingEnabled():ubyte
test eax, eax
je SHORT G_M55783_IG08
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.MulticastDelegate:GetMethodImpl():System.Reflection.MethodInfo:this
cmp dword ptr [rdi], edi
call [rax]System.MulticastDelegate:GetMethodImpl():System.Reflection.MethodInfo:this
mov rdi, rax
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x40]
call [rax+0x30]System.Reflection.MemberInfo:get_Name():System.String:this
mov r14, rax
mov rax, gword ptr [rbp-0x88]
test rax, rax
jne SHORT G_M55783_IG11
xor rcx, rcx
xor rdx, rdx
jmp G_M55783_IG14
;; size=63 bbWeight=2 PerfScore 42.00
G_M55783_IG08:
mov rax, gword ptr [rbp-0x88]
mov rbx, gword ptr [rbp-0x70]
jmp G_M55783_IG29
;; size=16 bbWeight=1 PerfScore 4.00
G_M55783_IG09:
mov rax, gword ptr [rbp-0x88]
jmp G_M55783_IG29
;; size=12 bbWeight=1 PerfScore 3.00
G_M55783_IG10:
mov rax, gword ptr [rbp-0x88]
jmp G_M55783_IG29
;; size=12 bbWeight=1 PerfScore 3.00
G_M55783_IG11:
mov rdi, rax
mov rcx, qword ptr [rax]
mov rcx, qword ptr [rcx+0x48]
mov qword ptr [rbp-0x68], rcx
call [rcx+0x18]System.Reflection.Assembly:get_FullName():System.String:this
mov gword ptr [rbp-0x90], rax
mov rdi, gword ptr [rbp-0x88]
mov rax, qword ptr [rbp-0x68]
call [rax+0x28]System.Reflection.Assembly:get_IsDynamic():ubyte:this
test eax, eax
jne SHORT G_M55783_IG13
mov rdi, gword ptr [rbp-0x88]
mov rax, qword ptr [rbp-0x68]
call [rax+0x30]System.Reflection.Assembly:get_Location():System.String:this
test rax, rax
je SHORT G_M55783_IG12
add rax, 12
mov rcx, rax
mov rax, gword ptr [rbp-0x88]
jmp SHORT G_M55783_IG15
;; size=77 bbWeight=2 PerfScore 50.50
G_M55783_IG12:
mov rax, gword ptr [rbp-0x88]
mov rdx, gword ptr [rbp-0x90]
jmp SHORT G_M55783_IG14
;; size=16 bbWeight=1 PerfScore 4.00
G_M55783_IG13:
mov rax, gword ptr [rbp-0x88]
mov rdx, gword ptr [rbp-0x90]
;; size=14 bbWeight=1 PerfScore 2.00
G_M55783_IG14:
xor ecx, ecx
mov gword ptr [rbp-0x90], rdx
;; size=9 bbWeight=2 PerfScore 2.50
G_M55783_IG15:
mov bword ptr [rbp-0x48], rcx
mov rdx, gword ptr [rbp-0x90]
test rdx, rdx
je SHORT G_M55783_IG16
add rdx, 12
jmp SHORT G_M55783_IG17
;; size=22 bbWeight=2 PerfScore 11.00
G_M55783_IG16:
xor edx, edx
;; size=2 bbWeight=2 PerfScore 0.50
G_M55783_IG17:
mov bword ptr [rbp-0x50], rdx
test r14, r14
je SHORT G_M55783_IG18
add r14, 12
mov rsi, r14
jmp SHORT G_M55783_IG19
;; size=18 bbWeight=2 PerfScore 9.50
G_M55783_IG18:
xor esi, esi
;; size=2 bbWeight=2 PerfScore 0.50
G_M55783_IG19:
mov bword ptr [rbp-0x58], rsi
test r15, r15
je SHORT G_M55783_IG20
mov gword ptr [rbp-0x78], r15
lea rdi, bword ptr [r15+0x0C]
jmp SHORT G_M55783_IG21
;; size=19 bbWeight=2 PerfScore 11.50
G_M55783_IG20:
xor edi, edi
mov gword ptr [rbp-0x78], r15
;; size=6 bbWeight=2 PerfScore 2.50
G_M55783_IG21:
mov bword ptr [rbp-0x60], rdi
mov r8, 0xD1FFAB1E ; function address
- mov qword ptr [rbp-0xD8], r8
+ mov qword ptr [rbp-0xD0], r8
lea r8, G_M55783_IG24
- mov qword ptr [rbp-0xC0], r8
- lea r8, bword ptr [rbp-0xE8]
+ mov qword ptr [rbp-0xB8], r8
+ lea r8, bword ptr [rbp-0xE0]
mov qword ptr [r13+0x10], r8
mov byte ptr [r13+0x0C], 0
;; size=51 bbWeight=2 PerfScore 13.50
G_M55783_IG22:
mov rax, 0xD1FFAB1E ; code for System.Runtime.Loader.AssemblyLoadContext:<TraceAssemblyResolveHandlerInvoked>g____PInvoke|10_0(ulong,ulong,ulong,ulong):int
;; size=10 bbWeight=2 PerfScore 0.50
G_M55783_IG23:
call [rax]System.Runtime.Loader.AssemblyLoadContext:<TraceAssemblyResolveHandlerInvoked>g____PInvoke|10_0(ulong,ulong,ulong,ulong):int
;; size=2 bbWeight=2 PerfScore 6.00
G_M55783_IG24:
mov byte ptr [r13+0x0C], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M55783_IG25
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=2 PerfScore 17.00
G_M55783_IG25:
- mov rdi, bword ptr [rbp-0xE0]
+ mov rdi, bword ptr [rbp-0xD8]
mov qword ptr [r13+0x10], rdi
xor edi, edi
mov bword ptr [rbp-0x60], rdi
;; size=17 bbWeight=2 PerfScore 6.50
G_M55783_IG26:
mov bword ptr [rbp-0x58], rdi
;; size=4 bbWeight=2 PerfScore 2.00
G_M55783_IG27:
mov bword ptr [rbp-0x50], rdi
;; size=4 bbWeight=2 PerfScore 2.00
G_M55783_IG28:
mov bword ptr [rbp-0x48], rdi
mov rax, gword ptr [rbp-0x88]
mov rbx, gword ptr [rbp-0x70]
mov r15, gword ptr [rbp-0x78]
;; size=19 bbWeight=2 PerfScore 8.00
G_M55783_IG29:
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly
call [rax]System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly
test rax, rax
mov r12, gword ptr [rbp-0x80]
- jne G_M55783_IG39
+ jne G_M55783_IG38
;; size=28 bbWeight=2 PerfScore 11.50
G_M55783_IG30:
mov r14d, dword ptr [rbp-0x30]
inc r14d
mov rax, gword ptr [rbp-0x40]
mov gword ptr [rbp-0x98], rax
lea rcx, bword ptr [rbp-0x40]
mov bword ptr [rbp-0xA0], rcx
test rax, rax
jne SHORT G_M55783_IG32
;; size=34 bbWeight=4 PerfScore 24.00
G_M55783_IG31:
xor rdx, rdx
- jmp SHORT G_M55783_IG38
+ jmp SHORT G_M55783_IG37
;; size=4 bbWeight=2 PerfScore 4.50
G_M55783_IG32:
mov rsi, gword ptr [rax+0x28]
mov rdi, 0xD1FFAB1E ; System.Object[]
- call CORINFO_HELP_ISINSTANCEOFARRAY
+ mov rdx, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFARRAY
+ call [rdx]CORINFO_HELP_ISINSTANCEOFARRAY
test rax, rax
jne SHORT G_M55783_IG35
test r14d, r14d
je SHORT G_M55783_IG34
- ;; size=29 bbWeight=2 PerfScore 11.50
+ ;; size=36 bbWeight=2 PerfScore 16.00
G_M55783_IG33:
xor rdx, rdx
jmp SHORT G_M55783_IG37
;; size=4 bbWeight=8 PerfScore 18.00
G_M55783_IG34:
mov rdx, gword ptr [rbp-0x98]
jmp SHORT G_M55783_IG37
;; size=9 bbWeight=8 PerfScore 24.00
G_M55783_IG35:
mov rdx, gword ptr [rbp-0x98]
cmp r14d, dword ptr [rdx+0x30]
jae SHORT G_M55783_IG33
;; size=13 bbWeight=16 PerfScore 80.00
G_M55783_IG36:
cmp r14d, dword ptr [rax+0x08]
- jae SHORT G_M55783_IG40
+ jae SHORT G_M55783_IG39
mov edx, r14d
mov rdx, gword ptr [rax+8*rdx+0x10]
;; size=14 bbWeight=2 PerfScore 12.50
G_M55783_IG37:
- mov rax, rdx
- mov rdx, rax
- ;; size=6 bbWeight=2 PerfScore 1.00
-G_M55783_IG38:
mov rcx, bword ptr [rbp-0xA0]
- lea rdi, bword ptr [rcx+0x08]
- mov gword ptr [rbp-0xA8], rdx
- mov rsi, rdx
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- cmp gword ptr [rbp-0xA8], 0
+ mov gword ptr [rcx+0x08], rdx
+ test rdx, rdx
je G_M55783_IG03
mov dword ptr [rbp-0x30], r14d
jmp G_M55783_IG05
- ;; size=49 bbWeight=4 PerfScore 39.00
-G_M55783_IG39:
+ ;; size=29 bbWeight=4 PerfScore 25.00
+G_M55783_IG38:
add rsp, 200
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 4.25
-G_M55783_IG40:
+G_M55783_IG39:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 911, prolog size 46, PerfScore 504.83, instruction count 220, allocated bytes for code 911 (MethodHash=d34b2618) for method System.Runtime.Loader.AssemblyLoadContext:InvokeResolveEvent(System.ResolveEventHandler,System.Reflection.RuntimeAssembly,System.String):System.Reflection.RuntimeAssembly (FullOpts)
+; Total bytes of code 892, prolog size 46, PerfScore 494.33, instruction count 216, allocated bytes for code 892 (MethodHash=d34b2618) for method System.Runtime.Loader.AssemblyLoadContext:InvokeResolveEvent(System.ResolveEventHandler,System.Reflection.RuntimeAssembly,System.String):System.Reflection.RuntimeAssembly (FullOpts) -13 (-1.06 % of base) - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this ; Assembly listing for method System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (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; 7 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T04] ( 15, 18 ) ref -> rbx this class-hnd single-def <System.Reflection.MethodBaseInvoker>
; V01 arg1 [V01,T23] ( 4, 3 ) ref -> [rbp-0x90] class-hnd single-def <System.Object>
; V02 arg2 [V02,T18] ( 5, 4.50) int -> [rbp-0x2C] EH-live single-def
; V03 arg3 [V03,T20] ( 3, 4 ) ref -> r14 class-hnd single-def <System.Reflection.Binder>
; V04 arg4 [V04,T10] ( 8, 9 ) ref -> r15 class-hnd single-def <System.Object[]>
; V05 arg5 [V05,T21] ( 3, 4 ) ref -> r13 class-hnd single-def <System.Globalization.CultureInfo>
; V06 loc0 [V06 ] ( 2, 2 ) struct (40) [rbp-0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.MethodBase+StackAllocatedArgumentsWithCopyBack>
;* V07 loc1 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-arg <System.Span`1[System.Object]>
;* V08 loc2 [V08 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ubyte]>
; V09 loc3 [V09,T37] ( 3, 2 ) ref -> r14 class-hnd <System.Object>
; V10 loc4 [V10,T54] ( 2, 0 ) ref -> [rbp-0x98] must-init class-hnd EH-live single-def <System.Exception>
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V12 tmp1 [V12 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[System.Object]>
; V13 tmp2 [V13,T55] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <System.Object>
; V14 tmp3 [V14,T51] ( 3, 0 ) ref -> rsi class-hnd single-def "dup spill" <System.Exception>
;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
; V16 tmp5 [V16,T53] ( 3, 0 ) int -> rax
;* V17 tmp6 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
; V18 tmp7 [V18,T52] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TargetInvocationException>
; V19 tmp8 [V19,T30] ( 2, 4 ) int -> rcx "Inlining Arg"
;* V20 tmp9 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
; V21 tmp10 [V21,T31] ( 2, 4 ) int -> rax "Inlining Arg"
;* V22 tmp11 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V23 tmp12 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V24 tmp13 [V24,T19] ( 6, 6 ) byref -> [rbp-0xA0] spill-single-def "Inlining Arg"
; V25 tmp14 [V25,T40] ( 2, 2 ) byref -> [rbp-0xA8] spill-single-def "Inlining Arg"
; V26 tmp15 [V26,T41] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Reflection.MethodBase>
;* V27 tmp16 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Object]>
; V28 tmp17 [V28,T00] ( 12, 35 ) int -> [rbp-0x5C] "Inline stloc first use temp"
;* V29 tmp18 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[System.Object]>
; V30 tmp19 [V30 ] ( 11, 29 ) ref -> [rbp-0x68] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
; V31 tmp20 [V31,T05] ( 6, 14 ) ref -> [rbp-0xB0] class-hnd exact spill-single-def "Inline stloc first use temp" <System.RuntimeType>
;* V32 tmp21 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
;* V33 tmp22 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V34 tmp23 [V34 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
;* V35 tmp24 [V35 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
;* V36 tmp25 [V36 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
;* V37 tmp26 [V37 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
;* V38 tmp27 [V38,T32] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V39 tmp28 [V39,T11] ( 4, 8 ) ref -> [rbp-0xB8] ld-addr-op class-hnd spill-single-def "Inline ldloca(s) first use temp" <System.RuntimeType>
;* V40 tmp29 [V40,T33] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V41 tmp30 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V42 tmp31 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
; V43 tmp32 [V43,T01] ( 11, 31 ) int -> [rbp-0x6C] "Inline stloc first use temp"
;* V44 tmp33 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V45 tmp34 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
; V46 tmp35 [V46,T14] ( 5, 7 ) byref -> [rbp-0xC0] spill-single-def "field V07._reference (fldOffset=0x0)" P-INDEP
; V47 tmp36 [V47,T15] ( 5, 7 ) int -> [rbp-0x70] spill-single-def "field V07._length (fldOffset=0x8)" P-INDEP
; V48 tmp37 [V48,T12] ( 5, 8 ) byref -> [rbp-0xC8] spill-single-def "field V08._reference (fldOffset=0x0)" P-INDEP
; V49 tmp38 [V49,T13] ( 5, 8 ) int -> [rbp-0x74] spill-single-def "field V08._length (fldOffset=0x8)" P-INDEP
;* V50 tmp39 [V50 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP
;* V51 tmp40 [V51 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
; V52 tmp41 [V52,T42] ( 2, 2 ) byref -> rdx single-def "field V20._reference (fldOffset=0x0)" P-INDEP
; V53 tmp42 [V53,T44] ( 2, 2 ) int -> rcx "field V20._length (fldOffset=0x8)" P-INDEP
; V54 tmp43 [V54,T43] ( 2, 2 ) byref -> r9 single-def "field V22._reference (fldOffset=0x0)" P-INDEP
; V55 tmp44 [V55,T45] ( 2, 2 ) int -> rax "field V22._length (fldOffset=0x8)" P-INDEP
; V56 tmp45 [V56,T38] ( 3, 2 ) byref -> rsi "field V27._reference (fldOffset=0x0)" P-INDEP
; V57 tmp46 [V57,T39] ( 3, 2 ) int -> r10 "field V27._length (fldOffset=0x8)" P-INDEP
; V58 tmp47 [V58,T26] ( 2, 5 ) byref -> [rbp-0xD0] spill-single-def "field V29._reference (fldOffset=0x0)" P-INDEP
; V59 tmp48 [V59,T22] ( 3, 6 ) int -> [rbp-0x78] spill-single-def "field V29._length (fldOffset=0x8)" P-INDEP
;* V60 tmp49 [V60,T46] ( 0, 0 ) byref -> zero-ref single-def "field V32._reference (fldOffset=0x0)" P-INDEP
;* V61 tmp50 [V61,T48] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
;* V62 tmp51 [V62,T47] ( 0, 0 ) byref -> zero-ref single-def "field V33._reference (fldOffset=0x0)" P-INDEP
;* V63 tmp52 [V63,T49] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
;* V64 tmp53 [V64 ] ( 0, 0 ) byref -> zero-ref "field V36._reference (fldOffset=0x0)" P-DEP
;* V65 tmp54 [V65 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-DEP
; V66 tmp55 [V66,T29] ( 2, 4 ) byref -> rax "field V37._reference (fldOffset=0x0)" P-INDEP
; V67 tmp56 [V67,T34] ( 2, 4 ) int -> rdx "field V37._length (fldOffset=0x8)" P-INDEP
; V68 tmp57 [V68,T27] ( 2, 5 ) byref -> [rbp-0xD8] spill-single-def "field V44._reference (fldOffset=0x0)" P-INDEP
; V69 tmp58 [V69,T28] ( 2, 5 ) int -> [rbp-0x7C] spill-single-def "field V44._length (fldOffset=0x8)" P-INDEP
; V70 tmp59 [V70,T24] ( 3, 5 ) byref -> r13 single-def "field V45._reference (fldOffset=0x0)" P-INDEP
; V71 tmp60 [V71,T25] ( 3, 5 ) int -> r12 "field V45._length (fldOffset=0x8)" P-INDEP
; V72 tmp61 [V72,T03] ( 3, 24 ) ref -> r8 "arr expr"
; V73 tmp62 [V73,T07] ( 3, 12 ) ref -> rcx "argument with side effect"
; V74 tmp63 [V74,T08] ( 3, 12 ) ref -> rcx "arr expr"
; V75 tmp64 [V75,T09] ( 3, 12 ) ref -> rdi "arr expr"
; V76 tmp65 [V76,T16] ( 2, 8 ) ref -> rdx "argument with side effect"
; V77 PSPSym [V77,T50] ( 1, 1 ) long -> [rbp-0xE0] do-not-enreg[V] "PSPSym"
; V78 cse0 [V78,T36] ( 3, 3 ) int -> rax "CSE - conservative"
; V79 cse1 [V79,T17] ( 5, 7 ) int -> [rbp-0x80] multi-def "CSE - moderate"
; V80 cse2 [V80,T02] ( 9, 26 ) long -> [rbp-0x88] spill-single-def "CSE - aggressive"
; V81 cse3 [V81,T06] ( 5, 14 ) long -> r8 "CSE - aggressive"
-; V82 rat0 [V82,T35] ( 3, 3 ) ref -> rax "delegate invoke call"
+; V82 rat0 [V82,T35] ( 3, 3 ) ref -> r8 "delegate invoke call"
;
; Lcl frame size = 184
G_M49041_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 184
lea rbp, [rsp+0xE0]
xor eax, eax
mov qword ptr [rbp-0x98], rax
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x90], ymm8
vmovdqu ymmword ptr [rbp-0x70], ymm8
vmovdqu ymmword ptr [rbp-0x50], ymm8
mov qword ptr [rbp-0xE0], rsp
mov gword ptr [rbp-0x90], rsi
mov dword ptr [rbp-0x2C], edx
mov rbx, rdi
mov r14, rcx
mov r15, r8
mov r13, r9
;; size=86 bbWeight=1 PerfScore 18.33
G_M49041_IG02:
mov eax, dword ptr [rbx+0x40]
mov ecx, eax
lea rdx, bword ptr [rbp-0x58]
mov bword ptr [rbp-0xC0], rdx
mov dword ptr [rbp-0x70], ecx
lea r9, bword ptr [rbp-0x38]
mov bword ptr [rbp-0xC8], r9
mov dword ptr [rbp-0x74], eax
test byte ptr [rbx+0x38], 2
jne SHORT G_M49041_IG06
;; size=39 bbWeight=1 PerfScore 11.25
G_M49041_IG03:
lea r10, bword ptr [rbx+0x38]
mov bword ptr [rbp-0xA0], r10
lea r11, bword ptr [rbx+0x10]
mov bword ptr [rbp-0xA8], r11
mov rdi, gword ptr [rbx+0x30]
cmp byte ptr [rbx+0x44], 0
jne SHORT G_M49041_IG05
test byte ptr [r10], 1
jne SHORT G_M49041_IG04
or dword ptr [r10], 1
jmp SHORT G_M49041_IG06
;; size=44 bbWeight=0.50 PerfScore 9.00
G_M49041_IG04:
mov esi, 1
mov r11, 0xD1FFAB1E ; code for System.Reflection.InvokerEmitUtil:CreateInvokeDelegate_ObjSpanArgs(System.Reflection.MethodBase,ubyte):System.Reflection.InvokerEmitUtil+InvokeFunc_ObjSpanArgs
call [r11]System.Reflection.InvokerEmitUtil:CreateInvokeDelegate_ObjSpanArgs(System.Reflection.MethodBase,ubyte):System.Reflection.InvokerEmitUtil+InvokeFunc_ObjSpanArgs
mov rdi, bword ptr [rbp-0xA8]
mov rsi, rax
- call CORINFO_HELP_CHECKED_ASSIGN_REF
+ call CORINFO_HELP_ASSIGN_REF
mov r10, bword ptr [rbp-0xA0]
;; size=40 bbWeight=0.50 PerfScore 3.38
G_M49041_IG05:
or dword ptr [r10], 2
;; size=4 bbWeight=0.50 PerfScore 1.50
G_M49041_IG06:
test r15, r15
jne SHORT G_M49041_IG08
;; size=5 bbWeight=1 PerfScore 1.25
G_M49041_IG07:
xor rsi, rsi
xor r10d, r10d
jmp SHORT G_M49041_IG09
;; size=7 bbWeight=0.50 PerfScore 1.25
G_M49041_IG08:
lea rsi, bword ptr [r15+0x10]
mov r11d, dword ptr [r15+0x08]
mov r10d, r11d
;; size=11 bbWeight=0.50 PerfScore 1.38
G_M49041_IG09:
mov bword ptr [rbp-0xD0], rsi
mov dword ptr [rbp-0x78], r10d
xor r11d, r11d
test r10d, r10d
jle G_M49041_IG14
;; size=23 bbWeight=1 PerfScore 3.50
G_M49041_IG10:
mov edi, r11d
mov qword ptr [rbp-0x88], rdi
mov r8, gword ptr [rsi+8*rdi]
mov gword ptr [rbp-0x68], r8
mov r8, gword ptr [rbx+0x28]
mov dword ptr [rbp-0x5C], r11d
cmp r11d, dword ptr [r8+0x08]
jae G_M49041_IG31
mov r8, gword ptr [r8+8*rdi+0x10]
mov gword ptr [rbp-0xB0], r8
mov r12, gword ptr [rbp-0x68]
mov rcx, 0xD1FFAB1E ; const ptr
cmp r12, gword ptr [rcx]
jne SHORT G_M49041_IG12
;; size=67 bbWeight=4 PerfScore 78.00
G_M49041_IG11:
mov rcx, gword ptr [rbx+0x30]
mov rdi, rcx
mov rcx, qword ptr [rcx]
mov rcx, qword ptr [rcx+0x50]
call [rcx+0x10]System.Reflection.MethodBase:GetParametersAsSpan():System.ReadOnlySpan`1[System.Reflection.ParameterInfo]:this
mov r12d, dword ptr [rbp-0x5C]
cmp r12d, edx
jae G_M49041_IG31
mov rcx, qword ptr [rbp-0x88]
mov rdi, gword ptr [rax+8*rcx]
mov rsi, gword ptr [rbp-0xB0]
mov rax, 0xD1FFAB1E ; code for System.Reflection.MethodBase:HandleTypeMissing(System.Reflection.ParameterInfo,System.RuntimeType):System.Object
call [rax]System.Reflection.MethodBase:HandleTypeMissing(System.Reflection.ParameterInfo,System.RuntimeType):System.Object
mov gword ptr [rbp-0x68], rax
cmp r12d, dword ptr [rbp-0x74]
jae G_M49041_IG31
mov rcx, bword ptr [rbp-0xC8]
mov rdx, qword ptr [rbp-0x88]
mov byte ptr [rcx+rdx], 1
mov dword ptr [rbp-0x5C], r12d
;; size=96 bbWeight=2 PerfScore 53.50
G_M49041_IG12:
cmp gword ptr [rbp-0x68], 0
jne SHORT G_M49041_IG15
;; size=7 bbWeight=4 PerfScore 12.00
G_M49041_IG13:
mov rcx, gword ptr [rbx+0x20]
mov r11d, dword ptr [rbp-0x5C]
cmp r11d, dword ptr [rcx+0x08]
jae G_M49041_IG31
mov rdi, qword ptr [rbp-0x88]
test byte ptr [rcx+4*rdi+0x10], 2
je G_M49041_IG19
mov r8, gword ptr [rbp-0xB0]
jmp G_M49041_IG18
;; size=48 bbWeight=2 PerfScore 30.00
G_M49041_IG14:
+ mov rdx, bword ptr [rbp-0xC0]
mov r12d, dword ptr [rbp-0x70]
jmp G_M49041_IG20
- ;; size=9 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M49041_IG15:
mov rdi, gword ptr [rbp-0x68]
call System.Object:GetType():System.Type:this
mov r12, gword ptr [rbp-0xB0]
cmp rax, r12
je G_M49041_IG19
mov rdi, r12
call System.RuntimeTypeHandle:GetCorElementType(System.RuntimeType):ubyte
cmp eax, 16
jne SHORT G_M49041_IG17
mov rdi, r12
call System.RuntimeTypeHandle:GetElementType(System.RuntimeType):System.RuntimeType
mov gword ptr [rbp-0xB8], rax
mov rdi, gword ptr [rbp-0x68]
call System.Object:GetType():System.Type:this
mov rcx, gword ptr [rbp-0xB8]
cmp rax, rcx
mov r8, r12
jne SHORT G_M49041_IG18
mov rdi, rcx
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:IsValueTypeImpl():ubyte:this
cmp dword ptr [rdi], edi
call [rax]System.RuntimeType:IsValueTypeImpl():ubyte:this
test eax, eax
je SHORT G_M49041_IG16
mov rdi, gword ptr [rbp-0xB8]
mov rsi, gword ptr [rbp-0x68]
call System.RuntimeType:AllocateValueType(System.RuntimeType,System.Object):System.Object
mov gword ptr [rbp-0x68], rax
;; size=118 bbWeight=2 PerfScore 50.50
G_M49041_IG16:
mov r12d, dword ptr [rbp-0x5C]
mov eax, dword ptr [rbp-0x74]
cmp r12d, eax
jae G_M49041_IG31
mov r9, bword ptr [rbp-0xC8]
mov r10, qword ptr [rbp-0x88]
mov byte ptr [r9+r10], 1
mov dword ptr [rbp-0x5C], r12d
jmp SHORT G_M49041_IG19
;; size=41 bbWeight=2 PerfScore 18.50
G_M49041_IG17:
mov r8, r12
;; size=3 bbWeight=1 PerfScore 0.25
G_M49041_IG18:
mov r11d, dword ptr [rbp-0x5C]
cmp r11d, dword ptr [rbp-0x74]
jae G_M49041_IG31
lea rsi, [rbp-0x68]
mov rdi, r8
mov rdx, r14
mov rcx, r13
mov r8d, dword ptr [rbp-0x2C]
mov r12, 0xD1FFAB1E ; code for System.RuntimeType:CheckValue(byref,System.Reflection.Binder,System.Globalization.CultureInfo,int):ubyte:this
cmp dword ptr [rdi], edi
call [r12]System.RuntimeType:CheckValue(byref,System.Reflection.Binder,System.Globalization.CultureInfo,int):ubyte:this
mov r12, bword ptr [rbp-0xC8]
- mov rdi, qword ptr [rbp-0x88]
- mov byte ptr [r12+rdi], al
+ mov rdx, qword ptr [rbp-0x88]
+ mov byte ptr [r12+rdx], al
;; size=65 bbWeight=2 PerfScore 31.00
G_M49041_IG19:
mov r11d, dword ptr [rbp-0x5C]
mov r12d, dword ptr [rbp-0x70]
cmp r11d, r12d
jae G_M49041_IG31
+ mov rcx, gword ptr [rbp-0x68]
mov rdx, bword ptr [rbp-0xC0]
mov rdi, qword ptr [rbp-0x88]
- lea rdi, bword ptr [rdx+8*rdi]
- mov rsi, gword ptr [rbp-0x68]
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- mov r11d, dword ptr [rbp-0x5C]
+ mov gword ptr [rdx+8*rdi], rcx
inc r11d
- mov edx, dword ptr [rbp-0x78]
- cmp r11d, edx
+ mov r10d, dword ptr [rbp-0x78]
+ cmp r11d, r10d
mov rsi, bword ptr [rbp-0xD0]
jl SHORT G_M49041_IG22
- ;; size=66 bbWeight=4 PerfScore 49.00
+ ;; size=58 bbWeight=4 PerfScore 43.00
G_M49041_IG20:
- xor rdx, rdx
- mov gword ptr [rbp-0x68], rdx
+ xor rcx, rcx
+ mov gword ptr [rbp-0x68], rcx
cmp gword ptr [rbx+0x10], 0
je SHORT G_M49041_IG23
;; size=13 bbWeight=1 PerfScore 5.25
G_M49041_IG21:
- mov rdx, bword ptr [rbp-0xC0]
mov ecx, r12d
- mov rax, gword ptr [rbx+0x10]
+ mov r8, gword ptr [rbx+0x10]
mov rsi, gword ptr [rbp-0x90]
- mov rdi, gword ptr [rax+0x08]
- call [rax+0x18]System.Reflection.InvokerEmitUtil+InvokeFunc_ObjSpanArgs:Invoke(System.Object,System.Span`1[System.Object]):System.Object:this
+ mov rdi, gword ptr [r8+0x08]
+ call [r8+0x18]System.Reflection.InvokerEmitUtil+InvokeFunc_ObjSpanArgs:Invoke(System.Object,System.Span`1[System.Object]):System.Object:this
mov r14, rax
jmp SHORT G_M49041_IG24
- ;; size=33 bbWeight=0.50 PerfScore 5.75
+ ;; size=27 bbWeight=0.50 PerfScore 5.25
G_M49041_IG22:
jmp G_M49041_IG10
;; size=5 bbWeight=2 PerfScore 4.00
G_M49041_IG23:
- mov rdx, bword ptr [rbp-0xC0]
mov ecx, r12d
mov rdi, rbx
mov rsi, gword ptr [rbp-0x90]
mov r8d, dword ptr [rbp-0x2C]
- mov rax, 0xD1FFAB1E ; code for System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this
- call [rax]System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this
+ mov r10, 0xD1FFAB1E ; code for System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this
+ call [r10]System.Reflection.MethodBaseInvoker:InvokeDirectByRefWithFewArgs(System.Object,System.Span`1[System.Object],int):System.Object:this
mov r14, rax
- ;; size=39 bbWeight=0.50 PerfScore 3.50
+ ;; size=33 bbWeight=0.50 PerfScore 3.00
G_M49041_IG24:
mov r13, bword ptr [rbp-0xC0]
mov rax, bword ptr [rbp-0xC8]
mov bword ptr [rbp-0xD8], rax
mov ecx, dword ptr [rbp-0x74]
mov dword ptr [rbp-0x7C], ecx
xor edx, edx
mov r10d, dword ptr [r15+0x08]
mov esi, r10d
mov dword ptr [rbp-0x80], esi
test esi, esi
jle SHORT G_M49041_IG29
;; size=43 bbWeight=1 PerfScore 9.75
G_M49041_IG25:
cmp edx, ecx
jae G_M49041_IG31
mov r8d, edx
cmp byte ptr [rax+r8], 0
je SHORT G_M49041_IG28
;; size=18 bbWeight=4 PerfScore 22.00
G_M49041_IG26:
mov rdi, gword ptr [rbx+0x20]
cmp edx, dword ptr [rdi+0x08]
jae SHORT G_M49041_IG31
test byte ptr [rdi+4*r8+0x10], 4
je SHORT G_M49041_IG27
mov dword ptr [rbp-0x6C], edx
cmp edx, r12d
jae SHORT G_M49041_IG31
mov rdi, gword ptr [r13+8*r8]
call System.RuntimeMethodHandle:ReboxFromNullable(System.Object):System.Object
mov rdx, rax
movsxd rsi, dword ptr [rbp-0x6C]
mov rdi, r15
call CORINFO_HELP_ARRADDR_ST
mov edx, dword ptr [rbp-0x6C]
jmp SHORT G_M49041_IG28
;; size=55 bbWeight=2 PerfScore 45.50
G_M49041_IG27:
mov dword ptr [rbp-0x6C], edx
cmp edx, r12d
jae SHORT G_M49041_IG31
mov rdx, gword ptr [r13+8*r8]
movsxd rsi, dword ptr [rbp-0x6C]
mov rdi, r15
call CORINFO_HELP_ARRADDR_ST
mov edx, dword ptr [rbp-0x6C]
;; size=28 bbWeight=2 PerfScore 19.00
G_M49041_IG28:
inc edx
mov esi, dword ptr [rbp-0x80]
cmp esi, edx
mov dword ptr [rbp-0x80], esi
mov rax, bword ptr [rbp-0xD8]
mov ecx, dword ptr [rbp-0x7C]
jg SHORT G_M49041_IG25
;; size=22 bbWeight=4 PerfScore 22.00
G_M49041_IG29:
mov rax, r14
;; size=3 bbWeight=1 PerfScore 0.25
G_M49041_IG30:
add rsp, 184
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 4.25
G_M49041_IG31:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M49041_IG32:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0xE0]
;; size=25 bbWeight=0 PerfScore 0.00
G_M49041_IG33:
mov rdi, 0xD1FFAB1E ; System.Exception
call CORINFO_HELP_ISINSTANCEOFCLASS
mov rsi, rax
test rsi, rsi
jne SHORT G_M49041_IG34
xor eax, eax
jmp SHORT G_M49041_IG35
;; size=27 bbWeight=0 PerfScore 0.00
G_M49041_IG34:
mov gword ptr [rbp-0x98], rsi
xor eax, eax
test dword ptr [rbp-0x2C], 0xD1FFAB1E
sete al
;; size=19 bbWeight=0 PerfScore 0.00
G_M49041_IG35:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
G_M49041_IG36:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0xE0]
;; size=25 bbWeight=0 PerfScore 0.00
G_M49041_IG37:
mov rdi, 0xD1FFAB1E ; System.Reflection.TargetInvocationException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rdi, rbx
mov rsi, gword ptr [rbp-0x98]
mov rax, 0xD1FFAB1E ; code for System.Reflection.TargetInvocationException:.ctor(System.Exception):this
call [rax]System.Reflection.TargetInvocationException:.ctor(System.Exception):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=49 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1222, prolog size 86, PerfScore 516.33, instruction count 305, allocated bytes for code 1222 (MethodHash=09e3406e) for method System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
+; Total bytes of code 1209, prolog size 86, PerfScore 509.83, instruction count 302, allocated bytes for code 1209 (MethodHash=09e3406e) for method System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts) -10 (-1.46 % of base) - System.Reflection.ConstructorInvoker:InvokeWithFewArgs(System.Span`1[System.Object]):System.Object:this ; Assembly listing for method System.Reflection.ConstructorInvoker:InvokeWithFewArgs(System.Span`1[System.Object]):System.Object:this (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; 5 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T04] ( 16, 20 ) ref -> rbx this class-hnd single-def <System.Reflection.ConstructorInvoker>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Object]>
; V02 loc0 [V02 ] ( 2, 2 ) struct (40) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.MethodBase+StackAllocatedArgumentsWithCopyBack>
;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.Span`1[System.Object]>
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
; V05 loc3 [V05,T35] ( 2, 1 ) ref -> [rbp-0x80] class-hnd spill-single-def <System.Object>
; V06 loc4 [V06,T00] ( 10, 35 ) int -> [rbp-0x54]
; V07 loc5 [V07 ] ( 5, 36 ) ref -> [rbp-0x60] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T07] ( 2, 16 ) byref -> [rbp-0x88] spill-single-def "impAppendStmt"
; V10 tmp2 [V10,T25] ( 2, 4 ) int -> r13 "Inlining Arg"
;* V11 tmp3 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
; V12 tmp4 [V12,T26] ( 2, 4 ) int -> rax "Inlining Arg"
;* V13 tmp5 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V14 tmp6 [V14,T08] ( 3, 14 ) ubyte -> rax "Inline return value spill temp"
; V15 tmp7 [V15,T01] ( 3, 28 ) ref -> [rbp-0x90] class-hnd exact spill-single-def "Inline stloc first use temp" <System.RuntimeType>
;* V16 tmp8 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V17 tmp9 [V17,T17] ( 5, 5 ) byref -> [rbp-0x98] spill-single-def "Inlining Arg"
; V18 tmp10 [V18,T28] ( 2, 2 ) byref -> [rbp-0xA0] spill-single-def "Inlining Arg"
; V19 tmp11 [V19,T29] ( 2, 2 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeConstructorInfo>
; V20 tmp12 [V20,T02] ( 9, 26.50) int -> [rbp-0x64] "Inline stloc first use temp"
;* V21 tmp13 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
;* V22 tmp14 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V23 tmp15 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
;* V24 tmp16 [V24 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
; V25 tmp17 [V25,T11] ( 3, 5.50) byref -> r15 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V26 tmp18 [V26,T12] ( 3, 5.50) int -> r14 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V27 tmp19 [V27,T13] ( 5, 6.50) byref -> r12 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
; V28 tmp20 [V28,T14] ( 5, 6.50) int -> r13 "field V03._length (fldOffset=0x8)" P-INDEP
; V29 tmp21 [V29,T15] ( 3, 5.50) byref -> [rbp-0xA8] spill-single-def "field V04._reference (fldOffset=0x0)" P-INDEP
; V30 tmp22 [V30,T16] ( 3, 5.50) int -> [rbp-0x68] spill-single-def "field V04._length (fldOffset=0x8)" P-INDEP
; V31 tmp23 [V31,T30] ( 2, 2 ) byref -> r12 single-def "field V11._reference (fldOffset=0x0)" P-INDEP
; V32 tmp24 [V32,T32] ( 2, 2 ) int -> r13 "field V11._length (fldOffset=0x8)" P-INDEP
; V33 tmp25 [V33,T31] ( 2, 2 ) byref -> rcx single-def "field V13._reference (fldOffset=0x0)" P-INDEP
; V34 tmp26 [V34,T33] ( 2, 2 ) int -> rax "field V13._length (fldOffset=0x8)" P-INDEP
; V35 tmp27 [V35,T19] ( 3, 4.50) byref -> r15 single-def "field V21._reference (fldOffset=0x0)" P-INDEP
; V36 tmp28 [V36,T18] ( 3, 5 ) int -> r14 "field V21._length (fldOffset=0x8)" P-INDEP
; V37 tmp29 [V37,T22] ( 2, 4.50) byref -> [rbp-0xB0] spill-single-def "field V22._reference (fldOffset=0x0)" P-INDEP
; V38 tmp30 [V38,T23] ( 2, 4.50) int -> [rbp-0x6C] spill-single-def "field V22._length (fldOffset=0x8)" P-INDEP
; V39 tmp31 [V39,T20] ( 3, 4.50) byref -> r12 single-def "field V23._reference (fldOffset=0x0)" P-INDEP
; V40 tmp32 [V40,T21] ( 3, 4.50) int -> r13 "field V23._length (fldOffset=0x8)" P-INDEP
; V41 tmp33 [V41,T03] ( 3, 24 ) ref -> rdi "arr expr"
; V42 tmp34 [V42,T09] ( 3, 12 ) ref -> rdi "arr expr"
; V43 tmp35 [V43,T10] ( 3, 12 ) ref -> rdi "arr expr"
; V44 cse0 [V44,T24] ( 4, 4 ) int -> rdi "CSE - moderate"
; V45 cse1 [V45,T34] ( 3, 1.50) int -> rsi "CSE - moderate"
; V46 cse2 [V46,T05] ( 6, 22 ) long -> [rbp-0x78] spill-single-def "CSE - aggressive"
; V47 cse3 [V47,T06] ( 7, 18 ) long -> r8 "CSE - aggressive"
; V48 rat0 [V48,T27] ( 3, 3 ) ref -> rax "delegate invoke call"
; TEMP_01 byref -> [rbp-0xB8]
;
; Lcl frame size = 152
G_M42398_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 152
lea rbp, [rsp+0xC0]
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 rbx, rdi
mov r15, rsi
mov r14d, edx
;; size=78 bbWeight=1 PerfScore 18.08
G_M42398_IG02:
mov edi, dword ptr [rbx+0x44]
mov r13d, edi
lea r12, bword ptr [rbp-0x50]
mov eax, edi
lea rcx, bword ptr [rbp-0x30]
mov bword ptr [rbp-0xA8], rcx
mov dword ptr [rbp-0x68], eax
xor edx, edx
test edi, edi
jle G_M42398_IG06
;; size=36 bbWeight=1 PerfScore 7.00
G_M42398_IG03:
cmp edx, r14d
jae G_M42398_IG25
mov esi, edx
mov qword ptr [rbp-0x78], rsi
mov rdi, gword ptr [r15+8*rsi]
mov gword ptr [rbp-0x60], rdi
cmp edx, eax
jae G_M42398_IG25
lea r8, bword ptr [rcx+rsi]
mov bword ptr [rbp-0x88], r8
mov rdi, gword ptr [rbx+0x28]
cmp edx, dword ptr [rdi+0x08]
jae G_M42398_IG25
mov r9, gword ptr [rdi+8*rsi+0x10]
mov gword ptr [rbp-0x90], r9
cmp gword ptr [rbp-0x60], 0
jne SHORT G_M42398_IG07
;; size=74 bbWeight=4 PerfScore 81.00
G_M42398_IG04:
mov rdi, gword ptr [rbx+0x30]
mov dword ptr [rbp-0x54], edx
cmp edx, dword ptr [rdi+0x08]
jae G_M42398_IG25
test byte ptr [rdi+4*rsi+0x10], 2
mov rdi, gword ptr [rbp-0x90]
je SHORT G_M42398_IG08
;; size=30 bbWeight=2 PerfScore 24.00
G_M42398_IG05:
lea rsi, [rbp-0x60]
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:CheckValue(byref):ubyte:this
cmp dword ptr [rdi], edi
call [rax]System.RuntimeType:CheckValue(byref):ubyte:this
jmp SHORT G_M42398_IG09
;; size=20 bbWeight=8 PerfScore 70.00
G_M42398_IG06:
jmp SHORT G_M42398_IG10
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M42398_IG07:
mov dword ptr [rbp-0x54], edx
mov rdi, gword ptr [rbp-0x60]
call System.Object:GetType():System.Type:this
mov rdi, gword ptr [rbp-0x90]
cmp rax, rdi
jne SHORT G_M42398_IG05
;; size=24 bbWeight=16 PerfScore 84.00
G_M42398_IG08:
xor eax, eax
;; size=2 bbWeight=2 PerfScore 0.50
G_M42398_IG09:
- mov rdi, bword ptr [rbp-0x88]
- mov byte ptr [rdi], al
- mov eax, dword ptr [rbp-0x54]
- cmp eax, r13d
+ mov rdx, bword ptr [rbp-0x88]
+ mov byte ptr [rdx], al
+ mov edx, dword ptr [rbp-0x54]
+ cmp edx, r13d
jae G_M42398_IG25
+ mov rcx, gword ptr [rbp-0x60]
mov rsi, qword ptr [rbp-0x78]
- lea rdi, bword ptr [r12+8*rsi]
- mov rsi, gword ptr [rbp-0x60]
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- mov eax, dword ptr [rbp-0x54]
- inc eax
- cmp eax, dword ptr [rbx+0x44]
- mov edx, eax
+ mov gword ptr [r12+8*rsi], rcx
+ inc edx
+ cmp edx, dword ptr [rbx+0x44]
jl SHORT G_M42398_IG13
- ;; size=50 bbWeight=4 PerfScore 53.00
+ ;; size=40 bbWeight=4 PerfScore 46.00
G_M42398_IG10:
cmp gword ptr [rbx+0x10], 0
je SHORT G_M42398_IG14
;; size=7 bbWeight=1 PerfScore 4.00
G_M42398_IG11:
mov rdx, r12
mov ecx, r13d
mov rax, gword ptr [rbx+0x10]
xor rsi, rsi
mov rdi, gword ptr [rax+0x08]
call [rax+0x18]System.Reflection.InvokerEmitUtil+InvokeFunc_ObjSpanArgs:Invoke(System.Object,System.Span`1[System.Object]):System.Object:this
nop
;; size=20 bbWeight=0.50 PerfScore 4.00
G_M42398_IG12:
add rsp, 152
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=0.50 PerfScore 2.12
G_M42398_IG13:
mov eax, dword ptr [rbp-0x68]
mov rcx, bword ptr [rbp-0xA8]
jmp G_M42398_IG03
;; size=15 bbWeight=2 PerfScore 8.00
G_M42398_IG14:
test byte ptr [rbx+0x40], 2
jne SHORT G_M42398_IG18
lea rax, bword ptr [rbx+0x40]
mov bword ptr [rbp-0x98], rax
lea rcx, bword ptr [rbx+0x10]
mov bword ptr [rbp-0xA0], rcx
mov rdi, gword ptr [rbx+0x38]
cmp byte ptr [rbx+0x4C], 0
jne SHORT G_M42398_IG16
mov esi, dword ptr [rax]
test sil, 1
jne SHORT G_M42398_IG15
or esi, 1
mov dword ptr [rax], esi
jmp SHORT G_M42398_IG17
;; size=53 bbWeight=0.50 PerfScore 9.75
G_M42398_IG15:
xor esi, esi
mov rdx, 0xD1FFAB1E ; code for System.Reflection.InvokerEmitUtil:CreateInvokeDelegate_ObjSpanArgs(System.Reflection.MethodBase,ubyte):System.Reflection.InvokerEmitUtil+InvokeFunc_ObjSpanArgs
call [rdx]System.Reflection.InvokerEmitUtil:CreateInvokeDelegate_ObjSpanArgs(System.Reflection.MethodBase,ubyte):System.Reflection.InvokerEmitUtil+InvokeFunc_ObjSpanArgs
mov rdi, bword ptr [rbp-0xA0]
mov rsi, rax
- call CORINFO_HELP_CHECKED_ASSIGN_REF
+ call CORINFO_HELP_ASSIGN_REF
mov rax, bword ptr [rbp-0x98]
;; size=36 bbWeight=0.50 PerfScore 3.38
G_M42398_IG16:
or dword ptr [rax], 2
;; size=3 bbWeight=0.50 PerfScore 1.50
G_M42398_IG17:
cmp gword ptr [rbx+0x10], 0
jne G_M42398_IG11
;; size=11 bbWeight=0.50 PerfScore 2.00
G_M42398_IG18:
mov rsi, r12
mov edx, r13d
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Reflection.ConstructorInvoker:InvokeDirectByRefWithFewArgs(System.Span`1[System.Object]):System.Object:this
call [rax]System.Reflection.ConstructorInvoker:InvokeDirectByRefWithFewArgs(System.Span`1[System.Object]):System.Object:this
mov gword ptr [rbp-0x80], rax
mov rcx, bword ptr [rbp-0xA8]
mov bword ptr [rbp-0xB0], rcx
mov edx, dword ptr [rbp-0x68]
mov dword ptr [rbp-0x6C], edx
xor esi, esi
test r14d, r14d
jle G_M42398_IG23
;; size=56 bbWeight=0.50 PerfScore 5.25
G_M42398_IG19:
cmp esi, edx
jae G_M42398_IG25
mov r8d, esi
cmp byte ptr [rcx+r8], 0
je SHORT G_M42398_IG22
;; size=18 bbWeight=4 PerfScore 22.00
G_M42398_IG20:
mov rdi, gword ptr [rbx+0x30]
cmp esi, dword ptr [rdi+0x08]
jae SHORT G_M42398_IG25
test byte ptr [rdi+4*r8+0x10], 4
je SHORT G_M42398_IG21
lea rdi, bword ptr [r15+8*r8]
mov bword ptr [rbp-0xB8], rdi
mov dword ptr [rbp-0x64], esi
cmp esi, r13d
jae SHORT G_M42398_IG25
mov rdi, gword ptr [r12+8*r8]
call System.RuntimeMethodHandle:ReboxFromNullable(System.Object):System.Object
mov rdi, bword ptr [rbp-0xB8]
mov rsi, rax
call CORINFO_HELP_CHECKED_ASSIGN_REF
mov esi, dword ptr [rbp-0x64]
jmp SHORT G_M42398_IG22
;; size=65 bbWeight=2 PerfScore 44.00
G_M42398_IG21:
lea rdi, bword ptr [r15+8*r8]
mov dword ptr [rbp-0x64], esi
cmp esi, r13d
jae SHORT G_M42398_IG25
mov rsi, gword ptr [r12+8*r8]
call CORINFO_HELP_CHECKED_ASSIGN_REF
mov esi, dword ptr [rbp-0x64]
;; size=24 bbWeight=2 PerfScore 13.50
G_M42398_IG22:
inc esi
cmp esi, r14d
mov rcx, bword ptr [rbp-0xB0]
mov edx, dword ptr [rbp-0x6C]
jl SHORT G_M42398_IG19
;; size=17 bbWeight=4 PerfScore 14.00
G_M42398_IG23:
mov rax, gword ptr [rbp-0x80]
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M42398_IG24:
add rsp, 152
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=0.50 PerfScore 2.12
G_M42398_IG25:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 687, prolog size 78, PerfScore 474.71, instruction count 183, allocated bytes for code 687 (MethodHash=abfa5a61) for method System.Reflection.ConstructorInvoker:InvokeWithFewArgs(System.Span`1[System.Object]):System.Object:this (FullOpts)
+; Total bytes of code 677, prolog size 78, PerfScore 467.71, instruction count 180, allocated bytes for code 677 (MethodHash=abfa5a61) for method System.Reflection.ConstructorInvoker:InvokeWithFewArgs(System.Span`1[System.Object]):System.Object:this (FullOpts) Larger list of diffs: https://gist.github.com/MihuBot/9d07f29109a47f885d59532ab0cbb0cc |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Build completed in 2 hours 2 minutes.
dotnet/runtime#97953
CoreLib diffs
Frameworks diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: