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: Bulk copy of byrefs #363
Comments
Top method regressions180 (32.20 % of base) - Microsoft.Extensions.Logging.EventSource.LoggingEventSource:MessageJson(int,int,System.String,int,System.String,System.String,System.String,System.String):this ; Assembly listing for method Microsoft.Extensions.Logging.EventSource.LoggingEventSource:MessageJson(int,int,System.String,int,System.String,System.String,System.String,System.String):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 23 single block inlinees; 8 inlinees without PGO data
+; 0 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 4, 3.50) ref -> rdi this class-hnd single-def <Microsoft.Extensions.Logging.EventSource.LoggingEventSource>
+; V00 this [V00,T00] ( 4, 3.50) ref -> rbx this class-hnd single-def <Microsoft.Extensions.Logging.EventSource.LoggingEventSource>
; V01 arg1 [V01 ] ( 3, 2.50) int -> [rbp-0x2C] do-not-enreg[X] addr-exposed ld-addr-op single-def
; V02 arg2 [V02 ] ( 3, 2.50) int -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op single-def
-; V03 arg3 [V03,T00] ( 8, 5 ) ref -> rcx ld-addr-op class-hnd <System.String>
-; V04 arg4 [V04 ] ( 3, 2.50) int -> [rbp-0x34] do-not-enreg[X] addr-exposed ld-addr-op single-def
-; V05 arg5 [V05,T01] ( 8, 5 ) ref -> r9 ld-addr-op class-hnd <System.String>
-; V06 arg6 [V06,T04] ( 6, 3 ) ref -> r8 ld-addr-op class-hnd <System.String>
-; V07 arg7 [V07,T05] ( 6, 3 ) ref -> rsi ld-addr-op class-hnd <System.String>
-; V08 arg8 [V08,T06] ( 6, 3 ) ref -> rdx ld-addr-op class-hnd <System.String>
+; V03 arg3 [V03 ] ( 8, 5 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op class-hnd <System.String>
+; V04 arg4 [V04 ] ( 3, 2.50) int -> [rbp-0x3C] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V05 arg5 [V05 ] ( 8, 5 ) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed ld-addr-op class-hnd <System.String>
+; V06 arg6 [V06 ] ( 6, 3 ) ref -> [rbp+0x10] do-not-enreg[X] addr-exposed ld-addr-op class-hnd <System.String>
+; V07 arg7 [V07 ] ( 6, 3 ) ref -> [rbp+0x18] do-not-enreg[X] addr-exposed ld-addr-op class-hnd <System.String>
+; V08 arg8 [V08 ] ( 6, 3 ) ref -> [rbp+0x20] do-not-enreg[X] addr-exposed ld-addr-op class-hnd <System.String>
;* V09 loc0 [V09 ] ( 0, 0 ) long -> zero-ref single-def
-; V10 loc1 [V10 ] ( 3, 1.50) byref -> [rbp-0x40] must-init pinned
+; V10 loc1 [V10 ] ( 3, 1.50) byref -> [rbp-0x50] must-init pinned
;* V11 loc2 [V11 ] ( 0, 0 ) long -> zero-ref single-def
-; V12 loc3 [V12 ] ( 3, 1.50) byref -> [rbp-0x48] must-init pinned
+; V12 loc3 [V12 ] ( 3, 1.50) byref -> [rbp-0x58] must-init pinned
;* V13 loc4 [V13 ] ( 0, 0 ) long -> zero-ref single-def
-; V14 loc5 [V14 ] ( 3, 1.50) byref -> [rbp-0x50] must-init pinned
+; V14 loc5 [V14 ] ( 3, 1.50) byref -> [rbp-0x60] must-init pinned
;* V15 loc6 [V15 ] ( 0, 0 ) long -> zero-ref single-def
-; V16 loc7 [V16 ] ( 3, 1.50) byref -> [rbp-0x58] must-init pinned
+; V16 loc7 [V16 ] ( 3, 1.50) byref -> [rbp-0x68] must-init pinned
;* V17 loc8 [V17 ] ( 0, 0 ) long -> zero-ref single-def
-; V18 loc9 [V18 ] ( 3, 1.50) byref -> [rbp-0x60] must-init pinned
-; V19 loc10 [V19,T02] ( 11, 5.50) long -> r14 single-def
+; V18 loc9 [V18 ] ( 3, 1.50) byref -> [rbp-0x70] must-init pinned
+; V19 loc10 [V19,T01] ( 10, 5 ) long -> [rbp-0x78] spill-single-def
;# V20 OutArgs [V20 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V21 tmp1 [V21,T25] ( 3, 1.50) long -> rax
-; V22 tmp2 [V22,T26] ( 3, 1.50) long -> r10
-; V23 tmp3 [V23,T27] ( 3, 1.50) long -> r11
-; V24 tmp4 [V24,T28] ( 3, 1.50) long -> rbx
-; V25 tmp5 [V25,T29] ( 3, 1.50) long -> r15
-;* V26 tmp6 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-;* V27 tmp7 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-;* V28 tmp8 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-;* V29 tmp9 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-;* V30 tmp10 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-;* V31 tmp11 [V31 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V32 tmp12 [V32,T07] ( 3, 3 ) byref -> r13 single-def "Inlining Arg"
-;* V33 tmp13 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V34 tmp14 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
-; V35 tmp15 [V35,T08] ( 3, 3 ) byref -> r13 single-def "Inlining Arg"
-; V36 tmp16 [V36,T15] ( 2, 2 ) int -> rcx "Inlining Arg"
-; V37 tmp17 [V37,T09] ( 3, 3 ) byref -> rcx single-def "Inlining Arg"
-;* V38 tmp18 [V38 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V39 tmp19 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
-; V40 tmp20 [V40,T10] ( 3, 3 ) byref -> rcx single-def "Inlining Arg"
-; V41 tmp21 [V41,T16] ( 2, 2 ) int -> rax "Inlining Arg"
-;* V42 tmp22 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
-; V43 tmp23 [V43,T11] ( 3, 3 ) byref -> rcx single-def "Inlining Arg"
-; V44 tmp24 [V44,T17] ( 2, 2 ) int -> r8 "Inlining Arg"
-;* V45 tmp25 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
-; V46 tmp26 [V46,T12] ( 3, 3 ) byref -> r8 single-def "Inlining Arg"
-; V47 tmp27 [V47,T18] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V48 tmp28 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
-; V49 tmp29 [V49,T13] ( 3, 3 ) byref -> r8 single-def "Inlining Arg"
-; V50 tmp30 [V50,T19] ( 2, 2 ) int -> rsi "Inlining Arg"
-; V51 tmp31 [V51,T20] ( 2, 2 ) long -> rax "Cast away GC"
-; V52 tmp32 [V52,T21] ( 2, 2 ) long -> r10 "Cast away GC"
-; V53 tmp33 [V53,T22] ( 2, 2 ) long -> r11 "Cast away GC"
-; V54 tmp34 [V54,T23] ( 2, 2 ) long -> rbx "Cast away GC"
-; V55 tmp35 [V55,T24] ( 2, 2 ) long -> r15 "Cast away GC"
-; V56 GsCookie [V56 ] ( 1, 1 ) long -> [rbp-0x68] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V57 rat0 [V57,T14] ( 3, 3 ) long -> r14 "ReplaceWithLclVar is creating a new local variable"
+; V21 tmp1 [V21,T13] ( 3, 1.50) long -> r15
+; V22 tmp2 [V22,T14] ( 3, 1.50) long -> r14
+; V23 tmp3 [V23,T15] ( 3, 1.50) long -> r13
+; V24 tmp4 [V24,T16] ( 3, 1.50) long -> r12
+; V25 tmp5 [V25,T17] ( 3, 1.50) long -> [rbp-0x80]
+; V26 tmp6 [V26,T02] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V27 tmp7 [V27,T03] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V28 tmp8 [V28,T04] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V29 tmp9 [V29,T05] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V30 tmp10 [V30,T06] ( 3, 3 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
+; V31 tmp11 [V31,T08] ( 2, 2 ) long -> r15 "Cast away GC"
+; V32 tmp12 [V32,T09] ( 2, 2 ) long -> r14 "Cast away GC"
+; V33 tmp13 [V33,T10] ( 2, 2 ) long -> r13 "Cast away GC"
+; V34 tmp14 [V34,T11] ( 2, 2 ) long -> r12 "Cast away GC"
+; V35 tmp15 [V35,T12] ( 2, 2 ) long -> rax "Cast away GC"
+; V36 GsCookie [V36 ] ( 1, 1 ) long -> [rbp-0x88] do-not-enreg[X] addr-exposed "GSSecurityCookie"
+; V37 rat0 [V37,T07] ( 3, 3 ) long -> rsi "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 72
+; Lcl frame size = 104
G_M44913_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 72
- lea rbp, [rsp+0x70]
+ sub rsp, 104
+ lea rbp, [rsp+0x90]
vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0x60], ymm8
+ vmovdqu ymmword ptr [rbp-0x70], ymm8
xor eax, eax
- mov qword ptr [rbp-0x40], rax
- mov qword ptr [rbp-0x68], 0xD1FFAB1E
+ mov qword ptr [rbp-0x50], rax
+ mov qword ptr [rbp-0x88], 0xD1FFAB1E
mov dword ptr [rbp-0x2C], esi
mov dword ptr [rbp-0x30], edx
- mov dword ptr [rbp-0x34], r8d
- mov r8, gword ptr [rbp+0x10]
- mov rsi, gword ptr [rbp+0x18]
- mov rdx, gword ptr [rbp+0x20]
- ;; size=65 bbWeight=1 PerfScore 17.33
+ mov gword ptr [rbp-0x38], rcx
+ mov dword ptr [rbp-0x3C], r8d
+ mov gword ptr [rbp-0x48], r9
+ mov rbx, rdi
+ ;; size=70 bbWeight=1 PerfScore 16.58
G_M44913_IG02:
- cmp byte ptr [rdi+0x9D], 0
+ cmp byte ptr [rbx+0x9D], 0
je G_M44913_IG19
;; size=13 bbWeight=1 PerfScore 4.00
G_M44913_IG03:
- mov rax, 0xD1FFAB1E ; ''
- test rcx, rcx
- cmove rcx, rax
- test r9, r9
- cmove r9, rax
- test r8, r8
- cmove r8, rax
- test rsi, rsi
- cmove rsi, rax
- test rdx, rdx
- cmove rdx, rax
- test rcx, rcx
+ mov rsi, 0xD1FFAB1E ; ''
+ cmp gword ptr [rbp-0x38], 0
+ cmovne rsi, gword ptr [rbp-0x38]
+ mov gword ptr [rbp-0x38], rsi
+ mov rsi, 0xD1FFAB1E ; ''
+ cmp gword ptr [rbp-0x48], 0
+ cmovne rsi, gword ptr [rbp-0x48]
+ mov gword ptr [rbp-0x48], rsi
+ mov rsi, 0xD1FFAB1E ; ''
+ cmp gword ptr [rbp+0x10], 0
+ cmovne rsi, gword ptr [rbp+0x10]
+ mov gword ptr [rbp+0x10], rsi
+ mov rsi, 0xD1FFAB1E ; ''
+ cmp gword ptr [rbp+0x18], 0
+ cmovne rsi, gword ptr [rbp+0x18]
+ mov gword ptr [rbp+0x18], rsi
+ mov rsi, 0xD1FFAB1E ; ''
+ cmp gword ptr [rbp+0x20], 0
+ cmovne rsi, gword ptr [rbp+0x20]
+ mov gword ptr [rbp+0x20], rsi
+ cmp gword ptr [rbp-0x38], 0
jne SHORT G_M44913_IG04
- xor eax, eax
+ xor r15d, r15d
jmp SHORT G_M44913_IG05
- ;; size=54 bbWeight=0.50 PerfScore 3.12
+ ;; size=132 bbWeight=0.50 PerfScore 15.75
G_M44913_IG04:
- lea rax, bword ptr [rcx+0x0C]
- mov bword ptr [rbp-0x40], rax
- mov rax, bword ptr [rbp-0x40]
- ;; size=12 bbWeight=0.50 PerfScore 1.25
+ mov rsi, gword ptr [rbp-0x38]
+ cmp byte ptr [rsi], sil
+ add rsi, 12
+ mov bword ptr [rbp-0x50], rsi
+ mov r15, bword ptr [rbp-0x50]
+ ;; size=19 bbWeight=0.50 PerfScore 3.12
G_M44913_IG05:
- test r9, r9
+ cmp gword ptr [rbp-0x48], 0
jne SHORT G_M44913_IG06
- xor r10d, r10d
+ xor r14d, r14d
jmp SHORT G_M44913_IG07
- ;; size=10 bbWeight=0.50 PerfScore 1.75
+ ;; size=12 bbWeight=0.50 PerfScore 2.62
G_M44913_IG06:
- lea r10, bword ptr [r9+0x0C]
- mov bword ptr [rbp-0x48], r10
- mov r10, bword ptr [rbp-0x48]
- ;; size=12 bbWeight=0.50 PerfScore 1.25
+ mov rsi, gword ptr [rbp-0x48]
+ cmp byte ptr [rsi], sil
+ add rsi, 12
+ mov bword ptr [rbp-0x58], rsi
+ mov r14, bword ptr [rbp-0x58]
+ ;; size=19 bbWeight=0.50 PerfScore 3.12
G_M44913_IG07:
- test r8, r8
+ cmp gword ptr [rbp+0x10], 0
jne SHORT G_M44913_IG08
- xor r11d, r11d
+ xor r13d, r13d
jmp SHORT G_M44913_IG09
- ;; size=10 bbWeight=0.50 PerfScore 1.75
+ ;; size=12 bbWeight=0.50 PerfScore 2.62
G_M44913_IG08:
- lea r11, bword ptr [r8+0x0C]
- mov bword ptr [rbp-0x50], r11
- mov r11, bword ptr [rbp-0x50]
- ;; size=12 bbWeight=0.50 PerfScore 1.25
+ mov rsi, gword ptr [rbp+0x10]
+ cmp byte ptr [rsi], sil
+ add rsi, 12
+ mov bword ptr [rbp-0x60], rsi
+ mov r13, bword ptr [rbp-0x60]
+ ;; size=19 bbWeight=0.50 PerfScore 3.12
G_M44913_IG09:
- test rsi, rsi
+ cmp gword ptr [rbp+0x18], 0
jne SHORT G_M44913_IG10
- xor ebx, ebx
+ xor r12d, r12d
jmp SHORT G_M44913_IG11
- ;; size=9 bbWeight=0.50 PerfScore 1.75
+ ;; size=12 bbWeight=0.50 PerfScore 2.62
G_M44913_IG10:
- lea rbx, bword ptr [rsi+0x0C]
- mov bword ptr [rbp-0x58], rbx
- mov rbx, bword ptr [rbp-0x58]
- ;; size=12 bbWeight=0.50 PerfScore 1.25
+ mov rsi, gword ptr [rbp+0x18]
+ cmp byte ptr [rsi], sil
+ add rsi, 12
+ mov bword ptr [rbp-0x68], rsi
+ mov r12, bword ptr [rbp-0x68]
+ ;; size=19 bbWeight=0.50 PerfScore 3.12
G_M44913_IG11:
- test rdx, rdx
+ cmp gword ptr [rbp+0x20], 0
jne SHORT G_M44913_IG12
- xor r15d, r15d
+ xor eax, eax
+ mov qword ptr [rbp-0x80], rax
jmp SHORT G_M44913_IG13
- ;; size=10 bbWeight=0.50 PerfScore 1.75
+ ;; size=15 bbWeight=0.50 PerfScore 3.12
G_M44913_IG12:
- lea r15, bword ptr [rdx+0x0C]
- mov bword ptr [rbp-0x60], r15
- mov r15, bword ptr [rbp-0x60]
- ;; size=12 bbWeight=0.50 PerfScore 1.25
+ mov rax, gword ptr [rbp+0x20]
+ cmp byte ptr [rax], al
+ add rax, 12
+ mov bword ptr [rbp-0x70], rax
+ mov rax, bword ptr [rbp-0x70]
+ mov qword ptr [rbp-0x80], rax
+ ;; size=22 bbWeight=0.50 PerfScore 3.62
G_M44913_IG13:
test dword ptr [rsp], esp
sub rsp, 128
- lea r14, [rsp]
+ lea rsi, [rsp]
vxorps ymm0, ymm0, ymm0
- vmovdqu ymmword ptr [r14], ymm0
- vmovdqu ymmword ptr [r14+0x20], ymm0
- vmovdqu ymmword ptr [r14+0x40], ymm0
- vmovdqu ymmword ptr [r14+0x60], ymm0
- lea r13, [rbp-0x2C]
- mov qword ptr [r14], r13
- mov dword ptr [r14+0x08], 4
- lea r13, [r14+0x10]
- lea r12, [rbp-0x30]
- mov qword ptr [r13], r12
- mov dword ptr [r13+0x08], 4
- lea r13, [r14+0x20]
- mov qword ptr [r13], rax
- mov ecx, dword ptr [rcx+0x08]
- add ecx, 1
- jo G_M44913_IG22
- imul ecx, ecx, 2
- jo G_M44913_IG22
- mov dword ptr [r13+0x08], ecx
- lea rcx, [r14+0x30]
- lea rax, [rbp-0x34]
- mov qword ptr [rcx], rax
- mov dword ptr [rcx+0x08], 4
- lea rcx, [r14+0x40]
- mov qword ptr [rcx], r10
- mov eax, dword ptr [r9+0x08]
- add eax, 1
- jo G_M44913_IG22
- imul eax, eax, 2
- jo G_M44913_IG22
- mov dword ptr [rcx+0x08], eax
- lea rcx, [r14+0x50]
- mov qword ptr [rcx], r11
- mov r8d, dword ptr [r8+0x08]
- add r8d, 1
- jo G_M44913_IG22
- imul r8d, r8d, 2
- jo G_M44913_IG22
- mov dword ptr [rcx+0x08], r8d
- lea r8, [r14+0x60]
- mov qword ptr [r8], rbx
- mov esi, dword ptr [rsi+0x08]
- add esi, 1
- jo SHORT G_M44913_IG22
- imul esi, esi, 2
- jo SHORT G_M44913_IG22
- mov dword ptr [r8+0x08], esi
- ;; size=218 bbWeight=0.50 PerfScore 27.79
+ vmovdqu ymmword ptr [rsi], ymm0
+ vmovdqu ymmword ptr [rsi+0x20], ymm0
+ vmovdqu ymmword ptr [rsi+0x40], ymm0
+ vmovdqu ymmword ptr [rsi+0x60], ymm0
+ mov rcx, rsi
+ mov qword ptr [rbp-0x78], rcx
+ lea rsi, [rbp-0x2C]
+ mov rdi, rcx
+ xor edx, edx
+ mov r8, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[int](byref,byref,ulong)
+ call [r8]Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[int](byref,byref,ulong)
+ mov rax, qword ptr [rbp-0x78]
+ lea rdi, [rax+0x10]
+ lea rsi, [rbp-0x30]
+ xor edx, edx
+ mov rcx, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[int](byref,byref,ulong)
+ call [rcx]Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[int](byref,byref,ulong)
+ mov rax, qword ptr [rbp-0x78]
+ lea rsi, [rax+0x20]
+ lea rdx, [rbp-0x38]
+ mov rcx, r15
+ mov rdi, 0xD1FFAB1E ; Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.String](byref,byref,ulong)
+ mov r8, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.__Canon](byref,byref,ulong)
+ call [r8]Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.__Canon](byref,byref,ulong)
+ mov r15, qword ptr [rbp-0x78]
+ lea rdi, [r15+0x30]
+ lea rsi, [rbp-0x3C]
+ xor edx, edx
+ mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[int](byref,byref,ulong)
+ call [rax]Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[int](byref,byref,ulong)
+ lea rsi, [r15+0x40]
+ lea rdx, [rbp-0x48]
+ mov rcx, r14
+ mov rdi, 0xD1FFAB1E ; Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.String](byref,byref,ulong)
+ mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.__Canon](byref,byref,ulong)
+ call [rax]Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.__Canon](byref,byref,ulong)
+ lea rsi, [r15+0x50]
+ lea rdx, [rbp+0x10]
+ mov rcx, r13
+ mov rdi, 0xD1FFAB1E ; Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.String](byref,byref,ulong)
+ mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.__Canon](byref,byref,ulong)
+ call [rax]Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.__Canon](byref,byref,ulong)
+ lea rsi, [r15+0x60]
+ lea rdx, [rbp+0x18]
+ mov rcx, r12
+ mov rdi, 0xD1FFAB1E ; Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.String](byref,byref,ulong)
+ mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.__Canon](byref,byref,ulong)
+ call [rax]Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.__Canon](byref,byref,ulong)
+ lea rsi, [r15+0x70]
+ lea rdx, [rbp+0x20]
+ mov rcx, qword ptr [rbp-0x80]
+ mov rdi, 0xD1FFAB1E ; Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.String](byref,byref,ulong)
+ mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.__Canon](byref,byref,ulong)
+ call [rax]Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.__Canon](byref,byref,ulong)
+ ;; size=289 bbWeight=0.50 PerfScore 27.04
G_M44913_IG14:
- lea r8, [r14+0x70]
- mov qword ptr [r8], r15
- mov esi, dword ptr [rdx+0x08]
- add esi, 1
- jo SHORT G_M44913_IG22
- imul esi, esi, 2
- jo SHORT G_M44913_IG22
- mov dword ptr [r8+0x08], esi
- mov r8, r14
+ mov rdi, rbx
+ mov r8, r15
mov esi, 5
xor edx, edx
mov ecx, 8
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:WriteEventWithRelatedActivityIdCore(int,ulong,int,ulong):this
call [rax]System.Diagnostics.Tracing.EventSource:WriteEventWithRelatedActivityIdCore(int,ulong,int,ulong):this
xor eax, eax
- mov bword ptr [rbp-0x60], rax
- ;; size=57 bbWeight=0.50 PerfScore 7.12
+ mov bword ptr [rbp-0x70], rax
+ ;; size=36 bbWeight=0.50 PerfScore 2.88
G_M44913_IG15:
- mov bword ptr [rbp-0x58], rax
+ mov bword ptr [rbp-0x68], rax
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M44913_IG16:
- mov bword ptr [rbp-0x50], rax
+ mov bword ptr [rbp-0x60], rax
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M44913_IG17:
- mov bword ptr [rbp-0x48], rax
+ mov bword ptr [rbp-0x58], rax
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M44913_IG18:
- mov bword ptr [rbp-0x40], rax
+ mov bword ptr [rbp-0x50], rax
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M44913_IG19:
- cmp qword ptr [rbp-0x68], 0xD1FFAB1E
+ cmp qword ptr [rbp-0x88], 0xD1FFAB1E
je SHORT G_M44913_IG20
call CORINFO_HELP_FAIL_FAST
- ;; size=15 bbWeight=1 PerfScore 4.00
+ ;; size=18 bbWeight=1 PerfScore 4.00
G_M44913_IG20:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M44913_IG21:
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.50
-G_M44913_IG22:
- call CORINFO_HELP_OVERFLOW
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 559, prolog size 43, PerfScore 83.38, instruction count 152, allocated bytes for code 559 (MethodHash=9824508e) for method Microsoft.Extensions.Logging.EventSource.LoggingEventSource:MessageJson(int,int,System.String,int,System.String,System.String,System.String,System.String):this (FullOpts)
+; Total bytes of code 739, prolog size 49, PerfScore 104.13, instruction count 171, allocated bytes for code 739 (MethodHash=9824508e) for method Microsoft.Extensions.Logging.EventSource.LoggingEventSource:MessageJson(int,int,System.String,int,System.String,System.String,System.String,System.String):this (FullOpts) 125 (31.81 % of base) - Microsoft.Extensions.Logging.EventSource.LoggingEventSource:FormattedMessage(int,int,System.String,int,System.String,System.String):this ; Assembly listing for method Microsoft.Extensions.Logging.EventSource.LoggingEventSource:FormattedMessage(int,int,System.String,int,System.String,System.String):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 17 single block inlinees; 6 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 3.50) ref -> rdi this class-hnd single-def <Microsoft.Extensions.Logging.EventSource.LoggingEventSource>
-; V01 arg1 [V01 ] ( 3, 2.50) int -> [rbp-0x0C] do-not-enreg[X] addr-exposed ld-addr-op single-def
-; V02 arg2 [V02 ] ( 3, 2.50) int -> [rbp-0x10] do-not-enreg[X] addr-exposed ld-addr-op single-def
-; V03 arg3 [V03,T00] ( 8, 5 ) ref -> rcx ld-addr-op class-hnd <System.String>
-; V04 arg4 [V04 ] ( 3, 2.50) int -> [rbp-0x14] do-not-enreg[X] addr-exposed ld-addr-op single-def
-; V05 arg5 [V05,T01] ( 8, 5 ) ref -> r9 ld-addr-op class-hnd <System.String>
-; V06 arg6 [V06,T04] ( 6, 3 ) ref -> r8 ld-addr-op class-hnd <System.String>
+; V00 this [V00,T00] ( 4, 3.50) ref -> rbx this class-hnd single-def <Microsoft.Extensions.Logging.EventSource.LoggingEventSource>
+; V01 arg1 [V01 ] ( 3, 2.50) int -> [rbp-0x2C] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V02 arg2 [V02 ] ( 3, 2.50) int -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V03 arg3 [V03 ] ( 8, 5 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op class-hnd <System.String>
+; V04 arg4 [V04 ] ( 3, 2.50) int -> [rbp-0x3C] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V05 arg5 [V05 ] ( 8, 5 ) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed ld-addr-op class-hnd <System.String>
+; V06 arg6 [V06 ] ( 6, 3 ) ref -> [rbp+0x10] do-not-enreg[X] addr-exposed ld-addr-op class-hnd <System.String>
;* V07 loc0 [V07 ] ( 0, 0 ) long -> zero-ref single-def
-; V08 loc1 [V08 ] ( 3, 1.50) byref -> [rbp-0x20] must-init pinned
+; V08 loc1 [V08 ] ( 3, 1.50) byref -> [rbp-0x50] must-init pinned
;* V09 loc2 [V09 ] ( 0, 0 ) long -> zero-ref single-def
-; V10 loc3 [V10 ] ( 3, 1.50) byref -> [rbp-0x28] must-init pinned
+; V10 loc3 [V10 ] ( 3, 1.50) byref -> [rbp-0x58] must-init pinned
;* V11 loc4 [V11 ] ( 0, 0 ) long -> zero-ref single-def
-; V12 loc5 [V12 ] ( 3, 1.50) byref -> [rbp-0x30] must-init pinned
-; V13 loc6 [V13,T03] ( 9, 4.50) long -> r10 single-def
+; V12 loc5 [V12 ] ( 3, 1.50) byref -> [rbp-0x60] must-init pinned
+; V13 loc6 [V13,T01] ( 8, 4 ) long -> r12 single-def
;# V14 OutArgs [V14 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V15 tmp1 [V15,T17] ( 3, 1.50) long -> rsi
-; V16 tmp2 [V16,T18] ( 3, 1.50) long -> rdx
-; V17 tmp3 [V17,T19] ( 3, 1.50) long -> rax
-;* V18 tmp4 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-;* V19 tmp5 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-;* V20 tmp6 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-;* V21 tmp7 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V22 tmp8 [V22,T05] ( 3, 3 ) byref -> r11 single-def "Inlining Arg"
-;* V23 tmp9 [V23 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V24 tmp10 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
-; V25 tmp11 [V25,T06] ( 3, 3 ) byref -> r11 single-def "Inlining Arg"
-; V26 tmp12 [V26,T11] ( 2, 2 ) int -> rsi "Inlining Arg"
-; V27 tmp13 [V27,T07] ( 3, 3 ) byref -> rsi single-def "Inlining Arg"
-;* V28 tmp14 [V28 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V29 tmp15 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
-; V30 tmp16 [V30,T08] ( 3, 3 ) byref -> rsi single-def "Inlining Arg"
-; V31 tmp17 [V31,T12] ( 2, 2 ) int -> rdx "Inlining Arg"
-;* V32 tmp18 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
-; V33 tmp19 [V33,T09] ( 3, 3 ) byref -> rsi single-def "Inlining Arg"
-; V34 tmp20 [V34,T13] ( 2, 2 ) int -> r8 "Inlining Arg"
-; V35 tmp21 [V35,T14] ( 2, 2 ) long -> rsi "Cast away GC"
-; V36 tmp22 [V36,T15] ( 2, 2 ) long -> rdx "Cast away GC"
-; V37 tmp23 [V37,T16] ( 2, 2 ) long -> rax "Cast away GC"
-; V38 GsCookie [V38 ] ( 1, 1 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V39 rat0 [V39,T10] ( 3, 3 ) long -> r10 "ReplaceWithLclVar is creating a new local variable"
+; V15 tmp1 [V15,T09] ( 3, 1.50) long -> r15
+; V16 tmp2 [V16,T10] ( 3, 1.50) long -> r14
+; V17 tmp3 [V17,T11] ( 3, 1.50) long -> r13
+; V18 tmp4 [V18,T02] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V19 tmp5 [V19,T03] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V20 tmp6 [V20,T04] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V21 tmp7 [V21,T06] ( 2, 2 ) long -> r15 "Cast away GC"
+; V22 tmp8 [V22,T07] ( 2, 2 ) long -> r14 "Cast away GC"
+; V23 tmp9 [V23,T08] ( 2, 2 ) long -> r13 "Cast away GC"
+; V24 GsCookie [V24 ] ( 1, 1 ) long -> [rbp-0x68] do-not-enreg[X] addr-exposed "GSSecurityCookie"
+; V25 rat0 [V25,T05] ( 3, 3 ) long -> rsi "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 56
+; Lcl frame size = 72
G_M49279_IG01:
push rbp
+ push r15
+ push r14
+ push r13
+ push r12
push rbx
- sub rsp, 56
- lea rbp, [rsp+0x40]
+ sub rsp, 72
+ lea rbp, [rsp+0x70]
vxorps xmm8, xmm8, xmm8
- vmovdqa xmmword ptr [rbp-0x30], xmm8
+ vmovdqa xmmword ptr [rbp-0x60], xmm8
xor eax, eax
- mov qword ptr [rbp-0x20], rax
- mov qword ptr [rbp-0x38], 0xD1FFAB1E
- mov dword ptr [rbp-0x0C], esi
- mov dword ptr [rbp-0x10], edx
- mov dword ptr [rbp-0x14], r8d
- mov r8, gword ptr [rbp+0x10]
- ;; size=49 bbWeight=1 PerfScore 11.33
+ mov qword ptr [rbp-0x50], rax
+ mov qword ptr [rbp-0x68], 0xD1FFAB1E
+ mov dword ptr [rbp-0x2C], esi
+ mov dword ptr [rbp-0x30], edx
+ mov gword ptr [rbp-0x38], rcx
+ mov dword ptr [rbp-0x3C], r8d
+ mov gword ptr [rbp-0x48], r9
+ mov rbx, rdi
+ ;; size=64 bbWeight=1 PerfScore 16.58
G_M49279_IG02:
- cmp byte ptr [rdi+0x9D], 0
+ cmp byte ptr [rbx+0x9D], 0
je G_M49279_IG12
;; size=13 bbWeight=1 PerfScore 4.00
G_M49279_IG03:
mov rsi, 0xD1FFAB1E ; ''
- test rcx, rcx
- cmove rcx, rsi
- test r9, r9
- cmove r9, rsi
- test r8, r8
- cmove r8, rsi
- test rcx, rcx
+ cmp gword ptr [rbp-0x38], 0
+ cmovne rsi, gword ptr [rbp-0x38]
+ mov gword ptr [rbp-0x38], rsi
+ mov rsi, 0xD1FFAB1E ; ''
+ cmp gword ptr [rbp-0x48], 0
+ cmovne rsi, gword ptr [rbp-0x48]
+ mov gword ptr [rbp-0x48], rsi
+ mov rsi, 0xD1FFAB1E ; ''
+ cmp gword ptr [rbp+0x10], 0
+ cmovne rsi, gword ptr [rbp+0x10]
+ mov gword ptr [rbp+0x10], rsi
+ cmp gword ptr [rbp-0x38], 0
jne SHORT G_M49279_IG04
- xor esi, esi
+ xor r15d, r15d
jmp SHORT G_M49279_IG05
- ;; size=40 bbWeight=0.50 PerfScore 2.62
+ ;; size=84 bbWeight=0.50 PerfScore 10.50
G_M49279_IG04:
- lea rsi, bword ptr [rcx+0x0C]
- mov bword ptr [rbp-0x20], rsi
- mov rsi, bword ptr [rbp-0x20]
- ;; size=12 bbWeight=0.50 PerfScore 1.25
+ mov rsi, gword ptr [rbp-0x38]
+ cmp byte ptr [rsi], sil
+ add rsi, 12
+ mov bword ptr [rbp-0x50], rsi
+ mov r15, bword ptr [rbp-0x50]
+ ;; size=19 bbWeight=0.50 PerfScore 3.12
G_M49279_IG05:
- test r9, r9
+ cmp gword ptr [rbp-0x48], 0
jne SHORT G_M49279_IG06
- xor edx, edx
+ xor r14d, r14d
jmp SHORT G_M49279_IG07
- ;; size=9 bbWeight=0.50 PerfScore 1.75
+ ;; size=12 bbWeight=0.50 PerfScore 2.62
G_M49279_IG06:
- lea rdx, bword ptr [r9+0x0C]
- mov bword ptr [rbp-0x28], rdx
- mov rdx, bword ptr [rbp-0x28]
- ;; size=12 bbWeight=0.50 PerfScore 1.25
+ mov rsi, gword ptr [rbp-0x48]
+ cmp byte ptr [rsi], sil
+ add rsi, 12
+ mov bword ptr [rbp-0x58], rsi
+ mov r14, bword ptr [rbp-0x58]
+ ;; size=19 bbWeight=0.50 PerfScore 3.12
G_M49279_IG07:
- test r8, r8
+ cmp gword ptr [rbp+0x10], 0
jne SHORT G_M49279_IG08
- xor eax, eax
+ xor r13d, r13d
jmp SHORT G_M49279_IG09
- ;; size=9 bbWeight=0.50 PerfScore 1.75
+ ;; size=12 bbWeight=0.50 PerfScore 2.62
G_M49279_IG08:
- lea rax, bword ptr [r8+0x0C]
- mov bword ptr [rbp-0x30], rax
- mov rax, bword ptr [rbp-0x30]
- ;; size=12 bbWeight=0.50 PerfScore 1.25
+ mov rsi, gword ptr [rbp+0x10]
+ cmp byte ptr [rsi], sil
+ add rsi, 12
+ mov bword ptr [rbp-0x60], rsi
+ mov r13, bword ptr [rbp-0x60]
+ ;; size=19 bbWeight=0.50 PerfScore 3.12
G_M49279_IG09:
test dword ptr [rsp], esp
sub rsp, 96
- lea r10, [rsp]
+ lea rsi, [rsp]
vxorps ymm0, ymm0, ymm0
- vmovdqu ymmword ptr [r10], ymm0
- vmovdqu ymmword ptr [r10+0x20], ymm0
- vmovdqu ymmword ptr [r10+0x40], ymm0
- lea r11, [rbp-0x0C]
- mov qword ptr [r10], r11
- mov dword ptr [r10+0x08], 4
- lea r11, [r10+0x10]
- lea rbx, [rbp-0x10]
- mov qword ptr [r11], rbx
- mov dword ptr [r11+0x08], 4
- lea r11, [r10+0x20]
- mov qword ptr [r11], rsi
- mov esi, dword ptr [rcx+0x08]
- add esi, 1
- jo G_M49279_IG15
- imul esi, esi, 2
- jo G_M49279_IG15
- mov dword ptr [r11+0x08], esi
- lea rsi, [r10+0x30]
- lea rcx, [rbp-0x14]
- mov qword ptr [rsi], rcx
- mov dword ptr [rsi+0x08], 4
- lea rsi, [r10+0x40]
- mov qword ptr [rsi], rdx
- mov edx, dword ptr [r9+0x08]
- add edx, 1
- jo SHORT G_M49279_IG15
- imul edx, edx, 2
- jo SHORT G_M49279_IG15
- mov dword ptr [rsi+0x08], edx
- lea rsi, [r10+0x50]
- mov qword ptr [rsi], rax
- mov r8d, dword ptr [r8+0x08]
- add r8d, 1
- jo SHORT G_M49279_IG15
- imul r8d, r8d, 2
- jo SHORT G_M49279_IG15
- mov dword ptr [rsi+0x08], r8d
- mov r8, r10
+ vmovdqu ymmword ptr [rsi], ymm0
+ vmovdqu ymmword ptr [rsi+0x20], ymm0
+ vmovdqu ymmword ptr [rsi+0x40], ymm0
+ mov r12, rsi
+ lea rsi, [rbp-0x2C]
+ mov rdi, r12
+ xor edx, edx
+ mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[int](byref,byref,ulong)
+ call [rax]Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[int](byref,byref,ulong)
+ lea rdi, [r12+0x10]
+ lea rsi, [rbp-0x30]
+ xor edx, edx
+ mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[int](byref,byref,ulong)
+ call [rax]Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[int](byref,byref,ulong)
+ lea rsi, [r12+0x20]
+ lea rdx, [rbp-0x38]
+ mov rcx, r15
+ mov rdi, 0xD1FFAB1E ; Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.String](byref,byref,ulong)
+ mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.__Canon](byref,byref,ulong)
+ call [rax]Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.__Canon](byref,byref,ulong)
+ lea rdi, [r12+0x30]
+ lea rsi, [rbp-0x3C]
+ xor edx, edx
+ mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[int](byref,byref,ulong)
+ call [rax]Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[int](byref,byref,ulong)
+ lea rsi, [r12+0x40]
+ lea rdx, [rbp-0x48]
+ mov rcx, r14
+ mov rdi, 0xD1FFAB1E ; Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.String](byref,byref,ulong)
+ mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.__Canon](byref,byref,ulong)
+ call [rax]Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.__Canon](byref,byref,ulong)
+ lea rsi, [r12+0x50]
+ lea rdx, [rbp+0x10]
+ mov rcx, r13
+ mov rdi, 0xD1FFAB1E ; Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.String](byref,byref,ulong)
+ mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.__Canon](byref,byref,ulong)
+ call [rax]Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.__Canon](byref,byref,ulong)
+ mov rdi, rbx
+ mov r8, r12
mov esi, 1
xor edx, edx
mov ecx, 6
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:WriteEventWithRelatedActivityIdCore(int,ulong,int,ulong):this
call [rax]System.Diagnostics.Tracing.EventSource:WriteEventWithRelatedActivityIdCore(int,ulong,int,ulong):this
xor eax, eax
- mov bword ptr [rbp-0x30], rax
- ;; size=200 bbWeight=0.50 PerfScore 25.17
+ mov bword ptr [rbp-0x60], rax
+ ;; size=237 bbWeight=0.50 PerfScore 21.79
G_M49279_IG10:
- mov bword ptr [rbp-0x28], rax
+ mov bword ptr [rbp-0x58], rax
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M49279_IG11:
- mov bword ptr [rbp-0x20], rax
+ mov bword ptr [rbp-0x50], rax
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M49279_IG12:
- cmp qword ptr [rbp-0x38], 0xD1FFAB1E
+ cmp qword ptr [rbp-0x68], 0xD1FFAB1E
je SHORT G_M49279_IG13
call CORINFO_HELP_FAIL_FAST
;; size=15 bbWeight=1 PerfScore 4.00
G_M49279_IG13:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M49279_IG14:
- lea rsp, [rbp-0x08]
+ lea rsp, [rbp-0x28]
pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.50
-G_M49279_IG15:
- call CORINFO_HELP_OVERFLOW
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=1 PerfScore 4.50
-; Total bytes of code 393, prolog size 35, PerfScore 58.13, instruction count 105, allocated bytes for code 393 (MethodHash=a6ab3f80) for method Microsoft.Extensions.Logging.EventSource.LoggingEventSource:FormattedMessage(int,int,System.String,int,System.String,System.String):this (FullOpts)
+; Total bytes of code 518, prolog size 43, PerfScore 77.25, instruction count 124, allocated bytes for code 518 (MethodHash=a6ab3f80) for method Microsoft.Extensions.Logging.EventSource.LoggingEventSource:FormattedMessage(int,int,System.String,int,System.String,System.String):this (FullOpts) 94 (32.87 % of base) - Microsoft.Extensions.Logging.EventSource.LoggingEventSource:ActivityJsonStart(int,int,System.String,System.String):this ; Assembly listing for method Microsoft.Extensions.Logging.EventSource.LoggingEventSource:ActivityJsonStart(int,int,System.String,System.String):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 12 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 3.50) ref -> rdi this class-hnd single-def <Microsoft.Extensions.Logging.EventSource.LoggingEventSource>
-; V01 arg1 [V01 ] ( 3, 2.50) int -> [rbp-0x04] do-not-enreg[X] addr-exposed ld-addr-op single-def
-; V02 arg2 [V02 ] ( 3, 2.50) int -> [rbp-0x08] do-not-enreg[X] addr-exposed ld-addr-op single-def
-; V03 arg3 [V03,T00] ( 8, 5 ) ref -> rcx ld-addr-op class-hnd <System.String>
-; V04 arg4 [V04,T01] ( 8, 5 ) ref -> r8 ld-addr-op class-hnd <System.String>
+; V00 this [V00,T00] ( 4, 3.50) ref -> rbx this class-hnd single-def <Microsoft.Extensions.Logging.EventSource.LoggingEventSource>
+; V01 arg1 [V01 ] ( 3, 2.50) int -> [rbp-0x24] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V02 arg2 [V02 ] ( 3, 2.50) int -> [rbp-0x28] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V03 arg3 [V03 ] ( 8, 5 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op class-hnd <System.String>
+; V04 arg4 [V04 ] ( 8, 5 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op class-hnd <System.String>
;* V05 loc0 [V05 ] ( 0, 0 ) long -> zero-ref single-def
-; V06 loc1 [V06 ] ( 3, 1.50) byref -> [rbp-0x10] must-init pinned
+; V06 loc1 [V06 ] ( 3, 1.50) byref -> [rbp-0x40] must-init pinned
;* V07 loc2 [V07 ] ( 0, 0 ) long -> zero-ref single-def
-; V08 loc3 [V08 ] ( 3, 1.50) byref -> [rbp-0x18] must-init pinned
-; V09 loc4 [V09,T03] ( 7, 3.50) long -> rax single-def
+; V08 loc3 [V08 ] ( 3, 1.50) byref -> [rbp-0x48] must-init pinned
+; V09 loc4 [V09,T01] ( 6, 3 ) long -> r13 single-def
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T12] ( 3, 1.50) long -> rsi
-; V12 tmp2 [V12,T13] ( 3, 1.50) long -> rdx
-;* V13 tmp3 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-;* V14 tmp4 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-;* V15 tmp5 [V15 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V16 tmp6 [V16,T04] ( 3, 3 ) byref -> r9 single-def "Inlining Arg"
-;* V17 tmp7 [V17 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V18 tmp8 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
-; V19 tmp9 [V19,T05] ( 3, 3 ) byref -> r9 single-def "Inlining Arg"
-; V20 tmp10 [V20,T08] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
-; V22 tmp12 [V22,T06] ( 3, 3 ) byref -> rsi single-def "Inlining Arg"
-; V23 tmp13 [V23,T09] ( 2, 2 ) int -> r8 "Inlining Arg"
-; V24 tmp14 [V24,T10] ( 2, 2 ) long -> rsi "Cast away GC"
-; V25 tmp15 [V25,T11] ( 2, 2 ) long -> rdx "Cast away GC"
-; V26 GsCookie [V26 ] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V27 rat0 [V27,T07] ( 3, 3 ) long -> rax "ReplaceWithLclVar is creating a new local variable"
+; V11 tmp1 [V11,T07] ( 3, 1.50) long -> r15
+; V12 tmp2 [V12,T08] ( 3, 1.50) long -> r14
+; V13 tmp3 [V13,T02] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V14 tmp4 [V14,T03] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V15 tmp5 [V15,T05] ( 2, 2 ) long -> r15 "Cast away GC"
+; V16 tmp6 [V16,T06] ( 2, 2 ) long -> r14 "Cast away GC"
+; V17 GsCookie [V17 ] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[X] addr-exposed "GSSecurityCookie"
+; V18 rat0 [V18,T04] ( 3, 3 ) long -> rsi "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 32
+; Lcl frame size = 48
G_M19674_IG01:
push rbp
- sub rsp, 32
- lea rbp, [rsp+0x20]
+ push r15
+ push r14
+ push r13
+ push rbx
+ sub rsp, 48
+ lea rbp, [rsp+0x50]
xor eax, eax
- mov qword ptr [rbp-0x10], rax
- mov qword ptr [rbp-0x18], rax
- mov qword ptr [rbp-0x20], 0xD1FFAB1E
- mov dword ptr [rbp-0x04], esi
- mov dword ptr [rbp-0x08], edx
- ;; size=34 bbWeight=1 PerfScore 7.00
+ mov qword ptr [rbp-0x40], rax
+ mov qword ptr [rbp-0x48], rax
+ mov qword ptr [rbp-0x50], 0xD1FFAB1E
+ mov dword ptr [rbp-0x24], esi
+ mov dword ptr [rbp-0x28], edx
+ mov gword ptr [rbp-0x30], rcx
+ mov gword ptr [rbp-0x38], r8
+ mov rbx, rdi
+ ;; size=52 bbWeight=1 PerfScore 13.25
G_M19674_IG02:
- cmp byte ptr [rdi+0x9D], 0
+ cmp byte ptr [rbx+0x9D], 0
je G_M19674_IG09
;; size=13 bbWeight=1 PerfScore 4.00
G_M19674_IG03:
mov rsi, 0xD1FFAB1E ; ''
- test rcx, rcx
- cmove rcx, rsi
- test r8, r8
- cmove r8, rsi
- test rcx, rcx
+ cmp gword ptr [rbp-0x30], 0
+ cmovne rsi, gword ptr [rbp-0x30]
+ mov gword ptr [rbp-0x30], rsi
+ mov rsi, 0xD1FFAB1E ; ''
+ cmp gword ptr [rbp-0x38], 0
+ cmovne rsi, gword ptr [rbp-0x38]
+ mov gword ptr [rbp-0x38], rsi
+ cmp gword ptr [rbp-0x30], 0
jne SHORT G_M19674_IG04
- xor esi, esi
+ xor r15d, r15d
jmp SHORT G_M19674_IG05
- ;; size=33 bbWeight=0.50 PerfScore 2.38
+ ;; size=60 bbWeight=0.50 PerfScore 7.88
G_M19674_IG04:
- lea rsi, bword ptr [rcx+0x0C]
- mov bword ptr [rbp-0x10], rsi
- mov rsi, bword ptr [rbp-0x10]
- ;; size=12 bbWeight=0.50 PerfScore 1.25
+ mov rsi, gword ptr [rbp-0x30]
+ cmp byte ptr [rsi], sil
+ add rsi, 12
+ mov bword ptr [rbp-0x40], rsi
+ mov r15, bword ptr [rbp-0x40]
+ ;; size=19 bbWeight=0.50 PerfScore 3.12
G_M19674_IG05:
- test r8, r8
+ cmp gword ptr [rbp-0x38], 0
jne SHORT G_M19674_IG06
- xor edx, edx
+ xor r14d, r14d
jmp SHORT G_M19674_IG07
- ;; size=9 bbWeight=0.50 PerfScore 1.75
+ ;; size=12 bbWeight=0.50 PerfScore 2.62
G_M19674_IG06:
- lea rdx, bword ptr [r8+0x0C]
- mov bword ptr [rbp-0x18], rdx
- mov rdx, bword ptr [rbp-0x18]
- ;; size=12 bbWeight=0.50 PerfScore 1.25
+ mov rsi, gword ptr [rbp-0x38]
+ cmp byte ptr [rsi], sil
+ add rsi, 12
+ mov bword ptr [rbp-0x48], rsi
+ mov r14, bword ptr [rbp-0x48]
+ ;; size=19 bbWeight=0.50 PerfScore 3.12
G_M19674_IG07:
test dword ptr [rsp], esp
sub rsp, 64
- lea rax, [rsp]
+ lea rsi, [rsp]
vxorps ymm0, ymm0, ymm0
- vmovdqu ymmword ptr [rax], ymm0
- vmovdqu ymmword ptr [rax+0x20], ymm0
- lea r9, [rbp-0x04]
- mov qword ptr [rax], r9
- mov dword ptr [rax+0x08], 4
- lea r9, [rax+0x10]
- lea r10, [rbp-0x08]
- mov qword ptr [r9], r10
- mov dword ptr [r9+0x08], 4
- lea r9, [rax+0x20]
- mov qword ptr [r9], rsi
- mov esi, dword ptr [rcx+0x08]
- add esi, 1
- jo SHORT G_M19674_IG12
- imul esi, esi, 2
- jo SHORT G_M19674_IG12
- mov dword ptr [r9+0x08], esi
- lea rsi, [rax+0x30]
- mov qword ptr [rsi], rdx
- mov r8d, dword ptr [r8+0x08]
- add r8d, 1
- jo SHORT G_M19674_IG12
- imul r8d, r8d, 2
- jo SHORT G_M19674_IG12
- mov dword ptr [rsi+0x08], r8d
- mov r8, rax
+ vmovdqu ymmword ptr [rsi], ymm0
+ vmovdqu ymmword ptr [rsi+0x20], ymm0
+ mov r13, rsi
+ lea rsi, [rbp-0x24]
+ mov rdi, r13
+ xor edx, edx
+ mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[int](byref,byref,ulong)
+ call [rax]Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[int](byref,byref,ulong)
+ lea rdi, [r13+0x10]
+ lea rsi, [rbp-0x28]
+ xor edx, edx
+ mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[int](byref,byref,ulong)
+ call [rax]Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[int](byref,byref,ulong)
+ lea rsi, [r13+0x20]
+ lea rdx, [rbp-0x30]
+ mov rcx, r15
+ mov rdi, 0xD1FFAB1E ; Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.String](byref,byref,ulong)
+ mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.__Canon](byref,byref,ulong)
+ call [rax]Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.__Canon](byref,byref,ulong)
+ lea rsi, [r13+0x30]
+ lea rdx, [rbp-0x38]
+ mov rcx, r14
+ mov rdi, 0xD1FFAB1E ; Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.String](byref,byref,ulong)
+ mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.__Canon](byref,byref,ulong)
+ call [rax]Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.__Canon](byref,byref,ulong)
+ mov rdi, rbx
+ mov r8, r13
mov esi, 6
xor edx, edx
mov ecx, 4
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:WriteEventWithRelatedActivityIdCore(int,ulong,int,ulong):this
call [rax]System.Diagnostics.Tracing.EventSource:WriteEventWithRelatedActivityIdCore(int,ulong,int,ulong):this
xor eax, eax
- mov bword ptr [rbp-0x18], rax
- ;; size=141 bbWeight=0.50 PerfScore 18.29
+ mov bword ptr [rbp-0x48], rax
+ ;; size=172 bbWeight=0.50 PerfScore 16.17
G_M19674_IG08:
- mov bword ptr [rbp-0x10], rax
+ mov bword ptr [rbp-0x40], rax
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M19674_IG09:
- cmp qword ptr [rbp-0x20], 0xD1FFAB1E
+ cmp qword ptr [rbp-0x50], 0xD1FFAB1E
je SHORT G_M19674_IG10
call CORINFO_HELP_FAIL_FAST
;; size=15 bbWeight=1 PerfScore 4.00
G_M19674_IG10:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M19674_IG11:
- lea rsp, [rbp]
+ lea rsp, [rbp-0x20]
+ pop rbx
+ pop r13
+ pop r14
+ pop r15
pop rbp
ret
- ;; size=6 bbWeight=1 PerfScore 2.00
-G_M19674_IG12:
- call CORINFO_HELP_OVERFLOW
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=13 bbWeight=1 PerfScore 4.00
-; Total bytes of code 286, prolog size 28, PerfScore 42.67, instruction count 77, allocated bytes for code 286 (MethodHash=7502b325) for method Microsoft.Extensions.Logging.EventSource.LoggingEventSource:ActivityJsonStart(int,int,System.String,System.String):this (FullOpts)
+; Total bytes of code 380, prolog size 35, PerfScore 58.92, instruction count 94, allocated bytes for code 380 (MethodHash=7502b325) for method Microsoft.Extensions.Logging.EventSource.LoggingEventSource:ActivityJsonStart(int,int,System.String,System.String):this (FullOpts) Larger list of diffs: https://gist.github.com/MihuBot/583c20577f2d0c568326f7b04601004c |
Top method improvements-232 (-31.48 % of base) - System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+d__6:MoveNext():ubyte:this ; Assembly listing for method System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateDnsNames>d__6:MoveNext():ubyte:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 5 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 14, 20 ) ref -> [rbp-0x130] this class-hnd EH-live single-def <System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateDnsNames>d__6>
-; V01 loc0 [V01,T09] ( 4, 6 ) ubyte -> rax
-; V02 loc1 [V02,T14] ( 3, 2.50) int -> rdi
+; V00 this [V00,T04] ( 14, 20 ) ref -> [rbp-0x130] this class-hnd EH-live single-def <System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateDnsNames>d__6>
+; V01 loc0 [V01,T12] ( 4, 6 ) ubyte -> rax
+; V02 loc1 [V02,T17] ( 3, 2.50) int -> rsi
;* V03 loc2 [V03 ] ( 0, 0 ) struct (264) zero-ref do-not-enreg[SF] <System.Security.Cryptography.Asn1.GeneralNameAsn>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T12] ( 3, 3 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.Asn1.GeneralNameAsn]>
-; V06 tmp2 [V06,T13] ( 3, 3 ) struct (280) [rbp-0x128] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Security.Cryptography.Asn1.GeneralNameAsn]>
+; V05 tmp1 [V05,T15] ( 3, 3 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.Asn1.GeneralNameAsn]>
+; V06 tmp2 [V06,T16] ( 3, 3 ) struct (280) [rbp-0x128] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Security.Cryptography.Asn1.GeneralNameAsn]>
;* V07 tmp3 [V07 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V08 tmp4 [V08,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V09 tmp5 [V09,T00] ( 9, 72 ) byref -> r8 "Inlining Arg"
-; V10 tmp6 [V10,T04] ( 4, 16 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Security.Cryptography.Asn1.GeneralNameAsn]>
-; V11 tmp7 [V11,T10] ( 3, 4.50) ref -> rsi "V03.[008..016)"
+;* V08 tmp4 [V08,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V09 tmp5 [V09,T00] ( 9, 72 ) byref -> rbx "Inlining Arg"
+; V10 tmp6 [V10,T05] ( 4, 16 ) ref -> rsi class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Security.Cryptography.Asn1.GeneralNameAsn]>
+; V11 tmp7 [V11,T13] ( 3, 4.50) ref -> rsi "V03.[008..016)"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref single-def "V06.[000..008)"
;* V13 tmp9 [V13 ] ( 0, 0 ) int -> zero-ref "V06.[008..012)"
-; V14 tmp10 [V14,T15] ( 2, 1 ) int -> r15 "V06.[012..016)"
-; V15 tmp11 [V15,T11] ( 4, 4 ) byref -> r8 single-def "Spilling address for field-by-field copy"
-; V16 tmp12 [V16,T01] ( 3, 24 ) ref -> rdi "arr expr"
-; V17 tmp13 [V17,T02] ( 3, 24 ) int -> rsi "index expr"
-; V18 PSPSym [V18,T16] ( 1, 1 ) long -> [rbp-0x140] do-not-enreg[V] "PSPSym"
-; V19 cse0 [V19,T06] ( 3, 12 ) int -> rsi "CSE #02: aggressive"
-; V20 cse1 [V20,T08] ( 2, 8 ) int -> rsi "CSE #03: aggressive"
-; V21 cse2 [V21,T05] ( 3, 12 ) ref -> r9 "CSE #04: aggressive"
+; V14 tmp10 [V14,T18] ( 2, 1 ) int -> r15 "V06.[012..016)"
+; V15 tmp11 [V15,T14] ( 4, 4 ) byref -> rbx single-def "Spilling address for field-by-field copy"
+; V16 tmp12 [V16,T01] ( 3, 24 ) ref -> rsi "arr expr"
+; V17 tmp13 [V17,T03] ( 3, 24 ) int -> rdx "index expr"
+; V18 PSPSym [V18,T19] ( 1, 1 ) long -> [rbp-0x140] do-not-enreg[V] "PSPSym"
+; V19 cse0 [V19,T09] ( 3, 12 ) int -> rdx "CSE #02: aggressive"
+; V20 cse1 [V20,T11] ( 2, 8 ) int -> rdx "CSE #03: aggressive"
+; V21 cse2 [V21,T08] ( 3, 12 ) ref -> r15 "CSE #04: aggressive"
+; V22 rat0 [V22,T02] ( 3, 24 ) byref -> rdx "fgMakeTemp is creating a new local variable"
+; V23 rat1 [V23,T06] ( 2, 16 ) byref -> rsi "fgMakeTemp is creating a new local variable"
+; V24 rat2 [V24,T07] ( 2, 16 ) byref -> rdx "argument with side effect"
;
; Lcl frame size = 304
G_M24674_IG01:
push rbp
push r15
push rbx
sub rsp, 304
lea rbp, [rsp+0x140]
xor eax, eax
mov qword ptr [rbp-0x128], rax
vxorps xmm8, xmm8, xmm8
vmovdqa xmmword ptr [rbp-0x120], xmm8
vmovdqa xmmword ptr [rbp-0x110], xmm8
mov rax, -240
vmovdqa xmmword ptr [rbp+rax-0x10], xmm8
vmovdqa xmmword ptr [rax+rbp], xmm8
vmovdqa xmmword ptr [rbp+rax+0x10], xmm8
add rax, 48
jne SHORT -5 instr
mov qword ptr [rbp-0x140], rsp
mov gword ptr [rbp-0x130], rdi
- mov rdx, rdi
- ;; size=99 bbWeight=1 PerfScore 19.08
+ ;; size=96 bbWeight=1 PerfScore 18.83
G_M24674_IG02:
- mov edi, dword ptr [rdx+0x20]
- test edi, edi
+ mov esi, dword ptr [rdi+0x20]
+ test esi, esi
je SHORT G_M24674_IG04
;; size=7 bbWeight=1 PerfScore 3.25
G_M24674_IG03:
- cmp edi, 1
- je G_M24674_IG16
+ cmp esi, 1
+ je G_M24674_IG14
xor eax, eax
- jmp G_M24674_IG17
+ jmp G_M24674_IG15
;; size=16 bbWeight=0.50 PerfScore 1.75
G_M24674_IG04:
- mov dword ptr [rdx+0x20], -1
- mov rbx, gword ptr [rdx+0x10]
+ mov dword ptr [rdi+0x20], -1
+ mov rbx, gword ptr [rdi+0x10]
mov r15d, dword ptr [rbx+0x14]
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_MEMZERO
lea rdi, bword ptr [rbp-0x118]
mov esi, 264
call [rax]CORINFO_HELP_MEMZERO
mov gword ptr [rbp-0x128], rbx
- mov rdx, gword ptr [rbp-0x130]
- lea r8, bword ptr [rdx+0x28]
- mov rdi, r8
- lea rsi, bword ptr [rbp-0x128]
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- movsq
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- ;; size=152 bbWeight=0.50 PerfScore 17.62
-G_M24674_IG05:
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
+ mov rdi, gword ptr [rbp-0x130]
+ lea rbx, bword ptr [rdi+0x28]
+ mov rdi, rbx
+ lea rsi, [rbp-0x128]
+ mov edx, 160
+ call CORINFO_HELP_ASSIGN_STRUCT
xor edi, edi
- mov dword ptr [r8+0x08], edi
- mov dword ptr [r8+0x0C], r15d
- jmp G_M24674_IG16
- ;; size=60 bbWeight=0.50 PerfScore 8.12
-G_M24674_IG06:
- mov rsi, gword ptr [rdx+0x40]
+ mov dword ptr [rbx+0x08], edi
+ mov dword ptr [rbx+0x0C], r15d
+ mov rdi, gword ptr [rbp-0x130]
+ jmp G_M24674_IG14
+ ;; size=98 bbWeight=0.50 PerfScore 9.38
+G_M24674_IG05:
+ mov rdi, gword ptr [rbp-0x130]
+ mov rsi, gword ptr [rdi+0x40]
test rsi, rsi
- jne G_M24674_IG15
- ;; size=13 bbWeight=2 PerfScore 6.50
+ jne G_M24674_IG13
+ ;; size=20 bbWeight=2 PerfScore 8.50
+G_M24674_IG06:
+ lea rbx, bword ptr [rdi+0x28]
+ mov r15, gword ptr [rbx]
+ mov rsi, r15
+ mov edx, dword ptr [rbx+0x0C]
+ cmp edx, dword ptr [rsi+0x14]
+ jne SHORT G_M24674_IG07
+ mov edx, dword ptr [rbx+0x08]
+ cmp edx, dword ptr [rsi+0x10]
+ jae SHORT G_M24674_IG09
+ mov rsi, gword ptr [rsi+0x08]
+ cmp edx, dword ptr [rsi+0x08]
+ jae SHORT G_M24674_IG08
+ imul rdx, rdx, 264
+ lea rsi, bword ptr [rsi+rdx+0x10]
+ lea rdx, bword ptr [rbx+0x10]
+ cmp byte ptr [rdx], dl
+ mov rdi, rdx
+ mov edx, 152
+ call CORINFO_HELP_ASSIGN_STRUCT
+ inc dword ptr [rbx+0x08]
+ jmp SHORT G_M24674_IG05
+ ;; size=71 bbWeight=4 PerfScore 135.00
G_M24674_IG07:
- lea r8, bword ptr [rdx+0x28]
- mov r9, gword ptr [r8]
- mov rdi, r9
- mov esi, dword ptr [r8+0x0C]
- cmp esi, dword ptr [rdi+0x14]
- jne G_M24674_IG09
- mov esi, dword ptr [r8+0x08]
- cmp esi, dword ptr [rdi+0x10]
- jae G_M24674_IG11
- mov rdi, gword ptr [rdi+0x08]
- cmp esi, dword ptr [rdi+0x08]
- jae G_M24674_IG10
- imul rsi, rsi, 264
- lea rsi, bword ptr [rdi+rsi+0x10]
- lea rdi, bword ptr [r8+0x10]
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- movsq
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- ;; size=141 bbWeight=4 PerfScore 177.00
-G_M24674_IG08:
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- inc dword ptr [r8+0x08]
- jmp G_M24674_IG06
- ;; size=56 bbWeight=4 PerfScore 72.00
-G_M24674_IG09:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
call [rax]System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M24674_IG10:
+G_M24674_IG08:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-G_M24674_IG11:
- mov esi, dword ptr [r9+0x10]
+G_M24674_IG09:
+ mov esi, dword ptr [r15+0x10]
inc esi
- mov dword ptr [r8+0x08], esi
- add r8, 16
- xor edi, edi
- mov qword ptr [r8], rdi
- mov esi, 256
- ;; size=24 bbWeight=4 PerfScore 20.00
-G_M24674_IG12:
- mov qword ptr [r8+rsi], rdi
- sub rsi, 8
- jne SHORT G_M24674_IG12
- mov dword ptr [rdx+0x20], -1
- lea rdi, bword ptr [rdx+0x28]
+ mov dword ptr [rbx+0x08], esi
+ add rbx, 16
xor esi, esi
- mov qword ptr [rdi], rsi
- mov eax, 272
- ;; size=31 bbWeight=4 PerfScore 21.00
-G_M24674_IG13:
- mov qword ptr [rdi+rax], rsi
+ mov qword ptr [rbx], rsi
+ mov eax, 256
+ ;; size=23 bbWeight=4 PerfScore 20.00
+G_M24674_IG10:
+ mov qword ptr [rbx+rax], rsi
sub rax, 8
- jne SHORT G_M24674_IG13
- ;; size=10 bbWeight=4 PerfScore 9.00
-G_M24674_IG14:
+ jne SHORT G_M24674_IG10
+ mov rdi, gword ptr [rbp-0x130]
+ mov dword ptr [rdi+0x20], -1
+ lea rsi, bword ptr [rdi+0x28]
xor eax, eax
- jmp SHORT G_M24674_IG17
- ;; size=4 bbWeight=4 PerfScore 9.00
-G_M24674_IG15:
- lea rdi, bword ptr [rdx+0x08]
+ mov qword ptr [rsi], rax
+ mov ecx, 272
+ ;; size=38 bbWeight=4 PerfScore 25.00
+G_M24674_IG11:
+ mov qword ptr [rsi+rcx], rax
+ sub rcx, 8
+ jne SHORT G_M24674_IG11
+ ;; size=10 bbWeight=4 PerfScore 9.00
+G_M24674_IG12:
+ jmp SHORT G_M24674_IG15
+ ;; size=2 bbWeight=4 PerfScore 8.00
+G_M24674_IG13:
+ lea rdi, bword ptr [rdi+0x08]
call CORINFO_HELP_ASSIGN_REF
- mov rdx, gword ptr [rbp-0x130]
- mov dword ptr [rdx+0x20], 1
+ mov rdi, gword ptr [rbp-0x130]
+ mov dword ptr [rdi+0x20], 1
mov eax, 1
- jmp SHORT G_M24674_IG17
+ jmp SHORT G_M24674_IG15
;; size=30 bbWeight=0.50 PerfScore 2.88
-G_M24674_IG16:
- mov dword ptr [rdx+0x20], -3
- jmp G_M24674_IG07
+G_M24674_IG14:
+ mov dword ptr [rdi+0x20], -3
+ jmp G_M24674_IG06
;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M24674_IG17:
+G_M24674_IG15:
add rsp, 304
pop rbx
pop r15
pop rbp
ret
;; size=12 bbWeight=1 PerfScore 2.75
-G_M24674_IG18:
+G_M24674_IG16:
push rbp
push r15
push rbx
sub rsp, 16
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x140]
;; size=22 bbWeight=0 PerfScore 0.00
-G_M24674_IG19:
+G_M24674_IG17:
mov rdi, gword ptr [rbp-0x130]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateDnsNames>d__6:System.IDisposable.Dispose():this
call [rax]System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateDnsNames>d__6:System.IDisposable.Dispose():this
nop
;; size=20 bbWeight=0 PerfScore 0.00
-G_M24674_IG20:
+G_M24674_IG18:
add rsp, 16
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 737, prolog size 99, PerfScore 371.46, instruction count 184, allocated bytes for code 737 (MethodHash=50d49f9d) for method System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateDnsNames>d__6:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 505, prolog size 96, PerfScore 245.83, instruction count 123, allocated bytes for code 505 (MethodHash=50d49f9d) for method System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateDnsNames>d__6:MoveNext():ubyte:this (FullOpts) -229 (-24.49 % of base) - System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+d__8:MoveNext():ubyte:this ; Assembly listing for method System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateIPAddresses>d__8:MoveNext():ubyte:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 12 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 14, 20 ) ref -> [rbp-0x140] this class-hnd EH-live single-def <System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateIPAddresses>d__8>
-; V01 loc0 [V01,T10] ( 4, 6 ) ubyte -> rax
-; V02 loc1 [V02,T20] ( 3, 2.50) int -> rdi
+; V00 this [V00,T04] ( 14, 20 ) ref -> [rbp-0x140] this class-hnd EH-live single-def <System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateIPAddresses>d__8>
+; V01 loc0 [V01,T13] ( 4, 6 ) ubyte -> rax
+; V02 loc1 [V02,T23] ( 3, 2.50) int -> rsi
;* V03 loc2 [V03 ] ( 0, 0 ) struct (264) zero-ref do-not-enreg[SF] ld-addr-op <System.Security.Cryptography.Asn1.GeneralNameAsn>
;* V04 loc3 [V04 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ubyte]>
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlyMemory`1[ubyte]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T16] ( 3, 3 ) ref -> r15 class-hnd exact "NewObj constructor temp" <System.Net.IPAddress>
-; V08 tmp2 [V08,T17] ( 3, 3 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.Asn1.GeneralNameAsn]>
-; V09 tmp3 [V09,T18] ( 3, 3 ) struct (280) [rbp-0x138] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Security.Cryptography.Asn1.GeneralNameAsn]>
+; V07 tmp1 [V07,T19] ( 3, 3 ) ref -> r14 class-hnd exact "NewObj constructor temp" <System.Net.IPAddress>
+; V08 tmp2 [V08,T20] ( 3, 3 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.Asn1.GeneralNameAsn]>
+; V09 tmp3 [V09,T21] ( 3, 3 ) struct (280) [rbp-0x138] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Security.Cryptography.Asn1.GeneralNameAsn]>
;* V10 tmp4 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ubyte]>
-; V12 tmp6 [V12,T14] ( 6, 3 ) byref -> r14 "Inline stloc first use temp"
-; V13 tmp7 [V13,T15] ( 6, 3 ) int -> r13 "Inline stloc first use temp"
+; V12 tmp6 [V12,T17] ( 6, 3 ) byref -> rbx "Inline stloc first use temp"
+; V13 tmp7 [V13,T18] ( 6, 3 ) int -> r15 "Inline stloc first use temp"
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Object>
;* V15 tmp9 [V15 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Buffers.MemoryManager`1[ubyte]>
;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]>
;* V18 tmp12 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
-; V19 tmp13 [V19,T23] ( 3, 1.50) long -> rdi "Inline stloc first use temp"
+; V19 tmp13 [V19,T26] ( 3, 1.50) long -> rax "Inline stloc first use temp"
;* V20 tmp14 [V20 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V21 tmp15 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]>
;* V22 tmp16 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]>
-; V23 tmp17 [V23,T22] ( 2, 2 ) byref -> rax "Inlining Arg"
+; V23 tmp17 [V23,T25] ( 2, 2 ) byref -> rax "Inlining Arg"
;* V24 tmp18 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V25 tmp19 [V25,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V26 tmp20 [V26,T00] ( 9, 72 ) byref -> r8 "Inlining Arg"
-; V27 tmp21 [V27,T05] ( 4, 16 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Security.Cryptography.Asn1.GeneralNameAsn]>
+;* V25 tmp19 [V25,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V26 tmp20 [V26,T00] ( 9, 72 ) byref -> rbx "Inlining Arg"
+; V27 tmp21 [V27,T06] ( 4, 16 ) ref -> rsi class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Security.Cryptography.Asn1.GeneralNameAsn]>
;* V28 tmp22 [V28 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp23 [V29 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
;* V30 tmp24 [V30 ] ( 0, 0 ) ref -> zero-ref "field V05._object (fldOffset=0x0)" P-INDEP
;* V31 tmp25 [V31 ] ( 0, 0 ) int -> zero-ref "field V05._index (fldOffset=0x8)" P-INDEP
;* V32 tmp26 [V32 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0xc)" P-INDEP
;* V33 tmp27 [V33 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp28 [V34 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V35 tmp29 [V35,T24] ( 2, 1 ) byref -> rbx "field V15._reference (fldOffset=0x0)" P-INDEP
-; V36 tmp30 [V36,T26] ( 2, 1 ) int -> r13 "field V15._length (fldOffset=0x8)" P-INDEP
+; V35 tmp29 [V35,T27] ( 2, 1 ) byref -> rbx "field V15._reference (fldOffset=0x0)" P-INDEP
+; V36 tmp30 [V36,T29] ( 2, 1 ) int -> r15 "field V15._length (fldOffset=0x8)" P-INDEP
;* V37 tmp31 [V37 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-DEP
;* V38 tmp32 [V38 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-DEP
-; V39 tmp33 [V39,T25] ( 2, 1 ) byref -> r14 "field V18._reference (fldOffset=0x0)" P-INDEP
-; V40 tmp34 [V40,T27] ( 2, 1 ) int -> r13 "field V18._length (fldOffset=0x8)" P-INDEP
+; V39 tmp33 [V39,T28] ( 2, 1 ) byref -> rbx "field V18._reference (fldOffset=0x0)" P-INDEP
+; V40 tmp34 [V40,T30] ( 2, 1 ) int -> r15 "field V18._length (fldOffset=0x8)" P-INDEP
;* V41 tmp35 [V41 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
;* V42 tmp36 [V42 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-; V43 tmp37 [V43,T13] ( 2, 4 ) ubyte -> r8 "V03.[240..241)"
-; V44 tmp38 [V44,T11] ( 7, 5 ) ref -> rdi "V03.[248..256)"
-; V45 tmp39 [V45,T21] ( 2, 2.50) int -> rbx "V03.[256..260)"
-; V46 tmp40 [V46,T19] ( 3, 3 ) int -> r15 "V03.[260..264)"
+; V43 tmp37 [V43,T16] ( 2, 4 ) ubyte -> rcx "V03.[240..241)"
+; V44 tmp38 [V44,T14] ( 7, 5 ) ref -> rdx "V03.[248..256)"
+; V45 tmp39 [V45,T24] ( 2, 2.50) int -> r14 "V03.[256..260)"
+; V46 tmp40 [V46,T22] ( 3, 3 ) int -> r13 "V03.[260..264)"
;* V47 tmp41 [V47 ] ( 0, 0 ) ref -> zero-ref single-def "V09.[000..008)"
;* V48 tmp42 [V48 ] ( 0, 0 ) int -> zero-ref "V09.[008..012)"
-; V49 tmp43 [V49,T28] ( 2, 1 ) int -> r15 "V09.[012..016)"
-; V50 tmp44 [V50,T12] ( 4, 4 ) byref -> r8 single-def "Spilling address for field-by-field copy"
-; V51 tmp45 [V51,T04] ( 5, 20 ) byref -> r9 "Spilling address for field-by-field copy"
-; V52 tmp46 [V52,T01] ( 3, 24 ) ref -> rdi "arr expr"
-; V53 tmp47 [V53,T02] ( 3, 24 ) int -> rsi "index expr"
-; V54 PSPSym [V54,T29] ( 1, 1 ) long -> [rbp-0x150] do-not-enreg[V] "PSPSym"
-; V55 cse0 [V55,T07] ( 3, 12 ) int -> rsi "CSE #02: aggressive"
-; V56 cse1 [V56,T09] ( 2, 8 ) int -> rsi "CSE #03: aggressive"
-; V57 cse2 [V57,T06] ( 3, 12 ) ref -> r9 "CSE #04: aggressive"
+; V49 tmp43 [V49,T31] ( 2, 1 ) int -> r15 "V09.[012..016)"
+; V50 tmp44 [V50,T15] ( 4, 4 ) byref -> rbx single-def "Spilling address for field-by-field copy"
+; V51 tmp45 [V51,T05] ( 5, 20 ) byref -> rax "Spilling address for field-by-field copy"
+; V52 tmp46 [V52,T01] ( 3, 24 ) ref -> rsi "arr expr"
+; V53 tmp47 [V53,T03] ( 3, 24 ) int -> rdx "index expr"
+; V54 PSPSym [V54,T32] ( 1, 1 ) long -> [rbp-0x150] do-not-enreg[V] "PSPSym"
+; V55 cse0 [V55,T10] ( 3, 12 ) int -> rdx "CSE #02: aggressive"
+; V56 cse1 [V56,T12] ( 2, 8 ) int -> rdx "CSE #03: aggressive"
+; V57 cse2 [V57,T09] ( 3, 12 ) ref -> r15 "CSE #04: aggressive"
+; V58 rat0 [V58,T02] ( 3, 24 ) byref -> rdx "fgMakeTemp is creating a new local variable"
+; V59 rat1 [V59,T07] ( 2, 16 ) byref -> rsi "fgMakeTemp is creating a new local variable"
+; V60 rat2 [V60,T08] ( 2, 16 ) byref -> rdx "argument with side effect"
;
; Lcl frame size = 304
G_M43288_IG01:
push rbp
push r15
push r14
push r13
push rbx
sub rsp, 304
lea rbp, [rsp+0x150]
xor eax, eax
mov qword ptr [rbp-0x138], rax
vxorps xmm8, xmm8, xmm8
vmovdqa xmmword ptr [rbp-0x130], xmm8
vmovdqa xmmword ptr [rbp-0x120], xmm8
mov rax, -240
vmovdqa xmmword ptr [rbp+rax-0x20], xmm8
vmovdqa xmmword ptr [rbp+rax-0x10], xmm8
vmovdqa xmmword ptr [rax+rbp], xmm8
add rax, 48
jne SHORT -5 instr
mov qword ptr [rbp-0x150], rsp
mov gword ptr [rbp-0x140], rdi
- mov rdx, rdi
- ;; size=103 bbWeight=1 PerfScore 21.08
+ ;; size=100 bbWeight=1 PerfScore 20.83
G_M43288_IG02:
- mov edi, dword ptr [rdx+0x20]
- test edi, edi
+ mov esi, dword ptr [rdi+0x20]
+ test esi, esi
je SHORT G_M43288_IG04
;; size=7 bbWeight=1 PerfScore 3.25
G_M43288_IG03:
- cmp edi, 1
- je G_M43288_IG20
+ cmp esi, 1
+ je G_M43288_IG18
xor eax, eax
- jmp G_M43288_IG21
+ jmp G_M43288_IG19
;; size=16 bbWeight=0.50 PerfScore 1.75
G_M43288_IG04:
- mov dword ptr [rdx+0x20], -1
- mov rbx, gword ptr [rdx+0x10]
+ mov dword ptr [rdi+0x20], -1
+ mov rbx, gword ptr [rdi+0x10]
mov r15d, dword ptr [rbx+0x14]
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_MEMZERO
lea rdi, bword ptr [rbp-0x128]
mov esi, 264
call [rax]CORINFO_HELP_MEMZERO
mov gword ptr [rbp-0x138], rbx
- mov rdx, gword ptr [rbp-0x140]
- lea r8, bword ptr [rdx+0x28]
- mov rdi, r8
- lea rsi, bword ptr [rbp-0x138]
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- movsq
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- ;; size=152 bbWeight=0.50 PerfScore 17.62
-G_M43288_IG05:
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
+ mov rdi, gword ptr [rbp-0x140]
+ lea rbx, bword ptr [rdi+0x28]
+ mov rdi, rbx
+ lea rsi, [rbp-0x138]
+ mov edx, 160
+ call CORINFO_HELP_ASSIGN_STRUCT
xor edi, edi
- mov dword ptr [r8+0x08], edi
- mov dword ptr [r8+0x0C], r15d
- jmp G_M43288_IG20
- ;; size=60 bbWeight=0.50 PerfScore 8.12
+ mov dword ptr [rbx+0x08], edi
+ mov dword ptr [rbx+0x0C], r15d
+ mov rdi, gword ptr [rbp-0x140]
+ jmp G_M43288_IG18
+ ;; size=98 bbWeight=0.50 PerfScore 9.38
+G_M43288_IG05:
+ mov rdi, gword ptr [rbp-0x140]
+ lea rax, bword ptr [rdi+0x38]
+ movzx rcx, byte ptr [rax+0xF0]
+ mov rdx, gword ptr [rax+0xF8]
+ mov r14d, dword ptr [rax+0x100]
+ mov r13d, dword ptr [rax+0x104]
+ test ecx, ecx
+ jne G_M43288_IG14
+ ;; size=47 bbWeight=2 PerfScore 21.50
G_M43288_IG06:
- lea r9, bword ptr [rdx+0x38]
- movzx r8, byte ptr [r9+0xF0]
- mov rdi, gword ptr [r9+0xF8]
- mov ebx, dword ptr [r9+0x100]
- mov r15d, dword ptr [r9+0x104]
- test r8d, r8d
- jne G_M43288_IG16
- ;; size=42 bbWeight=2 PerfScore 19.50
+ lea rbx, bword ptr [rdi+0x28]
+ mov r15, gword ptr [rbx]
+ mov rsi, r15
+ mov edx, dword ptr [rbx+0x0C]
+ cmp edx, dword ptr [rsi+0x14]
+ jne SHORT G_M43288_IG07
+ mov edx, dword ptr [rbx+0x08]
+ cmp edx, dword ptr [rsi+0x10]
+ jae SHORT G_M43288_IG10
+ mov rsi, gword ptr [rsi+0x08]
+ cmp edx, dword ptr [rsi+0x08]
+ jae SHORT G_M43288_IG09
+ imul rdx, rdx, 264
+ lea rsi, bword ptr [rsi+rdx+0x10]
+ lea rdx, bword ptr [rbx+0x10]
+ cmp byte ptr [rdx], dl
+ mov rdi, rdx
+ mov edx, 152
+ call CORINFO_HELP_ASSIGN_STRUCT
+ inc dword ptr [rbx+0x08]
+ jmp SHORT G_M43288_IG05
+ ;; size=71 bbWeight=4 PerfScore 135.00
G_M43288_IG07:
- lea r8, bword ptr [rdx+0x28]
- mov r9, gword ptr [r8]
- mov rdi, r9
- mov esi, dword ptr [r8+0x0C]
- cmp esi, dword ptr [rdi+0x14]
- jne G_M43288_IG09
- mov esi, dword ptr [r8+0x08]
- cmp esi, dword ptr [rdi+0x10]
- jae G_M43288_IG12
- mov rdi, gword ptr [rdi+0x08]
- cmp esi, dword ptr [rdi+0x08]
- jae G_M43288_IG11
- imul rsi, rsi, 264
- lea rsi, bword ptr [rdi+rsi+0x10]
- lea rdi, bword ptr [r8+0x10]
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- movsq
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- ;; size=141 bbWeight=4 PerfScore 177.00
-G_M43288_IG08:
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- movsq
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- inc dword ptr [r8+0x08]
- jmp G_M43288_IG06
- ;; size=56 bbWeight=4 PerfScore 72.00
-G_M43288_IG09:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
call [rax]System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M43288_IG10:
+G_M43288_IG08:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M43288_IG11:
+G_M43288_IG09:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
+G_M43288_IG10:
+ mov edx, dword ptr [r15+0x10]
+ inc edx
+ mov dword ptr [rbx+0x08], edx
+ add rbx, 16
+ xor eax, eax
+ mov qword ptr [rbx], rax
+ mov ecx, 256
+ ;; size=23 bbWeight=4 PerfScore 20.00
+G_M43288_IG11:
+ mov qword ptr [rbx+rcx], rax
+ sub rcx, 8
+ jne SHORT G_M43288_IG11
+ mov rdi, gword ptr [rbp-0x140]
+ mov dword ptr [rdi+0x20], -1
+ lea rax, bword ptr [rdi+0x28]
+ xor ecx, ecx
+ mov qword ptr [rax], rcx
+ mov edx, 272
+ ;; size=38 bbWeight=4 PerfScore 25.00
G_M43288_IG12:
- mov edi, dword ptr [r9+0x10]
- inc edi
- mov dword ptr [r8+0x08], edi
- add r8, 16
- xor edi, edi
- mov qword ptr [r8], rdi
- mov eax, 256
- ;; size=24 bbWeight=4 PerfScore 20.00
+ mov qword ptr [rax+rdx], rcx
+ sub rdx, 8
+ jne SHORT G_M43288_IG12
+ ;; size=10 bbWeight=4 PerfScore 9.00
G_M43288_IG13:
- mov qword ptr [r8+rax], rdi
- sub rax, 8
- jne SHORT G_M43288_IG13
- mov dword ptr [rdx+0x20], -1
- lea rdi, bword ptr [rdx+0x28]
xor eax, eax
- mov qword ptr [rdi], rax
- mov ecx, 272
- ;; size=31 bbWeight=4 PerfScore 21.00
+ jmp G_M43288_IG19
+ ;; size=7 bbWeight=4 PerfScore 9.00
G_M43288_IG14:
- mov qword ptr [rdi+rcx], rax
- sub rcx, 8
- jne SHORT G_M43288_IG14
- ;; size=10 bbWeight=4 PerfScore 9.00
-G_M43288_IG15:
- jmp G_M43288_IG21
- ;; size=5 bbWeight=4 PerfScore 8.00
-G_M43288_IG16:
- xor r14, r14
- xor r13d, r13d
- test rdi, rdi
- je SHORT G_M43288_IG19
- mov rax, qword ptr [rdi]
- test dword ptr [rax], 0xD1FFAB1E
+ xor rbx, rbx
+ xor r15d, r15d
+ test rdx, rdx
je SHORT G_M43288_IG17
- lea r14, bword ptr [rdi+0x10]
- mov r13d, dword ptr [rdi+0x08]
- jmp SHORT G_M43288_IG18
- ;; size=32 bbWeight=0.50 PerfScore 6.12
-G_M43288_IG17:
- mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rdx]
+ test dword ptr [rax], 0xD1FFAB1E
+ je SHORT G_M43288_IG15
+ lea rbx, bword ptr [rdx+0x10]
+ mov r15d, dword ptr [rdx+0x08]
+ jmp SHORT G_M43288_IG16
+ ;; size=31 bbWeight=0.50 PerfScore 6.12
+G_M43288_IG15:
+ mov rdi, rdx
+ mov rax, qword ptr [rdx]
mov rax, qword ptr [rax+0x40]
call [rax+0x28]System.Buffers.MemoryManager`1[ubyte]:GetSpan():System.Span`1[ubyte]:this
- mov r14, rax
- mov r13d, edx
- mov rdx, gword ptr [rbp-0x140]
- ;; size=23 bbWeight=0.50 PerfScore 4.25
-G_M43288_IG18:
- and ebx, 0xD1FFAB1E
- mov edi, ebx
- mov eax, r15d
- add rax, rdi
+ mov rbx, rax
+ mov r15d, edx
+ mov rdi, gword ptr [rbp-0x140]
+ ;; size=26 bbWeight=0.50 PerfScore 4.38
+G_M43288_IG16:
+ and r14d, 0xD1FFAB1E
+ mov eax, r14d
mov ecx, r13d
- cmp rax, rcx
- ja G_M43288_IG10
- add r14, rdi
- mov r13d, r15d
- ;; size=32 bbWeight=0.50 PerfScore 1.50
-G_M43288_IG19:
- mov rbx, r14
+ add rcx, rax
+ mov edx, r15d
+ cmp rcx, rdx
+ ja G_M43288_IG08
+ add rbx, rax
+ mov r15d, r13d
+ ;; size=34 bbWeight=0.50 PerfScore 1.50
+G_M43288_IG17:
mov rdi, 0xD1FFAB1E ; System.Net.IPAddress
call CORINFO_HELP_NEWSFAST
- mov r15, rax
+ mov r14, rax
mov rsi, rbx
- mov edx, r13d
- mov rdi, r15
+ mov edx, r15d
+ mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Net.IPAddress:.ctor(System.ReadOnlySpan`1[ubyte]):this
call [rax]System.Net.IPAddress:.ctor(System.ReadOnlySpan`1[ubyte]):this
- mov rdx, gword ptr [rbp-0x140]
- lea rdi, bword ptr [rdx+0x08]
- mov rsi, r15
+ mov rdi, gword ptr [rbp-0x140]
+ lea rdi, bword ptr [rdi+0x08]
+ mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
- mov rdx, gword ptr [rbp-0x140]
- mov dword ptr [rdx+0x20], 1
+ mov rdi, gword ptr [rbp-0x140]
+ mov dword ptr [rdi+0x20], 1
mov eax, 1
- jmp SHORT G_M43288_IG21
- ;; size=82 bbWeight=0.50 PerfScore 6.38
-G_M43288_IG20:
- mov dword ptr [rdx+0x20], -3
- jmp G_M43288_IG07
+ jmp SHORT G_M43288_IG19
+ ;; size=79 bbWeight=0.50 PerfScore 6.25
+G_M43288_IG18:
+ mov dword ptr [rdi+0x20], -3
+ jmp G_M43288_IG06
;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M43288_IG21:
+G_M43288_IG19:
add rsp, 304
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=16 bbWeight=1 PerfScore 3.75
-G_M43288_IG22:
+G_M43288_IG20:
push rbp
push r15
push r14
push r13
push rbx
sub rsp, 16
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x150]
;; size=26 bbWeight=0 PerfScore 0.00
-G_M43288_IG23:
+G_M43288_IG21:
mov rdi, gword ptr [rbp-0x140]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateIPAddresses>d__8:System.IDisposable.Dispose():this
call [rax]System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateIPAddresses>d__8:System.IDisposable.Dispose():this
nop
;; size=20 bbWeight=0 PerfScore 0.00
-G_M43288_IG24:
+G_M43288_IG22:
add rsp, 16
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 935, prolog size 103, PerfScore 401.83, instruction count 234, allocated bytes for code 935 (MethodHash=572a56e7) for method System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateIPAddresses>d__8:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 706, prolog size 100, PerfScore 278.21, instruction count 175, allocated bytes for code 706 (MethodHash=572a56e7) for method System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateIPAddresses>d__8:MoveNext():ubyte:this (FullOpts) Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/8b732ffb9c3fbc7ecf4e963c642c1f61 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Build completed in 31 minutes.
dotnet/runtime#101761
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: