Untitled Diff

Créé Le diff n'expire jamais
47 suppressions
209 lignes
48 ajouts
209 lignes
; Assembly listing for method System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,bool],byref):System.__Canon (FullOpts)
; Assembly listing for method System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,bool],byref):System.__Canon (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Windows
; Emitting BLENDED_CODE for X64 with AVX - Windows
; FullOpts code
; FullOpts code
; optimized code
; optimized code
; rbp based frame
; rbp based frame
; fully interruptible
; fully interruptible
; No matching PGO data
; No matching PGO data
; Final local variable assignments
; Final local variable assignments
;
;
; V00 TypeCtx [V00,T05] ( 7, 5.56) long -> rsi single-def
; V00 TypeCtx [V00,T05] ( 7, 5.56) long -> rsi single-def
; V01 arg0 [V01,T06] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V01 arg0 [V01,T06] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 arg1 [V02,T01] ( 5, 19 ) ref -> rbx class-hnd single-def <System.Func`2[System.__Canon,bool]>
; V02 arg1 [V02,T01] ( 5, 19 ) ref -> rbx class-hnd single-def <System.Func`2[System.__Canon,bool]>
; V03 arg2 [V03,T07] ( 4, 4 ) byref -> r14 single-def
; V03 arg2 [V03,T07] ( 4, 4 ) byref -> r14 single-def
; V04 loc0 [V04,T02] ( 7, 20 ) ref -> [rbp-38H] class-hnd EH-live single-def <<unknown class>>
; V04 loc0 [V04,T02] ( 7, 20 ) ref -> [rbp-0x38] class-hnd EH-live single-def <<unknown class>>
; V05 loc1 [V05,T03] ( 3, 17 ) ref -> rsi class-hnd <System.__Canon>
; V05 loc1 [V05,T03] ( 3, 17 ) ref -> rsi class-hnd <System.__Canon>
; V06 loc2 [V06,T13] ( 2, 2 ) ref -> [rbp-40H] do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon>
; V06 loc2 [V06,T13] ( 2, 2 ) ref -> [rbp-0x40] do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon>
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V10 tmp2 [V10,T08] ( 4, 6 ) long -> r11 "VirtualCall with runtime lookup"
; V10 tmp2 [V10,T08] ( 4, 6 ) long -> r11 "VirtualCall with runtime lookup"
;* V11 tmp3 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V11 tmp3 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V12 tmp4 [V12,T00] ( 3, 48 ) long -> r11 "VirtualCall with runtime lookup"
; V12 tmp4 [V12,T00] ( 3, 48 ) long -> r11 "VirtualCall with runtime lookup"
; V13 PSPSym [V13,T14] ( 1, 1 ) long -> [rbp-50H] do-not-enreg[V] "PSPSym"
; V13 PSPSym [V13,T14] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
; V14 cse0 [V14,T04] ( 2, 9 ) long -> r15 "CSE - aggressive"
; V14 cse0 [V14,T04] ( 2, 9 ) long -> r15 "CSE - aggressive"
; V15 rat0 [V15,T09] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable"
; V15 rat0 [V15,T09] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable"
; V16 rat1 [V16,T12] ( 3, 4 ) long -> r15 "runtime lookup"
; V16 rat1 [V16,T12] ( 3, 4 ) long -> r15 "runtime lookup"
; V17 rat2 [V17,T10] ( 3, 5.60) long -> rcx "spilling expr"
; V17 rat2 [V17,T10] ( 3, 5.60) long -> rcx "spilling expr"
; V18 rat3 [V18,T11] ( 3, 4.48) long -> r15 "fgMakeTemp is creating a new local variable"
; V18 rat3 [V18,T11] ( 3, 4.48) long -> r15 "fgMakeTemp is creating a new local variable"
;
;
; Lcl frame size = 72
; Lcl frame size = 72


G_M29817_IG01: ;; offset=0000H
G_M29817_IG01: ;; offset=0x0000
push rbp
push rbp
push r15
push r15
push r14
push r14
push rdi
push rdi
push rsi
push rsi
push rbx
push rbx
sub rsp, 72
sub rsp, 72
lea rbp, [rsp+70H]
lea rbp, [rsp+0x70]
xor eax, eax
xor eax, eax
mov qword ptr [rbp-40H], rax
mov qword ptr [rbp-0x40], rax
mov qword ptr [rbp-50H], rsp
mov qword ptr [rbp-0x50], rsp
mov qword ptr [rbp-30H], rcx
mov qword ptr [rbp-0x30], rcx
mov rsi, rcx
mov rsi, rcx
mov rdi, rdx
mov rdi, rdx
mov rbx, r8
mov rbx, r8
mov r14, r9
mov r14, r9
;; size=43 bbWeight=1 PerfScore 11.00
;; size=43 bbWeight=1 PerfScore 11.00
G_M29817_IG02: ;; offset=002BH
G_M29817_IG02: ;; offset=0x002B
test rdi, rdi
test rdi, rdi
je G_M29817_IG20
je G_M29817_IG20
test rbx, rbx
test rbx, rbx
je G_M29817_IG21
je G_M29817_IG21
mov rcx, qword ptr [rsi+38H]
mov rcx, qword ptr [rsi+0x38]
mov r11, qword ptr [rcx+10H]
mov r11, qword ptr [rcx+0x10]
test r11, r11
test r11, r11
je SHORT G_M29817_IG04
je SHORT G_M29817_IG04
;; size=31 bbWeight=1 PerfScore 7.75
;; size=31 bbWeight=1 PerfScore 7.75
G_M29817_IG03: ;; offset=004AH
G_M29817_IG03: ;; offset=0x004A
jmp SHORT G_M29817_IG05
jmp SHORT G_M29817_IG05
;; size=2 bbWeight=0.80 PerfScore 1.60
;; size=2 bbWeight=0.80 PerfScore 1.60
G_M29817_IG04: ;; offset=004CH
G_M29817_IG04: ;; offset=0x004C
mov rcx, rsi
mov rcx, rsi
mov rdx, 0x7FFB4C0E2FA8 ; global ptr
mov rdx, 0x7FFB4C0E2FA8 ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov r11, rax
mov r11, rax
;; size=21 bbWeight=0.20 PerfScore 0.35
;; size=21 bbWeight=0.20 PerfScore 0.35
G_M29817_IG05: ;; offset=0061H
G_M29817_IG05: ;; offset=0x0061
mov rcx, rdi
mov rcx, rdi
call [r11]
call [r11]
mov rdi, rax
mov rdi, rax
mov gword ptr [rbp-38H], rdi
mov gword ptr [rbp-0x38], rdi
;; size=13 bbWeight=1 PerfScore 4.50
;; size=13 bbWeight=1 PerfScore 4.50
G_M29817_IG06: ;; offset=006EH
G_M29817_IG06: ;; offset=0x006E
mov rcx, rdi
mov rcx, rdi
mov r11, 0x7FFB4B840018 ; code for <unknown method>
mov r11, 0x7FFB4B840018 ; code for <unknown method>
call [r11]<unknown method>
call [r11]<unknown method>
test eax, eax
test eax, eax
je SHORT G_M29817_IG13
je SHORT G_M29817_IG13
mov rcx, qword ptr [rsi+38H]
mov rcx, qword ptr [rsi+0x38]
cmp qword ptr [rcx+08H], 24
cmp qword ptr [rcx+0x08], 24
jle SHORT G_M29817_IG09
jle SHORT G_M29817_IG09
;; size=31 bbWeight=1 PerfScore 10.75
;; size=31 bbWeight=1 PerfScore 10.75
G_M29817_IG07: ;; offset=008DH
G_M29817_IG07: ;; offset=0x008D
mov r15, qword ptr [rcx+18H]
mov r15, qword ptr [rcx+0x18]
test r15, r15
test r15, r15
je SHORT G_M29817_IG09
je SHORT G_M29817_IG09
;; size=9 bbWeight=0.80 PerfScore 2.60
;; size=9 bbWeight=0.80 PerfScore 2.60
G_M29817_IG08: ;; offset=0096H
G_M29817_IG08: ;; offset=0x0096
jmp SHORT G_M29817_IG10
jmp SHORT G_M29817_IG10
;; size=2 bbWeight=0.64 PerfScore 1.28
;; size=2 bbWeight=0.64 PerfScore 1.28
G_M29817_IG09: ;; offset=0098H
G_M29817_IG09: ;; offset=0x0098
mov rcx, rsi
mov rcx, rsi
mov rdx, 0x7FFB4C0E3270 ; global ptr
mov rdx, 0x7FFB4C0E3270 ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov r15, rax
mov r15, rax
;; size=21 bbWeight=0.36 PerfScore 0.63
;; size=21 bbWeight=0.36 PerfScore 0.63
G_M29817_IG10: ;; offset=00ADH
G_M29817_IG10: ;; offset=0x00AD
mov r11, r15
mov r11, r15
mov rcx, rdi
mov rcx, rdi
call [r11]
call [r11]
mov rsi, rax
mov rsi, rax
mov rdx, rsi
mov rdx, rsi
mov rcx, gword ptr [rbx+08H]
mov rcx, gword ptr [rbx+0x08]
call [rbx+18H]<unknown method>
call [rbx+0x18]<unknown method>