Skip to content
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

Open
performanceautofiler bot opened this issue Dec 6, 2022 · 4 comments
Open

Regressions in Exceptions.Handling #79291

performanceautofiler bot opened this issue Dec 6, 2022 · 4 comments
Assignees
Labels
area-ExceptionHandling-coreclr tenet-performance Performance related issue tenet-performance-benchmarks Issue from performance benchmark
Milestone

Comments

@performanceautofiler
Copy link

performanceautofiler bot commented Dec 6, 2022

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 8158cb8be51bd6269c75e4010e2e25ada78578f0
Compare 067e43a1363f6d1748acc679f1804cd48299ba89
Diff Diff

Regressions in Exceptions.Handling

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ThrowAndCatchWhenFinally - Duration of single invocation 13.94 μs 15.59 μs 1.12 0.35 False Trace Trace
TryAndFinallyDeep - Duration of single invocation 21.24 μs 28.90 μs 1.36 0.29 False Trace Trace
ThrowAndCatch - Duration of single invocation 21.31 μs 38.99 μs 1.83 0.29 False 295367.23163841804 327232.7044025157 1.1078842517070637 Trace Trace
TryAndCatchDeep_CaugtAtTheTop - Duration of single invocation 21.11 μs 28.92 μs 1.37 0.30 False Trace Trace
ThrowAndCatchDeepRecursive - Duration of single invocation 27.09 μs 28.90 μs 1.07 0.33 False Trace Trace
ThrowAndCatch_ManyCatchBlocks - Duration of single invocation 7.43 μs 15.75 μs 2.12 0.31 False 129178.77906976744 140150.27322404372 1.084932635478392 Trace Trace

graph
graph
graph
graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'Exceptions.Handling*'

Payloads

Baseline
Compare

Histogram

Exceptions.Handling.ThrowAndCatchWhenFinally(kind: Software)


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 15.585828759148372 > 14.40504684505828.
IsChangePoint: Marked as a change because one of 11/30/2022 7:06:59 PM, 12/6/2022 5:44:36 AM falls between 11/27/2022 4:37:47 PM and 12/6/2022 5:44:36 AM.
IsRegressionStdDev: Marked as regression because -3.4644330068340223 (T) = (0 -14812.583819391015) / Math.Sqrt((6868774.955056067 / (27)) + (4142163.364375723 / (25))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (27) + (25) - 2, .025) and -0.17867525655752448 = (12567.145816442357 - 14812.583819391015) / 12567.145816442357 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; 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 [7FFAB806D660]; Exceptions.Handling.Throw(ExceptionKind)
       jmp       short M00_L01
M00_L00:
       nop
       mov       rcx,[rbp+10]
       call      qword ptr [7FFAB806D678]; 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 [7FFAB7D0B828]; 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 [7FFAB806D690]; 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 [7FFAB806D678]; 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 [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

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 28.897433659217878 > 28.277094162695974.
IsChangePoint: Marked as a change because one of 11/14/2022 3:36:58 AM, 11/14/2022 7:25:10 PM, 11/30/2022 7:06:59 PM, 12/6/2022 5:44:36 AM falls between 11/27/2022 4:37:47 PM and 12/6/2022 5:44:36 AM.
IsRegressionStdDev: Marked as regression because -3.983582774938478 (T) = (0 -28555.74009650842) / Math.Sqrt((4686141.24910061 / (27)) + (3811203.762083469 / (25))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (27) + (25) - 2, .025) and -0.08654519786621775 = (26281.22617686483 - 28555.74009650842) / 26281.22617686483 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; Exceptions.Handling.TryAndFinallyDeep(ExceptionKind)
       push      rbp
       sub       rsp,30
       lea       rbp,[rsp+30]
       mov       [rbp-10],rsp
       call      qword ptr [7FFD57A6DAB0]; 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 [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

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 38.98574871179816 > 35.71404558231385.
IsChangePoint: Marked as a change because one of 12/2/2022 5:21:30 AM, 12/6/2022 5:44:36 AM falls between 11/27/2022 4:37:47 PM and 12/6/2022 5:44:36 AM.
IsRegressionStdDev: Marked as regression because -7.442331829536757 (T) = (0 -39639.960974209724) / Math.Sqrt((24721548.0088073 / (36)) + (1819214.5731855454 / (16))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (36) + (16) - 2, .025) and -0.2018800187707424 = (32981.62907704601 - 39639.960974209724) / 32981.62907704601 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; Exceptions.Handling.ThrowAndCatch(ExceptionKind)
       push      rbp
       sub       rsp,30
       lea       rbp,[rsp+30]
       mov       [rbp-10],rsp
       call      qword ptr [7FFC4F7ED660]; 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 [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

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 28.915075741297812 > 28.360926779670375.
IsChangePoint: Marked as a change because one of 11/28/2022 4:36:31 AM, 11/29/2022 11:48:02 PM, 12/6/2022 5:44:36 AM falls between 11/27/2022 4:37:47 PM and 12/6/2022 5:44:36 AM.
IsRegressionStdDev: Marked as regression because -5.507571130065528 (T) = (0 -28215.427617509406) / Math.Sqrt((9322390.741477897 / (23)) + (2141843.399938189 / (29))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (23) + (29) - 2, .025) and -0.15623071405528638 = (24402.939028101493 - 28215.427617509406) / 24402.939028101493 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; Exceptions.Handling.TryAndCatchDeep_CaugtAtTheTop(ExceptionKind)
       push      rbp
       sub       rsp,30
       lea       rbp,[rsp+30]
       mov       [rbp-10],rsp
       call      qword ptr [7FFE1B0BDBB8]; 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 [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

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 28.896683673469383 > 28.276018728663047.
IsChangePoint: Marked as a change because one of 11/30/2022 7:06:59 PM, 12/6/2022 5:44:36 AM falls between 11/27/2022 4:37:47 PM and 12/6/2022 5:44:36 AM.
IsRegressionStdDev: Marked as regression because -5.126168703437914 (T) = (0 -28617.139539030453) / Math.Sqrt((6351643.60125467 / (27)) + (2272233.550291982 / (25))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (27) + (25) - 2, .025) and -0.11395497279645725 = (25689.67349478263 - 28617.139539030453) / 25689.67349478263 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; Exceptions.Handling.ThrowAndCatchDeepRecursive(ExceptionKind)
       push      rbp
       sub       rsp,30
       lea       rbp,[rsp+30]
       mov       [rbp-10],rsp
       mov       r8d,0A
       call      qword ptr [7FFB2DADD828]; 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 [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

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 15.754629044489384 > 14.718556579172228.
IsChangePoint: Marked as a change because one of 11/28/2022 4:36:31 AM, 11/29/2022 11:48:02 PM, 12/6/2022 5:44:36 AM falls between 11/27/2022 4:37:47 PM and 12/6/2022 5:44:36 AM.
IsRegressionStdDev: Marked as regression because -5.432850575162834 (T) = (0 -15244.382443685565) / Math.Sqrt((11355315.02582522 / (23)) + (2604017.3312574876 / (29))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (23) + (29) - 2, .025) and -0.3740646364944456 = (11094.370700477006 - 15244.382443685565) / 11094.370700477006 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; Exceptions.Handling.ThrowAndCatch_ManyCatchBlocks(ExceptionKind)
       push      rbp
       sub       rsp,30
       lea       rbp,[rsp+30]
       mov       [rbp-10],rsp
       call      qword ptr [7FFB55EFD660]; 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 [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

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

@performanceautofiler performanceautofiler bot added CoreClr untriaged New issue has not been triaged by the area owner labels Dec 6, 2022
@dakersnar dakersnar transferred this issue from dotnet/perf-autofiling-issues Dec 6, 2022
@dotnet-issue-labeler dotnet-issue-labeler bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Dec 6, 2022
@ghost
Copy link

ghost commented Dec 6, 2022

Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.

Issue Details

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 8158cb8be51bd6269c75e4010e2e25ada78578f0
Compare 067e43a1363f6d1748acc679f1804cd48299ba89
Diff Diff

Regressions in Exceptions.Handling

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ThrowAndCatchWhenFinally - Duration of single invocation 13.94 μs 15.59 μs 1.12 0.35 False Trace Trace
TryAndFinallyDeep - Duration of single invocation 21.24 μs 28.90 μs 1.36 0.29 False Trace Trace
ThrowAndCatch - Duration of single invocation 21.31 μs 38.99 μs 1.83 0.29 False 295367.23163841804 327232.7044025157 1.1078842517070637 Trace Trace
TryAndCatchDeep_CaugtAtTheTop - Duration of single invocation 21.11 μs 28.92 μs 1.37 0.30 False Trace Trace
ThrowAndCatchDeepRecursive - Duration of single invocation 27.09 μs 28.90 μs 1.07 0.33 False Trace Trace
ThrowAndCatch_ManyCatchBlocks - Duration of single invocation 7.43 μs 15.75 μs 2.12 0.31 False 129178.77906976744 140150.27322404372 1.084932635478392 Trace Trace

graph
graph
graph
graph
graph
graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'Exceptions.Handling*'

Payloads

Baseline
Compare

Histogram

Exceptions.Handling.ThrowAndCatchWhenFinally(kind: Software)


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 15.585828759148372 > 14.40504684505828.
IsChangePoint: Marked as a change because one of 11/30/2022 7:06:59 PM, 12/6/2022 5:44:36 AM falls between 11/27/2022 4:37:47 PM and 12/6/2022 5:44:36 AM.
IsRegressionStdDev: Marked as regression because -3.4644330068340223 (T) = (0 -14812.583819391015) / Math.Sqrt((6868774.955056067 / (27)) + (4142163.364375723 / (25))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (27) + (25) - 2, .025) and -0.17867525655752448 = (12567.145816442357 - 14812.583819391015) / 12567.145816442357 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; 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 [7FFAB806D660]; Exceptions.Handling.Throw(ExceptionKind)
       jmp       short M00_L01
M00_L00:
       nop
       mov       rcx,[rbp+10]
       call      qword ptr [7FFAB806D678]; 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 [7FFAB7D0B828]; 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 [7FFAB806D690]; 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 [7FFAB806D678]; 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 [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

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 28.897433659217878 > 28.277094162695974.
IsChangePoint: Marked as a change because one of 11/14/2022 3:36:58 AM, 11/14/2022 7:25:10 PM, 11/30/2022 7:06:59 PM, 12/6/2022 5:44:36 AM falls between 11/27/2022 4:37:47 PM and 12/6/2022 5:44:36 AM.
IsRegressionStdDev: Marked as regression because -3.983582774938478 (T) = (0 -28555.74009650842) / Math.Sqrt((4686141.24910061 / (27)) + (3811203.762083469 / (25))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (27) + (25) - 2, .025) and -0.08654519786621775 = (26281.22617686483 - 28555.74009650842) / 26281.22617686483 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; Exceptions.Handling.TryAndFinallyDeep(ExceptionKind)
       push      rbp
       sub       rsp,30
       lea       rbp,[rsp+30]
       mov       [rbp-10],rsp
       call      qword ptr [7FFD57A6DAB0]; 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 [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

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 38.98574871179816 > 35.71404558231385.
IsChangePoint: Marked as a change because one of 12/2/2022 5:21:30 AM, 12/6/2022 5:44:36 AM falls between 11/27/2022 4:37:47 PM and 12/6/2022 5:44:36 AM.
IsRegressionStdDev: Marked as regression because -7.442331829536757 (T) = (0 -39639.960974209724) / Math.Sqrt((24721548.0088073 / (36)) + (1819214.5731855454 / (16))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (36) + (16) - 2, .025) and -0.2018800187707424 = (32981.62907704601 - 39639.960974209724) / 32981.62907704601 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; Exceptions.Handling.ThrowAndCatch(ExceptionKind)
       push      rbp
       sub       rsp,30
       lea       rbp,[rsp+30]
       mov       [rbp-10],rsp
       call      qword ptr [7FFC4F7ED660]; 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 [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

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 28.915075741297812 > 28.360926779670375.
IsChangePoint: Marked as a change because one of 11/28/2022 4:36:31 AM, 11/29/2022 11:48:02 PM, 12/6/2022 5:44:36 AM falls between 11/27/2022 4:37:47 PM and 12/6/2022 5:44:36 AM.
IsRegressionStdDev: Marked as regression because -5.507571130065528 (T) = (0 -28215.427617509406) / Math.Sqrt((9322390.741477897 / (23)) + (2141843.399938189 / (29))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (23) + (29) - 2, .025) and -0.15623071405528638 = (24402.939028101493 - 28215.427617509406) / 24402.939028101493 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; Exceptions.Handling.TryAndCatchDeep_CaugtAtTheTop(ExceptionKind)
       push      rbp
       sub       rsp,30
       lea       rbp,[rsp+30]
       mov       [rbp-10],rsp
       call      qword ptr [7FFE1B0BDBB8]; 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 [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

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 28.896683673469383 > 28.276018728663047.
IsChangePoint: Marked as a change because one of 11/30/2022 7:06:59 PM, 12/6/2022 5:44:36 AM falls between 11/27/2022 4:37:47 PM and 12/6/2022 5:44:36 AM.
IsRegressionStdDev: Marked as regression because -5.126168703437914 (T) = (0 -28617.139539030453) / Math.Sqrt((6351643.60125467 / (27)) + (2272233.550291982 / (25))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (27) + (25) - 2, .025) and -0.11395497279645725 = (25689.67349478263 - 28617.139539030453) / 25689.67349478263 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; Exceptions.Handling.ThrowAndCatchDeepRecursive(ExceptionKind)
       push      rbp
       sub       rsp,30
       lea       rbp,[rsp+30]
       mov       [rbp-10],rsp
       mov       r8d,0A
       call      qword ptr [7FFB2DADD828]; 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 [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

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 15.754629044489384 > 14.718556579172228.
IsChangePoint: Marked as a change because one of 11/28/2022 4:36:31 AM, 11/29/2022 11:48:02 PM, 12/6/2022 5:44:36 AM falls between 11/27/2022 4:37:47 PM and 12/6/2022 5:44:36 AM.
IsRegressionStdDev: Marked as regression because -5.432850575162834 (T) = (0 -15244.382443685565) / Math.Sqrt((11355315.02582522 / (23)) + (2604017.3312574876 / (29))) is less than -2.0085591120996775 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (23) + (29) - 2, .025) and -0.3740646364944456 = (11094.370700477006 - 15244.382443685565) / 11094.370700477006 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

```### Baseline Jit Disasm

```assembly
; Exceptions.Handling.ThrowAndCatch_ManyCatchBlocks(ExceptionKind)
       push      rbp
       sub       rsp,30
       lea       rbp,[rsp+30]
       mov       [rbp-10],rsp
       call      qword ptr [7FFB55EFD660]; 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 [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

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

Author: performanceautofiler[bot]
Assignees: EgorBo
Labels:

area-CodeGen-coreclr, untriaged, refs/heads/main, RunKind=micro, Windows 10.0.18362, Regression, CoreClr, x64

Milestone: -

@dakersnar dakersnar added untriaged New issue has not been triaged by the area owner and removed untriaged New issue has not been triaged by the area owner refs/heads/main labels Dec 6, 2022
@dakersnar dakersnar changed the title [Perf] Windows/x64: 6 Regressions on 11/30/2022 11:21:33 PM Regressions in Exceptions.Handling Dec 6, 2022
@dakersnar dakersnar added tenet-performance Performance related issue tenet-performance-benchmarks Issue from performance benchmark labels Dec 6, 2022
@LoopedBard3
Copy link
Member

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.

@MihaZupan
Copy link
Member

I don't see how my Uri changes could possibly affect this benchmark.

@danmoseley
Copy link
Member

@janvorli

@danmoseley danmoseley added area-ExceptionHandling-coreclr and removed area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI labels Dec 6, 2022
@EgorBo EgorBo assigned janvorli and unassigned EgorBo May 6, 2023
@mangod9 mangod9 removed the untriaged New issue has not been triaged by the area owner label Jul 24, 2023
@mangod9 mangod9 added this to the Future milestone Jul 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-ExceptionHandling-coreclr tenet-performance Performance related issue tenet-performance-benchmarks Issue from performance benchmark
Projects
None yet
Development

No branches or pull requests

7 participants