delegate diff

Created Diff never expires
136 removals
200 lines
152 additions
215 lines
; Assembly listing for method MyBenchmarks:EqualsTrue():bool:this (Tier1)
; Assembly listing for method MyBenchmarks:EqualsTrue():bool:this (Tier1)
; Emitting BLENDED_CODE for x64 + VEX + EVEX on Unix
; Emitting BLENDED_CODE for x64 + VEX + EVEX on Unix
; Tier1 code
; Tier1 code
; optimized code
; optimized code
; optimized using Synthesized PGO
; optimized using Synthesized PGO
; rbp based frame
; rbp based frame
; fully interruptible
; fully interruptible
; with Synthesized PGO: fgCalledCount is 100
; with Synthesized PGO: fgCalledCount is 100
; No PGO data
; No PGO data
; 6 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; 8 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
G_M000_IG01: ;; offset=0x0000
G_M000_IG01: ;; offset=0x0000
push rbp
push rbp
push r15
push r15
push r14
push rbx
push rbx
lea rbp, [rsp+0x10]
push rax
G_M000_IG02: ;; offset=0x0009
lea rbp, [rsp+0x20]
G_M000_IG02: ;; offset=0x000C
mov rbx, gword ptr [rdi+0x10]
mov rbx, gword ptr [rdi+0x10]
mov r15, gword ptr [rdi+0x18]
mov r15, gword ptr [rdi+0x18]
test r15, r15
test r15, r15
je SHORT G_M000_IG06
je G_M000_IG07
cmp r15, rbx
cmp r15, rbx
je G_M000_IG26
je G_M000_IG28
test rbx, rbx
test rbx, rbx
je SHORT G_M000_IG07
je G_M000_IG08
cmp qword ptr [r15+0x30], 0
cmp qword ptr [r15+0x30], 0
jne SHORT G_M000_IG08
jne G_M000_IG09
cmp gword ptr [r15+0x28], 0
mov r14, gword ptr [r15+0x28]
jne G_M000_IG16
test r14, r14
G_M000_IG03: ;; offset=0x0036
jne G_M000_IG17
G_M000_IG03: ;; offset=0x0047
mov rsi, gword ptr [rbx+0x28]
mov rsi, gword ptr [rbx+0x28]
mov rdi, 0x75404237AF08
mov rdi, 0x74F73358AF48
mov rax, 0x754042346880
mov rax, 0x74F733556880
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
test rax, rax
jne G_M000_IG10
jne G_M000_IG11
mov rsi, gword ptr [r15+0x08]
mov rdi, gword ptr [r15+0x08]
cmp rsi, gword ptr [rbx+0x08]
cmp rdi, gword ptr [rbx+0x08]
jne G_M000_IG20
jne G_M000_IG21
mov rsi, qword ptr [r15+0x18]
mov rdi, qword ptr [r15+0x18]
cmp rsi, qword ptr [rbx+0x18]
cmp rdi, qword ptr [rbx+0x18]
jne G_M000_IG20
jne G_M000_IG21
mov rsi, qword ptr [r15+0x20]
mov rdi, qword ptr [r15+0x20]
cmp rsi, qword ptr [rbx+0x20]
cmp rdi, qword ptr [rbx+0x20]
jne G_M000_IG20
jne G_M000_IG21
G_M000_IG04: ;; offset=0x0083
G_M000_IG04: ;; offset=0x0094
mov eax, 1
mov r14d, 1
G_M000_IG05: ;; offset=0x0088
G_M000_IG05: ;; offset=0x009A
mov eax, r14d
G_M000_IG06: ;; offset=0x009D
add rsp, 8
pop rbx
pop rbx
pop r14
pop r15
pop r15
pop rbp
pop rbp
ret
ret
G_M000_IG06: ;; offset=0x008D
G_M000_IG07: ;; offset=0x00A8
test rbx, rbx
test rbx, rbx
sete al
sete al
movzx rax, al
movzx rax, al
jmp SHORT G_M000_IG05
jmp SHORT G_M000_IG06
G_M000_IG07: ;; offset=0x0098
G_M000_IG08: ;; offset=0x00B3
xor eax, eax
xor r14d, r14d
jmp SHORT G_M000_IG05
jmp SHORT G_M000_IG05
G_M000_IG08: ;; offset=0x009C
G_M000_IG09: ;; offset=0x00B8
mov rdi, r15
mov rdi, r15
mov rax, 0x75404277F420
mov rax, 0x74F73398F420
call [rax]System.MulticastDelegate:InvocationListLogicallyNull():bool:this
call [rax]System.MulticastDelegate:InvocationListLogicallyNull():bool:this
test eax, eax
test eax, eax
je SHORT G_M000_IG12
je SHORT G_M000_IG13
cmp qword ptr [r15+0x30], -1
cmp qword ptr [r15+0x30], -1
jne SHORT G_M000_IG09
jne SHORT G_M000_IG10
cmp qword ptr [rbx+0x30], -1
cmp qword ptr [rbx+0x30], -1
jne SHORT G_M000_IG07
jne SHORT G_M000_IG08
mov rsi, qword ptr [r15+0x18]
mov rsi, qword ptr [r15+0x18]
cmp rsi, qword ptr [rbx+0x18]
cmp rsi, qword ptr [rbx+0x18]
jne SHORT G_M000_IG07
jne SHORT G_M000_IG08
mov rsi, qword ptr [r15+0x20]
mov rsi, qword ptr [r15+0x20]
cmp rsi, qword ptr [rbx+0x20]
cmp rsi, qword ptr [rbx+0x20]
sete al
sete r14b
movzx rax, al
movzx r14, r14b
jmp SHORT G_M000_IG05
jmp SHORT G_M000_IG05
G_M000_IG09: ;; offset=0x00D7
G_M000_IG10: ;; offset=0x00F5
mov rsi, gword ptr [rbx+0x28]
mov rsi, gword ptr [rbx+0x28]
mov rdi, 0x75404237AF08
mov rdi, 0x74F73358AF48
mov rax, 0x754042346880
mov rax, 0x74F733556880
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
test rax, rax
je G_M000_IG17
je G_M000_IG18
G_M000_IG10: ;; offset=0x00FA
G_M000_IG11: ;; offset=0x0118
mov rsi, gword ptr [rbx+0x28]
mov rsi, gword ptr [rbx+0x28]
mov rdi, r15
mov rdi, r15
mov rax, 0x75404237B4C0
mov rax, 0x74F73358B508
G_M000_IG11: ;; offset=0x010B
G_M000_IG12: ;; offset=0x0129
add rsp, 8
pop rbx
pop rbx
pop r14
pop r15
pop r15
pop rbp
pop rbp
tail.jmp [rax]System.MulticastDelegate:Equals(System.Object):bool:this
tail.jmp [rax]System.MulticastDelegate:Equals(System.Object):bool:this
G_M000_IG12: ;; offset=0x0112
G_M000_IG13: ;; offset=0x0136
mov rsi, gword ptr [r15+0x28]
mov rsi, gword ptr [r15+0x28]
mov rdi, 0x75404237AF08
mov rdi, 0x74F73358AF48
mov rax, 0x754042346880
mov rax, 0x74F733556880
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
test rax, rax
je SHORT G_M000_IG14
je SHORT G_M000_IG15
mov rdi, rax
mov rdi, rax
mov rsi, rbx
mov rsi, rbx
mov rax, qword ptr [rax]
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x40]
mov rax, qword ptr [rax+0x40]
G_M000_IG13: ;; offset=0x013E
G_M000_IG14: ;; offset=0x0162
add rsp, 8
pop rbx
pop rbx
pop r14
pop r15
pop r15
pop rbp
pop rbp
tail.jmp [rax+0x10]System.Object:Equals(System.Object):bool:this
tail.jmp [rax+0x10]System.Object:Equals(System.Object):bool:this
G_M000_IG14: ;; offset=0x0146
G_M000_IG15: ;; offset=0x0170
mov rdi, r15
mov rdi, r15
mov rsi, rbx
mov rsi, rbx
mov rax, 0x754042805890
mov rax, 0x74F733A15890
G_M000_IG15: ;; offset=0x0156
G_M000_IG16: ;; offset=0x0180
add rsp, 8
pop rbx
pop rbx
pop r14
pop r15
pop r15
pop rbp
pop rbp
tail.jmp [rax]System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):bool:this
tail.jmp [rax]System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):bool:this
G_M000_IG16: ;; offset=0x015D
G_M000_IG17: ;; offset=0x018D
mov rsi, gword ptr [r15+0x28]
mov rsi, r14
mov rdi, 0x7540427ED4F8
mov rdi, 0x74F7339FD4F8
mov rax, 0x754042346880
mov rax, 0x74F733556880
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
test rax, rax
jne G_M000_IG03
jne G_M000_IG03
mov rsi, gword ptr [r15+0x28]
mov rsi, r14
mov rdi, 0x7540427A8BC0
mov rdi, 0x74F7339B8BC0
mov rax, 0x754042346880
mov rax, 0x74F733556880
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
jne G_M000_IG03
mov rsi, r14
mov rdi, 0x74F73399DB58
mov rax, 0x74F733556880
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
test rax, rax
jne G_M000_IG03
jne G_M000_IG03
mov rdi, gword ptr [r15+0x28]
mov rdi, gword ptr [r15+0x28]
mov rsi, gword ptr [rbx+0x28]
mov rsi, gword ptr [rbx+0x28]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
mov rax, qword ptr [rax+0x40]
call [rax+0x10]System.Object:Equals(System.Object):bool:this
call [rax+0x10]System.Object:Equals(System.Object):bool:this
test eax, eax
test eax, eax
je G_M000_IG07
je G_M000_IG08
G_M000_IG17: ;; offset=0x01BD
G_M000_IG18: ;; offset=0x020D
mov rdi, r15
mov rdi, r15
mov rsi, rbx
mov rsi, rbx
mov rax, 0x75404237AF80
mov rax, 0x74F73358AFC0
G_M000_IG18: ;; offset=0x01CD
G_M000_IG19: ;; offset=0x021D
add rsp, 8
pop rbx
pop rbx
pop r14
pop r15
pop r15
pop rbp
pop rbp
tail.jmp [rax]System.Delegate:Equals(System.Object):bool:this
tail.jmp [rax]System.Delegate:Equals(System.Object):bool:this
G_M000_IG19: ;; offset=0x01D4
G_M000_IG20: ;; offset=0x022A
xor eax, eax
xor r14d, r14d
jmp G_M000_IG05
jmp G_M000_IG05
G_M000_IG20: ;; offset=0x01DB
G_M000_IG21: ;; offset=0x0232
cmp qword ptr [r15+0x20], 0
cmp qword ptr [r15+0x20], 0
jne SHORT G_M000_IG21
jne SHORT G_M000_IG22
cmp qword ptr [rbx+0x20], 0
cmp qword ptr [rbx+0x20], 0
jne SHORT G_M000_IG19
jne SHORT G_M000_IG20
mov rsi, gword ptr [r15+0x08]
mov rdi, gword ptr [r15+0x08]
cmp rsi, gword ptr [rbx+0x08]
cmp rdi, gword ptr [rbx+0x08]
je SHORT G_M000_IG22
je SHORT G_M000_IG23
jmp SHORT G_M000_IG19
jmp SHORT G_M000_IG20
G_M000_IG21: ;; offset=0x01F5
G_M000_IG22: ;; offset=0x024C
cmp qword ptr [rbx+0x20], 0
cmp qword ptr [rbx+0x20], 0
je SHORT G_M000_IG19
je SHORT G_M000_IG20
mov rsi, qword ptr [r15+0x20]
mov rdi, qword ptr [r15+0x20]
cmp rsi, qword ptr [rbx+0x20]
cmp rdi, qword ptr [rbx+0x20]
je G_M000_IG04
je G_M000_IG04
G_M000_IG22: ;; offset=0x020A
G_M000_IG23: ;; offset=0x0261
mov rsi, gword ptr [r15+0x10]
cmp qword ptr [r15+0x10], 0
mov rdi, 0x7540424E23A0
jne SHORT G_M000_IG24
mov rax, 0x754042346880
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
je SHORT G_M000_IG24
mov rsi, gword ptr [rbx+0x10]
mov rdi, 0x7540424E23A0
mov rax, 0x754042346880
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
je SHORT G_M000_IG24
mov rdi, gword ptr [r15+0x10]
mov rsi, gword ptr [rbx+0x10]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
G_M000_IG23: ;; offset=0x0257
pop rbx
pop r15
pop rbp
tail.jmp [rax+0x10]System.Object:Equals(System.Object):bool:this
G_M000_IG24: ;; offset=0x025F
mov rdi, r15
mov rdi, r15
mov rsi, rbx
mov rax, 0x74F733A158A8
mov rax, 0x7540428058D8
call [rax]System.Delegate:GetMethodDesc():nint:this
G_M000_IG25: ;; offset=0x026F
mov r14, rax
pop rbx
jmp SHORT G_M000_IG25
pop r15
G_M000_IG24: ;; offset=0x027C
pop rbp
mov r14, qword ptr [r15+0x10]
tail.jmp [rax]System.Delegate:InternalEqualMethodHandles(System.Delegate,System.Delegate):bool
G_M000_IG25: ;; offset=0x0280
G_M000_IG26: ;; offset=0x0276
cmp qword ptr [rbx+0x10], 0
mov eax, 1
jne SHORT G_M000_IG26
mov rdi, rbx
mov rax, 0x74F733A158A8
call [rax]System.Delegate:GetMethodDesc():nint:this
mov r15, rax
jmp SHORT G_M000_IG27
G_M000_IG26: ;; offset=0x029B
mov r15, qword ptr [rbx+0x10]
G_M000_IG27: ;; offset=0x029F
cmp r14, r15
sete r14b
movzx r14, r14b
jmp G_M000_IG05
jmp G_M000_IG05
; Total bytes of code 640
G_M000_IG28: ;; offset=0x02AF
mov eax, 1
jmp G_M000_IG06
; Total bytes of code 697