Diff
checker
テキスト
テキスト
画像
ドキュメント
Excel
フォルダ
Legal
Enterprise
デスクトップ
料金
ログイン
Diffchecker デスクトップのダウンロード
テキスト比較
2 つのテキスト ファイルの違いを見つける
ツール
履歴
ライブエディター
未変更行を折りたたむ
折り返しなし
レイアウト
分割
統合
比較精度
スマート
単語
文字
シンタックスハイライト
構文を選択
無視
テキスト変換
最初の差分へ移動
入力を編集
Diffchecker Desktop
Diffcheckerを実行する最も安全な方法。Diffchecker Desktopアプリを入手:あなたの差分はコンピューターから出ることはありません!
Desktopを入手
Untitled Diff
作成日
3 年前
差分は期限切れになりません
クリア
エクスポート
共有
説明
47 削除
行
合計
削除
文字
合計
削除
この機能を引き続き使用するには、アップグレードしてください
Diff
checker
Pro
価格を見る
209 行
すべてコピー
48 追加
行
合計
追加
文字
合計
追加
この機能を引き続き使用するには、アップグレードしてください
Diff
checker
Pro
価格を見る
209 行
すべてコピー
; Assembly listing for method System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,bool],byref):System.__Canon (FullOpts)
; Assembly listing for method System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,bool],byref):System.__Canon (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Windows
; Emitting BLENDED_CODE for X64 with AVX - Windows
; FullOpts code
; FullOpts code
; optimized code
; optimized code
; rbp based frame
; rbp based frame
; fully interruptible
; fully interruptible
; No matching PGO data
; No matching PGO data
; Final local variable assignments
; Final local variable assignments
;
;
; V00 TypeCtx [V00,T05] ( 7, 5.56) long -> rsi single-def
; V00 TypeCtx [V00,T05] ( 7, 5.56) long -> rsi single-def
; V01 arg0 [V01,T06] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V01 arg0 [V01,T06] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 arg1 [V02,T01] ( 5, 19 ) ref -> rbx class-hnd single-def <System.Func`2[System.__Canon,bool]>
; V02 arg1 [V02,T01] ( 5, 19 ) ref -> rbx class-hnd single-def <System.Func`2[System.__Canon,bool]>
; V03 arg2 [V03,T07] ( 4, 4 ) byref -> r14 single-def
; V03 arg2 [V03,T07] ( 4, 4 ) byref -> r14 single-def
コピー
コピー済み
コピー
コピー済み
; V04 loc0 [V04,T02] ( 7, 20 ) ref -> [rbp-
38H]
class-hnd EH-live single-def <<unknown class>>
; V04 loc0 [V04,T02] ( 7, 20 ) ref -> [rbp-
0x38]
class-hnd EH-live single-def <<unknown class>>
; V05 loc1 [V05,T03] ( 3, 17 ) ref -> rsi class-hnd <System.__Canon>
; V05 loc1 [V05,T03] ( 3, 17 ) ref -> rsi class-hnd <System.__Canon>
コピー
コピー済み
コピー
コピー済み
; V06 loc2 [V06,T13] ( 2, 2 ) ref -> [rbp-
40H]
do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon>
; V06 loc2 [V06,T13] ( 2, 2 ) ref -> [rbp-
0x40]
do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon>
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
コピー
コピー済み
コピー
コピー済み
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+
00H]
do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+
0x00]
do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V10 tmp2 [V10,T08] ( 4, 6 ) long -> r11 "VirtualCall with runtime lookup"
; V10 tmp2 [V10,T08] ( 4, 6 ) long -> r11 "VirtualCall with runtime lookup"
;* V11 tmp3 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V11 tmp3 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V12 tmp4 [V12,T00] ( 3, 48 ) long -> r11 "VirtualCall with runtime lookup"
; V12 tmp4 [V12,T00] ( 3, 48 ) long -> r11 "VirtualCall with runtime lookup"
コピー
コピー済み
コピー
コピー済み
; V13 PSPSym [V13,T14] ( 1, 1 ) long -> [rbp-
50H]
do-not-enreg[V] "PSPSym"
; V13 PSPSym [V13,T14] ( 1, 1 ) long -> [rbp-
0x50]
do-not-enreg[V] "PSPSym"
; V14 cse0 [V14,T04] ( 2, 9 ) long -> r15 "CSE - aggressive"
; V14 cse0 [V14,T04] ( 2, 9 ) long -> r15 "CSE - aggressive"
; V15 rat0 [V15,T09] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable"
; V15 rat0 [V15,T09] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable"
; V16 rat1 [V16,T12] ( 3, 4 ) long -> r15 "runtime lookup"
; V16 rat1 [V16,T12] ( 3, 4 ) long -> r15 "runtime lookup"
; V17 rat2 [V17,T10] ( 3, 5.60) long -> rcx "spilling expr"
; V17 rat2 [V17,T10] ( 3, 5.60) long -> rcx "spilling expr"
; V18 rat3 [V18,T11] ( 3, 4.48) long -> r15 "fgMakeTemp is creating a new local variable"
; V18 rat3 [V18,T11] ( 3, 4.48) long -> r15 "fgMakeTemp is creating a new local variable"
;
;
; Lcl frame size = 72
; Lcl frame size = 72
コピー
コピー済み
コピー
コピー済み
G_M29817_IG01: ;; offset=0
000
H
G_M29817_IG01: ;; offset=0
x
000
0
push rbp
push rbp
push r15
push r15
push r14
push r14
push rdi
push rdi
push rsi
push rsi
push rbx
push rbx
sub rsp, 72
sub rsp, 72
コピー
コピー済み
コピー
コピー済み
lea rbp, [rsp+
70H
]
lea rbp, [rsp+
0x70
]
xor eax, eax
xor eax, eax
コピー
コピー済み
コピー
コピー済み
mov qword ptr [rbp-
40H
], rax
mov qword ptr [rbp-
0x40
], rax
mov qword ptr [rbp-
50H
], rsp
mov qword ptr [rbp-
0x50
], rsp
mov qword ptr [rbp-
30H
], rcx
mov qword ptr [rbp-
0x30
], rcx
mov rsi, rcx
mov rsi, rcx
mov rdi, rdx
mov rdi, rdx
mov rbx, r8
mov rbx, r8
mov r14, r9
mov r14, r9
;; size=43 bbWeight=1 PerfScore 11.00
;; size=43 bbWeight=1 PerfScore 11.00
コピー
コピー済み
コピー
コピー済み
G_M29817_IG02: ;; offset=
002B
H
G_M29817_IG02: ;; offset=
0x
002B
test rdi, rdi
test rdi, rdi
je G_M29817_IG20
je G_M29817_IG20
test rbx, rbx
test rbx, rbx
je G_M29817_IG21
je G_M29817_IG21
コピー
コピー済み
コピー
コピー済み
mov rcx, qword ptr [rsi+
38H
]
mov rcx, qword ptr [rsi+
0x38
]
mov r11, qword ptr [rcx+
10H
]
mov r11, qword ptr [rcx+
0x10
]
test r11, r11
test r11, r11
je SHORT G_M29817_IG04
je SHORT G_M29817_IG04
;; size=31 bbWeight=1 PerfScore 7.75
;; size=31 bbWeight=1 PerfScore 7.75
コピー
コピー済み
コピー
コピー済み
G_M29817_IG03: ;; offset=
004A
H
G_M29817_IG03: ;; offset=
0x
004A
jmp SHORT G_M29817_IG05
jmp SHORT G_M29817_IG05
;; size=2 bbWeight=0.80 PerfScore 1.60
;; size=2 bbWeight=0.80 PerfScore 1.60
コピー
コピー済み
コピー
コピー済み
G_M29817_IG04: ;; offset=
004C
H
G_M29817_IG04: ;; offset=
0x
004C
mov rcx, rsi
mov rcx, rsi
mov rdx, 0x7FFB4C0E2FA8 ; global ptr
mov rdx, 0x7FFB4C0E2FA8 ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov r11, rax
mov r11, rax
;; size=21 bbWeight=0.20 PerfScore 0.35
;; size=21 bbWeight=0.20 PerfScore 0.35
コピー
コピー済み
コピー
コピー済み
G_M29817_IG05: ;; offset=
0061
H
G_M29817_IG05: ;; offset=
0x
0061
mov rcx, rdi
mov rcx, rdi
call [r11]
call [r11]
mov rdi, rax
mov rdi, rax
コピー
コピー済み
コピー
コピー済み
mov gword ptr [rbp-
38H
], rdi
mov gword ptr [rbp-
0x38
], rdi
;; size=13 bbWeight=1 PerfScore 4.50
;; size=13 bbWeight=1 PerfScore 4.50
コピー
コピー済み
コピー
コピー済み
G_M29817_IG06: ;; offset=
006E
H
G_M29817_IG06: ;; offset=
0x
006E
mov rcx, rdi
mov rcx, rdi
mov r11, 0x7FFB4B840018 ; code for <unknown method>
mov r11, 0x7FFB4B840018 ; code for <unknown method>
call [r11]<unknown method>
call [r11]<unknown method>
test eax, eax
test eax, eax
je SHORT G_M29817_IG13
je SHORT G_M29817_IG13
コピー
コピー済み
コピー
コピー済み
mov rcx, qword ptr [rsi+
38H
]
mov rcx, qword ptr [rsi+
0x38
]
cmp qword ptr [rcx+
08H
], 24
cmp qword ptr [rcx+
0x08
], 24
jle SHORT G_M29817_IG09
jle SHORT G_M29817_IG09
;; size=31 bbWeight=1 PerfScore 10.75
;; size=31 bbWeight=1 PerfScore 10.75
コピー
コピー済み
コピー
コピー済み
G_M29817_IG07: ;; offset=
008D
H
G_M29817_IG07: ;; offset=
0x
008D
mov r15, qword ptr [rcx+
18H
]
mov r15, qword ptr [rcx+
0x18
]
test r15, r15
test r15, r15
je SHORT G_M29817_IG09
je SHORT G_M29817_IG09
;; size=9 bbWeight=0.80 PerfScore 2.60
;; size=9 bbWeight=0.80 PerfScore 2.60
コピー
コピー済み
コピー
コピー済み
G_M29817_IG08: ;; offset=
0096
H
G_M29817_IG08: ;; offset=
0x
0096
jmp SHORT G_M29817_IG10
jmp SHORT G_M29817_IG10
;; size=2 bbWeight=0.64 PerfScore 1.28
;; size=2 bbWeight=0.64 PerfScore 1.28
コピー
コピー済み
コピー
コピー済み
G_M29817_IG09: ;; offset=
0098
H
G_M29817_IG09: ;; offset=
0x
0098
mov rcx, rsi
mov rcx, rsi
mov rdx, 0x7FFB4C0E3270 ; global ptr
mov rdx, 0x7FFB4C0E3270 ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov r15, rax
mov r15, rax
;; size=21 bbWeight=0.36 PerfScore 0.63
;; size=21 bbWeight=0.36 PerfScore 0.63
コピー
コピー済み
コピー
コピー済み
G_M29817_IG10: ;; offset=
00AD
H
G_M29817_IG10: ;; offset=
0x
00AD
mov r11, r15
mov r11, r15
mov rcx, rdi
mov rcx, rdi
call [r11]
call [r11]
mov rsi, rax
mov rsi, rax
mov rdx, rsi
mov rdx, rsi
コピー
コピー済み
コピー
コピー済み
mov rcx, gword ptr [rbx+
08H
]
mov rcx, gword ptr [rbx+
0x08
]
call [rbx+
18H
]<unknown method>
call [rbx+
0x18
]<unknown method>
test eax, eax
test eax, eax
jne SHORT G_M29817_IG12
jne SHORT G_M29817_IG12
mov rcx, rdi
mov rcx, rdi
mov r11, 0x7FFB4B840018 ; code for <unknown method>
mov r11, 0x7FFB4B840018 ; code for <unknown method>
call [r11]<unknown method>
call [r11]<unknown method>
test eax, eax
test eax, eax
jne SHORT G_M29817_IG10
jne SHORT G_M29817_IG10
;; size=46 bbWeight=8 PerfScore 120.00
;; size=46 bbWeight=8 PerfScore 120.00
コピー
コピー済み
コピー
コピー済み
G_M29817_IG11: ;; offset=
00DB
H
G_M29817_IG11: ;; offset=
0x
00DB
jmp SHORT G_M29817_IG13
jmp SHORT G_M29817_IG13
;; size=2 bbWeight=1 PerfScore 2.00
;; size=2 bbWeight=1 PerfScore 2.00
コピー
コピー済み
コピー
コピー済み
G_M29817_IG12: ;; offset=
00DD
H
G_M29817_IG12: ;; offset=
0x
00DD
mov byte ptr [r14], 1
mov byte ptr [r14], 1
コピー
コピー済み
コピー
コピー済み
mov gword ptr [rbp-
40H
], rsi
mov gword ptr [rbp-
0x40
], rsi
jmp SHORT G_M29817_IG14
jmp SHORT G_M29817_IG14
;; size=10 bbWeight=1 PerfScore 4.00
;; size=10 bbWeight=1 PerfScore 4.00
コピー
コピー済み
コピー
コピー済み
G_M29817_IG13: ;; offset=
00E7
H
G_M29817_IG13: ;; offset=
0x
00E7
mov rcx, rdi
mov rcx, rdi
mov r11, 0x7FFB4B840020 ; code for <unknown method>
mov r11, 0x7FFB4B840020 ; code for <unknown method>
call [r11]<unknown method>
call [r11]<unknown method>
jmp SHORT G_M29817_IG18
jmp SHORT G_M29817_IG18
;; size=18 bbWeight=1 PerfScore 5.50
;; size=18 bbWeight=1 PerfScore 5.50
コピー
コピー済み
コピー
コピー済み
G_M29817_IG14: ;; offset=
00F9
H
G_M29817_IG14: ;; offset=
0x
00F9
mov rcx, rsp
mov rcx, rsp
call G_M29817_IG22
call G_M29817_IG22
;; size=8 bbWeight=1 PerfScore 1.25
;; size=8 bbWeight=1 PerfScore 1.25
コピー
コピー済み
コピー
コピー済み
G_M29817_IG15: ;; offset=
0101
H
G_M29817_IG15: ;; offset=
0x
0101
nop
nop
;; size=1 bbWeight=1 PerfScore 0.25
;; size=1 bbWeight=1 PerfScore 0.25
コピー
コピー済み
コピー
コピー済み
G_M29817_IG16: ;; offset=
0102
H
G_M29817_IG16: ;; offset=
0x
0102
mov rax, gword ptr [rbp-
40H
]
mov rax, gword ptr [rbp-
0x40
]
;; size=4 bbWeight=1 PerfScore 1.00
;; size=4 bbWeight=1 PerfScore 1.00
コピー
コピー済み
コピー
コピー済み
G_M29817_IG17: ;; offset=
0106
H
G_M29817_IG17: ;; offset=
0x
0106
add rsp, 72
add rsp, 72
pop rbx
pop rbx
pop rsi
pop rsi
pop rdi
pop rdi
pop r14
pop r14
pop r15
pop r15
pop rbp
pop rbp
ret
ret
;; size=13 bbWeight=1 PerfScore 4.25
;; size=13 bbWeight=1 PerfScore 4.25
コピー
コピー済み
コピー
コピー済み
G_M29817_IG18: ;; offset=
0113
H
G_M29817_IG18: ;; offset=
0x
0113
mov byte ptr [r14], 0
mov byte ptr [r14], 0
xor rax, rax
xor rax, rax
;; size=6 bbWeight=1 PerfScore 1.25
;; size=6 bbWeight=1 PerfScore 1.25
コピー
コピー済み
コピー
コピー済み
G_M29817_IG19: ;; offset=
0119
H
G_M29817_IG19: ;; offset=
0x
0119
add rsp, 72
add rsp, 72
pop rbx
pop rbx
pop rsi
pop rsi
pop rdi
pop rdi
pop r14
pop r14
pop r15
pop r15
pop rbp
pop rbp
ret
ret
;; size=13 bbWeight=1 PerfScore 4.25
;; size=13 bbWeight=1 PerfScore 4.25
コピー
コピー済み
コピー
コピー済み
G_M29817_IG20: ;; offset=
0126
H
G_M29817_IG20: ;; offset=
0x
0126
mov ecx, 16
mov ecx, 16
call [System.Linq.ThrowHelper:ThrowArgumentNullException(int)]
call [System.Linq.ThrowHelper:ThrowArgumentNullException(int)]
int3
int3
;; size=12 bbWeight=0 PerfScore 0.00
;; size=12 bbWeight=0 PerfScore 0.00
コピー
コピー済み
コピー
コピー済み
G_M29817_IG21: ;; offset=
0132
H
G_M29817_IG21: ;; offset=
0x
0132
mov ecx, 12
mov ecx, 12
call [System.Linq.ThrowHelper:ThrowArgumentNullException(int)]
call [System.Linq.ThrowHelper:ThrowArgumentNullException(int)]
int3
int3
;; size=12 bbWeight=0 PerfScore 0.00
;; size=12 bbWeight=0 PerfScore 0.00
コピー
コピー済み
コピー
コピー済み
G_M29817_IG22: ;; offset=
013E
H
G_M29817_IG22: ;; offset=
0x
013E
push rbp
push rbp
push r15
push r15
push r14
push r14
push rdi
push rdi
push rsi
push rsi
push rbx
push rbx
sub rsp, 40
sub rsp, 40
コピー
コピー済み
コピー
コピー済み
mov rbp, qword ptr [rcx+
20H
]
mov rbp, qword ptr [rcx+
0x20
]
mov qword ptr [rsp+
20H
], rbp
mov qword ptr [rsp+
0x20
], rbp
lea rbp, [rbp+
70H
]
lea rbp, [rbp+
0x70
]
;; size=25 bbWeight=1 PerfScore 9.75
;; size=25 bbWeight=1 PerfScore 9.75
コピー
コピー済み
コピー
コピー済み
G_M29817_IG23: ;; offset=
0157
H
G_M29817_IG23: ;; offset=
0x
0157
mov rdi, gword ptr [rbp-
38H
]
mov rdi, gword ptr [rbp-
0x38
]
test rdi, rdi
test rdi, rdi
je SHORT G_M29817_IG24
je SHORT G_M29817_IG24
mov rcx, rdi
mov rcx, rdi
mov r11, 0x7FFB4B840020 ; code for <unknown method>
mov r11, 0x7FFB4B840020 ; code for <unknown method>
call [r11]<unknown method>
call [r11]<unknown method>
;; size=25 bbWeight=1 PerfScore 5.75
;; size=25 bbWeight=1 PerfScore 5.75
コピー
コピー済み
コピー
コピー済み
G_M29817_IG24: ;; offset=
0170
H
G_M29817_IG24: ;; offset=
0x
0170
nop
nop
;; size=1 bbWeight=1 PerfScore 0.25
;; size=1 bbWeight=1 PerfScore 0.25
コピー
コピー済み
コピー
コピー済み
G_M29817_IG25: ;; offset=
0171
H
G_M29817_IG25: ;; offset=
0x
0171
add rsp, 40
add rsp, 40
pop rbx
pop rbx
pop rsi
pop rsi
pop rdi
pop rdi
pop r14
pop r14
pop r15
pop r15
pop rbp
pop rbp
ret
ret
;; size=13 bbWeight=1 PerfScore 4.25
;; size=13 bbWeight=1 PerfScore 4.25
; Total bytes of code 382, prolog size 43, PerfScore 242.41, instruction count 124, allocated bytes for code 382 (MethodHash=84618b86) for method System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,bool],byref):System.__Canon (FullOpts)
; Total bytes of code 382, prolog size 43, PerfScore 242.41, instruction count 124, allocated bytes for code 382 (MethodHash=84618b86) for method System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,bool],byref):System.__Canon (FullOpts)
; ============================================================
; ============================================================
保存された差分
原文
ファイルを開く
; Assembly listing for method System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,bool],byref):System.__Canon (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Windows ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No matching PGO data ; Final local variable assignments ; ; V00 TypeCtx [V00,T05] ( 7, 5.56) long -> rsi single-def ; V01 arg0 [V01,T06] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]> ; V02 arg1 [V02,T01] ( 5, 19 ) ref -> rbx class-hnd single-def <System.Func`2[System.__Canon,bool]> ; V03 arg2 [V03,T07] ( 4, 4 ) byref -> r14 single-def ; V04 loc0 [V04,T02] ( 7, 20 ) ref -> [rbp-38H] class-hnd EH-live single-def <<unknown class>> ; V05 loc1 [V05,T03] ( 3, 17 ) ref -> rsi class-hnd <System.__Canon> ; V06 loc2 [V06,T13] ( 2, 2 ) ref -> [rbp-40H] do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon> ;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V10 tmp2 [V10,T08] ( 4, 6 ) long -> r11 "VirtualCall with runtime lookup" ;* V11 tmp3 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V12 tmp4 [V12,T00] ( 3, 48 ) long -> r11 "VirtualCall with runtime lookup" ; V13 PSPSym [V13,T14] ( 1, 1 ) long -> [rbp-50H] do-not-enreg[V] "PSPSym" ; V14 cse0 [V14,T04] ( 2, 9 ) long -> r15 "CSE - aggressive" ; V15 rat0 [V15,T09] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable" ; V16 rat1 [V16,T12] ( 3, 4 ) long -> r15 "runtime lookup" ; V17 rat2 [V17,T10] ( 3, 5.60) long -> rcx "spilling expr" ; V18 rat3 [V18,T11] ( 3, 4.48) long -> r15 "fgMakeTemp is creating a new local variable" ; ; Lcl frame size = 72 G_M29817_IG01: ;; offset=0000H push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 72 lea rbp, [rsp+70H] xor eax, eax mov qword ptr [rbp-40H], rax mov qword ptr [rbp-50H], rsp mov qword ptr [rbp-30H], rcx mov rsi, rcx mov rdi, rdx mov rbx, r8 mov r14, r9 ;; size=43 bbWeight=1 PerfScore 11.00 G_M29817_IG02: ;; offset=002BH test rdi, rdi je G_M29817_IG20 test rbx, rbx je G_M29817_IG21 mov rcx, qword ptr [rsi+38H] mov r11, qword ptr [rcx+10H] test r11, r11 je SHORT G_M29817_IG04 ;; size=31 bbWeight=1 PerfScore 7.75 G_M29817_IG03: ;; offset=004AH jmp SHORT G_M29817_IG05 ;; size=2 bbWeight=0.80 PerfScore 1.60 G_M29817_IG04: ;; offset=004CH mov rcx, rsi mov rdx, 0x7FFB4C0E2FA8 ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax ;; size=21 bbWeight=0.20 PerfScore 0.35 G_M29817_IG05: ;; offset=0061H mov rcx, rdi call [r11] mov rdi, rax mov gword ptr [rbp-38H], rdi ;; size=13 bbWeight=1 PerfScore 4.50 G_M29817_IG06: ;; offset=006EH mov rcx, rdi mov r11, 0x7FFB4B840018 ; code for <unknown method> call [r11]<unknown method> test eax, eax je SHORT G_M29817_IG13 mov rcx, qword ptr [rsi+38H] cmp qword ptr [rcx+08H], 24 jle SHORT G_M29817_IG09 ;; size=31 bbWeight=1 PerfScore 10.75 G_M29817_IG07: ;; offset=008DH mov r15, qword ptr [rcx+18H] test r15, r15 je SHORT G_M29817_IG09 ;; size=9 bbWeight=0.80 PerfScore 2.60 G_M29817_IG08: ;; offset=0096H jmp SHORT G_M29817_IG10 ;; size=2 bbWeight=0.64 PerfScore 1.28 G_M29817_IG09: ;; offset=0098H mov rcx, rsi mov rdx, 0x7FFB4C0E3270 ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r15, rax ;; size=21 bbWeight=0.36 PerfScore 0.63 G_M29817_IG10: ;; offset=00ADH mov r11, r15 mov rcx, rdi call [r11] mov rsi, rax mov rdx, rsi mov rcx, gword ptr [rbx+08H] call [rbx+18H]<unknown method> test eax, eax jne SHORT G_M29817_IG12 mov rcx, rdi mov r11, 0x7FFB4B840018 ; code for <unknown method> call [r11]<unknown method> test eax, eax jne SHORT G_M29817_IG10 ;; size=46 bbWeight=8 PerfScore 120.00 G_M29817_IG11: ;; offset=00DBH jmp SHORT G_M29817_IG13 ;; size=2 bbWeight=1 PerfScore 2.00 G_M29817_IG12: ;; offset=00DDH mov byte ptr [r14], 1 mov gword ptr [rbp-40H], rsi jmp SHORT G_M29817_IG14 ;; size=10 bbWeight=1 PerfScore 4.00 G_M29817_IG13: ;; offset=00E7H mov rcx, rdi mov r11, 0x7FFB4B840020 ; code for <unknown method> call [r11]<unknown method> jmp SHORT G_M29817_IG18 ;; size=18 bbWeight=1 PerfScore 5.50 G_M29817_IG14: ;; offset=00F9H mov rcx, rsp call G_M29817_IG22 ;; size=8 bbWeight=1 PerfScore 1.25 G_M29817_IG15: ;; offset=0101H nop ;; size=1 bbWeight=1 PerfScore 0.25 G_M29817_IG16: ;; offset=0102H mov rax, gword ptr [rbp-40H] ;; size=4 bbWeight=1 PerfScore 1.00 G_M29817_IG17: ;; offset=0106H add rsp, 72 pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; size=13 bbWeight=1 PerfScore 4.25 G_M29817_IG18: ;; offset=0113H mov byte ptr [r14], 0 xor rax, rax ;; size=6 bbWeight=1 PerfScore 1.25 G_M29817_IG19: ;; offset=0119H add rsp, 72 pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; size=13 bbWeight=1 PerfScore 4.25 G_M29817_IG20: ;; offset=0126H mov ecx, 16 call [System.Linq.ThrowHelper:ThrowArgumentNullException(int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00 G_M29817_IG21: ;; offset=0132H mov ecx, 12 call [System.Linq.ThrowHelper:ThrowArgumentNullException(int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00 G_M29817_IG22: ;; offset=013EH push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 40 mov rbp, qword ptr [rcx+20H] mov qword ptr [rsp+20H], rbp lea rbp, [rbp+70H] ;; size=25 bbWeight=1 PerfScore 9.75 G_M29817_IG23: ;; offset=0157H mov rdi, gword ptr [rbp-38H] test rdi, rdi je SHORT G_M29817_IG24 mov rcx, rdi mov r11, 0x7FFB4B840020 ; code for <unknown method> call [r11]<unknown method> ;; size=25 bbWeight=1 PerfScore 5.75 G_M29817_IG24: ;; offset=0170H nop ;; size=1 bbWeight=1 PerfScore 0.25 G_M29817_IG25: ;; offset=0171H add rsp, 40 pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; size=13 bbWeight=1 PerfScore 4.25 ; Total bytes of code 382, prolog size 43, PerfScore 242.41, instruction count 124, allocated bytes for code 382 (MethodHash=84618b86) for method System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,bool],byref):System.__Canon (FullOpts) ; ============================================================
変更されたテキスト
ファイルを開く
; Assembly listing for method System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,bool],byref):System.__Canon (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Windows ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No matching PGO data ; Final local variable assignments ; ; V00 TypeCtx [V00,T05] ( 7, 5.56) long -> rsi single-def ; V01 arg0 [V01,T06] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]> ; V02 arg1 [V02,T01] ( 5, 19 ) ref -> rbx class-hnd single-def <System.Func`2[System.__Canon,bool]> ; V03 arg2 [V03,T07] ( 4, 4 ) byref -> r14 single-def ; V04 loc0 [V04,T02] ( 7, 20 ) ref -> [rbp-0x38] class-hnd EH-live single-def <<unknown class>> ; V05 loc1 [V05,T03] ( 3, 17 ) ref -> rsi class-hnd <System.__Canon> ; V06 loc2 [V06,T13] ( 2, 2 ) ref -> [rbp-0x40] do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon> ;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V10 tmp2 [V10,T08] ( 4, 6 ) long -> r11 "VirtualCall with runtime lookup" ;* V11 tmp3 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V12 tmp4 [V12,T00] ( 3, 48 ) long -> r11 "VirtualCall with runtime lookup" ; V13 PSPSym [V13,T14] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" ; V14 cse0 [V14,T04] ( 2, 9 ) long -> r15 "CSE - aggressive" ; V15 rat0 [V15,T09] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable" ; V16 rat1 [V16,T12] ( 3, 4 ) long -> r15 "runtime lookup" ; V17 rat2 [V17,T10] ( 3, 5.60) long -> rcx "spilling expr" ; V18 rat3 [V18,T11] ( 3, 4.48) long -> r15 "fgMakeTemp is creating a new local variable" ; ; Lcl frame size = 72 G_M29817_IG01: ;; offset=0x0000 push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 72 lea rbp, [rsp+0x70] xor eax, eax mov qword ptr [rbp-0x40], rax mov qword ptr [rbp-0x50], rsp mov qword ptr [rbp-0x30], rcx mov rsi, rcx mov rdi, rdx mov rbx, r8 mov r14, r9 ;; size=43 bbWeight=1 PerfScore 11.00 G_M29817_IG02: ;; offset=0x002B test rdi, rdi je G_M29817_IG20 test rbx, rbx je G_M29817_IG21 mov rcx, qword ptr [rsi+0x38] mov r11, qword ptr [rcx+0x10] test r11, r11 je SHORT G_M29817_IG04 ;; size=31 bbWeight=1 PerfScore 7.75 G_M29817_IG03: ;; offset=0x004A jmp SHORT G_M29817_IG05 ;; size=2 bbWeight=0.80 PerfScore 1.60 G_M29817_IG04: ;; offset=0x004C mov rcx, rsi mov rdx, 0x7FFB4C0E2FA8 ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax ;; size=21 bbWeight=0.20 PerfScore 0.35 G_M29817_IG05: ;; offset=0x0061 mov rcx, rdi call [r11] mov rdi, rax mov gword ptr [rbp-0x38], rdi ;; size=13 bbWeight=1 PerfScore 4.50 G_M29817_IG06: ;; offset=0x006E mov rcx, rdi mov r11, 0x7FFB4B840018 ; code for <unknown method> call [r11]<unknown method> test eax, eax je SHORT G_M29817_IG13 mov rcx, qword ptr [rsi+0x38] cmp qword ptr [rcx+0x08], 24 jle SHORT G_M29817_IG09 ;; size=31 bbWeight=1 PerfScore 10.75 G_M29817_IG07: ;; offset=0x008D mov r15, qword ptr [rcx+0x18] test r15, r15 je SHORT G_M29817_IG09 ;; size=9 bbWeight=0.80 PerfScore 2.60 G_M29817_IG08: ;; offset=0x0096 jmp SHORT G_M29817_IG10 ;; size=2 bbWeight=0.64 PerfScore 1.28 G_M29817_IG09: ;; offset=0x0098 mov rcx, rsi mov rdx, 0x7FFB4C0E3270 ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r15, rax ;; size=21 bbWeight=0.36 PerfScore 0.63 G_M29817_IG10: ;; offset=0x00AD mov r11, r15 mov rcx, rdi call [r11] mov rsi, rax mov rdx, rsi mov rcx, gword ptr [rbx+0x08] call [rbx+0x18]<unknown method> test eax, eax jne SHORT G_M29817_IG12 mov rcx, rdi mov r11, 0x7FFB4B840018 ; code for <unknown method> call [r11]<unknown method> test eax, eax jne SHORT G_M29817_IG10 ;; size=46 bbWeight=8 PerfScore 120.00 G_M29817_IG11: ;; offset=0x00DB jmp SHORT G_M29817_IG13 ;; size=2 bbWeight=1 PerfScore 2.00 G_M29817_IG12: ;; offset=0x00DD mov byte ptr [r14], 1 mov gword ptr [rbp-0x40], rsi jmp SHORT G_M29817_IG14 ;; size=10 bbWeight=1 PerfScore 4.00 G_M29817_IG13: ;; offset=0x00E7 mov rcx, rdi mov r11, 0x7FFB4B840020 ; code for <unknown method> call [r11]<unknown method> jmp SHORT G_M29817_IG18 ;; size=18 bbWeight=1 PerfScore 5.50 G_M29817_IG14: ;; offset=0x00F9 mov rcx, rsp call G_M29817_IG22 ;; size=8 bbWeight=1 PerfScore 1.25 G_M29817_IG15: ;; offset=0x0101 nop ;; size=1 bbWeight=1 PerfScore 0.25 G_M29817_IG16: ;; offset=0x0102 mov rax, gword ptr [rbp-0x40] ;; size=4 bbWeight=1 PerfScore 1.00 G_M29817_IG17: ;; offset=0x0106 add rsp, 72 pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; size=13 bbWeight=1 PerfScore 4.25 G_M29817_IG18: ;; offset=0x0113 mov byte ptr [r14], 0 xor rax, rax ;; size=6 bbWeight=1 PerfScore 1.25 G_M29817_IG19: ;; offset=0x0119 add rsp, 72 pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; size=13 bbWeight=1 PerfScore 4.25 G_M29817_IG20: ;; offset=0x0126 mov ecx, 16 call [System.Linq.ThrowHelper:ThrowArgumentNullException(int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00 G_M29817_IG21: ;; offset=0x0132 mov ecx, 12 call [System.Linq.ThrowHelper:ThrowArgumentNullException(int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00 G_M29817_IG22: ;; offset=0x013E push rbp push r15 push r14 push rdi push rsi push rbx sub rsp, 40 mov rbp, qword ptr [rcx+0x20] mov qword ptr [rsp+0x20], rbp lea rbp, [rbp+0x70] ;; size=25 bbWeight=1 PerfScore 9.75 G_M29817_IG23: ;; offset=0x0157 mov rdi, gword ptr [rbp-0x38] test rdi, rdi je SHORT G_M29817_IG24 mov rcx, rdi mov r11, 0x7FFB4B840020 ; code for <unknown method> call [r11]<unknown method> ;; size=25 bbWeight=1 PerfScore 5.75 G_M29817_IG24: ;; offset=0x0170 nop ;; size=1 bbWeight=1 PerfScore 0.25 G_M29817_IG25: ;; offset=0x0171 add rsp, 40 pop rbx pop rsi pop rdi pop r14 pop r15 pop rbp ret ;; size=13 bbWeight=1 PerfScore 4.25 ; Total bytes of code 382, prolog size 43, PerfScore 242.41, instruction count 124, allocated bytes for code 382 (MethodHash=84618b86) for method System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,bool],byref):System.__Canon (FullOpts) ; ============================================================
違いを見つける