Open
Description
Run Information
Architecture | x64 |
---|---|
OS | Windows 10.0.18362 |
Baseline | a7ed1fd065da1b2309c07bacc1b44d2e567107c8 |
Compare | 5bad843281caac09e18958f27d7d914eb6086e77 |
Diff | Diff |
Regressions in System.Tests.Perf_String
Benchmark | Baseline | Test | Test/Base | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
---|---|---|---|---|---|---|---|---|
Split | 447.82 ns | 475.44 ns | 1.06 | 4901.795735129068 | 5308.495503816714 | 1.0829695463997007 | Trace | Trace |
Split | 473.54 ns | 534.99 ns | 1.13 | 5192.342616628743 | 5599.544937428896 | 1.0784236231823507 | Trace | Trace |
Historical Data in Reporting System
Repro
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Tests.Perf_String*'
Payloads
Histogram
System.Tests.Perf_String.Remove_Int(s: "dzsdzsDDZSDZSDZSddsz", i: 7)
Baseline Jit Disasm
; System.Tests.Perf_String.Remove_Int(System.String, Int32)
mov rcx,rdx
mov edx,r8d
cmp [rcx],ecx
jmp near ptr System.String.Remove(Int32)
; Total bytes of code 13
; System.String.Remove(Int32)
push rdi
push rsi
push rbx
sub rsp,20
mov r8d,[rcx+8]
movsxd r8,r8d
mov eax,edx
cmp r8,rax
jl short M01_L00
mov r8d,edx
xor edx,edx
add rsp,20
pop rbx
pop rsi
pop rdi
jmp near ptr System.String.Substring(Int32, Int32)
M01_L00:
mov rcx,1D9CCCE5AD0
mov rsi,[rcx]
test edx,edx
jl short M01_L01
mov rcx,1D9CCCE5AF0
mov rcx,[rcx]
xor edx,edx
call System.SR.GetResourceString(System.String, System.String)
mov rdi,rax
jmp short M01_L02
M01_L01:
mov rcx,1D9CCCE5AE8
mov rcx,[rcx]
xor edx,edx
call System.SR.GetResourceString(System.String, System.String)
mov rdi,rax
M01_L02:
mov rcx,offset MT_System.ArgumentOutOfRangeException
call CORINFO_HELP_NEWSFAST
mov rbx,rax
mov rcx,rbx
mov rdx,rsi
mov r8,rdi
call System.ArgumentOutOfRangeException..ctor(System.String, System.String)
mov rcx,rbx
call CORINFO_HELP_THROW
int 3
; Total bytes of code 144
Compare Jit Disasm
; System.Tests.Perf_String.Remove_Int(System.String, Int32)
mov rcx,rdx
mov edx,r8d
cmp [rcx],ecx
jmp near ptr System.String.Remove(Int32)
; Total bytes of code 13
; System.String.Remove(Int32)
push rdi
push rsi
push rbx
sub rsp,20
mov r8d,[rcx+8]
movsxd r8,r8d
mov eax,edx
cmp r8,rax
jl short M01_L00
mov r8d,edx
xor edx,edx
add rsp,20
pop rbx
pop rsi
pop rdi
jmp near ptr System.String.Substring(Int32, Int32)
M01_L00:
mov rcx,242E2DA5AD0
mov rsi,[rcx]
test edx,edx
jl short M01_L01
mov rcx,242E2DA5AF0
mov rcx,[rcx]
xor edx,edx
call System.SR.GetResourceString(System.String, System.String)
mov rdi,rax
jmp short M01_L02
M01_L01:
mov rcx,242E2DA5AE8
mov rcx,[rcx]
xor edx,edx
call System.SR.GetResourceString(System.String, System.String)
mov rdi,rax
M01_L02:
mov rcx,offset MT_System.ArgumentOutOfRangeException
call CORINFO_HELP_NEWSFAST
mov rbx,rax
mov rcx,rbx
mov rdx,rsi
mov r8,rdi
call System.ArgumentOutOfRangeException..ctor(System.String, System.String)
mov rcx,rbx
call CORINFO_HELP_THROW
int 3
; Total bytes of code 144
System.Tests.Perf_String.Split(s: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", arr: [' '], options: None)
Baseline Jit Disasm
; System.Tests.Perf_String.Split(System.String, Char[], System.StringSplitOptions)
push rsi
sub rsp,30
xor eax,eax
mov [rsp+20],rax
cmp [rdx],edx
test r8,r8
je short M00_L01
lea rcx,[r8+10]
mov esi,[r8+8]
M00_L00:
mov [rsp+20],rcx
mov [rsp+28],esi
mov rcx,rdx
lea rdx,[rsp+20]
mov r8d,7FFFFFFF
call System.String.SplitInternal(System.ReadOnlySpan`1<Char>, Int32, System.StringSplitOptions)
nop
add rsp,30
pop rsi
ret
M00_L01:
xor ecx,ecx
xor esi,esi
jmp short M00_L00
; Total bytes of code 68
; System.String.SplitInternal(System.ReadOnlySpan`1<Char>, Int32, System.StringSplitOptions)
push rbp
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbx
sub rsp,88
vzeroupper
lea rbp,[rsp+30]
xor eax,eax
mov [rbp+8],rax
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rbp+10],xmm4
vmovdqa xmmword ptr [rbp+20],xmm4
vmovdqa xmmword ptr [rbp+30],xmm4
vmovdqa xmmword ptr [rbp+40],xmm4
mov [rbp+50],rax
mov rax,74B06C2F5775
mov [rbp],rax
mov rsi,rcx
mov edi,r8d
mov ebx,r9d
test edi,edi
jl near ptr M01_L17
test ebx,0FFFFFFFC
jne near ptr M01_L18
cmp edi,1
jle near ptr M01_L08
cmp dword ptr [rsi+8],0
je near ptr M01_L08
cmp dword ptr [rdx+8],0
jbe near ptr M01_L15
M01_L00:
add rsp,30
test [rsp],esp
sub rsp,200
sub rsp,30
lea rcx,[rsp+30]
lea r8,[rbp+48]
mov [r8],rcx
mov dword ptr [r8+8],80
xor ecx,ecx
mov [rbp+38],rcx
mov [rbp+40],ecx
vmovdqu xmm0,xmmword ptr [rdx]
vmovdqu xmmword ptr [rbp+28],xmm0
mov rcx,rsi
lea rdx,[rbp+28]
lea r8,[rbp+38]
call System.String.MakeSeparatorList(System.ReadOnlySpan`1<Char>, System.Collections.Generic.ValueListBuilder`1<Int32> ByRef)
mov eax,[rbp+40]
mov ecx,eax
mov edx,[rbp+50]
cmp rcx,rdx
ja near ptr M01_L16
mov r10,[rbp+48]
test eax,eax
je near ptr M01_L07
test ebx,ebx
jne near ptr M01_L09
xor r14d,r14d
xor r15d,r15d
mov [rbp+18],r10
mov [rbp+20],eax
mov [rbp+8],r14
mov [rbp+10],r15d
mov [rsp+20],edi
mov rcx,rsi
lea rdx,[rbp+18]
lea r8,[rbp+8]
mov r9d,1
call System.String.SplitWithoutPostProcessing(System.ReadOnlySpan`1<Int32>, System.ReadOnlySpan`1<Int32>, Int32, Int32)
mov r12,rax
M01_L01:
cmp qword ptr [rbp+38],0
jne near ptr M01_L13
M01_L02:
mov rax,r12
mov rcx,74B06C2F5775
cmp [rbp],rcx
je short M01_L03
call CORINFO_HELP_FAIL_FAST
M01_L03:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
M01_L04:
test bl,1
jne near ptr M01_L10
M01_L05:
test edi,edi
je near ptr M01_L11
mov rcx,offset MT_System.String[]
mov edx,1
call CORINFO_HELP_NEWARR_1_OBJ
mov r14,rax
lea rcx,[r14+10]
mov rdx,r13
call CORINFO_HELP_ASSIGN_REF
mov rax,r14
mov rcx,74B06C2F5775
cmp [rbp],rcx
je short M01_L06
call CORINFO_HELP_FAIL_FAST
M01_L06:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
M01_L07:
mov edi,1
M01_L08:
mov r13,rsi
test bl,2
jne near ptr M01_L14
jmp short M01_L04
M01_L09:
xor r14d,r14d
xor r15d,r15d
mov [rbp+18],r10
mov [rbp+20],eax
mov [rbp+8],r14
mov [rbp+10],r15d
mov [rsp+20],edi
mov [rsp+28],ebx
mov rcx,rsi
lea rdx,[rbp+18]
lea r8,[rbp+8]
mov r9d,1
call System.String.SplitWithPostProcessing(System.ReadOnlySpan`1<Int32>, System.ReadOnlySpan`1<Int32>, Int32, Int32, System.StringSplitOptions)
mov r12,rax
jmp near ptr M01_L01
M01_L10:
cmp dword ptr [r13+8],0
jne near ptr M01_L05
M01_L11:
mov rcx,7FFD30584540
mov edx,28
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rax,1E4BE372EF0
mov rax,[rax]
mov rcx,74B06C2F5775
cmp [rbp],rcx
je short M01_L12
call CORINFO_HELP_FAIL_FAST
M01_L12:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
M01_L13:
mov rcx,7FFD30584540
mov edx,29
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rcx,1E4BE372EF8
mov rcx,[rcx]
mov rdx,[rbp+38]
xor r8d,r8d
cmp [rcx],ecx
call qword ptr [7FFD30843DB0]
xor ecx,ecx
mov [rbp+38],rcx
jmp near ptr M01_L02
M01_L14:
test edi,edi
jle near ptr M01_L04
cmp [rsi],esi
mov rcx,rsi
mov edx,3
call System.String.TrimWhiteSpaceHelper(System.Text.TrimType)
mov r13,rax
jmp near ptr M01_L04
M01_L15:
and ebx,0FFFFFFFD
jmp near ptr M01_L00
M01_L16:
call System.ThrowHelper.ThrowArgumentOutOfRangeException()
int 3
M01_L17:
mov rcx,offset MT_System.ArgumentOutOfRangeException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov ecx,1C9
mov rdx,7FFD30474020
call CORINFO_HELP_STRCNS
mov rdi,rax
mov ecx,0A1B7
mov rdx,7FFD30474020
call CORINFO_HELP_STRCNS
mov rcx,rax
xor edx,edx
call System.SR.GetResourceString(System.String, System.String)
mov r8,rax
mov rdx,rdi
mov rcx,rsi
call System.ArgumentOutOfRangeException..ctor(System.String, System.String)
mov rcx,rsi
call CORINFO_HELP_THROW
M01_L18:
mov ecx,42
mov edx,57
call System.ThrowHelper.ThrowArgumentException(System.ExceptionResource, System.ExceptionArgument)
int 3
; Total bytes of code 813
Compare Jit Disasm
; System.Tests.Perf_String.Split(System.String, Char[], System.StringSplitOptions)
push rsi
sub rsp,30
xor eax,eax
mov [rsp+20],rax
cmp [rdx],edx
test r8,r8
je short M00_L01
lea rcx,[r8+10]
mov esi,[r8+8]
M00_L00:
mov [rsp+20],rcx
mov [rsp+28],esi
mov rcx,rdx
lea rdx,[rsp+20]
mov r8d,7FFFFFFF
call System.String.SplitInternal(System.ReadOnlySpan`1<Char>, Int32, System.StringSplitOptions)
nop
add rsp,30
pop rsi
ret
M00_L01:
xor ecx,ecx
xor esi,esi
jmp short M00_L00
; Total bytes of code 68
; System.String.SplitInternal(System.ReadOnlySpan`1<Char>, Int32, System.StringSplitOptions)
push rbp
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbx
sub rsp,88
vzeroupper
lea rbp,[rsp+30]
xor eax,eax
mov [rbp+8],rax
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rbp+10],xmm4
vmovdqa xmmword ptr [rbp+20],xmm4
vmovdqa xmmword ptr [rbp+30],xmm4
vmovdqa xmmword ptr [rbp+40],xmm4
mov [rbp+50],rax
mov rax,66EA0E1BF416
mov [rbp],rax
mov rsi,rcx
mov edi,r8d
mov ebx,r9d
test edi,edi
jl near ptr M01_L17
test ebx,0FFFFFFFC
jne near ptr M01_L18
cmp edi,1
jle near ptr M01_L08
cmp dword ptr [rsi+8],0
je near ptr M01_L08
cmp dword ptr [rdx+8],0
jbe near ptr M01_L15
M01_L00:
add rsp,30
test [rsp],esp
sub rsp,200
sub rsp,30
lea rcx,[rsp+30]
lea r8,[rbp+48]
mov [r8],rcx
mov dword ptr [r8+8],80
xor ecx,ecx
mov [rbp+38],rcx
mov [rbp+40],ecx
vmovdqu xmm0,xmmword ptr [rdx]
vmovdqu xmmword ptr [rbp+28],xmm0
mov rcx,rsi
lea rdx,[rbp+28]
lea r8,[rbp+38]
call System.String.MakeSeparatorList(System.ReadOnlySpan`1<Char>, System.Collections.Generic.ValueListBuilder`1<Int32> ByRef)
mov eax,[rbp+40]
mov ecx,eax
mov edx,[rbp+50]
cmp rcx,rdx
ja near ptr M01_L16
mov r10,[rbp+48]
test eax,eax
je near ptr M01_L07
test ebx,ebx
jne near ptr M01_L09
xor r14d,r14d
xor r15d,r15d
mov [rbp+18],r10
mov [rbp+20],eax
mov [rbp+8],r14
mov [rbp+10],r15d
mov [rsp+20],edi
mov rcx,rsi
lea rdx,[rbp+18]
lea r8,[rbp+8]
mov r9d,1
call System.String.SplitWithoutPostProcessing(System.ReadOnlySpan`1<Int32>, System.ReadOnlySpan`1<Int32>, Int32, Int32)
mov r12,rax
M01_L01:
cmp qword ptr [rbp+38],0
jne near ptr M01_L13
M01_L02:
mov rax,r12
mov rcx,66EA0E1BF416
cmp [rbp],rcx
je short M01_L03
call CORINFO_HELP_FAIL_FAST
M01_L03:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
M01_L04:
test bl,1
jne near ptr M01_L10
M01_L05:
test edi,edi
je near ptr M01_L11
mov rcx,offset MT_System.String[]
mov edx,1
call CORINFO_HELP_NEWARR_1_OBJ
mov r14,rax
lea rcx,[r14+10]
mov rdx,r13
call CORINFO_HELP_ASSIGN_REF
mov rax,r14
mov rcx,66EA0E1BF416
cmp [rbp],rcx
je short M01_L06
call CORINFO_HELP_FAIL_FAST
M01_L06:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
M01_L07:
mov edi,1
M01_L08:
mov r13,rsi
test bl,2
jne near ptr M01_L14
jmp short M01_L04
M01_L09:
xor r14d,r14d
xor r15d,r15d
mov [rbp+18],r10
mov [rbp+20],eax
mov [rbp+8],r14
mov [rbp+10],r15d
mov [rsp+20],edi
mov [rsp+28],ebx
mov rcx,rsi
lea rdx,[rbp+18]
lea r8,[rbp+8]
mov r9d,1
call System.String.SplitWithPostProcessing(System.ReadOnlySpan`1<Int32>, System.ReadOnlySpan`1<Int32>, Int32, Int32, System.StringSplitOptions)
mov r12,rax
jmp near ptr M01_L01
M01_L10:
cmp dword ptr [r13+8],0
jne near ptr M01_L05
M01_L11:
mov rcx,7FFF5B9D4550
mov edx,28
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rax,1F298002EF0
mov rax,[rax]
mov rcx,66EA0E1BF416
cmp [rbp],rcx
je short M01_L12
call CORINFO_HELP_FAIL_FAST
M01_L12:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
M01_L13:
mov rcx,7FFF5B9D4550
mov edx,29
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rcx,1F298002EF8
mov rcx,[rcx]
mov rdx,[rbp+38]
xor r8d,r8d
cmp [rcx],ecx
call qword ptr [7FFF5BC945C8]
xor ecx,ecx
mov [rbp+38],rcx
jmp near ptr M01_L02
M01_L14:
test edi,edi
jle near ptr M01_L04
cmp [rsi],esi
mov rcx,rsi
mov edx,3
call System.String.TrimWhiteSpaceHelper(System.Text.TrimType)
mov r13,rax
jmp near ptr M01_L04
M01_L15:
and ebx,0FFFFFFFD
jmp near ptr M01_L00
M01_L16:
call System.ThrowHelper.ThrowArgumentOutOfRangeException()
int 3
M01_L17:
mov rcx,offset MT_System.ArgumentOutOfRangeException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov ecx,1C9
mov rdx,7FFF5B8C4020
call CORINFO_HELP_STRCNS
mov rdi,rax
mov ecx,0A21D
mov rdx,7FFF5B8C4020
call CORINFO_HELP_STRCNS
mov rcx,rax
xor edx,edx
call System.SR.GetResourceString(System.String, System.String)
mov r8,rax
mov rdx,rdi
mov rcx,rsi
call System.ArgumentOutOfRangeException..ctor(System.String, System.String)
mov rcx,rsi
call CORINFO_HELP_THROW
M01_L18:
mov ecx,42
mov edx,57
call System.ThrowHelper.ThrowArgumentException(System.ExceptionResource, System.ExceptionArgument)
int 3
; Total bytes of code 813
System.Tests.Perf_String.Remove_Int(s: "dzsdzsDDZSDZSDZSddsz", i: 10)
Baseline Jit Disasm
; System.Tests.Perf_String.Remove_Int(System.String, Int32)
mov rcx,rdx
mov edx,r8d
cmp [rcx],ecx
jmp near ptr System.String.Remove(Int32)
; Total bytes of code 13
; System.String.Remove(Int32)
push rdi
push rsi
push rbx
sub rsp,20
mov r8d,[rcx+8]
movsxd r8,r8d
mov eax,edx
cmp r8,rax
jl short M01_L00
mov r8d,edx
xor edx,edx
add rsp,20
pop rbx
pop rsi
pop rdi
jmp near ptr System.String.Substring(Int32, Int32)
M01_L00:
mov rcx,23C27A15AD0
mov rsi,[rcx]
test edx,edx
jl short M01_L01
mov rcx,23C27A15AF0
mov rcx,[rcx]
xor edx,edx
call System.SR.GetResourceString(System.String, System.String)
mov rdi,rax
jmp short M01_L02
M01_L01:
mov rcx,23C27A15AE8
mov rcx,[rcx]
xor edx,edx
call System.SR.GetResourceString(System.String, System.String)
mov rdi,rax
M01_L02:
mov rcx,offset MT_System.ArgumentOutOfRangeException
call CORINFO_HELP_NEWSFAST
mov rbx,rax
mov rcx,rbx
mov rdx,rsi
mov r8,rdi
call System.ArgumentOutOfRangeException..ctor(System.String, System.String)
mov rcx,rbx
call CORINFO_HELP_THROW
int 3
; Total bytes of code 144
Compare Jit Disasm
; System.Tests.Perf_String.Remove_Int(System.String, Int32)
mov rcx,rdx
mov edx,r8d
cmp [rcx],ecx
jmp near ptr System.String.Remove(Int32)
; Total bytes of code 13
; System.String.Remove(Int32)
push rdi
push rsi
push rbx
sub rsp,20
mov r8d,[rcx+8]
movsxd r8,r8d
mov eax,edx
cmp r8,rax
jl short M01_L00
mov r8d,edx
xor edx,edx
add rsp,20
pop rbx
pop rsi
pop rdi
jmp near ptr System.String.Substring(Int32, Int32)
M01_L00:
mov rcx,2119C895AD0
mov rsi,[rcx]
test edx,edx
jl short M01_L01
mov rcx,2119C895AF0
mov rcx,[rcx]
xor edx,edx
call System.SR.GetResourceString(System.String, System.String)
mov rdi,rax
jmp short M01_L02
M01_L01:
mov rcx,2119C895AE8
mov rcx,[rcx]
xor edx,edx
call System.SR.GetResourceString(System.String, System.String)
mov rdi,rax
M01_L02:
mov rcx,offset MT_System.ArgumentOutOfRangeException
call CORINFO_HELP_NEWSFAST
mov rbx,rax
mov rcx,rbx
mov rdx,rsi
mov r8,rdi
call System.ArgumentOutOfRangeException..ctor(System.String, System.String)
mov rcx,rbx
call CORINFO_HELP_THROW
int 3
; Total bytes of code 144
System.Tests.Perf_String.IndexerCheckBoundCheckHoist
Baseline Jit Disasm
; System.Tests.Perf_String.IndexerCheckBoundCheckHoist()
sub rsp,28
mov rcx,7FFF9CD3B1C8
mov edx,18A
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov rax,217EAE19428
mov rax,[rax]
mov rdx,rax
xor ecx,ecx
mov eax,[rax+8]
xor r8d,r8d
test eax,eax
jle short M00_L02
cmp [rdx+8],eax
setge r9b
movzx r9d,r9b
mov r10d,eax
not r10d
shr r10d,1F
test r10d,r9d
je short M00_L01
xchg ax,ax
M00_L00:
movsxd r9,r8d
movzx r9d,word ptr [rdx+r9*2+0C]
add ecx,r9d
inc r8d
cmp r8d,eax
jl short M00_L00
jmp short M00_L02
M00_L01:
cmp r8d,[rdx+8]
jae short M00_L03
movsxd r9,r8d
movzx r9d,word ptr [rdx+r9*2+0C]
add r9d,ecx
mov ecx,r9d
inc r8d
cmp r8d,eax
jl short M00_L01
M00_L02:
mov eax,ecx
add rsp,28
ret
M00_L03:
call CORINFO_HELP_RNGCHKFAIL
int 3
; Total bytes of code 144
Compare Jit Disasm
; System.Tests.Perf_String.IndexerCheckBoundCheckHoist()
sub rsp,28
mov rcx,7FFD6FA5B5C8
mov edx,18A
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov rax,1C759A89428
mov rax,[rax]
mov rdx,rax
xor ecx,ecx
mov eax,[rax+8]
xor r8d,r8d
test eax,eax
jle short M00_L02
cmp [rdx+8],eax
setge r9b
movzx r9d,r9b
mov r10d,eax
not r10d
shr r10d,1F
test r10d,r9d
je short M00_L01
xchg ax,ax
M00_L00:
movsxd r9,r8d
movzx r9d,word ptr [rdx+r9*2+0C]
add ecx,r9d
inc r8d
cmp r8d,eax
jl short M00_L00
jmp short M00_L02
M00_L01:
cmp r8d,[rdx+8]
jae short M00_L03
movsxd r9,r8d
movzx r9d,word ptr [rdx+r9*2+0C]
add r9d,ecx
mov ecx,r9d
inc r8d
cmp r8d,eax
jl short M00_L01
M00_L02:
mov eax,ecx
add rsp,28
ret
M00_L03:
call CORINFO_HELP_RNGCHKFAIL
int 3
; Total bytes of code 144
System.Tests.Perf_String.Insert(s1: "dzsdzsDDZSDZSDZSddsz", i: 7, s2: "Test")
Baseline Jit Disasm
; System.Tests.Perf_String.Insert(System.String, Int32, System.String)
mov rcx,rdx
mov edx,r8d
mov r8,r9
cmp [rcx],ecx
jmp near ptr System.String.Insert(Int32, System.String)
; Total bytes of code 16
; System.String.Insert(Int32, System.String)
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbp
push rbx
sub rsp,28
mov rdi,rcx
mov ebx,edx
mov rsi,r8
test rsi,rsi
je near ptr M01_L02
mov ebp,[rdi+8]
movsxd rax,ebp
mov ecx,ebx
cmp rax,rcx
jl near ptr M01_L03
mov r14d,[rsi+8]
test ebp,ebp
jne short M01_L00
mov rax,rsi
add rsp,28
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
M01_L00:
test r14d,r14d
jne short M01_L01
mov rax,rdi
add rsp,28
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
M01_L01:
lea ecx,[r14+rbp]
call System.String.FastAllocateString(Int32)
mov r15,rax
cmp [r15],r15d
lea r12,[r15+0C]
mov rcx,r12
lea rdx,[rdi+0C]
movsxd r13,ebx
add r13,r13
mov r8,r13
call System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
mov rcx,r12
add rcx,r13
lea rdx,[rsi+0C]
movsxd r8,r14d
add r8,r8
call System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
add r14d,ebx
movsxd r8,r14d
lea rcx,[r12+r8*2]
add rdi,0C
lea rdx,[rdi+r13]
sub ebp,ebx
movsxd r8,ebp
add r8,r8
call System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
mov rax,r15
add rsp,28
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
M01_L02:
mov rcx,offset MT_System.ArgumentNullException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov ecx,305
mov rdx,7FFB09DF4020
call CORINFO_HELP_STRCNS
mov rdx,rax
mov rcx,rsi
call System.ArgumentNullException..ctor(System.String)
mov rcx,rsi
call CORINFO_HELP_THROW
M01_L03:
mov rcx,offset MT_System.ArgumentOutOfRangeException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov ecx,199A
mov rdx,7FFB09DF4020
call CORINFO_HELP_STRCNS
mov rdx,rax
mov rcx,rsi
call System.ArgumentOutOfRangeException..ctor(System.String)
mov rcx,rsi
call CORINFO_HELP_THROW
int 3
; Total bytes of code 330
Compare Jit Disasm
; System.Tests.Perf_String.Insert(System.String, Int32, System.String)
mov rcx,rdx
mov edx,r8d
mov r8,r9
cmp [rcx],ecx
jmp near ptr System.String.Insert(Int32, System.String)
; Total bytes of code 16
; System.String.Insert(Int32, System.String)
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbp
push rbx
sub rsp,28
mov rdi,rcx
mov ebx,edx
mov rsi,r8
test rsi,rsi
je near ptr M01_L02
mov ebp,[rdi+8]
movsxd rax,ebp
mov ecx,ebx
cmp rax,rcx
jl near ptr M01_L03
mov r14d,[rsi+8]
test ebp,ebp
jne short M01_L00
mov rax,rsi
add rsp,28
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
M01_L00:
test r14d,r14d
jne short M01_L01
mov rax,rdi
add rsp,28
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
M01_L01:
lea ecx,[r14+rbp]
call System.String.FastAllocateString(Int32)
mov r15,rax
cmp [r15],r15d
lea r12,[r15+0C]
mov rcx,r12
lea rdx,[rdi+0C]
movsxd r13,ebx
add r13,r13
mov r8,r13
call System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
mov rcx,r12
add rcx,r13
lea rdx,[rsi+0C]
movsxd r8,r14d
add r8,r8
call System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
add r14d,ebx
movsxd r8,r14d
lea rcx,[r12+r8*2]
add rdi,0C
lea rdx,[rdi+r13]
sub ebp,ebx
movsxd r8,ebp
add r8,r8
call System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
mov rax,r15
add rsp,28
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
M01_L02:
mov rcx,offset MT_System.ArgumentNullException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov ecx,305
mov rdx,7FFC62054020
call CORINFO_HELP_STRCNS
mov rdx,rax
mov rcx,rsi
call System.ArgumentNullException..ctor(System.String)
mov rcx,rsi
call CORINFO_HELP_THROW
M01_L03:
mov rcx,offset MT_System.ArgumentOutOfRangeException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov ecx,199A
mov rdx,7FFC62054020
call CORINFO_HELP_STRCNS
mov rdx,rax
mov rcx,rsi
call System.ArgumentOutOfRangeException..ctor(System.String)
mov rcx,rsi
call CORINFO_HELP_THROW
int 3
; Total bytes of code 330
System.Tests.Perf_String.Trim_CharArr(s: " Test", c: [' ', ' '])
Baseline Jit Disasm
; System.Tests.Perf_String.Trim_CharArr(System.String, Char[])
mov rcx,rdx
mov rdx,r8
cmp [rcx],ecx
jmp near ptr System.String.Trim(Char[])
; Total bytes of code 13
; System.String.Trim(Char[])
sub rsp,28
xor eax,eax
mov [rsp+20],rax
test rdx,rdx
je short M01_L00
mov r8d,[rdx+8]
test r8d,r8d
je short M01_L00
add rdx,10
mov [rsp+20],rdx
mov rdx,[rsp+20]
mov r9d,3
call System.String.TrimHelper(Char*, Int32, System.Text.TrimType)
nop
add rsp,28
ret
M01_L00:
mov edx,3
call System.String.TrimWhiteSpaceHelper(System.Text.TrimType)
nop
add rsp,28
ret
; Total bytes of code 72
Compare Jit Disasm
; System.Tests.Perf_String.Trim_CharArr(System.String, Char[])
mov rcx,rdx
mov rdx,r8
cmp [rcx],ecx
jmp near ptr System.String.Trim(Char[])
; Total bytes of code 13
; System.String.Trim(Char[])
sub rsp,28
xor eax,eax
mov [rsp+20],rax
test rdx,rdx
je short M01_L00
mov r8d,[rdx+8]
test r8d,r8d
je short M01_L00
add rdx,10
mov [rsp+20],rdx
mov rdx,[rsp+20]
mov r9d,3
call System.String.TrimHelper(Char*, Int32, System.Text.TrimType)
nop
add rsp,28
ret
M01_L00:
mov edx,3
call System.String.TrimWhiteSpaceHelper(System.Text.TrimType)
nop
add rsp,28
ret
; Total bytes of code 72
System.Tests.Perf_String.Insert(s1: "Test", i: 2, s2: " Test")
Baseline Jit Disasm
; System.Tests.Perf_String.Insert(System.String, Int32, System.String)
mov rcx,rdx
mov edx,r8d
mov r8,r9
cmp [rcx],ecx
jmp near ptr System.String.Insert(Int32, System.String)
; Total bytes of code 16
; System.String.Insert(Int32, System.String)
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbp
push rbx
sub rsp,28
mov rdi,rcx
mov ebx,edx
mov rsi,r8
test rsi,rsi
je near ptr M01_L02
mov ebp,[rdi+8]
movsxd rax,ebp
mov ecx,ebx
cmp rax,rcx
jl near ptr M01_L03
mov r14d,[rsi+8]
test ebp,ebp
jne short M01_L00
mov rax,rsi
add rsp,28
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
M01_L00:
test r14d,r14d
jne short M01_L01
mov rax,rdi
add rsp,28
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
M01_L01:
lea ecx,[r14+rbp]
call System.String.FastAllocateString(Int32)
mov r15,rax
cmp [r15],r15d
lea r12,[r15+0C]
mov rcx,r12
lea rdx,[rdi+0C]
movsxd r13,ebx
add r13,r13
mov r8,r13
call System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
mov rcx,r12
add rcx,r13
lea rdx,[rsi+0C]
movsxd r8,r14d
add r8,r8
call System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
add r14d,ebx
movsxd r8,r14d
lea rcx,[r12+r8*2]
add rdi,0C
lea rdx,[rdi+r13]
sub ebp,ebx
movsxd r8,ebp
add r8,r8
call System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
mov rax,r15
add rsp,28
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
M01_L02:
mov rcx,offset MT_System.ArgumentNullException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov ecx,305
mov rdx,7FFB0AD64020
call CORINFO_HELP_STRCNS
mov rdx,rax
mov rcx,rsi
call System.ArgumentNullException..ctor(System.String)
mov rcx,rsi
call CORINFO_HELP_THROW
M01_L03:
mov rcx,offset MT_System.ArgumentOutOfRangeException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov ecx,199A
mov rdx,7FFB0AD64020
call CORINFO_HELP_STRCNS
mov rdx,rax
mov rcx,rsi
call System.ArgumentOutOfRangeException..ctor(System.String)
mov rcx,rsi
call CORINFO_HELP_THROW
int 3
; Total bytes of code 330
Compare Jit Disasm
; System.Tests.Perf_String.Insert(System.String, Int32, System.String)
mov rcx,rdx
mov edx,r8d
mov r8,r9
cmp [rcx],ecx
jmp near ptr System.String.Insert(Int32, System.String)
; Total bytes of code 16
; System.String.Insert(Int32, System.String)
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbp
push rbx
sub rsp,28
mov rdi,rcx
mov ebx,edx
mov rsi,r8
test rsi,rsi
je near ptr M01_L02
mov ebp,[rdi+8]
movsxd rax,ebp
mov ecx,ebx
cmp rax,rcx
jl near ptr M01_L03
mov r14d,[rsi+8]
test ebp,ebp
jne short M01_L00
mov rax,rsi
add rsp,28
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
M01_L00:
test r14d,r14d
jne short M01_L01
mov rax,rdi
add rsp,28
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
M01_L01:
lea ecx,[r14+rbp]
call System.String.FastAllocateString(Int32)
mov r15,rax
cmp [r15],r15d
lea r12,[r15+0C]
mov rcx,r12
lea rdx,[rdi+0C]
movsxd r13,ebx
add r13,r13
mov r8,r13
call System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
mov rcx,r12
add rcx,r13
lea rdx,[rsi+0C]
movsxd r8,r14d
add r8,r8
call System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
add r14d,ebx
movsxd r8,r14d
lea rcx,[r12+r8*2]
add rdi,0C
lea rdx,[rdi+r13]
sub ebp,ebx
movsxd r8,ebp
add r8,r8
call System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
mov rax,r15
add rsp,28
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
M01_L02:
mov rcx,offset MT_System.ArgumentNullException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov ecx,305
mov rdx,7FFC68CF4020
call CORINFO_HELP_STRCNS
mov rdx,rax
mov rcx,rsi
call System.ArgumentNullException..ctor(System.String)
mov rcx,rsi
call CORINFO_HELP_THROW
M01_L03:
mov rcx,offset MT_System.ArgumentOutOfRangeException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov ecx,199A
mov rdx,7FFC68CF4020
call CORINFO_HELP_STRCNS
mov rdx,rax
mov rcx,rsi
call System.ArgumentOutOfRangeException..ctor(System.String)
mov rcx,rsi
call CORINFO_HELP_THROW
int 3
; Total bytes of code 330
System.Tests.Perf_String.Split(s: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", arr: [' '], options: RemoveEmptyEntries)
Baseline Jit Disasm
; System.Tests.Perf_String.Split(System.String, Char[], System.StringSplitOptions)
push rsi
sub rsp,30
xor eax,eax
mov [rsp+20],rax
cmp [rdx],edx
test r8,r8
je short M00_L01
lea rcx,[r8+10]
mov esi,[r8+8]
M00_L00:
mov [rsp+20],rcx
mov [rsp+28],esi
mov rcx,rdx
lea rdx,[rsp+20]
mov r8d,7FFFFFFF
call System.String.SplitInternal(System.ReadOnlySpan`1<Char>, Int32, System.StringSplitOptions)
nop
add rsp,30
pop rsi
ret
M00_L01:
xor ecx,ecx
xor esi,esi
jmp short M00_L00
; Total bytes of code 68
; System.String.SplitInternal(System.ReadOnlySpan`1<Char>, Int32, System.StringSplitOptions)
push rbp
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbx
sub rsp,88
vzeroupper
lea rbp,[rsp+30]
xor eax,eax
mov [rbp+8],rax
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rbp+10],xmm4
vmovdqa xmmword ptr [rbp+20],xmm4
vmovdqa xmmword ptr [rbp+30],xmm4
vmovdqa xmmword ptr [rbp+40],xmm4
mov [rbp+50],rax
mov rax,0A468D8BE0260
mov [rbp],rax
mov rsi,rcx
mov edi,r8d
mov ebx,r9d
test edi,edi
jl near ptr M01_L17
test ebx,0FFFFFFFC
jne near ptr M01_L18
cmp edi,1
jle near ptr M01_L08
cmp dword ptr [rsi+8],0
je near ptr M01_L08
cmp dword ptr [rdx+8],0
jbe near ptr M01_L15
M01_L00:
add rsp,30
test [rsp],esp
sub rsp,200
sub rsp,30
lea rcx,[rsp+30]
lea r8,[rbp+48]
mov [r8],rcx
mov dword ptr [r8+8],80
xor ecx,ecx
mov [rbp+38],rcx
mov [rbp+40],ecx
vmovdqu xmm0,xmmword ptr [rdx]
vmovdqu xmmword ptr [rbp+28],xmm0
mov rcx,rsi
lea rdx,[rbp+28]
lea r8,[rbp+38]
call System.String.MakeSeparatorList(System.ReadOnlySpan`1<Char>, System.Collections.Generic.ValueListBuilder`1<Int32> ByRef)
mov eax,[rbp+40]
mov ecx,eax
mov edx,[rbp+50]
cmp rcx,rdx
ja near ptr M01_L16
mov r10,[rbp+48]
test eax,eax
je near ptr M01_L07
test ebx,ebx
jne near ptr M01_L09
xor r14d,r14d
xor r15d,r15d
mov [rbp+18],r10
mov [rbp+20],eax
mov [rbp+8],r14
mov [rbp+10],r15d
mov [rsp+20],edi
mov rcx,rsi
lea rdx,[rbp+18]
lea r8,[rbp+8]
mov r9d,1
call System.String.SplitWithoutPostProcessing(System.ReadOnlySpan`1<Int32>, System.ReadOnlySpan`1<Int32>, Int32, Int32)
mov r12,rax
M01_L01:
cmp qword ptr [rbp+38],0
jne near ptr M01_L13
M01_L02:
mov rax,r12
mov rcx,0A468D8BE0260
cmp [rbp],rcx
je short M01_L03
call CORINFO_HELP_FAIL_FAST
M01_L03:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
M01_L04:
test bl,1
jne near ptr M01_L10
M01_L05:
test edi,edi
je near ptr M01_L11
mov rcx,offset MT_System.String[]
mov edx,1
call CORINFO_HELP_NEWARR_1_OBJ
mov r14,rax
lea rcx,[r14+10]
mov rdx,r13
call CORINFO_HELP_ASSIGN_REF
mov rax,r14
mov rcx,0A468D8BE0260
cmp [rbp],rcx
je short M01_L06
call CORINFO_HELP_FAIL_FAST
M01_L06:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
M01_L07:
mov edi,1
M01_L08:
mov r13,rsi
test bl,2
jne near ptr M01_L14
jmp short M01_L04
M01_L09:
xor r14d,r14d
xor r15d,r15d
mov [rbp+18],r10
mov [rbp+20],eax
mov [rbp+8],r14
mov [rbp+10],r15d
mov [rsp+20],edi
mov [rsp+28],ebx
mov rcx,rsi
lea rdx,[rbp+18]
lea r8,[rbp+8]
mov r9d,1
call System.String.SplitWithPostProcessing(System.ReadOnlySpan`1<Int32>, System.ReadOnlySpan`1<Int32>, Int32, Int32, System.StringSplitOptions)
mov r12,rax
jmp near ptr M01_L01
M01_L10:
cmp dword ptr [r13+8],0
jne near ptr M01_L05
M01_L11:
mov rcx,7FFD305B4540
mov edx,28
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rax,26F43432EF0
mov rax,[rax]
mov rcx,0A468D8BE0260
cmp [rbp],rcx
je short M01_L12
call CORINFO_HELP_FAIL_FAST
M01_L12:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
M01_L13:
mov rcx,7FFD305B4540
mov edx,29
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rcx,26F43432EF8
mov rcx,[rcx]
mov rdx,[rbp+38]
xor r8d,r8d
cmp [rcx],ecx
call qword ptr [7FFD30874528]
xor ecx,ecx
mov [rbp+38],rcx
jmp near ptr M01_L02
M01_L14:
test edi,edi
jle near ptr M01_L04
cmp [rsi],esi
mov rcx,rsi
mov edx,3
call System.String.TrimWhiteSpaceHelper(System.Text.TrimType)
mov r13,rax
jmp near ptr M01_L04
M01_L15:
and ebx,0FFFFFFFD
jmp near ptr M01_L00
M01_L16:
call System.ThrowHelper.ThrowArgumentOutOfRangeException()
int 3
M01_L17:
mov rcx,offset MT_System.ArgumentOutOfRangeException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov ecx,1C9
mov rdx,7FFD304A4020
call CORINFO_HELP_STRCNS
mov rdi,rax
mov ecx,0A1B7
mov rdx,7FFD304A4020
call CORINFO_HELP_STRCNS
mov rcx,rax
xor edx,edx
call System.SR.GetResourceString(System.String, System.String)
mov r8,rax
mov rdx,rdi
mov rcx,rsi
call System.ArgumentOutOfRangeException..ctor(System.String, System.String)
mov rcx,rsi
call CORINFO_HELP_THROW
M01_L18:
mov ecx,42
mov edx,57
call System.ThrowHelper.ThrowArgumentException(System.ExceptionResource, System.ExceptionArgument)
int 3
; Total bytes of code 813
Compare Jit Disasm
; System.Tests.Perf_String.Split(System.String, Char[], System.StringSplitOptions)
push rsi
sub rsp,30
xor eax,eax
mov [rsp+20],rax
cmp [rdx],edx
test r8,r8
je short M00_L01
lea rcx,[r8+10]
mov esi,[r8+8]
M00_L00:
mov [rsp+20],rcx
mov [rsp+28],esi
mov rcx,rdx
lea rdx,[rsp+20]
mov r8d,7FFFFFFF
call System.String.SplitInternal(System.ReadOnlySpan`1<Char>, Int32, System.StringSplitOptions)
nop
add rsp,30
pop rsi
ret
M00_L01:
xor ecx,ecx
xor esi,esi
jmp short M00_L00
; Total bytes of code 68
; System.String.SplitInternal(System.ReadOnlySpan`1<Char>, Int32, System.StringSplitOptions)
push rbp
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbx
sub rsp,88
vzeroupper
lea rbp,[rsp+30]
xor eax,eax
mov [rbp+8],rax
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rbp+10],xmm4
vmovdqa xmmword ptr [rbp+20],xmm4
vmovdqa xmmword ptr [rbp+30],xmm4
vmovdqa xmmword ptr [rbp+40],xmm4
mov [rbp+50],rax
mov rax,501E46E3C13B
mov [rbp],rax
mov rsi,rcx
mov edi,r8d
mov ebx,r9d
test edi,edi
jl near ptr M01_L17
test ebx,0FFFFFFFC
jne near ptr M01_L18
cmp edi,1
jle near ptr M01_L08
cmp dword ptr [rsi+8],0
je near ptr M01_L08
cmp dword ptr [rdx+8],0
jbe near ptr M01_L15
M01_L00:
add rsp,30
test [rsp],esp
sub rsp,200
sub rsp,30
lea rcx,[rsp+30]
lea r8,[rbp+48]
mov [r8],rcx
mov dword ptr [r8+8],80
xor ecx,ecx
mov [rbp+38],rcx
mov [rbp+40],ecx
vmovdqu xmm0,xmmword ptr [rdx]
vmovdqu xmmword ptr [rbp+28],xmm0
mov rcx,rsi
lea rdx,[rbp+28]
lea r8,[rbp+38]
call System.String.MakeSeparatorList(System.ReadOnlySpan`1<Char>, System.Collections.Generic.ValueListBuilder`1<Int32> ByRef)
mov eax,[rbp+40]
mov ecx,eax
mov edx,[rbp+50]
cmp rcx,rdx
ja near ptr M01_L16
mov r10,[rbp+48]
test eax,eax
je near ptr M01_L07
test ebx,ebx
jne near ptr M01_L09
xor r14d,r14d
xor r15d,r15d
mov [rbp+18],r10
mov [rbp+20],eax
mov [rbp+8],r14
mov [rbp+10],r15d
mov [rsp+20],edi
mov rcx,rsi
lea rdx,[rbp+18]
lea r8,[rbp+8]
mov r9d,1
call System.String.SplitWithoutPostProcessing(System.ReadOnlySpan`1<Int32>, System.ReadOnlySpan`1<Int32>, Int32, Int32)
mov r12,rax
M01_L01:
cmp qword ptr [rbp+38],0
jne near ptr M01_L13
M01_L02:
mov rax,r12
mov rcx,501E46E3C13B
cmp [rbp],rcx
je short M01_L03
call CORINFO_HELP_FAIL_FAST
M01_L03:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
M01_L04:
test bl,1
jne near ptr M01_L10
M01_L05:
test edi,edi
je near ptr M01_L11
mov rcx,offset MT_System.String[]
mov edx,1
call CORINFO_HELP_NEWARR_1_OBJ
mov r14,rax
lea rcx,[r14+10]
mov rdx,r13
call CORINFO_HELP_ASSIGN_REF
mov rax,r14
mov rcx,501E46E3C13B
cmp [rbp],rcx
je short M01_L06
call CORINFO_HELP_FAIL_FAST
M01_L06:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
M01_L07:
mov edi,1
M01_L08:
mov r13,rsi
test bl,2
jne near ptr M01_L14
jmp short M01_L04
M01_L09:
xor r14d,r14d
xor r15d,r15d
mov [rbp+18],r10
mov [rbp+20],eax
mov [rbp+8],r14
mov [rbp+10],r15d
mov [rsp+20],edi
mov [rsp+28],ebx
mov rcx,rsi
lea rdx,[rbp+18]
lea r8,[rbp+8]
mov r9d,1
call System.String.SplitWithPostProcessing(System.ReadOnlySpan`1<Int32>, System.ReadOnlySpan`1<Int32>, Int32, Int32, System.StringSplitOptions)
mov r12,rax
jmp near ptr M01_L01
M01_L10:
cmp dword ptr [r13+8],0
jne near ptr M01_L05
M01_L11:
mov rcx,7FFF5B7F4550
mov edx,28
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rax,23418002EF0
mov rax,[rax]
mov rcx,501E46E3C13B
cmp [rbp],rcx
je short M01_L12
call CORINFO_HELP_FAIL_FAST
M01_L12:
nop
lea rsp,[rbp+58]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
M01_L13:
mov rcx,7FFF5B7F4550
mov edx,29
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rcx,23418002EF8
mov rcx,[rcx]
mov rdx,[rbp+38]
xor r8d,r8d
cmp [rcx],ecx
call qword ptr [7FFF5BAB4D40]
xor ecx,ecx
mov [rbp+38],rcx
jmp near ptr M01_L02
M01_L14:
test edi,edi
jle near ptr M01_L04
cmp [rsi],esi
mov rcx,rsi
mov edx,3
call System.String.TrimWhiteSpaceHelper(System.Text.TrimType)
mov r13,rax
jmp near ptr M01_L04
M01_L15:
and ebx,0FFFFFFFD
jmp near ptr M01_L00
M01_L16:
call System.ThrowHelper.ThrowArgumentOutOfRangeException()
int 3
M01_L17:
mov rcx,offset MT_System.ArgumentOutOfRangeException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov ecx,1C9
mov rdx,7FFF5B6E4020
call CORINFO_HELP_STRCNS
mov rdi,rax
mov ecx,0A21D
mov rdx,7FFF5B6E4020
call CORINFO_HELP_STRCNS
mov rcx,rax
xor edx,edx
call System.SR.GetResourceString(System.String, System.String)
mov r8,rax
mov rdx,rdi
mov rcx,rsi
call System.ArgumentOutOfRangeException..ctor(System.String, System.String)
mov rcx,rsi
call CORINFO_HELP_THROW
M01_L18:
mov ecx,42
mov edx,57
call System.ThrowHelper.ThrowArgumentException(System.ExceptionResource, System.ExceptionArgument)
int 3
; Total bytes of code 813
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment