-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Regressions in Exceptions.Handling #79291
Comments
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsRun Information
Regressions in Exceptions.Handling
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'Exceptions.Handling*' PayloadsHistogramExceptions.Handling.ThrowAndCatchWhenFinally(kind: Software)
Description of detection logic
; Exceptions.Handling.Throw(ExceptionKind)
push rsi
sub rsp,30
mov rax,rcx
test edx,edx
je near ptr M01_L03
cmp edx,1
jne short M01_L00
mov rsi,[rax+10]
mov rcx,[rax+8]
mov rax,[rcx]
mov rax,[rax+40]
call qword ptr [rax+18]
mov [rsi+40],eax
add rsp,30
pop rsi
ret
M01_L00:
cmp edx,2
jne short M01_L01
mov rcx,[rax+18]
mov rdx,[rax+20]
mov [rsp+20],rdx
xor edx,edx
mov [rsp+28],rdx
mov rdx,rax
xor r8d,r8d
xor r9d,r9d
mov rax,[rcx]
mov rax,[rax+58]
call qword ptr [rax+38]
nop
add rsp,30
pop rsi
ret
M01_L01:
cmp edx,3
jne short M01_L02
mov rcx,[rax+18]
mov rdx,[rax+28]
mov [rsp+20],rdx
xor edx,edx
mov [rsp+28],rdx
mov rdx,rax
xor r8d,r8d
xor r9d,r9d
mov rax,[rcx]
mov rax,[rax+58]
call qword ptr [rax+38]
M01_L02:
nop
add rsp,30
pop rsi
ret
M01_L03:
mov rcx,offset MT_System.Exception
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov rcx,rsi
call qword ptr [7FFAB7DA5C00]; System.Exception..ctor()
mov rcx,rsi
call CORINFO_HELP_THROW
int 3
; Total bytes of code 186 ; Exceptions.Handling.DoNothing()
ret
; Total bytes of code 1 ; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
mov rax,rdx
test rax,rax
je short M03_L00
cmp [rax],rcx
jne short M03_L01
M03_L00:
ret
M03_L01:
mov rdx,[rax]
mov rdx,[rdx+10]
M03_L02:
cmp rdx,rcx
je short M03_L04
test rdx,rdx
je short M03_L03
mov rdx,[rdx+10]
cmp rdx,rcx
je short M03_L04
test rdx,rdx
je short M03_L03
mov rdx,[rdx+10]
cmp rdx,rcx
je short M03_L04
test rdx,rdx
je short M03_L03
mov rdx,[rdx+10]
cmp rdx,rcx
je short M03_L04
test rdx,rdx
jne short M03_L05
M03_L03:
xor eax,eax
M03_L04:
ret
M03_L05:
mov rdx,[rdx+10]
jmp short M03_L02
; Total bytes of code 82 ; Exceptions.Handling.ReturnTrue()
mov eax,1
ret
; Total bytes of code 6 Compare Jit Disasm; Exceptions.Handling.ThrowAndCatchWhenFinally(ExceptionKind)
push rbp
sub rsp,40
lea rbp,[rsp+40]
xor eax,eax
mov [rbp-8],rax
mov [rbp-20],rsp
mov [rbp+10],rcx
call qword ptr [7FFC3BE91660]; Exceptions.Handling.Throw(ExceptionKind)
jmp short M00_L01
M00_L00:
nop
mov rcx,[rbp+10]
call qword ptr [7FFC3BE91678]; Exceptions.Handling.DoNothing()
jmp short M00_L02
M00_L01:
mov rcx,rsp
call M00_L05
nop
xor eax,eax
add rsp,40
pop rbp
ret
M00_L02:
mov rax,[rbp-10]
add rsp,40
pop rbp
ret
push rbp
sub rsp,30
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+40]
mov rcx,offset MT_System.Exception
call qword ptr [7FFC3BB0D828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
test rax,rax
jne short M00_L03
xor eax,eax
jmp short M00_L04
M00_L03:
mov [rbp-8],rax
mov rcx,[rbp+10]
call qword ptr [7FFC3BE91690]; Exceptions.Handling.ReturnTrue()
test eax,eax
setne al
movzx eax,al
M00_L04:
add rsp,30
pop rbp
ret
push rbp
sub rsp,30
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+40]
mov rax,[rbp-8]
mov [rbp-10],rax
lea rax,[M00_L00]
add rsp,30
pop rbp
ret
M00_L05:
push rbp
sub rsp,30
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+40]
mov rcx,[rbp+10]
call qword ptr [7FFC3BE91678]; Exceptions.Handling.DoNothing()
nop
add rsp,30
pop rbp
ret
; Total bytes of code 217 ; Exceptions.Handling.Throw(ExceptionKind)
push rsi
sub rsp,30
mov rax,rcx
test edx,edx
je near ptr M01_L03
cmp edx,1
jne short M01_L00
mov rsi,[rax+10]
mov rcx,[rax+8]
mov rax,[rcx]
mov rax,[rax+40]
call qword ptr [rax+18]
mov [rsi+40],eax
add rsp,30
pop rsi
ret
M01_L00:
cmp edx,2
jne short M01_L01
mov rcx,[rax+18]
mov rdx,[rax+20]
mov [rsp+20],rdx
xor edx,edx
mov [rsp+28],rdx
mov rdx,rax
xor r8d,r8d
xor r9d,r9d
mov rax,[rcx]
mov rax,[rax+58]
call qword ptr [rax+38]
nop
add rsp,30
pop rsi
ret
M01_L01:
cmp edx,3
jne short M01_L02
mov rcx,[rax+18]
mov rdx,[rax+28]
mov [rsp+20],rdx
xor edx,edx
mov [rsp+28],rdx
mov rdx,rax
xor r8d,r8d
xor r9d,r9d
mov rax,[rcx]
mov rax,[rax+58]
call qword ptr [rax+38]
M01_L02:
nop
add rsp,30
pop rsi
ret
M01_L03:
mov rcx,offset MT_System.Exception
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov rcx,rsi
call qword ptr [7FFC3BB17C00]; System.Exception..ctor()
mov rcx,rsi
call CORINFO_HELP_THROW
int 3
; Total bytes of code 186 ; Exceptions.Handling.DoNothing()
ret
; Total bytes of code 1 ; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
mov rax,rdx
test rax,rax
je short M03_L00
cmp [rax],rcx
jne short M03_L01
M03_L00:
ret
M03_L01:
mov rdx,[rax]
mov rdx,[rdx+10]
M03_L02:
cmp rdx,rcx
je short M03_L04
test rdx,rdx
je short M03_L03
mov rdx,[rdx+10]
cmp rdx,rcx
je short M03_L04
test rdx,rdx
je short M03_L03
mov rdx,[rdx+10]
cmp rdx,rcx
je short M03_L04
test rdx,rdx
je short M03_L03
mov rdx,[rdx+10]
cmp rdx,rcx
je short M03_L04
test rdx,rdx
jne short M03_L05
M03_L03:
xor eax,eax
M03_L04:
ret
M03_L05:
mov rdx,[rdx+10]
jmp short M03_L02
; Total bytes of code 82 ; Exceptions.Handling.ReturnTrue()
mov eax,1
ret
; Total bytes of code 6 Exceptions.Handling.TryAndFinallyDeep(kind: Software)
Description of detection logic
; Exceptions.Handling.Level1Finally(ExceptionKind)
push rbp
sub rsp,30
lea rbp,[rsp+30]
mov [rbp-10],rsp
mov [rbp+10],rcx
call qword ptr [7FFD57A6DAC8]; Exceptions.Handling.Level2Finally(ExceptionKind)
nop
mov rcx,[rbp+10]
call qword ptr [7FFD57A6D678]; Exceptions.Handling.DoNothing()
nop
add rsp,30
pop rbp
ret
push rbp
sub rsp,30
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+30]
mov rcx,[rbp+10]
call qword ptr [7FFD57A6D678]; Exceptions.Handling.DoNothing()
nop
add rsp,30
pop rbp
ret
; Total bytes of code 77 Compare Jit Disasm; Exceptions.Handling.TryAndFinallyDeep(ExceptionKind)
push rbp
sub rsp,30
lea rbp,[rsp+30]
mov [rbp-10],rsp
call qword ptr [7FF9940A1AB0]; Exceptions.Handling.Level1Finally(ExceptionKind)
nop
xor eax,eax
add rsp,30
pop rbp
ret
M00_L00:
mov rax,[rbp-8]
add rsp,30
pop rbp
ret
push rbp
sub rsp,30
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+30]
mov rax,rdx
mov [rbp-8],rax
lea rax,[M00_L00]
add rsp,30
pop rbp
ret
; Total bytes of code 77 ; Exceptions.Handling.Level1Finally(ExceptionKind)
push rbp
sub rsp,30
lea rbp,[rsp+30]
mov [rbp-10],rsp
mov [rbp+10],rcx
call qword ptr [7FF9940A1AC8]; Exceptions.Handling.Level2Finally(ExceptionKind)
nop
mov rcx,[rbp+10]
call qword ptr [7FF9940A1678]; Exceptions.Handling.DoNothing()
nop
add rsp,30
pop rbp
ret
push rbp
sub rsp,30
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+30]
mov rcx,[rbp+10]
call qword ptr [7FF9940A1678]; Exceptions.Handling.DoNothing()
nop
add rsp,30
pop rbp
ret
; Total bytes of code 77 Exceptions.Handling.ThrowAndCatch(kind: ReflectionSoftware)
Description of detection logic
; Exceptions.Handling.Throw(ExceptionKind)
push rsi
sub rsp,30
mov rax,rcx
test edx,edx
je near ptr M01_L03
cmp edx,1
jne short M01_L00
mov rsi,[rax+10]
mov rcx,[rax+8]
mov rax,[rcx]
mov rax,[rax+40]
call qword ptr [rax+18]
mov [rsi+40],eax
add rsp,30
pop rsi
ret
M01_L00:
cmp edx,2
jne short M01_L01
mov rcx,[rax+18]
mov rdx,[rax+20]
mov [rsp+20],rdx
xor edx,edx
mov [rsp+28],rdx
mov rdx,rax
xor r8d,r8d
xor r9d,r9d
mov rax,[rcx]
mov rax,[rax+58]
call qword ptr [rax+38]
nop
add rsp,30
pop rsi
ret
M01_L01:
cmp edx,3
jne short M01_L02
mov rcx,[rax+18]
mov rdx,[rax+28]
mov [rsp+20],rdx
xor edx,edx
mov [rsp+28],rdx
mov rdx,rax
xor r8d,r8d
xor r9d,r9d
mov rax,[rcx]
mov rax,[rax+58]
call qword ptr [rax+38]
M01_L02:
nop
add rsp,30
pop rsi
ret
M01_L03:
mov rcx,offset MT_System.Exception
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov rcx,rsi
call qword ptr [7FFC4F515C00]; System.Exception..ctor()
mov rcx,rsi
call CORINFO_HELP_THROW
int 3
; Total bytes of code 186 Compare Jit Disasm; Exceptions.Handling.ThrowAndCatch(ExceptionKind)
push rbp
sub rsp,30
lea rbp,[rsp+30]
mov [rbp-10],rsp
call qword ptr [7FFB268C1660]; Exceptions.Handling.Throw(ExceptionKind)
nop
xor eax,eax
add rsp,30
pop rbp
ret
M00_L00:
mov rax,[rbp-8]
add rsp,30
pop rbp
ret
push rbp
sub rsp,30
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+30]
mov rax,rdx
mov [rbp-8],rax
lea rax,[M00_L00]
add rsp,30
pop rbp
ret
; Total bytes of code 77 ; Exceptions.Handling.Throw(ExceptionKind)
push rsi
sub rsp,30
mov rax,rcx
test edx,edx
je near ptr M01_L03
cmp edx,1
jne short M01_L00
mov rsi,[rax+10]
mov rcx,[rax+8]
mov rax,[rcx]
mov rax,[rax+40]
call qword ptr [rax+18]
mov [rsi+40],eax
add rsp,30
pop rsi
ret
M01_L00:
cmp edx,2
jne short M01_L01
mov rcx,[rax+18]
mov rdx,[rax+20]
mov [rsp+20],rdx
xor edx,edx
mov [rsp+28],rdx
mov rdx,rax
xor r8d,r8d
xor r9d,r9d
mov rax,[rcx]
mov rax,[rax+58]
call qword ptr [rax+38]
nop
add rsp,30
pop rsi
ret
M01_L01:
cmp edx,3
jne short M01_L02
mov rcx,[rax+18]
mov rdx,[rax+28]
mov [rsp+20],rdx
xor edx,edx
mov [rsp+28],rdx
mov rdx,rax
xor r8d,r8d
xor r9d,r9d
mov rax,[rcx]
mov rax,[rax+58]
call qword ptr [rax+38]
M01_L02:
nop
add rsp,30
pop rsi
ret
M01_L03:
mov rcx,offset MT_System.Exception
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov rcx,rsi
call qword ptr [7FFB26547C00]; System.Exception..ctor()
mov rcx,rsi
call CORINFO_HELP_THROW
int 3
; Total bytes of code 186 Exceptions.Handling.TryAndCatchDeep_CaugtAtTheTop(kind: Software)
Description of detection logic
; Exceptions.Handling.Level1TryDontCatch(ExceptionKind)
push rbp
sub rsp,30
lea rbp,[rsp+30]
mov [rbp-10],rsp
call qword ptr [7FFE1B0BDBD0]; Exceptions.Handling.Level2TryDontCatch(ExceptionKind)
nop
add rsp,30
pop rbp
ret
push rbp
sub rsp,30
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+30]
call CORINFO_HELP_RETHROW
int 3
; Total bytes of code 51 Compare Jit Disasm; Exceptions.Handling.TryAndCatchDeep_CaugtAtTheTop(ExceptionKind)
push rbp
sub rsp,30
lea rbp,[rsp+30]
mov [rbp-10],rsp
call qword ptr [7FFD9AED1BB8]; Exceptions.Handling.Level1TryDontCatch(ExceptionKind)
nop
xor eax,eax
add rsp,30
pop rbp
ret
M00_L00:
mov rax,[rbp-8]
add rsp,30
pop rbp
ret
push rbp
sub rsp,30
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+30]
mov rax,rdx
mov [rbp-8],rax
lea rax,[M00_L00]
add rsp,30
pop rbp
ret
; Total bytes of code 77 ; Exceptions.Handling.Level1TryDontCatch(ExceptionKind)
push rbp
sub rsp,30
lea rbp,[rsp+30]
mov [rbp-10],rsp
call qword ptr [7FFD9AED1BD0]; Exceptions.Handling.Level2TryDontCatch(ExceptionKind)
nop
add rsp,30
pop rbp
ret
push rbp
sub rsp,30
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+30]
call CORINFO_HELP_RETHROW
int 3
; Total bytes of code 51 Exceptions.Handling.ThrowAndCatchDeepRecursive(kind: Software)
Description of detection logic
; Exceptions.Handling.ThrowRecursive(ExceptionKind, Int32)
M01_L00:
sub rsp,28
lea eax,[r8-1]
test r8d,r8d
jne short M01_L01
call qword ptr [7FFB2DADD660]; Exceptions.Handling.Throw(ExceptionKind)
nop
add rsp,28
ret
M01_L01:
mov r8d,eax
call qword ptr [7FFB2DADD828]
nop
add rsp,28
ret
; Total bytes of code 40 Compare Jit Disasm; Exceptions.Handling.ThrowAndCatchDeepRecursive(ExceptionKind)
push rbp
sub rsp,30
lea rbp,[rsp+30]
mov [rbp-10],rsp
mov r8d,0A
call qword ptr [7FFF67AF1828]; Exceptions.Handling.ThrowRecursive(ExceptionKind, Int32)
nop
xor eax,eax
add rsp,30
pop rbp
ret
M00_L00:
mov rax,[rbp-8]
add rsp,30
pop rbp
ret
push rbp
sub rsp,30
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+30]
mov rax,rdx
mov [rbp-8],rax
lea rax,[M00_L00]
add rsp,30
pop rbp
ret
; Total bytes of code 83 ; Exceptions.Handling.ThrowRecursive(ExceptionKind, Int32)
M01_L00:
sub rsp,28
lea eax,[r8-1]
test r8d,r8d
jne short M01_L01
call qword ptr [7FFF67AF1660]; Exceptions.Handling.Throw(ExceptionKind)
nop
add rsp,28
ret
M01_L01:
mov r8d,eax
call qword ptr [7FFF67AF1828]
nop
add rsp,28
ret
; Total bytes of code 40 Exceptions.Handling.ThrowAndCatch_ManyCatchBlocks(kind: Software)
Description of detection logic
; Exceptions.Handling.Throw(ExceptionKind)
push rsi
sub rsp,30
mov rax,rcx
test edx,edx
je near ptr M01_L03
cmp edx,1
jne short M01_L00
mov rsi,[rax+10]
mov rcx,[rax+8]
mov rax,[rcx]
mov rax,[rax+40]
call qword ptr [rax+18]
mov [rsi+40],eax
add rsp,30
pop rsi
ret
M01_L00:
cmp edx,2
jne short M01_L01
mov rcx,[rax+18]
mov rdx,[rax+20]
mov [rsp+20],rdx
xor edx,edx
mov [rsp+28],rdx
mov rdx,rax
xor r8d,r8d
xor r9d,r9d
mov rax,[rcx]
mov rax,[rax+58]
call qword ptr [rax+38]
nop
add rsp,30
pop rsi
ret
M01_L01:
cmp edx,3
jne short M01_L02
mov rcx,[rax+18]
mov rdx,[rax+28]
mov [rsp+20],rdx
xor edx,edx
mov [rsp+28],rdx
mov rdx,rax
xor r8d,r8d
xor r9d,r9d
mov rax,[rcx]
mov rax,[rax+58]
call qword ptr [rax+38]
M01_L02:
nop
add rsp,30
pop rsi
ret
M01_L03:
mov rcx,offset MT_System.Exception
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov rcx,rsi
call qword ptr [7FFB55C25C00]; System.Exception..ctor()
mov rcx,rsi
call CORINFO_HELP_THROW
int 3
; Total bytes of code 186 Compare Jit Disasm; Exceptions.Handling.ThrowAndCatch_ManyCatchBlocks(ExceptionKind)
push rbp
sub rsp,30
lea rbp,[rsp+30]
mov [rbp-10],rsp
call qword ptr [7FFEB26F1660]; Exceptions.Handling.Throw(ExceptionKind)
nop
xor eax,eax
add rsp,30
pop rbp
ret
M00_L00:
mov rax,[rbp-8]
add rsp,30
pop rbp
ret
push rbp
sub rsp,30
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+30]
mov [rbp-8],rdx
lea rax,[M00_L00]
add rsp,30
pop rbp
ret
push rbp
sub rsp,30
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+30]
mov [rbp-8],rdx
lea rax,[M00_L00]
add rsp,30
pop rbp
ret
push rbp
sub rsp,30
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+30]
mov [rbp-8],rdx
lea rax,[M00_L00]
add rsp,30
pop rbp
ret
push rbp
sub rsp,30
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+30]
mov [rbp-8],rdx
lea rax,[M00_L00]
add rsp,30
pop rbp
ret
push rbp
sub rsp,30
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+30]
mov [rbp-8],rdx
lea rax,[M00_L00]
add rsp,30
pop rbp
ret
; Total bytes of code 214 ; Exceptions.Handling.Throw(ExceptionKind)
push rsi
sub rsp,30
mov rax,rcx
test edx,edx
je near ptr M01_L03
cmp edx,1
jne short M01_L00
mov rsi,[rax+10]
mov rcx,[rax+8]
mov rax,[rcx]
mov rax,[rax+40]
call qword ptr [rax+18]
mov [rsi+40],eax
add rsp,30
pop rsi
ret
M01_L00:
cmp edx,2
jne short M01_L01
mov rcx,[rax+18]
mov rdx,[rax+20]
mov [rsp+20],rdx
xor edx,edx
mov [rsp+28],rdx
mov rdx,rax
xor r8d,r8d
xor r9d,r9d
mov rax,[rcx]
mov rax,[rax+58]
call qword ptr [rax+38]
nop
add rsp,30
pop rsi
ret
M01_L01:
cmp edx,3
jne short M01_L02
mov rcx,[rax+18]
mov rdx,[rax+28]
mov [rsp+20],rdx
xor edx,edx
mov [rsp+28],rdx
mov rdx,rax
xor r8d,r8d
xor r9d,r9d
mov rax,[rcx]
mov rax,[rax+58]
call qword ptr [rax+38]
M01_L02:
nop
add rsp,30
pop rsi
ret
M01_L03:
mov rcx,offset MT_System.Exception
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov rcx,rsi
call qword ptr [7FFEB2377C00]; System.Exception..ctor()
mov rcx,rsi
call CORINFO_HELP_THROW
int 3
; Total bytes of code 186 DocsProfiling workflow for dotnet/runtime repository
|
Likely a more useful related regression set here: dotnet/perf-autofiling-issues#10382. Commit range b49fcc6...c01ad86 only has 2 commits, and #79024 is likely the cause, @MihaZupan. |
I don't see how my Uri changes could possibly affect this benchmark. |
Run Information
Regressions in Exceptions.Handling
Test Report
Repro
Payloads
Baseline
Compare
Histogram
Exceptions.Handling.ThrowAndCatchWhenFinally(kind: Software)
Description of detection logic
Compare Jit Disasm
Exceptions.Handling.TryAndFinallyDeep(kind: Software)
Description of detection logic
Compare Jit Disasm
Exceptions.Handling.ThrowAndCatch(kind: ReflectionSoftware)
Description of detection logic
Compare Jit Disasm
Exceptions.Handling.TryAndCatchDeep_CaugtAtTheTop(kind: Software)
Description of detection logic
Compare Jit Disasm
Exceptions.Handling.ThrowAndCatchDeepRecursive(kind: Software)
Description of detection logic
Compare Jit Disasm
Exceptions.Handling.ThrowAndCatch_ManyCatchBlocks(kind: Software)
Description of detection logic
Compare Jit Disasm
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
The text was updated successfully, but these errors were encountered: