Diff
checker
Text
Text
Images
Documents
Excel
Folders
Legal
Enterprise
Desktop
Pricing
Sign in
Download Diffchecker Desktop
Compare text
Find the difference between two text files
Tools
History
Real-time editor
Hide unchanged lines
Disable line wrap
Layout
Split
Unified
Diff precision
Smart
Word
Char
Syntax highlighting
Choose syntax
Ignore
Transform text
Go to first change
Edit input
Diffchecker Desktop
The most secure way to run Diffchecker. Get the Diffchecker Desktop app: your diffs never leave your computer!
Get Desktop
GH-91945
Created
3 years ago
Diff never expires
Clear
Export
Share
Explain
478 removals
Lines
Total
Removed
Characters
Total
Removed
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
473 lines
Copy
337 additions
Lines
Total
Added
Characters
Total
Added
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
339 lines
Copy
; Assembly listing for method System.Data.Common.ObjectStorage:Set(int,System.Object):this (FullOpts)
; Assembly listing for method System.Data.Common.ObjectStorage:Set(int,System.Object):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; FullOpts code
; optimized code
; optimized code
; rbp based frame
; rbp based frame
; partially interruptible
; partially interruptible
; No PGO data
; No PGO data
; 0 inlinees with PGO data; 11 single block inlinees; 2 inlinees without PGO data
; 0 inlinees with PGO data; 11 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
; Final local variable assignments
;
;
Copy
Copied
Copy
Copied
; V00 this [V00,T0
1
] (
19, 11
) ref ->
r15
this class-hnd single-def <System.Data.Common.ObjectStorage>
; V00 this [V00,T0
0
] (
18, 10.50
) ref ->
rbx
this class-hnd single-def <System.Data.Common.ObjectStorage>
; V01 arg1 [V01,T02] ( 16, 9 ) int -> r14 single-def
; V01 arg1 [V01,T02] ( 16, 9 ) int -> r14 single-def
Copy
Copied
Copy
Copied
; V02 arg2 [V02,T0
0
] (
38, 17
.50) ref ->
rbx
class-hnd single-def <System.Object>
; V02 arg2 [V02,T0
1
] (
18, 10
.50) ref ->
r15
class-hnd single-def <System.Object>
; V03 loc0 [V03,T03] ( 12, 6 ) ref -> rax class-hnd exact single-def <System.RuntimeType>
;# V0
3
OutArgs [V0
3
] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;# V0
4
OutArgs [V0
4
] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V0
4
tmp1 [V0
4
,T0
8
] ( 2, 2 ) ref ->
rbx
class-hnd single-def "impAppendStmt" <System.Object[]>
; V0
5
tmp1 [V0
5
,T0
9
] ( 2, 2 ) ref ->
r15
class-hnd single-def "impAppendStmt" <System.Object[]>
; V0
5
tmp2 [V0
5,T09
] ( 2, 2 ) ref -> r1
2
class-hnd single-def "impAppendStmt" <System.Object[]>
; V0
6
tmp2 [V0
6,T10
] ( 2, 2 ) ref -> r1
5
class-hnd single-def "impAppendStmt" <System.Object[]>
; V0
6
tmp3 [V0
6
,T1
0
] ( 2, 2 ) ref -> r1
2
class-hnd single-def "impAppendStmt" <System.Object[]>
; V0
7
tmp3 [V0
7
,T1
1
] ( 2, 2 ) ref -> r1
5
class-hnd single-def "impAppendStmt" <System.Object[]>
; V0
7
tmp4 [V0
7
,T1
1
] ( 2, 2 ) ref -> r1
2
class-hnd single-def "impAppendStmt" <System.Object[]>
; V0
8
tmp4 [V0
8
,T1
2
] ( 2, 2 ) ref -> r1
5
class-hnd single-def "impAppendStmt" <System.Object[]>
; V0
8
tmp5 [V0
8
,T1
2
] ( 2, 2 ) ref -> r1
2
class-hnd single-def "impAppendStmt" <System.Object[]>
; V0
9
tmp5 [V0
9
,T1
3
] ( 2, 2 ) ref -> r1
5
class-hnd single-def "impAppendStmt" <System.Object[]>
; V
09
tmp6 [V
09
,T1
3
] ( 2, 2 ) ref -> r1
2
class-hnd single-def "impAppendStmt" <System.Object[]>
; V
10
tmp6 [V
10
,T1
4
] ( 2, 2 ) ref -> r1
5
class-hnd single-def "impAppendStmt" <System.Object[]>
; V1
0
tmp7 [V1
0
,T1
4
] ( 2, 2 ) ref -> r1
2
class-hnd single-def "impAppendStmt" <System.Object[]>
; V1
1
tmp7 [V1
1
,T1
5
] ( 2, 2 ) ref -> r1
5
class-hnd single-def "impAppendStmt" <System.Object[]>
; V1
1
tmp8 [V1
1
,T1
5
] ( 2, 2 ) ref -> r1
2
class-hnd single-def "impAppendStmt" <System.Object[]>
; V1
2
tmp8 [V1
2
,T1
6
] ( 2, 2 ) ref -> r1
5
class-hnd single-def "impAppendStmt" <System.Object[]>
; V1
2
tmp9 [V1
2
,T1
6
] ( 2, 2 ) ref -> r1
2
class-hnd single-def "impAppendStmt" <System.Object[]>
; V1
3
tmp9 [V1
3
,T1
7
] ( 2, 2 ) ref -> r1
5
class-hnd single-def "impAppendStmt" <System.Object[]>
; V1
3
tmp10 [V1
3
,T1
7
] ( 2, 2 ) ref -> r1
2
class-hnd single-def "impAppendStmt" <System.Object[]>
; V1
4
tmp10 [V1
4
,T1
8
] ( 2, 2 ) ref -> r1
5
class-hnd single-def "impAppendStmt" <System.Object[]>
; V1
4
tmp11 [V1
4
,T1
8
] ( 2, 2 ) ref -> r1
3
class-hnd single-def "bubbling QMark2" <System.Object[]>
; V1
5
tmp11 [V1
5
,T1
9
] ( 2, 2 ) ref -> r1
5
class-hnd single-def "bubbling QMark2" <System.Object[]>
;
*
V1
5
tmp12 [V1
5,T43
] (
0
,
0
) long ->
zero-ref
"fgMakeTemp is creating a new local variable"
;
V1
6
tmp12 [V1
6,T08
] (
3
,
2
) long ->
rcx
"fgMakeTemp is creating a new local variable"
; V1
6
tmp13 [V1
6
,T04] (
3
,
3
) ref ->
r15
class-hnd "spilling QMark2" <System.String>
; V1
7
tmp13 [V1
7
,T04] (
4
,
4
) ref ->
rdi
class-hnd "spilling QMark2" <System.String>
; V1
7
tmp14 [V1
7
,T2
4
] ( 2, 2 ) struct (16) [rbp-0x
3
8] ld-addr-op spill-single-def "NewObj constructor temp" <System.Guid>
; V1
8
tmp14 [V1
8
,T2
5
] ( 2, 2 ) struct (16) [rbp-0x
2
8] ld-addr-op spill-single-def "NewObj constructor temp" <System.Guid>
; V1
8
tmp15 [V1
8
,T05] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Guid>
; V1
9
tmp15 [V1
9
,T05] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Guid>
;
V19
tmp16 [
V19
] ( 4, 2 ) struct (24) [rbp-0x
5
0] do-not-enreg[XSF] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Guid+GuidResult>
;
V20
tmp16 [
V20
] ( 4, 2 ) struct (24) [rbp-0x
4
0] do-not-enreg[XSF] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Guid+GuidResult>
;* V2
0
tmp17 [V2
0
] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V2
1
tmp17 [V2
1
] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V2
1
tmp18 [V2
1
] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V2
2
tmp18 [V2
2
] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V2
2
tmp19 [V2
2
] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V2
3
tmp19 [V2
3
] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V2
3
tmp20 [V2
3
] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V2
4
tmp20 [V2
4
] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V2
4
tmp21 [V2
4
] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
;* V2
5
tmp21 [V2
5
] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V2
5
tmp22 [V2
5,T19
] ( 2, 2 ) byref -> r
d
i single-def "Inlining Arg"
; V2
6
tmp22 [V2
6,T20
] ( 2, 2 ) byref -> r
s
i single-def "Inlining Arg"
; V2
6
tmp23 [V2
6
,T2
5
] ( 2, 2 ) int -> r
s
i "Inlining Arg"
; V2
7
tmp23 [V2
7
,T2
6
] ( 2, 2 ) int -> r
d
i "Inlining Arg"
;* V2
7
tmp24 [V2
7
] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
;* V2
8
tmp24 [V2
8
] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
; V2
8
tmp25 [V2
8
,T3
1
] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V2
9
tmp25 [V2
9
,T3
2
] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
;
V29
tmp26 [
V29
,T2
6
] ( 2, 2 ) ushort -> rbx "Inlining Arg"
;
V30
tmp26 [
V30
,T2
7
] ( 2, 2 ) ushort -> rbx "Inlining Arg"
;* V3
0
tmp27 [V3
0
] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
;* V3
1
tmp27 [V3
1
] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
; V3
1
tmp28 [V3
1
,T3
2
] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V3
2
tmp28 [V3
2
,T3
3
] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V3
2
tmp29 [V3
2
,T2
7
] ( 2, 2 ) short -> rbx "Inlining Arg"
; V3
3
tmp29 [V3
3
,T2
8
] ( 2, 2 ) short -> rbx "Inlining Arg"
;* V3
3
tmp30 [V3
3
] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
;* V3
4
tmp30 [V3
4
] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
; V3
4
tmp31 [V3
4
,T3
3
] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V3
5
tmp31 [V3
5
,T3
4
] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V3
5
tmp32 [V3
5
,T2
8
] ( 2, 2 ) int -> rbx "Inlining Arg"
; V3
6
tmp32 [V3
6
,T2
9
] ( 2, 2 ) int -> rbx "Inlining Arg"
;* V3
6
tmp33 [V3
6
] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
;* V3
7
tmp33 [V3
7
] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
; V3
7
tmp34 [V3
7
,T3
4
] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V3
8
tmp34 [V3
8
,T3
5
] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V3
8
tmp35 [V3
8,T29
] ( 2, 2 ) ushort -> rbx "Inlining Arg"
; V3
9
tmp35 [V3
9,T30
] ( 2, 2 ) ushort -> rbx "Inlining Arg"
;*
V39
tmp36 [
V39
] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
;*
V40
tmp36 [
V40
] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
; V4
0
tmp37 [V4
0
,T3
5
] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V4
1
tmp37 [V4
1
,T3
6
] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V4
1
tmp38 [V4
1
,T3
0
] ( 2, 2 ) int -> rbx "Inlining Arg"
; V4
2
tmp38 [V4
2
,T3
1
] ( 2, 2 ) int -> rbx "Inlining Arg"
;* V4
2
tmp39 [V4
2
] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
;* V4
3
tmp39 [V4
3
] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]>
; V4
3
tmp40 [V4
3
,T3
6
] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V4
4
tmp40 [V4
4
,T3
7
] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]>
; V4
4
tmp41 [V4
4
,T4
4
] ( 2, 2 ) float -> [rbp-0x
5
4] spill-single-def "Inlining Arg"
; V4
5
tmp41 [V4
5
,T4
3
] ( 2, 2 ) float -> [rbp-0x
4
4] spill-single-def "Inlining Arg"
;* V4
5
tmp42 [V4
5
] ( 0, 0 ) byref -> zero-ref "field V2
0
._reference (fldOffset=0x0)" P-INDEP
;* V4
6
tmp42 [V4
6
] ( 0, 0 ) byref -> zero-ref "field V2
1
._reference (fldOffset=0x0)" P-INDEP
;* V4
6
tmp43 [V4
6
] ( 0, 0 ) int -> zero-ref "field V2
0
._length (fldOffset=0x8)" P-INDEP
;* V4
7
tmp43 [V4
7
] ( 0, 0 ) int -> zero-ref "field V2
1
._length (fldOffset=0x8)" P-INDEP
; V4
7
tmp44 [V4
7
,T39] ( 2, 1 ) byref -> r
d
i "field V2
2
._reference (fldOffset=0x0)" P-INDEP
; V4
8
tmp44 [V4
8
,T39] ( 2, 1 ) byref -> r
s
i "field V2
3
._reference (fldOffset=0x0)" P-INDEP
; V4
8
tmp45 [V4
8
,T41] ( 2, 1 ) int ->
rsi
"field V2
2
._length (fldOffset=0x8)" P-INDEP
; V4
9
tmp45 [V4
9
,T41] ( 2, 1 ) int ->
[rbp-0x48] spill-single-def
"field V2
3
._length (fldOffset=0x8)" P-INDEP
;
V49
tmp46 [
V49
,T40] ( 2, 1 ) byref -> r
d
i single-def "field V2
3
._reference (fldOffset=0x0)" P-INDEP
;
V50
tmp46 [
V50
,T40] ( 2, 1 ) byref -> r
s
i single-def "field V2
4
._reference (fldOffset=0x0)" P-INDEP
; V5
0
tmp47 [V5
0
,T42] ( 2, 1 ) int -> r
s
i "field V2
3
._length (fldOffset=0x8)" P-INDEP
; V5
1
tmp47 [V5
1
,T42] ( 2, 1 ) int -> r
d
i "field V2
4
._length (fldOffset=0x8)" P-INDEP
;* V5
1
tmp48 [V5
1
] ( 0, 0 ) byref -> zero-ref single-def "field V2
4
._reference (fldOffset=0x0)" P-INDEP
;* V5
2
tmp48 [V5
2
] ( 0, 0 ) byref -> zero-ref single-def "field V2
5
._reference (fldOffset=0x0)" P-INDEP
;* V5
2
tmp49 [V5
2
] ( 0, 0 ) int -> zero-ref "field V2
4
._length (fldOffset=0x8)" P-INDEP
;* V5
3
tmp49 [V5
3
] ( 0, 0 ) int -> zero-ref "field V2
5
._length (fldOffset=0x8)" P-INDEP
; V5
3
tmp50 [V5
3
,T06] ( 3, 3 ) ref -> rdi single-def "arr expr"
; V5
4
tmp50 [V5
4
,T06] ( 3, 3 ) ref -> rdi single-def "arr expr"
; V5
4
tmp51 [V5
4
,T07] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
; V5
5
tmp51 [V5
5
,T07] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
; V5
5
tmp52 [V5
5
,T2
0
] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V5
6
tmp52 [V5
6
,T2
1
] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V5
6
tmp53 [V5
6
,T2
1
] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V5
7
tmp53 [V5
7
,T2
2
] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V5
7
tmp54 [V5
7
,T2
2
] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V5
8
tmp54 [V5
8
,T2
3
] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V5
8
tmp55 [V5
8
,T2
3
] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V5
9
tmp55 [V5
9
,T2
4
] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V59 cse0 [V59,T37] ( 3, 1.50) ref -> rdi "CSE - conservative"
; V60 cse0
[V60,T38] ( 3, 1.50) ref ->
rdi
"CSE - conservative"
; V60 cse1
[V60,T38] ( 3, 1.50) ref ->
r13
"CSE - conservative"
; V61 cse2 [V61,T03] ( 13, 6.50) long -> r12 "CSE - aggressive"
;
;
; Lcl frame size = 56
; Lcl frame size = 56
G_M32004_IG01:
G_M32004_IG01:
push rbp
push rbp
push r15
push r15
push r14
push r14
Copy
Copied
Copy
Copied
push r13
push r12
push rbx
push rbx
sub rsp, 56
sub rsp, 56
vzeroupper
vzeroupper
Copy
Copied
Copy
Copied
lea rbp, [rsp+0x
5
0]
lea rbp, [rsp+0x
6
0]
mov
r15
, rdi
mov
rbx
, rdi
mov r14d, esi
mov r14d, esi
Copy
Copied
Copy
Copied
mov
rbx
, rdx
mov
r15
, rdx
;; size=
27
bbWeight=1 PerfScore
6
.50
;; size=
31
bbWeight=1 PerfScore
8
.50
G_M32004_IG02:
G_M32004_IG02:
Copy
Copied
Copy
Copied
cmp gword ptr [
r15
+0x30],
rbx
cmp gword ptr [
rbx
+0x30],
r15
jne SHORT G_M32004_IG04
jne SHORT G_M32004_IG04
;; size=6 bbWeight=1 PerfScore 4.00
;; size=6 bbWeight=1 PerfScore 4.00
G_M32004_IG03:
G_M32004_IG03:
Copy
Copied
Copy
Copied
mov rdi, gword ptr [
r15
+0x40]
mov rdi, gword ptr [
rbx
+0x40]
cmp r14d, dword ptr [rdi+0x08]
cmp r14d, dword ptr [rdi+0x08]
Copy
Copied
Copy
Copied
jae G_M32004_IG
42
jae G_M32004_IG
20
mov esi, r14d
mov esi, r14d
xor rax, rax
xor rax, rax
mov gword ptr [rdi+8*rsi+0x10], rax
mov gword ptr [rdi+8*rsi+0x10], rax
Copy
Copied
Copy
Copied
jmp G_M32004_IG
3
7
jmp G_M32004_IG
1
7
;; size=29 bbWeight=0.50 PerfScore 4.75
;; size=29 bbWeight=0.50 PerfScore 4.75
G_M32004_IG04:
G_M32004_IG04:
Copy
Copied
Copy
Copied
mov rdi, gword ptr [
r15
+0x18]
mov rdi, gword ptr [
rbx
+0x18]
mov rsi, 0xD1FFAB1E ; 'System.Object'
mov rsi, 0xD1FFAB1E ; 'System.Object'
cmp rdi, rsi
cmp rdi, rsi
je SHORT G_M32004_IG05
je SHORT G_M32004_IG05
Copy
Copied
Copy
Copied
mov rsi,
rbx
mov rsi,
r15
mov rax, qword ptr [rdi]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0xA0]
mov rax, qword ptr [rax+0xA0]
call [rax+0x08]System.Type:IsInstanceOfType(System.Object):ubyte:this
call [rax+0x08]System.Type:IsInstanceOfType(System.Object):ubyte:this
test eax, eax
test eax, eax
je SHORT G_M32004_IG06
je SHORT G_M32004_IG06
;; size=39 bbWeight=0.50 PerfScore 6.00
;; size=39 bbWeight=0.50 PerfScore 6.00
G_M32004_IG05:
G_M32004_IG05:
Copy
Copied
Copy
Copied
mov rdi, gword ptr [
r15
+0x40]
mov rdi, gword ptr [
rbx
+0x40]
movsxd rsi, r14d
movsxd rsi, r14d
Copy
Copied
Copy
Copied
mov rdx,
rbx
mov rdx,
r15
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
Copy
Copied
Copy
Copied
jmp G_M32004_IG
3
7
jmp G_M32004_IG
1
7
;; size=20 bbWeight=0.50 PerfScore 2.75
;; size=20 bbWeight=0.50 PerfScore 2.75
G_M32004_IG06:
G_M32004_IG06:
Copy
Copied
Copy
Copied
mov
rdi,
rbx
mov
r13, gword ptr [
rbx
+0x18]
call System.Object:GetType():System.Type:this
mov rdi, 0xD1FFAB1E ; 'System.Guid'
mov rdi, 0xD1FFAB1E ; 'System.Guid'
Copy
Copied
Copy
Copied
cmp gword ptr [r15+0x18], rdi
cmp r13
, rdi
jne G_M32004_IG07
jne
SHORT
G_M32004_IG07
mov rdi, 0xD1FFAB1E ; 'System.String'
mov r1
2, q
word ptr [r15
]
mov rdi,
0xD1FFAB1E ; System.String
cmp rax
, rdi
cmp
r12,
rdi
jne
G_M32004_IG07
jne
SHORT
G_M32004_
IG07
mov r1
5, g
word ptr [r15
+0x40
]
mov r13, gword ptr [rbx+0x40]
mov rdi,
rbx
mov rcx,
0xD1FFAB1E ; System.String
cmp
qword ptr [
rdi
], rcx
jne
G_M32004_
IG39
vxorps xmm0, xmm0, xmm0
vxorps xmm0, xmm0, xmm0
Copy
Copied
Copy
Copied
vmovdqu xmmword ptr [rbp-0x
4
0], xmm0
vmovdqu xmmword ptr [rbp-0x
5
0], xmm0
vmovdqu xmmword ptr [rbp-0x
3
C], xmm0
vmovdqu xmmword ptr [rbp-0x
4
C], xmm0
mov byte ptr [rbp-0x
3
0], 1
mov byte ptr [rbp-0x
4
0], 1
lea r
s
i, bword ptr [
rdi
+0x0C]
lea r
d
i, bword ptr [
r15
+0x0C]
mov e
d
i, dword ptr [
rdi
+0x08]
mov e
s
i, dword ptr [
r15
+0x08]
mov dword ptr [rbp-0x48], edi
lea rdx, [rbp-0x
5
0]
mov rdi, rsi
mov esi, dword ptr [rbp-0x48]
lea rdx, [rbp-0x
4
0]
mov rax, 0xD1FFAB1E ; code for System.Guid:TryParseGuid(System.ReadOnlySpan`1[ushort],byref):ubyte
mov rax, 0xD1FFAB1E ; code for System.Guid:TryParseGuid(System.ReadOnlySpan`1[ushort],byref):ubyte
call [rax]System.Guid:TryParseGuid(System.ReadOnlySpan`1[ushort],byref):ubyte
call [rax]System.Guid:TryParseGuid(System.ReadOnlySpan`1[ushort],byref):ubyte
Copy
Copied
Copy
Copied
vmovups xmm0, xmmword ptr [rbp-0x
4
0]
vmovups xmm0, xmmword ptr [rbp-0x
5
0]
vmovups xmmword ptr [rbp-0x
2
8], xmm0
vmovups xmmword ptr [rbp-0x
3
8], xmm0
mov rdi, 0xD1FFAB1E ; System.Guid
mov rdi, 0xD1FFAB1E ; System.Guid
call CORINFO_HELP_NEWSFAST
call CORINFO_HELP_NEWSFAST
Copy
Copied
Copy
Copied
vmovups xmm0, xmmword ptr [rbp-0x
2
8]
vmovups xmm0, xmmword ptr [rbp-0x
3
8]
vmovups xmmword ptr [rax+0x08], xmm0
vmovups xmmword ptr [rax+0x08], xmm0
mov rdx, rax
mov rdx, rax
movsxd rsi, r14d
movsxd rsi, r14d
Copy
Copied
Copy
Copied
mov rdi, r1
5
mov rdi, r1
3
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
Copy
Copied
Copy
Copied
jmp G_M32004_IG
3
7
jmp G_M32004_IG
1
7
;; size=1
7
7 bbWeight=0.50 PerfScore
19.67
;; size=1
3
7 bbWeight=0.50 PerfScore
16.29
G_M32004_IG07:
G_M32004_IG07:
Copy
Copied
Copy
Copied
mov r
s
i, 0xD1FFAB1E ; 'System.Byte[]'
mov r
d
i, 0xD1FFAB1E ; 'System.Byte[]'
cmp gword ptr [r15+0x18], rsi
jne G_M32004_IG41
mov rsi, 0xD1FFAB1E ; 'System.Boolean'
Copy
Copied
Copy
Copied
cmp
rax
, r
s
i
cmp
r13
, r
d
i
jne
SHORT
G_M32004_IG1
0
jne
G_M32004_IG1
9
mov r1
5, g
word ptr [r15
+0x40]
mov r1
2, q
word ptr [r15
]
mov rsi, 0xD1FFAB1E ; System.Boolean
cmp qword ptr [rbx], rsi
je SHORT G_M32004_IG09
;; size=54 bbWeight=0.50 PerfScore 6.00
G_M32004_IG08:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Boolean
mov rdi, 0xD1FFAB1E ; System.Boolean
Copy
Copied
Copy
Copied
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
cmp r12, rdi
call [rax]CORINFO_HELP_UNBOX
jne SHORT G_M32004_IG08
;; size=25 bbWeight=0.25 PerfScore 0.94
mov r12, gword ptr [rbx+0x40]
G_M32004_IG09:
movzx rdi, byte ptr [
r15
+0x08]
movzx rdi, byte ptr [
rbx
+0x08]
mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(ubyte):ubyte[]
mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(ubyte):ubyte[]
call [rax]System.BitConverter:GetBytes(ubyte):ubyte[]
call [rax]System.BitConverter:GetBytes(ubyte):ubyte[]
mov rdx, rax
mov rdx, rax
movsxd rsi, r14d
movsxd rsi, r14d
Copy
Copied
Copy
Copied
mov rdi, r1
5
mov rdi, r1
2
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
Copy
Copied
Copy
Copied
jmp G_M32004_IG
3
7
jmp G_M32004_IG
1
7
;; size=
36
bbWeight=0.50 PerfScore
4.50
;; size=
77
bbWeight=0.50 PerfScore
8.00
G_M32004_
IG10:
G_M32004_
IG08:
mov rsi, 0xD1FFAB1E ; 'System.Char'
cmp rax, rsi
jne SHORT G_M32004_IG13
mov r15, gword ptr [r15+0x40]
mov rsi, 0xD1FFAB1E ; System.Char
cmp qword ptr [rbx], rsi
je SHORT G_M32004_IG12
;; size=34 bbWeight=0.50 PerfScore 3.88
G_M32004_IG11:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Char
mov rdi, 0xD1FFAB1E ; System.Char
Copy
Copied
Copy
Copied
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
cmp r12, rdi
call [rax]CORINFO_HELP_UNBOX
jne SHORT G_M32004_IG09
;; size=25 bbWeight=0.25 PerfScore 0.94
mov r12, gword ptr [rbx+0x40]
G_M32004_IG12:
movzx rbx, word ptr [
r15
+0x08]
movzx rbx, word ptr [
rbx
+0x08]
mov rdi, 0xD1FFAB1E ; ubyte[]
mov rdi, 0xD1FFAB1E ; ubyte[]
mov esi, 2
mov esi, 2
call CORINFO_HELP_NEWARR_1_VC
call CORINFO_HELP_NEWARR_1_VC
mov word ptr [rax+0x10], bx
mov word ptr [rax+0x10], bx
movsxd rsi, r14d
movsxd rsi, r14d
Copy
Copied
Copy
Copied
mov rdi, r1
5
mov rdi, r1
2
mov rdx, rax
mov rdx, rax
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
Copy
Copied
Copy
Copied
jmp G_M32004_IG
3
7
jmp G_M32004_IG
1
7
;; size=
47
bbWeight=0.50 PerfScore
4.12
;; size=
67
bbWeight=0.50 PerfScore
5.88
G_M32004_IG13:
G_M32004_
IG09:
mov rsi, 0xD1FFAB1E ; 'System.Int16'
cmp rax, rsi
jne SHORT G_M32004_IG16
mov r15, gword ptr [r15+0x40]
mov rsi, 0xD1FFAB1E ; System.Int16
cmp qword ptr [rbx], rsi
je SHORT G_M32004_IG15
;; size=34 bbWeight=0.50 PerfScore 3.88
G_M32004_
IG14:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Int16
mov rdi, 0xD1FFAB1E ; System.Int16
Copy
Copied
Copy
Copied
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
cmp r12, rdi
call [rax]CORINFO_HELP_UNBOX
jne SHORT G_M32004_IG10
;; size=25 bbWeight=0.25 PerfScore 0.94
mov r12, gword ptr [rbx+0x40]
G_M32004_IG15:
movsx rbx, word ptr [
r15
+0x08]
movsx rbx, word ptr [
rbx
+0x08]
mov rdi, 0xD1FFAB1E ; ubyte[]
mov rdi, 0xD1FFAB1E ; ubyte[]
mov esi, 2
mov esi, 2
call CORINFO_HELP_NEWARR_1_VC
call CORINFO_HELP_NEWARR_1_VC
mov word ptr [rax+0x10], bx
mov word ptr [rax+0x10], bx
movsxd rsi, r14d
movsxd rsi, r14d
Copy
Copied
Copy
Copied
mov rdi, r1
5
mov rdi, r1
2
mov rdx, rax
mov rdx, rax
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
Copy
Copied
Copy
Copied
jmp G_M32004_IG
3
7
jmp G_M32004_IG
1
7
;; size=
48 bbWeight=0.50 PerfScore 5.12
;; size=
67
bbWeight=0.50 PerfScore
6
.88
G_M32004_IG16:
G_M32004_IG1
0:
mov rsi, 0xD1FFAB1E ; 'System.Int32'
cmp rax, rsi
jne SHORT G_M32004_IG19
mov r15, gword ptr [r15+0x40]
mov rsi, 0xD1FFAB1E ; System.Int32
cmp qword ptr [rbx], rsi
je SHORT G_M32004_IG18
;; size=34
bbWeight=0.50 PerfScore
3
.88
G_M32004_IG1
7:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Int32
mov rdi, 0xD1FFAB1E ; System.Int32
Copy
Copied
Copy
Copied
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
cmp r12, rdi
call [rax]CORINFO_HELP_UNBOX
jne SHORT G_M32004_IG11
;; size=25 bbWeight=0.25 PerfScore 0.94
mov r12, gword ptr [rbx+0x40]
G_M32004_IG18:
mov ebx, dword ptr [
r15
+0x08]
mov ebx, dword ptr [
rbx
+0x08]
mov rdi, 0xD1FFAB1E ; ubyte[]
mov rdi, 0xD1FFAB1E ; ubyte[]
mov esi, 4
mov esi, 4
call CORINFO_HELP_NEWARR_1_VC
call CORINFO_HELP_NEWARR_1_VC
mov dword ptr [rax+0x10], ebx
mov dword ptr [rax+0x10], ebx
movsxd rsi, r14d
movsxd rsi, r14d
Copy
Copied
Copy
Copied
mov rdi, r1
5
mov rdi, r1
2
mov rdx, rax
mov rdx, rax
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
Copy
Copied
Copy
Copied
jmp G_M32004_IG
3
7
jmp G_M32004_IG
1
7
;; size=
45
bbWeight=0.50 PerfScore
4.12
;; size=
65
bbWeight=0.50 PerfScore
5.88
G_M32004_IG19:
G_M32004_
IG11:
mov rsi, 0xD1FFAB1E ; 'System.Int64'
cmp rax, rsi
jne SHORT G_M32004_IG22
mov r15, gword ptr [r15+0x40]
mov rsi, 0xD1FFAB1E ; System.Int64
cmp qword ptr [rbx], rsi
je SHORT G_M32004_IG21
;; size=34 bbWeight=0.50 PerfScore 3.88
G_M32004_
IG20:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Int64
mov rdi, 0xD1FFAB1E ; System.Int64
Copy
Copied
Copy
Copied
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
cmp r12, rdi
call [rax]CORINFO_HELP_UNBOX
jne SHORT G_M32004_IG12
;; size=25 bbWeight=0.25 PerfScore 0.94
mov r12, gword ptr [rbx+0x40]
G_M32004_IG21:
mov rdi, qword ptr [
r15
+0x08]
mov rdi, qword ptr [
rbx
+0x08]
mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(long):ubyte[]
mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(long):ubyte[]
call [rax]System.BitConverter:GetBytes(long):ubyte[]
call [rax]System.BitConverter:GetBytes(long):ubyte[]
mov rdx, rax
mov rdx, rax
movsxd rsi, r14d
movsxd rsi, r14d
Copy
Copied
Copy
Copied
mov rdi, r1
5
mov rdi, r1
2
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
Copy
Copied
Copy
Copied
jmp G_M32004_IG
3
7
jmp G_M32004_IG
1
7
;; size=
35 bbWeight=0.50 PerfScore 4.50
;; size=
54
bbWeight=0.50 PerfScore
6.25
G_M32004_IG22:
G_M32004_IG
12:
mov rsi, 0xD1FFAB1E ; 'System.UInt16'
cmp rax, rsi
jne SHORT G_M32004_IG25
mov r15, gword ptr [r15+0x40]
mov rsi, 0xD1FFAB1E ; System.UInt16
cmp qword ptr [rbx], rsi
je SHORT G_M32004_IG24
;; size=34
bbWeight=0.50 PerfScore
3.88
G_M32004_IG
23:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.UInt16
mov rdi, 0xD1FFAB1E ; System.UInt16
Copy
Copied
Copy
Copied
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
cmp r12, rdi
call [rax]CORINFO_HELP_UNBOX
jne SHORT G_M32004_IG13
;; size=25 bbWeight=0.25 PerfScore 0.94
mov r12, gword ptr [rbx+0x40]
G_M32004_IG24:
movzx rbx, word ptr [
r15
+0x08]
movzx rbx, word ptr [
rbx
+0x08]
mov rdi, 0xD1FFAB1E ; ubyte[]
mov rdi, 0xD1FFAB1E ; ubyte[]
mov esi, 2
mov esi, 2
call CORINFO_HELP_NEWARR_1_VC
call CORINFO_HELP_NEWARR_1_VC
mov word ptr [rax+0x10], bx
mov word ptr [rax+0x10], bx
movsxd rsi, r14d
movsxd rsi, r14d
Copy
Copied
Copy
Copied
mov rdi, r1
5
mov rdi, r1
2
mov rdx, rax
mov rdx, rax
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
Copy
Copied
Copy
Copied
jmp G_M32004_IG
3
7
jmp G_M32004_IG
1
7
;; size=
47
bbWeight=0.50 PerfScore
4.12
;; size=
67
bbWeight=0.50 PerfScore
5.88
G_M32004_IG25:
G_M32004_
IG13:
mov rsi, 0xD1FFAB1E ; 'System.UInt32'
cmp rax, rsi
jne SHORT G_M32004_IG28
mov r15, gword ptr [r15+0x40]
mov rsi, 0xD1FFAB1E ; System.UInt32
cmp qword ptr [rbx], rsi
je SHORT G_M32004_IG27
;; size=34 bbWeight=0.50 PerfScore 3.88
G_M32004_
IG26:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.UInt32
mov rdi, 0xD1FFAB1E ; System.UInt32
Copy
Copied
Copy
Copied
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
cmp r12, rdi
call [rax]CORINFO_HELP_UNBOX
jne SHORT G_M32004_IG14
;; size=25 bbWeight=0.25 PerfScore 0.94
mov r12, gword ptr [rbx+0x40]
G_M32004_IG27:
mov ebx, dword ptr [
r15
+0x08]
mov ebx, dword ptr [
rbx
+0x08]
mov rdi, 0xD1FFAB1E ; ubyte[]
mov rdi, 0xD1FFAB1E ; ubyte[]
mov esi, 4
mov esi, 4
call CORINFO_HELP_NEWARR_1_VC
call CORINFO_HELP_NEWARR_1_VC
mov dword ptr [rax+0x10], ebx
mov dword ptr [rax+0x10], ebx
movsxd rsi, r14d
movsxd rsi, r14d
Copy
Copied
Copy
Copied
mov rdi, r1
5
mov rdi, r1
2
mov rdx, rax
mov rdx, rax
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
Copy
Copied
Copy
Copied
jmp G_M32004_IG
3
7
jmp G_M32004_IG
1
7
;; size=
45
bbWeight=0.50 PerfScore
4.12
;; size=
65
bbWeight=0.50 PerfScore
5.88
G_M32004_IG28:
G_M32004_
IG14:
mov rsi, 0xD1FFAB1E ; 'System.UInt64'
cmp rax, rsi
jne SHORT G_M32004_IG31
mov r15, gword ptr [r15+0x40]
mov rsi, 0xD1FFAB1E ; System.UInt64
cmp qword ptr [rbx], rsi
je SHORT G_M32004_IG30
;; size=34 bbWeight=0.50 PerfScore 3.88
G_M32004_
IG29:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.UInt64
mov rdi, 0xD1FFAB1E ; System.UInt64
Copy
Copied
Copy
Copied
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
cmp r12, rdi
call [rax]CORINFO_HELP_UNBOX
jne SHORT G_M32004_IG15
;; size=25 bbWeight=0.25 PerfScore 0.94
mov r12, gword ptr [rbx+0x40]
G_M32004_IG30:
mov rdi, qword ptr [
r15
+0x08]
mov rdi, qword ptr [
rbx
+0x08]
mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(ulong):ubyte[]
mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(ulong):ubyte[]
call [rax]System.BitConverter:GetBytes(ulong):ubyte[]
call [rax]System.BitConverter:GetBytes(ulong):ubyte[]
mov rdx, rax
mov rdx, rax
movsxd rsi, r14d
movsxd rsi, r14d
Copy
Copied
Copy
Copied
mov rdi, r1
5
mov rdi, r1
2
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
Copy
Copied
Copy
Copied
jmp G_M32004_IG
3
7
jmp G_M32004_IG
1
7
;; size=
35 bbWeight=0.50 PerfScore 4.50
;; size=
54
bbWeight=0.50 PerfScore
6.25
G_M32004_IG31:
G_M32004_
IG15:
mov rsi, 0xD1FFAB1E ; 'System.Single'
cmp rax, rsi
jne SHORT G_M32004_IG34
mov r15, gword ptr [r15+0x40]
mov rsi, 0xD1FFAB1E ; System.Single
cmp qword ptr [rbx], rsi
je SHORT G_M32004_IG33
;; size=34
bbWeight=0.50 PerfScore
3.88
G_M32004_
IG32:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Single
mov rdi, 0xD1FFAB1E ; System.Single
Copy
Copied
Copy
Copied
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
cmp r12, rdi
call [rax]CORINFO_HELP_UNBOX
jne SHORT G_M32004_IG16
;; size=25 bbWeight=0.25 PerfScore 0.94
mov r12, gword ptr [rbx+0x40]
G_M32004_IG33:
vmovss xmm0, dword ptr [
r15
+0x08]
vmovss xmm0, dword ptr [
rbx
+0x08]
vmovss dword ptr [rbp-0x
5
4], xmm0
vmovss dword ptr [rbp-0x
4
4], xmm0
mov rdi, 0xD1FFAB1E ; ubyte[]
mov rdi, 0xD1FFAB1E ; ubyte[]
mov esi, 4
mov esi, 4
call CORINFO_HELP_NEWARR_1_VC
call CORINFO_HELP_NEWARR_1_VC
Copy
Copied
Copy
Copied
vmovss xmm0, dword ptr [rbp-0x
4
4]
vmovss xmm0, dword ptr [rbp-0x
5
4]
vmovss dword ptr [rax+0x10], xmm0
vmovss dword ptr [rax+0x10], xmm0
movsxd rsi, r14d
movsxd rsi, r14d
Copy
Copied
Copy
Copied
mov rdi, r1
5
mov rdi, r1
2
mov rdx, rax
mov rdx, rax
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
Copy
Copied
Copy
Copied
jmp SHORT G_M32004_IG
3
7
jmp SHORT G_M32004_IG
1
7
;; size=
56
bbWeight=0.50 PerfScore
7.62
;; size=
76
bbWeight=0.50 PerfScore
9.38
G_M32004_
IG34
:
G_M32004_
IG16
:
mov
rsi
, 0xD1FFAB1E ;
'
System.Double
'
mov
rax
, 0xD1FFAB1E ;
System.Double
cmp
r12, rax
cmp
rax, rsi
jne SHORT G_M32004_
IG19
jne SHORT G_M32004_
IG40
mov
rbx
, gword ptr [
rbx
+0x40]
mov
r15
, gword ptr [
r15
+0x40]
vmovsd xmm0, qword ptr [
r15
+0x08]
mov rsi, 0xD1FFAB1E ; System.Double
cmp qword ptr [rbx], rsi
je SHORT G_M32004_IG36
;; size=34 bbWeight=0.50 PerfScore 3.88
G_M32004_IG35:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Double
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
call [rax]CORINFO_HELP_UNBOX
;; size=25 bbWeight=0.25 PerfScore 0.94
G_M32004_IG36:
vmovsd xmm0, qword ptr [
rbx
+0x08]
mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(double):ubyte[]
mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(double):ubyte[]
call [rax]System.BitConverter:GetBytes(double):ubyte[]
call [rax]System.BitConverter:GetBytes(double):ubyte[]
mov rdx, rax
mov rdx, rax
movsxd rsi, r14d
movsxd rsi, r14d
Copy
Copied
Copy
Copied
mov rdi,
r15
mov rdi,
rbx
call CORINFO_HELP_ARRADDR_ST
call CORINFO_HELP_ARRADDR_ST
Copy
Copied
Copy
Copied
;; size=
31
bbWeight=0.50 PerfScore
4.50
;; size=
51
bbWeight=0.50 PerfScore
6.25
G_M32004_IG
3
7:
G_M32004_IG
1
7:
nop
nop
;; size=1 bbWeight=1 PerfScore 0.25
;; size=1 bbWeight=1 PerfScore 0.25
Copy
Copied
Copy
Copied
G_M32004_IG
3
8:
G_M32004_IG
1
8:
add rsp, 56
add rsp, 56
pop rbx
pop rbx
Copy
Copied
Copy
Copied
pop r12
pop r13
pop r14
pop r14
pop r15
pop r15
pop rbp
pop rbp
ret
ret
Copy
Copied
Copy
Copied
;; size=
11
bbWeight=1 PerfScore
3
.25
;; size=
15
bbWeight=1 PerfScore
4
.25
G_M32004_IG
39:
G_M32004_IG
19:
mov rdi, rcx
mov rsi, rbx
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
int3
;; size=12 bbWeight=0 PerfScore 0.00
G_M32004_IG40:
mov rax, 0xD1FFAB1E ; code for System.Data.ExceptionBuilder:StorageSetFailed():System.Exception
call [rax]System.Data.ExceptionBuilder:StorageSetFailed():System.Exception
mov rdi, rax
call CORINFO_HELP_THROW
;; size=20 bbWeight=0 PerfScore 0.00
G_M32004_IG41:
mov rax, 0xD1FFAB1E ; code for System.Data.ExceptionBuilder:StorageSetFailed():System.Exception
mov rax, 0xD1FFAB1E ; code for System.Data.ExceptionBuilder:StorageSetFailed():System.Exception
call [rax]System.Data.ExceptionBuilder:StorageSetFailed():System.Exception
call [rax]System.Data.ExceptionBuilder:StorageSetFailed():System.Exception
mov rdi, rax
mov rdi, rax
call CORINFO_HELP_THROW
call CORINFO_HELP_THROW
;; size=20 bbWeight=0 PerfScore 0.00
;; size=20 bbWeight=0 PerfScore 0.00
Copy
Copied
Copy
Copied
G_M32004_IG
42
:
G_M32004_IG
20
:
call CORINFO_HELP_RNGCHKFAIL
call CORINFO_HELP_RNGCHKFAIL
int3
int3
;; size=6 bbWeight=0 PerfScore 0.00
;; size=6 bbWeight=0 PerfScore 0.00
Copy
Copied
Copy
Copied
; Total bytes of code
1403
, prolog size
18
, PerfScore
284.97
, instruction count 2
9
7, allocated bytes for code
1403
(MethodHash=a1e282fb) for method System.Data.Common.ObjectStorage:Set(int,System.Object):this (FullOpts)
; Total bytes of code
947
, prolog size
22
, PerfScore
207.99
, instruction count 2
1
7, allocated bytes for code
947
(MethodHash=a1e282fb) for method System.Data.Common.ObjectStorage:Set(int,System.Object):this (FullOpts)
; ============================================================
; ============================================================
Saved diffs
Original text
Open file
; Assembly listing for method System.Data.Common.ObjectStorage:Set(int,System.Object):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; 11 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T01] ( 19, 11 ) ref -> r15 this class-hnd single-def <System.Data.Common.ObjectStorage> ; V01 arg1 [V01,T02] ( 16, 9 ) int -> r14 single-def ; V02 arg2 [V02,T00] ( 38, 17.50) ref -> rbx class-hnd single-def <System.Object> ; V03 loc0 [V03,T03] ( 12, 6 ) ref -> rax class-hnd exact single-def <System.RuntimeType> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T09] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Object[]> ; V06 tmp2 [V06,T10] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Object[]> ; V07 tmp3 [V07,T11] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Object[]> ; V08 tmp4 [V08,T12] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Object[]> ; V09 tmp5 [V09,T13] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Object[]> ; V10 tmp6 [V10,T14] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Object[]> ; V11 tmp7 [V11,T15] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Object[]> ; V12 tmp8 [V12,T16] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Object[]> ; V13 tmp9 [V13,T17] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Object[]> ; V14 tmp10 [V14,T18] ( 2, 2 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Object[]> ; V15 tmp11 [V15,T19] ( 2, 2 ) ref -> r15 class-hnd single-def "bubbling QMark2" <System.Object[]> ; V16 tmp12 [V16,T08] ( 3, 2 ) long -> rcx "fgMakeTemp is creating a new local variable" ; V17 tmp13 [V17,T04] ( 4, 4 ) ref -> rdi class-hnd "spilling QMark2" <System.String> ; V18 tmp14 [V18,T25] ( 2, 2 ) struct (16) [rbp-0x28] ld-addr-op spill-single-def "NewObj constructor temp" <System.Guid> ; V19 tmp15 [V19,T05] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Guid> ; V20 tmp16 [V20 ] ( 4, 2 ) struct (24) [rbp-0x40] do-not-enreg[XSF] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Guid+GuidResult> ;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V22 tmp18 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V23 tmp19 [V23 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V24 tmp20 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V25 tmp21 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> ; V26 tmp22 [V26,T20] ( 2, 2 ) byref -> rsi single-def "Inlining Arg" ; V27 tmp23 [V27,T26] ( 2, 2 ) int -> rdi "Inlining Arg" ;* V28 tmp24 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]> ; V29 tmp25 [V29,T32] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]> ; V30 tmp26 [V30,T27] ( 2, 2 ) ushort -> rbx "Inlining Arg" ;* V31 tmp27 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]> ; V32 tmp28 [V32,T33] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]> ; V33 tmp29 [V33,T28] ( 2, 2 ) short -> rbx "Inlining Arg" ;* V34 tmp30 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]> ; V35 tmp31 [V35,T34] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]> ; V36 tmp32 [V36,T29] ( 2, 2 ) int -> rbx "Inlining Arg" ;* V37 tmp33 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]> ; V38 tmp34 [V38,T35] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]> ; V39 tmp35 [V39,T30] ( 2, 2 ) ushort -> rbx "Inlining Arg" ;* V40 tmp36 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]> ; V41 tmp37 [V41,T36] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]> ; V42 tmp38 [V42,T31] ( 2, 2 ) int -> rbx "Inlining Arg" ;* V43 tmp39 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]> ; V44 tmp40 [V44,T37] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]> ; V45 tmp41 [V45,T43] ( 2, 2 ) float -> [rbp-0x44] spill-single-def "Inlining Arg" ;* V46 tmp42 [V46 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp43 [V47 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP ; V48 tmp44 [V48,T39] ( 2, 1 ) byref -> rsi "field V23._reference (fldOffset=0x0)" P-INDEP ; V49 tmp45 [V49,T41] ( 2, 1 ) int -> [rbp-0x48] spill-single-def "field V23._length (fldOffset=0x8)" P-INDEP ; V50 tmp46 [V50,T40] ( 2, 1 ) byref -> rsi single-def "field V24._reference (fldOffset=0x0)" P-INDEP ; V51 tmp47 [V51,T42] ( 2, 1 ) int -> rdi "field V24._length (fldOffset=0x8)" P-INDEP ;* V52 tmp48 [V52 ] ( 0, 0 ) byref -> zero-ref single-def "field V25._reference (fldOffset=0x0)" P-INDEP ;* V53 tmp49 [V53 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP ; V54 tmp50 [V54,T06] ( 3, 3 ) ref -> rdi single-def "arr expr" ; V55 tmp51 [V55,T07] ( 3, 3 ) ref -> rdi single-def "argument with side effect" ; V56 tmp52 [V56,T21] ( 2, 2 ) ref -> rdx single-def "argument with side effect" ; V57 tmp53 [V57,T22] ( 2, 2 ) ref -> rdx single-def "argument with side effect" ; V58 tmp54 [V58,T23] ( 2, 2 ) ref -> rdx single-def "argument with side effect" ; V59 tmp55 [V59,T24] ( 2, 2 ) ref -> rdx single-def "argument with side effect" ; V60 cse0 [V60,T38] ( 3, 1.50) ref -> rdi "CSE - conservative" ; ; Lcl frame size = 56 G_M32004_IG01: push rbp push r15 push r14 push rbx sub rsp, 56 vzeroupper lea rbp, [rsp+0x50] mov r15, rdi mov r14d, esi mov rbx, rdx ;; size=27 bbWeight=1 PerfScore 6.50 G_M32004_IG02: cmp gword ptr [r15+0x30], rbx jne SHORT G_M32004_IG04 ;; size=6 bbWeight=1 PerfScore 4.00 G_M32004_IG03: mov rdi, gword ptr [r15+0x40] cmp r14d, dword ptr [rdi+0x08] jae G_M32004_IG42 mov esi, r14d xor rax, rax mov gword ptr [rdi+8*rsi+0x10], rax jmp G_M32004_IG37 ;; size=29 bbWeight=0.50 PerfScore 4.75 G_M32004_IG04: mov rdi, gword ptr [r15+0x18] mov rsi, 0xD1FFAB1E ; 'System.Object' cmp rdi, rsi je SHORT G_M32004_IG05 mov rsi, rbx mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0xA0] call [rax+0x08]System.Type:IsInstanceOfType(System.Object):ubyte:this test eax, eax je SHORT G_M32004_IG06 ;; size=39 bbWeight=0.50 PerfScore 6.00 G_M32004_IG05: mov rdi, gword ptr [r15+0x40] movsxd rsi, r14d mov rdx, rbx call CORINFO_HELP_ARRADDR_ST jmp G_M32004_IG37 ;; size=20 bbWeight=0.50 PerfScore 2.75 G_M32004_IG06: mov rdi, rbx call System.Object:GetType():System.Type:this mov rdi, 0xD1FFAB1E ; 'System.Guid' cmp gword ptr [r15+0x18], rdi jne G_M32004_IG07 mov rdi, 0xD1FFAB1E ; 'System.String' cmp rax, rdi jne G_M32004_IG07 mov r15, gword ptr [r15+0x40] mov rdi, rbx mov rcx, 0xD1FFAB1E ; System.String cmp qword ptr [rdi], rcx jne G_M32004_IG39 vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [rbp-0x40], xmm0 vmovdqu xmmword ptr [rbp-0x3C], xmm0 mov byte ptr [rbp-0x30], 1 lea rsi, bword ptr [rdi+0x0C] mov edi, dword ptr [rdi+0x08] mov dword ptr [rbp-0x48], edi mov rdi, rsi mov esi, dword ptr [rbp-0x48] lea rdx, [rbp-0x40] mov rax, 0xD1FFAB1E ; code for System.Guid:TryParseGuid(System.ReadOnlySpan`1[ushort],byref):ubyte call [rax]System.Guid:TryParseGuid(System.ReadOnlySpan`1[ushort],byref):ubyte vmovups xmm0, xmmword ptr [rbp-0x40] vmovups xmmword ptr [rbp-0x28], xmm0 mov rdi, 0xD1FFAB1E ; System.Guid call CORINFO_HELP_NEWSFAST vmovups xmm0, xmmword ptr [rbp-0x28] vmovups xmmword ptr [rax+0x08], xmm0 mov rdx, rax movsxd rsi, r14d mov rdi, r15 call CORINFO_HELP_ARRADDR_ST jmp G_M32004_IG37 ;; size=177 bbWeight=0.50 PerfScore 19.67 G_M32004_IG07: mov rsi, 0xD1FFAB1E ; 'System.Byte[]' cmp gword ptr [r15+0x18], rsi jne G_M32004_IG41 mov rsi, 0xD1FFAB1E ; 'System.Boolean' cmp rax, rsi jne SHORT G_M32004_IG10 mov r15, gword ptr [r15+0x40] mov rsi, 0xD1FFAB1E ; System.Boolean cmp qword ptr [rbx], rsi je SHORT G_M32004_IG09 ;; size=54 bbWeight=0.50 PerfScore 6.00 G_M32004_IG08: mov rsi, rbx mov rdi, 0xD1FFAB1E ; System.Boolean mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX call [rax]CORINFO_HELP_UNBOX ;; size=25 bbWeight=0.25 PerfScore 0.94 G_M32004_IG09: movzx rdi, byte ptr [rbx+0x08] mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(ubyte):ubyte[] call [rax]System.BitConverter:GetBytes(ubyte):ubyte[] mov rdx, rax movsxd rsi, r14d mov rdi, r15 call CORINFO_HELP_ARRADDR_ST jmp G_M32004_IG37 ;; size=36 bbWeight=0.50 PerfScore 4.50 G_M32004_IG10: mov rsi, 0xD1FFAB1E ; 'System.Char' cmp rax, rsi jne SHORT G_M32004_IG13 mov r15, gword ptr [r15+0x40] mov rsi, 0xD1FFAB1E ; System.Char cmp qword ptr [rbx], rsi je SHORT G_M32004_IG12 ;; size=34 bbWeight=0.50 PerfScore 3.88 G_M32004_IG11: mov rsi, rbx mov rdi, 0xD1FFAB1E ; System.Char mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX call [rax]CORINFO_HELP_UNBOX ;; size=25 bbWeight=0.25 PerfScore 0.94 G_M32004_IG12: movzx rbx, word ptr [rbx+0x08] mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 2 call CORINFO_HELP_NEWARR_1_VC mov word ptr [rax+0x10], bx movsxd rsi, r14d mov rdi, r15 mov rdx, rax call CORINFO_HELP_ARRADDR_ST jmp G_M32004_IG37 ;; size=47 bbWeight=0.50 PerfScore 4.12 G_M32004_IG13: mov rsi, 0xD1FFAB1E ; 'System.Int16' cmp rax, rsi jne SHORT G_M32004_IG16 mov r15, gword ptr [r15+0x40] mov rsi, 0xD1FFAB1E ; System.Int16 cmp qword ptr [rbx], rsi je SHORT G_M32004_IG15 ;; size=34 bbWeight=0.50 PerfScore 3.88 G_M32004_IG14: mov rsi, rbx mov rdi, 0xD1FFAB1E ; System.Int16 mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX call [rax]CORINFO_HELP_UNBOX ;; size=25 bbWeight=0.25 PerfScore 0.94 G_M32004_IG15: movsx rbx, word ptr [rbx+0x08] mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 2 call CORINFO_HELP_NEWARR_1_VC mov word ptr [rax+0x10], bx movsxd rsi, r14d mov rdi, r15 mov rdx, rax call CORINFO_HELP_ARRADDR_ST jmp G_M32004_IG37 ;; size=48 bbWeight=0.50 PerfScore 5.12 G_M32004_IG16: mov rsi, 0xD1FFAB1E ; 'System.Int32' cmp rax, rsi jne SHORT G_M32004_IG19 mov r15, gword ptr [r15+0x40] mov rsi, 0xD1FFAB1E ; System.Int32 cmp qword ptr [rbx], rsi je SHORT G_M32004_IG18 ;; size=34 bbWeight=0.50 PerfScore 3.88 G_M32004_IG17: mov rsi, rbx mov rdi, 0xD1FFAB1E ; System.Int32 mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX call [rax]CORINFO_HELP_UNBOX ;; size=25 bbWeight=0.25 PerfScore 0.94 G_M32004_IG18: mov ebx, dword ptr [rbx+0x08] mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 4 call CORINFO_HELP_NEWARR_1_VC mov dword ptr [rax+0x10], ebx movsxd rsi, r14d mov rdi, r15 mov rdx, rax call CORINFO_HELP_ARRADDR_ST jmp G_M32004_IG37 ;; size=45 bbWeight=0.50 PerfScore 4.12 G_M32004_IG19: mov rsi, 0xD1FFAB1E ; 'System.Int64' cmp rax, rsi jne SHORT G_M32004_IG22 mov r15, gword ptr [r15+0x40] mov rsi, 0xD1FFAB1E ; System.Int64 cmp qword ptr [rbx], rsi je SHORT G_M32004_IG21 ;; size=34 bbWeight=0.50 PerfScore 3.88 G_M32004_IG20: mov rsi, rbx mov rdi, 0xD1FFAB1E ; System.Int64 mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX call [rax]CORINFO_HELP_UNBOX ;; size=25 bbWeight=0.25 PerfScore 0.94 G_M32004_IG21: mov rdi, qword ptr [rbx+0x08] mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(long):ubyte[] call [rax]System.BitConverter:GetBytes(long):ubyte[] mov rdx, rax movsxd rsi, r14d mov rdi, r15 call CORINFO_HELP_ARRADDR_ST jmp G_M32004_IG37 ;; size=35 bbWeight=0.50 PerfScore 4.50 G_M32004_IG22: mov rsi, 0xD1FFAB1E ; 'System.UInt16' cmp rax, rsi jne SHORT G_M32004_IG25 mov r15, gword ptr [r15+0x40] mov rsi, 0xD1FFAB1E ; System.UInt16 cmp qword ptr [rbx], rsi je SHORT G_M32004_IG24 ;; size=34 bbWeight=0.50 PerfScore 3.88 G_M32004_IG23: mov rsi, rbx mov rdi, 0xD1FFAB1E ; System.UInt16 mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX call [rax]CORINFO_HELP_UNBOX ;; size=25 bbWeight=0.25 PerfScore 0.94 G_M32004_IG24: movzx rbx, word ptr [rbx+0x08] mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 2 call CORINFO_HELP_NEWARR_1_VC mov word ptr [rax+0x10], bx movsxd rsi, r14d mov rdi, r15 mov rdx, rax call CORINFO_HELP_ARRADDR_ST jmp G_M32004_IG37 ;; size=47 bbWeight=0.50 PerfScore 4.12 G_M32004_IG25: mov rsi, 0xD1FFAB1E ; 'System.UInt32' cmp rax, rsi jne SHORT G_M32004_IG28 mov r15, gword ptr [r15+0x40] mov rsi, 0xD1FFAB1E ; System.UInt32 cmp qword ptr [rbx], rsi je SHORT G_M32004_IG27 ;; size=34 bbWeight=0.50 PerfScore 3.88 G_M32004_IG26: mov rsi, rbx mov rdi, 0xD1FFAB1E ; System.UInt32 mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX call [rax]CORINFO_HELP_UNBOX ;; size=25 bbWeight=0.25 PerfScore 0.94 G_M32004_IG27: mov ebx, dword ptr [rbx+0x08] mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 4 call CORINFO_HELP_NEWARR_1_VC mov dword ptr [rax+0x10], ebx movsxd rsi, r14d mov rdi, r15 mov rdx, rax call CORINFO_HELP_ARRADDR_ST jmp G_M32004_IG37 ;; size=45 bbWeight=0.50 PerfScore 4.12 G_M32004_IG28: mov rsi, 0xD1FFAB1E ; 'System.UInt64' cmp rax, rsi jne SHORT G_M32004_IG31 mov r15, gword ptr [r15+0x40] mov rsi, 0xD1FFAB1E ; System.UInt64 cmp qword ptr [rbx], rsi je SHORT G_M32004_IG30 ;; size=34 bbWeight=0.50 PerfScore 3.88 G_M32004_IG29: mov rsi, rbx mov rdi, 0xD1FFAB1E ; System.UInt64 mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX call [rax]CORINFO_HELP_UNBOX ;; size=25 bbWeight=0.25 PerfScore 0.94 G_M32004_IG30: mov rdi, qword ptr [rbx+0x08] mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(ulong):ubyte[] call [rax]System.BitConverter:GetBytes(ulong):ubyte[] mov rdx, rax movsxd rsi, r14d mov rdi, r15 call CORINFO_HELP_ARRADDR_ST jmp G_M32004_IG37 ;; size=35 bbWeight=0.50 PerfScore 4.50 G_M32004_IG31: mov rsi, 0xD1FFAB1E ; 'System.Single' cmp rax, rsi jne SHORT G_M32004_IG34 mov r15, gword ptr [r15+0x40] mov rsi, 0xD1FFAB1E ; System.Single cmp qword ptr [rbx], rsi je SHORT G_M32004_IG33 ;; size=34 bbWeight=0.50 PerfScore 3.88 G_M32004_IG32: mov rsi, rbx mov rdi, 0xD1FFAB1E ; System.Single mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX call [rax]CORINFO_HELP_UNBOX ;; size=25 bbWeight=0.25 PerfScore 0.94 G_M32004_IG33: vmovss xmm0, dword ptr [rbx+0x08] vmovss dword ptr [rbp-0x44], xmm0 mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 4 call CORINFO_HELP_NEWARR_1_VC vmovss xmm0, dword ptr [rbp-0x44] vmovss dword ptr [rax+0x10], xmm0 movsxd rsi, r14d mov rdi, r15 mov rdx, rax call CORINFO_HELP_ARRADDR_ST jmp SHORT G_M32004_IG37 ;; size=56 bbWeight=0.50 PerfScore 7.62 G_M32004_IG34: mov rsi, 0xD1FFAB1E ; 'System.Double' cmp rax, rsi jne SHORT G_M32004_IG40 mov r15, gword ptr [r15+0x40] mov rsi, 0xD1FFAB1E ; System.Double cmp qword ptr [rbx], rsi je SHORT G_M32004_IG36 ;; size=34 bbWeight=0.50 PerfScore 3.88 G_M32004_IG35: mov rsi, rbx mov rdi, 0xD1FFAB1E ; System.Double mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX call [rax]CORINFO_HELP_UNBOX ;; size=25 bbWeight=0.25 PerfScore 0.94 G_M32004_IG36: vmovsd xmm0, qword ptr [rbx+0x08] mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(double):ubyte[] call [rax]System.BitConverter:GetBytes(double):ubyte[] mov rdx, rax movsxd rsi, r14d mov rdi, r15 call CORINFO_HELP_ARRADDR_ST ;; size=31 bbWeight=0.50 PerfScore 4.50 G_M32004_IG37: nop ;; size=1 bbWeight=1 PerfScore 0.25 G_M32004_IG38: add rsp, 56 pop rbx pop r14 pop r15 pop rbp ret ;; size=11 bbWeight=1 PerfScore 3.25 G_M32004_IG39: mov rdi, rcx mov rsi, rbx call CORINFO_HELP_CHKCASTCLASS_SPECIAL int3 ;; size=12 bbWeight=0 PerfScore 0.00 G_M32004_IG40: mov rax, 0xD1FFAB1E ; code for System.Data.ExceptionBuilder:StorageSetFailed():System.Exception call [rax]System.Data.ExceptionBuilder:StorageSetFailed():System.Exception mov rdi, rax call CORINFO_HELP_THROW ;; size=20 bbWeight=0 PerfScore 0.00 G_M32004_IG41: mov rax, 0xD1FFAB1E ; code for System.Data.ExceptionBuilder:StorageSetFailed():System.Exception call [rax]System.Data.ExceptionBuilder:StorageSetFailed():System.Exception mov rdi, rax call CORINFO_HELP_THROW ;; size=20 bbWeight=0 PerfScore 0.00 G_M32004_IG42: call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00 ; Total bytes of code 1403, prolog size 18, PerfScore 284.97, instruction count 297, allocated bytes for code 1403 (MethodHash=a1e282fb) for method System.Data.Common.ObjectStorage:Set(int,System.Object):this (FullOpts) ; ============================================================
Changed text
Open file
; Assembly listing for method System.Data.Common.ObjectStorage:Set(int,System.Object):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; 11 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 18, 10.50) ref -> rbx this class-hnd single-def <System.Data.Common.ObjectStorage> ; V01 arg1 [V01,T02] ( 16, 9 ) int -> r14 single-def ; V02 arg2 [V02,T01] ( 18, 10.50) ref -> r15 class-hnd single-def <System.Object> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T08] ( 2, 2 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Object[]> ; V05 tmp2 [V05,T09] ( 2, 2 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Object[]> ; V06 tmp3 [V06,T10] ( 2, 2 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Object[]> ; V07 tmp4 [V07,T11] ( 2, 2 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Object[]> ; V08 tmp5 [V08,T12] ( 2, 2 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Object[]> ; V09 tmp6 [V09,T13] ( 2, 2 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Object[]> ; V10 tmp7 [V10,T14] ( 2, 2 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Object[]> ; V11 tmp8 [V11,T15] ( 2, 2 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Object[]> ; V12 tmp9 [V12,T16] ( 2, 2 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Object[]> ; V13 tmp10 [V13,T17] ( 2, 2 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Object[]> ; V14 tmp11 [V14,T18] ( 2, 2 ) ref -> r13 class-hnd single-def "bubbling QMark2" <System.Object[]> ;* V15 tmp12 [V15,T43] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" ; V16 tmp13 [V16,T04] ( 3, 3 ) ref -> r15 class-hnd "spilling QMark2" <System.String> ; V17 tmp14 [V17,T24] ( 2, 2 ) struct (16) [rbp-0x38] ld-addr-op spill-single-def "NewObj constructor temp" <System.Guid> ; V18 tmp15 [V18,T05] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Guid> ; V19 tmp16 [V19 ] ( 4, 2 ) struct (24) [rbp-0x50] do-not-enreg[XSF] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Guid+GuidResult> ;* V20 tmp17 [V20 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V21 tmp18 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V22 tmp19 [V22 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V23 tmp20 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V24 tmp21 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> ; V25 tmp22 [V25,T19] ( 2, 2 ) byref -> rdi single-def "Inlining Arg" ; V26 tmp23 [V26,T25] ( 2, 2 ) int -> rsi "Inlining Arg" ;* V27 tmp24 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]> ; V28 tmp25 [V28,T31] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]> ; V29 tmp26 [V29,T26] ( 2, 2 ) ushort -> rbx "Inlining Arg" ;* V30 tmp27 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]> ; V31 tmp28 [V31,T32] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]> ; V32 tmp29 [V32,T27] ( 2, 2 ) short -> rbx "Inlining Arg" ;* V33 tmp30 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]> ; V34 tmp31 [V34,T33] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]> ; V35 tmp32 [V35,T28] ( 2, 2 ) int -> rbx "Inlining Arg" ;* V36 tmp33 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]> ; V37 tmp34 [V37,T34] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]> ; V38 tmp35 [V38,T29] ( 2, 2 ) ushort -> rbx "Inlining Arg" ;* V39 tmp36 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]> ; V40 tmp37 [V40,T35] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]> ; V41 tmp38 [V41,T30] ( 2, 2 ) int -> rbx "Inlining Arg" ;* V42 tmp39 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <ubyte[]> ; V43 tmp40 [V43,T36] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <ubyte[]> ; V44 tmp41 [V44,T44] ( 2, 2 ) float -> [rbp-0x54] spill-single-def "Inlining Arg" ;* V45 tmp42 [V45 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP ;* V46 tmp43 [V46 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP ; V47 tmp44 [V47,T39] ( 2, 1 ) byref -> rdi "field V22._reference (fldOffset=0x0)" P-INDEP ; V48 tmp45 [V48,T41] ( 2, 1 ) int -> rsi "field V22._length (fldOffset=0x8)" P-INDEP ; V49 tmp46 [V49,T40] ( 2, 1 ) byref -> rdi single-def "field V23._reference (fldOffset=0x0)" P-INDEP ; V50 tmp47 [V50,T42] ( 2, 1 ) int -> rsi "field V23._length (fldOffset=0x8)" P-INDEP ;* V51 tmp48 [V51 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP ;* V52 tmp49 [V52 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP ; V53 tmp50 [V53,T06] ( 3, 3 ) ref -> rdi single-def "arr expr" ; V54 tmp51 [V54,T07] ( 3, 3 ) ref -> rdi single-def "argument with side effect" ; V55 tmp52 [V55,T20] ( 2, 2 ) ref -> rdx single-def "argument with side effect" ; V56 tmp53 [V56,T21] ( 2, 2 ) ref -> rdx single-def "argument with side effect" ; V57 tmp54 [V57,T22] ( 2, 2 ) ref -> rdx single-def "argument with side effect" ; V58 tmp55 [V58,T23] ( 2, 2 ) ref -> rdx single-def "argument with side effect" ; V59 cse0 [V59,T37] ( 3, 1.50) ref -> rdi "CSE - conservative" ; V60 cse1 [V60,T38] ( 3, 1.50) ref -> r13 "CSE - conservative" ; V61 cse2 [V61,T03] ( 13, 6.50) long -> r12 "CSE - aggressive" ; ; Lcl frame size = 56 G_M32004_IG01: push rbp push r15 push r14 push r13 push r12 push rbx sub rsp, 56 vzeroupper lea rbp, [rsp+0x60] mov rbx, rdi mov r14d, esi mov r15, rdx ;; size=31 bbWeight=1 PerfScore 8.50 G_M32004_IG02: cmp gword ptr [rbx+0x30], r15 jne SHORT G_M32004_IG04 ;; size=6 bbWeight=1 PerfScore 4.00 G_M32004_IG03: mov rdi, gword ptr [rbx+0x40] cmp r14d, dword ptr [rdi+0x08] jae G_M32004_IG20 mov esi, r14d xor rax, rax mov gword ptr [rdi+8*rsi+0x10], rax jmp G_M32004_IG17 ;; size=29 bbWeight=0.50 PerfScore 4.75 G_M32004_IG04: mov rdi, gword ptr [rbx+0x18] mov rsi, 0xD1FFAB1E ; 'System.Object' cmp rdi, rsi je SHORT G_M32004_IG05 mov rsi, r15 mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0xA0] call [rax+0x08]System.Type:IsInstanceOfType(System.Object):ubyte:this test eax, eax je SHORT G_M32004_IG06 ;; size=39 bbWeight=0.50 PerfScore 6.00 G_M32004_IG05: mov rdi, gword ptr [rbx+0x40] movsxd rsi, r14d mov rdx, r15 call CORINFO_HELP_ARRADDR_ST jmp G_M32004_IG17 ;; size=20 bbWeight=0.50 PerfScore 2.75 G_M32004_IG06: mov r13, gword ptr [rbx+0x18] mov rdi, 0xD1FFAB1E ; 'System.Guid' cmp r13, rdi jne SHORT G_M32004_IG07 mov r12, qword ptr [r15] mov rdi, 0xD1FFAB1E ; System.String cmp r12, rdi jne SHORT G_M32004_IG07 mov r13, gword ptr [rbx+0x40] vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [rbp-0x50], xmm0 vmovdqu xmmword ptr [rbp-0x4C], xmm0 mov byte ptr [rbp-0x40], 1 lea rdi, bword ptr [r15+0x0C] mov esi, dword ptr [r15+0x08] lea rdx, [rbp-0x50] mov rax, 0xD1FFAB1E ; code for System.Guid:TryParseGuid(System.ReadOnlySpan`1[ushort],byref):ubyte call [rax]System.Guid:TryParseGuid(System.ReadOnlySpan`1[ushort],byref):ubyte vmovups xmm0, xmmword ptr [rbp-0x50] vmovups xmmword ptr [rbp-0x38], xmm0 mov rdi, 0xD1FFAB1E ; System.Guid call CORINFO_HELP_NEWSFAST vmovups xmm0, xmmword ptr [rbp-0x38] vmovups xmmword ptr [rax+0x08], xmm0 mov rdx, rax movsxd rsi, r14d mov rdi, r13 call CORINFO_HELP_ARRADDR_ST jmp G_M32004_IG17 ;; size=137 bbWeight=0.50 PerfScore 16.29 G_M32004_IG07: mov rdi, 0xD1FFAB1E ; 'System.Byte[]' cmp r13, rdi jne G_M32004_IG19 mov r12, qword ptr [r15] mov rdi, 0xD1FFAB1E ; System.Boolean cmp r12, rdi jne SHORT G_M32004_IG08 mov r12, gword ptr [rbx+0x40] movzx rdi, byte ptr [r15+0x08] mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(ubyte):ubyte[] call [rax]System.BitConverter:GetBytes(ubyte):ubyte[] mov rdx, rax movsxd rsi, r14d mov rdi, r12 call CORINFO_HELP_ARRADDR_ST jmp G_M32004_IG17 ;; size=77 bbWeight=0.50 PerfScore 8.00 G_M32004_IG08: mov rdi, 0xD1FFAB1E ; System.Char cmp r12, rdi jne SHORT G_M32004_IG09 mov r12, gword ptr [rbx+0x40] movzx rbx, word ptr [r15+0x08] mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 2 call CORINFO_HELP_NEWARR_1_VC mov word ptr [rax+0x10], bx movsxd rsi, r14d mov rdi, r12 mov rdx, rax call CORINFO_HELP_ARRADDR_ST jmp G_M32004_IG17 ;; size=67 bbWeight=0.50 PerfScore 5.88 G_M32004_IG09: mov rdi, 0xD1FFAB1E ; System.Int16 cmp r12, rdi jne SHORT G_M32004_IG10 mov r12, gword ptr [rbx+0x40] movsx rbx, word ptr [r15+0x08] mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 2 call CORINFO_HELP_NEWARR_1_VC mov word ptr [rax+0x10], bx movsxd rsi, r14d mov rdi, r12 mov rdx, rax call CORINFO_HELP_ARRADDR_ST jmp G_M32004_IG17 ;; size=67 bbWeight=0.50 PerfScore 6.88 G_M32004_IG10: mov rdi, 0xD1FFAB1E ; System.Int32 cmp r12, rdi jne SHORT G_M32004_IG11 mov r12, gword ptr [rbx+0x40] mov ebx, dword ptr [r15+0x08] mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 4 call CORINFO_HELP_NEWARR_1_VC mov dword ptr [rax+0x10], ebx movsxd rsi, r14d mov rdi, r12 mov rdx, rax call CORINFO_HELP_ARRADDR_ST jmp G_M32004_IG17 ;; size=65 bbWeight=0.50 PerfScore 5.88 G_M32004_IG11: mov rdi, 0xD1FFAB1E ; System.Int64 cmp r12, rdi jne SHORT G_M32004_IG12 mov r12, gword ptr [rbx+0x40] mov rdi, qword ptr [r15+0x08] mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(long):ubyte[] call [rax]System.BitConverter:GetBytes(long):ubyte[] mov rdx, rax movsxd rsi, r14d mov rdi, r12 call CORINFO_HELP_ARRADDR_ST jmp G_M32004_IG17 ;; size=54 bbWeight=0.50 PerfScore 6.25 G_M32004_IG12: mov rdi, 0xD1FFAB1E ; System.UInt16 cmp r12, rdi jne SHORT G_M32004_IG13 mov r12, gword ptr [rbx+0x40] movzx rbx, word ptr [r15+0x08] mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 2 call CORINFO_HELP_NEWARR_1_VC mov word ptr [rax+0x10], bx movsxd rsi, r14d mov rdi, r12 mov rdx, rax call CORINFO_HELP_ARRADDR_ST jmp G_M32004_IG17 ;; size=67 bbWeight=0.50 PerfScore 5.88 G_M32004_IG13: mov rdi, 0xD1FFAB1E ; System.UInt32 cmp r12, rdi jne SHORT G_M32004_IG14 mov r12, gword ptr [rbx+0x40] mov ebx, dword ptr [r15+0x08] mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 4 call CORINFO_HELP_NEWARR_1_VC mov dword ptr [rax+0x10], ebx movsxd rsi, r14d mov rdi, r12 mov rdx, rax call CORINFO_HELP_ARRADDR_ST jmp G_M32004_IG17 ;; size=65 bbWeight=0.50 PerfScore 5.88 G_M32004_IG14: mov rdi, 0xD1FFAB1E ; System.UInt64 cmp r12, rdi jne SHORT G_M32004_IG15 mov r12, gword ptr [rbx+0x40] mov rdi, qword ptr [r15+0x08] mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(ulong):ubyte[] call [rax]System.BitConverter:GetBytes(ulong):ubyte[] mov rdx, rax movsxd rsi, r14d mov rdi, r12 call CORINFO_HELP_ARRADDR_ST jmp G_M32004_IG17 ;; size=54 bbWeight=0.50 PerfScore 6.25 G_M32004_IG15: mov rdi, 0xD1FFAB1E ; System.Single cmp r12, rdi jne SHORT G_M32004_IG16 mov r12, gword ptr [rbx+0x40] vmovss xmm0, dword ptr [r15+0x08] vmovss dword ptr [rbp-0x54], xmm0 mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 4 call CORINFO_HELP_NEWARR_1_VC vmovss xmm0, dword ptr [rbp-0x54] vmovss dword ptr [rax+0x10], xmm0 movsxd rsi, r14d mov rdi, r12 mov rdx, rax call CORINFO_HELP_ARRADDR_ST jmp SHORT G_M32004_IG17 ;; size=76 bbWeight=0.50 PerfScore 9.38 G_M32004_IG16: mov rax, 0xD1FFAB1E ; System.Double cmp r12, rax jne SHORT G_M32004_IG19 mov rbx, gword ptr [rbx+0x40] vmovsd xmm0, qword ptr [r15+0x08] mov rax, 0xD1FFAB1E ; code for System.BitConverter:GetBytes(double):ubyte[] call [rax]System.BitConverter:GetBytes(double):ubyte[] mov rdx, rax movsxd rsi, r14d mov rdi, rbx call CORINFO_HELP_ARRADDR_ST ;; size=51 bbWeight=0.50 PerfScore 6.25 G_M32004_IG17: nop ;; size=1 bbWeight=1 PerfScore 0.25 G_M32004_IG18: add rsp, 56 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25 G_M32004_IG19: mov rax, 0xD1FFAB1E ; code for System.Data.ExceptionBuilder:StorageSetFailed():System.Exception call [rax]System.Data.ExceptionBuilder:StorageSetFailed():System.Exception mov rdi, rax call CORINFO_HELP_THROW ;; size=20 bbWeight=0 PerfScore 0.00 G_M32004_IG20: call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00 ; Total bytes of code 947, prolog size 22, PerfScore 207.99, instruction count 217, allocated bytes for code 947 (MethodHash=a1e282fb) for method System.Data.Common.ObjectStorage:Set(int,System.Object):this (FullOpts) ; ============================================================
Find difference