Diff
checker
Texte
Texte
Images
Documents
Excel
Dossiers
Legal
Enterprise
Application de bureau
Prix
Se connecter
Télécharger Diffchecker Desktop
Comparer le texte
Trouver la différence entre deux fichiers texte
Outils
Historique
Éditeur live
Cacher identiques
Sans retour à la ligne
Vue
Divisé
Unifié
Niveau de précision
Intelligent
Mot
Caractère
Coloration syntaxique
Choisir la syntaxe
Ignorer
Transformer le texte
Aller au premier écart
Modifier l'entrée
Diffchecker Desktop
La façon la plus sécurisée d'utiliser Diffchecker. Obtenez l'application Diffchecker Desktop : vos diffs ne quittent jamais votre ordinateur !
Obtenir Desktop
Untitled Diff
Créé
il y a 3 ans
Le diff n'expire jamais
Effacer
Exporter
Partager
Expliquer
66 suppressions
Lignes
Total
Supprimé
Caractères
Total
Supprimé
Pour continuer à utiliser cette fonctionnalité, passez à
Diff
checker
Pro
Voir les prix
155 lignes
Copier tout
76 ajouts
Lignes
Total
Ajouté
Caractères
Total
Ajouté
Pour continuer à utiliser cette fonctionnalité, passez à
Diff
checker
Pro
Voir les prix
164 lignes
Copier tout
; Assembly listing for method System.Runtime.InteropServices.MemoryMarshal:TryGetArray[double](System.ReadOnlyMemory`1[double],byref):bool
; Assembly listing for method System.Runtime.InteropServices.MemoryMarshal:TryGetArray[double](System.ReadOnlyMemory`1[double],byref):bool
; Emitting BLENDED_CODE for X64 CPU with AVX - Windows
; Emitting BLENDED_CODE for X64 CPU with AVX - Windows
; optimized code
; optimized code
; rsp based frame
; rsp based frame
; partially interruptible
; partially interruptible
; No PGO data
; No PGO data
Copier
Copié
Copier
Copié
; 0 inlinees with PGO data;
6
single block inlinees; 2 inlinees without PGO data
; 0 inlinees with PGO data;
7
single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
; Final local variable assignments
;
;
; V00 arg0 [V00,T00] ( 5, 10 ) byref -> rcx ld-addr-op single-def
; V00 arg0 [V00,T00] ( 5, 10 ) byref -> rcx ld-addr-op single-def
Copier
Copié
Copier
Copié
; V01 arg1 [V01,T01] ( 10, 6 ) byref -> r
s
i single-def
; V01 arg1 [V01,T01] ( 10, 6 ) byref -> r
d
i single-def
; V02 loc0 [V02,T02] ( 8, 4.50) ref -> rcx class-hnd single-def
; V02 loc0 [V02,T02] ( 8, 4.50) ref -> rcx class-hnd single-def
Copier
Copié
Copier
Copié
; V03 loc1 [V03,T09] ( 3, 2 ) int -> r
d
i ld-addr-op
; V03 loc1 [V03,T09] ( 3, 2 ) int -> r
s
i ld-addr-op
; V04 loc2 [V04,T08] ( 4, 2.50) int -> rbx ld-addr-op
; V04 loc2 [V04,T08] ( 4, 2.50) int -> rbx ld-addr-op
Copier
Copié
Copier
Copié
; V05 loc3 [V05 ] ( 3, 1.50) struct (16) [rsp+2
0
H] do-not-enreg[XS] must-init addr-exposed ld-addr-op
; V05 loc3 [V05 ] ( 3, 1.50) struct (16) [rsp+2
8
H] do-not-enreg[XS] must-init addr-exposed ld-addr-op
; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace"
; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace"
; V07 tmp1 [V07,T03] ( 5, 4 ) ref -> rcx class-hnd single-def "impAppendStmt"
; V07 tmp1 [V07,T03] ( 5, 4 ) ref -> rcx class-hnd single-def "impAppendStmt"
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
; V10 tmp4 [V10,T10] ( 2, 2 ) byref -> rdx single-def "Inlining Arg"
; V10 tmp4 [V10,T10] ( 2, 2 ) byref -> rdx single-def "Inlining Arg"
Copier
Copié
Copier
Copié
; V11 tmp5 [V11,T04] ( 5, 4 ) int -> r
d
i "Inlining Arg"
; V11 tmp5 [V11,T04] ( 5, 4 ) int -> r
s
i "Inlining Arg"
; V12 tmp6 [V12,T06] ( 4, 3 ) int -> rbx "Inlining Arg"
; V12 tmp6 [V12,T06] ( 4, 3 ) int -> rbx "Inlining Arg"
Copier
Copié
Copier
Copié
; V13 tmp7 [V13,T05] ( 5, 4 ) int ->
rdi
"Inlining Arg"
; V13 tmp7 [V13,T05] ( 5, 4 ) int ->
rbp
"Inlining Arg"
; V14 tmp8 [V14,T07] ( 4, 3 ) int -> rbx "Inlining Arg"
; V14 tmp8 [V14,T07] ( 4, 3 ) int -> rbx "Inlining Arg"
;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref V27._object(offs=0x00) P-INDEP "field V00._object (fldOffset=0x0)"
;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref V27._object(offs=0x00) P-INDEP "field V00._object (fldOffset=0x0)"
;* V16 tmp10 [V16 ] ( 0, 0 ) int -> zero-ref V27._index(offs=0x08) P-INDEP "field V00._index (fldOffset=0x8)"
;* V16 tmp10 [V16 ] ( 0, 0 ) int -> zero-ref V27._index(offs=0x08) P-INDEP "field V00._index (fldOffset=0x8)"
;* V17 tmp11 [V17 ] ( 0, 0 ) int -> zero-ref V27._length(offs=0x0c) P-INDEP "field V00._length (fldOffset=0xc)"
;* V17 tmp11 [V17 ] ( 0, 0 ) int -> zero-ref V27._length(offs=0x0c) P-INDEP "field V00._length (fldOffset=0xc)"
Copier
Copié
Copier
Copié
; V18 tmp12 [V18 ] ( 2, 1 ) ref -> [rsp+2
0
H] do-not-enreg[X] addr-exposed V05._array(offs=0x00) P-DEP "field V05._array (fldOffset=0x0)"
; V18 tmp12 [V18 ] ( 2, 1 ) ref -> [rsp+2
8
H] do-not-enreg[X] addr-exposed V05._array(offs=0x00) P-DEP "field V05._array (fldOffset=0x0)"
; V19 tmp13 [V19 ] ( 2, 1 ) int -> [rsp+
28H
] do-not-enreg[X] addr-exposed V05._offset(offs=0x08) P-DEP "field V05._offset (fldOffset=0x8)"
; V19 tmp13 [V19 ] ( 2, 1 ) int -> [rsp+
30H
] do-not-enreg[X] addr-exposed V05._offset(offs=0x08) P-DEP "field V05._offset (fldOffset=0x8)"
; V20 tmp14 [V20 ] ( 1, 0.50) int -> [rsp+
2CH
] do-not-enreg[X] addr-exposed V05._count(offs=0x0c) P-DEP "field V05._count (fldOffset=0xc)"
; V20 tmp14 [V20 ] ( 1, 0.50) int -> [rsp+
34H
] do-not-enreg[X] addr-exposed V05._count(offs=0x0c) P-DEP "field V05._count (fldOffset=0xc)"
; V21 tmp15 [V21,T13] ( 2, 1 ) ref -> rdx single-def V08._array(offs=0x00) P-INDEP "field V08._array (fldOffset=0x0)"
; V21 tmp15 [V21,T13] ( 2, 1 ) ref -> rdx single-def V08._array(offs=0x00) P-INDEP "field V08._array (fldOffset=0x0)"
Copier
Copié
Copier
Copié
; V22 tmp16 [V22,T15] ( 2, 1 ) int ->
rdi
V08._offset(offs=0x08) P-INDEP "field V08._offset (fldOffset=0x8)"
; V22 tmp16 [V22,T15] ( 2, 1 ) int ->
rbp
V08._offset(offs=0x08) P-INDEP "field V08._offset (fldOffset=0x8)"
; V23 tmp17 [V23,T16] ( 2, 1 ) int -> rbx V08._count(offs=0x0c) P-INDEP "field V08._count (fldOffset=0xc)"
; V23 tmp17 [V23,T16] ( 2, 1 ) int -> rbx V08._count(offs=0x0c) P-INDEP "field V08._count (fldOffset=0xc)"
; V24 tmp18 [V24,T14] ( 2, 1 ) ref -> rdx single-def V09._array(offs=0x00) P-INDEP "field V09._array (fldOffset=0x0)"
; V24 tmp18 [V24,T14] ( 2, 1 ) ref -> rdx single-def V09._array(offs=0x00) P-INDEP "field V09._array (fldOffset=0x0)"
Copier
Copié
Copier
Copié
; V25 tmp19 [V25,T17] ( 2, 1 ) int -> r
d
i V09._offset(offs=0x08) P-INDEP "field V09._offset (fldOffset=0x8)"
; V25 tmp19 [V25,T17] ( 2, 1 ) int -> r
s
i V09._offset(offs=0x08) P-INDEP "field V09._offset (fldOffset=0x8)"
; V26 tmp20 [V26,T18] ( 2, 1 ) int -> rbx V09._count(offs=0x0c) P-INDEP "field V09._count (fldOffset=0xc)"
; V26 tmp20 [V26,T18] ( 2, 1 ) int -> rbx V09._count(offs=0x0c) P-INDEP "field V09._count (fldOffset=0xc)"
;* V27 tmp21 [V27 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref"
;* V27 tmp21 [V27 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref"
; V28 cse0 [V28,T11] ( 3, 1.50) int -> rdx "CSE - moderate"
; V28 cse0 [V28,T11] ( 3, 1.50) int -> rdx "CSE - moderate"
; V29 cse1 [V29,T12] ( 3, 1.50) int -> rdx "CSE - moderate"
; V29 cse1 [V29,T12] ( 3, 1.50) int -> rdx "CSE - moderate"
;
;
Copier
Copié
Copier
Copié
; Lcl frame size =
48
; Lcl frame size =
56
G_M22933_IG01:
G_M22933_IG01:
push rdi
push rdi
push rsi
push rsi
Copier
Copié
Copier
Copié
push rbp
push rbx
push rbx
Copier
Copié
Copier
Copié
sub rsp,
48
sub rsp,
56
xor eax, eax
xor eax, eax
Copier
Copié
Copier
Copié
mov qword ptr [rsp+2
0
H], rax
mov qword ptr [rsp+2
8
H], rax
mov r
s
i, rdx
mov r
d
i, rdx
;; size=
17
bbWeight=1 PerfScore
4
.75
;; size=
18
bbWeight=1 PerfScore
5
.75
G_M22933_IG02:
G_M22933_IG02:
Copier
Copié
Copier
Copié
mov e
d
i, dword ptr [rcx+08H]
mov e
s
i, dword ptr [rcx+08H]
mov ebx, dword ptr [rcx+0CH]
mov ebx, dword ptr [rcx+0CH]
mov rcx, gword ptr [rcx]
mov rcx, gword ptr [rcx]
test rcx, rcx
test rcx, rcx
je G_M22933_IG07
je G_M22933_IG07
;; size=18 bbWeight=1 PerfScore 7.25
;; size=18 bbWeight=1 PerfScore 7.25
G_M22933_IG03:
G_M22933_IG03:
mov rdx, qword ptr [rcx]
mov rdx, qword ptr [rcx]
test dword ptr [rdx], 0xD1FFAB1E
test dword ptr [rdx], 0xD1FFAB1E
je SHORT G_M22933_IG05
je SHORT G_M22933_IG05
Copier
Copié
Copier
Copié
and e
d
i, 0xD1FFAB1E
and e
s
i, 0xD1FFAB1E
mov edx, dword ptr [rcx+08H]
mov edx, dword ptr [rcx+08H]
Copier
Copié
Copier
Copié
cmp edx, e
d
i
cmp edx, e
s
i
jb G_M22933_IG11
jb G_M22933_IG11
Copier
Copié
Copier
Copié
sub edx, e
d
i
sub edx, e
s
i
cmp edx, ebx
cmp edx, ebx
jb G_M22933_IG11
jb G_M22933_IG11
mov rdx, rcx
mov rdx, rcx
Copier
Copié
Copier
Copié
mov rcx, r
s
i
mov rcx, r
d
i
call CORINFO_HELP_CHECKED_ASSIGN_REF
call CORINFO_HELP_CHECKED_ASSIGN_REF
Copier
Copié
Copier
Copié
mov dword ptr [r
s
i+08H], e
d
i
mov dword ptr [r
d
i+08H], e
s
i
mov dword ptr [r
s
i+0CH], ebx
mov dword ptr [r
d
i+0CH], ebx
mov eax, 1
mov eax, 1
;; size=60 bbWeight=0.50 PerfScore 7.38
;; size=60 bbWeight=0.50 PerfScore 7.38
G_M22933_IG04:
G_M22933_IG04:
Copier
Copié
Copier
Copié
add rsp,
48
add rsp,
56
pop rbx
pop rbx
Copier
Copié
Copier
Copié
pop rbp
pop rsi
pop rsi
pop rdi
pop rdi
ret
ret
Copier
Copié
Copier
Copié
;; size=
8
bbWeight=0.50 PerfScore 1.
38
;; size=
9
bbWeight=0.50 PerfScore 1.
62
G_M22933_IG05:
G_M22933_IG05:
Copier
Copié
Copier
Copié
lea rdx, [rsp+2
0
H]
lea rdx, [rsp+2
8
H]
mov rax, qword ptr [rcx]
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+48H]
mov rax, qword ptr [rax+48H]
call [rax]System.Buffers.MemoryManager`1[double]:TryGetArray(byref):bool:this
call [rax]System.Buffers.MemoryManager`1[double]:TryGetArray(byref):bool:this
test eax, eax
test eax, eax
je SHORT G_M22933_IG07
je SHORT G_M22933_IG07
Copier
Copié
Copier
Copié
mov rcx, gword ptr [rsp+2
0
H]
mov rcx, gword ptr [rsp+2
8
H]
add
edi
, dword ptr [rsp+
28H
]
mov ebp, esi
add
ebp
, dword ptr [rsp+
30H
]
test rcx, rcx
test rcx, rcx
je SHORT G_M22933_IG12
je SHORT G_M22933_IG12
mov edx, dword ptr [rcx+08H]
mov edx, dword ptr [rcx+08H]
Copier
Copié
Copier
Copié
cmp edx,
edi
cmp edx,
ebp
jb SHORT G_M22933_IG12
jb SHORT G_M22933_IG12
Copier
Copié
Copier
Copié
sub edx,
edi
sub edx,
ebp
cmp edx, ebx
cmp edx, ebx
jb SHORT G_M22933_IG12
jb SHORT G_M22933_IG12
mov rdx, rcx
mov rdx, rcx
Copier
Copié
Copier
Copié
mov rcx, r
s
i
mov rcx, r
d
i
call CORINFO_HELP_CHECKED_ASSIGN_REF
call CORINFO_HELP_CHECKED_ASSIGN_REF
Copier
Copié
Copier
Copié
mov dword ptr [r
s
i+08H],
edi
mov dword ptr [r
d
i+08H],
ebp
mov dword ptr [r
s
i+0CH], ebx
mov dword ptr [r
d
i+0CH], ebx
mov eax, 1
mov eax, 1
Copier
Copié
Copier
Copié
;; size=
67
bbWeight=0.50 PerfScore 10.
75
;; size=
69
bbWeight=0.50 PerfScore 10.
88
G_M22933_IG06:
G_M22933_IG06:
Copier
Copié
Copier
Copié
add rsp,
48
add rsp,
56
pop rbx
pop rbx
Copier
Copié
Copier
Copié
pop rbp
pop rsi
pop rsi
pop rdi
pop rdi
ret
ret
Copier
Copié
Copier
Copié
;; size=
8
bbWeight=0.50 PerfScore 1.
38
;; size=
9
bbWeight=0.50 PerfScore 1.
62
G_M22933_IG07:
G_M22933_IG07:
test ebx, ebx
test ebx, ebx
jne SHORT G_M22933_IG09
jne SHORT G_M22933_IG09
Copier
Copié
Copier
Copié
mov r
c
x,
rsi
mov r
a
x,
0xD1FFAB1E
; box for
System.ArraySegment`1[double]:
<
Empty
>k__BackingField
call [
System.ArraySegment`1[double]:
get_
Empty
():System.ArraySegment`1[double]]
mov rsi, gword ptr [rax]
add rsi, 8
call CORINFO_HELP_ASSIGN_BYREF
movsq
mov eax, 1
mov eax, 1
Copier
Copié
Copier
Copié
;; size=
18
bbWeight=0.50 PerfScore
2.38
;; size=
33
bbWeight=0.50 PerfScore
3.00
G_M22933_IG08:
G_M22933_IG08:
Copier
Copié
Copier
Copié
add rsp,
48
add rsp,
56
pop rbx
pop rbx
Copier
Copié
Copier
Copié
pop rbp
pop rsi
pop rsi
pop rdi
pop rdi
ret
ret
Copier
Copié
Copier
Copié
;; size=
8
bbWeight=0.50 PerfScore 1.
38
;; size=
9
bbWeight=0.50 PerfScore 1.
62
G_M22933_IG09:
G_M22933_IG09:
xor eax, eax
xor eax, eax
Copier
Copié
Copier
Copié
mov qword ptr [r
s
i], rax
mov qword ptr [r
d
i], rax
mov qword ptr [r
s
i+08H], rax
mov qword ptr [r
d
i+08H], rax
;; size=9 bbWeight=0.50 PerfScore 1.12
;; size=9 bbWeight=0.50 PerfScore 1.12
G_M22933_IG10:
G_M22933_IG10:
Copier
Copié
Copier
Copié
add rsp,
48
add rsp,
56
pop rbx
pop rbx
Copier
Copié
Copier
Copié
pop rbp
pop rsi
pop rsi
pop rdi
pop rdi
ret
ret
Copier
Copié
Copier
Copié
;; size=
8
bbWeight=0.50 PerfScore 1.
38
;; size=
9
bbWeight=0.50 PerfScore 1.
62
G_M22933_IG11:
G_M22933_IG11:
Copier
Copié
Copier
Copié
mov edx, e
d
i
mov edx, e
s
i
mov r8d, ebx
mov r8d, ebx
call [System.ThrowHelper:ThrowArraySegmentCtorValidationFailedExceptions(System.Array,int,int)]
call [System.ThrowHelper:ThrowArraySegmentCtorValidationFailedExceptions(System.Array,int,int)]
int3
int3
;; size=12 bbWeight=0 PerfScore 0.00
;; size=12 bbWeight=0 PerfScore 0.00
G_M22933_IG12:
G_M22933_IG12:
Copier
Copié
Copier
Copié
mov edx,
edi
mov edx,
ebp
mov r8d, ebx
mov r8d, ebx
call [System.ThrowHelper:ThrowArraySegmentCtorValidationFailedExceptions(System.Array,int,int)]
call [System.ThrowHelper:ThrowArraySegmentCtorValidationFailedExceptions(System.Array,int,int)]
int3
int3
;; size=12 bbWeight=0 PerfScore 0.00
;; size=12 bbWeight=0 PerfScore 0.00
Copier
Copié
Copier
Copié
; Total bytes of code
245
, prolog size
14
, PerfScore
63.63
, instruction count
86
, allocated bytes for code
245
(MethodHash=21d5a66a) for method System.Runtime.InteropServices.MemoryMarshal:TryGetArray[double](System.ReadOnlyMemory`1[double],byref):bool
; Total bytes of code
267
, prolog size
15
, PerfScore
68.58
, instruction count
95
, allocated bytes for code
267
(MethodHash=21d5a66a) for method System.Runtime.InteropServices.MemoryMarshal:TryGetArray[double](System.ReadOnlyMemory`1[double],byref):bool
; ============================================================
; ============================================================
Différences enregistrées
Texte d'origine
Ouvrir un fichier
; Assembly listing for method System.Runtime.InteropServices.MemoryMarshal:TryGetArray[double](System.ReadOnlyMemory`1[double],byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 10 ) byref -> rcx ld-addr-op single-def ; V01 arg1 [V01,T01] ( 10, 6 ) byref -> rsi single-def ; V02 loc0 [V02,T02] ( 8, 4.50) ref -> rcx class-hnd single-def ; V03 loc1 [V03,T09] ( 3, 2 ) int -> rdi ld-addr-op ; V04 loc2 [V04,T08] ( 4, 2.50) int -> rbx ld-addr-op ; V05 loc3 [V05 ] ( 3, 1.50) struct (16) [rsp+20H] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace" ; V07 tmp1 [V07,T03] ( 5, 4 ) ref -> rcx class-hnd single-def "impAppendStmt" ;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ; V10 tmp4 [V10,T10] ( 2, 2 ) byref -> rdx single-def "Inlining Arg" ; V11 tmp5 [V11,T04] ( 5, 4 ) int -> rdi "Inlining Arg" ; V12 tmp6 [V12,T06] ( 4, 3 ) int -> rbx "Inlining Arg" ; V13 tmp7 [V13,T05] ( 5, 4 ) int -> rdi "Inlining Arg" ; V14 tmp8 [V14,T07] ( 4, 3 ) int -> rbx "Inlining Arg" ;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref V27._object(offs=0x00) P-INDEP "field V00._object (fldOffset=0x0)" ;* V16 tmp10 [V16 ] ( 0, 0 ) int -> zero-ref V27._index(offs=0x08) P-INDEP "field V00._index (fldOffset=0x8)" ;* V17 tmp11 [V17 ] ( 0, 0 ) int -> zero-ref V27._length(offs=0x0c) P-INDEP "field V00._length (fldOffset=0xc)" ; V18 tmp12 [V18 ] ( 2, 1 ) ref -> [rsp+20H] do-not-enreg[X] addr-exposed V05._array(offs=0x00) P-DEP "field V05._array (fldOffset=0x0)" ; V19 tmp13 [V19 ] ( 2, 1 ) int -> [rsp+28H] do-not-enreg[X] addr-exposed V05._offset(offs=0x08) P-DEP "field V05._offset (fldOffset=0x8)" ; V20 tmp14 [V20 ] ( 1, 0.50) int -> [rsp+2CH] do-not-enreg[X] addr-exposed V05._count(offs=0x0c) P-DEP "field V05._count (fldOffset=0xc)" ; V21 tmp15 [V21,T13] ( 2, 1 ) ref -> rdx single-def V08._array(offs=0x00) P-INDEP "field V08._array (fldOffset=0x0)" ; V22 tmp16 [V22,T15] ( 2, 1 ) int -> rdi V08._offset(offs=0x08) P-INDEP "field V08._offset (fldOffset=0x8)" ; V23 tmp17 [V23,T16] ( 2, 1 ) int -> rbx V08._count(offs=0x0c) P-INDEP "field V08._count (fldOffset=0xc)" ; V24 tmp18 [V24,T14] ( 2, 1 ) ref -> rdx single-def V09._array(offs=0x00) P-INDEP "field V09._array (fldOffset=0x0)" ; V25 tmp19 [V25,T17] ( 2, 1 ) int -> rdi V09._offset(offs=0x08) P-INDEP "field V09._offset (fldOffset=0x8)" ; V26 tmp20 [V26,T18] ( 2, 1 ) int -> rbx V09._count(offs=0x0c) P-INDEP "field V09._count (fldOffset=0xc)" ;* V27 tmp21 [V27 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V28 cse0 [V28,T11] ( 3, 1.50) int -> rdx "CSE - moderate" ; V29 cse1 [V29,T12] ( 3, 1.50) int -> rdx "CSE - moderate" ; ; Lcl frame size = 48 G_M22933_IG01: push rdi push rsi push rbx sub rsp, 48 xor eax, eax mov qword ptr [rsp+20H], rax mov rsi, rdx ;; size=17 bbWeight=1 PerfScore 4.75 G_M22933_IG02: mov edi, dword ptr [rcx+08H] mov ebx, dword ptr [rcx+0CH] mov rcx, gword ptr [rcx] test rcx, rcx je G_M22933_IG07 ;; size=18 bbWeight=1 PerfScore 7.25 G_M22933_IG03: mov rdx, qword ptr [rcx] test dword ptr [rdx], 0xD1FFAB1E je SHORT G_M22933_IG05 and edi, 0xD1FFAB1E mov edx, dword ptr [rcx+08H] cmp edx, edi jb G_M22933_IG11 sub edx, edi cmp edx, ebx jb G_M22933_IG11 mov rdx, rcx mov rcx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF mov dword ptr [rsi+08H], edi mov dword ptr [rsi+0CH], ebx mov eax, 1 ;; size=60 bbWeight=0.50 PerfScore 7.38 G_M22933_IG04: add rsp, 48 pop rbx pop rsi pop rdi ret ;; size=8 bbWeight=0.50 PerfScore 1.38 G_M22933_IG05: lea rdx, [rsp+20H] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+48H] call [rax]System.Buffers.MemoryManager`1[double]:TryGetArray(byref):bool:this test eax, eax je SHORT G_M22933_IG07 mov rcx, gword ptr [rsp+20H] add edi, dword ptr [rsp+28H] test rcx, rcx je SHORT G_M22933_IG12 mov edx, dword ptr [rcx+08H] cmp edx, edi jb SHORT G_M22933_IG12 sub edx, edi cmp edx, ebx jb SHORT G_M22933_IG12 mov rdx, rcx mov rcx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF mov dword ptr [rsi+08H], edi mov dword ptr [rsi+0CH], ebx mov eax, 1 ;; size=67 bbWeight=0.50 PerfScore 10.75 G_M22933_IG06: add rsp, 48 pop rbx pop rsi pop rdi ret ;; size=8 bbWeight=0.50 PerfScore 1.38 G_M22933_IG07: test ebx, ebx jne SHORT G_M22933_IG09 mov rcx, rsi call [System.ArraySegment`1[double]:get_Empty():System.ArraySegment`1[double]] mov eax, 1 ;; size=18 bbWeight=0.50 PerfScore 2.38 G_M22933_IG08: add rsp, 48 pop rbx pop rsi pop rdi ret ;; size=8 bbWeight=0.50 PerfScore 1.38 G_M22933_IG09: xor eax, eax mov qword ptr [rsi], rax mov qword ptr [rsi+08H], rax ;; size=9 bbWeight=0.50 PerfScore 1.12 G_M22933_IG10: add rsp, 48 pop rbx pop rsi pop rdi ret ;; size=8 bbWeight=0.50 PerfScore 1.38 G_M22933_IG11: mov edx, edi mov r8d, ebx call [System.ThrowHelper:ThrowArraySegmentCtorValidationFailedExceptions(System.Array,int,int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00 G_M22933_IG12: mov edx, edi mov r8d, ebx call [System.ThrowHelper:ThrowArraySegmentCtorValidationFailedExceptions(System.Array,int,int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00 ; Total bytes of code 245, prolog size 14, PerfScore 63.63, instruction count 86, allocated bytes for code 245 (MethodHash=21d5a66a) for method System.Runtime.InteropServices.MemoryMarshal:TryGetArray[double](System.ReadOnlyMemory`1[double],byref):bool ; ============================================================
Texte modifié
Ouvrir un fichier
; Assembly listing for method System.Runtime.InteropServices.MemoryMarshal:TryGetArray[double](System.ReadOnlyMemory`1[double],byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 7 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 10 ) byref -> rcx ld-addr-op single-def ; V01 arg1 [V01,T01] ( 10, 6 ) byref -> rdi single-def ; V02 loc0 [V02,T02] ( 8, 4.50) ref -> rcx class-hnd single-def ; V03 loc1 [V03,T09] ( 3, 2 ) int -> rsi ld-addr-op ; V04 loc2 [V04,T08] ( 4, 2.50) int -> rbx ld-addr-op ; V05 loc3 [V05 ] ( 3, 1.50) struct (16) [rsp+28H] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace" ; V07 tmp1 [V07,T03] ( 5, 4 ) ref -> rcx class-hnd single-def "impAppendStmt" ;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ; V10 tmp4 [V10,T10] ( 2, 2 ) byref -> rdx single-def "Inlining Arg" ; V11 tmp5 [V11,T04] ( 5, 4 ) int -> rsi "Inlining Arg" ; V12 tmp6 [V12,T06] ( 4, 3 ) int -> rbx "Inlining Arg" ; V13 tmp7 [V13,T05] ( 5, 4 ) int -> rbp "Inlining Arg" ; V14 tmp8 [V14,T07] ( 4, 3 ) int -> rbx "Inlining Arg" ;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref V27._object(offs=0x00) P-INDEP "field V00._object (fldOffset=0x0)" ;* V16 tmp10 [V16 ] ( 0, 0 ) int -> zero-ref V27._index(offs=0x08) P-INDEP "field V00._index (fldOffset=0x8)" ;* V17 tmp11 [V17 ] ( 0, 0 ) int -> zero-ref V27._length(offs=0x0c) P-INDEP "field V00._length (fldOffset=0xc)" ; V18 tmp12 [V18 ] ( 2, 1 ) ref -> [rsp+28H] do-not-enreg[X] addr-exposed V05._array(offs=0x00) P-DEP "field V05._array (fldOffset=0x0)" ; V19 tmp13 [V19 ] ( 2, 1 ) int -> [rsp+30H] do-not-enreg[X] addr-exposed V05._offset(offs=0x08) P-DEP "field V05._offset (fldOffset=0x8)" ; V20 tmp14 [V20 ] ( 1, 0.50) int -> [rsp+34H] do-not-enreg[X] addr-exposed V05._count(offs=0x0c) P-DEP "field V05._count (fldOffset=0xc)" ; V21 tmp15 [V21,T13] ( 2, 1 ) ref -> rdx single-def V08._array(offs=0x00) P-INDEP "field V08._array (fldOffset=0x0)" ; V22 tmp16 [V22,T15] ( 2, 1 ) int -> rbp V08._offset(offs=0x08) P-INDEP "field V08._offset (fldOffset=0x8)" ; V23 tmp17 [V23,T16] ( 2, 1 ) int -> rbx V08._count(offs=0x0c) P-INDEP "field V08._count (fldOffset=0xc)" ; V24 tmp18 [V24,T14] ( 2, 1 ) ref -> rdx single-def V09._array(offs=0x00) P-INDEP "field V09._array (fldOffset=0x0)" ; V25 tmp19 [V25,T17] ( 2, 1 ) int -> rsi V09._offset(offs=0x08) P-INDEP "field V09._offset (fldOffset=0x8)" ; V26 tmp20 [V26,T18] ( 2, 1 ) int -> rbx V09._count(offs=0x0c) P-INDEP "field V09._count (fldOffset=0xc)" ;* V27 tmp21 [V27 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V28 cse0 [V28,T11] ( 3, 1.50) int -> rdx "CSE - moderate" ; V29 cse1 [V29,T12] ( 3, 1.50) int -> rdx "CSE - moderate" ; ; Lcl frame size = 56 G_M22933_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 xor eax, eax mov qword ptr [rsp+28H], rax mov rdi, rdx ;; size=18 bbWeight=1 PerfScore 5.75 G_M22933_IG02: mov esi, dword ptr [rcx+08H] mov ebx, dword ptr [rcx+0CH] mov rcx, gword ptr [rcx] test rcx, rcx je G_M22933_IG07 ;; size=18 bbWeight=1 PerfScore 7.25 G_M22933_IG03: mov rdx, qword ptr [rcx] test dword ptr [rdx], 0xD1FFAB1E je SHORT G_M22933_IG05 and esi, 0xD1FFAB1E mov edx, dword ptr [rcx+08H] cmp edx, esi jb G_M22933_IG11 sub edx, esi cmp edx, ebx jb G_M22933_IG11 mov rdx, rcx mov rcx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF mov dword ptr [rdi+08H], esi mov dword ptr [rdi+0CH], ebx mov eax, 1 ;; size=60 bbWeight=0.50 PerfScore 7.38 G_M22933_IG04: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; size=9 bbWeight=0.50 PerfScore 1.62 G_M22933_IG05: lea rdx, [rsp+28H] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+48H] call [rax]System.Buffers.MemoryManager`1[double]:TryGetArray(byref):bool:this test eax, eax je SHORT G_M22933_IG07 mov rcx, gword ptr [rsp+28H] mov ebp, esi add ebp, dword ptr [rsp+30H] test rcx, rcx je SHORT G_M22933_IG12 mov edx, dword ptr [rcx+08H] cmp edx, ebp jb SHORT G_M22933_IG12 sub edx, ebp cmp edx, ebx jb SHORT G_M22933_IG12 mov rdx, rcx mov rcx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF mov dword ptr [rdi+08H], ebp mov dword ptr [rdi+0CH], ebx mov eax, 1 ;; size=69 bbWeight=0.50 PerfScore 10.88 G_M22933_IG06: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; size=9 bbWeight=0.50 PerfScore 1.62 G_M22933_IG07: test ebx, ebx jne SHORT G_M22933_IG09 mov rax, 0xD1FFAB1E ; box for System.ArraySegment`1[double]:<Empty>k__BackingField mov rsi, gword ptr [rax] add rsi, 8 call CORINFO_HELP_ASSIGN_BYREF movsq mov eax, 1 ;; size=33 bbWeight=0.50 PerfScore 3.00 G_M22933_IG08: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; size=9 bbWeight=0.50 PerfScore 1.62 G_M22933_IG09: xor eax, eax mov qword ptr [rdi], rax mov qword ptr [rdi+08H], rax ;; size=9 bbWeight=0.50 PerfScore 1.12 G_M22933_IG10: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; size=9 bbWeight=0.50 PerfScore 1.62 G_M22933_IG11: mov edx, esi mov r8d, ebx call [System.ThrowHelper:ThrowArraySegmentCtorValidationFailedExceptions(System.Array,int,int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00 G_M22933_IG12: mov edx, ebp mov r8d, ebx call [System.ThrowHelper:ThrowArraySegmentCtorValidationFailedExceptions(System.Array,int,int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00 ; Total bytes of code 267, prolog size 15, PerfScore 68.58, instruction count 95, allocated bytes for code 267 (MethodHash=21d5a66a) for method System.Runtime.InteropServices.MemoryMarshal:TryGetArray[double](System.ReadOnlyMemory`1[double],byref):bool ; ============================================================
Trouver la différence