Diff
checker
Text
Text
Bilder
Dokumente
Excel
Ordner
Legal
Enterprise
Desktop-App
Preise
Einloggen
Diffchecker Desktop herunterladen
Texte vergleichen
Finde den Unterschied zwischen zwei Textdateien
Werkzeuge
Verlauf
Live-Editor
Gleiches ausblenden
Zeilenumbruch aus
Ansicht
Zweispaltig
Einspaltig
Vergleichsgenauigkeit
Intelligent
Wort
Zeichen
Syntaxhervorhebung
Syntax auswählen
Ignorieren
Text umwandeln
Zur ersten Änderung
Eingabe bearbeiten
Diffchecker Desktop
Der sicherste Weg, Diffchecker zu nutzen. Hol dir die Desktop-App: Deine Diffs verlassen nie deinen Computer!
Desktop holen
Untitled Diff
Erstellt
vor 3 Jahren
Diff läuft nie ab
Löschen
Exportieren
Teilen
Erklären
66 Entfernungen
Zeilen
Gesamt
Entfernt
Zeichen
Gesamt
Entfernt
Um diese Funktion weiterhin zu nutzen, aktualisiere auf
Diff
checker
Pro
Preise anzeigen
155 Zeilen
Kopieren
76 Hinzufügungen
Zeilen
Gesamt
Hinzugefügt
Zeichen
Gesamt
Hinzugefügt
Um diese Funktion weiterhin zu nutzen, aktualisiere auf
Diff
checker
Pro
Preise anzeigen
164 Zeilen
Kopieren
; 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
Kopieren
Kopiert
Kopieren
Kopiert
; 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
Kopieren
Kopiert
Kopieren
Kopiert
; 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
Kopieren
Kopiert
Kopieren
Kopiert
; 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
Kopieren
Kopiert
Kopieren
Kopiert
; 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"
Kopieren
Kopiert
Kopieren
Kopiert
; 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"
Kopieren
Kopiert
Kopieren
Kopiert
; 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)"
Kopieren
Kopiert
Kopieren
Kopiert
; 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)"
Kopieren
Kopiert
Kopieren
Kopiert
; 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)"
Kopieren
Kopiert
Kopieren
Kopiert
; 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"
;
;
Kopieren
Kopiert
Kopieren
Kopiert
; Lcl frame size =
48
; Lcl frame size =
56
G_M22933_IG01:
G_M22933_IG01:
push rdi
push rdi
push rsi
push rsi
Kopieren
Kopiert
Kopieren
Kopiert
push rbp
push rbx
push rbx
Kopieren
Kopiert
Kopieren
Kopiert
sub rsp,
48
sub rsp,
56
xor eax, eax
xor eax, eax
Kopieren
Kopiert
Kopieren
Kopiert
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:
Kopieren
Kopiert
Kopieren
Kopiert
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
Kopieren
Kopiert
Kopieren
Kopiert
and e
d
i, 0xD1FFAB1E
and e
s
i, 0xD1FFAB1E
mov edx, dword ptr [rcx+08H]
mov edx, dword ptr [rcx+08H]
Kopieren
Kopiert
Kopieren
Kopiert
cmp edx, e
d
i
cmp edx, e
s
i
jb G_M22933_IG11
jb G_M22933_IG11
Kopieren
Kopiert
Kopieren
Kopiert
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
Kopieren
Kopiert
Kopieren
Kopiert
mov rcx, r
s
i
mov rcx, r
d
i
call CORINFO_HELP_CHECKED_ASSIGN_REF
call CORINFO_HELP_CHECKED_ASSIGN_REF
Kopieren
Kopiert
Kopieren
Kopiert
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:
Kopieren
Kopiert
Kopieren
Kopiert
add rsp,
48
add rsp,
56
pop rbx
pop rbx
Kopieren
Kopiert
Kopieren
Kopiert
pop rbp
pop rsi
pop rsi
pop rdi
pop rdi
ret
ret
Kopieren
Kopiert
Kopieren
Kopiert
;; size=
8
bbWeight=0.50 PerfScore 1.
38
;; size=
9
bbWeight=0.50 PerfScore 1.
62
G_M22933_IG05:
G_M22933_IG05:
Kopieren
Kopiert
Kopieren
Kopiert
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
Kopieren
Kopiert
Kopieren
Kopiert
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]
Kopieren
Kopiert
Kopieren
Kopiert
cmp edx,
edi
cmp edx,
ebp
jb SHORT G_M22933_IG12
jb SHORT G_M22933_IG12
Kopieren
Kopiert
Kopieren
Kopiert
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
Kopieren
Kopiert
Kopieren
Kopiert
mov rcx, r
s
i
mov rcx, r
d
i
call CORINFO_HELP_CHECKED_ASSIGN_REF
call CORINFO_HELP_CHECKED_ASSIGN_REF
Kopieren
Kopiert
Kopieren
Kopiert
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
Kopieren
Kopiert
Kopieren
Kopiert
;; size=
67
bbWeight=0.50 PerfScore 10.
75
;; size=
69
bbWeight=0.50 PerfScore 10.
88
G_M22933_IG06:
G_M22933_IG06:
Kopieren
Kopiert
Kopieren
Kopiert
add rsp,
48
add rsp,
56
pop rbx
pop rbx
Kopieren
Kopiert
Kopieren
Kopiert
pop rbp
pop rsi
pop rsi
pop rdi
pop rdi
ret
ret
Kopieren
Kopiert
Kopieren
Kopiert
;; 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
Kopieren
Kopiert
Kopieren
Kopiert
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
Kopieren
Kopiert
Kopieren
Kopiert
;; size=
18
bbWeight=0.50 PerfScore
2.38
;; size=
33
bbWeight=0.50 PerfScore
3.00
G_M22933_IG08:
G_M22933_IG08:
Kopieren
Kopiert
Kopieren
Kopiert
add rsp,
48
add rsp,
56
pop rbx
pop rbx
Kopieren
Kopiert
Kopieren
Kopiert
pop rbp
pop rsi
pop rsi
pop rdi
pop rdi
ret
ret
Kopieren
Kopiert
Kopieren
Kopiert
;; 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
Kopieren
Kopiert
Kopieren
Kopiert
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:
Kopieren
Kopiert
Kopieren
Kopiert
add rsp,
48
add rsp,
56
pop rbx
pop rbx
Kopieren
Kopiert
Kopieren
Kopiert
pop rbp
pop rsi
pop rsi
pop rdi
pop rdi
ret
ret
Kopieren
Kopiert
Kopieren
Kopiert
;; size=
8
bbWeight=0.50 PerfScore 1.
38
;; size=
9
bbWeight=0.50 PerfScore 1.
62
G_M22933_IG11:
G_M22933_IG11:
Kopieren
Kopiert
Kopieren
Kopiert
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:
Kopieren
Kopiert
Kopieren
Kopiert
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
Kopieren
Kopiert
Kopieren
Kopiert
; 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
; ============================================================
; ============================================================
Gespeicherte Diffs
Originaltext
Datei öffnen
; 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 ; ============================================================
Bearbeitung
Datei öffnen
; 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 ; ============================================================
Unterschied finden