Assembly Diffs
windows x64
Diffs are based on 1,999,649 contexts (587,594 MinOpts, 1,412,055 FullOpts).
MISSED contexts: base: 3,225 (0.16%), diff: 3,239 (0.16%)
Overall (+41,365 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
aspnet.run.windows.x64.checked.mch |
46,746,711 |
+1,189 |
benchmarks.run.windows.x64.checked.mch |
11,727,476 |
+473 |
benchmarks.run_pgo.windows.x64.checked.mch |
34,353,258 |
+27,965 |
benchmarks.run_tiered.windows.x64.checked.mch |
19,449,443 |
+127 |
coreclr_tests.run.windows.x64.checked.mch |
296,148,172 |
+757 |
libraries.crossgen2.windows.x64.checked.mch |
44,929,099 |
+208 |
libraries.pmi.windows.x64.checked.mch |
67,669,814 |
+1,064 |
libraries_tests.run.windows.x64.Release.mch |
42,430,255 |
+7,704 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
142,641,671 |
+1,436 |
realworld.run.windows.x64.checked.mch |
14,769,832 |
-151 |
smoke_tests.nativeaot.windows.x64.checked.mch |
5,085,273 |
+593 |
FullOpts (+41,365 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
aspnet.run.windows.x64.checked.mch |
28,257,971 |
+1,189 |
benchmarks.run.windows.x64.checked.mch |
11,726,881 |
+473 |
benchmarks.run_pgo.windows.x64.checked.mch |
15,516,562 |
+27,965 |
benchmarks.run_tiered.windows.x64.checked.mch |
4,081,554 |
+127 |
coreclr_tests.run.windows.x64.checked.mch |
110,373,782 |
+757 |
libraries.crossgen2.windows.x64.checked.mch |
44,927,912 |
+208 |
libraries.pmi.windows.x64.checked.mch |
67,556,293 |
+1,064 |
libraries_tests.run.windows.x64.Release.mch |
10,788,375 |
+7,704 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
131,858,801 |
+1,436 |
realworld.run.windows.x64.checked.mch |
14,383,223 |
-151 |
smoke_tests.nativeaot.windows.x64.checked.mch |
5,084,326 |
+593 |
Example diffs
aspnet.run.windows.x64.checked.mch
-7 (-10.77%) : 127877.dasm - System.Reflection.Internal.ObjectPool`1[System.Canon]:Free(System.Canon):this (Tier1)
@@ -10,69 +10,56 @@
;
; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.Internal.ObjectPool`1[System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <System.__Canon>
-; V02 loc0 [V02,T03] ( 4, 4.01) ref -> rbx class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 5, 5.03) int -> rsi
+; V02 loc0 [V02,T03] ( 4, 4.01) ref -> rcx class-hnd exact single-def <<unknown class>>
+; V03 loc1 [V03,T00] ( 5, 5.03) int -> rax
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T05] ( 3, 3.01) int -> rdi "CSE - aggressive"
-; V06 cse1 [V06,T04] ( 3, 3.02) long -> rcx "CSE - aggressive"
+; V05 cse0 [V05,T05] ( 3, 3.01) int -> r8 "CSE - aggressive"
+; V06 cse1 [V06,T04] ( 3, 3.02) long -> r10 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M19580_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi
- push rsi
- push rbx
- sub rsp, 32
- ;; size=7 bbWeight=1 PerfScore 3.25
+ sub rsp, 40
+ ;; size=4 bbWeight=1 PerfScore 0.25
G_M19580_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx rdx]
- mov rbx, gword ptr [rcx+0x08]
- ; gcrRegs +[rbx]
- xor esi, esi
- mov edi, dword ptr [rbx+0x08]
- test edi, edi
- jle SHORT G_M19580_IG08
- ;; size=13 bbWeight=1 PerfScore 5.50
-G_M19580_IG03: ; bbWeight=1.01, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- mov ecx, esi
- cmp gword ptr [rbx+8*rcx+0x10], 0
+ mov rcx, gword ptr [rcx+0x08]
+ xor eax, eax
+ mov r8d, dword ptr [rcx+0x08]
+ test r8d, r8d
+ jle SHORT G_M19580_IG07
+ ;; size=15 bbWeight=1 PerfScore 5.50
+G_M19580_IG03: ; bbWeight=1.01, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
+ mov r10d, eax
+ cmp gword ptr [rcx+8*r10+0x10], 0
jne SHORT G_M19580_IG06
- ;; size=10 bbWeight=1.01 PerfScore 4.28
-G_M19580_IG04: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
- lea rcx, bword ptr [rbx+8*rcx+0x10]
+ ;; size=11 bbWeight=1.01 PerfScore 4.28
+G_M19580_IG04: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref
+ lea rcx, bword ptr [rcx+8*r10+0x10]
+ ; gcrRegs -[rcx]
; byrRegs +[rcx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx rbx]
+ ; gcrRegs -[rdx]
; byrRegs -[rcx]
nop
;; size=11 bbWeight=1 PerfScore 2.25
G_M19580_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
- pop rbx
- pop rsi
- pop rdi
+ add rsp, 40
ret
- ;; size=8 bbWeight=1 PerfScore 2.75
-G_M19580_IG06: ; bbWeight=1.01, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rdx rbx]
- inc esi
- cmp edi, esi
- jle SHORT G_M19580_IG08
- ;; size=6 bbWeight=1.01 PerfScore 1.51
-G_M19580_IG07: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M19580_IG03
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M19580_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rdx rbx]
- add rsp, 32
- pop rbx
- pop rsi
- pop rdi
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M19580_IG06: ; bbWeight=1.01, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rcx rdx]
+ inc eax
+ cmp r8d, eax
+ jg SHORT G_M19580_IG03
+ ;; size=7 bbWeight=1.01 PerfScore 1.51
+G_M19580_IG07: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rcx rdx]
+ add rsp, 40
ret
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=0.20 PerfScore 0.25
-; Total bytes of code 65, prolog size 7, PerfScore 20.55, instruction count 29, allocated bytes for code 65 (MethodHash=881eb383) for method System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
+; Total bytes of code 58, prolog size 4, PerfScore 15.30, instruction count 19, allocated bytes for code 58 (MethodHash=881eb383) for method System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
; ============================================================
Unwind Info:
@@ -80,12 +67,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
-39 (-10.63%) : 12416.dasm - System.Net.Sockets.DynamicWinsockMethods:GetMethods(int,int,int):System.Net.Sockets.DynamicWinsockMethods (Tier1)
@@ -9,95 +9,130 @@
; 3 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 4, 3 ) int -> rbx single-def
-; V01 arg1 [V01,T04] ( 4, 3 ) int -> rsi single-def
-; V02 arg2 [V02,T05] ( 4, 3 ) int -> rdi single-def
-; V03 loc0 [V03,T09] ( 4, 2 ) ref -> [rbp-0x48] class-hnd exact EH-live spill-single-def <<unknown class>>
-; V04 loc1 [V04 ] ( 5, 4 ) ubyte -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op
-; V05 loc2 [V05,T02] ( 5, 5 ) ref -> r12 class-hnd <System.Net.Sockets.DynamicWinsockMethods>
-; V06 loc3 [V06,T00] ( 7, 7 ) int -> r15
-; V07 loc4 [V07,T10] ( 3, 2 ) ref -> r12 class-hnd <System.Net.Sockets.DynamicWinsockMethods>
+; V00 arg0 [V00,T02] ( 4, 3.39) int -> rbx single-def
+; V01 arg1 [V01,T03] ( 4, 3.39) int -> rsi single-def
+; V02 arg2 [V02,T04] ( 4, 3.39) int -> rdi single-def
+; V03 loc0 [V03,T10] ( 4, 2 ) ref -> [rbp-0x40] class-hnd exact EH-live spill-single-def <<unknown class>>
+; V04 loc1 [V04 ] ( 5, 4 ) ubyte -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
+; V05 loc2 [V05,T05] ( 5, 5 ) ref -> r15 class-hnd <System.Net.Sockets.DynamicWinsockMethods>
+; V06 loc3 [V06,T00] ( 7, 7 ) int -> rcx
+; V07 loc4 [V07,T11] ( 3, 2 ) ref -> r15 class-hnd <System.Net.Sockets.DynamicWinsockMethods>
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T13] ( 5, 0 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.DynamicWinsockMethods>
-; V10 tmp2 [V10,T08] ( 2, 4 ) ref -> rcx class-hnd exact "Inlining Arg" <<unknown class>>
+; V09 tmp1 [V09,T12] ( 5, 1.56) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.DynamicWinsockMethods>
+; V10 tmp2 [V10,T08] ( 2, 4 ) ref -> rdx class-hnd exact "Inlining Arg" <<unknown class>>
;* V11 tmp3 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V12 tmp4 [V12,T12] ( 7, 0 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V13 tmp5 [V13,T15] ( 3, 0 ) ref -> rdx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V14 tmp6 [V14,T14] ( 4, 0 ) int -> rax "Inline stloc first use temp"
-; V15 tmp7 [V15,T01] ( 3, 6 ) ref -> rcx "arr expr"
-; V16 PSPSym [V16,T11] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
-; V17 cse0 [V17,T07] ( 4, 4 ) int -> r13 "CSE - aggressive"
-; V18 cse1 [V18,T06] ( 5, 4 ) ref -> r14 "CSE - aggressive"
+; V12 tmp4 [V12,T09] ( 7, 3.91) ref -> rcx class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V13 tmp5 [V13,T15] ( 3, 0.78) ref -> rbx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V14 tmp6 [V14,T14] ( 4, 0.78) int -> rsi "Inline stloc first use temp"
+; V15 tmp7 [V15,T01] ( 3, 6 ) ref -> rdx "arr expr"
+; V16 PSPSym [V16,T13] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
+; V17 cse0 [V17,T07] ( 4, 4 ) int -> rax "CSE - aggressive"
+; V18 cse1 [V18,T06] ( 5, 4.39) ref -> r14 "CSE - aggressive"
;
-; Lcl frame size = 56
+; Lcl frame size = 64
G_M33586_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
- push r12
push rdi
push rsi
push rbx
- sub rsp, 56
+ sub rsp, 64
lea rbp, [rsp+0x70]
mov qword ptr [rbp-0x50], rsp
mov ebx, ecx
mov esi, edx
mov edi, r8d
- ;; size=32 bbWeight=1 PerfScore 10.50
+ ;; size=30 bbWeight=1 PerfScore 9.50
G_M33586_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdx]
; gcrRegs +[r14]
mov rcx, r14
; gcrRegs +[rcx]
- mov gword ptr [rbp-0x48], rcx
+ mov gword ptr [rbp-0x40], rcx
; GC ptr vars +{V03}
xor edx, edx
- mov dword ptr [rbp-0x40], edx
+ mov dword ptr [rbp-0x38], edx
;; size=25 bbWeight=1 PerfScore 4.75
-G_M33586_IG03: ; bbWeight=1, gcVars=0000000000000200 {V03}, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, gcvars, byref, isz
- cmp byte ptr [rbp-0x40], 0
- jne G_M33586_IG06
- lea rdx, [rbp-0x40]
+G_M33586_IG03: ; bbWeight=1, gcVars=0000000000000400 {V03}, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, gcvars, byref, isz
+ cmp byte ptr [rbp-0x38], 0
+ jne SHORT G_M33586_IG08
+ lea rdx, [rbp-0x38]
call <unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- xor r15d, r15d
- mov r13d, dword ptr [r14+0x10]
- test r13d, r13d
- jle SHORT G_M33586_IG05
- ;; size=31 bbWeight=1 PerfScore 8.00
+ xor ecx, ecx
+ mov eax, dword ptr [r14+0x10]
+ test eax, eax
+ jle SHORT G_M33586_IG10
+ ;; size=25 bbWeight=1 PerfScore 8.00
G_M33586_IG04: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
- mov rcx, r14
- ; gcrRegs +[rcx]
- cmp r15d, r13d
- jae G_M33586_IG10
- mov rcx, gword ptr [rcx+0x08]
- cmp r15d, dword ptr [rcx+0x08]
- jae G_M33586_IG09
- mov eax, r15d
- mov r12, gword ptr [rcx+8*rax+0x10]
- ; gcrRegs +[r12]
- cmp dword ptr [r12+0x38], ebx
- jne G_M33586_IG11
- cmp dword ptr [r12+0x3C], esi
- jne SHORT G_M33586_IG11
- cmp dword ptr [r12+0x40], edi
- jne SHORT G_M33586_IG11
+ mov rdx, r14
+ ; gcrRegs +[rdx]
+ cmp ecx, eax
+ jae SHORT G_M33586_IG06
+ mov rdx, gword ptr [rdx+0x08]
+ cmp ecx, dword ptr [rdx+0x08]
+ jae SHORT G_M33586_IG05
+ mov r8d, ecx
+ mov r15, gword ptr [rdx+8*r8+0x10]
+ ; gcrRegs +[r15]
+ cmp dword ptr [r15+0x38], ebx
+ jne SHORT G_M33586_IG09
+ cmp dword ptr [r15+0x3C], esi
+ jne SHORT G_M33586_IG09
+ cmp dword ptr [r15+0x40], edi
+ jne SHORT G_M33586_IG09
+ jmp SHORT G_M33586_IG13
+ ;; size=44 bbWeight=1 PerfScore 23.75
+G_M33586_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdx r14-r15]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M33586_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M33586_IG07: ; bbWeight=0, gcrefRegs=200A {rcx rbx r13}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rcx rbx r13]
+ lea edx, [rsi+0x01]
+ mov dword ptr [rcx+0x10], edx
+ mov ecx, esi
+ ; gcrRegs -[rcx]
+ lea rcx, bword ptr [rbx+8*rcx+0x10]
+ ; byrRegs +[rcx]
+ mov rdx, r13
+ ; gcrRegs +[rdx]
+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rdx rbx]
+ ; byrRegs -[rcx]
jmp SHORT G_M33586_IG12
- ;; size=61 bbWeight=1 PerfScore 23.75
-G_M33586_IG05: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx r12]
+ ;; size=23 bbWeight=0 PerfScore 0.00
+G_M33586_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r13]
+ call [System.Threading.Monitor:ThrowLockTakenException()]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M33586_IG09: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r14]
+ inc ecx
+ cmp ecx, eax
+ jl SHORT G_M33586_IG04
+ ;; size=6 bbWeight=1 PerfScore 1.50
+G_M33586_IG10: ; bbWeight=0.39, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; System.Net.Sockets.DynamicWinsockMethods
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov r12, rax
- ; gcrRegs +[r12]
- mov rcx, r12
+ mov r13, rax
+ ; gcrRegs +[r13]
+ mov rcx, r13
; gcrRegs +[rcx]
mov edx, ebx
mov r8d, esi
@@ -108,127 +143,91 @@ G_M33586_IG05: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byr
mov rcx, r14
; gcrRegs +[rcx]
inc dword ptr [rcx+0x14]
- mov rdx, gword ptr [rcx+0x08]
- ; gcrRegs +[rdx]
- mov eax, dword ptr [rcx+0x10]
- cmp dword ptr [rdx+0x08], eax
- jbe SHORT G_M33586_IG07
- lea r8d, [rax+0x01]
- mov dword ptr [rcx+0x10], r8d
- mov ecx, eax
- ; gcrRegs -[rcx]
- lea rcx, bword ptr [rdx+8*rcx+0x10]
- ; byrRegs +[rcx]
- mov rdx, r12
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx r14]
- ; byrRegs -[rcx]
- jmp SHORT G_M33586_IG08
- ;; size=78 bbWeight=0 PerfScore 0.00
-G_M33586_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r12]
- call [System.Threading.Monitor:ThrowLockTakenException()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M33586_IG07: ; bbWeight=0, gcrefRegs=1002 {rcx r12}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rcx r12]
- mov rdx, r12
+ mov rbx, gword ptr [rcx+0x08]
+ ; gcrRegs +[rbx]
+ mov esi, dword ptr [rcx+0x10]
+ cmp dword ptr [rbx+0x08], esi
+ ja SHORT G_M33586_IG07
+ ;; size=53 bbWeight=0.39 PerfScore 6.54
+G_M33586_IG11: ; bbWeight=0, gcrefRegs=2002 {rcx r13}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx r14]
+ mov rdx, r13
; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=9 bbWeight=0 PerfScore 0.00
-G_M33586_IG08: ; bbWeight=0, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M33586_IG12
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M33586_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r12]
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M33586_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M33586_IG11: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r14]
- inc r15d
- cmp r15d, r13d
- jge SHORT G_M33586_IG05
- jmp G_M33586_IG04
- ;; size=13 bbWeight=1 PerfScore 3.50
-G_M33586_IG12: ; bbWeight=1, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref, isz
...
-7 (-10.45%) : 117797.dasm - System.Reflection.Internal.ObjectPool`1[System.Canon]:Free(System.Canon):this (Tier1)
@@ -10,69 +10,56 @@
;
; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.Internal.ObjectPool`1[System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <System.__Canon>
-; V02 loc0 [V02,T03] ( 4, 4.50) ref -> rbx class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 6, 8.01) int -> rsi
+; V02 loc0 [V02,T03] ( 4, 4.50) ref -> rcx class-hnd exact single-def <<unknown class>>
+; V03 loc1 [V03,T00] ( 6, 8.01) int -> rax
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 3, 3.50) int -> rdi "CSE - aggressive"
+; V05 cse0 [V05,T04] ( 3, 3.50) int -> r8 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M19580_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi
- push rsi
- push rbx
- sub rsp, 32
- ;; size=7 bbWeight=1 PerfScore 3.25
+ sub rsp, 40
+ ;; size=4 bbWeight=1 PerfScore 0.25
G_M19580_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx rdx]
- mov rbx, gword ptr [rcx+0x08]
- ; gcrRegs +[rbx]
- xor esi, esi
- mov edi, dword ptr [rbx+0x08]
- test edi, edi
- jle SHORT G_M19580_IG08
- ;; size=13 bbWeight=1 PerfScore 5.50
-G_M19580_IG03: ; bbWeight=1.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- mov ecx, esi
- cmp gword ptr [rbx+8*rcx+0x10], 0
+ mov rcx, gword ptr [rcx+0x08]
+ xor eax, eax
+ mov r8d, dword ptr [rcx+0x08]
+ test r8d, r8d
+ jle SHORT G_M19580_IG07
+ ;; size=15 bbWeight=1 PerfScore 5.50
+G_M19580_IG03: ; bbWeight=1.50, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
+ mov r10d, eax
+ cmp gword ptr [rcx+8*r10+0x10], 0
jne SHORT G_M19580_IG06
- ;; size=10 bbWeight=1.50 PerfScore 6.39
-G_M19580_IG04: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
- mov ecx, esi
- lea rcx, bword ptr [rbx+8*rcx+0x10]
+ ;; size=11 bbWeight=1.50 PerfScore 6.39
+G_M19580_IG04: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref
+ mov eax, eax
+ lea rcx, bword ptr [rcx+8*rax+0x10]
+ ; gcrRegs -[rcx]
; byrRegs +[rcx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx rbx]
+ ; gcrRegs -[rdx]
; byrRegs -[rcx]
nop
;; size=13 bbWeight=1 PerfScore 2.50
G_M19580_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
- pop rbx
- pop rsi
- pop rdi
+ add rsp, 40
ret
- ;; size=8 bbWeight=1 PerfScore 2.75
-G_M19580_IG06: ; bbWeight=1.50, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rdx rbx]
- inc esi
- cmp edi, esi
- jle SHORT G_M19580_IG08
- ;; size=6 bbWeight=1.50 PerfScore 2.25
-G_M19580_IG07: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M19580_IG03
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M19580_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rdx rbx]
- add rsp, 32
- pop rbx
- pop rsi
- pop rdi
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M19580_IG06: ; bbWeight=1.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rcx rdx]
+ inc eax
+ cmp r8d, eax
+ jg SHORT G_M19580_IG03
+ ;; size=7 bbWeight=1.50 PerfScore 2.25
+G_M19580_IG07: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rcx rdx]
+ add rsp, 40
ret
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=0.19 PerfScore 0.24
-; Total bytes of code 67, prolog size 7, PerfScore 23.64, instruction count 30, allocated bytes for code 67 (MethodHash=881eb383) for method System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
+; Total bytes of code 60, prolog size 4, PerfScore 18.39, instruction count 20, allocated bytes for code 60 (MethodHash=881eb383) for method System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
; ============================================================
Unwind Info:
@@ -80,12 +67,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+29 (+14.01%) : 54512.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
@@ -38,31 +38,31 @@ G_M27413_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M27413_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx rsi, dl
;; size=4 bbWeight=1 PerfScore 0.25
-G_M27413_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x10]
test esi, esi
- jne SHORT G_M27413_IG09
- ;; size=7 bbWeight=1 PerfScore 3.25
+ jne G_M27413_IG11
+ ;; size=11 bbWeight=1 PerfScore 3.25
G_M27413_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov ebp, edi
and ebp, -4
- je G_M27413_IG14
+ je SHORT G_M27413_IG10
mov eax, edi
and eax, -3
cmp eax, 4
- je SHORT G_M27413_IG10
+ je G_M27413_IG12
;; size=21 bbWeight=1 PerfScore 3.25
G_M27413_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor r14d, r14d
;; size=3 bbWeight=1 PerfScore 0.25
-G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx r15, r14b
lea r13d, [rdi-0x04]
cmp ebp, 4
- je SHORT G_M27413_IG11
+ je G_M27413_IG13
test esi, esi
- jne SHORT G_M27413_IG12
- ;; size=17 bbWeight=1 PerfScore 3.25
+ jne G_M27413_IG14
+ ;; size=25 bbWeight=1 PerfScore 3.25
G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
lea rcx, bword ptr [rbx+0x10]
; byrRegs +[rcx]
@@ -72,7 +72,7 @@ G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
cmp eax, edi
jne SHORT G_M27413_IG03
test r15d, r15d
- je SHORT G_M27413_IG13
+ je SHORT G_M27413_IG09
call <unknown method>
; byrRegs -[rcx]
; gcr arg pop 0
@@ -98,15 +98,35 @@ G_M27413_IG08: ; bbWeight=1, epilog, nogc, extend
jmp <unknown method>
; gcr arg pop 0
;; size=19 bbWeight=1 PerfScore 5.75
-G_M27413_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27413_IG09: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ add rsp, 32
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r13
+ pop r14
+ pop r15
+ ret
+ ;; size=15 bbWeight=0.01 PerfScore 0.06
+G_M27413_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx]
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)]
+ ; gcrRegs -[rcx rbx]
+ ; gcr arg pop 0
+ int3
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
test dil, 2
- jne SHORT G_M27413_IG13
- jmp SHORT G_M27413_IG04
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M27413_IG09
+ jmp G_M27413_IG04
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp byte ptr [rbx+0x14], 0
- je SHORT G_M27413_IG05
+ je G_M27413_IG05
mov rcx, rbx
; gcrRegs +[rcx]
mov rax, qword ptr [rbx]
@@ -117,40 +137,19 @@ G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
xor r14d, r14d
test eax, eax
sete r14b
- jmp SHORT G_M27413_IG06
- ;; size=30 bbWeight=0 PerfScore 0.00
-G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M27413_IG06
+ ;; size=37 bbWeight=0 PerfScore 0.00
+G_M27413_IG13: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or r13d, 1
test esi, esi
- je SHORT G_M27413_IG07
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je G_M27413_IG07
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M27413_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or r13d, 2
- jmp SHORT G_M27413_IG07
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M27413_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rbx]
- add rsp, 32
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r13
- pop r14
- pop r15
- ret
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[rbx]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)]
- ; gcrRegs -[rcx rbx]
- ; gcr arg pop 0
- int3
- ;; size=10 bbWeight=0 PerfScore 0.00
+ jmp G_M27413_IG07
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 207, prolog size 17, PerfScore 53.50, instruction count 81, allocated bytes for code 207 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
+; Total bytes of code 236, prolog size 17, PerfScore 53.56, instruction count 81, allocated bytes for code 236 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
; ============================================================
Unwind Info:
+29 (+14.01%) : 71168.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
@@ -38,31 +38,31 @@ G_M27413_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M27413_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx rsi, dl
;; size=4 bbWeight=1 PerfScore 0.25
-G_M27413_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x10]
test esi, esi
- jne SHORT G_M27413_IG09
- ;; size=7 bbWeight=1 PerfScore 3.25
+ jne G_M27413_IG11
+ ;; size=11 bbWeight=1 PerfScore 3.25
G_M27413_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov ebp, edi
and ebp, -4
- je G_M27413_IG14
+ je SHORT G_M27413_IG10
mov eax, edi
and eax, -3
cmp eax, 4
- je SHORT G_M27413_IG10
+ je G_M27413_IG12
;; size=21 bbWeight=1 PerfScore 3.25
G_M27413_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor r14d, r14d
;; size=3 bbWeight=1 PerfScore 0.25
-G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx r15, r14b
lea r13d, [rdi-0x04]
cmp ebp, 4
- je SHORT G_M27413_IG11
+ je G_M27413_IG13
test esi, esi
- jne SHORT G_M27413_IG12
- ;; size=17 bbWeight=1 PerfScore 3.25
+ jne G_M27413_IG14
+ ;; size=25 bbWeight=1 PerfScore 3.25
G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
lea rcx, bword ptr [rbx+0x10]
; byrRegs +[rcx]
@@ -72,7 +72,7 @@ G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
cmp eax, edi
jne SHORT G_M27413_IG03
test r15d, r15d
- je SHORT G_M27413_IG13
+ je SHORT G_M27413_IG09
call <unknown method>
; byrRegs -[rcx]
; gcr arg pop 0
@@ -98,15 +98,35 @@ G_M27413_IG08: ; bbWeight=1, epilog, nogc, extend
jmp <unknown method>
; gcr arg pop 0
;; size=19 bbWeight=1 PerfScore 5.75
-G_M27413_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27413_IG09: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ add rsp, 32
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r13
+ pop r14
+ pop r15
+ ret
+ ;; size=15 bbWeight=0.02 PerfScore 0.09
+G_M27413_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx]
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)]
+ ; gcrRegs -[rcx rbx]
+ ; gcr arg pop 0
+ int3
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
test dil, 2
- jne SHORT G_M27413_IG13
- jmp SHORT G_M27413_IG04
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M27413_IG09
+ jmp G_M27413_IG04
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp byte ptr [rbx+0x14], 0
- je SHORT G_M27413_IG05
+ je G_M27413_IG05
mov rcx, rbx
; gcrRegs +[rcx]
mov rax, qword ptr [rbx]
@@ -117,40 +137,19 @@ G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
xor r14d, r14d
test eax, eax
sete r14b
- jmp SHORT G_M27413_IG06
- ;; size=30 bbWeight=0 PerfScore 0.00
-G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M27413_IG06
+ ;; size=37 bbWeight=0 PerfScore 0.00
+G_M27413_IG13: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or r13d, 1
test esi, esi
- je SHORT G_M27413_IG07
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je G_M27413_IG07
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M27413_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or r13d, 2
- jmp SHORT G_M27413_IG07
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M27413_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rbx]
- add rsp, 32
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r13
- pop r14
- pop r15
- ret
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[rbx]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)]
- ; gcrRegs -[rcx rbx]
- ; gcr arg pop 0
- int3
- ;; size=10 bbWeight=0 PerfScore 0.00
+ jmp G_M27413_IG07
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 207, prolog size 17, PerfScore 53.50, instruction count 81, allocated bytes for code 207 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
+; Total bytes of code 236, prolog size 17, PerfScore 53.59, instruction count 81, allocated bytes for code 236 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
; ============================================================
Unwind Info:
+29 (+14.01%) : 79380.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
@@ -38,31 +38,31 @@ G_M27413_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M27413_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx rsi, dl
;; size=4 bbWeight=1 PerfScore 0.25
-G_M27413_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x10]
test esi, esi
- jne SHORT G_M27413_IG09
- ;; size=7 bbWeight=1 PerfScore 3.25
+ jne G_M27413_IG11
+ ;; size=11 bbWeight=1 PerfScore 3.25
G_M27413_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov ebp, edi
and ebp, -4
- je G_M27413_IG14
+ je SHORT G_M27413_IG10
mov eax, edi
and eax, -3
cmp eax, 4
- je SHORT G_M27413_IG10
+ je G_M27413_IG12
;; size=21 bbWeight=1 PerfScore 3.25
G_M27413_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor r14d, r14d
;; size=3 bbWeight=1 PerfScore 0.25
-G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx r15, r14b
lea r13d, [rdi-0x04]
cmp ebp, 4
- je SHORT G_M27413_IG11
+ je G_M27413_IG13
test esi, esi
- jne SHORT G_M27413_IG12
- ;; size=17 bbWeight=1 PerfScore 3.25
+ jne G_M27413_IG14
+ ;; size=25 bbWeight=1 PerfScore 3.25
G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
lea rcx, bword ptr [rbx+0x10]
; byrRegs +[rcx]
@@ -72,7 +72,7 @@ G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
cmp eax, edi
jne SHORT G_M27413_IG03
test r15d, r15d
- je SHORT G_M27413_IG13
+ je SHORT G_M27413_IG09
call <unknown method>
; byrRegs -[rcx]
; gcr arg pop 0
@@ -98,15 +98,35 @@ G_M27413_IG08: ; bbWeight=1, epilog, nogc, extend
jmp <unknown method>
; gcr arg pop 0
;; size=19 bbWeight=1 PerfScore 5.75
-G_M27413_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27413_IG09: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ add rsp, 32
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r13
+ pop r14
+ pop r15
+ ret
+ ;; size=15 bbWeight=0.00 PerfScore 0.00
+G_M27413_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx]
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)]
+ ; gcrRegs -[rcx rbx]
+ ; gcr arg pop 0
+ int3
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
test dil, 2
- jne SHORT G_M27413_IG13
- jmp SHORT G_M27413_IG04
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M27413_IG09
+ jmp G_M27413_IG04
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp byte ptr [rbx+0x14], 0
- je SHORT G_M27413_IG05
+ je G_M27413_IG05
mov rcx, rbx
; gcrRegs +[rcx]
mov rax, qword ptr [rbx]
@@ -117,40 +137,19 @@ G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
xor r14d, r14d
test eax, eax
sete r14b
- jmp SHORT G_M27413_IG06
- ;; size=30 bbWeight=0 PerfScore 0.00
-G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M27413_IG06
+ ;; size=37 bbWeight=0 PerfScore 0.00
+G_M27413_IG13: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or r13d, 1
test esi, esi
- je SHORT G_M27413_IG07
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je G_M27413_IG07
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M27413_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or r13d, 2
- jmp SHORT G_M27413_IG07
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M27413_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rbx]
- add rsp, 32
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r13
- pop r14
- pop r15
- ret
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[rbx]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)]
- ; gcrRegs -[rcx rbx]
- ; gcr arg pop 0
- int3
- ;; size=10 bbWeight=0 PerfScore 0.00
+ jmp G_M27413_IG07
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 207, prolog size 17, PerfScore 53.50, instruction count 81, allocated bytes for code 207 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
+; Total bytes of code 236, prolog size 17, PerfScore 53.50, instruction count 81, allocated bytes for code 236 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
; ============================================================
Unwind Info:
benchmarks.run.windows.x64.checked.mch
-16 (-4.47%) : 7478.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
@@ -12,13 +12,13 @@
; V01 loc0 [V01,T03] ( 8, 7 ) ref -> rsi class-hnd exact single-def <ushort[]>
; V02 loc1 [V02,T02] ( 10, 7.75) int -> rdi
; V03 loc2 [V03,T05] ( 3, 1.50) ref -> rbp class-hnd exact single-def <ushort[]>
-;* V04 loc3 [V04,T07] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc4 [V05,T00] ( 10, 16.54) int -> rcx
+;* V04 loc3 [V04,T06] ( 0, 0 ) ubyte -> zero-ref
+; V05 loc4 [V05,T00] ( 10, 16.54) int -> rdx
; V06 OutArgs [V06 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V09 tmp3 [V09,T04] ( 5, 3 ) ref -> rcx single-def "spilling varStr"
-;* V10 tmp4 [V10,T06] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+; V09 tmp3 [V09,T04] ( 5, 3 ) ref -> rdx single-def "spilling varStr"
+;* V10 tmp4 [V10,T07] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;
; Lcl frame size = 40
@@ -77,28 +77,28 @@ G_M48063_IG04: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; byrRegs -[rcx]
jmp G_M48063_IG15
;; size=56 bbWeight=0.50 PerfScore 8.62
-G_M48063_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M48063_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
- mov rcx, gword ptr [rbx+0x10]
- ; gcrRegs +[rcx]
- test rcx, rcx
- je G_M48063_IG14
- ;; size=13 bbWeight=0.50 PerfScore 1.62
-G_M48063_IG06: ; bbWeight=0.25, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref
- cmp dword ptr [rcx+0x08], 5
- jne G_M48063_IG14
- ;; size=10 bbWeight=0.25 PerfScore 1.00
-G_M48063_IG07: ; bbWeight=0.12, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov r8, 0xD1FFAB1E
- xor r8, qword ptr [rcx+0x0C]
- mov ecx, dword ptr [rcx+0x12]
- ; gcrRegs -[rcx]
- xor ecx, 0xD1FFAB1E
- or rcx, r8
+ mov rdx, gword ptr [rbx+0x10]
+ ; gcrRegs +[rdx]
+ test rdx, rdx
+ je SHORT G_M48063_IG14
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M48063_IG06: ; bbWeight=0.25, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [rdx+0x08], 5
+ jne SHORT G_M48063_IG14
+ ;; size=6 bbWeight=0.25 PerfScore 1.00
+G_M48063_IG07: ; bbWeight=0.12, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rcx, 0xD1FFAB1E
+ xor rcx, qword ptr [rdx+0x0C]
+ mov edx, dword ptr [rdx+0x12]
+ ; gcrRegs -[rdx]
+ xor edx, 0xD1FFAB1E
+ or rdx, rcx
jne SHORT G_M48063_IG14
;; size=28 bbWeight=0.12 PerfScore 0.84
G_M48063_IG08: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- xor ecx, ecx
+ xor edx, edx
test edi, edi
jle SHORT G_M48063_IG13
;; size=6 bbWeight=0.50 PerfScore 0.75
@@ -107,26 +107,26 @@ G_M48063_IG09: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
jg SHORT G_M48063_IG12
;; size=5 bbWeight=0.25 PerfScore 0.31
G_M48063_IG10: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov r8d, ecx
- cmp word ptr [rsi+2*r8+0x10], 4
+ mov ecx, edx
+ cmp word ptr [rsi+2*rcx+0x10], 4
je SHORT G_M48063_IG14
- inc ecx
- cmp ecx, edi
+ inc edx
+ cmp edx, edi
jl SHORT G_M48063_IG10
- ;; size=18 bbWeight=3.96 PerfScore 22.77
-G_M48063_IG11: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=3.96 PerfScore 22.77
+G_M48063_IG11: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M48063_IG13
- ;; size=2 bbWeight=0.50 PerfScore 1.00
+ ;; size=2 bbWeight=1 PerfScore 2.00
G_M48063_IG12: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 23
- jae G_M48063_IG17
- mov r8d, ecx
- cmp word ptr [rsi+2*r8+0x10], 4
+ cmp edx, 23
+ jae SHORT G_M48063_IG17
+ mov ecx, edx
+ cmp word ptr [rsi+2*rcx+0x10], 4
je SHORT G_M48063_IG14
- inc ecx
- cmp ecx, edi
+ inc edx
+ cmp edx, edi
jl SHORT G_M48063_IG12
- ;; size=27 bbWeight=0.04 PerfScore 0.28
+ ;; size=21 bbWeight=0.04 PerfScore 0.28
G_M48063_IG13: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
inc edi
mov dword ptr [rsp+0x20], 21
@@ -184,7 +184,7 @@ G_M48063_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 358, prolog size 11, PerfScore 62.33, instruction count 88, allocated bytes for code 358 (MethodHash=22244440) for method System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
+; Total bytes of code 342, prolog size 11, PerfScore 63.33, instruction count 88, allocated bytes for code 342 (MethodHash=22244440) for method System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
; ============================================================
Unwind Info:
-21 (-2.44%) : 24596.dasm - System.Net.WebUtility:UrlDecodeInternal(System.String,System.Text.Encoding):System.String (FullOpts)
@@ -12,7 +12,7 @@
; V01 arg1 [V01,T18] ( 3, 2.50) ref -> rdx class-hnd single-def <System.Text.Encoding>
; V02 loc0 [V02,T09] ( 6, 9 ) int -> rsi
;* V03 loc1 [V03 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] ld-addr-op <System.Net.WebUtility+UrlDecoder>
-; V04 loc2 [V04,T21] ( 3, 3 ) ubyte -> [rsp+0x44]
+; V04 loc2 [V04,T21] ( 3, 3.50) ubyte -> [rsp+0x44]
; V05 loc3 [V05,T22] ( 3, 3 ) ubyte -> [rsp+0x40]
; V06 loc4 [V06,T00] ( 9, 24.50) int -> [rsp+0x3C]
; V07 loc5 [V07,T02] ( 7, 18 ) ushort -> [rsp+0x38]
@@ -103,7 +103,7 @@ G_M62022_IG03: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0000
xor r10d, r10d
xor r9d, r9d
test edi, edi
- jle G_M62022_IG25
+ jle G_M62022_IG24
;; size=40 bbWeight=0.50 PerfScore 3.38
G_M62022_IG04: ; bbWeight=0.25, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
@@ -136,7 +136,7 @@ G_M62022_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=5028 {
G_M62022_IG08: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
mov dword ptr [rsp+0x40], 1
mov r8d, 32
- jmp G_M62022_IG18
+ jmp G_M62022_IG17
;; size=19 bbWeight=2 PerfScore 6.50
G_M62022_IG09: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref, isz
cmp r8d, 37
@@ -154,11 +154,11 @@ G_M62022_IG09: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=
;; size=47 bbWeight=2 PerfScore 22.00
G_M62022_IG10: ; bbWeight=1, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
mov dword ptr [rsp+0x40], r10d
- jmp G_M62022_IG18
+ jmp G_M62022_IG17
;; size=10 bbWeight=1 PerfScore 3.00
G_M62022_IG11: ; bbWeight=1, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
mov dword ptr [rsp+0x40], r10d
- jmp G_M62022_IG18
+ jmp G_M62022_IG17
;; size=10 bbWeight=1 PerfScore 3.00
G_M62022_IG12: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
mov edx, 255
@@ -169,29 +169,28 @@ G_M62022_IG13: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=
movzx r11, word ptr [rbx+2*r11+0x0C]
cmp r11d, 256
jge SHORT G_M62022_IG14
- mov dword ptr [rsp+0x44], eax
- mov rax, 0xD1FFAB1E ; static handle
- movzx rax, byte ptr [r11+rax]
+ mov dword ptr [rsp+0x40], r10d
+ mov r10, 0xD1FFAB1E ; static handle
+ movzx r10, byte ptr [r11+r10]
jmp SHORT G_M62022_IG15
- ;; size=43 bbWeight=2 PerfScore 18.50
+ ;; size=44 bbWeight=2 PerfScore 18.50
G_M62022_IG14: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
mov r11d, 255
- mov dword ptr [rsp+0x44], eax
- mov eax, r11d
- ;; size=13 bbWeight=2 PerfScore 3.00
+ mov dword ptr [rsp+0x40], r10d
+ mov r10d, r11d
+ ;; size=14 bbWeight=2 PerfScore 3.00
G_M62022_IG15: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref, isz
mov r11d, edx
- or r11d, eax
+ or r11d, r10d
cmp r11d, 255
je SHORT G_M62022_IG17
shl edx, 4
- or edx, eax
+ or edx, r10d
movzx rax, dl
mov dword ptr [rsp+0x34], eax
mov dword ptr [rsp+0x3C], ecx
test r12, r12
jne SHORT G_M62022_IG16
- mov dword ptr [rsp+0x40], r10d
movsxd rdx, esi
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_VC
@@ -199,8 +198,7 @@ G_M62022_IG15: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=
; gcr arg pop 0
mov r12, rax
; gcrRegs +[r12]
- mov r10d, dword ptr [rsp+0x40]
- ;; size=67 bbWeight=2 PerfScore 19.50
+ ;; size=58 bbWeight=2 PerfScore 15.50
G_M62022_IG16: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
lea edx, [r13+0x01]
@@ -211,18 +209,14 @@ G_M62022_IG16: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=
mov eax, dword ptr [rsp+0x34]
mov byte ptr [r12+rdx+0x10], al
mov dword ptr [rsp+0x44], 1
- jmp G_M62022_IG24
+ jmp G_M62022_IG23
;; size=43 bbWeight=2 PerfScore 20.00
-G_M62022_IG17: ; bbWeight=1, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
- mov dword ptr [rsp+0x40], r10d
- mov eax, dword ptr [rsp+0x44]
- ;; size=9 bbWeight=1 PerfScore 2.00
-G_M62022_IG18: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref, isz
+G_M62022_IG17: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rsp+0x38], r8d
test r8d, 0xFF80
- jne SHORT G_M62022_IG20
- test r12, r12
jne SHORT G_M62022_IG19
+ test r12, r12
+ jne SHORT G_M62022_IG18
mov dword ptr [rsp+0x3C], r9d
mov dword ptr [rsp+0x44], eax
movsxd rdx, esi
@@ -236,7 +230,7 @@ G_M62022_IG18: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=
; gcrRegs -[rax]
mov r9d, dword ptr [rsp+0x3C]
;; size=58 bbWeight=2 PerfScore 18.50
-G_M62022_IG19: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
+G_M62022_IG18: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
mov edx, r13d
lea r13d, [rdx+0x01]
cmp edx, dword ptr [r12+0x08]
@@ -246,16 +240,15 @@ G_M62022_IG19: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=
mov dword ptr [rsp+0x3C], r9d
mov dword ptr [rsp+0x44], eax
mov r8d, r13d
- mov r10d, dword ptr [rsp+0x40]
- jmp G_M62022_IG24
- ;; size=50 bbWeight=2 PerfScore 24.00
-G_M62022_IG20: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref, isz
+ jmp G_M62022_IG23
+ ;; size=45 bbWeight=2 PerfScore 22.00
+G_M62022_IG19: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref, isz
test r13d, r13d
- jle SHORT G_M62022_IG22
+ jle SHORT G_M62022_IG21
test r14, r14
mov dword ptr [rsp+0x3C], r9d
mov dword ptr [rsp+0x44], eax
- jne SHORT G_M62022_IG21
+ jne SHORT G_M62022_IG20
movsxd rdx, esi
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_VC
@@ -264,7 +257,7 @@ G_M62022_IG20: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=
mov r14, rax
; gcrRegs +[r14]
;; size=40 bbWeight=2 PerfScore 12.50
-G_M62022_IG21: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
+G_M62022_IG20: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov gword ptr [rsp+0x20], r14
; gcr arg write
@@ -286,9 +279,9 @@ G_M62022_IG21: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=
mov eax, dword ptr [rsp+0x44]
mov r9d, dword ptr [rsp+0x3C]
;; size=52 bbWeight=2 PerfScore 25.50
-G_M62022_IG22: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref, isz
+G_M62022_IG21: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref, isz
test r14, r14
- jne SHORT G_M62022_IG23
+ jne SHORT G_M62022_IG22
mov dword ptr [rsp+0x3C], r9d
mov dword ptr [rsp+0x44], eax
movsxd rdx, esi
@@ -302,7 +295,7 @@ G_M62022_IG22: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=
; gcrRegs -[rax]
mov r9d, dword ptr [rsp+0x3C]
;; size=44 bbWeight=2 PerfScore 14.00
-G_M62022_IG23: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
+G_M62022_IG22: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
mov ecx, r15d
lea r15d, [rcx+0x01]
cmp ecx, dword ptr [r14+0x08]
@@ -312,19 +305,22 @@ G_M62022_IG23: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=
mov dword ptr [rsp+0x3C], r9d
mov dword ptr [rsp+0x44], eax
mov r8d, r13d
- mov r10d, dword ptr [rsp+0x40]
- ;; size=45 bbWeight=2 PerfScore 20.00
-G_M62022_IG24: ; bbWeight=4, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
+ ;; size=40 bbWeight=2 PerfScore 18.00
+G_M62022_IG23: ; bbWeight=4, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
mov r9d, dword ptr [rsp+0x3C]
inc r9d
cmp r9d, edi
mov r13d, r8d
mov eax, dword ptr [rsp+0x44]
+ mov r10d, dword ptr [rsp+0x40]
jl G_M62022_IG07
- ;; size=24 bbWeight=4 PerfScore 15.00
-G_M62022_IG25: ; bbWeight=0.50, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=29 bbWeight=4 PerfScore 19.00
+G_M62022_IG24: ; bbWeight=1, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref, isz
test eax, eax
jne SHORT G_M62022_IG27
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M62022_IG25: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbp r12 r14]
test r10d, r10d
je G_M62022_IG05
mov rcx, rbx
@@ -332,10 +328,10 @@ G_M62022_IG25: ; bbWeight=0.50, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRe
mov edx, 43
mov r8d, 32
call [<unknown method>]
- ; gcrRegs -[rcx rbx rbp r12 r14] +[rax]
+ ; gcrRegs -[rcx rbx] +[rax]
; gcr arg pop 0
nop
- ;; size=34 bbWeight=0.50 PerfScore 3.25
+ ;; size=30 bbWeight=0.50 PerfScore 2.62
G_M62022_IG26: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 72
pop rbx
@@ -420,7 +416,7 @@ G_M62022_IG32: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 859, prolog size 19, PerfScore 277.00, instruction count 235, allocated bytes for code 859 (MethodHash=ea6c0db9) for method System.Net.WebUtility:UrlDecodeInternal(System.String,System.Text.Encoding):System.String (FullOpts)
+; Total bytes of code 838, prolog size 19, PerfScore 271.62, instruction count 230, allocated bytes for code 838 (MethodHash=ea6c0db9) for method System.Net.WebUtility:UrlDecodeInternal(System.String,System.Text.Encoding):System.String (FullOpts)
; ============================================================
Unwind Info:
-14 (-2.03%) : 34897.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (FullOpts)
@@ -9,17 +9,17 @@
; Final local variable assignments
;
; V00 arg0 [V00,T04] ( 9, 27.50) long -> rsi single-def
-; V01 arg1 [V01,T11] ( 7, 6.50) int -> rbp
-; V02 arg2 [V02,T03] ( 10, 28 ) byref -> rbx single-def
+; V01 arg1 [V01,T10] ( 7, 8.50) int -> rbp
+; V02 arg2 [V02,T03] ( 10, 30 ) byref -> rbx single-def
; V03 arg3 [V03,T06] ( 3, 18 ) ubyte -> rdi single-def
; V04 loc0 [V04,T05] ( 8, 26 ) int -> r14
; V05 loc1 [V05,T07] ( 9, 14 ) int -> registers
; V06 loc2 [V06,T13] ( 4, 5.50) ubyte -> r13
; V07 loc3 [V07,T14] ( 3, 5 ) ubyte -> r12
-; V08 loc4 [V08,T02] ( 6, 38 ) ubyte -> [rsp+0x44]
+; V08 loc4 [V08,T02] ( 6, 38.50) ubyte -> [rsp+0x44]
; V09 loc5 [V09,T09] ( 5, 13.50) ubyte -> [rsp+0x40]
; V10 loc6 [V10,T15] ( 3, 5 ) int -> [rsp+0x3C]
-; V11 loc7 [V11 ] ( 20, 83.50) int -> [rsp+0x30] do-not-enreg[X] addr-exposed ld-addr-op
+; V11 loc7 [V11 ] ( 20, 87.50) int -> [rsp+0x30] do-not-enreg[X] addr-exposed ld-addr-op
; V12 loc8 [V12,T16] ( 3, 1.50) int -> rax
; V13 loc9 [V13,T08] ( 7, 14 ) ushort -> r9
; V14 OutArgs [V14 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -33,7 +33,7 @@
;* V22 tmp8 [V22 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
;* V23 tmp9 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V24 cse0 [V24,T01] ( 3, 48 ) int -> rcx "CSE - aggressive"
-; V25 cse1 [V25,T10] ( 5, 10 ) int -> r9 multi-def "CSE - aggressive"
+; V25 cse1 [V25,T11] ( 5, 10 ) int -> r9 multi-def "CSE - aggressive"
; V26 cse2 [V26,T17] ( 3, 1.50) int -> r8 "CSE - moderate"
;
; Lcl frame size = 72
@@ -69,10 +69,10 @@ G_M23448_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
G_M23448_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
lea r8d, [rbp+0x01]
cmp r8d, dword ptr [rbx]
- jge G_M23448_IG29
+ jge G_M23448_IG30
movsxd r8, r8d
cmp word ptr [rsi+2*r8], 58
- jne G_M23448_IG29
+ jne G_M23448_IG30
;; size=28 bbWeight=0.50 PerfScore 4.38
G_M23448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov dword ptr [rsp+0x30], ebp
@@ -98,9 +98,8 @@ G_M23448_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=40 bbWeight=2 PerfScore 19.50
G_M23448_IG07: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov dword ptr [rsp+0x44], eax
- mov dword ptr [rsp+0x40], r10d
jmp G_M23448_IG23
- ;; size=14 bbWeight=0.25 PerfScore 1.00
+ ;; size=9 bbWeight=0.25 PerfScore 0.75
G_M23448_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
movsxd r9, dword ptr [rsp+0x30]
movzx r9, word ptr [rsi+2*r9]
@@ -112,11 +111,12 @@ G_M23448_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
inc r15d
xor r10d, r10d
mov dword ptr [rsp+0x40], r10d
+ mov r10d, dword ptr [rsp+0x40]
jmp G_M23448_IG22
- ;; size=16 bbWeight=2 PerfScore 7.00
+ ;; size=21 bbWeight=2 PerfScore 9.00
G_M23448_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp r15d, 4
- jg G_M23448_IG29
+ jg G_M23448_IG30
test r15d, r15d
je SHORT G_M23448_IG11
inc r14d
@@ -129,10 +129,10 @@ G_M23448_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
cmp r9d, 37
je SHORT G_M23448_IG14
cmp r9d, 46
- jne G_M23448_IG29
+ jne G_M23448_IG30
test r12d, r12d
mov dword ptr [rsp+0x40], r10d
- jne G_M23448_IG29
+ jne G_M23448_IG30
mov r8d, dword ptr [rbx]
mov dword ptr [rsp+0x30], r8d
xor r8d, r8d
@@ -145,7 +145,7 @@ G_M23448_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
call [<unknown method>]
; gcr arg pop 0
test eax, eax
- je G_M23448_IG29
+ je G_M23448_IG30
jmp G_M23448_IG20
;; size=93 bbWeight=2 PerfScore 37.50
G_M23448_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
@@ -156,17 +156,17 @@ G_M23448_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
cmp r9d, 93
je SHORT G_M23448_IG16
;; size=22 bbWeight=2 PerfScore 7.50
-G_M23448_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M23448_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
- jmp G_M23448_IG29
- ;; size=5 bbWeight=0.50 PerfScore 1.00
+ jmp G_M23448_IG30
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M23448_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs +[rbx]
mov ecx, dword ptr [rsp+0x30]
inc ecx
mov dword ptr [rsp+0x30], ecx
cmp ecx, dword ptr [rbx]
- je G_M23448_IG29
+ je G_M23448_IG30
movsxd rcx, dword ptr [rsp+0x30]
movzx rcx, word ptr [rsi+2*rcx]
cmp ecx, 93
@@ -177,13 +177,12 @@ G_M23448_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, by
G_M23448_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
jmp SHORT G_M23448_IG19
;; size=2 bbWeight=2 PerfScore 4.00
-G_M23448_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M23448_IG16: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov ebp, dword ptr [rsp+0x30]
mov ecx, dword ptr [rbx]
mov dword ptr [rsp+0x30], ecx
- mov dword ptr [rsp+0x40], r10d
jmp G_M23448_IG22
- ;; size=20 bbWeight=2 PerfScore 14.00
+ ;; size=15 bbWeight=4 PerfScore 24.00
G_M23448_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp dword ptr [rsp+0x30], 0
jle SHORT G_M23448_IG18
@@ -193,7 +192,7 @@ G_M23448_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
cmp word ptr [rsi+2*rcx], 58
jne SHORT G_M23448_IG18
test r13d, r13d
- jne G_M23448_IG29
+ jne G_M23448_IG30
mov r13d, 1
xor r10d, r10d
xor r15d, r15d
@@ -211,7 +210,7 @@ G_M23448_IG19: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, by
or eax, dword ptr [rsp+0x44]
movzx rcx, dil
or eax, ecx
- jne G_M23448_IG29
+ jne G_M23448_IG30
mov r15d, 1
mov dword ptr [rsp+0x44], r15d
jmp SHORT G_M23448_IG18
@@ -227,60 +226,61 @@ G_M23448_IG20: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=29 bbWeight=2 PerfScore 9.50
G_M23448_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
xor ecx, ecx
- mov dword ptr [rsp+0x40], r15d
+ mov r10d, r15d
mov r15d, ecx
- ;; size=10 bbWeight=2 PerfScore 3.00
+ ;; size=8 bbWeight=2 PerfScore 1.50
G_M23448_IG22: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, dword ptr [rsp+0x30]
inc ecx
mov dword ptr [rsp+0x30], ecx
mov ecx, dword ptr [rsp+0x30]
cmp ecx, dword ptr [rbx]
- jl SHORT G_M23448_IG25
+ jl SHORT G_M23448_IG26
;; size=18 bbWeight=4 PerfScore 29.00
-G_M23448_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M23448_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov eax, dword ptr [rsp+0x44]
test eax, eax
- je SHORT G_M23448_IG24
+ je SHORT G_M23448_IG25
+ ;; size=8 bbWeight=1 PerfScore 2.25
+G_M23448_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, r15d
sub ecx, 1
cmp ecx, 1
- ja SHORT G_M23448_IG29
- ;; size=19 bbWeight=0.50 PerfScore 2.00
-G_M23448_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ ja SHORT G_M23448_IG30
+ ;; size=11 bbWeight=0.50 PerfScore 0.88
+G_M23448_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
test eax, eax
setne al
movzx rax, al
add eax, 8
- cmp dword ptr [rsp+0x40], 0
- jne SHORT G_M23448_IG29
+ test r10d, r10d
+ jne SHORT G_M23448_IG30
cmp r15d, 4
- jg SHORT G_M23448_IG29
+ jg SHORT G_M23448_IG30
test r13d, r13d
- jne SHORT G_M23448_IG26
+ jne SHORT G_M23448_IG27
cmp r14d, eax
- jne SHORT G_M23448_IG29
- jmp SHORT G_M23448_IG27
- ;; size=36 bbWeight=0.50 PerfScore 5.25
-G_M23448_IG25: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ jne SHORT G_M23448_IG30
+ jmp SHORT G_M23448_IG28
+ ;; size=34 bbWeight=0.50 PerfScore 4.38
+G_M23448_IG26: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov eax, dword ptr [rsp+0x44]
- mov r10d, dword ptr [rsp+0x40]
jmp G_M23448_IG05
- ;; size=14 bbWeight=2 PerfScore 8.00
-G_M23448_IG26: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- cmp r14d, eax
- jge SHORT G_M23448_IG29
- ;; size=5 bbWeight=0.50 PerfScore 0.62
+ ;; size=9 bbWeight=2 PerfScore 6.00
G_M23448_IG27: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp r14d, eax
+ jge SHORT G_M23448_IG30
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M23448_IG28: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov eax, dword ptr [rbx]
inc eax
cmp dword ptr [rsp+0x30], eax
- jne SHORT G_M23448_IG29
+ jne SHORT G_M23448_IG30
inc ebp
mov dword ptr [rbx], ebp
mov eax, 1
;; size=19 bbWeight=0.50 PerfScore 3.38
-G_M23448_IG28: ; bbWeight=0.50, epilog, nogc, extend
+G_M23448_IG29: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 72
pop rbx
pop rbp
@@ -292,11 +292,11 @@ G_M23448_IG28: ; bbWeight=0.50, epilog, nogc, extend
pop r15
ret
;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M23448_IG29: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23448_IG30: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rbx]
xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M23448_IG30: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M23448_IG31: ; bbWeight=1, epilog, nogc, extend
add rsp, 72
pop rbx
pop rbp
@@ -307,9 +307,9 @@ G_M23448_IG30: ; bbWeight=0.50, epilog, nogc, extend
...
+11 (+2.93%) : 31537.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
@@ -9,29 +9,29 @@
; Final local variable assignments
;
; V00 this [V00,T09] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
-; V01 arg1 [V01,T06] ( 4, 3 ) ref -> rsi class-hnd single-def <System.Object>
-; V02 arg2 [V02,T07] ( 4, 3 ) ref -> rdi class-hnd single-def <System.Object>
-; V03 arg3 [V03,T08] ( 4, 3 ) int -> rbp single-def
-; V04 arg4 [V04,T14] ( 2, 1 ) ref -> [rsp+0xA0] class-hnd single-def <System.Reflection.Binder>
-; V05 arg5 [V05,T05] ( 4, 5.50) ref -> rbx class-hnd single-def <System.Object[]>
-; V06 arg6 [V06,T15] ( 2, 1 ) ref -> [rsp+0xB0] class-hnd single-def <System.Globalization.CultureInfo>
-; V07 loc0 [V07,T11] ( 3, 2.50) ref -> r14 class-hnd exact single-def <System.Reflection.RuntimeMethodInfo>
-; V08 loc1 [V08,T04] ( 8, 6.29) ref -> r12 class-hnd exact single-def <System.Object[]>
-; V09 loc2 [V09,T00] ( 11, 16.58) int -> [rsp+0x34]
+; V01 arg1 [V01,T05] ( 4, 3.50) ref -> rbx class-hnd single-def <System.Object>
+; V02 arg2 [V02,T06] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Object>
+; V03 arg3 [V03,T08] ( 4, 3.50) int -> rbp single-def
+; V04 arg4 [V04,T14] ( 2, 1.50) ref -> r14 class-hnd single-def <System.Reflection.Binder>
+; V05 arg5 [V05,T07] ( 4, 5.50) ref -> rdi class-hnd single-def <System.Object[]>
+; V06 arg6 [V06,T15] ( 2, 1.50) ref -> r15 class-hnd single-def <System.Globalization.CultureInfo>
+; V07 loc0 [V07,T10] ( 3, 3 ) ref -> r13 class-hnd exact single-def <System.Reflection.RuntimeMethodInfo>
+; V08 loc1 [V08,T03] ( 8, 7.79) ref -> [rsp+0x38] class-hnd exact spill-single-def <System.Object[]>
+; V09 loc2 [V09,T00] ( 11, 16.58) int -> [rsp+0x44]
; V10 OutArgs [V10 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V11 tmp1 [V11,T01] ( 4, 16 ) ref -> rdx class-hnd "Strict ordering of exceptions for Array store" <System.Object>
; V12 tmp2 [V12,T17] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V13 tmp3 [V13,T10] ( 4, 2.50) ref -> rcx class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
+; V13 tmp3 [V13,T11] ( 4, 2.50) ref -> rcx class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
;* V14 tmp4 [V14,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
;* V16 tmp6 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp7 [V17,T18] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
; V18 cse0 [V18,T12] ( 3, 2.50) ref -> rcx "CSE - aggressive"
-; V19 cse1 [V19,T03] ( 8, 6.75) int -> r13 "CSE - aggressive"
+; V19 cse1 [V19,T04] ( 8, 7.75) int -> r12 "CSE - aggressive"
; V20 cse2 [V20,T02] ( 3, 11.88) long -> rcx "CSE - aggressive"
; V21 rat0 [V21,T13] ( 2, 2 ) ref -> r9 "Fast tail call lowering is creating a new local variable"
;
-; Lcl frame size = 56
+; Lcl frame size = 72
G_M50642_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -42,50 +42,50 @@ G_M50642_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 56
- mov rsi, rdx
- ; gcrRegs +[rsi]
- mov rdi, r8
- ; gcrRegs +[rdi]
- mov ebp, r9d
- mov rbx, gword ptr [rsp+0xA8]
+ sub rsp, 72
+ mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=33 bbWeight=1 PerfScore 10.00
-G_M50642_IG02: ; bbWeight=1, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov rsi, r8
+ ; gcrRegs +[rsi]
+ mov ebp, r9d
+ mov r14, gword ptr [rsp+0xB0]
+ ; gcrRegs +[r14]
+ mov rdi, gword ptr [rsp+0xB8]
+ ; gcrRegs +[rdi]
+ mov r15, gword ptr [rsp+0xC0]
+ ; gcrRegs +[r15]
+ ;; size=49 bbWeight=1 PerfScore 12.00
+G_M50642_IG02: ; bbWeight=1, gcrefRegs=C0CA {rcx rbx rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
mov rcx, gword ptr [rcx+0x20]
test rcx, rcx
jne SHORT G_M50642_IG04
;; size=9 bbWeight=1 PerfScore 3.25
-G_M50642_IG03: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M50642_IG03: ; bbWeight=0.50, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
xor rcx, rcx
; gcrRegs +[rcx]
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M50642_IG04: ; bbWeight=1, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov r14, rcx
- ; gcrRegs +[r14]
- test r14, r14
+G_M50642_IG04: ; bbWeight=1, gcrefRegs=C0CA {rcx rbx rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov r13, rcx
+ ; gcrRegs +[r13]
+ test r13, r13
je G_M50642_IG15
- test rbx, rbx
+ test rdi, rdi
jne SHORT G_M50642_IG07
;; size=17 bbWeight=1 PerfScore 2.75
-G_M50642_IG05: ; bbWeight=0.50, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref, nogc
- ; gcrRegs -[rbx r14]
- mov rbx, gword ptr [rsp+0xA0]
- ; gcrRegs +[rbx]
- mov r9, rbx
+G_M50642_IG05: ; bbWeight=0.50, gcrefRegs=C04A {rcx rbx rsi r14 r15}, byrefRegs=0000 {}, byref, nogc
+ ; gcrRegs -[rdi r13]
+ mov r9, r14
; gcrRegs +[r9]
- mov gword ptr [rsp+0xA0], rdi
- mov r15, gword ptr [rsp+0xB0]
- ; gcrRegs +[r15]
- mov gword ptr [rsp+0xA8], r15
- mov rdx, rsi
+ mov gword ptr [rsp+0xB0], rsi
+ mov gword ptr [rsp+0xB8], r15
+ mov rdx, rbx
; gcrRegs +[rdx]
mov r8d, ebp
- ;; size=41 bbWeight=0.50 PerfScore 2.38
+ ;; size=25 bbWeight=0.50 PerfScore 1.38
G_M50642_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 56
+ add rsp, 72
pop rbx
pop rbp
pop rsi
@@ -97,97 +97,101 @@ G_M50642_IG06: ; bbWeight=0.50, epilog, nogc, extend
tail.jmp [System.Reflection.RuntimeMethodInfo:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this]
; gcr arg pop 0
;; size=22 bbWeight=0.50 PerfScore 3.12
-G_M50642_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rcx rdx r9 r15] +[r14]
- mov r13d, dword ptr [rbx+0x08]
- lea edx, [r13+0x01]
+G_M50642_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=E0C8 {rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rcx rdx r9] +[rdi r13]
+ mov r12d, dword ptr [rdi+0x08]
+ lea edx, [r12+0x01]
movsxd rdx, edx
mov rcx, 0xD1FFAB1E ; System.Object[]
call CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[rax]
; gcr arg pop 0
- mov r12, rax
- ; gcrRegs +[r12]
- xor eax, eax
- ; gcrRegs -[rax]
- test r13d, r13d
+ mov gword ptr [rsp+0x38], rax
+ ; GC ptr vars +{V08}
+ xor r8d, r8d
+ test r12d, r12d
jle SHORT G_M50642_IG12
- ;; size=36 bbWeight=0.50 PerfScore 2.88
-G_M50642_IG08: ; bbWeight=0.25, gcrefRegs=50C8 {rbx rsi rdi r12 r14}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [r12+0x08], r13d
+ ;; size=40 bbWeight=0.50 PerfScore 3.25
+G_M50642_IG08: ; bbWeight=0.25, gcVars=0000000000000008 {V08}, gcrefRegs=E0C9 {rax rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ cmp dword ptr [rax+0x08], r12d
jl SHORT G_M50642_IG11
- ;; size=7 bbWeight=0.25 PerfScore 1.00
-G_M50642_IG09: ; bbWeight=3.96, gcrefRegs=50C8 {rbx rsi rdi r12 r14}, byrefRegs=0000 {}, byref, isz
- mov dword ptr [rsp+0x34], eax
- mov ecx, eax
- mov rdx, gword ptr [rbx+8*rcx+0x10]
+ ;; size=6 bbWeight=0.25 PerfScore 1.00
+G_M50642_IG09: ; bbWeight=3.96, gcrefRegs=E0C9 {rax rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov dword ptr [rsp+0x44], r8d
+ mov ecx, r8d
+ mov rdx, gword ptr [rdi+8*rcx+0x10]
; gcrRegs +[rdx]
- lea rcx, bword ptr [r12+8*rcx+0x10]
+ lea rcx, bword ptr [rax+8*rcx+0x10]
; byrRegs +[rcx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx]
+ ; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- mov eax, dword ptr [rsp+0x34]
- inc eax
- cmp r13d, eax
+ mov r8d, dword ptr [rsp+0x44]
+ inc r8d
+ cmp r12d, r8d
+ mov rax, gword ptr [rsp+0x38]
+ ; gcrRegs +[rax]
jg SHORT G_M50642_IG09
- ;; size=32 bbWeight=3.96 PerfScore 30.69
-G_M50642_IG10: ; bbWeight=0.50, gcrefRegs=50C0 {rsi rdi r12 r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx]
+ ;; size=41 bbWeight=3.96 PerfScore 34.65
+G_M50642_IG10: ; bbWeight=1, gcrefRegs=E049 {rax rbx rsi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
jmp SHORT G_M50642_IG12
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M50642_IG11: ; bbWeight=0.04, gcrefRegs=50C8 {rbx rsi rdi r12 r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx]
- mov ecx, eax
- mov rdx, gword ptr [rbx+8*rcx+0x10]
+ ;; size=2 bbWeight=1 PerfScore 2.00
+G_M50642_IG11: ; bbWeight=0.04, gcrefRegs=E0C9 {rax rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rdi]
+ mov ecx, r8d
+ mov rdx, gword ptr [rdi+8*rcx+0x10]
; gcrRegs +[rdx]
- cmp eax, dword ptr [r12+0x08]
+ cmp r8d, dword ptr [rax+0x08]
jae SHORT G_M50642_IG14
- mov dword ptr [rsp+0x34], eax
- mov ecx, eax
- lea rcx, bword ptr [r12+8*rcx+0x10]
+ mov dword ptr [rsp+0x44], r8d
+ mov ecx, r8d
+ lea rcx, bword ptr [rax+8*rcx+0x10]
; byrRegs +[rcx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx]
+ ; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- mov ecx, dword ptr [rsp+0x34]
+ mov ecx, dword ptr [rsp+0x44]
inc ecx
- cmp r13d, ecx
- mov eax, ecx
+ cmp r12d, ecx
+ mov r8d, ecx
+ mov rax, gword ptr [rsp+0x38]
+ ; gcrRegs +[rax]
jg SHORT G_M50642_IG11
- ;; size=43 bbWeight=0.04 PerfScore 0.49
-G_M50642_IG12: ; bbWeight=0.50, gcrefRegs=50C0 {rsi rdi r12 r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx]
- cmp r13d, dword ptr [r12+0x08]
+ ;; size=51 bbWeight=0.04 PerfScore 0.53
+G_M50642_IG12: ; bbWeight=1, gcrefRegs=E049 {rax rbx rsi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
+ cmp r12d, dword ptr [rax+0x08]
jae SHORT G_M50642_IG14
- mov ecx, r13d
- lea rcx, bword ptr [r12+8*rcx+0x10]
+ mov ecx, r12d
+ lea rcx, bword ptr [rax+8*rcx+0x10]
; byrRegs +[rcx]
- mov rdx, rdi
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx rdi]
- ; byrRegs -[rcx]
- mov gword ptr [rsp+0x20], r12
- ; gcr arg write
- mov r15, gword ptr [rsp+0xB0]
- ; gcrRegs +[r15]
- mov gword ptr [rsp+0x28], r15
- ; gcr arg write
- mov rcx, r14
- ; gcrRegs +[rcx]
...
+10 (+3.21%) : 2990.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -9,33 +9,32 @@
; Final local variable assignments
;
; V00 arg0 [V00,T07] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 loc0 [V01,T11] ( 5, 3.50) int -> rdi
-; V02 loc1 [V02,T00] ( 17, 33 ) int -> rbp
-; V03 loc2 [V03,T12] ( 4, 3.50) ubyte -> r14
-; V04 loc3 [V04,T17] ( 3, 2.50) ubyte -> rax
+; V01 loc0 [V01,T10] ( 5, 3.50) int -> rdi
+; V02 loc1 [V02,T00] ( 19, 34 ) int -> rbp
+; V03 loc2 [V03,T11] ( 4, 3.50) ubyte -> r14
+; V04 loc3 [V04,T16] ( 3, 2.50) ubyte -> rax
; V05 loc4 [V05,T05] ( 4, 12.50) int -> rax
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T18] ( 3, 2 ) int -> rax
-; V08 tmp2 [V08,T19] ( 3, 1.50) int -> rbp
+; V07 tmp1 [V07,T17] ( 3, 2 ) int -> rax
+; V08 tmp2 [V08,T18] ( 3, 1.50) int -> rbp
; V09 tmp3 [V09,T03] ( 2, 16 ) int -> rax "dup spill"
-;* V10 tmp4 [V10,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp5 [V11,T13] ( 3, 3 ) ushort -> rcx "Inlining Arg"
-;* V12 tmp6 [V12,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T14] ( 3, 3 ) ushort -> rax "Inlining Arg"
-;* V14 tmp8 [V14,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp4 [V10,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V11 tmp5 [V11,T12] ( 3, 3 ) ushort -> rcx "Inlining Arg"
+;* V12 tmp6 [V12,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V13 tmp7 [V13,T13] ( 3, 3 ) ushort -> rax "Inlining Arg"
+;* V14 tmp8 [V14,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp9 [V15,T01] ( 3, 24 ) ushort -> rcx "Inlining Arg"
-;* V16 tmp10 [V16,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp10 [V16,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp11 [V17,T02] ( 3, 24 ) ushort -> rax "Inlining Arg"
-;* V18 tmp12 [V18,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 tmp13 [V19,T15] ( 3, 3 ) ushort -> rcx "Inlining Arg"
+;* V18 tmp12 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V19 tmp13 [V19,T14] ( 3, 3 ) ushort -> rax "Inlining Arg"
;* V20 tmp14 [V20 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V21 tmp15 [V21,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V22 tmp16 [V22,T16] ( 3, 3 ) ushort -> rax "Inlining Arg"
-; V23 tmp17 [V23,T04] ( 10, 13 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp18 [V24,T06] ( 6, 11 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
+;* V21 tmp15 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V22 tmp16 [V22,T15] ( 3, 3 ) ushort -> rax "Inlining Arg"
+; V23 tmp17 [V23,T04] ( 11, 13.50) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp18 [V24,T06] ( 7, 15 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
;* V25 tmp19 [V25 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
; V26 tmp20 [V26 ] ( 6, 9 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V27 cse0 [V27,T08] ( 3, 8.50) int -> rcx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -121,7 +120,7 @@ G_M17180_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=2 bbWeight=2 PerfScore 0.50
G_M17180_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp ebp, esi
- jge G_M17180_IG23
+ jge G_M17180_IG24
mov ecx, ebp
movzx rcx, word ptr [rbx+2*rcx]
cmp ecx, 92
@@ -136,16 +135,16 @@ G_M17180_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=6 bbWeight=4 PerfScore 6.00
G_M17180_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rbx]
- jmp SHORT G_M17180_IG23
+ jmp SHORT G_M17180_IG24
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M17180_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov ebp, 1
- jmp SHORT G_M17180_IG23
+ jmp SHORT G_M17180_IG24
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M17180_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs +[rbx]
test r14d, r14d
- je SHORT G_M17180_IG21
+ je SHORT G_M17180_IG22
mov ebp, 4
jmp SHORT G_M17180_IG18
;; size=12 bbWeight=0.50 PerfScore 1.75
@@ -154,55 +153,59 @@ G_M17180_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=2 bbWeight=2 PerfScore 0.50
G_M17180_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp ebp, esi
- jge SHORT G_M17180_IG23
+ jge SHORT G_M17180_IG20
mov eax, ebp
- movzx rcx, word ptr [rbx+2*rax]
- mov eax, ecx
+ movzx rax, word ptr [rbx+2*rax]
cmp eax, 92
- je SHORT G_M17180_IG19
+ je SHORT G_M17180_IG20
cmp eax, 47
jne SHORT G_M17180_IG17
- ;; size=22 bbWeight=4 PerfScore 25.00
-G_M17180_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rbx]
- cmp ebp, 4
- jle SHORT G_M17180_IG23
- ;; size=5 bbWeight=4 PerfScore 5.00
-G_M17180_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 92
- je SHORT G_M17180_IG22
- cmp ecx, 47
- jne SHORT G_M17180_IG23
- jmp SHORT G_M17180_IG22
- ;; size=12 bbWeight=0.50 PerfScore 2.25
+ ;; size=20 bbWeight=4 PerfScore 24.00
+G_M17180_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ jmp SHORT G_M17180_IG21
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M17180_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp ebp, esi
+ jge SHORT G_M17180_IG24
+ ;; size=4 bbWeight=4 PerfScore 5.00
G_M17180_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- ; byrRegs +[rbx]
+ cmp ebp, 4
+ jle SHORT G_M17180_IG24
+ mov eax, ebp
+ movzx rax, word ptr [rbx+2*rax]
+ cmp eax, 92
+ je SHORT G_M17180_IG23
+ cmp eax, 47
+ jne SHORT G_M17180_IG24
+ jmp SHORT G_M17180_IG23
+ ;; size=23 bbWeight=0.50 PerfScore 4.00
+G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp esi, 2
- jl SHORT G_M17180_IG23
+ jl SHORT G_M17180_IG24
cmp word ptr [rbx+0x02], 58
- jne SHORT G_M17180_IG23
+ jne SHORT G_M17180_IG24
movzx rax, word ptr [rbx]
or eax, 32
add eax, -97
cmp eax, 25
- ja SHORT G_M17180_IG23
+ ja SHORT G_M17180_IG24
mov ebp, 2
cmp esi, 2
- jle SHORT G_M17180_IG23
+ jle SHORT G_M17180_IG24
movzx rax, word ptr [rbx+0x04]
cmp eax, 92
- je SHORT G_M17180_IG22
+ je SHORT G_M17180_IG23
cmp eax, 47
- jne SHORT G_M17180_IG23
+ jne SHORT G_M17180_IG24
;; size=50 bbWeight=0.50 PerfScore 7.50
-G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
inc ebp
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M17180_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, ebp
;; size=2 bbWeight=1 PerfScore 0.25
-G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M17180_IG25: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -212,7 +215,7 @@ G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
ret
;; size=11 bbWeight=1 PerfScore 3.75
-; Total bytes of code 312, prolog size 17, PerfScore 112.38, instruction count 114, allocated bytes for code 312 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 322, prolog size 17, PerfScore 114.12, instruction count 118, allocated bytes for code 322 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
+10 (+3.21%) : 12639.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -9,33 +9,32 @@
; Final local variable assignments
;
; V00 arg0 [V00,T07] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 loc0 [V01,T11] ( 5, 3.50) int -> rdi
-; V02 loc1 [V02,T00] ( 17, 33 ) int -> rbp
-; V03 loc2 [V03,T12] ( 4, 3.50) ubyte -> r14
-; V04 loc3 [V04,T17] ( 3, 2.50) ubyte -> rax
+; V01 loc0 [V01,T10] ( 5, 3.50) int -> rdi
+; V02 loc1 [V02,T00] ( 19, 34 ) int -> rbp
+; V03 loc2 [V03,T11] ( 4, 3.50) ubyte -> r14
+; V04 loc3 [V04,T16] ( 3, 2.50) ubyte -> rax
; V05 loc4 [V05,T05] ( 4, 12.50) int -> rax
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T18] ( 3, 2 ) int -> rax
-; V08 tmp2 [V08,T19] ( 3, 1.50) int -> rbp
+; V07 tmp1 [V07,T17] ( 3, 2 ) int -> rax
+; V08 tmp2 [V08,T18] ( 3, 1.50) int -> rbp
; V09 tmp3 [V09,T03] ( 2, 16 ) int -> rax "dup spill"
-;* V10 tmp4 [V10,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp5 [V11,T13] ( 3, 3 ) ushort -> rcx "Inlining Arg"
-;* V12 tmp6 [V12,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T14] ( 3, 3 ) ushort -> rax "Inlining Arg"
-;* V14 tmp8 [V14,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp4 [V10,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V11 tmp5 [V11,T12] ( 3, 3 ) ushort -> rcx "Inlining Arg"
+;* V12 tmp6 [V12,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V13 tmp7 [V13,T13] ( 3, 3 ) ushort -> rax "Inlining Arg"
+;* V14 tmp8 [V14,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp9 [V15,T01] ( 3, 24 ) ushort -> rcx "Inlining Arg"
-;* V16 tmp10 [V16,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp10 [V16,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp11 [V17,T02] ( 3, 24 ) ushort -> rax "Inlining Arg"
-;* V18 tmp12 [V18,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 tmp13 [V19,T15] ( 3, 3 ) ushort -> rcx "Inlining Arg"
+;* V18 tmp12 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V19 tmp13 [V19,T14] ( 3, 3 ) ushort -> rax "Inlining Arg"
;* V20 tmp14 [V20 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V21 tmp15 [V21,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V22 tmp16 [V22,T16] ( 3, 3 ) ushort -> rax "Inlining Arg"
-; V23 tmp17 [V23,T04] ( 10, 13 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp18 [V24,T06] ( 6, 11 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
+;* V21 tmp15 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V22 tmp16 [V22,T15] ( 3, 3 ) ushort -> rax "Inlining Arg"
+; V23 tmp17 [V23,T04] ( 11, 13.50) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp18 [V24,T06] ( 7, 15 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
;* V25 tmp19 [V25 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
; V26 tmp20 [V26 ] ( 6, 9 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V27 cse0 [V27,T08] ( 3, 8.50) int -> rcx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -121,7 +120,7 @@ G_M17180_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=2 bbWeight=2 PerfScore 0.50
G_M17180_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp ebp, esi
- jge G_M17180_IG23
+ jge G_M17180_IG24
mov ecx, ebp
movzx rcx, word ptr [rbx+2*rcx]
cmp ecx, 92
@@ -136,16 +135,16 @@ G_M17180_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=6 bbWeight=4 PerfScore 6.00
G_M17180_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rbx]
- jmp SHORT G_M17180_IG23
+ jmp SHORT G_M17180_IG24
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M17180_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov ebp, 1
- jmp SHORT G_M17180_IG23
+ jmp SHORT G_M17180_IG24
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M17180_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs +[rbx]
test r14d, r14d
- je SHORT G_M17180_IG21
+ je SHORT G_M17180_IG22
mov ebp, 4
jmp SHORT G_M17180_IG18
;; size=12 bbWeight=0.50 PerfScore 1.75
@@ -154,55 +153,59 @@ G_M17180_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=2 bbWeight=2 PerfScore 0.50
G_M17180_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp ebp, esi
- jge SHORT G_M17180_IG23
+ jge SHORT G_M17180_IG20
mov eax, ebp
- movzx rcx, word ptr [rbx+2*rax]
- mov eax, ecx
+ movzx rax, word ptr [rbx+2*rax]
cmp eax, 92
- je SHORT G_M17180_IG19
+ je SHORT G_M17180_IG20
cmp eax, 47
jne SHORT G_M17180_IG17
- ;; size=22 bbWeight=4 PerfScore 25.00
-G_M17180_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rbx]
- cmp ebp, 4
- jle SHORT G_M17180_IG23
- ;; size=5 bbWeight=4 PerfScore 5.00
-G_M17180_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 92
- je SHORT G_M17180_IG22
- cmp ecx, 47
- jne SHORT G_M17180_IG23
- jmp SHORT G_M17180_IG22
- ;; size=12 bbWeight=0.50 PerfScore 2.25
+ ;; size=20 bbWeight=4 PerfScore 24.00
+G_M17180_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ jmp SHORT G_M17180_IG21
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M17180_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp ebp, esi
+ jge SHORT G_M17180_IG24
+ ;; size=4 bbWeight=4 PerfScore 5.00
G_M17180_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- ; byrRegs +[rbx]
+ cmp ebp, 4
+ jle SHORT G_M17180_IG24
+ mov eax, ebp
+ movzx rax, word ptr [rbx+2*rax]
+ cmp eax, 92
+ je SHORT G_M17180_IG23
+ cmp eax, 47
+ jne SHORT G_M17180_IG24
+ jmp SHORT G_M17180_IG23
+ ;; size=23 bbWeight=0.50 PerfScore 4.00
+G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp esi, 2
- jl SHORT G_M17180_IG23
+ jl SHORT G_M17180_IG24
cmp word ptr [rbx+0x02], 58
- jne SHORT G_M17180_IG23
+ jne SHORT G_M17180_IG24
movzx rax, word ptr [rbx]
or eax, 32
add eax, -97
cmp eax, 25
- ja SHORT G_M17180_IG23
+ ja SHORT G_M17180_IG24
mov ebp, 2
cmp esi, 2
- jle SHORT G_M17180_IG23
+ jle SHORT G_M17180_IG24
movzx rax, word ptr [rbx+0x04]
cmp eax, 92
- je SHORT G_M17180_IG22
+ je SHORT G_M17180_IG23
cmp eax, 47
- jne SHORT G_M17180_IG23
+ jne SHORT G_M17180_IG24
;; size=50 bbWeight=0.50 PerfScore 7.50
-G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
inc ebp
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M17180_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, ebp
;; size=2 bbWeight=1 PerfScore 0.25
-G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M17180_IG25: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -212,7 +215,7 @@ G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
ret
;; size=11 bbWeight=1 PerfScore 3.75
-; Total bytes of code 312, prolog size 17, PerfScore 112.38, instruction count 114, allocated bytes for code 312 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 322, prolog size 17, PerfScore 114.12, instruction count 118, allocated bytes for code 322 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
benchmarks.run_pgo.windows.x64.checked.mch
-15 (-24.19%) : 91602.dasm - Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
@@ -10,10 +10,10 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Lowering.InstructionReplacement>
-; V01 loc0 [V01,T02] ( 5,100.25) int -> rcx
-; V02 loc1 [V02,T01] ( 8,299.99) int -> registers
+; V01 loc0 [V01,T02] ( 4,101.24) int -> rcx
+; V02 loc1 [V02,T01] ( 5,299.99) int -> registers
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 9,600.00) int -> rax "impSpillLclRefs"
+; V04 tmp1 [V04,T00] ( 6,600.00) int -> rax "impSpillLclRefs"
;
; Lcl frame size = 0
@@ -24,39 +24,32 @@ G_M4100_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
G_M4100_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lea edx, [rax+0x01]
cmp eax, 0xD1FFAB1E
- jge SHORT G_M4100_IG07
+ jge SHORT G_M4100_IG05
;; size=10 bbWeight=0.01 PerfScore 0.02
G_M4100_IG03: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
bt edx, ecx
- jae SHORT G_M4100_IG06
- ;; size=5 bbWeight=99.99 PerfScore 149.98
-G_M4100_IG04: ; bbWeight=99.86, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jae SHORT G_M4100_IG07
+ ;; size=5 bbWeight=99.99 PerfScore 149.99
+G_M4100_IG04: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, edx
lea edx, [rax+0x01]
cmp eax, 0xD1FFAB1E
- jge SHORT G_M4100_IG07
- ;; size=12 bbWeight=99.86 PerfScore 199.72
-G_M4100_IG05: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- bt edx, ecx
- jb SHORT G_M4100_IG04
- ;; size=5 bbWeight=0.00 PerfScore 0.01
-G_M4100_IG06: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- inc ecx
- mov eax, edx
- lea edx, [rax+0x01]
- cmp eax, 0xD1FFAB1E
- jl SHORT G_M4100_IG05
- ;; size=14 bbWeight=0.13 PerfScore 0.29
-G_M4100_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jl SHORT G_M4100_IG03
+ ;; size=12 bbWeight=99.99 PerfScore 199.98
+G_M4100_IG05: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, ecx
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M4100_IG08: ; bbWeight=0, epilog, nogc, extend
+ ;; size=2 bbWeight=0.99 PerfScore 0.25
+G_M4100_IG06: ; bbWeight=0.99, epilog, nogc, extend
add rsp, 120
pop rbp
ret
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=6 bbWeight=0.99 PerfScore 1.74
+G_M4100_IG07: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ inc ecx
+ jmp SHORT G_M4100_IG04
+ ;; size=4 bbWeight=0.13 PerfScore 0.29
-; Total bytes of code 62, prolog size 8, PerfScore 350.05, instruction count 22, allocated bytes for code 62 (MethodHash=6a7feffb) for method Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
+; Total bytes of code 47, prolog size 8, PerfScore 352.30, instruction count 17, allocated bytes for code 47 (MethodHash=6a7feffb) for method Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
; ============================================================
Unwind Info:
-40 (-13.51%) : 97709.dasm - System.Numerics.BigIntegerCalculator:Add(System.ReadOnlySpan1[uint],uint,System.Span
1[uint]) (Tier1)
@@ -13,23 +13,23 @@
; V02 arg2 [V02,T03] ( 5, 7.30) byref -> r8 single-def
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
-; V05 tmp2 [V05,T00] ( 19, 14.03) int -> rdi "Inline stloc first use temp"
+; V05 tmp2 [V05,T00] ( 19, 14.03) int -> rsi "Inline stloc first use temp"
;* V06 tmp3 [V06 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V07 tmp4 [V07,T01] ( 14, 10.84) long -> rbp "Inline stloc first use temp"
+; V07 tmp4 [V07,T01] ( 14, 11.83) long -> rcx "Inline stloc first use temp"
;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
-; V09 tmp6 [V09,T05] ( 5, 6.20) byref -> rax single-def "Inlining Arg"
+; V09 tmp6 [V09,T05] ( 5, 8.18) byref -> rax single-def "Inlining Arg"
;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
;* V11 tmp8 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[uint]>
;* V12 tmp9 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[uint]>
;* V14 tmp11 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
-; V15 tmp12 [V15,T08] ( 5, 2.60) int -> rsi "Inlining Arg"
-; V16 tmp13 [V16,T11] ( 2, 1.30) byref -> r13 single-def "Inlining Arg"
+; V15 tmp12 [V15,T08] ( 4, 2.60) int -> rbx "Inlining Arg"
+; V16 tmp13 [V16,T11] ( 2, 1.30) byref -> r14 single-def "Inlining Arg"
;* V17 tmp14 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp15 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp16 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V20 tmp17 [V20,T10] ( 4, 1.95) int -> r15 "Inlining Arg"
-; V21 tmp18 [V21,T12] ( 2, 1.30) byref -> r12 single-def "Inlining Arg"
+; V20 tmp17 [V20,T10] ( 3, 1.95) int -> rbp "Inlining Arg"
+; V21 tmp18 [V21,T12] ( 2, 1.30) byref -> r15 single-def "Inlining Arg"
;* V22 tmp19 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp20 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp21 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
@@ -42,14 +42,14 @@
;* V31 tmp28 [V31 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
; V32 tmp29 [V32,T09] ( 2, 2 ) byref -> rax single-def "field V04._reference (fldOffset=0x0)" P-INDEP
;* V33 tmp30 [V33 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-; V34 tmp31 [V34,T07] ( 4, 2.92) byref -> rbx single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-; V35 tmp32 [V35,T04] ( 10, 7.84) int -> rsi "field V08._length (fldOffset=0x8)" P-INDEP
+; V34 tmp31 [V34,T07] ( 4, 2.92) byref -> r10 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V35 tmp32 [V35,T04] ( 10, 8.83) int -> rbx "field V08._length (fldOffset=0x8)" P-INDEP
;* V36 tmp33 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp34 [V37 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V38 tmp35 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP
;* V39 tmp36 [V39 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V40 tmp37 [V40,T15] ( 2, 0.65) byref -> r14 single-def "field V12._reference (fldOffset=0x0)" P-INDEP
-; V41 tmp38 [V41,T14] ( 4, 0.97) int -> r15 "field V12._length (fldOffset=0x8)" P-INDEP
+; V40 tmp37 [V40,T15] ( 2, 0.65) byref -> rdi single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+; V41 tmp38 [V41,T14] ( 4, 0.97) int -> rbp "field V12._length (fldOffset=0x8)" P-INDEP
;* V42 tmp39 [V42 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V43 tmp40 [V43 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
;* V44 tmp41 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP
@@ -66,165 +66,157 @@
G_M35723_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
push r14
- push r13
- push r12
push rdi
push rsi
push rbp
push rbx
sub rsp, 40
- ;; size=16 bbWeight=1 PerfScore 8.25
+ ;; size=12 bbWeight=1 PerfScore 6.25
G_M35723_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0102 {rcx r8}, byref, isz
; byrRegs +[rcx r8]
mov rax, bword ptr [r8]
; byrRegs +[rax]
- mov rbx, bword ptr [rcx]
- ; byrRegs +[rbx]
- mov esi, dword ptr [rcx+0x08]
- xor edi, edi
- mov ebp, edx
- cmp esi, 8
- jle SHORT G_M35723_IG10
- ;; size=18 bbWeight=1 PerfScore 7.75
-G_M35723_IG03: ; bbWeight=3.94, gcrefRegs=0000 {}, byrefRegs=0109 {rax rbx r8}, byref, isz
+ mov r10, bword ptr [rcx]
+ ; byrRegs +[r10]
+ mov ebx, dword ptr [rcx+0x08]
+ xor esi, esi
+ mov ecx, edx
; byrRegs -[rcx]
- cmp edi, esi
- jge SHORT G_M35723_IG08
+ cmp ebx, 8
+ jle SHORT G_M35723_IG07
+ ;; size=18 bbWeight=1 PerfScore 7.75
+G_M35723_IG03: ; bbWeight=3.94, gcrefRegs=0000 {}, byrefRegs=0501 {rax r8 r10}, byref, isz
+ cmp esi, ebx
+ jge SHORT G_M35723_IG05
;; size=4 bbWeight=3.94 PerfScore 4.92
-G_M35723_IG04: ; bbWeight=1.35, gcrefRegs=0000 {}, byrefRegs=0109 {rax rbx r8}, byref, isz
- mov ecx, edi
- mov ecx, dword ptr [rbx+4*rcx]
- add rcx, rbp
- mov rbp, rcx
- movsxd rcx, edi
- mov dword ptr [rax+4*rcx], ebp
- inc edi
- sar rbp, 32
- je SHORT G_M35723_IG08
- jmp SHORT G_M35723_IG03
- ;; size=27 bbWeight=1.35 PerfScore 10.43
-G_M35723_IG05: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0108 {rbx r8}, byref, isz
- ; byrRegs -[rax]
- mov r14, bword ptr [r8]
- ; byrRegs +[r14]
- mov r15d, dword ptr [r8+0x08]
- cmp edi, esi
- ja G_M35723_IG15
- mov r8d, edi
- ; byrRegs -[r8]
- lea r13, bword ptr [rbx+4*r8]
- ; byrRegs +[r13]
- sub esi, edi
- js SHORT G_M35723_IG14
- cmp edi, r15d
- ja G_M35723_IG15
- ;; size=35 bbWeight=0.32 PerfScore 2.76
-G_M35723_IG06: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
- ; byrRegs -[rbx]
- mov r8d, edi
- lea r12, bword ptr [r14+4*r8]
- ; byrRegs +[r12]
- sub r15d, edi
- js G_M35723_IG16
- cmp esi, r15d
- ja G_M35723_IG17
- ;; size=25 bbWeight=0.32 PerfScore 1.06
-G_M35723_IG07: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=3000 {r12 r13}, byref, isz
- ; byrRegs -[r14]
- mov r8d, esi
- shl r8, 2
- mov rcx, r12
- ; byrRegs +[rcx]
- mov rdx, r13
- ; byrRegs +[rdx]
- call [<unknown method>]
- ; byrRegs -[rcx rdx r12-r13]
- ; gcr arg pop 0
- jmp SHORT G_M35723_IG13
- ;; size=21 bbWeight=0.32 PerfScore 2.03
-G_M35723_IG08: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0109 {rax rbx r8}, byref, isz
- ; byrRegs +[rax rbx r8]
- mov ecx, esi
- mov dword ptr [rax+4*rcx], ebp
- cmp edi, esi
- jge SHORT G_M35723_IG13
+G_M35723_IG04: ; bbWeight=1.35, gcrefRegs=0000 {}, byrefRegs=0501 {rax r8 r10}, byref, isz
+ mov edx, esi
+ mov edx, dword ptr [r10+4*rdx]
+ add rdx, rcx
+ mov rcx, rdx
+ movsxd rdx, esi
+ mov dword ptr [rax+4*rdx], ecx
+ inc esi
+ sar rcx, 32
+ jne SHORT G_M35723_IG03
+ ;; size=26 bbWeight=1.35 PerfScore 7.74
+G_M35723_IG05: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0501 {rax r8 r10}, byref, isz
+ mov edx, ebx
+ mov dword ptr [rax+4*rdx], ecx
+ cmp esi, ebx
+ jge SHORT G_M35723_IG10
;; size=9 bbWeight=0.49 PerfScore 1.23
-G_M35723_IG09: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0108 {rbx r8}, byref, isz
+G_M35723_IG06: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
; byrRegs -[rax]
- jmp SHORT G_M35723_IG05
+ jmp SHORT G_M35723_IG11
;; size=2 bbWeight=0.32 PerfScore 0.65
-G_M35723_IG10: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0009 {rax rbx}, byref, isz
+G_M35723_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
; byrRegs -[r8] +[rax]
- test esi, esi
- jle SHORT G_M35723_IG12
+ test ebx, ebx
+ jle SHORT G_M35723_IG09
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M35723_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0009 {rax rbx}, byref, isz
- mov r8d, edi
- mov r8d, dword ptr [rbx+4*r8]
- add rbp, r8
- movsxd r8, edi
- mov dword ptr [rax+4*r8], ebp
- sar rbp, 32
- inc edi
- cmp edi, esi
- jl SHORT G_M35723_IG11
- ;; size=27 bbWeight=0.25 PerfScore 1.45
-G_M35723_IG12: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
- ; byrRegs -[rbx]
+G_M35723_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
mov r8d, esi
- mov dword ptr [rax+4*r8], ebp
- ;; size=7 bbWeight=0.01 PerfScore 0.01
-G_M35723_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ mov r8d, dword ptr [r10+4*r8]
+ add rcx, r8
+ movsxd r8, esi
+ mov dword ptr [rax+4*r8], ecx
+ sar rcx, 32
+ inc esi
+ cmp esi, ebx
+ jl SHORT G_M35723_IG08
+ ;; size=27 bbWeight=0.25 PerfScore 1.45
+G_M35723_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
+ ; byrRegs -[r10]
+ mov r10d, ebx
+ mov dword ptr [rax+4*r10], ecx
+ ;; size=7 bbWeight=1 PerfScore 1.25
+G_M35723_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rax]
add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r12
- pop r13
pop r14
pop r15
ret
- ;; size=17 bbWeight=1 PerfScore 5.25
-G_M35723_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, gcvars, byref
- ; byrRegs +[r13-r14]
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
+ ;; size=13 bbWeight=1 PerfScore 4.25
+G_M35723_IG11: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, gcvars, byref, isz
+ ; byrRegs +[r8 r10]
+ mov rdi, bword ptr [r8]
+ ; byrRegs +[rdi]
+ mov ebp, dword ptr [r8+0x08]
+ cmp esi, ebx
+ ja SHORT G_M35723_IG16
+ mov r8d, esi
+ ; byrRegs -[r8]
+ lea r14, bword ptr [r10+4*r8]
+ ; byrRegs +[r14]
+ sub ebx, esi
+ js SHORT G_M35723_IG15
+ cmp esi, ebp
+ ja SHORT G_M35723_IG16
+ ;; size=26 bbWeight=0.32 PerfScore 2.76
+G_M35723_IG12: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, byref, isz
+ ; byrRegs -[r10]
+ mov r8d, esi
...
-10 (-8.26%) : 98082.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -12,103 +12,93 @@
; V00 arg0 [V00,T03] ( 8, 5.01) long -> rcx single-def
; V01 arg1 [V01,T02] ( 7, 5.02) ref -> rdx class-hnd <System.Object>
; V02 loc0 [V02,T04] ( 4, 3.04) long -> rbx
-; V03 loc1 [V03,T00] ( 10, 8.95) long -> rsi
-; V04 loc2 [V04,T01] ( 10, 7.96) long -> rdi
+; V03 loc1 [V03,T00] ( 10, 8.95) long -> rax
+; V04 loc2 [V04,T01] ( 10, 7.96) long -> r8
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
-G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi
- push rsi
+G_M24157_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbx
- ;; size=3 bbWeight=1 PerfScore 3.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
test rdx, rdx
- je SHORT G_M24157_IG10
+ je SHORT G_M24157_IG15
;; size=5 bbWeight=1 PerfScore 1.25
G_M24157_IG03: ; bbWeight=1.01, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
mov rbx, qword ptr [rdx]
- movzx rsi, word ptr [rbx+0x0E]
- test rsi, rsi
- je SHORT G_M24157_IG12
+ movzx rax, word ptr [rbx+0x0E]
+ test rax, rax
+ je SHORT G_M24157_IG13
;; size=12 bbWeight=1.01 PerfScore 5.29
G_M24157_IG04: ; bbWeight=1.01, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx+0x40]
- cmp rsi, 4
+ mov r8, qword ptr [rbx+0x40]
+ cmp rax, 4
jge SHORT G_M24157_IG08
;; size=10 bbWeight=1.01 PerfScore 3.27
G_M24157_IG05: ; bbWeight=2.94, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [rdi], rcx
- je SHORT G_M24157_IG10
+ cmp qword ptr [r8], rcx
+ je SHORT G_M24157_IG15
;; size=5 bbWeight=2.94 PerfScore 11.78
G_M24157_IG06: ; bbWeight=1.97, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- add rdi, 8
- dec rsi
- test rsi, rsi
+ add r8, 8
+ dec rax
+ test rax, rax
jg SHORT G_M24157_IG05
;; size=12 bbWeight=1.97 PerfScore 3.45
G_M24157_IG07: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M24157_IG12
+ jmp SHORT G_M24157_IG13
;; size=2 bbWeight=0.02 PerfScore 0.03
G_M24157_IG08: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [rdi], rcx
- je SHORT G_M24157_IG10
- cmp qword ptr [rdi+0x08], rcx
- je SHORT G_M24157_IG10
+ cmp qword ptr [r8], rcx
+ je SHORT G_M24157_IG15
+ cmp qword ptr [r8+0x08], rcx
+ je SHORT G_M24157_IG15
;; size=11 bbWeight=0.02 PerfScore 0.16
G_M24157_IG09: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [rdi+0x10], rcx
- jne SHORT G_M24157_IG14
+ cmp qword ptr [r8+0x10], rcx
+ je SHORT G_M24157_IG15
;; size=6 bbWeight=0.02 PerfScore 0.08
-G_M24157_IG10: ; bbWeight=1.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
- mov rax, rdx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1.00 PerfScore 0.25
-G_M24157_IG11: ; bbWeight=1.00, epilog, nogc, extend
- pop rbx
- pop rsi
- pop rdi
- ret
- ;; size=4 bbWeight=1.00 PerfScore 2.50
-G_M24157_IG12: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
+G_M24157_IG10: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ cmp qword ptr [r8+0x18], rcx
+ je SHORT G_M24157_IG15
+ ;; size=6 bbWeight=0.00 PerfScore 0.01
+G_M24157_IG11: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ add r8, 32
+ add rax, -4
+ cmp rax, 4
+ jge SHORT G_M24157_IG08
+ ;; size=14 bbWeight=0.00 PerfScore 0.00
+G_M24157_IG12: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ test rax, rax
+ jne SHORT G_M24157_IG05
+ ;; size=5 bbWeight=0.00 PerfScore 0.00
+G_M24157_IG13: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
test dword ptr [rbx], 0xD1FFAB1E
- jne SHORT G_M24157_IG18
+ jne SHORT G_M24157_IG17
;; size=8 bbWeight=0.02 PerfScore 0.07
-G_M24157_IG13: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M24157_IG14: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
xor rdx, rdx
; gcrRegs +[rdx]
- jmp SHORT G_M24157_IG10
- ;; size=4 bbWeight=0.02 PerfScore 0.04
-G_M24157_IG14: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [rdi+0x18], rcx
- je SHORT G_M24157_IG10
- ;; size=6 bbWeight=0.00 PerfScore 0.01
-G_M24157_IG15: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- add rdi, 32
- add rsi, -4
- cmp rsi, 4
- jge SHORT G_M24157_IG08
- ;; size=14 bbWeight=0.00 PerfScore 0.00
-G_M24157_IG16: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- test rsi, rsi
- je SHORT G_M24157_IG12
- ;; size=5 bbWeight=0.00 PerfScore 0.00
-G_M24157_IG17: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M24157_IG05
- ;; size=2 bbWeight=0.00 PerfScore 0.00
-G_M24157_IG18: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=2 bbWeight=0.02 PerfScore 0.00
+G_M24157_IG15: ; bbWeight=1.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+ mov rax, rdx
+ ; gcrRegs +[rax]
+ ;; size=3 bbWeight=1.00 PerfScore 0.25
+G_M24157_IG16: ; bbWeight=1.00, epilog, nogc, extend
+ pop rbx
+ ret
+ ;; size=2 bbWeight=1.00 PerfScore 1.50
+G_M24157_IG17: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rax]
pop rbx
- pop rsi
- pop rdi
tail.jmp [<unknown method>]
; gcr arg pop 0
- ;; size=9 bbWeight=0.00 PerfScore 0.00
+ ;; size=7 bbWeight=0.00 PerfScore 0.00
-; Total bytes of code 121, prolog size 3, PerfScore 31.18, instruction count 47, allocated bytes for code 121 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 111, prolog size 1, PerfScore 28.15, instruction count 39, allocated bytes for code 111 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -116,11 +106,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+11 (+13.25%) : 91041.dasm - System.Collections.Generic.GenericArraySortHelper1[System.Collections.IntStruct]:InsertionSort(System.Span
1[System.Collections.IntStruct]) (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 arg0 [V00,T09] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 loc0 [V01,T06] ( 5, 96.46) int -> rdx
+; V01 loc0 [V01,T04] ( 5, 96.46) int -> rdx
;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.IntStruct>
; V03 loc2 [V03,T00] ( 8,239.96) int -> rdx
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -22,12 +22,12 @@
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.IntStruct>
-;* V13 tmp9 [V13,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V13 tmp9 [V13,T06] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.IntStruct]>
; V16 tmp12 [V16,T01] ( 6,143.75) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V17 tmp13 [V17,T10] ( 2, 2 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
-; V18 tmp14 [V18,T05] ( 3, 85.19) int -> r10 "field V02._value (fldOffset=0x0)" P-INDEP
+; V18 tmp14 [V18,T03] ( 4, 99.89) int -> r10 "field V02._value (fldOffset=0x0)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
@@ -36,7 +36,7 @@
;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V27 tmp23 [V27,T03] ( 2, 74.92) int -> r9 "field V12._value (fldOffset=0x0)" P-INDEP
+; V27 tmp23 [V27,T05] ( 3, 89.62) int -> r9 "field V12._value (fldOffset=0x0)" P-INDEP
;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V30 tmp26 [V30 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[System.Collections.IntStruct]>
@@ -56,7 +56,7 @@ G_M24360_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
xor edx, edx
dec ecx
test ecx, ecx
- jle SHORT G_M24360_IG08
+ jle SHORT G_M24360_IG12
;; size=14 bbWeight=1 PerfScore 5.75
G_M24360_IG03: ; bbWeight=10.30, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
lea r8d, [rdx+0x01]
@@ -77,15 +77,18 @@ G_M24360_IG04: ; bbWeight=28.78, gcrefRegs=0000 {}, byrefRegs=0001 {rax},
G_M24360_IG05: ; bbWeight=39.66, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
; byrRegs -[r9]
test edx, edx
- jl SHORT G_M24360_IG07
+ jl SHORT G_M24360_IG08
;; size=4 bbWeight=39.66 PerfScore 49.57
G_M24360_IG06: ; bbWeight=37.46, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
movsxd r9, edx
mov r9d, dword ptr [rax+4*r9]
cmp r10d, r9d
- jl SHORT G_M24360_IG04
+ jge SHORT G_M24360_IG10
;; size=12 bbWeight=37.46 PerfScore 131.12
-G_M24360_IG07: ; bbWeight=37.43, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+G_M24360_IG07: ; bbWeight=22.74, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+ jmp SHORT G_M24360_IG04
+ ;; size=2 bbWeight=22.74 PerfScore 45.48
+G_M24360_IG08: ; bbWeight=37.43, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
inc edx
movsxd rdx, edx
mov dword ptr [rax+4*rdx], r10d
@@ -93,12 +96,24 @@ G_M24360_IG07: ; bbWeight=37.43, gcrefRegs=0000 {}, byrefRegs=0001 {rax},
cmp edx, ecx
jl SHORT G_M24360_IG03
;; size=16 bbWeight=37.43 PerfScore 112.30
-G_M24360_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M24360_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rax]
+ jmp SHORT G_M24360_IG12
+ ;; size=2 bbWeight=1 PerfScore 2.00
+G_M24360_IG10: ; bbWeight=14.69, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+ ; byrRegs +[rax]
+ cmp r10d, r9d
+ jle SHORT G_M24360_IG08
+ ;; size=5 bbWeight=14.69 PerfScore 18.37
+G_M24360_IG11: ; bbWeight=14.68, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+ jmp SHORT G_M24360_IG08
+ ;; size=2 bbWeight=14.68 PerfScore 29.37
+G_M24360_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rax]
ret
;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 83, prolog size 0, PerfScore 485.35, instruction count 30, allocated bytes for code 83 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
+; Total bytes of code 94, prolog size 0, PerfScore 580.57, instruction count 35, allocated bytes for code 94 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
; ============================================================
Unwind Info:
+11 (+13.25%) : 85527.dasm - System.Collections.Generic.GenericArraySortHelper1[System.Collections.IntStruct]:InsertionSort(System.Span
1[System.Collections.IntStruct]) (Tier1)
@@ -10,11 +10,11 @@
; Final local variable assignments
;
; V00 arg0 [V00,T09] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 loc0 [V01,T06] ( 5, 95.08) int -> rdx
+; V01 loc0 [V01,T04] ( 5, 95.08) int -> rdx
;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.IntStruct>
; V03 loc2 [V03,T00] ( 8,239.51) int -> rdx
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T01] ( 2,116.33) byref -> r9 "impAppendStmt"
+; V05 tmp1 [V05,T02] ( 2,116.33) byref -> r9 "impAppendStmt"
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.IntStruct]>
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.IntStruct]>
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.IntStruct]>
@@ -22,12 +22,12 @@
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.IntStruct>
-;* V13 tmp9 [V13,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V13 tmp9 [V13,T06] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.IntStruct]>
-; V16 tmp12 [V16,T02] ( 6,143.22) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V16 tmp12 [V16,T01] ( 6,143.22) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V17 tmp13 [V17,T10] ( 2, 2 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
-; V18 tmp14 [V18,T05] ( 3, 84.06) int -> r10 "field V02._value (fldOffset=0x0)" P-INDEP
+; V18 tmp14 [V18,T03] ( 4, 98.67) int -> r10 "field V02._value (fldOffset=0x0)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
@@ -36,7 +36,7 @@
;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V27 tmp23 [V27,T03] ( 2, 74.03) int -> r9 "field V12._value (fldOffset=0x0)" P-INDEP
+; V27 tmp23 [V27,T05] ( 3, 88.64) int -> r9 "field V12._value (fldOffset=0x0)" P-INDEP
;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V30 tmp26 [V30 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[System.Collections.IntStruct]>
@@ -56,7 +56,7 @@ G_M24360_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
xor edx, edx
dec ecx
test ecx, ecx
- jle SHORT G_M24360_IG08
+ jle SHORT G_M24360_IG12
;; size=14 bbWeight=1 PerfScore 5.75
G_M24360_IG03: ; bbWeight=10.05, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
lea r8d, [rdx+0x01]
@@ -77,15 +77,18 @@ G_M24360_IG04: ; bbWeight=29.08, gcrefRegs=0000 {}, byrefRegs=0001 {rax},
G_M24360_IG05: ; bbWeight=39.13, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
; byrRegs -[r9]
test edx, edx
- jl SHORT G_M24360_IG07
+ jl SHORT G_M24360_IG08
;; size=4 bbWeight=39.13 PerfScore 48.91
G_M24360_IG06: ; bbWeight=37.02, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
movsxd r9, edx
mov r9d, dword ptr [rax+4*r9]
cmp r10d, r9d
- jl SHORT G_M24360_IG04
+ jge SHORT G_M24360_IG10
;; size=12 bbWeight=37.02 PerfScore 129.56
-G_M24360_IG07: ; bbWeight=36.99, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+G_M24360_IG07: ; bbWeight=22.38, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+ jmp SHORT G_M24360_IG04
+ ;; size=2 bbWeight=22.38 PerfScore 44.77
+G_M24360_IG08: ; bbWeight=36.99, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
inc edx
movsxd rdx, edx
mov dword ptr [rax+4*rdx], r10d
@@ -93,12 +96,24 @@ G_M24360_IG07: ; bbWeight=36.99, gcrefRegs=0000 {}, byrefRegs=0001 {rax},
cmp edx, ecx
jl SHORT G_M24360_IG03
;; size=16 bbWeight=36.99 PerfScore 110.98
-G_M24360_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M24360_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rax]
+ jmp SHORT G_M24360_IG12
+ ;; size=2 bbWeight=1 PerfScore 2.00
+G_M24360_IG10: ; bbWeight=14.61, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+ ; byrRegs +[rax]
+ cmp r10d, r9d
+ jle SHORT G_M24360_IG08
+ ;; size=5 bbWeight=14.61 PerfScore 18.26
+G_M24360_IG11: ; bbWeight=14.60, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+ jmp SHORT G_M24360_IG08
+ ;; size=2 bbWeight=14.60 PerfScore 29.20
+G_M24360_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rax]
ret
;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 83, prolog size 0, PerfScore 482.07, instruction count 30, allocated bytes for code 83 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
+; Total bytes of code 94, prolog size 0, PerfScore 576.30, instruction count 35, allocated bytes for code 94 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
; ============================================================
Unwind Info:
+24 (+14.12%) : 101959.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
@@ -5,22 +5,22 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 4
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 4
; 1 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 6, 3.72) long -> rcx single-def
-; V01 arg1 [V01,T00] ( 7, 5 ) ref -> rdx class-hnd <System.Object>
-; V02 loc0 [V02,T02] ( 4, 2.57) long -> rax
+; V00 arg0 [V00,T02] ( 6, 3.72) long -> rcx single-def
+; V01 arg1 [V01,T01] ( 7, 5 ) ref -> rdx class-hnd <System.Object>
+; V02 loc0 [V02,T03] ( 4, 2.57) long -> rax
;* V03 loc1 [V03 ] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T08] ( 4, 0.75) int -> rsi "Inline return value spill temp"
+; V05 tmp1 [V05,T00] ( 4, 25.71) int -> r8 "Inline return value spill temp"
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <int[]>
-; V07 tmp3 [V07,T07] ( 4, 1.13) byref -> r8 single-def "Inline stloc first use temp"
-; V08 tmp4 [V08,T06] ( 4, 1.20) int -> r10 "Inline stloc first use temp"
-; V09 tmp5 [V09,T03] ( 5, 1.52) int -> r9 "Inline stloc first use temp"
-; V10 tmp6 [V10,T04] ( 5, 1.38) byref -> r11 "Inline stloc first use temp"
-; V11 tmp7 [V11,T05] ( 5, 1.27) int -> rbx "Inline stloc first use temp"
+; V07 tmp3 [V07,T08] ( 4, 1.13) byref -> r8 single-def "Inline stloc first use temp"
+; V08 tmp4 [V08,T07] ( 4, 1.20) int -> r10 "Inline stloc first use temp"
+; V09 tmp5 [V09,T04] ( 5, 1.52) int -> r9 "Inline stloc first use temp"
+; V10 tmp6 [V10,T05] ( 5, 1.38) byref -> r11 "Inline stloc first use temp"
+; V11 tmp7 [V11,T06] ( 5, 1.27) int -> rbx "Inline stloc first use temp"
; V12 tmp8 [V12,T10] ( 2, 0.63) long -> rsi "Inline stloc first use temp"
; V13 tmp9 [V13,T09] ( 3, 0.64) long -> rsi "Inline stloc first use temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -39,7 +39,7 @@ G_M60590_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr
je SHORT G_M60590_IG03
mov rax, qword ptr [rdx]
cmp rax, rcx
- jne SHORT G_M60590_IG05
+ jne SHORT G_M60590_IG08
;; size=13 bbWeight=1 PerfScore 4.50
G_M60590_IG03: ; bbWeight=0.75, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
mov rax, rdx
@@ -50,8 +50,23 @@ G_M60590_IG04: ; bbWeight=0.75, epilog, nogc, extend
pop rsi
ret
;; size=3 bbWeight=0.75 PerfScore 1.50
-G_M60590_IG05: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref
+G_M60590_IG05: ; bbWeight=25, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
+ mov r8d, 2
+ ;; size=6 bbWeight=25 PerfScore 6.25
+G_M60590_IG06: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ cmp r8d, 1
+ je SHORT G_M60590_IG03
+ test r8d, r8d
+ je G_M60590_IG15
+ ;; size=15 bbWeight=0.25 PerfScore 0.62
+G_M60590_IG07: ; bbWeight=0.25, epilog, nogc, extend
+ pop rbx
+ pop rsi
+ jmp <unknown method>
+ ; gcr arg pop 0
+ ;; size=7 bbWeight=0.25 PerfScore 0.75
+G_M60590_IG08: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref
mov r8, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov r8, gword ptr [r8]
; gcrRegs +[r8]
@@ -66,7 +81,7 @@ G_M60590_IG05: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=000
shrx r10, r10, r9
xor r9d, r9d
;; size=51 bbWeight=0.25 PerfScore 2.06
-G_M60590_IG06: ; bbWeight=0.32, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz
+G_M60590_IG09: ; bbWeight=0.32, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz
lea r11d, [r10+0x01]
movsxd r11, r11d
lea r11, [r11+2*r11]
@@ -76,57 +91,46 @@ G_M60590_IG06: ; bbWeight=0.32, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}
mov rsi, qword ptr [r11+0x08]
and ebx, -2
cmp rsi, rax
- jne SHORT G_M60590_IG11
+ jne SHORT G_M60590_IG12
;; size=30 bbWeight=0.32 PerfScore 2.30
-G_M60590_IG07: ; bbWeight=0.22, gcrefRegs=0004 {rdx}, byrefRegs=0900 {r8 r11}, byref, isz
+G_M60590_IG10: ; bbWeight=0.22, gcrefRegs=0004 {rdx}, byrefRegs=0900 {r8 r11}, byref, isz
mov rsi, rcx
xor rsi, qword ptr [r11+0x10]
cmp rsi, 1
- ja SHORT G_M60590_IG11
+ ja SHORT G_M60590_IG12
;; size=13 bbWeight=0.22 PerfScore 0.97
-G_M60590_IG08: ; bbWeight=0.21, gcrefRegs=0004 {rdx}, byrefRegs=0800 {r11}, byref, isz
+G_M60590_IG11: ; bbWeight=0.21, gcrefRegs=0004 {rdx}, byrefRegs=0800 {r11}, byref, isz
; byrRegs -[r8]
cmp ebx, dword ptr [r11]
- jne SHORT G_M60590_IG13
- ;; size=5 bbWeight=0.21 PerfScore 0.86
-G_M60590_IG09: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r11]
- cmp esi, 1
- je SHORT G_M60590_IG03
- test esi, esi
- je SHORT G_M60590_IG14
- ;; size=9 bbWeight=0.25 PerfScore 0.62
-G_M60590_IG10: ; bbWeight=0.25, epilog, nogc, extend
- pop rbx
- pop rsi
- jmp <unknown method>
- ; gcr arg pop 0
- ;; size=7 bbWeight=0.25 PerfScore 0.75
-G_M60590_IG11: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, gcvars, byref, isz
- ; byrRegs +[r8]
+ jne SHORT G_M60590_IG05
+ jmp SHORT G_M60590_IG14
+ ;; size=7 bbWeight=0.21 PerfScore 1.29
+G_M60590_IG12: ; bbWeight=0.10, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref
+ ; byrRegs -[r11] +[r8]
test ebx, ebx
- je SHORT G_M60590_IG13
- ;; size=4 bbWeight=0.10 PerfScore 0.13
-G_M60590_IG12: ; bbWeight=0.32, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz
+ je G_M60590_IG05
+ ;; size=8 bbWeight=0.10 PerfScore 0.13
+G_M60590_IG13: ; bbWeight=0.32, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz
inc r9d
add r10d, r9d
and r10d, dword ptr [r8+0x04]
cmp r9d, 8
- jl SHORT G_M60590_IG06
- ;; size=16 bbWeight=0.32 PerfScore 1.51
-G_M60590_IG13: ; bbWeight=0.04, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M60590_IG09
+ jmp G_M60590_IG05
+ ;; size=21 bbWeight=0.32 PerfScore 2.14
+G_M60590_IG14: ; bbWeight=0.21, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; byrRegs -[r8]
- mov esi, 2
- jmp SHORT G_M60590_IG09
- ;; size=7 bbWeight=0.04 PerfScore 0.08
-G_M60590_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r8d, esi
+ jmp G_M60590_IG06
+ ;; size=8 bbWeight=0.21 PerfScore 0.48
+G_M60590_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
xor rdx, rdx
; gcrRegs +[rdx]
jmp G_M60590_IG03
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 170, prolog size 2, PerfScore 17.47, instruction count 54, allocated bytes for code 170 (MethodHash=9f861351) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 194, prolog size 2, PerfScore 25.18, instruction count 57, allocated bytes for code 194 (MethodHash=9f861351) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
benchmarks.run_tiered.windows.x64.checked.mch
-19 (-1.78%) : 65941.dasm - System.Collections.Generic.Dictionary2[System.ReadOnlyMemory
1[ushort],System.Canon]:TryInsert(System.ReadOnlyMemory`1[ushort],System.Canon,ubyte):ubyte:this (Tier1)
@@ -8,19 +8,19 @@
; 0 inlinees with PGO data; 15 single block inlinees; 12 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 23, 15.50) ref -> rbx this class-hnd single-def <System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.__Canon]>
+; V00 this [V00,T04] ( 23, 16 ) ref -> rbx this class-hnd single-def <System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.__Canon]>
; V01 arg1 [V01,T00] ( 13, 26 ) byref -> rsi ld-addr-op single-def
-; V02 arg2 [V02,T13] ( 4, 3 ) ref -> [rsp+0xC0] class-hnd single-def <System.__Canon>
-; V03 arg3 [V03,T14] ( 4, 3 ) ubyte -> [rsp+0xC8] single-def
+; V02 arg2 [V02,T14] ( 4, 3 ) ref -> [rsp+0xC0] class-hnd single-def <System.__Canon>
+; V03 arg3 [V03,T13] ( 4, 3.50) ubyte -> rbp single-def
; V04 loc0 [V04,T05] ( 12, 17.50) ref -> r15 class-hnd <<unknown class>>
; V05 loc1 [V05,T12] ( 5, 5.50) ref -> r13 class-hnd single-def <<unknown class>>
; V06 loc2 [V06,T09] ( 8, 12.50) int -> r12
; V07 loc3 [V07,T02] ( 7, 25 ) int -> rdi
-; V08 loc4 [V08,T24] ( 5, 3.50) byref -> [rsp+0x30]
+; V08 loc4 [V08,T25] ( 5, 3.50) byref -> [rsp+0x30]
; V09 loc5 [V09,T01] ( 9, 26 ) int -> [rsp+0x64]
-; V10 loc6 [V10,T25] ( 6, 3 ) int -> r14
+; V10 loc6 [V10,T26] ( 6, 3 ) int -> rbp
; V11 loc7 [V11,T30] ( 5, 2.50) byref -> r15 single-def
-; V12 loc8 [V12,T38] ( 3, 1.50) int -> r14
+; V12 loc8 [V12,T38] ( 3, 1.50) int -> rbp
; V13 OutArgs [V13 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref
; V15 tmp2 [V15,T32] ( 3, 2 ) int -> r12
@@ -31,10 +31,10 @@
;* V20 tmp7 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V21 tmp8 [V21,T39] ( 3, 1.50) int -> r12 "Inline return value spill temp"
;* V22 tmp9 [V22 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V23 tmp10 [V23,T15] ( 4, 4 ) ref -> [rsp+0x28] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V23 tmp10 [V23,T16] ( 4, 4 ) ref -> [rsp+0x28] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
; V24 tmp11 [V24,T11] ( 3, 6 ) int -> rcx "Inlining Arg"
-; V25 tmp12 [V25,T19] ( 2, 4 ) long -> r10 "Inlining Arg"
-; V26 tmp13 [V26,T16] ( 4, 4 ) int -> [rsp+0x60] spill-single-def "Inline stloc first use temp"
+; V25 tmp12 [V25,T20] ( 2, 4 ) long -> r10 "Inlining Arg"
+; V26 tmp13 [V26,T17] ( 4, 4 ) int -> [rsp+0x60] spill-single-def "Inline stloc first use temp"
;* V27 tmp14 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V28 tmp15 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V29 tmp16 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -56,12 +56,12 @@
;* V45 tmp32 [V45 ] ( 0, 0 ) ref -> zero-ref "field V01._object (fldOffset=0x0)" P-INDEP
;* V46 tmp33 [V46 ] ( 0, 0 ) int -> zero-ref "field V01._index (fldOffset=0x8)" P-INDEP
;* V47 tmp34 [V47 ] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0xc)" P-INDEP
-; V48 tmp35 [V48,T17] ( 2, 4 ) ref -> r10 "field V31._object (fldOffset=0x0)" P-INDEP
-; V49 tmp36 [V49,T20] ( 2, 4 ) int -> r9 "field V31._index (fldOffset=0x8)" P-INDEP
-; V50 tmp37 [V50,T21] ( 2, 4 ) int -> rdx "field V31._length (fldOffset=0xc)" P-INDEP
-; V51 tmp38 [V51,T18] ( 2, 4 ) ref -> r11 "field V32._object (fldOffset=0x0)" P-INDEP
-; V52 tmp39 [V52,T22] ( 2, 4 ) int -> rbp "field V32._index (fldOffset=0x8)" P-INDEP
-; V53 tmp40 [V53,T23] ( 2, 4 ) int -> r14 "field V32._length (fldOffset=0xc)" P-INDEP
+; V48 tmp35 [V48,T18] ( 2, 4 ) ref -> r10 "field V31._object (fldOffset=0x0)" P-INDEP
+; V49 tmp36 [V49,T21] ( 2, 4 ) int -> r9 "field V31._index (fldOffset=0x8)" P-INDEP
+; V50 tmp37 [V50,T22] ( 2, 4 ) int -> rdx "field V31._length (fldOffset=0xc)" P-INDEP
+; V51 tmp38 [V51,T19] ( 2, 4 ) ref -> r11 "field V32._object (fldOffset=0x0)" P-INDEP
+; V52 tmp39 [V52,T23] ( 2, 4 ) int -> r14 "field V32._index (fldOffset=0x8)" P-INDEP
+; V53 tmp40 [V53,T24] ( 2, 4 ) int -> rax "field V32._length (fldOffset=0xc)" P-INDEP
;* V54 tmp41 [V54 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlyMemory`1[ushort]>
; V55 tmp42 [V55,T34] ( 2, 2 ) int -> rcx "argument with side effect"
; V56 tmp43 [V56 ] ( 4, 10 ) struct (16) [rsp+0x50] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ReadOnlyMemory`1[ushort]>
@@ -77,7 +77,7 @@
; V66 cse4 [V66,T42] ( 3, 1.50) int -> rcx "CSE - moderate"
; V67 cse5 [V67,T03] ( 10, 22.50) int -> [rsp+0x3C] hoist multi-def "CSE - aggressive"
; V68 cse6 [V68,T10] ( 13, 6.50) ref -> rdx multi-def "CSE - aggressive"
-; V69 cse7 [V69,T26] ( 6, 3 ) int -> rbx multi-def "CSE - moderate"
+; V69 cse7 [V69,T15] ( 6, 4 ) int -> rbx multi-def "CSE - moderate"
;
; Lcl frame size = 104
@@ -96,19 +96,19 @@ G_M54288_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
vmovdqu ymmword ptr [rsp+0x40], ymm4
mov gword ptr [rsp+0xC0], r8
; GC ptr vars +{V02}
- mov dword ptr [rsp+0xC8], r9d
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, rdx
; byrRegs +[rsi]
- ;; size=51 bbWeight=1 PerfScore 14.08
-G_M54288_IG02: ; bbWeight=1, gcVars=0000000000002000 {V02}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz
+ mov ebp, r9d
+ ;; size=46 bbWeight=1 PerfScore 13.33
+G_M54288_IG02: ; bbWeight=1, gcVars=0000000000004000 {V02}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz
cmp gword ptr [rbx+0x08], 0
- mov rbp, gword ptr [rsp+0xC0]
- ; gcrRegs +[rbp]
+ mov r14, gword ptr [rsp+0xC0]
+ ; gcrRegs +[r14]
jne SHORT G_M54288_IG04
;; size=15 bbWeight=1 PerfScore 5.00
-G_M54288_IG03: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0028 {rbx rbp}, byrefRegs=0040 {rsi}, gcvars, byref
+G_M54288_IG03: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, gcvars, byref
; GC ptr vars -{V02}
mov rcx, rbx
; gcrRegs +[rcx]
@@ -117,11 +117,11 @@ G_M54288_IG03: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=002
; gcrRegs -[rcx]
; gcr arg pop 0
;; size=11 bbWeight=0.50 PerfScore 1.75
-G_M54288_IG04: ; bbWeight=1, gcrefRegs=0028 {rbx rbp}, byrefRegs=0040 {rsi}, byref, isz
+G_M54288_IG04: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref, isz
cmp gword ptr [rbx+0x08], 0
jne SHORT G_M54288_IG06
;; size=7 bbWeight=1 PerfScore 4.00
-G_M54288_IG05: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0040 {rsi}, byref
+G_M54288_IG05: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -130,13 +130,13 @@ G_M54288_IG05: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0040
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=0.50 PerfScore 1.75
-G_M54288_IG06: ; bbWeight=1, gcrefRegs=0028 {rbx rbp}, byrefRegs=0040 {rsi}, byref, isz
+G_M54288_IG06: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref, isz
mov r15, gword ptr [rbx+0x10]
; gcrRegs +[r15]
test r15, r15
jne SHORT G_M54288_IG08
;; size=9 bbWeight=1 PerfScore 3.25
-G_M54288_IG07: ; bbWeight=0.50, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0040 {rsi}, byref
+G_M54288_IG07: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0040 {rsi}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
@@ -145,13 +145,13 @@ G_M54288_IG07: ; bbWeight=0.50, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=26 bbWeight=0.50 PerfScore 1.75
-G_M54288_IG08: ; bbWeight=1, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0040 {rsi}, byref, isz
+G_M54288_IG08: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0040 {rsi}, byref, isz
mov r13, gword ptr [rbx+0x18]
; gcrRegs +[r13]
test r13, r13
je SHORT G_M54288_IG11
;; size=9 bbWeight=1 PerfScore 3.25
-G_M54288_IG09: ; bbWeight=0.50, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRegs=0040 {rsi}, byref, nogc
+G_M54288_IG09: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0040 {rsi}, byref, nogc
vmovdqu xmm0, xmmword ptr [rsi]
vmovdqu xmmword ptr [rsp+0x50], xmm0
;; size=10 bbWeight=0.50 PerfScore 2.50
@@ -166,13 +166,13 @@ G_M54288_IG10: ; bbWeight=0.50, isz, extend
mov r12d, eax
jmp SHORT G_M54288_IG13
;; size=26 bbWeight=0.50 PerfScore 3.12
-G_M54288_IG11: ; bbWeight=0.50, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRegs=0040 {rsi}, byref, isz
+G_M54288_IG11: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0040 {rsi}, byref, isz
cmp gword ptr [rsi], 0
jne SHORT G_M54288_IG12
xor r12d, r12d
jmp SHORT G_M54288_IG13
;; size=11 bbWeight=0.50 PerfScore 3.12
-G_M54288_IG12: ; bbWeight=0.50, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRegs=0040 {rsi}, byref
+G_M54288_IG12: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0040 {rsi}, byref
mov rcx, gword ptr [rsi]
; gcrRegs +[rcx]
call <unknown method>
@@ -185,7 +185,7 @@ G_M54288_IG12: ; bbWeight=0.50, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRe
; gcr arg pop 0
mov r12d, eax
;; size=26 bbWeight=0.50 PerfScore 5.25
-G_M54288_IG13: ; bbWeight=1, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRegs=0040 {rsi}, byref, isz
+G_M54288_IG13: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0040 {rsi}, byref, isz
xor edi, edi
mov r8, gword ptr [rbx+0x08]
; gcrRegs +[r8]
@@ -207,7 +207,7 @@ G_M54288_IG13: ; bbWeight=1, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRegs=
cmp edx, r10d
je SHORT G_M54288_IG15
;; size=61 bbWeight=1 PerfScore 40.75
-G_M54288_IG14: ; bbWeight=0.50, gcVars=0000000000008000 {V23}, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRegs=0040 {rsi}, gcvars, byref
+G_M54288_IG14: ; bbWeight=0.50, gcVars=0000000000010000 {V23}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0040 {rsi}, gcvars, byref
; gcrRegs -[r8]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -217,12 +217,12 @@ G_M54288_IG14: ; bbWeight=0.50, gcVars=0000000000008000 {V23}, gcrefRegs=
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=0.50 PerfScore 1.75
-G_M54288_IG15: ; bbWeight=1, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRegs=0040 {rsi}, byref
+G_M54288_IG15: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0040 {rsi}, byref
mov r10d, dword ptr [rsp+0x60]
mov r8, gword ptr [rsp+0x28]
; gcrRegs +[r8]
cmp r10d, dword ptr [r8+0x08]
- jae G_M54288_IG42
+ jae G_M54288_IG43
mov ecx, r10d
lea rax, bword ptr [r8+4*rcx+0x10]
; byrRegs +[rax]
@@ -234,13 +234,13 @@ G_M54288_IG15: ; bbWeight=1, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRegs=
test r13, r13
jne G_M54288_IG27
;; size=48 bbWeight=1 PerfScore 11.75
-G_M54288_IG16: ; bbWeight=0.50, gcVars=0000000001000000 {V08}, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0040 {rsi}, gcvars, byref
+G_M54288_IG16: ; bbWeight=0.50, gcVars=0000000002000000 {V08}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0040 {rsi}, gcvars, byref
; gcrRegs -[r13]
; byrRegs -[rax]
; GC ptr vars -{V23}
mov r13d, dword ptr [r15+0x08]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M54288_IG17: ; bbWeight=4, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0040 {rsi}, byref, isz
+G_M54288_IG17: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0040 {rsi}, byref, isz
cmp r13d, r8d
jbe G_M54288_IG34
mov ecx, r8d
@@ -250,8 +250,8 @@ G_M54288_IG17: ; bbWeight=4, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0040
cmp dword ptr [rcx+0x08], r12d
jne SHORT G_M54288_IG19
;; size=27 bbWeight=4 PerfScore 28.00
-G_M54288_IG18: ; bbWeight=2, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0042 {rcx rsi}, byref, isz
- mov gword ptr [rsp+0xC0], rbp
+G_M54288_IG18: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0042 {rcx rsi}, byref, isz
+ mov gword ptr [rsp+0xC0], r14
; GC ptr vars +{V02}
mov rdx, rcx
; byrRegs +[rdx]
@@ -262,67 +262,67 @@ G_M54288_IG18: ; bbWeight=2, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0042
; byrRegs -[rdx]
mov r11, gword ptr [rsi]
; gcrRegs +[r11]
- mov ebp, dword ptr [rsi+0x08]
- ; gcrRegs -[rbp]
- mov r14d, dword ptr [rsi+0x0C]
+ mov r14d, dword ptr [rsi+0x08]
+ ; gcrRegs -[r14]
+ mov eax, dword ptr [rsi+0x0C]
cmp r10, r11
jne SHORT G_M54288_IG21
- cmp r9d, ebp
+ cmp r9d, r14d
jne SHORT G_M54288_IG20
- cmp edx, r14d
- mov rbp, gword ptr [rsp+0xC0]
- ; gcrRegs +[rbp]
+ cmp edx, eax
+ mov r14, gword ptr [rsp+0xC0]
+ ; gcrRegs +[r14]
je SHORT G_M54288_IG22
- ;; size=55 bbWeight=2 PerfScore 36.00
-G_M54288_IG19: ; bbWeight=4, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0042 {rcx rsi}, byref, isz
+ ;; size=54 bbWeight=2 PerfScore 36.00
+G_M54288_IG19: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0042 {rcx rsi}, byref, isz
; gcrRegs -[r10-r11]
; GC ptr vars -{V02}
mov r8d, dword ptr [rcx+0x0C]
inc edi
cmp r13d, edi
- jb G_M54288_IG43
+ jb G_M54288_IG44
jmp SHORT G_M54288_IG17
...
-25 (-1.75%) : 45622.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
@@ -22,7 +22,7 @@
; V11 loc7 [V11,T09] ( 19, 42 ) ushort -> r13
;* V12 loc8 [V12 ] ( 0, 0 ) int -> zero-ref
; V13 loc9 [V13,T42] ( 3, 6 ) ubyte -> rax
-; V14 loc10 [V14 ] ( 5, 10 ) ubyte -> [rbp+0x30] do-not-enreg[X] addr-exposed ld-addr-op
+; V14 loc10 [V14 ] ( 5, 12 ) ubyte -> [rbp+0x30] do-not-enreg[X] addr-exposed ld-addr-op
; V15 loc11 [V15,T17] ( 7, 14 ) ushort -> r12
;* V16 loc12 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Text.Rune>
; V17 loc13 [V17,T30] ( 4, 8 ) int -> r13
@@ -348,15 +348,17 @@ G_M13139_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr
mov word ptr [rax+2*r8], dx
inc ecx
mov dword ptr [rbp+0x40], ecx
+ mov edi, r12d
jmp G_M13139_IG47
- ;; size=42 bbWeight=2 PerfScore 22.00
+ ;; size=45 bbWeight=2 PerfScore 22.50
G_M13139_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
; byrRegs -[rax]
lea rcx, [rbp+0x38]
call [<unknown method>]
; gcr arg pop 0
+ mov edi, r12d
jmp G_M13139_IG47
- ;; size=15 bbWeight=2 PerfScore 11.00
+ ;; size=18 bbWeight=2 PerfScore 11.50
G_M13139_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
cmp r13d, 127
jg SHORT G_M13139_IG22
@@ -381,9 +383,8 @@ G_M13139_IG20: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr
;; size=13 bbWeight=2 PerfScore 7.50
G_M13139_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
add edi, 2
- mov r12d, edi
jmp G_M13139_IG47
- ;; size=11 bbWeight=2 PerfScore 5.00
+ ;; size=8 bbWeight=2 PerfScore 4.50
G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
mov dword ptr [rsp+0x20], 1
movsxd rcx, edi
@@ -397,9 +398,8 @@ G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr
call [<unknown method>]
; gcr arg pop 0
lea edi, [rax+rdi-0x01]
- mov r12d, edi
jmp G_M13139_IG47
- ;; size=51 bbWeight=2 PerfScore 21.00
+ ;; size=48 bbWeight=2 PerfScore 20.50
G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
mov ecx, dword ptr [rbp+0x40]
mov rax, bword ptr [rbp+0x48]
@@ -411,17 +411,15 @@ G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr
mov word ptr [rax+2*r8], dx
inc ecx
mov dword ptr [rbp+0x40], ecx
- mov r12d, edi
jmp G_M13139_IG47
- ;; size=37 bbWeight=2 PerfScore 18.00
+ ;; size=34 bbWeight=2 PerfScore 17.50
G_M13139_IG24: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
; byrRegs -[rax]
lea rcx, [rbp+0x38]
call [<unknown method>]
; gcr arg pop 0
- mov r12d, edi
jmp G_M13139_IG47
- ;; size=18 bbWeight=2 PerfScore 11.50
+ ;; size=15 bbWeight=2 PerfScore 11.00
G_M13139_IG25: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
cmp r13d, 127
jle G_M13139_IG45
@@ -629,18 +627,15 @@ G_M13139_IG42: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, by
cmp r12d, r13d
jl G_M13139_IG37
;; size=107 bbWeight=16 PerfScore 268.00
-G_M13139_IG43: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+G_M13139_IG43: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
; byrRegs -[rcx]
cmp byte ptr [rbp+0x30], 0
- je SHORT G_M13139_IG44
+ je SHORT G_M13139_IG47
+ ;; size=6 bbWeight=4 PerfScore 12.00
+G_M13139_IG44: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
inc edi
- mov r12d, edi
jmp SHORT G_M13139_IG47
- ;; size=13 bbWeight=2 PerfScore 11.00
-G_M13139_IG44: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
- mov r12d, edi
- jmp SHORT G_M13139_IG47
- ;; size=5 bbWeight=1 PerfScore 2.25
+ ;; size=4 bbWeight=2 PerfScore 4.50
G_M13139_IG45: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
mov ecx, dword ptr [rbp+0x40]
mov rax, bword ptr [rbp+0x48]
@@ -652,22 +647,19 @@ G_M13139_IG45: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr
mov word ptr [rax+2*r8], dx
inc ecx
mov dword ptr [rbp+0x40], ecx
- mov r12d, edi
jmp SHORT G_M13139_IG47
- ;; size=34 bbWeight=2 PerfScore 18.00
+ ;; size=31 bbWeight=2 PerfScore 17.50
G_M13139_IG46: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
; byrRegs -[rax]
lea rcx, [rbp+0x38]
call [<unknown method>]
; gcr arg pop 0
- mov r12d, edi
- ;; size=13 bbWeight=2 PerfScore 7.50
+ ;; size=10 bbWeight=2 PerfScore 7.00
G_M13139_IG47: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
- inc r12d
- cmp r12d, esi
- mov edi, r12d
+ inc edi
+ cmp edi, esi
jl G_M13139_IG07
- ;; size=15 bbWeight=4 PerfScore 7.00
+ ;; size=10 bbWeight=4 PerfScore 6.00
G_M13139_IG48: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r15]
lea rcx, [rbp+0x38]
@@ -714,7 +706,7 @@ G_M13139_IG53: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1428, prolog size 65, PerfScore 1090.08, instruction count 385, allocated bytes for code 1428 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
+; Total bytes of code 1403, prolog size 65, PerfScore 1090.33, instruction count 377, allocated bytes for code 1403 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
; ============================================================
Unwind Info:
-25 (-1.75%) : 21491.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
@@ -22,7 +22,7 @@
; V11 loc7 [V11,T09] ( 19, 42 ) ushort -> r13
;* V12 loc8 [V12 ] ( 0, 0 ) int -> zero-ref
; V13 loc9 [V13,T42] ( 3, 6 ) ubyte -> rax
-; V14 loc10 [V14 ] ( 5, 10 ) ubyte -> [rbp+0x30] do-not-enreg[X] addr-exposed ld-addr-op
+; V14 loc10 [V14 ] ( 5, 12 ) ubyte -> [rbp+0x30] do-not-enreg[X] addr-exposed ld-addr-op
; V15 loc11 [V15,T17] ( 7, 14 ) ushort -> r12
;* V16 loc12 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Text.Rune>
; V17 loc13 [V17,T30] ( 4, 8 ) int -> r13
@@ -349,15 +349,17 @@ G_M13139_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr
mov word ptr [rax+2*r8], dx
inc ecx
mov dword ptr [rbp+0x40], ecx
+ mov edi, r12d
jmp G_M13139_IG47
- ;; size=42 bbWeight=2 PerfScore 22.00
+ ;; size=45 bbWeight=2 PerfScore 22.50
G_M13139_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
; byrRegs -[rax]
lea rcx, [rbp+0x38]
call [<unknown method>]
; gcr arg pop 0
+ mov edi, r12d
jmp G_M13139_IG47
- ;; size=15 bbWeight=2 PerfScore 11.00
+ ;; size=18 bbWeight=2 PerfScore 11.50
G_M13139_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
cmp r13d, 127
jg SHORT G_M13139_IG22
@@ -382,9 +384,8 @@ G_M13139_IG20: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr
;; size=13 bbWeight=2 PerfScore 7.50
G_M13139_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
add edi, 2
- mov r12d, edi
jmp G_M13139_IG47
- ;; size=11 bbWeight=2 PerfScore 5.00
+ ;; size=8 bbWeight=2 PerfScore 4.50
G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
mov dword ptr [rsp+0x20], 1
movsxd rcx, edi
@@ -398,9 +399,8 @@ G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr
call [<unknown method>]
; gcr arg pop 0
lea edi, [rax+rdi-0x01]
- mov r12d, edi
jmp G_M13139_IG47
- ;; size=51 bbWeight=2 PerfScore 21.00
+ ;; size=48 bbWeight=2 PerfScore 20.50
G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
mov ecx, dword ptr [rbp+0x40]
mov rax, bword ptr [rbp+0x48]
@@ -412,17 +412,15 @@ G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr
mov word ptr [rax+2*r8], dx
inc ecx
mov dword ptr [rbp+0x40], ecx
- mov r12d, edi
jmp G_M13139_IG47
- ;; size=37 bbWeight=2 PerfScore 18.00
+ ;; size=34 bbWeight=2 PerfScore 17.50
G_M13139_IG24: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
; byrRegs -[rax]
lea rcx, [rbp+0x38]
call [<unknown method>]
; gcr arg pop 0
- mov r12d, edi
jmp G_M13139_IG47
- ;; size=18 bbWeight=2 PerfScore 11.50
+ ;; size=15 bbWeight=2 PerfScore 11.00
G_M13139_IG25: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
cmp r13d, 127
jle G_M13139_IG45
@@ -630,18 +628,15 @@ G_M13139_IG42: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, by
cmp r12d, r13d
jl G_M13139_IG37
;; size=107 bbWeight=16 PerfScore 268.00
-G_M13139_IG43: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+G_M13139_IG43: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
; byrRegs -[rcx]
cmp byte ptr [rbp+0x30], 0
- je SHORT G_M13139_IG44
+ je SHORT G_M13139_IG47
+ ;; size=6 bbWeight=4 PerfScore 12.00
+G_M13139_IG44: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
inc edi
- mov r12d, edi
jmp SHORT G_M13139_IG47
- ;; size=13 bbWeight=2 PerfScore 11.00
-G_M13139_IG44: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
- mov r12d, edi
- jmp SHORT G_M13139_IG47
- ;; size=5 bbWeight=1 PerfScore 2.25
+ ;; size=4 bbWeight=2 PerfScore 4.50
G_M13139_IG45: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
mov ecx, dword ptr [rbp+0x40]
mov rax, bword ptr [rbp+0x48]
@@ -653,22 +648,19 @@ G_M13139_IG45: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr
mov word ptr [rax+2*r8], dx
inc ecx
mov dword ptr [rbp+0x40], ecx
- mov r12d, edi
jmp SHORT G_M13139_IG47
- ;; size=34 bbWeight=2 PerfScore 18.00
+ ;; size=31 bbWeight=2 PerfScore 17.50
G_M13139_IG46: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
; byrRegs -[rax]
lea rcx, [rbp+0x38]
call [<unknown method>]
; gcr arg pop 0
- mov r12d, edi
- ;; size=13 bbWeight=2 PerfScore 7.50
+ ;; size=10 bbWeight=2 PerfScore 7.00
G_M13139_IG47: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
- inc r12d
- cmp r12d, esi
- mov edi, r12d
+ inc edi
+ cmp edi, esi
jl G_M13139_IG07
- ;; size=15 bbWeight=4 PerfScore 7.00
+ ;; size=10 bbWeight=4 PerfScore 6.00
G_M13139_IG48: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r15]
lea rcx, [rbp+0x38]
@@ -715,7 +707,7 @@ G_M13139_IG53: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1428, prolog size 65, PerfScore 1092.08, instruction count 386, allocated bytes for code 1428 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
+; Total bytes of code 1403, prolog size 65, PerfScore 1092.33, instruction count 378, allocated bytes for code 1403 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
; ============================================================
Unwind Info:
+23 (+0.75%) : 48350.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
@@ -8,25 +8,25 @@
; Final local variable assignments
;
; V00 arg0 [V00,T08] ( 48,189.10) ref -> rcx class-hnd single-def <double[][]>
-; V01 arg1 [V01,T18] ( 32, 85.76) int -> rdx single-def
-; V02 arg2 [V02,T47] ( 7, 6.54) ref -> r8 class-hnd single-def <int[]>
-; V03 arg3 [V03,T46] ( 7, 7 ) byref -> r9 single-def
+; V01 arg1 [V01,T18] ( 32, 86.26) int -> rdx single-def
+; V02 arg2 [V02,T51] ( 7, 6.54) ref -> [rsp+0x80] class-hnd single-def <int[]>
+; V03 arg3 [V03,T47] ( 7, 11 ) byref -> r9 single-def
; V04 loc0 [V04,T65] ( 20, 64.00) double -> mm0
; V05 loc1 [V05,T63] ( 31,336.00) double -> registers
-; V06 loc2 [V06,T64] ( 24, 94.00) double -> mm1
+; V06 loc2 [V06,T64] ( 24, 98.00) double -> mm1
; V07 loc3 [V07,T04] (105,379.26) int -> r11
-; V08 loc4 [V08,T01] (116,444.00) int -> rsi
+; V08 loc4 [V08,T01] (116,448.54) int -> rsi
; V09 loc5 [V09,T00] ( 85,623.32) int -> r13
-; V10 loc6 [V10,T34] ( 24, 25.68) int -> r10
+; V10 loc6 [V10,T33] ( 24, 29.72) int -> r10
;* V11 loc7 [V11,T70] ( 0, 0 ) double -> zero-ref single-def
; V12 OutArgs [V12 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V13 tmp1 [V13,T20] ( 8, 64.64) ref -> r14 class-hnd "Strict ordering of exceptions for Array store" <double[]>
; V14 tmp2 [V14,T66] ( 6, 64.00) double -> mm0 "Strict ordering of exceptions for Array store"
; V15 tmp3 [V15,T13] ( 9, 96.00) ref -> r15 class-hnd "Strict ordering of exceptions for Array store" <double[]>
; V16 tmp4 [V16,T67] ( 6, 64.00) double -> mm2 "Strict ordering of exceptions for Array store"
-; V17 tmp5 [V17,T69] ( 4, 8 ) double -> mm3 "Strict ordering of exceptions for Array store"
+; V17 tmp5 [V17,T69] ( 4, 16 ) double -> mm3 "Strict ordering of exceptions for Array store"
; V18 tmp6 [V18,T21] ( 8, 64.64) ref -> rbp "arr expr"
-;* V19 tmp7 [V19,T40] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V19 tmp7 [V19,T46] ( 0, 0 ) ref -> zero-ref "arr expr"
; V20 tmp8 [V20,T35] ( 6, 24 ) ref -> rax "arr expr"
; V21 tmp9 [V21,T14] ( 9, 96.00) ref -> rax "arr expr"
; V22 tmp10 [V22,T05] ( 9,257.28) ref -> rax "arr expr"
@@ -40,15 +40,15 @@
; V30 tmp18 [V30,T22] ( 8, 64.64) ref -> r15 "arr expr"
; V31 tmp19 [V31,T23] ( 8, 64.64) ref -> registers "arr expr"
; V32 tmp20 [V32,T24] ( 8, 64.64) ref -> registers "arr expr"
-; V33 tmp21 [V33,T41] ( 6, 12 ) ref -> r11 "arr expr"
-; V34 tmp22 [V34,T48] ( 5, 8.04) ref -> r11 "arr expr"
-; V35 tmp23 [V35,T49] ( 5, 8.04) ref -> r11 "arr expr"
-; V36 tmp24 [V36,T50] ( 5, 8.04) ref -> rax "arr expr"
-; V37 tmp25 [V37,T36] ( 6, 24 ) ref -> r11 "arr expr"
-; V38 tmp26 [V38,T51] ( 5, 8.04) ref -> r11 "arr expr"
-; V39 tmp27 [V39,T52] ( 5, 8.04) ref -> rax "arr expr"
+; V33 tmp21 [V33,T36] ( 6, 24 ) ref -> registers "arr expr"
+; V34 tmp22 [V34,T43] ( 5, 16.08) ref -> registers "arr expr"
+; V35 tmp23 [V35,T44] ( 5, 16.08) ref -> registers "arr expr"
+; V36 tmp24 [V36,T45] ( 5, 16.08) ref -> rax "arr expr"
+; V37 tmp25 [V37,T37] ( 6, 24 ) ref -> rax "arr expr"
+; V38 tmp26 [V38,T52] ( 5, 8.04) ref -> rax "arr expr"
+; V39 tmp27 [V39,T53] ( 5, 8.04) ref -> r11 "arr expr"
; V40 tmp28 [V40,T17] ( 9, 96.00) ref -> rax "arr expr"
-; V41 cse0 [V41,T38] ( 5, 17.00) ref -> r12 hoist multi-def "CSE - moderate"
+; V41 cse0 [V41,T41] ( 5, 17.00) ref -> r12 hoist multi-def "CSE - moderate"
; V42 cse1 [V42,T56] ( 4, 1.11) ref -> r14 "CSE - moderate"
; V43 cse2 [V43,T57] ( 4, 1.11) ref -> r12 "CSE - moderate"
; V44 cse3 [V44,T61] ( 2, 0.20) ref -> rax hoist "CSE - conservative"
@@ -57,32 +57,32 @@
; V47 cse6 [V47,T72] ( 3, 0.40) double -> mm1 "CSE - conservative"
; V48 cse7 [V48,T12] ( 6,113.69) ref -> r14 "CSE - aggressive"
; V49 cse8 [V49,T11] ( 7,117.61) ref -> r12 "CSE - aggressive"
-; V50 cse9 [V50,T37] ( 7, 19.66) ref -> r11 multi-def "CSE - moderate"
+; V50 cse9 [V50,T40] ( 7, 19.66) ref -> r11 multi-def "CSE - moderate"
; V51 cse10 [V51,T30] ( 8, 34.66) ref -> rax hoist multi-def "CSE - moderate"
-; V52 cse11 [V52,T33] ( 6, 18.82) ref -> rax hoist multi-def "CSE - moderate"
+; V52 cse11 [V52,T34] ( 6, 18.82) ref -> rax hoist multi-def "CSE - moderate"
; V53 cse12 [V53,T28] ( 3, 47.04) ref -> rax "CSE - moderate"
; V54 cse13 [V54,T68] ( 3, 39.20) double -> mm1 "CSE - moderate"
-; V55 cse14 [V55,T42] ( 4, 11.88) ref -> rax "CSE - moderate"
-; V56 cse15 [V56,T39] ( 4, 16.84) ref -> r15 hoist multi-def "CSE - moderate"
-; V57 cse16 [V57,T44] ( 5, 9.90) ref -> rax "CSE - moderate"
+; V55 cse14 [V55,T48] ( 4, 11.88) ref -> r11 "CSE - moderate"
+; V56 cse15 [V56,T42] ( 4, 16.84) ref -> r15 hoist multi-def "CSE - moderate"
+; V57 cse16 [V57,T38] ( 5, 19.80) ref -> rax "CSE - moderate"
; V58 cse17 [V58,T31] ( 47, 33.60) int -> rbx hoist multi-def "CSE - moderate"
; V59 cse18 [V59,T32] ( 3, 31.99) int -> r15 "CSE - moderate"
; V60 cse19 [V60,T27] ( 4, 47.67) int -> r14 "CSE - moderate"
; V61 cse20 [V61,T29] ( 3, 47.04) int -> r15 "CSE - moderate"
-; V62 cse21 [V62,T45] ( 5, 9.90) int -> r13 "CSE - moderate"
-; V63 cse22 [V63,T55] ( 4, 4.29) int -> [rsp+0x34] hoist multi-def "CSE - moderate"
-; V64 cse23 [V64,T43] ( 4, 11.88) int -> r14 "CSE - moderate"
+; V62 cse21 [V62,T39] ( 5, 19.80) int -> r11 "CSE - moderate"
+; V63 cse22 [V63,T55] ( 4, 4.29) int -> [rsp+0x24] hoist multi-def "CSE - moderate"
+; V64 cse23 [V64,T49] ( 4, 11.88) int -> r13 "CSE - moderate"
; V65 cse24 [V65,T59] ( 3, 0.95) int -> r15 "CSE - moderate"
-; V66 cse25 [V66,T58] ( 4, 1.11) int -> [rsp+0x30] spill-single-def "CSE - moderate"
-; V67 cse26 [V67,T07] ( 34,249.52) long -> rbp hoist multi-def "CSE - aggressive"
+; V66 cse25 [V66,T58] ( 4, 1.11) int -> [rsp+0x20] spill-single-def "CSE - moderate"
+; V67 cse26 [V67,T07] ( 34,253.48) long -> rbp hoist multi-def "CSE - aggressive"
; V68 cse27 [V68,T09] ( 3,186.30) long -> r15 "CSE - aggressive"
; V69 cse28 [V69,T10] ( 3,186.30) long -> rdi "CSE - aggressive"
; V70 cse29 [V70,T19] ( 5, 78.41) long -> rdi "CSE - moderate"
-; V71 cse30 [V71,T53] ( 6, 5.96) long -> [rsp+0x28] hoist multi-def "CSE - moderate"
+; V71 cse30 [V71,T50] ( 6, 9.92) long -> r14 hoist multi-def "CSE - moderate"
; V72 cse31 [V72,T54] ( 5, 5.96) long -> rdi hoist multi-def "CSE - moderate"
; V73 cse32 [V73,T62] ( 3, 0.12) long -> rdi hoist "CSE - conservative"
;
-; Lcl frame size = 56
+; Lcl frame size = 40
G_M50743_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -93,7 +93,7 @@ G_M50743_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 56
+ sub rsp, 40
vzeroupper
;; size=19 bbWeight=1 PerfScore 9.25
G_M50743_IG02: ; bbWeight=1, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
@@ -158,7 +158,7 @@ G_M50743_IG11: ; bbWeight=0.16, gcrefRegs=0103 {rax rcx r8}, byrefRegs=02
mov rbp, rax
; gcrRegs +[rbp]
cmp esi, dword ptr [rbp+0x08]
- jae G_M50743_IG112
+ jae G_M50743_IG113
mov r14d, esi
vmovsd xmm1, qword ptr [rbp+8*r14+0x10]
vandps xmm2, xmm1, xmmword ptr [reloc @RWD00]
@@ -179,14 +179,14 @@ G_M50743_IG14: ; bbWeight=3.96, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {
vxorps xmm1, xmm1, xmm1
vucomisd xmm0, xmm1
jp SHORT G_M50743_IG15
- je G_M50743_IG110
+ je G_M50743_IG111
;; size=16 bbWeight=3.96 PerfScore 17.16
G_M50743_IG15: ; bbWeight=3.96, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rax, gword ptr [rax]
; gcrRegs +[rax]
cmp r11d, dword ptr [rax+0x08]
- jae G_M50743_IG112
+ jae G_M50743_IG113
vmovsd xmm1, qword ptr [reloc @RWD16]
vdivsd xmm0, xmm1, xmm0
vmovsd qword ptr [rax+8*rdi+0x10], xmm0
@@ -194,17 +194,17 @@ G_M50743_IG15: ; bbWeight=3.96, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {
cmp r11d, edx
jl G_M50743_IG04
;; size=53 bbWeight=3.96 PerfScore 98.01
-G_M50743_IG16: ; bbWeight=0.50, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
+G_M50743_IG16: ; bbWeight=1, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
; gcrRegs -[rax]
jmp G_M50743_IG23
- ;; size=5 bbWeight=0.50 PerfScore 1.00
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M50743_IG17: ; bbWeight=0.04, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
vxorps xmm0, xmm0, xmm0
xor esi, esi
mov ebx, dword ptr [rcx+0x08]
mov edi, r11d
cmp r11d, ebx
- jae G_M50743_IG112
+ jae G_M50743_IG113
mov rax, gword ptr [rcx+8*rdi+0x10]
; gcrRegs +[rax]
;; size=26 bbWeight=0.04 PerfScore 0.24
@@ -212,7 +212,7 @@ G_M50743_IG18: ; bbWeight=0.16, gcrefRegs=0103 {rax rcx r8}, byrefRegs=02
mov rbp, rax
; gcrRegs +[rbp]
cmp esi, dword ptr [rbp+0x08]
- jae G_M50743_IG112
+ jae G_M50743_IG113
mov ebx, esi
vmovsd xmm1, qword ptr [rbp+8*rbx+0x10]
vandps xmm2, xmm1, xmmword ptr [reloc @RWD00]
@@ -233,14 +233,14 @@ G_M50743_IG21: ; bbWeight=0.04, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {
vxorps xmm1, xmm1, xmm1
vucomisd xmm0, xmm1
jp SHORT G_M50743_IG22
- je G_M50743_IG110
+ je G_M50743_IG111
;; size=16 bbWeight=0.04 PerfScore 0.17
G_M50743_IG22: ; bbWeight=0.04, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
mov rax, 0xD1FFAB1E ; static handle
mov rax, gword ptr [rax]
; gcrRegs +[rax]
cmp r11d, dword ptr [rax+0x08]
- jae G_M50743_IG112
+ jae G_M50743_IG113
vmovsd xmm1, qword ptr [reloc @RWD16]
vdivsd xmm0, xmm1, xmm0
vmovsd qword ptr [rax+8*rdi+0x10], xmm0
@@ -248,40 +248,43 @@ G_M50743_IG22: ; bbWeight=0.04, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {
cmp r11d, edx
jl G_M50743_IG17
;; size=53 bbWeight=0.04 PerfScore 0.99
-G_M50743_IG23: ; bbWeight=0.50, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
+G_M50743_IG23: ; bbWeight=1, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
; gcrRegs -[rax]
xor esi, esi
test edx, edx
- jle G_M50743_IG108
- ;; size=10 bbWeight=0.50 PerfScore 0.75
+ jle G_M50743_IG109
+ ;; size=10 bbWeight=1 PerfScore 1.50
G_M50743_IG24: ; bbWeight=0.25, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
test rcx, rcx
- je G_M50743_IG81
+ je G_M50743_IG82
test r8, r8
- je G_M50743_IG81
+ je G_M50743_IG82
mov ebx, dword ptr [rcx+0x08]
cmp ebx, edx
- jl G_M50743_IG81
+ jl G_M50743_IG82
+ mov gword ptr [rsp+0x80], r8
+ ; GC ptr vars +{V02}
cmp dword ptr [r8+0x08], edx
- jl G_M50743_IG81
+ jl G_M50743_IG33
lea edi, [rdx-0x01]
- mov dword ptr [rsp+0x34], edi
- ;; size=46 bbWeight=0.25 PerfScore 2.81
-G_M50743_IG25: ; bbWeight=3.96, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
+ mov dword ptr [rsp+0x24], edi
+ ;; size=54 bbWeight=0.25 PerfScore 3.06
+G_M50743_IG25: ; bbWeight=3.96, gcVars=00000000000000000008000000000000 {V02}, gcrefRegs=0002 {rcx}, byrefRegs=0200 {r9}, gcvars, byref
+ ; gcrRegs -[r8]
test esi, esi
- je G_M50743_IG41
+ je G_M50743_IG42
;; size=8 bbWeight=3.96 PerfScore 4.95
-G_M50743_IG26: ; bbWeight=1.98, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
+G_M50743_IG26: ; bbWeight=1.98, gcrefRegs=0002 {rcx}, byrefRegs=0200 {r9}, byref
xor r11d, r11d
test esi, esi
- jle G_M50743_IG41
+ jle G_M50743_IG42
;; size=11 bbWeight=1.98 PerfScore 2.97
-G_M50743_IG27: ; bbWeight=0.99, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
+G_M50743_IG27: ; bbWeight=0.99, gcrefRegs=0002 {rcx}, byrefRegs=0200 {r9}, byref
cmp ebx, esi
- jl G_M50743_IG36
+ jl G_M50743_IG37
mov ebp, esi
;; size=10 bbWeight=0.99 PerfScore 1.49
-G_M50743_IG28: ; bbWeight=15.68, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
+G_M50743_IG28: ; bbWeight=15.68, gcrefRegs=0002 {rcx}, byrefRegs=0200 {r9}, byref
mov eax, r11d
mov r14, gword ptr [rcx+8*rax+0x10]
; gcrRegs +[r14]
@@ -289,26 +292,26 @@ G_M50743_IG28: ; bbWeight=15.68, gcrefRegs=0102 {rcx r8}, byrefRegs=0200
; gcrRegs +[rax]
mov r15d, dword ptr [rax+0x08]
cmp esi, r15d
- jae G_M50743_IG112
...
+10 (+3.21%) : 74014.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier1)
@@ -9,33 +9,32 @@
; Final local variable assignments
;
; V00 arg0 [V00,T07] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 loc0 [V01,T11] ( 5, 3.50) int -> rdi
-; V02 loc1 [V02,T00] ( 17, 33 ) int -> rbp
-; V03 loc2 [V03,T12] ( 4, 3.50) ubyte -> r14
-; V04 loc3 [V04,T17] ( 3, 2.50) ubyte -> rax
+; V01 loc0 [V01,T10] ( 5, 3.50) int -> rdi
+; V02 loc1 [V02,T00] ( 19, 34 ) int -> rbp
+; V03 loc2 [V03,T11] ( 4, 3.50) ubyte -> r14
+; V04 loc3 [V04,T16] ( 3, 2.50) ubyte -> rax
; V05 loc4 [V05,T05] ( 4, 12.50) int -> rax
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T18] ( 3, 2 ) int -> rax
-; V08 tmp2 [V08,T19] ( 3, 1.50) int -> rbp
+; V07 tmp1 [V07,T17] ( 3, 2 ) int -> rax
+; V08 tmp2 [V08,T18] ( 3, 1.50) int -> rbp
; V09 tmp3 [V09,T03] ( 2, 16 ) int -> rax "dup spill"
-;* V10 tmp4 [V10,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp5 [V11,T13] ( 3, 3 ) ushort -> rcx "Inlining Arg"
-;* V12 tmp6 [V12,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T14] ( 3, 3 ) ushort -> rax "Inlining Arg"
-;* V14 tmp8 [V14,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp4 [V10,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V11 tmp5 [V11,T12] ( 3, 3 ) ushort -> rcx "Inlining Arg"
+;* V12 tmp6 [V12,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V13 tmp7 [V13,T13] ( 3, 3 ) ushort -> rax "Inlining Arg"
+;* V14 tmp8 [V14,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp9 [V15,T01] ( 3, 24 ) ushort -> rcx "Inlining Arg"
-;* V16 tmp10 [V16,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp10 [V16,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp11 [V17,T02] ( 3, 24 ) ushort -> rax "Inlining Arg"
-;* V18 tmp12 [V18,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 tmp13 [V19,T15] ( 3, 3 ) ushort -> rcx "Inlining Arg"
+;* V18 tmp12 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V19 tmp13 [V19,T14] ( 3, 3 ) ushort -> rax "Inlining Arg"
;* V20 tmp14 [V20 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V21 tmp15 [V21,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V22 tmp16 [V22,T16] ( 3, 3 ) ushort -> rax "Inlining Arg"
-; V23 tmp17 [V23,T04] ( 10, 13 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp18 [V24,T06] ( 6, 11 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
+;* V21 tmp15 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V22 tmp16 [V22,T15] ( 3, 3 ) ushort -> rax "Inlining Arg"
+; V23 tmp17 [V23,T04] ( 11, 13.50) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp18 [V24,T06] ( 7, 15 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
;* V25 tmp19 [V25 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
; V26 tmp20 [V26 ] ( 6, 9 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V27 cse0 [V27,T08] ( 3, 8.50) int -> rcx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -121,7 +120,7 @@ G_M17180_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=2 bbWeight=2 PerfScore 0.50
G_M17180_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp ebp, esi
- jge G_M17180_IG23
+ jge G_M17180_IG24
mov ecx, ebp
movzx rcx, word ptr [rbx+2*rcx]
cmp ecx, 92
@@ -136,16 +135,16 @@ G_M17180_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=6 bbWeight=4 PerfScore 6.00
G_M17180_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rbx]
- jmp SHORT G_M17180_IG23
+ jmp SHORT G_M17180_IG24
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M17180_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov ebp, 1
- jmp SHORT G_M17180_IG23
+ jmp SHORT G_M17180_IG24
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M17180_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs +[rbx]
test r14d, r14d
- je SHORT G_M17180_IG21
+ je SHORT G_M17180_IG22
mov ebp, 4
jmp SHORT G_M17180_IG18
;; size=12 bbWeight=0.50 PerfScore 1.75
@@ -154,55 +153,59 @@ G_M17180_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=2 bbWeight=2 PerfScore 0.50
G_M17180_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp ebp, esi
- jge SHORT G_M17180_IG23
+ jge SHORT G_M17180_IG20
mov eax, ebp
- movzx rcx, word ptr [rbx+2*rax]
- mov eax, ecx
+ movzx rax, word ptr [rbx+2*rax]
cmp eax, 92
- je SHORT G_M17180_IG19
+ je SHORT G_M17180_IG20
cmp eax, 47
jne SHORT G_M17180_IG17
- ;; size=22 bbWeight=4 PerfScore 25.00
-G_M17180_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rbx]
- cmp ebp, 4
- jle SHORT G_M17180_IG23
- ;; size=5 bbWeight=4 PerfScore 5.00
-G_M17180_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 92
- je SHORT G_M17180_IG22
- cmp ecx, 47
- jne SHORT G_M17180_IG23
- jmp SHORT G_M17180_IG22
- ;; size=12 bbWeight=0.50 PerfScore 2.25
+ ;; size=20 bbWeight=4 PerfScore 24.00
+G_M17180_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ jmp SHORT G_M17180_IG21
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M17180_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp ebp, esi
+ jge SHORT G_M17180_IG24
+ ;; size=4 bbWeight=4 PerfScore 5.00
G_M17180_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- ; byrRegs +[rbx]
+ cmp ebp, 4
+ jle SHORT G_M17180_IG24
+ mov eax, ebp
+ movzx rax, word ptr [rbx+2*rax]
+ cmp eax, 92
+ je SHORT G_M17180_IG23
+ cmp eax, 47
+ jne SHORT G_M17180_IG24
+ jmp SHORT G_M17180_IG23
+ ;; size=23 bbWeight=0.50 PerfScore 4.00
+G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp esi, 2
- jl SHORT G_M17180_IG23
+ jl SHORT G_M17180_IG24
cmp word ptr [rbx+0x02], 58
- jne SHORT G_M17180_IG23
+ jne SHORT G_M17180_IG24
movzx rax, word ptr [rbx]
or eax, 32
add eax, -97
cmp eax, 25
- ja SHORT G_M17180_IG23
+ ja SHORT G_M17180_IG24
mov ebp, 2
cmp esi, 2
- jle SHORT G_M17180_IG23
+ jle SHORT G_M17180_IG24
movzx rax, word ptr [rbx+0x04]
cmp eax, 92
- je SHORT G_M17180_IG22
+ je SHORT G_M17180_IG23
cmp eax, 47
- jne SHORT G_M17180_IG23
+ jne SHORT G_M17180_IG24
;; size=50 bbWeight=0.50 PerfScore 7.50
-G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
inc ebp
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M17180_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, ebp
;; size=2 bbWeight=1 PerfScore 0.25
-G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M17180_IG25: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -212,7 +215,7 @@ G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
ret
;; size=11 bbWeight=1 PerfScore 3.75
-; Total bytes of code 312, prolog size 17, PerfScore 112.38, instruction count 114, allocated bytes for code 312 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier1)
+; Total bytes of code 322, prolog size 17, PerfScore 114.12, instruction count 118, allocated bytes for code 322 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier1)
; ============================================================
Unwind Info:
+23 (+3.45%) : 16095.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
@@ -9,8 +9,8 @@
; 0 inlinees with PGO data; 11 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 RetBuf [V00,T14] ( 6, 6 ) byref -> [rsp+0x1D0] single-def tier0-frame
-; V01 arg0 [V01,T15] ( 5, 5.04) byref -> rdx ld-addr-op single-def
+; V00 RetBuf [V00,T15] ( 6, 6 ) byref -> [rsp+0x1D0] single-def tier0-frame
+; V01 arg0 [V01,T17] ( 5, 5.04) byref -> rdx ld-addr-op single-def
;* V02 arg1 [V02 ] ( 0, 0 ) ubyte -> zero-ref single-def
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
; V04 loc1 [V04,T28] ( 1, 1 ) long -> [rsp+0x178] tier0-frame
@@ -18,15 +18,15 @@
; V06 loc3 [V06,T25] ( 3, 1.02) struct (16) [rsp+0x160] do-not-enreg[SF] ld-addr-op tier0-frame <System.Span`1[int]>
; V07 loc4 [V07,T26] ( 3, 1.02) struct (16) [rsp+0x150] do-not-enreg[SF] ld-addr-op tier0-frame <System.Span`1[int]>
; V08 loc5 [V08,T06] ( 5, 33 ) ref -> rsi class-hnd exact <int[]>
-; V09 loc6 [V09,T20] ( 4, 4 ) ref -> [rsp+0x140] class-hnd exact tier0-frame <System.Collections.Frozen.FrozenHashTable+Bucket[]>
+; V09 loc6 [V09,T19] ( 4, 6 ) ref -> [rsp+0x140] class-hnd exact tier0-frame <System.Collections.Frozen.FrozenHashTable+Bucket[]>
; V10 loc7 [V10,T01] ( 12, 82 ) int -> [rsp+0x13C] tier0-frame
;* V11 loc8 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 loc9 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 loc10 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 loc11 [V14 ] ( 0, 0 ) byref -> zero-ref
-; V15 loc12 [V15,T07] ( 15, 23.52) int -> [rsp+0x124] tier0-frame
-; V16 loc13 [V16,T12] ( 10, 14 ) int -> registers
-; V17 loc14 [V17,T05] ( 8, 36 ) int -> r13
+; V15 loc12 [V15,T07] ( 15, 25.54) int -> [rsp+0x124] tier0-frame
+; V16 loc13 [V16,T13] ( 10, 16 ) int -> registers
+; V17 loc14 [V17,T05] ( 8, 38 ) int -> r13
; V18 loc15 [V18,T00] ( 13, 82.16) int -> r15
; V19 loc16 [V19,T03] ( 6, 48 ) byref -> registers
; V20 OutArgs [V20 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -48,8 +48,8 @@
;* V36 tmp16 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V37 tmp17 [V37 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP
;* V38 tmp18 [V38 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
-; V39 tmp19 [V39,T17] ( 6, 6 ) int -> rax "field V23.StartIndex (fldOffset=0x0)" P-INDEP
-; V40 tmp20 [V40,T21] ( 4, 4 ) int -> r15 "field V23.EndIndex (fldOffset=0x4)" P-INDEP
+; V39 tmp19 [V39,T14] ( 6, 12 ) int -> rax "field V23.StartIndex (fldOffset=0x0)" P-INDEP
+; V40 tmp20 [V40,T16] ( 4, 8 ) int -> r15 "field V23.EndIndex (fldOffset=0x4)" P-INDEP
; V41 tmp21 [V41,T22] ( 2, 2 ) ref -> rdx single-def "field V24._buckets (fldOffset=0x0)" P-INDEP
; V42 tmp22 [V42,T23] ( 2, 2 ) ref -> rsi single-def "field V24.<HashCodes>k__BackingField (fldOffset=0x8)" P-INDEP
; V43 tmp23 [V43,T24] ( 2, 2 ) long -> rdi "field V24._fastModMultiplier (fldOffset=0x10)" P-INDEP
@@ -61,16 +61,16 @@
;* V49 tmp29 [V49 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
;* V50 tmp30 [V50 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP
;* V51 tmp31 [V51 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
-; V52 tmp32 [V52,T08] ( 3, 16.01) byref -> rcx single-def "V01.[000..008)"
-; V53 tmp33 [V53,T10] ( 3, 16.01) int -> rdx "V01.[008..012)"
-; V54 tmp34 [V54,T18] ( 3, 4.01) byref -> [rsp+0x28] spill-single-def "V06.[000..008)"
-; V55 tmp35 [V55,T19] ( 3, 4.01) int -> [rsp+0x34] spill-single-def "V06.[008..012)"
-; V56 tmp36 [V56,T09] ( 3, 16.01) byref -> r9 single-def "V07.[000..008)"
-; V57 tmp37 [V57,T11] ( 3, 16.01) int -> r11 "V07.[008..012)"
+; V52 tmp32 [V52,T09] ( 3, 16.01) byref -> rcx single-def "V01.[000..008)"
+; V53 tmp33 [V53,T11] ( 3, 16.01) int -> rdx "V01.[008..012)"
+; V54 tmp34 [V54,T20] ( 3, 4.01) byref -> [rsp+0x28] spill-single-def "V06.[000..008)"
+; V55 tmp35 [V55,T21] ( 3, 4.01) int -> [rsp+0x34] spill-single-def "V06.[008..012)"
+; V56 tmp36 [V56,T10] ( 3, 16.01) byref -> r9 single-def "V07.[000..008)"
+; V57 tmp37 [V57,T12] ( 3, 16.01) int -> r11 "V07.[008..012)"
;* V58 tmp38 [V58 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[XSF] addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[int]>
-; V59 tmp39 [V59,T13] ( 6, 12 ) byref -> r13 "BlockOp address local"
-; V60 cse0 [V60,T16] ( 5, 6.02) int -> rbp "CSE - moderate"
-; V61 cse1 [V61,T04] ( 3, 47.52) long -> rdi "CSE - aggressive"
+; V59 tmp39 [V59,T08] ( 6, 24 ) byref -> r13 "BlockOp address local"
+; V60 cse0 [V60,T18] ( 5, 6.04) int -> rbp "CSE - moderate"
+; V61 cse1 [V61,T04] ( 3, 47.52) long -> r8 "CSE - aggressive"
;
; Lcl frame size = 56
@@ -88,8 +88,8 @@ G_M19183_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov rdi, gword ptr [rsp+0x140]
; gcrRegs +[rdi]
;; size=68 bbWeight=0.01 PerfScore 0.11
-G_M19183_IG02: ; bbWeight=0.01, gcVars=0000000008004000 {V00 V05}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0004 {rdx}, gcvars, byref
- ; GC ptr vars +{V00 V05}
+G_M19183_IG02: ; bbWeight=0.01, gcVars=0000000008008000 {V00 V05}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0004 {rdx}, gcvars, byref
+ ; GC ptr vars +{V00 V05 V15}
mov rcx, bword ptr [rdx]
; byrRegs +[rcx]
mov edx, dword ptr [rdx+0x08]
@@ -114,9 +114,9 @@ G_M19183_IG02: ; bbWeight=0.01, gcVars=0000000008004000 {V00 V05}, gcrefR
cmp ebp, r14d
jle G_M19183_IG15
;; size=92 bbWeight=0.01 PerfScore 0.17
-G_M19183_IG03: ; bbWeight=0.50, gcVars=0000000000140000 {V09 V54}, gcrefRegs=0041 {rax rsi}, byrefRegs=030A {rcx rbx r8 r9}, gcvars, byref
+G_M19183_IG03: ; bbWeight=0.50, gcVars=0000000000180000 {V09 V54}, gcrefRegs=0041 {rax rsi}, byrefRegs=030A {rcx rbx r8 r9}, gcvars, byref
; gcrRegs -[rdi]
- ; GC ptr vars -{V00 V05}
+ ; GC ptr vars -{V00 V05 V15}
test r14d, r14d
jl G_M19183_IG10
;; size=9 bbWeight=0.50 PerfScore 0.62
@@ -139,29 +139,29 @@ G_M19183_IG05: ; bbWeight=1.98, gcrefRegs=0041 {rax rsi}, byrefRegs=020A
mov bword ptr [rsp+0x1D0], rbx
; GC ptr vars +{V00}
;; size=30 bbWeight=1.98 PerfScore 6.93
-G_M19183_IG06: ; bbWeight=15.84, gcVars=0000000008144000 {V00 V05 V09 V54}, gcrefRegs=0040 {rsi}, byrefRegs=0202 {rcx r9}, gcvars, byref, isz
+G_M19183_IG06: ; bbWeight=15.84, gcVars=0000000008188000 {V00 V05 V09 V54}, gcrefRegs=0040 {rsi}, byrefRegs=0202 {rcx r9}, gcvars, byref, isz
; byrRegs -[rbx]
cmp r15d, edx
jae G_M19183_IG17
- mov edi, r15d
- lea r8, bword ptr [rcx+4*rdi]
- ; byrRegs +[r8]
- mov r10d, dword ptr [r8]
+ mov r8d, r15d
+ lea r10, bword ptr [rcx+4*r8]
+ ; byrRegs +[r10]
+ mov ebx, dword ptr [r10]
cmp r12d, dword ptr [rsi+0x08]
jae G_M19183_IG17
- mov ebx, r12d
- mov dword ptr [rsi+4*rbx+0x10], r10d
- mov dword ptr [r8], r12d
+ mov edi, r12d
+ mov dword ptr [rsi+4*rdi+0x10], ebx
+ mov dword ptr [r10], r12d
inc r12d
inc r13d
cmp r15d, r11d
jae G_M19183_IG17
- mov r15d, dword ptr [r9+4*rdi]
+ mov r15d, dword ptr [r9+4*r8]
test r15d, r15d
jge SHORT G_M19183_IG06
- ;; size=64 bbWeight=15.84 PerfScore 241.56
-G_M19183_IG07: ; bbWeight=1.98, gcrefRegs=0040 {rsi}, byrefRegs=0202 {rcx r9}, byref
- ; byrRegs -[r8]
+ ;; size=63 bbWeight=15.84 PerfScore 241.56
+G_M19183_IG07: ; bbWeight=3.96, gcrefRegs=0040 {rsi}, byrefRegs=0202 {rcx r9}, byref
+ ; byrRegs -[r10]
mov rbx, bword ptr [rsp+0x1D0]
; byrRegs +[rbx]
lea r15d, [rax+r13-0x01]
@@ -173,10 +173,11 @@ G_M19183_IG07: ; bbWeight=1.98, gcrefRegs=0040 {rsi}, byrefRegs=0202 {rcx
mov dword ptr [r13], eax
mov dword ptr [r13+0x04], r15d
mov dword ptr [rsp+0x13C], r12d
+ mov gword ptr [rsp+0x140], rdi
mov rax, gword ptr [rsp+0x170]
; gcrRegs +[rax]
- ;; size=53 bbWeight=1.98 PerfScore 16.34
-G_M19183_IG08: ; bbWeight=3.96, gcVars=0000000000140000 {V09 V54}, gcrefRegs=0041 {rax rsi}, byrefRegs=020A {rcx rbx r9}, gcvars, byref
+ ;; size=61 bbWeight=3.96 PerfScore 36.63
+G_M19183_IG08: ; bbWeight=3.96, gcVars=0000000000180000 {V09 V54}, gcrefRegs=0041 {rax rsi}, byrefRegs=020A {rcx rbx r9}, gcvars, byref
; gcrRegs -[rdi]
; byrRegs -[r13]
; GC ptr vars -{V00 V05}
@@ -187,14 +188,14 @@ G_M19183_IG08: ; bbWeight=3.96, gcVars=0000000000140000 {V09 V54}, gcrefR
mov r10d, dword ptr [rsp+0x34]
jg G_M19183_IG04
;; size=22 bbWeight=3.96 PerfScore 13.86
-G_M19183_IG09: ; bbWeight=1, gcVars=0000000000100000 {V09}, gcrefRegs=0041 {rax rsi}, byrefRegs=0008 {rbx}, gcvars, byref
+G_M19183_IG09: ; bbWeight=1, gcVars=0000000000080000 {V09}, gcrefRegs=0041 {rax rsi}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs -[rcx r8-r9]
; GC ptr vars -{V54}
jmp G_M19183_IG15
;; size=5 bbWeight=1 PerfScore 2.00
-G_M19183_IG10: ; bbWeight=0.04, gcVars=0000000000140000 {V09 V54}, gcrefRegs=0041 {rax rsi}, byrefRegs=030A {rcx rbx r8 r9}, gcvars, byref
+G_M19183_IG10: ; bbWeight=0.04, gcVars=0000000000180000 {V09 V54}, gcrefRegs=0041 {rax rsi}, byrefRegs=030A {rcx rbx r8 r9}, gcvars, byref
; byrRegs +[rcx r8-r9]
- ; GC ptr vars +{V18 V54}
+ ; GC ptr vars +{V54}
cmp r14d, r10d
jae G_M19183_IG17
mov r15d, r14d
@@ -211,31 +212,35 @@ G_M19183_IG11: ; bbWeight=0.02, gcrefRegs=0041 {rax rsi}, byrefRegs=020A
mov r12d, dword ptr [rsp+0x13C]
mov eax, r12d
; gcrRegs -[rax]
- ;; size=22 bbWeight=0.02 PerfScore 0.05
-G_M19183_IG12: ; bbWeight=0.16, gcVars=0000000008140000 {V05 V09 V54}, gcrefRegs=0040 {rsi}, byrefRegs=020A {rcx rbx r9}, gcvars, byref, isz
- ; GC ptr vars -{V18}
+ mov bword ptr [rsp+0x1D0], rbx
+ ; GC ptr vars +{V00}
+ ;; size=30 bbWeight=0.02 PerfScore 0.07
+G_M19183_IG12: ; bbWeight=0.16, gcVars=0000000008188000 {V00 V05 V09 V54}, gcrefRegs=0040 {rsi}, byrefRegs=0202 {rcx r9}, gcvars, byref, isz
+ ; byrRegs -[rbx]
cmp r15d, edx
jae G_M19183_IG17
- mov edi, r15d
- lea rdi, bword ptr [rcx+4*rdi]
- ; byrRegs +[rdi]
- mov r8d, dword ptr [rdi]
+ mov r8d, r15d
+ lea r8, bword ptr [rcx+4*r8]
+ ; byrRegs +[r8]
+ mov r10d, dword ptr [r8]
cmp r12d, dword ptr [rsi+0x08]
jae G_M19183_IG17
- mov r10d, r12d
- mov dword ptr [rsi+4*r10+0x10], r8d
- mov dword ptr [rdi], r12d
+ mov ebx, r12d
+ mov dword ptr [rsi+4*rbx+0x10], r10d
+ mov dword ptr [r8], r12d
inc r12d
inc r13d
cmp r15d, r11d
jae G_M19183_IG17
mov r8d, r15d
+ ; byrRegs -[r8]
mov r15d, dword ptr [r9+4*r8]
test r15d, r15d
jge SHORT G_M19183_IG12
;; size=67 bbWeight=0.16 PerfScore 2.48
-G_M19183_IG13: ; bbWeight=0.02, gcrefRegs=0040 {rsi}, byrefRegs=020A {rcx rbx r9}, byref
- ; byrRegs -[rdi]
+G_M19183_IG13: ; bbWeight=0.04, gcrefRegs=0040 {rsi}, byrefRegs=0202 {rcx r9}, byref
+ mov rbx, bword ptr [rsp+0x1D0]
+ ; byrRegs +[rbx]
lea r15d, [rax+r13-0x01]
cmp r14d, ebp
jae G_M19183_IG17
@@ -250,11 +255,11 @@ G_M19183_IG13: ; bbWeight=0.02, gcrefRegs=0040 {rsi}, byrefRegs=020A {rcx
mov gword ptr [rsp+0x140], rdi
mov rax, gword ptr [rsp+0x170]
; gcrRegs +[rax]
- ;; size=62 bbWeight=0.02 PerfScore 0.19
-G_M19183_IG14: ; bbWeight=0.04, gcVars=0000000000140000 {V09 V54}, gcrefRegs=0041 {rax rsi}, byrefRegs=020A {rcx rbx r9}, gcvars, byref
+ ;; size=70 bbWeight=0.04 PerfScore 0.42
+G_M19183_IG14: ; bbWeight=0.04, gcVars=0000000000180000 {V09 V54}, gcrefRegs=0041 {rax rsi}, byrefRegs=020A {rcx rbx r9}, gcvars, byref
; gcrRegs -[rdi]
; byrRegs -[r13]
- ; GC ptr vars -{V05}
+ ; GC ptr vars -{V00 V05}
inc r14d
cmp ebp, r14d
mov r8, bword ptr [rsp+0x28]
@@ -262,7 +267,7 @@ G_M19183_IG14: ; bbWeight=0.04, gcVars=0000000000140000 {V09 V54}, gcrefR
mov r10d, dword ptr [rsp+0x34]
jg G_M19183_IG10
;; size=22 bbWeight=0.04 PerfScore 0.14
-G_M19183_IG15: ; bbWeight=1, gcVars=0000000000100000 {V09}, gcrefRegs=0041 {rax rsi}, byrefRegs=0008 {rbx}, gcvars, byref
+G_M19183_IG15: ; bbWeight=1, gcVars=0000000000080000 {V09}, gcrefRegs=0041 {rax rsi}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs -[rcx r8-r9]
; GC ptr vars -{V54}
mov rcx, 0xD1FFAB1E ; const ptr
@@ -316,7 +321,7 @@ G_M19183_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 666, prolog size 68, PerfScore 320.97, instruction count 141, allocated bytes for code 666 (MethodHash=58b7b510) for method System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
+; Total bytes of code 689, prolog size 68, PerfScore 341.51, instruction count 144, allocated bytes for code 689 (MethodHash=58b7b510) for method System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
; ============================================================
Unwind Info:
coreclr_tests.run.windows.x64.checked.mch
-37 (-5.71%) : 444619.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
@@ -9,23 +9,23 @@
; 0 inlinees with PGO data; 46 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 16, 3.83) byref -> rsi single-def
-; V01 arg1 [V01,T02] ( 7, 3.16) short -> rdi single-def
-; V02 arg2 [V02,T00] ( 19, 8.33) int -> rbx
+; V00 arg0 [V00,T03] ( 16, 3.83) byref -> rsi single-def
+; V01 arg1 [V01,T04] ( 7, 3.16) short -> rdi single-def
+; V02 arg2 [V02,T02] ( 19, 24.83) int -> rbx
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref
-; V04 loc1 [V04,T05] ( 14, 2.17) long -> rcx
-; V05 loc2 [V05,T09] ( 6, 2.67) simd64 -> mm1 <System.Runtime.Intrinsics.Vector512`1[short]>
-; V06 loc3 [V06,T10] ( 5, 2.00) simd64 -> mm0 <System.Runtime.Intrinsics.Vector512`1[short]>
-; V07 loc4 [V07,T03] ( 7, 4.00) byref -> rdx
-; V08 loc5 [V08,T06] ( 4, 2.00) byref -> rax single-def
+; V04 loc1 [V04,T01] ( 14, 85.33) long -> rax
+; V05 loc2 [V05,T10] ( 6, 2.67) simd64 -> mm1 <System.Runtime.Intrinsics.Vector512`1[short]>
+; V06 loc3 [V06,T11] ( 5, 2.00) simd64 -> mm0 <System.Runtime.Intrinsics.Vector512`1[short]>
+; V07 loc4 [V07,T05] ( 7, 4.00) byref -> rdx
+; V08 loc5 [V08,T07] ( 4, 2.00) byref -> rax single-def
; V09 loc6 [V09,T14] ( 8, 0 ) simd32 -> mm0 <System.Runtime.Intrinsics.Vector256`1[short]>
; V10 loc7 [V10,T17] ( 3, 0 ) simd32 -> mm2 <System.Runtime.Intrinsics.Vector256`1[short]>
; V11 loc8 [V11,T15] ( 7, 0 ) byref -> rax
; V12 loc9 [V12,T16] ( 4, 0 ) byref -> rcx single-def
-; V13 loc10 [V13,T11] ( 8, 1.00) simd16 -> mm2 <System.Runtime.Intrinsics.Vector128`1[short]>
-; V14 loc11 [V14,T12] ( 3, 0.50) simd16 -> mm1 <System.Runtime.Intrinsics.Vector128`1[short]>
-; V15 loc12 [V15,T07] ( 7, 1.00) byref -> rax
-; V16 loc13 [V16,T08] ( 4, 0.50) byref -> rcx single-def
+; V13 loc10 [V13,T12] ( 8, 1.00) simd16 -> mm2 <System.Runtime.Intrinsics.Vector128`1[short]>
+; V14 loc11 [V14,T13] ( 3, 0.50) simd16 -> mm1 <System.Runtime.Intrinsics.Vector128`1[short]>
+; V15 loc12 [V15,T08] ( 7, 1.00) byref -> rax
+; V16 loc13 [V16,T09] ( 4, 0.50) byref -> rcx single-def
; V17 OutArgs [V17 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V18 tmp1 [V18 ] ( 0, 0 ) simd64 -> zero-ref "spilled call-like call argument"
;* V19 tmp2 [V19 ] ( 0, 0 ) simd64 -> zero-ref "spilled call-like call argument"
@@ -73,8 +73,8 @@
;* V61 tmp44 [V61 ] ( 0, 0 ) simd16 -> zero-ref "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[short]>
;* V62 tmp45 [V62 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V63 tmp46 [V63 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V64 tmp47 [V64,T13] ( 11, 0 ) int -> rax "Single return block return value"
-; V65 cse0 [V65,T04] ( 13, 2.99) int -> rdx hoist multi-def "CSE - aggressive"
+; V64 tmp47 [V64,T00] ( 11,133.33) int -> rax "Single return block return value"
+; V65 cse0 [V65,T06] ( 13, 2.99) int -> rdx hoist multi-def "CSE - aggressive"
;
; Lcl frame size = 32
@@ -100,13 +100,13 @@ G_M46731_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=30 bbWeight=1 PerfScore 4.75
-G_M46731_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M46731_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
cmp ebx, 8
- jl G_M46731_IG16
- ;; size=9 bbWeight=1 PerfScore 1.25
+ jl SHORT G_M46731_IG09
+ ;; size=5 bbWeight=1 PerfScore 1.25
G_M46731_IG04: ; bbWeight=0.83, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
cmp ebx, 32
- jl G_M46731_IG14
+ jl G_M46731_IG21
;; size=9 bbWeight=0.83 PerfScore 1.04
G_M46731_IG05: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
movsx rdx, di
@@ -126,8 +126,9 @@ G_M46731_IG06: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0045 {rax rd
add rdx, 64
cmp rdx, rax
jbe SHORT G_M46731_IG06
- mov ecx, ebx
- test cl, 31
+ mov edx, ebx
+ ; byrRegs -[rdx]
+ test dl, 31
je SHORT G_M46731_IG07
vmovups zmm1, zmmword ptr [rax]
vpcmpeqw k1, zmm1, zmm0
@@ -135,7 +136,7 @@ G_M46731_IG06: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0045 {rax rd
jne G_M46731_IG19
;; size=62 bbWeight=0.67 PerfScore 10.67
G_M46731_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rax rdx rsi]
+ ; byrRegs -[rax rsi]
mov eax, -1
;; size=5 bbWeight=1 PerfScore 0.25
G_M46731_IG08: ; bbWeight=1, epilog, nogc, extend
@@ -146,93 +147,65 @@ G_M46731_IG08: ; bbWeight=1, epilog, nogc, extend
pop rdi
ret
;; size=11 bbWeight=1 PerfScore 3.75
-G_M46731_IG09: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref, isz
+G_M46731_IG09: ; bbWeight=16.67, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref, isz
; byrRegs +[rsi]
+ xor eax, eax
cmp ebx, 4
- jl SHORT G_M46731_IG10
- add ebx, -4
- movsx rax, word ptr [rsi+2*rcx]
- movsx rdx, di
- cmp eax, edx
- je G_M46731_IG17
- movsx rax, word ptr [rsi+2*rcx+0x02]
- cmp eax, edx
- je G_M46731_IG28
- movsx rax, word ptr [rsi+2*rcx+0x04]
- cmp eax, edx
- je G_M46731_IG27
- movsx rax, word ptr [rsi+2*rcx+0x06]
- cmp eax, edx
- je G_M46731_IG26
- add rcx, 4
- ;; size=71 bbWeight=0.17 PerfScore 3.83
+ jl SHORT G_M46731_IG11
+ ;; size=7 bbWeight=16.67 PerfScore 25.00
G_M46731_IG10: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+ add ebx, -4
+ movsx rcx, word ptr [rsi+2*rax]
+ movsx rdx, di
+ cmp ecx, edx
+ je SHORT G_M46731_IG16
+ movsx rcx, word ptr [rsi+2*rax+0x02]
+ cmp ecx, edx
+ je SHORT G_M46731_IG18
+ movsx rcx, word ptr [rsi+2*rax+0x04]
+ cmp ecx, edx
+ je SHORT G_M46731_IG17
+ movsx rcx, word ptr [rsi+2*rax+0x06]
+ cmp ecx, edx
+ je SHORT G_M46731_IG15
+ add rax, 4
+ ;; size=50 bbWeight=0.17 PerfScore 3.62
+G_M46731_IG11: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
test ebx, ebx
jle SHORT G_M46731_IG07
;; size=4 bbWeight=0.17 PerfScore 0.21
-G_M46731_IG11: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M46731_IG12: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
movsx rdx, di
;; size=4 bbWeight=0.16 PerfScore 0.04
-G_M46731_IG12: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M46731_IG13: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
dec ebx
- movsx rax, word ptr [rsi+2*rcx]
- cmp eax, edx
- je SHORT G_M46731_IG17
- inc rcx
+ movsx rcx, word ptr [rsi+2*rax]
+ cmp ecx, edx
+ je SHORT G_M46731_IG16
+ inc rax
test ebx, ebx
- jg SHORT G_M46731_IG12
+ jg SHORT G_M46731_IG13
;; size=18 bbWeight=0.33 PerfScore 2.33
-G_M46731_IG13: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M46731_IG14: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rsi]
jmp SHORT G_M46731_IG07
;; size=2 bbWeight=0.17 PerfScore 0.33
-G_M46731_IG14: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
- ; byrRegs +[rsi]
- cmp ebx, 16
- jge G_M46731_IG21
- movsx rdx, di
- vpbroadcastw xmm1, edx
- mov rax, rsi
- ; byrRegs +[rax]
- lea edx, [rbx-0x08]
- movsxd rcx, edx
- lea rcx, bword ptr [rax+2*rcx]
- ; byrRegs +[rcx]
- ;; size=32 bbWeight=0.17 PerfScore 0.67
-G_M46731_IG15: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0043 {rax rcx rsi}, byref, isz
- vpcmpeqw xmm2, xmm1, xmmword ptr [rax]
- vptest xmm2, xmm2
- jne G_M46731_IG25
- add rax, 16
- cmp rax, rcx
- jbe SHORT G_M46731_IG15
- mov eax, ebx
- ; byrRegs -[rax]
- test al, 7
- je G_M46731_IG07
- vpcmpeqw xmm2, xmm1, xmmword ptr [rcx]
- vptest xmm2, xmm2
- jne G_M46731_IG24
- jmp G_M46731_IG07
- ;; size=54 bbWeight=0.17 PerfScore 3.17
-G_M46731_IG16: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
- ; byrRegs -[rcx]
- xor ecx, ecx
- jmp G_M46731_IG09
- ;; size=7 bbWeight=0.17 PerfScore 0.37
-G_M46731_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rsi]
- mov eax, ecx
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M46731_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- vzeroupper
- add rsp, 32
- pop rbx
- pop rsi
- pop rdi
- ret
- ;; size=11 bbWeight=0 PerfScore 0.00
-G_M46731_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0041 {rax rsi}, gcvars, byref, isz
+G_M46731_IG15: ; bbWeight=16.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add eax, 3
+ jmp G_M46731_IG25
+ ;; size=8 bbWeight=16.67 PerfScore 37.50
+G_M46731_IG16: ; bbWeight=16.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp G_M46731_IG25
+ ;; size=5 bbWeight=16.67 PerfScore 33.33
+G_M46731_IG17: ; bbWeight=16.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add eax, 2
+ jmp G_M46731_IG25
+ ;; size=8 bbWeight=16.67 PerfScore 37.50
+G_M46731_IG18: ; bbWeight=16.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ inc eax
+ jmp G_M46731_IG25
+ ;; size=7 bbWeight=16.67 PerfScore 37.50
+G_M46731_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0041 {rax rsi}, byref
; byrRegs +[rax rsi]
sub rax, rsi
; byrRegs -[rax]
@@ -241,9 +214,9 @@ G_M46731_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
kmovd ecx, k1
tzcnt rcx, rcx
add eax, ecx
- jmp SHORT G_M46731_IG18
- ;; size=25 bbWeight=0 PerfScore 0.00
-G_M46731_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0044 {rdx rsi}, byref, isz
+ jmp G_M46731_IG25
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M46731_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0044 {rdx rsi}, byref
; byrRegs +[rdx]
mov rax, rdx
; byrRegs +[rax]
@@ -254,10 +227,67 @@ G_M46731_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0044 {rdx rsi},
kmovd ecx, k1
tzcnt rcx, rcx
add eax, ecx
- jmp SHORT G_M46731_IG18
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M46731_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+ jmp G_M46731_IG25
+ ;; size=31 bbWeight=0 PerfScore 0.00
+G_M46731_IG21: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
; byrRegs -[rdx]
+ cmp ebx, 16
...
-13 (-5.63%) : 422907.dasm - Benchstone.BenchI.CSieve:Bench():ubyte (Tier1-OSR)
@@ -10,13 +10,13 @@
; Final local variable assignments
;
; V00 loc0 [V00,T02] ( 9,183.68) ref -> rcx class-hnd exact <<unknown class>>
-; V01 loc1 [V01,T05] ( 4, 0.09) int -> r8
+; V01 loc1 [V01,T05] ( 4, 2.05) int -> r8
; V02 loc2 [V02,T06] ( 3, 0.03) int -> r10
; V03 loc3 [V03,T01] ( 10,334.46) int -> rdx
-; V04 loc4 [V04,T04] ( 8,100.52) int -> rdx
+; V04 loc4 [V04,T03] ( 8,104.58) int -> rdx
; V05 loc5 [V05,T00] ( 7,499.85) int -> rax
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T03] ( 8,101.11) int -> r9 hoist multi-def "CSE - aggressive"
+; V07 cse0 [V07,T04] ( 8,101.11) int -> r9 hoist multi-def "CSE - aggressive"
;
; Lcl frame size = 40
@@ -29,109 +29,104 @@ G_M58499_IG01: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov edx, dword ptr [rsp+0x60]
mov eax, dword ptr [rsp+0x5C]
;; size=27 bbWeight=0.05 PerfScore 0.52
-G_M58499_IG02: ; bbWeight=0.05, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M58499_IG02: ; bbWeight=0.05, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp eax, 0x1FFE
- jg G_M58499_IG18
- ;; size=11 bbWeight=0.05 PerfScore 0.06
+ jg SHORT G_M58499_IG05
+ ;; size=7 bbWeight=0.05 PerfScore 0.06
G_M58499_IG03: ; bbWeight=0.05, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
mov r9d, dword ptr [rcx+0x08]
;; size=4 bbWeight=0.05 PerfScore 0.10
G_M58499_IG04: ; bbWeight=99.95, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp eax, r9d
- jae G_M58499_IG19
+ jae G_M58499_IG18
mov r11d, eax
mov byte ptr [rcx+r11+0x10], 0
add eax, edx
cmp eax, 0x1FFE
jle SHORT G_M58499_IG04
;; size=27 bbWeight=99.95 PerfScore 399.80
-G_M58499_IG05: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- jmp G_M58499_IG18
- ;; size=5 bbWeight=0.04 PerfScore 0.08
-G_M58499_IG06: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M58499_IG05: ; bbWeight=1.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ inc r8d
+ ;; size=3 bbWeight=1.02 PerfScore 0.25
+G_M58499_IG06: ; bbWeight=0.10, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ inc edx
+ cmp edx, 0x1FFE
+ jle SHORT G_M58499_IG15
+ ;; size=10 bbWeight=0.10 PerfScore 0.15
+G_M58499_IG07: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M58499_IG17
+ ;; size=2 bbWeight=0.01 PerfScore 0.02
+G_M58499_IG08: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
xor r8d, r8d
xor edx, edx
test rcx, rcx
- je SHORT G_M58499_IG10
+ je SHORT G_M58499_IG12
;; size=10 bbWeight=0.01 PerfScore 0.02
-G_M58499_IG07: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M58499_IG09: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov r9d, dword ptr [rcx+0x08]
cmp r9d, 0x1FFE
- jle SHORT G_M58499_IG10
+ jle SHORT G_M58499_IG12
;; size=13 bbWeight=0.01 PerfScore 0.03
-G_M58499_IG08: ; bbWeight=82.57, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M58499_IG10: ; bbWeight=82.57, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov r9d, edx
mov byte ptr [rcx+r9+0x10], 1
inc edx
cmp edx, 0x1FFE
- jle SHORT G_M58499_IG08
+ jle SHORT G_M58499_IG10
;; size=19 bbWeight=82.57 PerfScore 227.06
-G_M58499_IG09: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M58499_IG12
- ;; size=2 bbWeight=0.01 PerfScore 0.02
-G_M58499_IG10: ; bbWeight=0.05, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M58499_IG11: ; bbWeight=4.07, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M58499_IG14
+ ;; size=2 bbWeight=4.07 PerfScore 8.15
+G_M58499_IG12: ; bbWeight=0.05, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
mov r9d, dword ptr [rcx+0x08]
;; size=4 bbWeight=0.05 PerfScore 0.10
-G_M58499_IG11: ; bbWeight=0.83, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M58499_IG13: ; bbWeight=0.83, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp edx, r9d
- jae SHORT G_M58499_IG19
+ jae SHORT G_M58499_IG18
mov eax, edx
mov byte ptr [rcx+rax+0x10], 1
inc edx
cmp edx, 0x1FFE
- jle SHORT G_M58499_IG11
+ jle SHORT G_M58499_IG13
;; size=22 bbWeight=0.83 PerfScore 3.34
-G_M58499_IG12: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M58499_IG14: ; bbWeight=4.07, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
mov edx, 2
- jmp SHORT G_M58499_IG14
- ;; size=7 bbWeight=0.01 PerfScore 0.02
-G_M58499_IG13: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- inc r10d
- cmp r10d, 1
- jg SHORT G_M58499_IG20
- jmp SHORT G_M58499_IG06
- ;; size=11 bbWeight=0.01 PerfScore 0.04
-G_M58499_IG14: ; bbWeight=0.10, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=5 bbWeight=4.07 PerfScore 1.02
+G_M58499_IG15: ; bbWeight=0.10, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov r9d, dword ptr [rcx+0x08]
cmp edx, r9d
- jae SHORT G_M58499_IG19
+ jae SHORT G_M58499_IG18
mov eax, edx
cmp byte ptr [rcx+rax+0x10], 0
- jne SHORT G_M58499_IG17
+ je SHORT G_M58499_IG06
;; size=18 bbWeight=0.10 PerfScore 0.76
-G_M58499_IG15: ; bbWeight=0.10, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- inc edx
- cmp edx, 0x1FFE
- jle SHORT G_M58499_IG14
- ;; size=10 bbWeight=0.10 PerfScore 0.15
-G_M58499_IG16: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M58499_IG13
- ;; size=2 bbWeight=0.01 PerfScore 0.02
-G_M58499_IG17: ; bbWeight=0.05, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M58499_IG16: ; bbWeight=0.05, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
lea eax, [rdx+rdx]
jmp G_M58499_IG02
;; size=8 bbWeight=0.05 PerfScore 0.13
-G_M58499_IG18: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- inc r8d
- jmp SHORT G_M58499_IG15
- ;; size=5 bbWeight=0.04 PerfScore 0.09
-G_M58499_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M58499_IG17: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ inc r10d
+ cmp r10d, 1
+ jg SHORT G_M58499_IG19
+ jmp SHORT G_M58499_IG08
+ ;; size=11 bbWeight=0.01 PerfScore 0.04
+G_M58499_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M58499_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M58499_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
cmp r8d, 0x403
sete al
;; size=12 bbWeight=0 PerfScore 0.00
-G_M58499_IG21: ; bbWeight=0, epilog, nogc, extend
+G_M58499_IG20: ; bbWeight=0, epilog, nogc, extend
add rsp, 176
pop rbp
ret
;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 231, prolog size 27, PerfScore 632.36, instruction count 65, allocated bytes for code 231 (MethodHash=2d741b7c) for method Benchstone.BenchI.CSieve:Bench():ubyte (Tier1-OSR)
+; Total bytes of code 218, prolog size 27, PerfScore 641.56, instruction count 62, allocated bytes for code 218 (MethodHash=2d741b7c) for method Benchstone.BenchI.CSieve:Bench():ubyte (Tier1-OSR)
; ============================================================
Unwind Info:
-6 (-5.31%) : 416484.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -11,97 +11,89 @@
;
; V00 arg0 [V00,T01] ( 8, 4.50) long -> rcx single-def
; V01 arg1 [V01,T00] ( 7, 4.99) ref -> rdx class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 2.99) long -> rbx
-; V03 loc1 [V03,T03] ( 10, 3.40) long -> rax
-; V04 loc2 [V04,T02] ( 10, 3.75) long -> r8
+; V02 loc0 [V02,T04] ( 4, 2.99) long -> rax
+; V03 loc1 [V03,T03] ( 10, 3.40) long -> r8
+; V04 loc2 [V04,T02] ( 10, 3.75) long -> r10
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx
- ;; size=1 bbWeight=1 PerfScore 1.00
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
test rdx, rdx
- je SHORT G_M24157_IG07
+ je SHORT G_M24157_IG16
;; size=5 bbWeight=1 PerfScore 1.25
G_M24157_IG03: ; bbWeight=0.99, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- mov rbx, qword ptr [rdx]
- movzx rax, word ptr [rbx+0x0E]
- test rax, rax
+ mov rax, qword ptr [rdx]
+ movzx r8, word ptr [rax+0x0E]
+ test r8, r8
je SHORT G_M24157_IG13
- ;; size=12 bbWeight=0.99 PerfScore 5.20
+ ;; size=13 bbWeight=0.99 PerfScore 5.20
G_M24157_IG04: ; bbWeight=0.99, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- mov r8, qword ptr [rbx+0x40]
- cmp rax, 4
- jl SHORT G_M24157_IG15
+ mov r10, qword ptr [rax+0x40]
+ cmp r8, 4
+ jl SHORT G_M24157_IG11
;; size=10 bbWeight=0.99 PerfScore 3.22
G_M24157_IG05: ; bbWeight=1.11, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [r8], rcx
- je SHORT G_M24157_IG07
+ cmp qword ptr [r10], rcx
+ je SHORT G_M24157_IG16
;; size=5 bbWeight=1.11 PerfScore 4.42
G_M24157_IG06: ; bbWeight=1.11, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [r8+0x08], rcx
- jne SHORT G_M24157_IG09
+ cmp qword ptr [r10+0x08], rcx
+ je SHORT G_M24157_IG16
;; size=6 bbWeight=1.11 PerfScore 4.42
-G_M24157_IG07: ; bbWeight=0.98, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
- mov rax, rdx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=0.98 PerfScore 0.25
-G_M24157_IG08: ; bbWeight=0.98, epilog, nogc, extend
- pop rbx
- ret
- ;; size=2 bbWeight=0.98 PerfScore 1.48
-G_M24157_IG09: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
- cmp qword ptr [r8+0x10], rcx
- je SHORT G_M24157_IG07
+G_M24157_IG07: ; bbWeight=0.13, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ cmp qword ptr [r10+0x10], rcx
+ je SHORT G_M24157_IG16
;; size=6 bbWeight=0.13 PerfScore 0.54
-G_M24157_IG10: ; bbWeight=0.13, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [r8+0x18], rcx
- je SHORT G_M24157_IG07
+G_M24157_IG08: ; bbWeight=0.13, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ cmp qword ptr [r10+0x18], rcx
+ je SHORT G_M24157_IG16
;; size=6 bbWeight=0.13 PerfScore 0.53
-G_M24157_IG11: ; bbWeight=0.13, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- add r8, 32
- add rax, -4
- cmp rax, 4
+G_M24157_IG09: ; bbWeight=0.13, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ add r10, 32
+ add r8, -4
+ cmp r8, 4
jge SHORT G_M24157_IG05
;; size=14 bbWeight=0.13 PerfScore 0.23
-G_M24157_IG12: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- test rax, rax
- jne SHORT G_M24157_IG15
+G_M24157_IG10: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ test r8, r8
+ je SHORT G_M24157_IG13
;; size=5 bbWeight=0.02 PerfScore 0.02
+G_M24157_IG11: ; bbWeight=0.01, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ cmp qword ptr [r10], rcx
+ je SHORT G_M24157_IG16
+ ;; size=5 bbWeight=0.01 PerfScore 0.02
+G_M24157_IG12: ; bbWeight=0.01, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ add r10, 8
+ dec r8
+ test r8, r8
+ jg SHORT G_M24157_IG11
+ ;; size=12 bbWeight=0.01 PerfScore 0.01
G_M24157_IG13: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- test dword ptr [rbx], 0xD1FFAB1E
- je SHORT G_M24157_IG18
+ test dword ptr [rax], 0xD1FFAB1E
+ je SHORT G_M24157_IG15
;; size=8 bbWeight=0.02 PerfScore 0.07
G_M24157_IG14: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, epilog, nogc
- pop rbx
tail.jmp [<unknown method>]
; gcr arg pop 0
- ;; size=7 bbWeight=0.02 PerfScore 0.04
-G_M24157_IG15: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
- cmp qword ptr [r8], rcx
- je SHORT G_M24157_IG07
- ;; size=5 bbWeight=0.01 PerfScore 0.02
-G_M24157_IG16: ; bbWeight=0.01, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- add r8, 8
- dec rax
- test rax, rax
- jg SHORT G_M24157_IG15
- ;; size=12 bbWeight=0.01 PerfScore 0.01
-G_M24157_IG17: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M24157_IG13
- ;; size=2 bbWeight=0.00 PerfScore 0.01
-G_M24157_IG18: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=6 bbWeight=0.02 PerfScore 0.03
+G_M24157_IG15: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdx]
xor rdx, rdx
; gcrRegs +[rdx]
- jmp SHORT G_M24157_IG07
- ;; size=4 bbWeight=0.00 PerfScore 0.00
+ ;; size=2 bbWeight=0.00 PerfScore 0.00
+G_M24157_IG16: ; bbWeight=0.98, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+ mov rax, rdx
+ ; gcrRegs +[rax]
+ ;; size=3 bbWeight=0.98 PerfScore 0.25
+G_M24157_IG17: ; bbWeight=0.98, epilog, nogc, extend
+ ret
+ ;; size=1 bbWeight=0.98 PerfScore 0.98
-; Total bytes of code 113, prolog size 1, PerfScore 22.71, instruction count 40, allocated bytes for code 113 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 107, prolog size 0, PerfScore 21.20, instruction count 35, allocated bytes for code 107 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -109,9 +101,8 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x00
+ CountOfUnwindCodes: 0
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+29 (+12.55%) : 369105.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
@@ -48,32 +48,32 @@ G_M27413_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=30 bbWeight=1 PerfScore 8.00
-G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x18]
test esi, esi
- jne SHORT G_M27413_IG09
- ;; size=7 bbWeight=1.50 PerfScore 4.88
+ jne G_M27413_IG11
+ ;; size=11 bbWeight=1.50 PerfScore 4.88
G_M27413_IG04: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test edi, -4
- je G_M27413_IG14
+ je SHORT G_M27413_IG10
mov eax, edi
and eax, -3
cmp eax, 4
- je SHORT G_M27413_IG10
+ je G_M27413_IG12
;; size=22 bbWeight=1.00 PerfScore 3.00
G_M27413_IG05: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor ebp, ebp
;; size=2 bbWeight=1.00 PerfScore 0.25
-G_M27413_IG06: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG06: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx r14, bpl
lea r15d, [rdi-0x04]
mov eax, edi
and eax, -4
cmp eax, 4
- je SHORT G_M27413_IG11
+ je G_M27413_IG13
test esi, esi
- jne SHORT G_M27413_IG12
- ;; size=22 bbWeight=1.00 PerfScore 3.75
+ jne G_M27413_IG14
+ ;; size=30 bbWeight=1.00 PerfScore 3.75
G_M27413_IG07: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
lea rcx, bword ptr [rbx+0x18]
; byrRegs +[rcx]
@@ -83,7 +83,7 @@ G_M27413_IG07: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
cmp eax, edi
jne SHORT G_M27413_IG03
test r14d, r14d
- je SHORT G_M27413_IG13
+ je SHORT G_M27413_IG09
call <unknown method>
; byrRegs -[rcx]
; gcr arg pop 0
@@ -108,15 +108,34 @@ G_M27413_IG08: ; bbWeight=1.00, epilog, nogc, extend
jmp <unknown method>
; gcr arg pop 0
;; size=17 bbWeight=1.00 PerfScore 5.25
-G_M27413_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27413_IG09: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ add rsp, 40
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ pop r15
+ ret
+ ;; size=13 bbWeight=0.23 PerfScore 0.97
+G_M27413_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx]
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)]
+ ; gcrRegs -[rcx rbx]
+ ; gcr arg pop 0
+ int3
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
test dil, 2
- jne SHORT G_M27413_IG13
- jmp SHORT G_M27413_IG04
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M27413_IG09
+ jmp G_M27413_IG04
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp byte ptr [rbx+0x1C], 0
- je SHORT G_M27413_IG05
+ je G_M27413_IG05
mov rcx, rbx
; gcrRegs +[rcx]
mov rax, qword ptr [rbx]
@@ -127,39 +146,19 @@ G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
xor ebp, ebp
test eax, eax
sete bpl
- jmp SHORT G_M27413_IG06
- ;; size=29 bbWeight=0 PerfScore 0.00
-G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M27413_IG06
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M27413_IG13: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or r15d, 1
test esi, esi
- je SHORT G_M27413_IG07
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je G_M27413_IG07
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M27413_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or r15d, 2
- jmp SHORT G_M27413_IG07
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M27413_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rbx]
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- pop r15
- ret
- ;; size=13 bbWeight=0 PerfScore 0.00
-G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[rbx]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)]
- ; gcrRegs -[rcx rbx]
- ; gcr arg pop 0
- int3
- ;; size=10 bbWeight=0 PerfScore 0.00
+ jmp G_M27413_IG07
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 231, prolog size 15, PerfScore 61.62, instruction count 85, allocated bytes for code 231 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
+; Total bytes of code 260, prolog size 15, PerfScore 62.59, instruction count 85, allocated bytes for code 260 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
; ============================================================
Unwind Info:
+32 (+15.38%) : 439628.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
@@ -5,24 +5,24 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 3
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 3
; 1 inlinees with PGO data; 8 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 6, 4.00) long -> rcx single-def
-; V01 arg1 [V01,T00] ( 6, 5.00) ref -> rdx class-hnd single-def <System.Object>
+; V00 arg0 [V00,T02] ( 6, 4.00) long -> rcx single-def
+; V01 arg1 [V01,T01] ( 6, 5.00) ref -> rdx class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 loc1 [V03,T11] ( 2, 0.67) ref -> rbx class-hnd single-def <System.Object>
-; V04 loc2 [V04,T02] ( 4, 2.87) long -> rax
+; V03 loc1 [V03,T11] ( 2, 0.67) ref -> rdi class-hnd single-def <System.Object>
+; V04 loc2 [V04,T03] ( 4, 2.87) long -> rax
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 4, 1.00) int -> rsi "Inline return value spill temp"
+; V06 tmp1 [V06,T00] ( 4, 34.33) int -> rbx "Inline return value spill temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <int[]>
-; V08 tmp3 [V08,T07] ( 4, 1.74) byref -> r8 single-def "Inline stloc first use temp"
-; V09 tmp4 [V09,T06] ( 4, 1.95) int -> r10 "Inline stloc first use temp"
-; V10 tmp5 [V10,T03] ( 5, 2.48) int -> r9 "Inline stloc first use temp"
-; V11 tmp6 [V11,T04] ( 5, 2.27) byref -> r11 "Inline stloc first use temp"
-; V12 tmp7 [V12,T05] ( 5, 2.15) int -> rbx "Inline stloc first use temp"
-; V13 tmp8 [V13,T08] ( 2, 1.07) long -> rsi "Inline stloc first use temp"
+; V08 tmp3 [V08,T08] ( 4, 1.74) byref -> r8 single-def "Inline stloc first use temp"
+; V09 tmp4 [V09,T07] ( 4, 1.95) int -> r10 "Inline stloc first use temp"
+; V10 tmp5 [V10,T04] ( 5, 2.48) int -> r9 "Inline stloc first use temp"
+; V11 tmp6 [V11,T05] ( 5, 2.27) byref -> r11 "Inline stloc first use temp"
+; V12 tmp7 [V12,T06] ( 5, 2.15) int -> rbx "Inline stloc first use temp"
+; V13 tmp8 [V13,T09] ( 2, 1.07) long -> rsi "Inline stloc first use temp"
; V14 tmp9 [V14,T10] ( 3, 0.99) long -> rsi "Inline stloc first use temp"
;* V15 tmp10 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V16 tmp11 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
@@ -30,33 +30,51 @@
;* V18 tmp13 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V19 tmp14 [V19,T12] ( 2, 0.67) ref -> r8 single-def "Field obj"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M33041_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push rdi
push rsi
push rbx
- sub rsp, 40
- ;; size=6 bbWeight=1 PerfScore 2.25
+ sub rsp, 32
+ ;; size=7 bbWeight=1 PerfScore 3.25
G_M33041_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
test rdx, rdx
je SHORT G_M33041_IG03
mov rax, qword ptr [rdx]
cmp rax, rcx
- jne SHORT G_M33041_IG05
+ jne SHORT G_M33041_IG07
;; size=13 bbWeight=1 PerfScore 4.50
G_M33041_IG03: ; bbWeight=0.67, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
mov rax, rdx
; gcrRegs +[rax]
;; size=3 bbWeight=0.67 PerfScore 0.17
G_M33041_IG04: ; bbWeight=0.67, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
pop rbx
pop rsi
+ pop rdi
ret
- ;; size=7 bbWeight=0.67 PerfScore 1.50
-G_M33041_IG05: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.67 PerfScore 1.83
+G_M33041_IG05: ; bbWeight=33.33, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
+ mov ebx, 2
+ ;; size=5 bbWeight=33.33 PerfScore 8.33
+G_M33041_IG06: ; bbWeight=0.33, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ cmp ebx, 1
+ je SHORT G_M33041_IG03
+ call <unknown method>
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ test ebx, ebx
+ jne G_M33041_IG15
+ jmp G_M33041_IG14
+ ;; size=26 bbWeight=0.33 PerfScore 1.92
+G_M33041_IG07: ; bbWeight=0.33, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rdi] +[rdx]
mov r8, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov r8, gword ptr [r8]
; gcrRegs +[r8]
@@ -71,7 +89,7 @@ G_M33041_IG05: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=000
shrx r10, r10, r9
xor r9d, r9d
;; size=51 bbWeight=0.33 PerfScore 2.75
-G_M33041_IG06: ; bbWeight=0.54, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz
+G_M33041_IG08: ; bbWeight=0.54, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz
lea r11d, [r10+0x01]
movsxd r11, r11d
lea r11, [r11+2*r11]
@@ -81,68 +99,61 @@ G_M33041_IG06: ; bbWeight=0.54, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}
mov rsi, qword ptr [r11+0x08]
and ebx, -2
cmp rsi, rax
- jne SHORT G_M33041_IG12
+ jne SHORT G_M33041_IG11
;; size=30 bbWeight=0.54 PerfScore 3.89
-G_M33041_IG07: ; bbWeight=0.33, gcrefRegs=0004 {rdx}, byrefRegs=0900 {r8 r11}, byref, isz
+G_M33041_IG09: ; bbWeight=0.33, gcrefRegs=0004 {rdx}, byrefRegs=0900 {r8 r11}, byref, isz
mov rsi, rcx
xor rsi, qword ptr [r11+0x10]
cmp rsi, 1
- ja SHORT G_M33041_IG12
+ ja SHORT G_M33041_IG11
;; size=13 bbWeight=0.33 PerfScore 1.49
-G_M33041_IG08: ; bbWeight=0.33, gcrefRegs=0004 {rdx}, byrefRegs=0800 {r11}, byref, isz
+G_M33041_IG10: ; bbWeight=0.33, gcrefRegs=0004 {rdx}, byrefRegs=0800 {r11}, byref, isz
; byrRegs -[r8]
cmp ebx, dword ptr [r11]
- jne SHORT G_M33041_IG14
- ;; size=5 bbWeight=0.33 PerfScore 1.32
-G_M33041_IG09: ; bbWeight=0.33, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r11]
- cmp esi, 1
- je SHORT G_M33041_IG03
- call <unknown method>
- ; gcrRegs -[rdx] +[rax]
- ; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
- test esi, esi
- jne SHORT G_M33041_IG10
+ jne G_M33041_IG05
+ jmp SHORT G_M33041_IG13
+ ;; size=11 bbWeight=0.33 PerfScore 1.98
+G_M33041_IG11: ; bbWeight=0.21, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref
+ ; byrRegs -[r11] +[r8]
+ test ebx, ebx
+ je G_M33041_IG05
+ ;; size=8 bbWeight=0.21 PerfScore 0.26
+G_M33041_IG12: ; bbWeight=0.54, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz
+ inc r9d
+ add r10d, r9d
+ and r10d, dword ptr [r8+0x04]
+ cmp r9d, 8
+ jl SHORT G_M33041_IG08
+ jmp G_M33041_IG05
+ ;; size=21 bbWeight=0.54 PerfScore 3.63
+G_M33041_IG13: ; bbWeight=0.33, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r8]
+ mov ebx, esi
+ jmp G_M33041_IG06
+ ;; size=7 bbWeight=0.33 PerfScore 0.74
+G_M33041_IG14: ; bbWeight=0.33, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdx] +[rdi]
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rax rcx rdx]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=43 bbWeight=0.33 PerfScore 2.42
-G_M33041_IG10: ; bbWeight=0.33, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov rax, rbx
+ ;; size=26 bbWeight=0.33 PerfScore 1.17
+G_M33041_IG15: ; bbWeight=0.33, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ mov rax, rdi
; gcrRegs +[rax]
;; size=3 bbWeight=0.33 PerfScore 0.08
-G_M33041_IG11: ; bbWeight=0.33, epilog, nogc, extend
- add rsp, 40
+G_M33041_IG16: ; bbWeight=0.33, epilog, nogc, extend
+ add rsp, 32
pop rbx
pop rsi
+ pop rdi
ret
- ;; size=7 bbWeight=0.33 PerfScore 0.75
-G_M33041_IG12: ; bbWeight=0.21, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, gcvars, byref, isz
- ; gcrRegs -[rax rbx] +[rdx]
- ; byrRegs +[r8]
- test ebx, ebx
- je SHORT G_M33041_IG14
- ;; size=4 bbWeight=0.21 PerfScore 0.26
-G_M33041_IG13: ; bbWeight=0.54, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz
- inc r9d
- add r10d, r9d
- and r10d, dword ptr [r8+0x04]
- cmp r9d, 8
- jl SHORT G_M33041_IG06
- ;; size=16 bbWeight=0.54 PerfScore 2.55
-G_M33041_IG14: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r8]
- mov esi, 2
- jmp SHORT G_M33041_IG09
- ;; size=7 bbWeight=0.00 PerfScore 0.01
+ ;; size=8 bbWeight=0.33 PerfScore 0.92
-; Total bytes of code 208, prolog size 6, PerfScore 23.93, instruction count 61, allocated bytes for code 208 (MethodHash=84fd7eee) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 240, prolog size 7, PerfScore 36.91, instruction count 68, allocated bytes for code 240 (MethodHash=84fd7eee) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -150,11 +161,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x06
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x07
+ CountOfUnwindCodes: 4
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+28 (+16.47%) : 490049.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
@@ -5,23 +5,23 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 6
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6
; 1 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 6, 2.67) long -> rcx single-def
-; V01 arg1 [V01,T00] ( 7, 4.17) ref -> rdx class-hnd <System.Object>
-; V02 loc0 [V02,T07] ( 4, 0.77) long -> rax
+; V00 arg0 [V00,T02] ( 6, 2.67) long -> rcx single-def
+; V01 arg1 [V01,T01] ( 7, 4.17) ref -> rdx class-hnd <System.Object>
+; V02 loc0 [V02,T08] ( 4, 0.77) long -> rax
;* V03 loc1 [V03 ] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T09] ( 4, 0.50) int -> rsi "Inline return value spill temp"
+; V05 tmp1 [V05,T00] ( 4, 17.17) int -> r8 "Inline return value spill temp"
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <int[]>
-; V07 tmp3 [V07,T06] ( 4, 0.87) byref -> r8 single-def "Inline stloc first use temp"
-; V08 tmp4 [V08,T05] ( 4, 0.97) int -> r10 "Inline stloc first use temp"
-; V09 tmp5 [V09,T02] ( 5, 1.24) int -> r9 "Inline stloc first use temp"
-; V10 tmp6 [V10,T03] ( 5, 1.14) byref -> r11 "Inline stloc first use temp"
-; V11 tmp7 [V11,T04] ( 5, 1.07) int -> rbx "Inline stloc first use temp"
-; V12 tmp8 [V12,T08] ( 2, 0.54) long -> rsi "Inline stloc first use temp"
+; V07 tmp3 [V07,T07] ( 4, 0.87) byref -> r8 single-def "Inline stloc first use temp"
+; V08 tmp4 [V08,T06] ( 4, 0.97) int -> r10 "Inline stloc first use temp"
+; V09 tmp5 [V09,T03] ( 5, 1.24) int -> r9 "Inline stloc first use temp"
+; V10 tmp6 [V10,T04] ( 5, 1.14) byref -> r11 "Inline stloc first use temp"
+; V11 tmp7 [V11,T05] ( 5, 1.07) int -> rbx "Inline stloc first use temp"
+; V12 tmp8 [V12,T09] ( 2, 0.54) long -> rsi "Inline stloc first use temp"
; V13 tmp9 [V13,T10] ( 3, 0.50) long -> rsi "Inline stloc first use temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V15 tmp11 [V15 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
@@ -36,7 +36,7 @@ G_M60590_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M60590_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
test rdx, rdx
- jne SHORT G_M60590_IG05
+ jne SHORT G_M60590_IG08
;; size=5 bbWeight=1 PerfScore 1.25
G_M60590_IG03: ; bbWeight=0.83, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
mov rax, rdx
@@ -47,8 +47,23 @@ G_M60590_IG04: ; bbWeight=0.83, epilog, nogc, extend
pop rsi
ret
;; size=3 bbWeight=0.83 PerfScore 1.67
-G_M60590_IG05: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60590_IG05: ; bbWeight=16.67, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
+ mov r8d, 2
+ ;; size=6 bbWeight=16.67 PerfScore 4.17
+G_M60590_IG06: ; bbWeight=0.17, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ cmp r8d, 1
+ je SHORT G_M60590_IG03
+ test r8d, r8d
+ je G_M60590_IG15
+ ;; size=15 bbWeight=0.17 PerfScore 0.42
+G_M60590_IG07: ; bbWeight=0.17, epilog, nogc, extend
+ pop rbx
+ pop rsi
+ jmp <unknown method>
+ ; gcr arg pop 0
+ ;; size=7 bbWeight=0.17 PerfScore 0.50
+G_M60590_IG08: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
mov rax, qword ptr [rdx]
cmp rax, rcx
je SHORT G_M60590_IG03
@@ -66,7 +81,7 @@ G_M60590_IG05: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=000
shrx r10, r10, r9
xor r9d, r9d
;; size=59 bbWeight=0.17 PerfScore 1.92
-G_M60590_IG06: ; bbWeight=0.27, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz
+G_M60590_IG09: ; bbWeight=0.27, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz
lea r11d, [r10+0x01]
movsxd r11, r11d
lea r11, [r11+2*r11]
@@ -76,57 +91,46 @@ G_M60590_IG06: ; bbWeight=0.27, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}
mov rsi, qword ptr [r11+0x08]
and ebx, -2
cmp rsi, rax
- jne SHORT G_M60590_IG11
+ jne SHORT G_M60590_IG12
;; size=30 bbWeight=0.27 PerfScore 1.94
-G_M60590_IG07: ; bbWeight=0.17, gcrefRegs=0004 {rdx}, byrefRegs=0900 {r8 r11}, byref, isz
+G_M60590_IG10: ; bbWeight=0.17, gcrefRegs=0004 {rdx}, byrefRegs=0900 {r8 r11}, byref, isz
mov rsi, rcx
xor rsi, qword ptr [r11+0x10]
cmp rsi, 1
- ja SHORT G_M60590_IG11
+ ja SHORT G_M60590_IG12
;; size=13 bbWeight=0.17 PerfScore 0.74
-G_M60590_IG08: ; bbWeight=0.17, gcrefRegs=0004 {rdx}, byrefRegs=0800 {r11}, byref, isz
+G_M60590_IG11: ; bbWeight=0.17, gcrefRegs=0004 {rdx}, byrefRegs=0800 {r11}, byref, isz
; byrRegs -[r8]
cmp ebx, dword ptr [r11]
- jne SHORT G_M60590_IG13
- ;; size=5 bbWeight=0.17 PerfScore 0.66
-G_M60590_IG09: ; bbWeight=0.17, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r11]
- cmp esi, 1
- je SHORT G_M60590_IG03
- test esi, esi
- je SHORT G_M60590_IG14
- ;; size=9 bbWeight=0.17 PerfScore 0.42
-G_M60590_IG10: ; bbWeight=0.17, epilog, nogc, extend
- pop rbx
- pop rsi
- jmp <unknown method>
- ; gcr arg pop 0
- ;; size=7 bbWeight=0.17 PerfScore 0.50
-G_M60590_IG11: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, gcvars, byref, isz
- ; byrRegs +[r8]
+ jne G_M60590_IG05
+ jmp SHORT G_M60590_IG14
+ ;; size=11 bbWeight=0.17 PerfScore 0.99
+G_M60590_IG12: ; bbWeight=0.10, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref
+ ; byrRegs -[r11] +[r8]
test ebx, ebx
- je SHORT G_M60590_IG13
- ;; size=4 bbWeight=0.10 PerfScore 0.13
-G_M60590_IG12: ; bbWeight=0.27, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz
+ je G_M60590_IG05
+ ;; size=8 bbWeight=0.10 PerfScore 0.13
+G_M60590_IG13: ; bbWeight=0.27, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz
inc r9d
add r10d, r9d
and r10d, dword ptr [r8+0x04]
cmp r9d, 8
- jl SHORT G_M60590_IG06
- ;; size=16 bbWeight=0.27 PerfScore 1.28
-G_M60590_IG13: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M60590_IG09
+ jmp G_M60590_IG05
+ ;; size=21 bbWeight=0.27 PerfScore 1.81
+G_M60590_IG14: ; bbWeight=0.17, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; byrRegs -[r8]
- mov esi, 2
- jmp SHORT G_M60590_IG09
- ;; size=7 bbWeight=0.00 PerfScore 0.00
-G_M60590_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r8d, esi
+ jmp G_M60590_IG06
+ ;; size=8 bbWeight=0.17 PerfScore 0.37
+G_M60590_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
xor rdx, rdx
; gcrRegs +[rdx]
jmp G_M60590_IG03
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 170, prolog size 2, PerfScore 12.72, instruction count 54, allocated bytes for code 170 (MethodHash=9f861351) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 198, prolog size 2, PerfScore 18.12, instruction count 57, allocated bytes for code 198 (MethodHash=9f861351) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
libraries.crossgen2.windows.x64.checked.mch
-29 (-4.28%) : 152745.dasm - System.Data.ProviderBase.DbMetaDataFactory:CloneAndFilterCollection(System.String,System.String[]):System.Data.DataTable:this (FullOpts)
@@ -8,17 +8,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 4, 7 ) ref -> rbx this class-hnd single-def <System.Data.ProviderBase.DbMetaDataFactory>
+; V00 this [V00,T10] ( 4, 7 ) ref -> rbx this class-hnd single-def <System.Data.ProviderBase.DbMetaDataFactory>
; V01 arg1 [V01,T11] ( 6, 5 ) ref -> rsi class-hnd single-def <System.String>
; V02 arg2 [V02,T14] ( 3, 3 ) ref -> rdi class-hnd single-def <System.String[]>
; V03 loc0 [V03,T13] ( 5, 5 ) ref -> r14 class-hnd single-def <System.Data.DataTable>
-; V04 loc1 [V04,T09] ( 6, 8 ) ref -> r15 class-hnd exact single-def <System.Data.DataTable>
+; V04 loc1 [V04,T08] ( 6, 10 ) ref -> r15 class-hnd exact single-def <System.Data.DataTable>
; V05 loc2 [V05,T04] ( 3, 33 ) ref -> rdi class-hnd single-def <<unknown class>>
; V06 loc3 [V06,T03] ( 5, 36 ) ref -> rsi class-hnd single-def <<unknown class>>
-; V07 loc4 [V07,T06] ( 4, 22 ) ref -> r12 class-hnd <<unknown class>>
-; V08 loc5 [V08,T07] ( 6, 10 ) ref -> [rbp-0x48] class-hnd EH-live single-def <<unknown class>>
-; V09 loc6 [V09,T05] ( 3, 24 ) ref -> r13 class-hnd <<unknown class>>
-; V10 loc7 [V10,T00] ( 7, 98 ) int -> [rbp-0x3C]
+; V07 loc4 [V07,T05] ( 4, 26 ) ref -> r13 class-hnd <<unknown class>>
+; V08 loc5 [V08,T09] ( 6, 10 ) ref -> [rbp-0x40] class-hnd EH-live spill-single-def <<unknown class>>
+; V09 loc6 [V09,T06] ( 3, 24 ) ref -> r14 class-hnd <<unknown class>>
+; V10 loc7 [V10,T00] ( 7, 98 ) int -> r12
; V11 loc8 [V11,T19] ( 6, 2.50) ref -> rax class-hnd <<unknown class>>
; V12 OutArgs [V12 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V13 tmp1 [V13,T12] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Data.DataTable>
@@ -28,11 +28,11 @@
; V17 tmp5 [V17,T17] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
; V18 tmp6 [V18,T18] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
; V19 tmp7 [V19,T01] ( 2, 64 ) ref -> r8 "argument with side effect"
-; V20 tmp8 [V20,T02] ( 2, 64 ) ref -> [rbp-0x50] spill-single-def "argument with side effect"
-; V21 tmp9 [V21,T10] ( 2, 8 ) ref -> rcx "argument with side effect"
-; V22 PSPSym [V22,T20] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
+; V20 tmp8 [V20,T02] ( 2, 64 ) ref -> [rbp-0x48] spill-single-def "argument with side effect"
+; V21 tmp9 [V21,T07] ( 2, 16 ) ref -> rcx "argument with side effect"
+; V22 PSPSym [V22,T20] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 72
+; Lcl frame size = 56
G_M46192_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -43,16 +43,16 @@ G_M46192_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rdi
push rsi
push rbx
- sub rsp, 72
- lea rbp, [rsp+0x80]
- mov qword ptr [rbp-0x60], rsp
+ sub rsp, 56
+ lea rbp, [rsp+0x70]
+ mov qword ptr [rbp-0x50], rsp
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, rdx
; gcrRegs +[rsi]
mov rdi, r8
; gcrRegs +[rdi]
- ;; size=37 bbWeight=1 PerfScore 10.50
+ ;; size=34 bbWeight=1 PerfScore 10.50
G_M46192_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
@@ -144,24 +144,21 @@ G_M46192_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
call [r11]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- mov r14, rax
- ; gcrRegs +[r14]
- mov gword ptr [rbp-0x48], r14
+ mov gword ptr [rbp-0x40], rax
; GC ptr vars +{V08}
- ;; size=191 bbWeight=1 PerfScore 59.00
-G_M46192_IG03: ; bbWeight=1, gcVars=0000000000000080 {V08}, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
- mov rcx, r14
+ ;; size=188 bbWeight=1 PerfScore 58.75
+G_M46192_IG03: ; bbWeight=1, gcVars=0000000000000200 {V08}, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0000 {}, gcvars, byref
+ mov rcx, rax
; gcrRegs +[rcx]
lea r11, [(reloc)]
call [r11]<unknown method>
- ; gcrRegs -[rcx]
+ ; gcrRegs -[rax rcx]
; gcr arg pop 0
test eax, eax
je G_M46192_IG11
;; size=21 bbWeight=1 PerfScore 5.00
-G_M46192_IG04: ; bbWeight=4, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefRegs=0000 {}, byref
- mov rcx, r14
+G_M46192_IG04: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
+ mov rcx, gword ptr [rbp-0x40]
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
call [r11]<unknown method>
@@ -172,58 +169,54 @@ G_M46192_IG04: ; bbWeight=4, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefR
call [CORINFO_HELP_READYTORUN_CHKCAST]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov r13, rax
- ; gcrRegs +[r13]
+ mov r14, rax
+ ; gcrRegs +[r14]
mov rcx, rbx
; gcrRegs +[rcx]
- mov rdx, r13
+ mov rdx, r14
; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
test eax, eax
je G_M46192_IG08
- ;; size=45 bbWeight=4 PerfScore 48.00
-G_M46192_IG05: ; bbWeight=2, gcrefRegs=E0C8 {rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=46 bbWeight=4 PerfScore 51.00
+G_M46192_IG05: ; bbWeight=2, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
mov rcx, r15
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
call [r11]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov r12, rax
- ; gcrRegs +[r12]
- xor eax, eax
- ; gcrRegs -[rax]
- mov dword ptr [rbp-0x3C], eax
+ mov r13, rax
+ ; gcrRegs +[r13]
+ xor r12d, r12d
mov rcx, rsi
; gcrRegs +[rcx]
lea r11, [(reloc)]
cmp dword ptr [rcx], ecx
call [r11]<unknown method>
- ; gcrRegs -[rcx]
+ ; gcrRegs -[rax rcx]
; gcr arg pop 0
test eax, eax
jle SHORT G_M46192_IG07
- ;; size=40 bbWeight=2 PerfScore 26.50
-G_M46192_IG06: ; bbWeight=16, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=38 bbWeight=2 PerfScore 24.50
+G_M46192_IG06: ; bbWeight=16, gcrefRegs=E0C8 {rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rcx, rsi
; gcrRegs +[rcx]
- mov edx, dword ptr [rbp-0x3C]
+ mov edx, r12d
lea r11, [(reloc)] ; function address
call [r11]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x50], rax
+ mov gword ptr [rbp-0x48], rax
; GC ptr vars +{V20}
- mov r10d, dword ptr [rbp-0x3C]
- cmp r10d, dword ptr [rdi+0x08]
+ cmp r12d, dword ptr [rdi+0x08]
jae G_M46192_IG10
- mov dword ptr [rbp-0x3C], r10d
- mov edx, r10d
+ mov edx, r12d
mov rdx, gword ptr [rdi+8*rdx+0x10]
; gcrRegs +[rdx]
- mov rcx, r13
+ mov rcx, r14
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
mov r8d, 512
@@ -233,9 +226,9 @@ G_M46192_IG06: ; bbWeight=16, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15
; gcr arg pop 0
mov r8, rax
; gcrRegs +[r8]
- mov rdx, gword ptr [rbp-0x50]
+ mov rdx, gword ptr [rbp-0x48]
; gcrRegs +[rdx]
- mov rcx, r12
+ mov rcx, r13
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
cmp dword ptr [rcx], ecx
@@ -243,22 +236,18 @@ G_M46192_IG06: ; bbWeight=16, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15
call [r11]<unknown method>
; gcrRegs -[rax rcx rdx r8]
; gcr arg pop 0
- mov r10d, dword ptr [rbp-0x3C]
- inc r10d
- mov dword ptr [rbp-0x3C], r10d
+ inc r12d
mov rcx, rsi
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
call [r11]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- mov ecx, dword ptr [rbp-0x3C]
- cmp eax, ecx
- mov dword ptr [rbp-0x3C], ecx
+ cmp eax, r12d
jg SHORT G_M46192_IG06
- ;; size=123 bbWeight=16 PerfScore 612.00
-G_M46192_IG07: ; bbWeight=2, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r13]
+ ;; size=102 bbWeight=16 PerfScore 504.00
+G_M46192_IG07: ; bbWeight=4, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14]
mov rcx, r15
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
@@ -267,23 +256,23 @@ G_M46192_IG07: ; bbWeight=2, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, by
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
- mov rdx, r12
+ mov rdx, r13
; gcrRegs +[rdx]
lea r11, [(reloc)] ; function address
cmp dword ptr [rcx], ecx
call [r11]<unknown method>
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
- mov rcx, r12
+ mov rcx, r13
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
cmp dword ptr [rcx], ecx
call [r11]<unknown method>
- ; gcrRegs -[rcx r12]
+ ; gcrRegs -[rcx r13]
; gcr arg pop 0
- ;; size=46 bbWeight=2 PerfScore 35.00
-G_M46192_IG08: ; bbWeight=4, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefRegs=0000 {}, byref
- mov rcx, r14
+ ;; size=46 bbWeight=4 PerfScore 70.00
+G_M46192_IG08: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
+ mov rcx, gword ptr [rbp-0x40]
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
call [r11]<unknown method>
@@ -291,28 +280,28 @@ G_M46192_IG08: ; bbWeight=4, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefR
; gcr arg pop 0
test eax, eax
jne G_M46192_IG04
- ;; size=21 bbWeight=4 PerfScore 20.00
-G_M46192_IG09: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=22 bbWeight=4 PerfScore 23.00
+G_M46192_IG09: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rsi rdi]
jmp SHORT G_M46192_IG11
;; size=2 bbWeight=1 PerfScore 2.00
G_M46192_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
...
-29 (-4.28%) : 234053.dasm - System.Data.ProviderBase.DbMetaDataFactory:CloneAndFilterCollection(System.String,System.String[]):System.Data.DataTable:this (FullOpts)
@@ -8,31 +8,31 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 4, 7 ) ref -> rbx this class-hnd single-def <System.Data.ProviderBase.DbMetaDataFactory>
-; V01 arg1 [V01,T11] ( 6, 5 ) ref -> rsi class-hnd single-def <System.String>
+; V00 this [V00,T10] ( 4, 7 ) ref -> rbx this class-hnd single-def <System.Data.ProviderBase.DbMetaDataFactory>
+; V01 arg1 [V01,T12] ( 6, 5 ) ref -> rsi class-hnd single-def <System.String>
; V02 arg2 [V02,T14] ( 3, 3 ) ref -> rdi class-hnd single-def <System.String[]>
-; V03 loc0 [V03,T12] ( 5, 7 ) ref -> r15 class-hnd exact single-def <System.Data.DataTable>
+; V03 loc0 [V03,T09] ( 5, 9 ) ref -> r15 class-hnd exact single-def <System.Data.DataTable>
; V04 loc1 [V04,T04] ( 3, 33 ) ref -> rdi class-hnd single-def <<unknown class>>
; V05 loc2 [V05,T03] ( 5, 36 ) ref -> rsi class-hnd single-def <<unknown class>>
-; V06 loc3 [V06,T06] ( 4, 22 ) ref -> r12 class-hnd <<unknown class>>
+; V06 loc3 [V06,T05] ( 4, 26 ) ref -> r13 class-hnd <<unknown class>>
; V07 loc4 [V07,T13] ( 5, 5 ) ref -> r14 class-hnd single-def <System.Data.DataTable>
-; V08 loc5 [V08,T07] ( 6, 10 ) ref -> [rbp-0x48] class-hnd EH-live single-def <<unknown class>>
-; V09 loc6 [V09,T05] ( 3, 24 ) ref -> r13 class-hnd <<unknown class>>
-; V10 loc7 [V10,T00] ( 7, 98 ) int -> [rbp-0x3C]
+; V08 loc5 [V08,T08] ( 6, 10 ) ref -> [rbp-0x40] class-hnd EH-live spill-single-def <<unknown class>>
+; V09 loc6 [V09,T06] ( 3, 24 ) ref -> r14 class-hnd <<unknown class>>
+; V10 loc7 [V10,T00] ( 7, 98 ) int -> r12
; V11 loc8 [V11,T19] ( 6, 2.50) ref -> rax class-hnd <<unknown class>>
; V12 OutArgs [V12 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V13 tmp1 [V13,T09] ( 4, 8 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Data.DataTable>
+; V13 tmp1 [V13,T11] ( 4, 8 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Data.DataTable>
;* V14 tmp2 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>>
; V15 tmp3 [V15,T15] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
; V16 tmp4 [V16,T16] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
; V17 tmp5 [V17,T17] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
; V18 tmp6 [V18,T18] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
; V19 tmp7 [V19,T01] ( 2, 64 ) ref -> r8 "argument with side effect"
-; V20 tmp8 [V20,T02] ( 2, 64 ) ref -> [rbp-0x50] spill-single-def "argument with side effect"
-; V21 tmp9 [V21,T10] ( 2, 8 ) ref -> rcx "argument with side effect"
-; V22 PSPSym [V22,T20] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
+; V20 tmp8 [V20,T02] ( 2, 64 ) ref -> [rbp-0x48] spill-single-def "argument with side effect"
+; V21 tmp9 [V21,T07] ( 2, 16 ) ref -> rcx "argument with side effect"
+; V22 PSPSym [V22,T20] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 72
+; Lcl frame size = 56
G_M46192_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -43,16 +43,16 @@ G_M46192_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rdi
push rsi
push rbx
- sub rsp, 72
- lea rbp, [rsp+0x80]
- mov qword ptr [rbp-0x60], rsp
+ sub rsp, 56
+ lea rbp, [rsp+0x70]
+ mov qword ptr [rbp-0x50], rsp
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, rdx
; gcrRegs +[rsi]
mov rdi, r8
; gcrRegs +[rdi]
- ;; size=37 bbWeight=1 PerfScore 10.50
+ ;; size=34 bbWeight=1 PerfScore 10.50
G_M46192_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
@@ -144,24 +144,21 @@ G_M46192_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
call [r11]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- mov r14, rax
- ; gcrRegs +[r14]
- mov gword ptr [rbp-0x48], r14
+ mov gword ptr [rbp-0x40], rax
; GC ptr vars +{V08}
- ;; size=191 bbWeight=1 PerfScore 59.00
-G_M46192_IG03: ; bbWeight=1, gcVars=0000000000000080 {V08}, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
- mov rcx, r14
+ ;; size=188 bbWeight=1 PerfScore 58.75
+G_M46192_IG03: ; bbWeight=1, gcVars=0000000000000100 {V08}, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0000 {}, gcvars, byref
+ mov rcx, rax
; gcrRegs +[rcx]
lea r11, [(reloc)]
call [r11]<unknown method>
- ; gcrRegs -[rcx]
+ ; gcrRegs -[rax rcx]
; gcr arg pop 0
test eax, eax
je G_M46192_IG11
;; size=21 bbWeight=1 PerfScore 5.00
-G_M46192_IG04: ; bbWeight=4, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefRegs=0000 {}, byref
- mov rcx, r14
+G_M46192_IG04: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
+ mov rcx, gword ptr [rbp-0x40]
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
call [r11]<unknown method>
@@ -172,58 +169,54 @@ G_M46192_IG04: ; bbWeight=4, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefR
call [CORINFO_HELP_READYTORUN_CHKCAST]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov r13, rax
- ; gcrRegs +[r13]
+ mov r14, rax
+ ; gcrRegs +[r14]
mov rcx, rbx
; gcrRegs +[rcx]
- mov rdx, r13
+ mov rdx, r14
; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
test eax, eax
je G_M46192_IG08
- ;; size=45 bbWeight=4 PerfScore 48.00
-G_M46192_IG05: ; bbWeight=2, gcrefRegs=E0C8 {rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=46 bbWeight=4 PerfScore 51.00
+G_M46192_IG05: ; bbWeight=2, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
mov rcx, r15
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
call [r11]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov r12, rax
- ; gcrRegs +[r12]
- xor eax, eax
- ; gcrRegs -[rax]
- mov dword ptr [rbp-0x3C], eax
+ mov r13, rax
+ ; gcrRegs +[r13]
+ xor r12d, r12d
mov rcx, rsi
; gcrRegs +[rcx]
lea r11, [(reloc)]
cmp dword ptr [rcx], ecx
call [r11]<unknown method>
- ; gcrRegs -[rcx]
+ ; gcrRegs -[rax rcx]
; gcr arg pop 0
test eax, eax
jle SHORT G_M46192_IG07
- ;; size=40 bbWeight=2 PerfScore 26.50
-G_M46192_IG06: ; bbWeight=16, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=38 bbWeight=2 PerfScore 24.50
+G_M46192_IG06: ; bbWeight=16, gcrefRegs=E0C8 {rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rcx, rsi
; gcrRegs +[rcx]
- mov edx, dword ptr [rbp-0x3C]
+ mov edx, r12d
lea r11, [(reloc)] ; function address
call [r11]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x50], rax
+ mov gword ptr [rbp-0x48], rax
; GC ptr vars +{V20}
- mov r10d, dword ptr [rbp-0x3C]
- cmp r10d, dword ptr [rdi+0x08]
+ cmp r12d, dword ptr [rdi+0x08]
jae G_M46192_IG10
- mov dword ptr [rbp-0x3C], r10d
- mov edx, r10d
+ mov edx, r12d
mov rdx, gword ptr [rdi+8*rdx+0x10]
; gcrRegs +[rdx]
- mov rcx, r13
+ mov rcx, r14
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
mov r8d, 512
@@ -233,9 +226,9 @@ G_M46192_IG06: ; bbWeight=16, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15
; gcr arg pop 0
mov r8, rax
; gcrRegs +[r8]
- mov rdx, gword ptr [rbp-0x50]
+ mov rdx, gword ptr [rbp-0x48]
; gcrRegs +[rdx]
- mov rcx, r12
+ mov rcx, r13
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
cmp dword ptr [rcx], ecx
@@ -243,22 +236,18 @@ G_M46192_IG06: ; bbWeight=16, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15
call [r11]<unknown method>
; gcrRegs -[rax rcx rdx r8]
; gcr arg pop 0
- mov r10d, dword ptr [rbp-0x3C]
- inc r10d
- mov dword ptr [rbp-0x3C], r10d
+ inc r12d
mov rcx, rsi
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
call [r11]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- mov ecx, dword ptr [rbp-0x3C]
- cmp eax, ecx
- mov dword ptr [rbp-0x3C], ecx
+ cmp eax, r12d
jg SHORT G_M46192_IG06
- ;; size=123 bbWeight=16 PerfScore 612.00
-G_M46192_IG07: ; bbWeight=2, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r13]
+ ;; size=102 bbWeight=16 PerfScore 504.00
+G_M46192_IG07: ; bbWeight=4, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14]
mov rcx, r15
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
@@ -267,23 +256,23 @@ G_M46192_IG07: ; bbWeight=2, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, by
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
- mov rdx, r12
+ mov rdx, r13
; gcrRegs +[rdx]
lea r11, [(reloc)] ; function address
cmp dword ptr [rcx], ecx
call [r11]<unknown method>
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
- mov rcx, r12
+ mov rcx, r13
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
cmp dword ptr [rcx], ecx
call [r11]<unknown method>
- ; gcrRegs -[rcx r12]
+ ; gcrRegs -[rcx r13]
; gcr arg pop 0
- ;; size=46 bbWeight=2 PerfScore 35.00
-G_M46192_IG08: ; bbWeight=4, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefRegs=0000 {}, byref
- mov rcx, r14
+ ;; size=46 bbWeight=4 PerfScore 70.00
+G_M46192_IG08: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
+ mov rcx, gword ptr [rbp-0x40]
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
call [r11]<unknown method>
@@ -291,28 +280,28 @@ G_M46192_IG08: ; bbWeight=4, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefR
; gcr arg pop 0
test eax, eax
jne G_M46192_IG04
- ;; size=21 bbWeight=4 PerfScore 20.00
-G_M46192_IG09: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=22 bbWeight=4 PerfScore 23.00
+G_M46192_IG09: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
...
-12 (-3.70%) : 28654.dasm - System.Collections.Concurrent.ConcurrentQueue1[System.__Canon]:GetCount(System.Collections.Concurrent.ConcurrentQueueSegment
1[System.Canon],int,System.Collections.Concurrent.ConcurrentQueueSegment`1[System.Canon],int):long (FullOpts)
@@ -12,9 +12,9 @@
;* V00 TypeCtx [V00 ] ( 0, 0 ) long -> zero-ref single-def
; V01 arg0 [V01,T04] ( 10, 8.50) ref -> rsi class-hnd single-def <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
; V02 arg1 [V02,T05] ( 8, 5.50) int -> rdi
-; V03 arg2 [V03,T02] ( 9, 11 ) ref -> rbx class-hnd single-def <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
-; V04 arg3 [V04,T11] ( 2, 1 ) int -> [rsp+0x70] single-def
-; V05 loc0 [V05,T03] ( 7, 11.50) long -> rbp
+; V03 arg2 [V03,T02] ( 9, 11.50) ref -> rbx class-hnd single-def <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
+; V04 arg3 [V04,T11] ( 2, 1.50) int -> rbp single-def
+; V05 loc0 [V05,T03] ( 7, 12.50) long -> r14
; V06 loc1 [V06,T06] ( 7, 4.50) int -> rcx
; V07 loc2 [V07,T00] ( 9, 29 ) ref -> rsi class-hnd <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -47,7 +47,8 @@ G_M52582_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov edi, r8d
mov rbx, r9
; gcrRegs +[rbx]
- ;; size=19 bbWeight=1 PerfScore 6.00
+ mov ebp, dword ptr [rsp+0x70]
+ ;; size=23 bbWeight=1 PerfScore 7.00
G_M52582_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rsi+0x1C], 0
jne SHORT G_M52582_IG04
@@ -105,19 +106,17 @@ G_M52582_IG09: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcr arg pop 0
;; size=19 bbWeight=0.50 PerfScore 3.62
G_M52582_IG10: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- xor ebp, ebp
+ xor r14d, r14d
cmp rsi, rbx
je SHORT G_M52582_IG12
- ;; size=7 bbWeight=1 PerfScore 1.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M52582_IG11: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov ecx, dword ptr [rsi+0xA0]
jmp SHORT G_M52582_IG13
;; size=8 bbWeight=0.50 PerfScore 2.00
G_M52582_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- mov r14d, dword ptr [rsp+0x70]
- mov ecx, r14d
- mov dword ptr [rsp+0x70], r14d
- ;; size=13 bbWeight=0.50 PerfScore 1.12
+ mov ecx, ebp
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M52582_IG13: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rsi+0x08]
; gcrRegs +[rdx]
@@ -144,7 +143,7 @@ G_M52582_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
sub edx, edi
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M52582_IG16: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- movsxd rbp, edx
+ movsxd r14, edx
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M52582_IG17: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp rsi, rbx
@@ -192,27 +191,26 @@ G_M52582_IG23: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
add ecx, ecx
sub eax, ecx
cdqe
- add rbp, rax
+ add r14, rax
mov rsi, gword ptr [rsi+0x10]
cmp rsi, rbx
jne SHORT G_M52582_IG19
;; size=31 bbWeight=4 PerfScore 41.00
-G_M52582_IG24: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M52582_IG24: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
mov rax, gword ptr [rbx+0x08]
; gcrRegs +[rax]
mov eax, dword ptr [rax+0x08]
; gcrRegs -[rax]
add eax, eax
- mov r14d, dword ptr [rsp+0x70]
- sub r14d, eax
- movsxd rax, r14d
- add rax, rbp
- mov rbp, rax
- ;; size=26 bbWeight=0.50 PerfScore 3.12
+ sub ebp, eax
+ movsxd rax, ebp
+ add rax, r14
+ mov r14, rax
+ ;; size=20 bbWeight=1 PerfScore 5.25
G_M52582_IG25: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
- mov rax, rbp
+ mov rax, r14
;; size=3 bbWeight=1 PerfScore 0.25
G_M52582_IG26: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
@@ -224,7 +222,7 @@ G_M52582_IG26: ; bbWeight=1, epilog, nogc, extend
ret
;; size=11 bbWeight=1 PerfScore 3.75
-; Total bytes of code 324, prolog size 19, PerfScore 163.38, instruction count 102, allocated bytes for code 324 (MethodHash=f6243299) for method System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:GetCount(System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon],int,System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon],int):long (FullOpts)
+; Total bytes of code 312, prolog size 23, PerfScore 165.50, instruction count 100, allocated bytes for code 312 (MethodHash=f6243299) for method System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:GetCount(System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon],int,System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon],int):long (FullOpts)
; ============================================================
Unwind Info:
+39 (+4.50%) : 29532.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan1[ushort],System.ReadOnlySpan
1[ushort],int,ulong,ubyte):int:this (FullOpts)
@@ -14,7 +14,7 @@
; V02 arg2 [V02,T10] ( 4, 8 ) byref -> r8 ld-addr-op single-def
; V03 arg3 [V03,T15] ( 5, 3.50) int -> [rbp+0x28] single-def
; V04 arg4 [V04,T25] ( 4, 2 ) long -> rdi single-def
-; V05 arg5 [V05,T28] ( 2, 1 ) ubyte -> [rbp+0x38] single-def
+; V05 arg5 [V05,T28] ( 2, 1.50) ubyte -> [rbp+0x38] single-def
;* V06 loc0 [V06 ] ( 0, 0 ) long -> zero-ref
; V07 loc1 [V07 ] ( 1, 1 ) byref -> [rbp-0x40] must-init pinned single-def
;* V08 loc2 [V08 ] ( 0, 0 ) long -> zero-ref
@@ -26,7 +26,7 @@
; V14 loc8 [V14,T17] ( 3, 5 ) int -> rdx
; V15 loc9 [V15,T08] ( 7, 17.50) int -> rax
; V16 loc10 [V16,T02] ( 5, 84 ) int -> r8
-; V17 loc11 [V17,T03] ( 8, 75 ) int -> r9
+; V17 loc11 [V17,T03] ( 8, 75.50) int -> r9
; V18 loc12 [V18,T00] ( 8,176 ) ushort -> r10
; V19 loc13 [V19,T01] ( 6,112 ) ushort -> r11
;* V20 loc14 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
@@ -45,11 +45,11 @@
;* V33 tmp12 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V34 tmp13 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V35 tmp14 [V35,T13] ( 5, 6 ) int -> rax "Single return block return value"
-; V36 PInvokeFrame [V36 ] ( 5, 3 ) struct (88) [rbp-0xE8] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V37 tmp16 [V37,T22] ( 4, 3.50) byref -> r13 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V38 tmp17 [V38,T11] ( 9, 8.50) int -> r12 "field V01._length (fldOffset=0x8)" P-INDEP
-; V39 tmp18 [V39,T19] ( 4, 4 ) byref -> r14 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V40 tmp19 [V40,T07] ( 11, 26 ) int -> r15 "field V02._length (fldOffset=0x8)" P-INDEP
+; V36 PInvokeFrame [V36 ] ( 5, 3 ) struct (88) [rbp-0xF0] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V37 tmp16 [V37,T22] ( 4, 3.50) byref -> r12 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V38 tmp17 [V38,T11] ( 9, 9 ) int -> [rbp-0x5C] spill-single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V39 tmp18 [V39,T19] ( 4, 4 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V40 tmp19 [V40,T07] ( 11, 26 ) int -> r13 "field V02._length (fldOffset=0x8)" P-INDEP
;* V41 tmp20 [V41 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
;* V42 tmp21 [V42 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;* V43 tmp22 [V43 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP
@@ -66,15 +66,15 @@
;* V54 tmp33 [V54 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
; V55 tmp34 [V55,T20] ( 2, 4 ) long -> rax "Cast away GC"
; V56 tmp35 [V56,T21] ( 2, 4 ) long -> rcx "Cast away GC"
-; V57 tmp36 [V57 ] ( 6, 9 ) struct (16) [rbp-0x68] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V58 cse0 [V58,T24] ( 3, 2.50) byref -> [rbp-0x70] spill-single-def "CSE - moderate"
+; V57 tmp36 [V57 ] ( 6, 9 ) struct (16) [rbp-0x70] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V58 cse0 [V58,T24] ( 3, 2.50) byref -> [rbp-0x78] spill-single-def "CSE - moderate"
; V59 cse1 [V59,T18] ( 9, 4.50) ref -> rdx multi-def "CSE - moderate"
-; TEMP_01 int -> [rbp-0x74]
-; TEMP_04 long -> [rbp-0x7C]
-; TEMP_03 long -> [rbp-0x84]
-; TEMP_02 long -> [rbp-0x8C]
+; TEMP_01 int -> [rbp-0x7C]
+; TEMP_04 long -> [rbp-0x84]
+; TEMP_03 long -> [rbp-0x8C]
+; TEMP_02 long -> [rbp-0x94]
;
-; Lcl frame size = 232
+; Lcl frame size = 248
G_M55808_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -85,34 +85,36 @@ G_M55808_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rdi
push rsi
push rbx
- sub rsp, 232
- lea rbp, [rsp+0x120]
- xor eax, eax
- mov qword ptr [rbp-0x68], rax
+ sub rsp, 248
+ lea rbp, [rsp+0x130]
xorps xmm4, xmm4
+ movaps xmmword ptr [rbp-0x70], xmm4
movaps xmmword ptr [rbp-0x60], xmm4
movaps xmmword ptr [rbp-0x50], xmm4
+ xor eax, eax
mov qword ptr [rbp-0x40], rax
mov rbx, rcx
; gcrRegs +[rbx]
mov esi, r9d
mov rdi, qword ptr [rbp+0x30]
- ;; size=58 bbWeight=1 PerfScore 16.83
+ mov r14d, dword ptr [rbp+0x38]
+ ;; size=62 bbWeight=1 PerfScore 18.83
G_M55808_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0104 {rdx r8}, byref, isz
; byrRegs +[rdx r8]
- mov r14, bword ptr [r8]
- ; byrRegs +[r14]
- mov r15d, dword ptr [r8+0x08]
- mov r13, bword ptr [rdx]
- ; byrRegs +[r13]
- mov r12d, dword ptr [rdx+0x08]
+ mov r15, bword ptr [r8]
+ ; byrRegs +[r15]
+ mov r13d, dword ptr [r8+0x08]
+ mov r12, bword ptr [rdx]
+ ; byrRegs +[r12]
+ mov eax, dword ptr [rdx+0x08]
+ mov dword ptr [rbp-0x5C], eax
call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
; byrRegs -[rdx r8] +[rax]
; gcr arg pop 0
cmp byte ptr [rax+0x0B49], 0
je SHORT G_M55808_IG04
- ;; size=29 bbWeight=1 PerfScore 15.00
-G_M55808_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref
+ ;; size=31 bbWeight=1 PerfScore 16.00
+G_M55808_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref
; byrRegs -[rax]
mov rcx, qword ptr [(reloc)] ; const ptr
mov rdx, gword ptr [rcx]
@@ -123,11 +125,11 @@ G_M55808_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=0.50 PerfScore 3.62
-G_M55808_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
- test r15d, r15d
+G_M55808_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz
+ test r13d, r13d
jne SHORT G_M55808_IG06
;; size=5 bbWeight=1 PerfScore 1.25
-G_M55808_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref
+G_M55808_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref
mov rcx, qword ptr [(reloc)] ; const ptr
mov rdx, gword ptr [rcx]
; gcrRegs +[rdx]
@@ -137,13 +139,13 @@ G_M55808_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=0.50 PerfScore 3.62
-G_M55808_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
+G_M55808_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz
mov gword ptr [rbp+0x10], rbx
; GC ptr vars +{V00}
cmp byte ptr [rbx+0x2C], 0
je SHORT G_M55808_IG09
;; size=10 bbWeight=1 PerfScore 5.00
-G_M55808_IG07: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
+G_M55808_IG07: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, gcvars, byref, isz
; gcrRegs -[rbx]
mov dword ptr [rbp+0x28], esi
xor ecx, ecx
@@ -152,10 +154,10 @@ G_M55808_IG07: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=
test cl, cl
jne SHORT G_M55808_IG10
;; size=16 bbWeight=0.50 PerfScore 1.88
-G_M55808_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M55808_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
mov esi, dword ptr [rbp+0x28]
;; size=3 bbWeight=0.25 PerfScore 0.25
-G_M55808_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M55808_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
mov rcx, qword ptr [(reloc)] ; const ptr
mov rdx, gword ptr [rcx]
; gcrRegs +[rdx]
@@ -166,259 +168,272 @@ G_M55808_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r1
; gcr arg pop 0
mov dword ptr [rbp+0x28], esi
;; size=22 bbWeight=0.50 PerfScore 4.12
-G_M55808_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
- mov bword ptr [rbp-0x40], r13
- mov rax, r13
- mov bword ptr [rbp-0x48], r14
- mov rcx, r14
+G_M55808_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref, isz
+ mov bword ptr [rbp-0x40], r12
+ mov rax, r12
+ mov bword ptr [rbp-0x48], r15
+ mov rcx, r15
mov qword ptr [rbp-0x50], rax
mov qword ptr [rbp-0x58], rcx
call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE]
; byrRegs +[rax]
; gcr arg pop 0
- mov bword ptr [rbp-0x70], rax
+ mov bword ptr [rbp-0x78], rax
; GC ptr vars +{V58}
mov rcx, gword ptr [rax+0x398]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M55808_IG40
- mov bword ptr [rbp-0x68], r14
- mov dword ptr [rbp-0x60], r15d
- lea rdx, [rbp-0x68]
+ je G_M55808_IG43
+ mov bword ptr [rbp-0x70], r15
+ mov dword ptr [rbp-0x68], r13d
+ lea rdx, [rbp-0x70]
lea r11, [(reloc)] ; function address
call [r11]<unknown method>
; gcrRegs -[rcx]
- ; byrRegs -[rax r14]
+ ; byrRegs -[rax r15]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M55808_IG13
+ jne SHORT G_M55808_IG14
;; size=74 bbWeight=1 PerfScore 19.00
-G_M55808_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
- cmp r15d, r12d
- jle SHORT G_M55808_IG14
- mov r14, bword ptr [rbp-0x70]
- ; byrRegs +[r14]
- mov rcx, gword ptr [r14+0x398]
+G_M55808_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz
+ mov r15d, dword ptr [rbp-0x5C]
+ cmp r13d, r15d
+ jle SHORT G_M55808_IG15
+ mov rdx, bword ptr [rbp-0x78]
+ ; byrRegs +[rdx]
+ mov rcx, gword ptr [rdx+0x398]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M55808_IG40
- mov bword ptr [rbp-0x68], r13
- mov dword ptr [rbp-0x60], r12d
- lea rdx, [rbp-0x68]
+ je G_M55808_IG43
+ mov bword ptr [rbp-0x70], r12
+ mov dword ptr [rbp-0x68], r15d
+ lea rdx, [rbp-0x70]
+ ; byrRegs -[rdx]
lea r11, [(reloc)] ; function address
; GC ptr vars -{V58}
call [r11]<unknown method>
; gcrRegs -[rcx]
- ; byrRegs -[r13-r14]
+ ; byrRegs -[r12]
; gcr arg pop 0
test eax, eax
- mov r13, qword ptr [rbp-0x50]
- mov r14, qword ptr [rbp-0x58]
- jne G_M55808_IG33
- ;; size=63 bbWeight=0.50 PerfScore 7.38
+ mov dword ptr [rbp+0x38], r14d
+ mov r12, qword ptr [rbp-0x50]
+ jne SHORT G_M55808_IG13
+ ;; size=63 bbWeight=0.50 PerfScore 7.88
G_M55808_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V00}
mov eax, -1
- jmp G_M55808_IG39
+ jmp G_M55808_IG42
;; size=10 bbWeight=0.50 PerfScore 1.12
-G_M55808_IG13: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M55808_IG13: ; bbWeight=0.25, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V00 V12}
- mov r13, qword ptr [rbp-0x50]
mov r14, qword ptr [rbp-0x58]
- jmp G_M55808_IG33
- ;; size=13 bbWeight=0.50 PerfScore 2.00
-G_M55808_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp byte ptr [rbp+0x38], 0
...
+39 (+4.80%) : 29533.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan1[ushort],System.ReadOnlySpan
1[ushort],int,ulong,ubyte):int:this (FullOpts)
@@ -14,7 +14,7 @@
; V02 arg2 [V02,T10] ( 4, 8 ) byref -> r8 ld-addr-op single-def
; V03 arg3 [V03,T15] ( 5, 3.50) int -> [rbp+0x28] single-def
; V04 arg4 [V04,T25] ( 4, 2 ) long -> rdi single-def
-; V05 arg5 [V05,T28] ( 2, 1 ) ubyte -> [rbp+0x38] single-def
+; V05 arg5 [V05,T28] ( 2, 1.50) ubyte -> [rbp+0x38] single-def
;* V06 loc0 [V06 ] ( 0, 0 ) long -> zero-ref
; V07 loc1 [V07 ] ( 1, 1 ) byref -> [rbp-0x40] must-init pinned single-def
;* V08 loc2 [V08 ] ( 0, 0 ) long -> zero-ref
@@ -26,7 +26,7 @@
; V14 loc8 [V14,T17] ( 3, 5 ) int -> rdx
; V15 loc9 [V15,T08] ( 7, 17.50) int -> rax
; V16 loc10 [V16,T01] ( 5, 84 ) int -> r8
-; V17 loc11 [V17,T02] ( 8, 75 ) int -> r9
+; V17 loc11 [V17,T02] ( 8, 75.50) int -> r9
; V18 loc12 [V18,T00] ( 4,128 ) ushort -> r10
; V19 loc13 [V19,T04] ( 2, 64 ) ushort -> r11
;* V20 loc14 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
@@ -45,11 +45,11 @@
;* V33 tmp12 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V34 tmp13 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V35 tmp14 [V35,T13] ( 5, 6 ) int -> rax "Single return block return value"
-; V36 PInvokeFrame [V36 ] ( 5, 3 ) struct (88) [rbp-0xE8] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V37 tmp16 [V37,T22] ( 4, 3.50) byref -> r13 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V38 tmp17 [V38,T11] ( 9, 8.50) int -> r12 "field V01._length (fldOffset=0x8)" P-INDEP
-; V39 tmp18 [V39,T19] ( 4, 4 ) byref -> r14 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V40 tmp19 [V40,T07] ( 11, 26 ) int -> r15 "field V02._length (fldOffset=0x8)" P-INDEP
+; V36 PInvokeFrame [V36 ] ( 5, 3 ) struct (88) [rbp-0xF0] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V37 tmp16 [V37,T22] ( 4, 3.50) byref -> r12 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V38 tmp17 [V38,T11] ( 9, 9 ) int -> [rbp-0x5C] spill-single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V39 tmp18 [V39,T19] ( 4, 4 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V40 tmp19 [V40,T07] ( 11, 26 ) int -> r13 "field V02._length (fldOffset=0x8)" P-INDEP
;* V41 tmp20 [V41 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
;* V42 tmp21 [V42 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;* V43 tmp22 [V43 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP
@@ -66,15 +66,15 @@
;* V54 tmp33 [V54 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
; V55 tmp34 [V55,T20] ( 2, 4 ) long -> rax "Cast away GC"
; V56 tmp35 [V56,T21] ( 2, 4 ) long -> rcx "Cast away GC"
-; V57 tmp36 [V57 ] ( 6, 9 ) struct (16) [rbp-0x68] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V58 cse0 [V58,T24] ( 3, 2.50) byref -> [rbp-0x70] spill-single-def "CSE - moderate"
+; V57 tmp36 [V57 ] ( 6, 9 ) struct (16) [rbp-0x70] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V58 cse0 [V58,T24] ( 3, 2.50) byref -> [rbp-0x78] spill-single-def "CSE - moderate"
; V59 cse1 [V59,T18] ( 9, 4.50) ref -> rdx multi-def "CSE - moderate"
-; TEMP_01 int -> [rbp-0x74]
-; TEMP_04 long -> [rbp-0x7C]
-; TEMP_03 long -> [rbp-0x84]
-; TEMP_02 long -> [rbp-0x8C]
+; TEMP_01 int -> [rbp-0x7C]
+; TEMP_04 long -> [rbp-0x84]
+; TEMP_03 long -> [rbp-0x8C]
+; TEMP_02 long -> [rbp-0x94]
;
-; Lcl frame size = 232
+; Lcl frame size = 248
G_M39468_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -85,34 +85,36 @@ G_M39468_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rdi
push rsi
push rbx
- sub rsp, 232
- lea rbp, [rsp+0x120]
- xor eax, eax
- mov qword ptr [rbp-0x68], rax
+ sub rsp, 248
+ lea rbp, [rsp+0x130]
xorps xmm4, xmm4
+ movaps xmmword ptr [rbp-0x70], xmm4
movaps xmmword ptr [rbp-0x60], xmm4
movaps xmmword ptr [rbp-0x50], xmm4
+ xor eax, eax
mov qword ptr [rbp-0x40], rax
mov rbx, rcx
; gcrRegs +[rbx]
mov esi, r9d
mov rdi, qword ptr [rbp+0x30]
- ;; size=58 bbWeight=1 PerfScore 16.83
+ mov r14d, dword ptr [rbp+0x38]
+ ;; size=62 bbWeight=1 PerfScore 18.83
G_M39468_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0104 {rdx r8}, byref, isz
; byrRegs +[rdx r8]
- mov r14, bword ptr [r8]
- ; byrRegs +[r14]
- mov r15d, dword ptr [r8+0x08]
- mov r13, bword ptr [rdx]
- ; byrRegs +[r13]
- mov r12d, dword ptr [rdx+0x08]
+ mov r15, bword ptr [r8]
+ ; byrRegs +[r15]
+ mov r13d, dword ptr [r8+0x08]
+ mov r12, bword ptr [rdx]
+ ; byrRegs +[r12]
+ mov eax, dword ptr [rdx+0x08]
+ mov dword ptr [rbp-0x5C], eax
call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
; byrRegs -[rdx r8] +[rax]
; gcr arg pop 0
cmp byte ptr [rax+0x0B49], 0
je SHORT G_M39468_IG04
- ;; size=29 bbWeight=1 PerfScore 15.00
-G_M39468_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref
+ ;; size=31 bbWeight=1 PerfScore 16.00
+G_M39468_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref
; byrRegs -[rax]
mov rcx, qword ptr [(reloc)] ; const ptr
mov rdx, gword ptr [rcx]
@@ -123,11 +125,11 @@ G_M39468_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=0.50 PerfScore 3.62
-G_M39468_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
- test r15d, r15d
+G_M39468_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz
+ test r13d, r13d
jne SHORT G_M39468_IG06
;; size=5 bbWeight=1 PerfScore 1.25
-G_M39468_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref
mov rcx, qword ptr [(reloc)] ; const ptr
mov rdx, gword ptr [rcx]
; gcrRegs +[rdx]
@@ -137,13 +139,13 @@ G_M39468_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=0.50 PerfScore 3.62
-G_M39468_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
+G_M39468_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz
mov gword ptr [rbp+0x10], rbx
; GC ptr vars +{V00}
cmp byte ptr [rbx+0x2C], 0
je SHORT G_M39468_IG09
;; size=10 bbWeight=1 PerfScore 5.00
-G_M39468_IG07: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
+G_M39468_IG07: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, gcvars, byref, isz
; gcrRegs -[rbx]
mov dword ptr [rbp+0x28], esi
xor ecx, ecx
@@ -152,10 +154,10 @@ G_M39468_IG07: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=
test cl, cl
jne SHORT G_M39468_IG10
;; size=16 bbWeight=0.50 PerfScore 1.88
-G_M39468_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
mov esi, dword ptr [rbp+0x28]
;; size=3 bbWeight=0.25 PerfScore 0.25
-G_M39468_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
mov rcx, qword ptr [(reloc)] ; const ptr
mov rdx, gword ptr [rcx]
; gcrRegs +[rdx]
@@ -166,237 +168,250 @@ G_M39468_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r1
; gcr arg pop 0
mov dword ptr [rbp+0x28], esi
;; size=22 bbWeight=0.50 PerfScore 4.12
-G_M39468_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
- mov bword ptr [rbp-0x40], r13
- mov rax, r13
- mov bword ptr [rbp-0x48], r14
- mov rcx, r14
+G_M39468_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref, isz
+ mov bword ptr [rbp-0x40], r12
+ mov rax, r12
+ mov bword ptr [rbp-0x48], r15
+ mov rcx, r15
mov qword ptr [rbp-0x50], rax
mov qword ptr [rbp-0x58], rcx
call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE]
; byrRegs +[rax]
; gcr arg pop 0
- mov bword ptr [rbp-0x70], rax
+ mov bword ptr [rbp-0x78], rax
; GC ptr vars +{V58}
mov rcx, gword ptr [rax+0x398]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M39468_IG35
- mov bword ptr [rbp-0x68], r14
- mov dword ptr [rbp-0x60], r15d
- lea rdx, [rbp-0x68]
+ je G_M39468_IG38
+ mov bword ptr [rbp-0x70], r15
+ mov dword ptr [rbp-0x68], r13d
+ lea rdx, [rbp-0x70]
lea r11, [(reloc)] ; function address
call [r11]<unknown method>
; gcrRegs -[rcx]
- ; byrRegs -[rax r14]
+ ; byrRegs -[rax r15]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M39468_IG13
+ jne SHORT G_M39468_IG14
;; size=74 bbWeight=1 PerfScore 19.00
-G_M39468_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
- cmp r15d, r12d
- jle SHORT G_M39468_IG14
- mov r14, bword ptr [rbp-0x70]
- ; byrRegs +[r14]
- mov rcx, gword ptr [r14+0x398]
+G_M39468_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz
+ mov r15d, dword ptr [rbp-0x5C]
+ cmp r13d, r15d
+ jle SHORT G_M39468_IG15
+ mov rdx, bword ptr [rbp-0x78]
+ ; byrRegs +[rdx]
+ mov rcx, gword ptr [rdx+0x398]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M39468_IG35
- mov bword ptr [rbp-0x68], r13
- mov dword ptr [rbp-0x60], r12d
- lea rdx, [rbp-0x68]
+ je G_M39468_IG38
+ mov bword ptr [rbp-0x70], r12
+ mov dword ptr [rbp-0x68], r15d
+ lea rdx, [rbp-0x70]
+ ; byrRegs -[rdx]
lea r11, [(reloc)] ; function address
; GC ptr vars -{V58}
call [r11]<unknown method>
; gcrRegs -[rcx]
- ; byrRegs -[r13-r14]
+ ; byrRegs -[r12]
; gcr arg pop 0
test eax, eax
- mov r13, qword ptr [rbp-0x50]
- mov r14, qword ptr [rbp-0x58]
- jne G_M39468_IG28
- ;; size=63 bbWeight=0.50 PerfScore 7.38
+ mov dword ptr [rbp+0x38], r14d
+ mov r12, qword ptr [rbp-0x50]
+ jne SHORT G_M39468_IG13
+ ;; size=63 bbWeight=0.50 PerfScore 7.88
G_M39468_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V00}
mov eax, -1
- jmp G_M39468_IG34
+ jmp G_M39468_IG37
;; size=10 bbWeight=0.50 PerfScore 1.12
-G_M39468_IG13: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M39468_IG13: ; bbWeight=0.25, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V00 V12}
- mov r13, qword ptr [rbp-0x50]
mov r14, qword ptr [rbp-0x58]
- jmp G_M39468_IG28
- ;; size=13 bbWeight=0.50 PerfScore 2.00
-G_M39468_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp byte ptr [rbp+0x38], 0
...
+38 (+5.07%) : 261442.dasm - System.Linq.Parallel.GroupJoinQueryOperator4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:WrapPartitionedStreamHelper[int,System.__Canon](System.Linq.Parallel.PartitionedStream
2[System.Linq.Parallel.Pair2[System.__Canon,System.__Canon],int],System.Linq.Parallel.PartitionedStream
2[System.Canon,System.Canon],System.Linq.Parallel.IPartitionedStreamRecipient`1[System.__Canon],int,System.Threading.CancellationToken):this (FullOpts)
@@ -9,43 +9,43 @@
; 0 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 11, 14 ) ref -> rbx this class-hnd single-def <System.Linq.Parallel.GroupJoinQueryOperator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]>
-; V01 TypeCtx [V01,T13] ( 12, 7 ) long -> rdi single-def
-; V02 arg1 [V02,T16] ( 4, 3 ) ref -> r15 class-hnd single-def <System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],int]>
-; V03 arg2 [V03,T15] ( 5, 3.50) ref -> r14 class-hnd single-def <System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.__Canon]>
-; V04 arg3 [V04,T31] ( 2, 1 ) ref -> [rbp+0x30] class-hnd single-def <System.Linq.Parallel.IPartitionedStreamRecipient`1[System.__Canon]>
-; V05 arg4 [V05,T12] ( 8, 11 ) int -> rsi single-def
+; V00 this [V00,T06] ( 11, 15 ) ref -> rbx this class-hnd single-def <System.Linq.Parallel.GroupJoinQueryOperator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]>
+; V01 TypeCtx [V01,T13] ( 12, 8.50) long -> rdi single-def
+; V02 arg1 [V02,T16] ( 4, 4 ) ref -> r15 class-hnd single-def <System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],int]>
+; V03 arg2 [V03,T15] ( 5, 4 ) ref -> r14 class-hnd single-def <System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.__Canon]>
+; V04 arg3 [V04,T27] ( 2, 2 ) ref -> r12 class-hnd single-def <System.Linq.Parallel.IPartitionedStreamRecipient`1[System.__Canon]>
+; V05 arg4 [V05,T12] ( 8, 12 ) int -> rsi single-def
;* V06 arg5 [V06 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Threading.CancellationToken>
-; V07 loc0 [V07,T14] ( 3, 8.50) ref -> r12 class-hnd single-def <System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],System.__Canon]>
-; V08 loc1 [V08,T17] ( 3, 5 ) ref -> [rbp-0x60] class-hnd exact spill-single-def <System.Linq.Parallel.HashLookupBuilder`3[System.Collections.Generic.IEnumerable`1[System.__Canon],System.Linq.Parallel.Pair`2[ubyte,System.__Canon],System.__Canon][]>
+; V07 loc0 [V07,T14] ( 3, 8.50) ref -> [rbp-0x68] class-hnd spill-single-def <System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],System.__Canon]>
+; V08 loc1 [V08,T17] ( 3, 5.50) ref -> [rbp-0x70] class-hnd exact spill-single-def <System.Linq.Parallel.HashLookupBuilder`3[System.Collections.Generic.IEnumerable`1[System.__Canon],System.Linq.Parallel.Pair`2[ubyte,System.__Canon],System.__Canon][]>
; V09 loc2 [V09,T02] ( 7, 24.50) int -> [rbp-0x44]
; V10 loc3 [V10,T19] ( 2, 4.50) ref -> r14 class-hnd single-def <System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],int]>
-; V11 loc4 [V11,T18] ( 3, 5 ) ref -> r12 class-hnd exact single-def <System.Linq.Parallel.HashLookupBuilder`3[System.Collections.Generic.IEnumerable`1[System.__Canon],int,System.__Canon][]>
+; V11 loc4 [V11,T18] ( 3, 5.50) ref -> [rbp-0x78] class-hnd exact spill-single-def <System.Linq.Parallel.HashLookupBuilder`3[System.Collections.Generic.IEnumerable`1[System.__Canon],int,System.__Canon][]>
; V12 loc5 [V12,T03] ( 7, 24.50) int -> [rbp-0x48]
; V13 OutArgs [V13 ] ( 1, 1 ) struct (64) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T01] ( 5, 40 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Parallel.GroupJoinHashLookupBuilder`3[System.__Canon,int,System.__Canon]>
-; V15 tmp2 [V15,T07] ( 2, 16 ) ref -> [rbp-0x70] class-hnd spill-single-def "impAppendStmt" <System.Linq.Parallel.QueryOperatorEnumerator`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],System.__Canon]>
-; V16 tmp3 [V16,T08] ( 2, 16 ) ref -> [rbp-0x78] class-hnd spill-single-def "impAppendStmt" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
-; V17 tmp4 [V17,T00] ( 6, 48 ) ref -> [rbp-0x80] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Parallel.OrderedGroupJoinHashLookupBuilder`3[System.__Canon,System.__Canon,System.__Canon]>
+; V14 tmp1 [V14,T01] ( 5, 40 ) ref -> [rbp-0x80] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Parallel.GroupJoinHashLookupBuilder`3[System.__Canon,int,System.__Canon]>
+; V15 tmp2 [V15,T07] ( 2, 16 ) ref -> [rbp-0x88] class-hnd spill-single-def "impAppendStmt" <System.Linq.Parallel.QueryOperatorEnumerator`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],System.__Canon]>
+; V16 tmp3 [V16,T08] ( 2, 16 ) ref -> [rbp-0x90] class-hnd spill-single-def "impAppendStmt" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V17 tmp4 [V17,T00] ( 6, 48 ) ref -> [rbp-0x98] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Parallel.OrderedGroupJoinHashLookupBuilder`3[System.__Canon,System.__Canon,System.__Canon]>
;* V18 tmp5 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Linq.Parallel.QueryOperator`1[System.__Canon]>
-; V19 tmp6 [V19,T09] ( 2, 16 ) ref -> [rbp-0x88] class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.IComparer`1[System.__Canon]>
-; V20 tmp7 [V20,T10] ( 2, 16 ) ref -> [rbp-0x90] class-hnd spill-single-def "Inlining Arg" <System.Linq.Parallel.QueryOperatorEnumerator`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],int]>
-; V21 tmp8 [V21,T11] ( 2, 16 ) ref -> [rbp-0x98] class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
-; V22 tmp9 [V22,T22] ( 4, 2 ) ref -> r13 single-def "field V06._source (fldOffset=0x0)" P-INDEP
-; V23 tmp10 [V23,T24] ( 2, 2 ) long -> rcx "argument with side effect"
-; V24 tmp11 [V24,T25] ( 2, 2 ) long -> rcx "argument with side effect"
+; V19 tmp6 [V19,T09] ( 2, 16 ) ref -> [rbp-0xA0] class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.IComparer`1[System.__Canon]>
+; V20 tmp7 [V20,T10] ( 2, 16 ) ref -> [rbp-0xA8] class-hnd spill-single-def "Inlining Arg" <System.Linq.Parallel.QueryOperatorEnumerator`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],int]>
+; V21 tmp8 [V21,T11] ( 2, 16 ) ref -> [rbp-0xB0] class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V22 tmp9 [V22,T26] ( 4, 3 ) ref -> r13 single-def "field V06._source (fldOffset=0x0)" P-INDEP
+; V23 tmp10 [V23,T28] ( 2, 2 ) long -> rcx "argument with side effect"
+; V24 tmp11 [V24,T29] ( 2, 2 ) long -> rcx "argument with side effect"
; V25 tmp12 [V25,T04] ( 3, 24 ) ref -> rcx "arr expr"
-; V26 tmp13 [V26,T26] ( 2, 2 ) long -> rdx "argument with side effect"
-; V27 tmp14 [V27,T27] ( 2, 2 ) long -> rcx "argument with side effect"
-; V28 tmp15 [V28,T28] ( 2, 2 ) long -> rcx "argument with side effect"
+; V26 tmp13 [V26,T23] ( 2, 4 ) long -> rdx "argument with side effect"
+; V27 tmp14 [V27,T30] ( 2, 2 ) long -> rcx "argument with side effect"
+; V28 tmp15 [V28,T31] ( 2, 2 ) long -> rcx "argument with side effect"
; V29 tmp16 [V29,T05] ( 3, 24 ) ref -> rcx "arr expr"
-; V30 tmp17 [V30,T29] ( 2, 2 ) long -> rcx "argument with side effect"
-; V31 tmp18 [V31,T30] ( 2, 2 ) long -> r12 "argument with side effect"
-; V32 tmp19 [V32,T23] ( 2, 2 ) ref -> rax single-def "argument with side effect"
-; V33 cse0 [V33,T20] ( 2, 4.25) long -> [rbp-0x50] spill-single-def hoist "CSE - moderate"
-; V34 cse1 [V34,T21] ( 2, 4.25) long -> [rbp-0x58] spill-single-def hoist "CSE - moderate"
+; V30 tmp17 [V30,T24] ( 2, 4 ) long -> rcx "argument with side effect"
+; V31 tmp18 [V31,T25] ( 2, 4 ) long -> [rbp-0x50] spill-single-def "argument with side effect"
+; V32 tmp19 [V32,T22] ( 2, 4 ) ref -> rax single-def "argument with side effect"
+; V33 cse0 [V33,T20] ( 2, 4.25) long -> [rbp-0x58] spill-single-def hoist "CSE - moderate"
+; V34 cse1 [V34,T21] ( 2, 4.25) long -> [rbp-0x60] spill-single-def hoist "CSE - moderate"
;
-; Lcl frame size = 168
+; Lcl frame size = 184
G_M28277_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -56,8 +56,8 @@ G_M28277_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rdi
push rsi
push rbx
- sub rsp, 168
- lea rbp, [rsp+0xE0]
+ sub rsp, 184
+ lea rbp, [rsp+0xF0]
mov qword ptr [rbp-0x40], rdx
mov rbx, rcx
; gcrRegs +[rbx]
@@ -66,17 +66,19 @@ G_M28277_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[r15]
mov r14, r9
; gcrRegs +[r14]
+ mov r12, gword ptr [rbp+0x30]
+ ; gcrRegs +[r12]
mov esi, dword ptr [rbp+0x38]
mov r13, gword ptr [rbp+0x40]
; gcrRegs +[r13]
- ;; size=50 bbWeight=1 PerfScore 12.75
-G_M28277_IG02: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+ ;; size=54 bbWeight=1 PerfScore 13.75
+G_M28277_IG02: ; bbWeight=1, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x48]
; gcrRegs +[rcx]
cmp byte ptr [rcx+0x38], 0
je G_M28277_IG09
;; size=14 bbWeight=1 PerfScore 6.00
-G_M28277_IG03: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M28277_IG03: ; bbWeight=0.50, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
mov rcx, rdi
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
@@ -92,8 +94,8 @@ G_M28277_IG03: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRe
; gcrRegs +[rdx]
call [System.Linq.Parallel.ExchangeUtilities:HashRepartitionOrdered[System.__Canon,System.__Canon,System.__Canon](System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.Threading.CancellationToken):System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],System.__Canon]]
; gcrRegs -[rdx r8-r9] +[rax]
- mov r12, rax
- ; gcrRegs +[r12]
+ mov gword ptr [rbp-0x68], rax
+ ; GC ptr vars +{V07}
mov rcx, rdi
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcrRegs -[rax]
@@ -101,83 +103,87 @@ G_M28277_IG03: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRe
movsxd rdx, esi
call [CORINFO_HELP_NEWARR_1_DIRECT]
; gcrRegs +[rax]
- mov gword ptr [rbp-0x60], rax
+ mov gword ptr [rbp-0x70], rax
; GC ptr vars +{V08}
xor edx, edx
mov dword ptr [rbp-0x44], edx
test esi, esi
jle G_M28277_IG06
- ;; size=83 bbWeight=0.50 PerfScore 11.75
-G_M28277_IG04: ; bbWeight=0.25, gcVars=0000000000020000 {V08}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=84 bbWeight=0.50 PerfScore 12.12
+G_M28277_IG04: ; bbWeight=0.25, gcVars=0000000000024000 {V07 V08}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
mov rcx, rdi
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- mov qword ptr [rbp-0x50], rax
+ mov qword ptr [rbp-0x58], rax
;; size=13 bbWeight=0.25 PerfScore 1.06
G_M28277_IG05: ; bbWeight=4, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- mov rcx, gword ptr [r12+0x08]
+ mov rdx, gword ptr [rbp-0x68]
+ ; gcrRegs +[rdx]
+ mov rcx, gword ptr [rdx+0x08]
; gcrRegs +[rcx]
- mov edx, dword ptr [rbp-0x44]
- cmp edx, dword ptr [rcx+0x08]
+ mov r8d, dword ptr [rbp-0x44]
+ cmp r8d, dword ptr [rcx+0x08]
jae G_M28277_IG15
- mov dword ptr [rbp-0x44], edx
- mov r8d, edx
- mov r8, gword ptr [rcx+8*r8+0x10]
- ; gcrRegs +[r8]
- mov gword ptr [rbp-0x70], r8
- ; GC ptr vars +{V15}
- mov r10, gword ptr [rbx+0x70]
+ mov dword ptr [rbp-0x44], r8d
+ mov r10d, r8d
+ mov r10, gword ptr [rcx+8*r10+0x10]
; gcrRegs +[r10]
- mov gword ptr [rbp-0x78], r10
+ mov gword ptr [rbp-0x88], r10
+ ; GC ptr vars +{V15}
+ mov r9, gword ptr [rbx+0x70]
+ ; gcrRegs +[r9]
+ mov gword ptr [rbp-0x90], r9
; GC ptr vars +{V16}
mov rcx, rax
; gcrRegs -[rcx]
call [CORINFO_HELP_NEWFAST]
- ; gcrRegs -[r8 r10] +[rax]
- mov gword ptr [rbp-0x80], rax
+ ; gcrRegs -[rdx r9-r10] +[rax]
+ mov gword ptr [rbp-0x98], rax
; GC ptr vars +{V17}
- mov rdx, gword ptr [r12+0x10]
+ mov rdx, gword ptr [rbp-0x68]
; gcrRegs +[rdx]
- mov gword ptr [rbp-0x88], rdx
+ mov r8, gword ptr [rdx+0x10]
+ ; gcrRegs +[r8]
+ mov gword ptr [rbp-0xA0], r8
; GC ptr vars +{V19}
mov rcx, rax
; gcrRegs +[rcx]
call [<unknown method>]
- ; gcrRegs -[rax rcx rdx]
- mov rax, gword ptr [rbp-0x80]
+ ; gcrRegs -[rax rcx rdx r8]
+ mov rax, gword ptr [rbp-0x98]
; gcrRegs +[rax]
lea rcx, bword ptr [rax+0x08]
; byrRegs +[rcx]
- mov rdx, gword ptr [rbp-0x70]
+ mov rdx, gword ptr [rbp-0x88]
; gcrRegs +[rdx]
- ; GC ptr vars -{V15}
+ ; GC ptr vars -{V07 V15}
call [CORINFO_HELP_ASSIGN_REF]
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- mov rax, gword ptr [rbp-0x80]
+ mov rax, gword ptr [rbp-0x98]
; gcrRegs +[rax]
lea rcx, bword ptr [rax+0x10]
; byrRegs +[rcx]
- mov rdx, gword ptr [rbp-0x78]
+ mov rdx, gword ptr [rbp-0x90]
; gcrRegs +[rdx]
- ; GC ptr vars -{V08 V16}
+ ; GC ptr vars -{V08 V16} +{V07}
call [CORINFO_HELP_ASSIGN_REF]
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- mov rax, gword ptr [rbp-0x80]
+ mov rax, gword ptr [rbp-0x98]
; gcrRegs +[rax]
lea rcx, bword ptr [rax+0x18]
; byrRegs +[rcx]
- mov rdx, gword ptr [rbp-0x88]
+ mov rdx, gword ptr [rbp-0xA0]
; gcrRegs +[rdx]
; GC ptr vars -{V19} +{V08}
call [CORINFO_HELP_ASSIGN_REF]
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
movsxd rdx, dword ptr [rbp-0x44]
- mov rcx, gword ptr [rbp-0x60]
+ mov rcx, gword ptr [rbp-0x70]
; gcrRegs +[rcx]
- mov r8, gword ptr [rbp-0x80]
+ mov r8, gword ptr [rbp-0x98]
; gcrRegs +[r8]
; GC ptr vars -{V17}
call [CORINFO_HELP_ARRADDR_ST]
@@ -187,12 +193,12 @@ G_M28277_IG05: ; bbWeight=4, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefR
cmp eax, esi
mov dword ptr [rbp-0x44], eax
jl SHORT G_M28277_IG08
- ;; size=161 bbWeight=4 PerfScore 211.00
-G_M28277_IG06: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r12]
+ ;; size=197 bbWeight=4 PerfScore 219.00
+G_M28277_IG06: ; bbWeight=1, gcVars=0000000000020000 {V08}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars -{V07}
mov rcx, rdi
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- mov r12, rax
+ mov qword ptr [rbp-0x50], rax
mov rcx, rdi
...
libraries.pmi.windows.x64.checked.mch
-7 (-12.96%) : 25678.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRangeint:int (FullOpts)
@@ -10,26 +10,26 @@
;
; V00 arg0 [V00,T06] ( 3, 6 ) byref -> rcx single-def
; V01 arg1 [V01,T04] ( 4, 6.19) int -> rdx ld-addr-op single-def
-; V02 arg2 [V02,T05] ( 4, 6.19) int -> r8 ld-addr-op single-def
+; V02 arg2 [V02,T05] ( 3, 6 ) int -> r8 ld-addr-op single-def
; V03 arg3 [V03,T08] ( 3, 3 ) int -> r9 single-def
-; V04 loc0 [V04,T00] ( 7, 19.81) int -> rax
+; V04 loc0 [V04,T00] ( 7, 19 ) int -> rax
; V05 loc1 [V05,T07] ( 2, 8 ) byref -> r10
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 3, 16.39) int -> r9 "Inlining Arg"
;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 16.39) int -> r10 "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 16 ) int -> r10 "Inlining Arg"
; V11 cse0 [V11,T03] ( 3, 12 ) int -> r10 "CSE - aggressive"
;
; Lcl frame size = 0
-G_M34838_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M34838_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
G_M34838_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
; byrRegs +[rcx]
lea eax, [r9-0x01]
test eax, eax
- jl SHORT G_M34838_IG08
+ jl SHORT G_M34838_IG06
;; size=8 bbWeight=1 PerfScore 1.75
G_M34838_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
movsxd r10, eax
@@ -43,38 +43,26 @@ G_M34838_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
;; size=18 bbWeight=4 PerfScore 17.00
G_M34838_IG04: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
cmp edx, r9d
- jg SHORT G_M34838_IG06
+ jg SHORT G_M34838_IG08
;; size=5 bbWeight=0.19 PerfScore 0.24
G_M34838_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
cmp r8d, r10d
- jge SHORT G_M34838_IG10
- ;; size=5 bbWeight=4 PerfScore 5.00
-G_M34838_IG06: ; bbWeight=1.81, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[rcx]
- ret
- ;; size=1 bbWeight=1.81 PerfScore 1.81
-G_M34838_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, gcvars, byref, isz
- ; byrRegs +[rcx]
+ jl SHORT G_M34838_IG08
dec eax
jns SHORT G_M34838_IG03
- ;; size=4 bbWeight=4 PerfScore 5.00
-G_M34838_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=9 bbWeight=4 PerfScore 10.00
+G_M34838_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rcx]
mov eax, -1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M34838_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=5 bbWeight=1 PerfScore 0.25
+G_M34838_IG07: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=1 bbWeight=0.50 PerfScore 0.50
-G_M34838_IG10: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, gcvars, byref, isz
- ; byrRegs +[rcx]
- cmp r8d, r10d
- jle SHORT G_M34838_IG07
- ;; size=5 bbWeight=0.19 PerfScore 0.24
-G_M34838_IG11: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
- jmp SHORT G_M34838_IG07
- ;; size=2 bbWeight=0.04 PerfScore 0.08
+ ;; size=1 bbWeight=1 PerfScore 1.00
+G_M34838_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ret
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 54, prolog size 0, PerfScore 31.74, instruction count 21, allocated bytes for code 54 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 47, prolog size 0, PerfScore 31.24, instruction count 18, allocated bytes for code 47 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
-7 (-12.96%) : 120524.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRangeint:int (FullOpts)
@@ -10,26 +10,26 @@
;
; V00 arg0 [V00,T06] ( 3, 6 ) byref -> rcx single-def
; V01 arg1 [V01,T04] ( 4, 6.19) int -> rdx ld-addr-op single-def
-; V02 arg2 [V02,T05] ( 4, 6.19) int -> r8 ld-addr-op single-def
+; V02 arg2 [V02,T05] ( 3, 6 ) int -> r8 ld-addr-op single-def
; V03 arg3 [V03,T08] ( 3, 3 ) int -> r9 single-def
-; V04 loc0 [V04,T00] ( 7, 19.81) int -> rax
+; V04 loc0 [V04,T00] ( 7, 19 ) int -> rax
; V05 loc1 [V05,T07] ( 2, 8 ) byref -> r10
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 3, 16.39) int -> r9 "Inlining Arg"
;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 16.39) int -> r10 "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 16 ) int -> r10 "Inlining Arg"
; V11 cse0 [V11,T03] ( 3, 12 ) int -> r10 "CSE - aggressive"
;
; Lcl frame size = 0
-G_M34838_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M34838_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
G_M34838_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
; byrRegs +[rcx]
lea eax, [r9-0x01]
test eax, eax
- jl SHORT G_M34838_IG08
+ jl SHORT G_M34838_IG06
;; size=8 bbWeight=1 PerfScore 1.75
G_M34838_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
movsxd r10, eax
@@ -43,38 +43,26 @@ G_M34838_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
;; size=18 bbWeight=4 PerfScore 17.00
G_M34838_IG04: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
cmp edx, r9d
- jg SHORT G_M34838_IG06
+ jg SHORT G_M34838_IG08
;; size=5 bbWeight=0.19 PerfScore 0.24
G_M34838_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
cmp r8d, r10d
- jge SHORT G_M34838_IG10
- ;; size=5 bbWeight=4 PerfScore 5.00
-G_M34838_IG06: ; bbWeight=1.81, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[rcx]
- ret
- ;; size=1 bbWeight=1.81 PerfScore 1.81
-G_M34838_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, gcvars, byref, isz
- ; byrRegs +[rcx]
+ jl SHORT G_M34838_IG08
dec eax
jns SHORT G_M34838_IG03
- ;; size=4 bbWeight=4 PerfScore 5.00
-G_M34838_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=9 bbWeight=4 PerfScore 10.00
+G_M34838_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rcx]
mov eax, -1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M34838_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=5 bbWeight=1 PerfScore 0.25
+G_M34838_IG07: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=1 bbWeight=0.50 PerfScore 0.50
-G_M34838_IG10: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, gcvars, byref, isz
- ; byrRegs +[rcx]
- cmp r8d, r10d
- jle SHORT G_M34838_IG07
- ;; size=5 bbWeight=0.19 PerfScore 0.24
-G_M34838_IG11: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
- jmp SHORT G_M34838_IG07
- ;; size=2 bbWeight=0.04 PerfScore 0.08
+ ;; size=1 bbWeight=1 PerfScore 1.00
+G_M34838_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ret
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 54, prolog size 0, PerfScore 31.74, instruction count 21, allocated bytes for code 54 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 47, prolog size 0, PerfScore 31.24, instruction count 18, allocated bytes for code 47 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
-7 (-12.50%) : 25666.dasm - System.SpanHelpers:IndexOfAnyExceptInRangeint:int (FullOpts)
@@ -10,26 +10,26 @@
;
; V00 arg0 [V00,T07] ( 3, 6 ) byref -> rcx single-def
; V01 arg1 [V01,T05] ( 4, 6.19) int -> rdx ld-addr-op single-def
-; V02 arg2 [V02,T06] ( 4, 6.19) int -> r8 ld-addr-op single-def
+; V02 arg2 [V02,T06] ( 3, 6 ) int -> r8 ld-addr-op single-def
; V03 arg3 [V03,T04] ( 4, 7 ) int -> r9 single-def
-; V04 loc0 [V04,T00] ( 6, 18.81) int -> rax
+; V04 loc0 [V04,T00] ( 6, 18 ) int -> rax
; V05 loc1 [V05,T08] ( 2, 8 ) byref -> r10
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 3, 16.39) int -> r11 "Inlining Arg"
;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 16.39) int -> r10 "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 16 ) int -> r10 "Inlining Arg"
; V11 cse0 [V11,T03] ( 3, 12 ) int -> r10 "CSE - aggressive"
;
; Lcl frame size = 0
-G_M35228_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M35228_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
G_M35228_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
; byrRegs +[rcx]
xor eax, eax
test r9d, r9d
- jle SHORT G_M35228_IG08
+ jle SHORT G_M35228_IG06
;; size=7 bbWeight=1 PerfScore 1.50
G_M35228_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
movsxd r10, eax
@@ -43,39 +43,27 @@ G_M35228_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
;; size=18 bbWeight=4 PerfScore 17.00
G_M35228_IG04: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
cmp edx, r11d
- jg SHORT G_M35228_IG06
+ jg SHORT G_M35228_IG08
;; size=5 bbWeight=0.19 PerfScore 0.24
G_M35228_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
cmp r8d, r10d
- jge SHORT G_M35228_IG10
- ;; size=5 bbWeight=4 PerfScore 5.00
-G_M35228_IG06: ; bbWeight=1.81, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[rcx]
- ret
- ;; size=1 bbWeight=1.81 PerfScore 1.81
-G_M35228_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, gcvars, byref, isz
- ; byrRegs +[rcx]
+ jl SHORT G_M35228_IG08
inc eax
cmp eax, r9d
jl SHORT G_M35228_IG03
- ;; size=7 bbWeight=4 PerfScore 6.00
-G_M35228_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=4 PerfScore 11.00
+G_M35228_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rcx]
mov eax, -1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M35228_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=5 bbWeight=1 PerfScore 0.25
+G_M35228_IG07: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=1 bbWeight=0.50 PerfScore 0.50
-G_M35228_IG10: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, gcvars, byref, isz
- ; byrRegs +[rcx]
- cmp r8d, r10d
- jle SHORT G_M35228_IG07
- ;; size=5 bbWeight=0.19 PerfScore 0.24
-G_M35228_IG11: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
- jmp SHORT G_M35228_IG07
- ;; size=2 bbWeight=0.04 PerfScore 0.08
+ ;; size=1 bbWeight=1 PerfScore 1.00
+G_M35228_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ret
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 56, prolog size 0, PerfScore 32.49, instruction count 22, allocated bytes for code 56 (MethodHash=19fa7663) for method System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 49, prolog size 0, PerfScore 31.99, instruction count 19, allocated bytes for code 49 (MethodHash=19fa7663) for method System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
+32 (+6.04%) : 169068.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
@@ -8,10 +8,10 @@
; 5 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 11, 18 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.GeneratorDriverCache>
-; V01 arg1 [V01,T09] ( 8, 13.03) ref -> rsi class-hnd single-def <System.String>
-; V02 arg2 [V02,T15] ( 7, 5.50) ref -> rdi class-hnd <Microsoft.CodeAnalysis.GeneratorDriver>
-; V03 loc0 [V03,T23] ( 4, 1.50) ref -> [rbp-0x40] class-hnd EH-live spill-single-def <System.Object>
+; V00 this [V00,T06] ( 11, 19.50) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.GeneratorDriverCache>
+; V01 arg1 [V01,T09] ( 8, 13.53) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T12] ( 7, 6.50) ref -> rdi class-hnd <Microsoft.CodeAnalysis.GeneratorDriver>
+; V03 loc0 [V03,T26] ( 4, 1.50) ref -> [rbp-0x40] class-hnd EH-live spill-single-def <System.Object>
; V04 loc1 [V04 ] ( 5, 4 ) ubyte -> [rbp-0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V05 loc2 [V05,T00] ( 17, 44 ) int -> r14
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.GeneratorDriver>
@@ -19,34 +19,34 @@
; V08 tmp1 [V08,T08] ( 2, 16 ) ref -> rdx class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "Strict ordering of exceptions for Array store" <System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.GeneratorDriver]>
;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.GeneratorDriver]>
-; V11 tmp4 [V11,T19] ( 3, 3 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V12 tmp5 [V12,T18] ( 2, 4 ) ubyte -> rcx "Inlining Arg"
+; V11 tmp4 [V11,T16] ( 3, 6 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V12 tmp5 [V12,T21] ( 2, 4 ) ubyte -> rcx "Inlining Arg"
; V13 tmp6 [V13,T01] ( 7, 33.09) ref -> r15 class-hnd "Inlining Arg" <System.__Canon>
-; V14 tmp7 [V14,T16] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
-; V15 tmp8 [V15,T12] ( 2, 8 ) byref -> rcx "impAppendStmt"
+; V14 tmp7 [V14,T19] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
+; V15 tmp8 [V15,T13] ( 2, 8 ) byref -> rcx "impAppendStmt"
;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp10 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp14 [V21,T26] ( 2, 1 ) int -> r14 "Inline return value spill temp"
-; V22 tmp15 [V22,T27] ( 2, 1 ) int -> rax "Inline return value spill temp"
-; V23 tmp16 [V23,T22] ( 3, 3 ) int -> rcx "Inlining Arg"
-; V24 tmp17 [V24,T13] ( 2, 8 ) ref -> r8 "field V09.Item1 (fldOffset=0x0)" P-INDEP
-; V25 tmp18 [V25,T14] ( 2, 8 ) ref -> r13 "field V09.Item2 (fldOffset=0x8)" P-INDEP
-; V26 tmp19 [V26,T24] ( 2, 1 ) ref -> rdx single-def "field V10.Item1 (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T25] ( 2, 1 ) ref -> rsi single-def "field V10.Item2 (fldOffset=0x8)" P-INDEP
+; V21 tmp14 [V21,T27] ( 2, 1 ) int -> r14 "Inline return value spill temp"
+; V22 tmp15 [V22,T25] ( 2, 2 ) int -> rax "Inline return value spill temp"
+; V23 tmp16 [V23,T18] ( 3, 6 ) int -> rcx "Inlining Arg"
+; V24 tmp17 [V24,T14] ( 2, 8 ) ref -> r8 "field V09.Item1 (fldOffset=0x0)" P-INDEP
+; V25 tmp18 [V25,T15] ( 2, 8 ) ref -> r13 "field V09.Item2 (fldOffset=0x8)" P-INDEP
+; V26 tmp19 [V26,T23] ( 2, 2 ) ref -> rdx single-def "field V10.Item1 (fldOffset=0x0)" P-INDEP
+; V27 tmp20 [V27,T24] ( 2, 2 ) ref -> rsi single-def "field V10.Item2 (fldOffset=0x8)" P-INDEP
; V28 tmp21 [V28,T02] ( 3, 24 ) ref -> r8 "arr expr"
-; V29 tmp22 [V29,T20] ( 3, 3 ) ref -> rcx "arr expr"
+; V29 tmp22 [V29,T22] ( 3, 3 ) ref -> rcx "arr expr"
; V30 tmp23 [V30,T03] ( 3, 24 ) ref -> rcx "arr expr"
; V31 tmp24 [V31,T04] ( 3, 24 ) byref -> rcx "BlockOp address local"
; V32 tmp25 [V32,T05] ( 3, 24 ) byref -> r14 "BlockOp address local"
-; V33 tmp26 [V33,T21] ( 3, 3 ) byref -> r14 single-def "BlockOp address local"
+; V33 tmp26 [V33,T17] ( 3, 6 ) byref -> r14 single-def "BlockOp address local"
; V34 PSPSym [V34,T28] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
; V35 cse0 [V35,T10] ( 3, 12 ) ref -> rcx "CSE - aggressive"
; V36 cse1 [V36,T07] ( 4, 16 ) int -> r15 "CSE - aggressive"
; V37 cse2 [V37,T11] ( 3, 12 ) int -> rax "CSE - aggressive"
-; V38 cse3 [V38,T17] ( 6, 4.79) ref -> rdx multi-def "CSE - moderate"
+; V38 cse3 [V38,T20] ( 6, 4.79) ref -> rdx multi-def "CSE - moderate"
;
; Lcl frame size = 64
@@ -76,9 +76,9 @@ G_M51982_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
mov gword ptr [rbp-0x40], rcx
; GC ptr vars +{V03}
;; size=8 bbWeight=1 PerfScore 3.00
-G_M51982_IG03: ; bbWeight=1, gcVars=0000000000800000 {V03}, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M51982_IG03: ; bbWeight=1, gcVars=0000000004000000 {V03}, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x38], 0
- jne SHORT G_M51982_IG12
+ jne G_M51982_IG19
lea rdx, [rbp-0x38]
call <unknown method>
; gcrRegs -[rcx]
@@ -86,7 +86,7 @@ G_M51982_IG03: ; bbWeight=1, gcVars=0000000000800000 {V03}, gcrefRegs=00C
movzx rcx, byte ptr [rbp-0x38]
test ecx, ecx
jne SHORT G_M51982_IG05
- ;; size=23 bbWeight=1 PerfScore 6.75
+ ;; size=27 bbWeight=1 PerfScore 6.75
G_M51982_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -96,111 +96,74 @@ G_M51982_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=0.50 PerfScore 1.75
-G_M51982_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M51982_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
xor r14d, r14d
cmp dword ptr [rbx+0x18], 0
- jle G_M51982_IG19
- ;; size=13 bbWeight=1 PerfScore 4.25
+ jle SHORT G_M51982_IG14
+ ;; size=9 bbWeight=1 PerfScore 4.25
G_M51982_IG06: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r8, gword ptr [rbx+0x08]
; gcrRegs +[r8]
cmp r14d, dword ptr [r8+0x08]
- jae SHORT G_M51982_IG13
+ jae G_M51982_IG18
mov edx, r14d
shl rdx, 4
mov r15, gword ptr [r8+rdx+0x10]
; gcrRegs +[r15]
cmp r15, rsi
- je SHORT G_M51982_IG18
- ;; size=27 bbWeight=4 PerfScore 40.00
-G_M51982_IG07: ; bbWeight=1.73, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M51982_IG12
+ ;; size=31 bbWeight=4 PerfScore 40.00
+G_M51982_IG07: ; bbWeight=1.73, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r8]
test r15, r15
- je SHORT G_M51982_IG16
- ;; size=5 bbWeight=1.73 PerfScore 2.16
-G_M51982_IG08: ; bbWeight=1.72, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ je G_M51982_IG22
+ ;; size=9 bbWeight=1.73 PerfScore 2.16
+G_M51982_IG08: ; bbWeight=1.72, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
test rsi, rsi
- je SHORT G_M51982_IG16
- ;; size=5 bbWeight=1.72 PerfScore 2.15
-G_M51982_IG09: ; bbWeight=1.72, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ je G_M51982_IG22
+ ;; size=9 bbWeight=1.72 PerfScore 2.15
+G_M51982_IG09: ; bbWeight=1.72, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
mov r8d, dword ptr [r15+0x08]
cmp r8d, dword ptr [rsi+0x08]
- jne SHORT G_M51982_IG16
- ;; size=10 bbWeight=1.72 PerfScore 10.31
-G_M51982_IG10: ; bbWeight=1.10, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ jne G_M51982_IG22
+ ;; size=14 bbWeight=1.72 PerfScore 10.31
+G_M51982_IG10: ; bbWeight=1.10, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
mov r8d, dword ptr [r15+0x08]
cmp r8d, dword ptr [rsi+0x08]
- je SHORT G_M51982_IG15
- ;; size=10 bbWeight=1.10 PerfScore 6.57
-G_M51982_IG11: ; bbWeight=1.10, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M51982_IG14
- ;; size=2 bbWeight=1.10 PerfScore 2.19
-G_M51982_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi rdi r15]
- call [System.Threading.Monitor:ThrowLockTakenException()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M51982_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M51982_IG14: ; bbWeight=1.10, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx rsi rdi r15]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- mov rcx, rdx
- ; gcrRegs +[rcx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx]
- ; gcr arg pop 0
- ;; size=19 bbWeight=1.10 PerfScore 3.83
-G_M51982_IG15: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
- lea rcx, bword ptr [r15+0x0C]
- ; byrRegs +[rcx]
- mov r8d, dword ptr [r15+0x08]
- add r8d, r8d
- lea rdx, bword ptr [rsi+0x0C]
- ; byrRegs +[rdx]
- call [<unknown method>]
+ je G_M51982_IG21
+ ;; size=14 bbWeight=1.10 PerfScore 6.57
+G_M51982_IG11: ; bbWeight=1.10, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
+ jmp G_M51982_IG20
+ ;; size=5 bbWeight=1.10 PerfScore 2.19
+G_M51982_IG12: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
- ; byrRegs -[rcx rdx]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M51982_IG18
- ;; size=25 bbWeight=2 PerfScore 15.00
-G_M51982_IG16: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- inc r14d
- cmp r14d, dword ptr [rbx+0x18]
- jl SHORT G_M51982_IG06
- ;; size=9 bbWeight=4 PerfScore 17.00
-G_M51982_IG17: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M51982_IG19
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M51982_IG18: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
test rdi, rdi
- jne SHORT G_M51982_IG19
+ jne SHORT G_M51982_IG14
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M51982_IG13: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi]
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
cmp r14d, dword ptr [rcx+0x08]
- jae SHORT G_M51982_IG13
+ jae G_M51982_IG18
mov edx, r14d
shl rdx, 4
mov rdi, gword ptr [rcx+rdx+0x18]
- ;; size=27 bbWeight=0.50 PerfScore 5.00
-G_M51982_IG19: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rdi]
+ ;; size=26 bbWeight=0.50 PerfScore 4.38
+G_M51982_IG14: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
test rdi, rdi
- je G_M51982_IG23
+ je G_M51982_IG24
;; size=9 bbWeight=1 PerfScore 1.25
-G_M51982_IG20: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51982_IG15: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov ecx, 9
cmp r14d, 9
cmovg r14d, ecx
test r14d, r14d
- jle SHORT G_M51982_IG22
+ jle SHORT G_M51982_IG17
;; size=18 bbWeight=0.50 PerfScore 1.00
-G_M51982_IG21: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51982_IG16: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
mov rdx, rcx
@@ -208,7 +171,7 @@ G_M51982_IG21: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
lea r15d, [r14-0x01]
mov eax, dword ptr [rcx+0x08]
cmp r15d, eax
- jae G_M51982_IG13
+ jae G_M51982_IG18
mov r8d, r15d
shl r8, 4
lea rcx, bword ptr [rcx+r8+0x10]
@@ -219,7 +182,7 @@ G_M51982_IG21: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
mov r13, gword ptr [rcx+0x08]
; gcrRegs +[r13]
cmp r14d, eax
- jae G_M51982_IG13
+ jae SHORT G_M51982_IG18
mov ecx, r14d
; byrRegs -[rcx]
shl rcx, 4
@@ -240,16 +203,16 @@ G_M51982_IG21: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
...
+23 (+6.34%) : 316645.dasm - System.Linq.OrderedEnumerable`1[double]:TryGetFirst(byref):double:this (FullOpts)
@@ -8,17 +8,17 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 5, 5 ) ref -> rbx this class-hnd single-def <System.Linq.OrderedEnumerable`1[double]>
-; V01 arg1 [V01,T03] ( 4, 3 ) byref -> rsi single-def
+; V01 arg1 [V01,T03] ( 4, 3.50) byref -> rsi single-def
; V02 loc0 [V02,T02] ( 4, 6 ) ref -> rdi class-hnd single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 9, 11 ) ref -> [rbp-0x48] class-hnd EH-live single-def <<unknown class>>
-; V04 loc2 [V04,T07] ( 4, 3.50) double -> [rbp-0x38]
-; V05 loc3 [V05,T08] ( 3, 2 ) double -> [rbp-0x40] ld-addr-op
-; V06 loc4 [V06,T06] ( 3, 10 ) double -> mm6
+; V03 loc1 [V03,T00] ( 9, 11 ) ref -> [rbp-0x50] class-hnd EH-live single-def <<unknown class>>
+; V04 loc2 [V04,T07] ( 4, 4 ) double -> mm6
+; V05 loc3 [V05,T08] ( 3, 2.50) double -> [rbp-0x48] ld-addr-op
+; V06 loc4 [V06,T06] ( 3, 10 ) double -> mm7
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 PSPSym [V08,T05] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
+; V08 PSPSym [V08,T05] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
; V09 cse0 [V09,T04] ( 3, 5 ) long -> r14 "CSE - aggressive"
;
-; Lcl frame size = 80
+; Lcl frame size = 96
G_M21335_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -26,16 +26,17 @@ G_M21335_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rdi
push rsi
push rbx
- sub rsp, 80
+ sub rsp, 96
vzeroupper
- vmovaps xmmword ptr [rsp+0x40], xmm6
- lea rbp, [rsp+0x70]
- mov qword ptr [rbp-0x50], rsp
+ vmovaps xmmword ptr [rsp+0x50], xmm6
+ vmovaps xmmword ptr [rsp+0x40], xmm7
+ lea rbp, [rsp+0x80]
+ mov qword ptr [rbp-0x60], rsp
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, rdx
; byrRegs +[rsi]
- ;; size=34 bbWeight=1 PerfScore 10.25
+ ;; size=43 bbWeight=1 PerfScore 12.25
G_M21335_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
mov rcx, rbx
; gcrRegs +[rcx]
@@ -56,7 +57,7 @@ G_M21335_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
; gcr arg pop 0
mov rbx, rax
; gcrRegs +[rbx]
- mov gword ptr [rbp-0x48], rbx
+ mov gword ptr [rbp-0x50], rbx
; GC ptr vars +{V03}
;; size=42 bbWeight=1 PerfScore 14.25
G_M21335_IG03: ; bbWeight=1, gcVars=0000000000000001 {V03}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, gcvars, byref, isz
@@ -74,7 +75,7 @@ G_M21335_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi
; gcrRegs -[rdi]
mov byte ptr [rsi], 0
vxorps xmm0, xmm0, xmm0
- vmovsd qword ptr [rbp-0x40], xmm0
+ vmovsd qword ptr [rbp-0x48], xmm0
jmp G_M21335_IG10
;; size=17 bbWeight=0.50 PerfScore 2.17
G_M21335_IG05: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
@@ -85,10 +86,10 @@ G_M21335_IG05: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040
call [r11]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
+ vmovaps xmm6, xmm0
mov rcx, rdi
; gcrRegs +[rcx]
- vmovsd qword ptr [rbp-0x38], xmm0
- vmovaps xmm1, xmm0
+ vmovaps xmm1, xmm6
mov rax, qword ptr [rdi]
mov r14, qword ptr [rax+0x48]
call [r14+0x28]<unknown method>
@@ -102,7 +103,7 @@ G_M21335_IG05: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040
; gcr arg pop 0
test eax, eax
je SHORT G_M21335_IG09
- ;; size=59 bbWeight=0.50 PerfScore 8.38
+ ;; size=58 bbWeight=0.50 PerfScore 8.00
G_M21335_IG06: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
mov rcx, rbx
; gcrRegs +[rcx]
@@ -110,10 +111,10 @@ G_M21335_IG06: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rs
call [r11]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- vmovaps xmm6, xmm0
+ vmovaps xmm7, xmm0
mov rcx, rdi
; gcrRegs +[rcx]
- vmovaps xmm1, xmm6
+ vmovaps xmm1, xmm7
mov r8d, 1
call [r14+0x20]<unknown method>
; gcrRegs -[rcx]
@@ -122,8 +123,8 @@ G_M21335_IG06: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rs
jge SHORT G_M21335_IG08
;; size=41 bbWeight=4 PerfScore 35.00
G_M21335_IG07: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref
- vmovsd qword ptr [rbp-0x38], xmm6
- ;; size=5 bbWeight=2 PerfScore 2.00
+ vmovaps xmm6, xmm7
+ ;; size=4 bbWeight=2 PerfScore 0.50
G_M21335_IG08: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
mov rcx, rbx
; gcrRegs +[rcx]
@@ -134,12 +135,11 @@ G_M21335_IG08: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rs
test eax, eax
jne SHORT G_M21335_IG06
;; size=20 bbWeight=4 PerfScore 19.00
-G_M21335_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
+G_M21335_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rdi]
mov byte ptr [rsi], 1
- vmovsd xmm0, qword ptr [rbp-0x38]
- vmovsd qword ptr [rbp-0x40], xmm0
- ;; size=13 bbWeight=0.50 PerfScore 2.50
+ vmovsd qword ptr [rbp-0x48], xmm6
+ ;; size=8 bbWeight=1 PerfScore 2.00
G_M21335_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; byrRegs -[rsi]
mov rcx, rbx
@@ -149,36 +149,38 @@ G_M21335_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call [r11]<unknown method>
; gcrRegs -[rcx rbx]
; gcr arg pop 0
- vmovsd xmm0, qword ptr [rbp-0x40]
+ vmovsd xmm0, qword ptr [rbp-0x48]
;; size=21 bbWeight=1 PerfScore 6.50
G_M21335_IG11: ; bbWeight=1, epilog, nogc, extend
- vmovaps xmm6, xmmword ptr [rsp+0x40]
- add rsp, 80
+ vmovaps xmm6, xmmword ptr [rsp+0x50]
+ vmovaps xmm7, xmmword ptr [rsp+0x40]
+ add rsp, 96
pop rbx
pop rsi
pop rdi
pop r14
pop rbp
ret
- ;; size=17 bbWeight=1 PerfScore 7.75
+ ;; size=23 bbWeight=1 PerfScore 11.75
G_M21335_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp
push r14
push rdi
push rsi
push rbx
- sub rsp, 64
+ sub rsp, 80
vzeroupper
- vmovaps xmmword ptr [rsp+0x30], xmm6
+ vmovaps xmmword ptr [rsp+0x40], xmm6
+ vmovaps xmmword ptr [rsp+0x30], xmm7
mov rbp, qword ptr [rcx+0x20]
mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0x70]
- ;; size=32 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0x80]
+ ;; size=41 bbWeight=0 PerfScore 0.00
G_M21335_IG13: ; bbWeight=0, gcVars=0000000000000001 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V00 V03}
- cmp gword ptr [rbp-0x48], 0
+ cmp gword ptr [rbp-0x50], 0
je SHORT G_M21335_IG14
- mov rcx, gword ptr [rbp-0x48]
+ mov rcx, gword ptr [rbp-0x50]
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; code for <unknown method>
; GC ptr vars -{V00 V03}
@@ -190,17 +192,18 @@ G_M21335_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
G_M21335_IG15: ; bbWeight=0, funclet epilog, nogc, extend
- vmovaps xmm6, xmmword ptr [rsp+0x30]
- add rsp, 64
+ vmovaps xmm6, xmmword ptr [rsp+0x40]
+ vmovaps xmm7, xmmword ptr [rsp+0x30]
+ add rsp, 80
pop rbx
pop rsi
pop rdi
pop r14
pop rbp
ret
- ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=23 bbWeight=0 PerfScore 0.00
-; Total bytes of code 363, prolog size 34, PerfScore 112.54, instruction count 102, allocated bytes for code 363 (MethodHash=547baca8) for method System.Linq.OrderedEnumerable`1[double]:TryGetFirst(byref):double:this (FullOpts)
+; Total bytes of code 386, prolog size 43, PerfScore 116.17, instruction count 105, allocated bytes for code 386 (MethodHash=547baca8) for method System.Linq.OrderedEnumerable`1[double]:TryGetFirst(byref):double:this (FullOpts)
; ============================================================
Unwind Info:
@@ -208,14 +211,16 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x13
- CountOfUnwindCodes: 8
+ SizeOfProlog : 0x19
+ CountOfUnwindCodes: 10
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x13 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6)
+ CodeOffset: 0x19 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM7 (7)
Scaled Small Offset: 4 * 16 = 64 = 0x00040
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
+ CodeOffset: 0x13 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6)
+ Scaled Small Offset: 5 * 16 = 80 = 0x00050
+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 11 * 8 + 8 = 96 = 0x60
CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
@@ -226,14 +231,16 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x13
- CountOfUnwindCodes: 8
+ SizeOfProlog : 0x19
+ CountOfUnwindCodes: 10
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x13 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6)
+ CodeOffset: 0x19 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM7 (7)
Scaled Small Offset: 3 * 16 = 48 = 0x00030
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
+ CodeOffset: 0x13 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6)
+ Scaled Small Offset: 4 * 16 = 64 = 0x00040
+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+23 (+6.53%) : 316646.dasm - System.Linq.OrderedEnumerable`1[double]:TryGetLast(byref):double:this (FullOpts)
@@ -8,33 +8,34 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 5, 4 ) ref -> rbx this class-hnd single-def <System.Linq.OrderedEnumerable`1[double]>
-; V01 arg1 [V01,T03] ( 4, 3 ) byref -> rsi single-def
-; V02 loc0 [V02,T00] ( 9, 11 ) ref -> [rbp-0x48] class-hnd EH-live spill-single-def <<unknown class>>
-; V03 loc1 [V03,T02] ( 4, 5.50) ref -> rbx class-hnd single-def <<unknown class>>
-; V04 loc2 [V04,T07] ( 4, 3.50) double -> [rbp-0x38]
-; V05 loc3 [V05,T08] ( 3, 2 ) double -> [rbp-0x40] ld-addr-op
-; V06 loc4 [V06,T06] ( 3, 10 ) double -> mm6
+; V01 arg1 [V01,T02] ( 4, 3.50) byref -> rsi single-def
+; V02 loc0 [V02,T00] ( 9, 11 ) ref -> [rbp-0x50] class-hnd EH-live spill-single-def <<unknown class>>
+; V03 loc1 [V03,T03] ( 4, 5.50) ref -> rbx class-hnd single-def <<unknown class>>
+; V04 loc2 [V04,T07] ( 4, 4 ) double -> mm6
+; V05 loc3 [V05,T08] ( 3, 2.50) double -> [rbp-0x48] ld-addr-op
+; V06 loc4 [V06,T06] ( 3, 10 ) double -> mm7
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 PSPSym [V08,T05] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
+; V08 PSPSym [V08,T05] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
; V09 cse0 [V09,T04] ( 3, 5 ) long -> rdi "CSE - aggressive"
;
-; Lcl frame size = 88
+; Lcl frame size = 104
G_M65223_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push rdi
push rsi
push rbx
- sub rsp, 88
+ sub rsp, 104
vzeroupper
- vmovaps xmmword ptr [rsp+0x40], xmm6
- lea rbp, [rsp+0x70]
- mov qword ptr [rbp-0x50], rsp
+ vmovaps xmmword ptr [rsp+0x50], xmm6
+ vmovaps xmmword ptr [rsp+0x40], xmm7
+ lea rbp, [rsp+0x80]
+ mov qword ptr [rbp-0x60], rsp
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, rdx
; byrRegs +[rsi]
- ;; size=32 bbWeight=1 PerfScore 9.25
+ ;; size=41 bbWeight=1 PerfScore 11.25
G_M65223_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
@@ -44,7 +45,7 @@ G_M65223_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
- mov gword ptr [rbp-0x48], rcx
+ mov gword ptr [rbp-0x50], rcx
; GC ptr vars +{V02}
;; size=24 bbWeight=1 PerfScore 6.50
G_M65223_IG03: ; bbWeight=1, gcVars=0000000000000001 {V02}, gcrefRegs=000A {rcx rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz
@@ -60,7 +61,7 @@ G_M65223_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {rsi},
; gcrRegs -[rbx]
mov byte ptr [rsi], 0
vxorps xmm0, xmm0, xmm0
- vmovsd qword ptr [rbp-0x40], xmm0
+ vmovsd qword ptr [rbp-0x48], xmm0
jmp G_M65223_IG10
;; size=17 bbWeight=0.50 PerfScore 2.17
G_M65223_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
@@ -76,22 +77,22 @@ G_M65223_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi
; gcr arg pop 0
mov rbx, rax
; gcrRegs +[rbx]
- mov rcx, gword ptr [rbp-0x48]
+ mov rcx, gword ptr [rbp-0x50]
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; code for <unknown method>
call [r11]<unknown method>
; gcrRegs -[rax rcx]
; gcr arg pop 0
+ vmovaps xmm6, xmm0
mov rcx, rbx
; gcrRegs +[rcx]
- vmovsd qword ptr [rbp-0x38], xmm0
- vmovaps xmm1, xmm0
+ vmovaps xmm1, xmm6
mov rax, qword ptr [rbx]
mov rdi, qword ptr [rax+0x48]
call [rdi+0x28]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rcx, gword ptr [rbp-0x48]
+ mov rcx, gword ptr [rbp-0x50]
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; function address
call [r11]<unknown method>
@@ -99,18 +100,18 @@ G_M65223_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi
; gcr arg pop 0
test eax, eax
je SHORT G_M65223_IG09
- ;; size=78 bbWeight=0.50 PerfScore 13.00
+ ;; size=77 bbWeight=0.50 PerfScore 12.62
G_M65223_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
- mov rcx, gword ptr [rbp-0x48]
+ mov rcx, gword ptr [rbp-0x50]
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; code for <unknown method>
call [r11]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- vmovaps xmm6, xmm0
+ vmovaps xmm7, xmm0
mov rcx, rbx
; gcrRegs +[rcx]
- vmovaps xmm1, xmm6
+ vmovaps xmm1, xmm7
xor r8d, r8d
call [rdi+0x20]<unknown method>
; gcrRegs -[rcx]
@@ -119,10 +120,10 @@ G_M65223_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
jl SHORT G_M65223_IG08
;; size=38 bbWeight=4 PerfScore 38.00
G_M65223_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
- vmovsd qword ptr [rbp-0x38], xmm6
- ;; size=5 bbWeight=2 PerfScore 2.00
+ vmovaps xmm6, xmm7
+ ;; size=4 bbWeight=2 PerfScore 0.50
G_M65223_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
- mov rcx, gword ptr [rbp-0x48]
+ mov rcx, gword ptr [rbp-0x50]
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; code for <unknown method>
call [r11]<unknown method>
@@ -131,49 +132,50 @@ G_M65223_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
test eax, eax
jne SHORT G_M65223_IG06
;; size=21 bbWeight=4 PerfScore 22.00
-G_M65223_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M65223_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rbx]
mov byte ptr [rsi], 1
- vmovsd xmm0, qword ptr [rbp-0x38]
- vmovsd qword ptr [rbp-0x40], xmm0
- ;; size=13 bbWeight=0.50 PerfScore 2.50
+ vmovsd qword ptr [rbp-0x48], xmm6
+ ;; size=8 bbWeight=1 PerfScore 2.00
G_M65223_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rsi]
- mov rcx, gword ptr [rbp-0x48]
+ mov rcx, gword ptr [rbp-0x50]
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; code for <unknown method>
; GC ptr vars -{V02}
call [r11]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- vmovsd xmm0, qword ptr [rbp-0x40]
+ vmovsd xmm0, qword ptr [rbp-0x48]
;; size=22 bbWeight=1 PerfScore 7.25
G_M65223_IG11: ; bbWeight=1, epilog, nogc, extend
- vmovaps xmm6, xmmword ptr [rsp+0x40]
- add rsp, 88
+ vmovaps xmm6, xmmword ptr [rsp+0x50]
+ vmovaps xmm7, xmmword ptr [rsp+0x40]
+ add rsp, 104
pop rbx
pop rsi
pop rdi
pop rbp
ret
- ;; size=15 bbWeight=1 PerfScore 7.25
+ ;; size=21 bbWeight=1 PerfScore 11.25
G_M65223_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp
push rdi
push rsi
push rbx
- sub rsp, 72
+ sub rsp, 88
vzeroupper
- vmovaps xmmword ptr [rsp+0x30], xmm6
+ vmovaps xmmword ptr [rsp+0x40], xmm6
+ vmovaps xmmword ptr [rsp+0x30], xmm7
mov rbp, qword ptr [rcx+0x20]
mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0x70]
- ;; size=30 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0x80]
+ ;; size=39 bbWeight=0 PerfScore 0.00
G_M65223_IG13: ; bbWeight=0, gcVars=0000000000000001 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V00 V02}
- cmp gword ptr [rbp-0x48], 0
+ cmp gword ptr [rbp-0x50], 0
je SHORT G_M65223_IG14
- mov rcx, gword ptr [rbp-0x48]
+ mov rcx, gword ptr [rbp-0x50]
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; code for <unknown method>
; GC ptr vars -{V00 V02}
@@ -185,16 +187,17 @@ G_M65223_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
G_M65223_IG15: ; bbWeight=0, funclet epilog, nogc, extend
- vmovaps xmm6, xmmword ptr [rsp+0x30]
- add rsp, 72
+ vmovaps xmm6, xmmword ptr [rsp+0x40]
+ vmovaps xmm7, xmmword ptr [rsp+0x30]
+ add rsp, 88
pop rbx
pop rsi
pop rdi
pop rbp
ret
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=21 bbWeight=0 PerfScore 0.00
-; Total bytes of code 352, prolog size 32, PerfScore 114.42, instruction count 97, allocated bytes for code 352 (MethodHash=11120138) for method System.Linq.OrderedEnumerable`1[double]:TryGetLast(byref):double:this (FullOpts)
+; Total bytes of code 375, prolog size 41, PerfScore 118.04, instruction count 100, allocated bytes for code 375 (MethodHash=11120138) for method System.Linq.OrderedEnumerable`1[double]:TryGetLast(byref):double:this (FullOpts)
; ============================================================
Unwind Info:
@@ -202,14 +205,16 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x11
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x17
+ CountOfUnwindCodes: 9
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x11 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6)
+ CodeOffset: 0x17 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM7 (7)
Scaled Small Offset: 4 * 16 = 64 = 0x00040
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
+ CodeOffset: 0x11 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6)
+ Scaled Small Offset: 5 * 16 = 80 = 0x00050
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 12 * 8 + 8 = 104 = 0x68
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
@@ -219,14 +224,16 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x11
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x17
+ CountOfUnwindCodes: 9
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
...
libraries_tests.run.windows.x64.Release.mch
-6 (-5.31%) : 87045.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -11,93 +11,86 @@
;
; V00 arg0 [V00,T00] ( 8, 5.17) long -> rcx single-def
; V01 arg1 [V01,T01] ( 7, 5.03) ref -> rdx class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.05) long -> rbx
-; V03 loc1 [V03,T03] ( 10, 3.37) long -> rax
-; V04 loc2 [V04,T02] ( 10, 4.37) long -> r8
+; V02 loc0 [V02,T04] ( 4, 3.05) long -> rax
+; V03 loc1 [V03,T03] ( 10, 3.37) long -> r8
+; V04 loc2 [V04,T02] ( 10, 4.37) long -> r10
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
-G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx
- ;; size=1 bbWeight=1 PerfScore 1.00
+G_M24157_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
test rdx, rdx
- je SHORT G_M24157_IG06
- mov rbx, qword ptr [rdx]
- movzx rax, word ptr [rbx+0x0E]
- test rax, rax
+ je SHORT G_M24157_IG13
+ mov rax, qword ptr [rdx]
+ movzx r8, word ptr [rax+0x0E]
+ test r8, r8
je SHORT G_M24157_IG11
- mov r8, qword ptr [rbx+0x40]
- cmp rax, 4
- jl SHORT G_M24157_IG13
- ;; size=27 bbWeight=1 PerfScore 9.75
+ mov r10, qword ptr [rax+0x40]
+ cmp r8, 4
+ jl SHORT G_M24157_IG09
+ ;; size=28 bbWeight=1 PerfScore 9.75
G_M24157_IG03: ; bbWeight=1.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [r8], rcx
- je SHORT G_M24157_IG06
+ cmp qword ptr [r10], rcx
+ je SHORT G_M24157_IG13
;; size=5 bbWeight=1.02 PerfScore 4.10
G_M24157_IG04: ; bbWeight=1.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [r8+0x08], rcx
- je SHORT G_M24157_IG06
+ cmp qword ptr [r10+0x08], rcx
+ je SHORT G_M24157_IG13
;; size=6 bbWeight=1.02 PerfScore 4.08
G_M24157_IG05: ; bbWeight=1.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [r8+0x10], rcx
- jne SHORT G_M24157_IG08
+ cmp qword ptr [r10+0x10], rcx
+ je SHORT G_M24157_IG13
;; size=6 bbWeight=1.00 PerfScore 3.99
-G_M24157_IG06: ; bbWeight=0.98, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
- mov rax, rdx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=0.98 PerfScore 0.25
-G_M24157_IG07: ; bbWeight=0.98, epilog, nogc, extend
- pop rbx
- ret
- ;; size=2 bbWeight=0.98 PerfScore 1.48
-G_M24157_IG08: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
- cmp qword ptr [r8+0x18], rcx
- je SHORT G_M24157_IG06
+G_M24157_IG06: ; bbWeight=0.07, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ cmp qword ptr [r10+0x18], rcx
+ je SHORT G_M24157_IG13
;; size=6 bbWeight=0.07 PerfScore 0.28
-G_M24157_IG09: ; bbWeight=0.07, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- add r8, 32
- add rax, -4
- cmp rax, 4
+G_M24157_IG07: ; bbWeight=0.07, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ add r10, 32
+ add r8, -4
+ cmp r8, 4
jge SHORT G_M24157_IG03
;; size=14 bbWeight=0.07 PerfScore 0.12
-G_M24157_IG10: ; bbWeight=0.05, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- test rax, rax
- jne SHORT G_M24157_IG13
+G_M24157_IG08: ; bbWeight=0.05, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ test r8, r8
+ je SHORT G_M24157_IG11
;; size=5 bbWeight=0.05 PerfScore 0.06
+G_M24157_IG09: ; bbWeight=0.04, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ cmp qword ptr [r10], rcx
+ je SHORT G_M24157_IG13
+ ;; size=5 bbWeight=0.04 PerfScore 0.15
+G_M24157_IG10: ; bbWeight=0.04, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ add r10, 8
+ dec r8
+ test r8, r8
+ jg SHORT G_M24157_IG09
+ ;; size=12 bbWeight=0.04 PerfScore 0.07
G_M24157_IG11: ; bbWeight=0.05, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- test dword ptr [rbx], 0xD1FFAB1E
- jne SHORT G_M24157_IG16
+ test dword ptr [rax], 0xD1FFAB1E
+ jne SHORT G_M24157_IG15
;; size=8 bbWeight=0.05 PerfScore 0.18
-G_M24157_IG12: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M24157_IG12: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
xor rdx, rdx
; gcrRegs +[rdx]
- jmp SHORT G_M24157_IG06
- ;; size=4 bbWeight=0.03 PerfScore 0.07
-G_M24157_IG13: ; bbWeight=0.04, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [r8], rcx
- je SHORT G_M24157_IG06
- ;; size=5 bbWeight=0.04 PerfScore 0.15
-G_M24157_IG14: ; bbWeight=0.04, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- add r8, 8
- dec rax
- test rax, rax
- jg SHORT G_M24157_IG13
- ;; size=12 bbWeight=0.04 PerfScore 0.07
-G_M24157_IG15: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M24157_IG11
- ;; size=2 bbWeight=0.02 PerfScore 0.04
-G_M24157_IG16: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, epilog, nogc
- pop rbx
+ ;; size=2 bbWeight=0.03 PerfScore 0.01
+G_M24157_IG13: ; bbWeight=0.98, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+ mov rax, rdx
+ ; gcrRegs +[rax]
+ ;; size=3 bbWeight=0.98 PerfScore 0.25
+G_M24157_IG14: ; bbWeight=0.98, epilog, nogc, extend
+ ret
+ ;; size=1 bbWeight=0.98 PerfScore 0.98
+G_M24157_IG15: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rax]
tail.jmp [<unknown method>]
; gcr arg pop 0
- ;; size=7 bbWeight=0.02 PerfScore 0.04
+ ;; size=6 bbWeight=0.02 PerfScore 0.03
-; Total bytes of code 113, prolog size 1, PerfScore 25.65, instruction count 40, allocated bytes for code 113 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 107, prolog size 0, PerfScore 24.05, instruction count 35, allocated bytes for code 107 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -105,9 +98,8 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x00
+ CountOfUnwindCodes: 0
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-18 (-4.21%) : 62325.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
@@ -70,30 +70,30 @@ G_M27413_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov r14d, dword ptr [rbx+0x18]
test esi, esi
- jne G_M27413_IG20
+ jne G_M27413_IG16
;; size=12 bbWeight=1.50 PerfScore 4.88
-G_M27413_IG04: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M27413_IG04: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r15d, r14d
and r15d, -4
- je G_M27413_IG22
+ je G_M27413_IG23
mov ecx, r14d
and ecx, -3
cmp ecx, 4
- je G_M27413_IG18
- ;; size=28 bbWeight=1.00 PerfScore 3.25
+ je SHORT G_M27413_IG14
+ ;; size=24 bbWeight=1.00 PerfScore 3.25
G_M27413_IG05: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=1.00 PerfScore 0.25
-G_M27413_IG06: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M27413_IG06: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
movzx rcx, al
lea edx, [r14-0x04]
cmp r15d, 4
- je G_M27413_IG17
- ;; size=17 bbWeight=1.00 PerfScore 2.00
-G_M27413_IG07: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M27413_IG13
+ ;; size=13 bbWeight=1.00 PerfScore 2.00
+G_M27413_IG07: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test esi, esi
- jne G_M27413_IG16
- ;; size=8 bbWeight=1.00 PerfScore 1.25
+ jne SHORT G_M27413_IG12
+ ;; size=4 bbWeight=1.00 PerfScore 1.25
G_M27413_IG08: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
lea r8, bword ptr [rbx+0x18]
; byrRegs +[r8]
@@ -103,118 +103,13 @@ G_M27413_IG08: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
cmp eax, r14d
jne SHORT G_M27413_IG03
;; size=17 bbWeight=1.00 PerfScore 20.02
-G_M27413_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M27413_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r8]
test ecx, ecx
- je G_M27413_IG24
- ;; size=8 bbWeight=1 PerfScore 1.25
-G_M27413_IG10: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- call <unknown method>
- ; gcr arg pop 0
- mov r13d, eax
- mov rcx, 0xD1FFAB1E ; Internal.Win32.SafeHandles.SafeRegistryHandle
- cmp qword ptr [rbx], rcx
- jne G_M27413_IG23
- mov rcx, qword ptr [rbx+0x10]
- mov rax, 0xD1FFAB1E ; function address
- mov qword ptr [rbp-0x68], rax
- lea rax, G_M27413_IG13
- mov qword ptr [rbp-0x50], rax
- lea rax, bword ptr [rbp-0x78]
- ; byrRegs +[rax]
- mov qword ptr [rdi+0x10], rax
- mov byte ptr [rdi+0x0C], 0
- ;; size=68 bbWeight=0.00 PerfScore 0.01
-G_M27413_IG11: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jne SHORT G_M27413_IG17
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M27413_IG10: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx]
- ; byrRegs -[rax]
- mov rax, 0xD1FFAB1E ; function address
- ;; size=10 bbWeight=0.00 PerfScore 0.00
-G_M27413_IG12: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call rax ; <unknown method>
- ; gcr arg pop 0
- ;; size=2 bbWeight=0.00 PerfScore 0.00
-G_M27413_IG13: ; bbWeight=0.00, isz, extend
- mov byte ptr [rdi+0x0C], 1
- cmp dword ptr [(reloc)], 0
- je SHORT G_M27413_IG14
- call [CORINFO_HELP_STOP_FOR_GC]
- ; gcr arg pop 0
- ;; size=19 bbWeight=0.00 PerfScore 0.01
-G_M27413_IG14: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, bword ptr [rbp-0x70]
- ; byrRegs +[rcx]
- mov qword ptr [rdi+0x10], rcx
- ;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M27413_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rcx]
- mov ecx, r13d
- call <unknown method>
- ; gcr arg pop 0
- jmp SHORT G_M27413_IG24
- ;; size=10 bbWeight=1 PerfScore 3.25
-G_M27413_IG16: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx]
- or edx, 2
- jmp G_M27413_IG08
- ;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M27413_IG17: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- or edx, 1
- jmp G_M27413_IG07
- ;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M27413_IG18: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- cmp byte ptr [rbx+0x1C], 0
- je G_M27413_IG05
- mov rcx, 0xD1FFAB1E ; Internal.Win32.SafeHandles.SafeRegistryHandle
- cmp qword ptr [rbx], rcx
- jne SHORT G_M27413_IG21
- mov rcx, rbx
- ; gcrRegs +[rcx]
- call [Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid:get_IsInvalid():ubyte:this]
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- ;; size=34 bbWeight=0.00 PerfScore 0.02
-G_M27413_IG19: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- test eax, eax
- sete al
- movzx rax, al
- jmp G_M27413_IG06
- ;; size=13 bbWeight=0.00 PerfScore 0.01
-G_M27413_IG20: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- test r14b, 2
- jne SHORT G_M27413_IG24
- jmp G_M27413_IG04
- ;; size=11 bbWeight=0.00 PerfScore 0.01
-G_M27413_IG21: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rcx, rbx
- ; gcrRegs +[rcx]
- mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x48]
- call [rax+0x20]<unknown method>
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- jmp SHORT G_M27413_IG19
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M27413_IG22: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov rcx, rbx
- ; gcrRegs +[rcx]
- call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)]
- ; gcrRegs -[rcx rbx]
- ; gcr arg pop 0
- int3
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M27413_IG23: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x48]
- call [rax+0x38]<unknown method>
- ; gcrRegs -[rcx rbx]
- ; gcr arg pop 0
- jmp SHORT G_M27413_IG15
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M27413_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
add rsp, 104
pop rbx
pop rsi
@@ -225,9 +120,117 @@ G_M27413_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop r15
pop rbp
ret
- ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=17 bbWeight=0.09 PerfScore 0.46
+G_M27413_IG11: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov ecx, r13d
+ call <unknown method>
+ ; gcr arg pop 0
+ jmp SHORT G_M27413_IG10
+ ;; size=10 bbWeight=1 PerfScore 3.25
+G_M27413_IG12: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rbx]
+ or edx, 2
+ jmp SHORT G_M27413_IG08
+ ;; size=5 bbWeight=0.00 PerfScore 0.00
+G_M27413_IG13: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ or edx, 1
+ jmp SHORT G_M27413_IG07
+ ;; size=5 bbWeight=0.00 PerfScore 0.00
+G_M27413_IG14: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ cmp byte ptr [rbx+0x1C], 0
+ je SHORT G_M27413_IG05
+ mov rcx, 0xD1FFAB1E ; Internal.Win32.SafeHandles.SafeRegistryHandle
+ cmp qword ptr [rbx], rcx
+ jne G_M27413_IG22
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ call [Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid:get_IsInvalid():ubyte:this]
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ ;; size=34 bbWeight=0.00 PerfScore 0.02
+G_M27413_IG15: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ test eax, eax
+ sete al
+ movzx rax, al
+ jmp SHORT G_M27413_IG06
+ ;; size=10 bbWeight=0.00 PerfScore 0.01
+G_M27413_IG16: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ test r14b, 2
+ jne SHORT G_M27413_IG10
+ jmp G_M27413_IG04
+ ;; size=11 bbWeight=0.00 PerfScore 0.01
+G_M27413_IG17: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ call <unknown method>
+ ; gcr arg pop 0
+ mov r13d, eax
+ mov rcx, 0xD1FFAB1E ; Internal.Win32.SafeHandles.SafeRegistryHandle
+ cmp qword ptr [rbx], rcx
+ jne SHORT G_M27413_IG24
+ mov rcx, qword ptr [rbx+0x10]
+ mov rax, 0xD1FFAB1E ; function address
+ mov qword ptr [rbp-0x68], rax
+ lea rax, G_M27413_IG20
+ mov qword ptr [rbp-0x50], rax
+ lea rax, bword ptr [rbp-0x78]
+ ; byrRegs +[rax]
+ mov qword ptr [rdi+0x10], rax
+ mov byte ptr [rdi+0x0C], 0
+ ;; size=64 bbWeight=0.00 PerfScore 0.01
+G_M27413_IG18: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ ; byrRegs -[rax]
+ mov rax, 0xD1FFAB1E ; function address
+ ;; size=10 bbWeight=0.00 PerfScore 0.00
+G_M27413_IG19: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call rax ; <unknown method>
+ ; gcr arg pop 0
+ ;; size=2 bbWeight=0.00 PerfScore 0.00
+G_M27413_IG20: ; bbWeight=0.00, isz, extend
+ mov byte ptr [rdi+0x0C], 1
+ cmp dword ptr [(reloc)], 0
+ je SHORT G_M27413_IG21
+ call [CORINFO_HELP_STOP_FOR_GC]
+ ; gcr arg pop 0
+ ;; size=19 bbWeight=0.00 PerfScore 0.01
+G_M27413_IG21: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rcx, bword ptr [rbp-0x70]
+ ; byrRegs +[rcx]
+ mov qword ptr [rdi+0x10], rcx
+ jmp G_M27413_IG11
+ ;; size=13 bbWeight=0.00 PerfScore 0.00
+G_M27413_IG22: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx]
...
-5 (-4.20%) : 49449.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -11,37 +11,35 @@
;
; V00 arg0 [V00,T00] ( 8, 5.03) long -> rcx single-def
; V01 arg1 [V01,T01] ( 7, 5 ) ref -> rdx class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3 ) long -> rbx
-; V03 loc1 [V03,T03] ( 10, 3 ) long -> rsi
-; V04 loc2 [V04,T02] ( 10, 4.03) long -> rdi
+; V02 loc0 [V02,T03] ( 4, 3.06) long -> rbx
+; V03 loc1 [V03,T04] ( 10, 3 ) long -> r8
+; V04 loc2 [V04,T02] ( 10, 4.03) long -> r10
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi
- push rsi
push rbx
- ;; size=3 bbWeight=1 PerfScore 3.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
test rdx, rdx
je SHORT G_M24157_IG04
mov rbx, qword ptr [rdx]
- movzx rsi, word ptr [rbx+0x0E]
- test rsi, rsi
- je SHORT G_M24157_IG08
- mov rdi, qword ptr [rbx+0x40]
- cmp rsi, 4
- jl SHORT G_M24157_IG06
- ;; size=27 bbWeight=1 PerfScore 9.75
+ movzx r8, word ptr [rbx+0x0E]
+ test r8, r8
+ je SHORT G_M24157_IG06
+ mov r10, qword ptr [rbx+0x40]
+ cmp r8, 4
+ jl SHORT G_M24157_IG09
+ ;; size=28 bbWeight=1 PerfScore 9.75
G_M24157_IG03: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [rdi], rcx
+ cmp qword ptr [r10], rcx
je SHORT G_M24157_IG04
- cmp qword ptr [rdi+0x08], rcx
+ cmp qword ptr [r10+0x08], rcx
je SHORT G_M24157_IG04
- cmp qword ptr [rdi+0x10], rcx
- jne SHORT G_M24157_IG10
+ cmp qword ptr [r10+0x10], rcx
+ jne SHORT G_M24157_IG08
;; size=17 bbWeight=1 PerfScore 12.00
G_M24157_IG04: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
mov rax, rdx
@@ -49,47 +47,47 @@ G_M24157_IG04: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr
;; size=3 bbWeight=1 PerfScore 0.25
G_M24157_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbx
- pop rsi
- pop rdi
ret
- ;; size=4 bbWeight=1 PerfScore 2.50
-G_M24157_IG06: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M24157_IG06: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
- cmp qword ptr [rdi], rcx
- je SHORT G_M24157_IG04
- ;; size=5 bbWeight=0.03 PerfScore 0.11
-G_M24157_IG07: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- add rdi, 8
- dec rsi
- test rsi, rsi
- jg SHORT G_M24157_IG06
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M24157_IG08: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
test dword ptr [rbx], 0xD1FFAB1E
- jne SHORT G_M24157_IG09
- xor rdx, rdx
- jmp SHORT G_M24157_IG04
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M24157_IG09: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, epilog, nogc
+ je SHORT G_M24157_IG11
+ ;; size=8 bbWeight=0.06 PerfScore 0.23
+G_M24157_IG07: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, epilog, nogc
pop rbx
- pop rsi
- pop rdi
tail.jmp [<unknown method>]
; gcr arg pop 0
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M24157_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
- cmp qword ptr [rdi+0x18], rcx
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M24157_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
+ cmp qword ptr [r10+0x18], rcx
je SHORT G_M24157_IG04
- add rdi, 32
- add rsi, -4
- cmp rsi, 4
+ add r10, 32
+ add r8, -4
+ cmp r8, 4
jge SHORT G_M24157_IG03
- test rsi, rsi
- je SHORT G_M24157_IG08
+ test r8, r8
+ je SHORT G_M24157_IG06
+ ;; size=25 bbWeight=0 PerfScore 0.00
+G_M24157_IG09: ; bbWeight=0.03, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ cmp qword ptr [r10], rcx
+ je SHORT G_M24157_IG04
+ ;; size=5 bbWeight=0.03 PerfScore 0.11
+G_M24157_IG10: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ add r10, 8
+ dec r8
+ test r8, r8
+ jg SHORT G_M24157_IG09
jmp SHORT G_M24157_IG06
- ;; size=27 bbWeight=0 PerfScore 0.00
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M24157_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdx]
+ xor rdx, rdx
+ ; gcrRegs +[rdx]
+ jmp SHORT G_M24157_IG04
+ ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 119, prolog size 3, PerfScore 27.61, instruction count 46, allocated bytes for code 119 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 114, prolog size 1, PerfScore 24.84, instruction count 40, allocated bytes for code 114 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -97,11 +95,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+21 (+9.01%) : 27539.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
@@ -50,31 +50,31 @@ G_M27413_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=30 bbWeight=1 PerfScore 8.00
-G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x18]
test esi, esi
- jne SHORT G_M27413_IG09
- ;; size=7 bbWeight=1.50 PerfScore 4.88
+ jne G_M27413_IG11
+ ;; size=11 bbWeight=1.50 PerfScore 4.88
G_M27413_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov ebp, edi
and ebp, -4
- je G_M27413_IG14
+ je G_M27413_IG15
mov eax, edi
and eax, -3
cmp eax, 4
- je SHORT G_M27413_IG10
+ je SHORT G_M27413_IG12
;; size=21 bbWeight=1 PerfScore 3.25
G_M27413_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor r14d, r14d
;; size=3 bbWeight=1 PerfScore 0.25
-G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx r15, r14b
lea r13d, [rdi-0x04]
cmp ebp, 4
- je SHORT G_M27413_IG11
+ je G_M27413_IG13
test esi, esi
- jne SHORT G_M27413_IG12
- ;; size=17 bbWeight=1 PerfScore 3.25
+ jne G_M27413_IG14
+ ;; size=25 bbWeight=1 PerfScore 3.25
G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
lea rcx, bword ptr [rbx+0x18]
; byrRegs +[rcx]
@@ -84,9 +84,24 @@ G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
cmp eax, edi
jne SHORT G_M27413_IG03
test r15d, r15d
- je SHORT G_M27413_IG13
- call <unknown method>
+ jne SHORT G_M27413_IG09
+ ;; size=20 bbWeight=1 PerfScore 21.25
+G_M27413_IG08: ; bbWeight=1.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rbx]
; byrRegs -[rcx]
+ add rsp, 32
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r13
+ pop r14
+ pop r15
+ ret
+ ;; size=15 bbWeight=1.14 PerfScore 5.40
+G_M27413_IG09: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx]
+ call <unknown method>
; gcr arg pop 0
mov edi, eax
mov rcx, rbx
@@ -97,8 +112,8 @@ G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rcx rbx]
; gcr arg pop 0
mov ecx, edi
- ;; size=42 bbWeight=1 PerfScore 30.00
-G_M27413_IG08: ; bbWeight=1, epilog, nogc, extend
+ ;; size=22 bbWeight=1 PerfScore 8.75
+G_M27413_IG10: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
pop rbp
@@ -110,13 +125,13 @@ G_M27413_IG08: ; bbWeight=1, epilog, nogc, extend
jmp <unknown method>
; gcr arg pop 0
;; size=19 bbWeight=1 PerfScore 5.75
-G_M27413_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27413_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
test dil, 2
- jne SHORT G_M27413_IG13
- jmp SHORT G_M27413_IG04
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M27413_IG08
+ jmp G_M27413_IG04
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbx+0x1C], 0
je SHORT G_M27413_IG05
mov rcx, rbx
@@ -129,31 +144,18 @@ G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
xor r14d, r14d
test eax, eax
sete r14b
- jmp SHORT G_M27413_IG06
- ;; size=30 bbWeight=0 PerfScore 0.00
-G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M27413_IG06
+ ;; size=33 bbWeight=0 PerfScore 0.00
+G_M27413_IG13: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
or r13d, 1
test esi, esi
je SHORT G_M27413_IG07
;; size=8 bbWeight=0 PerfScore 0.00
-G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or r13d, 2
- jmp SHORT G_M27413_IG07
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M27413_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rbx]
- add rsp, 32
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r13
- pop r14
- pop r15
- ret
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[rbx]
+ jmp G_M27413_IG07
+ ;; size=9 bbWeight=0 PerfScore 0.00
+G_M27413_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rbx
; gcrRegs +[rcx]
call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)]
@@ -162,7 +164,7 @@ G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
int3
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 233, prolog size 17, PerfScore 62.88, instruction count 87, allocated bytes for code 233 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
+; Total bytes of code 254, prolog size 17, PerfScore 68.27, instruction count 87, allocated bytes for code 254 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
; ============================================================
Unwind Info:
+21 (+9.01%) : 115391.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
@@ -50,31 +50,31 @@ G_M27413_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=30 bbWeight=1 PerfScore 8.00
-G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x18]
test esi, esi
- jne SHORT G_M27413_IG09
- ;; size=7 bbWeight=1.50 PerfScore 4.88
+ jne G_M27413_IG11
+ ;; size=11 bbWeight=1.50 PerfScore 4.88
G_M27413_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov ebp, edi
and ebp, -4
- je G_M27413_IG14
+ je G_M27413_IG15
mov eax, edi
and eax, -3
cmp eax, 4
- je SHORT G_M27413_IG10
+ je SHORT G_M27413_IG12
;; size=21 bbWeight=1 PerfScore 3.25
G_M27413_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor r14d, r14d
;; size=3 bbWeight=1 PerfScore 0.25
-G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx r15, r14b
lea r13d, [rdi-0x04]
cmp ebp, 4
- je SHORT G_M27413_IG11
+ je G_M27413_IG13
test esi, esi
- jne SHORT G_M27413_IG12
- ;; size=17 bbWeight=1 PerfScore 3.25
+ jne G_M27413_IG14
+ ;; size=25 bbWeight=1 PerfScore 3.25
G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
lea rcx, bword ptr [rbx+0x18]
; byrRegs +[rcx]
@@ -84,9 +84,24 @@ G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
cmp eax, edi
jne SHORT G_M27413_IG03
test r15d, r15d
- je SHORT G_M27413_IG13
- call <unknown method>
+ jne SHORT G_M27413_IG09
+ ;; size=20 bbWeight=1 PerfScore 21.25
+G_M27413_IG08: ; bbWeight=3.70, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rbx]
; byrRegs -[rcx]
+ add rsp, 32
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r13
+ pop r14
+ pop r15
+ ret
+ ;; size=15 bbWeight=3.70 PerfScore 17.59
+G_M27413_IG09: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx]
+ call <unknown method>
; gcr arg pop 0
mov edi, eax
mov rcx, rbx
@@ -97,8 +112,8 @@ G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rcx rbx]
; gcr arg pop 0
mov ecx, edi
- ;; size=42 bbWeight=1 PerfScore 30.00
-G_M27413_IG08: ; bbWeight=1, epilog, nogc, extend
+ ;; size=22 bbWeight=1 PerfScore 8.75
+G_M27413_IG10: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
pop rbp
@@ -110,13 +125,13 @@ G_M27413_IG08: ; bbWeight=1, epilog, nogc, extend
jmp <unknown method>
; gcr arg pop 0
;; size=19 bbWeight=1 PerfScore 5.75
-G_M27413_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27413_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
test dil, 2
- jne SHORT G_M27413_IG13
- jmp SHORT G_M27413_IG04
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M27413_IG08
+ jmp G_M27413_IG04
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbx+0x1C], 0
je SHORT G_M27413_IG05
mov rcx, rbx
@@ -129,31 +144,18 @@ G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
xor r14d, r14d
test eax, eax
sete r14b
- jmp SHORT G_M27413_IG06
- ;; size=30 bbWeight=0 PerfScore 0.00
-G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M27413_IG06
+ ;; size=33 bbWeight=0 PerfScore 0.00
+G_M27413_IG13: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
or r13d, 1
test esi, esi
je SHORT G_M27413_IG07
;; size=8 bbWeight=0 PerfScore 0.00
-G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or r13d, 2
- jmp SHORT G_M27413_IG07
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M27413_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rbx]
- add rsp, 32
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r13
- pop r14
- pop r15
- ret
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[rbx]
+ jmp G_M27413_IG07
+ ;; size=9 bbWeight=0 PerfScore 0.00
+G_M27413_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rbx
; gcrRegs +[rcx]
call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)]
@@ -162,7 +164,7 @@ G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
int3
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 233, prolog size 17, PerfScore 62.88, instruction count 87, allocated bytes for code 233 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
+; Total bytes of code 254, prolog size 17, PerfScore 80.47, instruction count 87, allocated bytes for code 254 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
; ============================================================
Unwind Info:
+21 (+9.01%) : 117356.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
@@ -50,31 +50,31 @@ G_M27413_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=30 bbWeight=1 PerfScore 8.00
-G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x18]
test esi, esi
- jne SHORT G_M27413_IG09
- ;; size=7 bbWeight=1.50 PerfScore 4.88
+ jne G_M27413_IG11
+ ;; size=11 bbWeight=1.50 PerfScore 4.88
G_M27413_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov ebp, edi
and ebp, -4
- je G_M27413_IG14
+ je G_M27413_IG15
mov eax, edi
and eax, -3
cmp eax, 4
- je SHORT G_M27413_IG10
+ je SHORT G_M27413_IG12
;; size=21 bbWeight=1 PerfScore 3.25
G_M27413_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor r14d, r14d
;; size=3 bbWeight=1 PerfScore 0.25
-G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx r15, r14b
lea r13d, [rdi-0x04]
cmp ebp, 4
- je SHORT G_M27413_IG11
+ je G_M27413_IG13
test esi, esi
- jne SHORT G_M27413_IG12
- ;; size=17 bbWeight=1 PerfScore 3.25
+ jne G_M27413_IG14
+ ;; size=25 bbWeight=1 PerfScore 3.25
G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
lea rcx, bword ptr [rbx+0x18]
; byrRegs +[rcx]
@@ -84,9 +84,24 @@ G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
cmp eax, edi
jne SHORT G_M27413_IG03
test r15d, r15d
- je SHORT G_M27413_IG13
- call <unknown method>
+ jne SHORT G_M27413_IG09
+ ;; size=20 bbWeight=1 PerfScore 21.25
+G_M27413_IG08: ; bbWeight=9.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rbx]
; byrRegs -[rcx]
+ add rsp, 32
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r13
+ pop r14
+ pop r15
+ ret
+ ;; size=15 bbWeight=9.09 PerfScore 43.18
+G_M27413_IG09: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx]
+ call <unknown method>
; gcr arg pop 0
mov edi, eax
mov rcx, rbx
@@ -97,8 +112,8 @@ G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rcx rbx]
; gcr arg pop 0
mov ecx, edi
- ;; size=42 bbWeight=1 PerfScore 30.00
-G_M27413_IG08: ; bbWeight=1, epilog, nogc, extend
+ ;; size=22 bbWeight=1 PerfScore 8.75
+G_M27413_IG10: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
pop rbp
@@ -110,13 +125,13 @@ G_M27413_IG08: ; bbWeight=1, epilog, nogc, extend
jmp <unknown method>
; gcr arg pop 0
;; size=19 bbWeight=1 PerfScore 5.75
-G_M27413_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27413_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
test dil, 2
- jne SHORT G_M27413_IG13
- jmp SHORT G_M27413_IG04
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M27413_IG08
+ jmp G_M27413_IG04
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbx+0x1C], 0
je SHORT G_M27413_IG05
mov rcx, rbx
@@ -129,31 +144,18 @@ G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
xor r14d, r14d
test eax, eax
sete r14b
- jmp SHORT G_M27413_IG06
- ;; size=30 bbWeight=0 PerfScore 0.00
-G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M27413_IG06
+ ;; size=33 bbWeight=0 PerfScore 0.00
+G_M27413_IG13: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
or r13d, 1
test esi, esi
je SHORT G_M27413_IG07
;; size=8 bbWeight=0 PerfScore 0.00
-G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or r13d, 2
- jmp SHORT G_M27413_IG07
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M27413_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rbx]
- add rsp, 32
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r13
- pop r14
- pop r15
- ret
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[rbx]
+ jmp G_M27413_IG07
+ ;; size=9 bbWeight=0 PerfScore 0.00
+G_M27413_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rbx
; gcrRegs +[rcx]
call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)]
@@ -162,7 +164,7 @@ G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
int3
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 233, prolog size 17, PerfScore 62.88, instruction count 87, allocated bytes for code 233 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
+; Total bytes of code 254, prolog size 17, PerfScore 106.06, instruction count 87, allocated bytes for code 254 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
; ============================================================
Unwind Info:
librariestestsnotieredcompilation.run.windows.x64.Release.mch
-39 (-3.17%) : 321767.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4863_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -8,31 +8,31 @@
; 7 inlinees with PGO data; 26 single block inlinees; 16 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 36, 46.04) ref -> rbx class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
-; V01 arg1 [V01,T35] ( 4, 8 ) byref -> rdx single-def
+; V00 arg0 [V00,T00] ( 36, 46.04) ref -> rbx class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
+; V01 arg1 [V01,T29] ( 4, 8 ) byref -> rdx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T25] ( 16, 10 ) int -> rbp single-def
-; V04 loc2 [V04,T26] ( 21, 11.50) int -> registers
+; V03 loc1 [V03,T13] ( 16, 10 ) int -> rbp single-def
+; V04 loc2 [V04,T12] ( 21, 13 ) int -> registers
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref
;* V07 loc5 [V07,T85] ( 0, 0 ) int -> zero-ref single-def
-; V08 loc6 [V08,T53] ( 3, 5.50) int -> r13 single-def
-; V09 loc7 [V09,T55] ( 4, 5 ) int -> rax
+; V08 loc6 [V08,T45] ( 3, 5.50) int -> r13 single-def
+; V09 loc7 [V09,T47] ( 4, 5 ) int -> rax
;* V10 loc8 [V10,T86] ( 0, 0 ) int -> zero-ref single-def
-;* V11 loc9 [V11,T89] ( 0, 0 ) int -> zero-ref
-; V12 loc10 [V12,T18] ( 5, 16.50) int -> r8
-; V13 loc11 [V13,T05] ( 2, 36 ) int -> rdx
-; V14 loc12 [V14,T00] ( 7,112 ) int -> rcx
+;* V11 loc9 [V11,T87] ( 0, 0 ) int -> zero-ref
+; V12 loc10 [V12,T14] ( 5, 13.50) int -> r8
+; V13 loc11 [V13,T48] ( 2, 4.50) int -> rdx
+; V14 loc12 [V14,T01] ( 7, 24.50) int -> rcx
;* V15 loc13 [V15 ] ( 0, 0 ) ushort -> zero-ref
;* V16 loc14 [V16 ] ( 0, 0 ) ushort -> zero-ref
; V17 OutArgs [V17 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V18 tmp1 [V18 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
-;* V19 tmp2 [V19,T87] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V19 tmp2 [V19,T88] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V20 tmp3 [V20 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
-;* V21 tmp4 [V21,T88] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V21 tmp4 [V21,T89] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V22 tmp5 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V23 tmp6 [V23,T37] ( 4, 8 ) int -> r15 "Inlining Arg"
-; V24 tmp7 [V24,T64] ( 3, 3 ) byref -> r14 single-def "Inlining Arg"
+; V23 tmp6 [V23,T32] ( 4, 8 ) int -> r15 "Inlining Arg"
+; V24 tmp7 [V24,T57] ( 3, 3 ) byref -> r14 single-def "Inlining Arg"
;* V25 tmp8 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V26 tmp9 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V27 tmp10 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
@@ -41,72 +41,72 @@
;* V30 tmp13 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V31 tmp14 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V32 tmp15 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V33 tmp16 [V33,T68] ( 3, 3 ) int -> r12 "Inlining Arg"
-; V34 tmp17 [V34,T75] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
+; V33 tmp16 [V33,T64] ( 3, 3 ) int -> r12 "Inlining Arg"
+; V34 tmp17 [V34,T72] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
;* V35 tmp18 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp19 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V37 tmp20 [V37,T56] ( 4, 4 ) int -> [rsp+0x34] "Inlining Arg"
-; V38 tmp21 [V38,T57] ( 4, 4 ) int -> [rsp+0x30] "Inlining Arg"
+; V37 tmp20 [V37,T49] ( 4, 4 ) int -> [rsp+0x34] "Inlining Arg"
+; V38 tmp21 [V38,T50] ( 4, 4 ) int -> [rsp+0x30] "Inlining Arg"
;* V39 tmp22 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V40 tmp23 [V40,T71] ( 4, 2 ) int -> r8 single-def "Inline stloc first use temp"
-; V41 tmp24 [V41,T65] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V40 tmp23 [V40,T68] ( 4, 2 ) int -> r8 single-def "Inline stloc first use temp"
+; V41 tmp24 [V41,T58] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V42 tmp25 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V43 tmp26 [V43,T69] ( 3, 3 ) int -> r12 "Inlining Arg"
-; V44 tmp27 [V44,T76] ( 2, 2 ) byref -> r15 "Inlining Arg"
+; V43 tmp26 [V43,T65] ( 3, 3 ) int -> r12 "Inlining Arg"
+; V44 tmp27 [V44,T73] ( 2, 2 ) byref -> r15 "Inlining Arg"
;* V45 tmp28 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp29 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V47 tmp30 [V47,T33] ( 3, 12 ) int -> rdx "Inline stloc first use temp"
-; V48 tmp31 [V48,T23] ( 4, 16 ) int -> rax "Inline stloc first use temp"
-; V49 tmp32 [V49,T08] ( 3, 24 ) ref -> rdx class-hnd "impAppendStmt" <<unknown class>>
+; V47 tmp30 [V47,T24] ( 3, 12 ) int -> rdx "Inline stloc first use temp"
+; V48 tmp31 [V48,T10] ( 4, 16 ) int -> rax "Inline stloc first use temp"
+; V49 tmp32 [V49,T02] ( 3, 24 ) ref -> rdx class-hnd "impAppendStmt" <<unknown class>>
;* V50 tmp33 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V51 tmp34 [V51,T09] ( 3, 24 ) byref -> rdx "dup spill"
+; V51 tmp34 [V51,T03] ( 3, 24 ) byref -> rdx "dup spill"
;* V52 tmp35 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V53 tmp36 [V53,T78] ( 2, 2 ) int -> r12 "Inlining Arg"
-; V54 tmp37 [V54,T74] ( 3, 2 ) byref -> r15 "Inlining Arg"
+; V53 tmp36 [V53,T54] ( 2, 4 ) int -> r12 "Inlining Arg"
+; V54 tmp37 [V54,T59] ( 3, 3 ) byref -> r15 "Inlining Arg"
;* V55 tmp38 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V56 tmp39 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V57 tmp40 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V58 tmp41 [V58,T70] ( 3, 3 ) int -> r12 "Inlining Arg"
-; V59 tmp42 [V59,T77] ( 2, 2 ) byref -> r15 "Inlining Arg"
+; V58 tmp41 [V58,T66] ( 3, 3 ) int -> r12 "Inlining Arg"
+; V59 tmp42 [V59,T74] ( 2, 2 ) byref -> r15 "Inlining Arg"
;* V60 tmp43 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V61 tmp44 [V61 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V62 tmp45 [V62,T58] ( 4, 4 ) int -> [rsp+0x2C] "Inlining Arg"
-; V63 tmp46 [V63,T59] ( 4, 4 ) int -> [rsp+0x28] "Inlining Arg"
+; V62 tmp45 [V62,T51] ( 4, 4 ) int -> [rsp+0x2C] "Inlining Arg"
+; V63 tmp46 [V63,T52] ( 4, 4 ) int -> [rsp+0x28] "Inlining Arg"
;* V64 tmp47 [V64 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V65 tmp48 [V65,T72] ( 4, 2 ) int -> r8 "Inline stloc first use temp"
-; V66 tmp49 [V66,T66] ( 3, 3 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>>
-;* V67 tmp50 [V67,T63] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V68 tmp51 [V68,T10] ( 3, 24 ) ref -> rcx class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V69 tmp52 [V69,T29] ( 3, 12 ) ref -> rdx class-hnd "Inline stloc first use temp" <<unknown class>>
-; V70 tmp53 [V70,T39] ( 3, 8 ) int -> r8 "Inline return value spill temp"
-;* V71 tmp54 [V71,T43] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-;* V72 tmp55 [V72,T61] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V73 tmp56 [V73,T27] ( 4, 12 ) int -> r8 "Inline stloc first use temp"
-; V74 tmp57 [V74,T40] ( 3, 8 ) int -> rdx "Inline return value spill temp"
-;* V75 tmp58 [V75,T44] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-;* V76 tmp59 [V76,T62] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V77 tmp60 [V77,T28] ( 4, 12 ) int -> rdx "Inline stloc first use temp"
+; V65 tmp48 [V65,T69] ( 4, 2 ) int -> r8 "Inline stloc first use temp"
+; V66 tmp49 [V66,T60] ( 3, 3 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>>
+;* V67 tmp50 [V67,T56] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V68 tmp51 [V68,T04] ( 3, 24 ) ref -> rcx class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
+; V69 tmp52 [V69,T19] ( 3, 12 ) ref -> rdx class-hnd "Inline stloc first use temp" <<unknown class>>
+; V70 tmp53 [V70,T34] ( 3, 8 ) int -> r8 "Inline return value spill temp"
+;* V71 tmp54 [V71,T36] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
+;* V72 tmp55 [V72,T55] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
+; V73 tmp56 [V73,T18] ( 4, 12 ) int -> r8 "Inline stloc first use temp"
+; V74 tmp57 [V74,T75] ( 3, 1.50) int -> rdx "Inline return value spill temp"
+;* V75 tmp58 [V75,T83] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
+;* V76 tmp59 [V76,T90] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
+; V77 tmp60 [V77,T70] ( 4, 2 ) int -> rdx "Inline stloc first use temp"
;* V78 tmp61 [V78 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V79 tmp62 [V79 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V80 tmp63 [V80 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V81 tmp64 [V81 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V82 tmp65 [V82 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V83 tmp66 [V83,T60] ( 4, 4 ) int -> r13 "Inlining Arg"
-; V84 tmp67 [V84,T54] ( 5, 5 ) int -> rsi "Inlining Arg"
+; V83 tmp66 [V83,T53] ( 4, 4 ) int -> r13 "Inlining Arg"
+; V84 tmp67 [V84,T46] ( 5, 5 ) int -> rsi "Inlining Arg"
;* V85 tmp68 [V85 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V86 tmp69 [V86,T73] ( 4, 2 ) int -> rcx single-def "Inline stloc first use temp"
-; V87 tmp70 [V87,T67] ( 3, 3 ) ref -> r9 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V88 tmp71 [V88,T50] ( 3, 6 ) int -> rcx "Inline stloc first use temp"
-; V89 tmp72 [V89,T38] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
-; V90 tmp73 [V90,T30] ( 3, 12 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>>
+; V86 tmp69 [V86,T71] ( 4, 2 ) int -> rcx single-def "Inline stloc first use temp"
+; V87 tmp70 [V87,T61] ( 3, 3 ) ref -> r9 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V88 tmp71 [V88,T43] ( 3, 6 ) int -> rcx "Inline stloc first use temp"
+; V89 tmp72 [V89,T33] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
+; V90 tmp73 [V90,T20] ( 3, 12 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>>
;* V91 tmp74 [V91 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V92 tmp75 [V92,T31] ( 3, 12 ) byref -> rcx "dup spill"
+; V92 tmp75 [V92,T21] ( 3, 12 ) byref -> rcx "dup spill"
;* V93 tmp76 [V93 ] ( 0, 0 ) byref -> zero-ref "field V01._reference (fldOffset=0x0)" P-INDEP
;* V94 tmp77 [V94 ] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP
-; V95 tmp78 [V95,T06] ( 6, 35.50) byref -> rsi single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V96 tmp79 [V96,T03] ( 11, 38.50) int -> rdi single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V97 tmp80 [V97,T07] ( 5, 34 ) byref -> r15 "field V05._reference (fldOffset=0x0)" P-INDEP
-; V98 tmp81 [V98,T04] ( 6, 38 ) int -> r12 "field V05._length (fldOffset=0x8)" P-INDEP
+; V95 tmp78 [V95,T40] ( 6, 7.50) byref -> rsi single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V96 tmp79 [V96,T27] ( 11, 11 ) int -> rdi single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V97 tmp80 [V97,T42] ( 5, 6.50) byref -> r15 "field V05._reference (fldOffset=0x0)" P-INDEP
+; V98 tmp81 [V98,T28] ( 6, 10.50) int -> r12 "field V05._length (fldOffset=0x8)" P-INDEP
;* V99 tmp82 [V99 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP
;* V100 tmp83 [V100 ] ( 0, 0 ) int -> zero-ref single-def "field V18._length (fldOffset=0x8)" P-INDEP
;* V101 tmp84 [V101 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
@@ -115,42 +115,43 @@
;* V104 tmp87 [V104 ] ( 0, 0 ) int -> zero-ref single-def "field V22._length (fldOffset=0x8)" P-INDEP
;* V105 tmp88 [V105 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP
;* V106 tmp89 [V106 ] ( 0, 0 ) int -> zero-ref single-def "field V27._length (fldOffset=0x8)" P-INDEP
-; V107 tmp90 [V107,T79] ( 2, 1 ) byref -> r15 single-def "field V32._reference (fldOffset=0x0)" P-INDEP
-; V108 tmp91 [V108,T82] ( 2, 1 ) int -> r12 single-def "field V32._length (fldOffset=0x8)" P-INDEP
-; V109 tmp92 [V109,T80] ( 2, 1 ) byref -> r15 "field V42._reference (fldOffset=0x0)" P-INDEP
-; V110 tmp93 [V110,T83] ( 2, 1 ) int -> r12 "field V42._length (fldOffset=0x8)" P-INDEP
+; V107 tmp90 [V107,T77] ( 2, 1 ) byref -> r15 single-def "field V32._reference (fldOffset=0x0)" P-INDEP
+; V108 tmp91 [V108,T80] ( 2, 1 ) int -> r12 single-def "field V32._length (fldOffset=0x8)" P-INDEP
+; V109 tmp92 [V109,T78] ( 2, 1 ) byref -> r15 "field V42._reference (fldOffset=0x0)" P-INDEP
+; V110 tmp93 [V110,T81] ( 2, 1 ) int -> r12 "field V42._length (fldOffset=0x8)" P-INDEP
;* V111 tmp94 [V111 ] ( 0, 0 ) byref -> zero-ref "field V52._reference (fldOffset=0x0)" P-INDEP
;* V112 tmp95 [V112 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x8)" P-INDEP
-; V113 tmp96 [V113,T81] ( 2, 1 ) byref -> r15 "field V57._reference (fldOffset=0x0)" P-INDEP
-; V114 tmp97 [V114,T84] ( 2, 1 ) int -> r12 "field V57._length (fldOffset=0x8)" P-INDEP
+; V113 tmp96 [V113,T79] ( 2, 1 ) byref -> r15 "field V57._reference (fldOffset=0x0)" P-INDEP
+; V114 tmp97 [V114,T82] ( 2, 1 ) int -> r12 "field V57._length (fldOffset=0x8)" P-INDEP
;* V115 tmp98 [V115 ] ( 0, 0 ) byref -> zero-ref "field V78._reference (fldOffset=0x0)" P-INDEP
;* V116 tmp99 [V116 ] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x8)" P-INDEP
;* V117 tmp100 [V117 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V118 tmp101 [V118,T11] ( 3, 24 ) ref -> r8 "arr expr"
-; V119 tmp102 [V119,T14] ( 3, 24 ) int -> r10 "index expr"
-; V120 tmp103 [V120,T12] ( 3, 24 ) ref -> rcx "arr expr"
-;* V121 tmp104 [V121,T45] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V122 tmp105 [V122,T48] ( 0, 0 ) int -> zero-ref "index expr"
-;* V123 tmp106 [V123,T46] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V124 tmp107 [V124,T41] ( 2, 8 ) ref -> r10 "arr expr"
-; V125 tmp108 [V125,T24] ( 2, 16 ) ref -> r10 "arr expr"
-; V126 tmp109 [V126,T15] ( 3, 24 ) int -> rdx "index expr"
-;* V127 tmp110 [V127,T47] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V128 tmp111 [V128,T42] ( 2, 8 ) ref -> rcx "arr expr"
-; V129 tmp112 [V129,T13] ( 3, 24 ) ref -> rax "arr expr"
-; V130 tmp113 [V130,T32] ( 3, 12 ) ref -> rdx "arr expr"
-; V131 cse0 [V131,T34] ( 3, 12 ) int -> r8 "CSE - conservative"
-; V132 cse1 [V132,T17] ( 4, 16 ) int -> rdx "CSE - moderate"
-; V133 cse2 [V133,T16] ( 5, 16 ) ref -> rcx "CSE - moderate"
-; V134 cse3 [V134,T36] ( 4, 9 ) ref -> rcx "CSE - conservative"
-; V135 cse4 [V135,T20] ( 2, 8 ) ref -> rcx "CSE - moderate"
-; V136 cse5 [V136,T21] ( 2, 8 ) ref -> rcx "CSE - moderate"
-; V137 cse6 [V137,T22] ( 2, 8 ) ref -> rdx "CSE - moderate"
-; V138 cse7 [V138,T49] ( 3, 6.54) ref -> rax hoist "CSE - conservative"
-; V139 cse8 [V139,T51] ( 3, 6 ) int -> r8 "CSE - conservative"
-; V140 cse9 [V140,T52] ( 3, 6 ) int -> rdx "CSE - conservative"
-; V141 cse10 [V141,T01] ( 3, 96 ) int -> r10 "CSE - aggressive"
-; V142 cse11 [V142,T19] ( 5, 16 ) int -> r9 "CSE - moderate"
+; V118 tmp101 [V118,T05] ( 3, 24 ) ref -> r8 "arr expr"
+; V119 tmp102 [V119,T08] ( 3, 24 ) int -> r10 "index expr"
+; V120 tmp103 [V120,T06] ( 3, 24 ) ref -> rcx "arr expr"
+;* V121 tmp104 [V121,T37] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V122 tmp105 [V122,T39] ( 0, 0 ) int -> zero-ref "index expr"
+;* V123 tmp106 [V123,T38] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V124 tmp107 [V124,T22] ( 3, 12 ) ref -> r10 "arr expr"
+; V125 tmp108 [V125,T62] ( 3, 3 ) ref -> r10 "arr expr"
+; V126 tmp109 [V126,T67] ( 3, 3 ) int -> rdx "index expr"
+;* V127 tmp110 [V127,T84] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V128 tmp111 [V128,T63] ( 3, 3 ) ref -> rcx "arr expr"
+; V129 tmp112 [V129,T07] ( 3, 24 ) ref -> rax "arr expr"
+; V130 tmp113 [V130,T23] ( 3, 12 ) ref -> rdx "arr expr"
+; V131 cse0 [V131,T25] ( 3, 12 ) int -> r8 "CSE - moderate"
+; V132 cse1 [V132,T09] ( 4, 12.50) int -> rdx "CSE - moderate"
+; V133 cse2 [V133,T11] ( 5, 11 ) ref -> rcx "CSE - moderate"
+; V134 cse3 [V134,T76] ( 3, 1.50) int -> rdx "CSE - conservative"
+; V135 cse4 [V135,T31] ( 4, 9 ) ref -> rcx "CSE - moderate"
+; V136 cse5 [V136,T41] ( 3, 6.54) ref -> rax hoist "CSE - moderate"
+; V137 cse6 [V137,T15] ( 2, 8 ) ref -> rcx "CSE - moderate"
+; V138 cse7 [V138,T16] ( 2, 8 ) ref -> rcx "CSE - moderate"
+; V139 cse8 [V139,T17] ( 2, 8 ) ref -> rdx "CSE - moderate"
+; V140 cse9 [V140,T44] ( 3, 6 ) int -> r8 "CSE - moderate"
+; V141 cse10 [V141,T35] ( 2, 8 ) int -> r8 "CSE - moderate"
+; V142 cse11 [V142,T26] ( 3, 12 ) int -> r10 "CSE - moderate"
+; V143 cse12 [V143,T30] ( 18, 9 ) ref -> rdx multi-def "CSE - moderate"
;
; Lcl frame size = 56
@@ -184,15 +185,15 @@ G_M49982_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx},
;; size=31 bbWeight=1 PerfScore 9.50
G_M49982_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=4040 {rsi r14}, byref
; byrRegs -[rdx]
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
+ mov rcx, rdx
+ ; gcrRegs +[rcx]
mov rax, 0xD1FFAB1E ; code for <unknown method>
call [rax]<unknown method>
; gcrRegs -[rcx rdx]
...
-34 (-2.84%) : 41333.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
@@ -8,52 +8,52 @@
; 8 inlinees with PGO data; 29 single block inlinees; 12 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 10, 9 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.ComponentModel.EnumConverter>
-; V01 arg1 [V01,T26] ( 3, 2.50) ref -> rsi class-hnd single-def <System.ComponentModel.ITypeDescriptorContext>
+; V00 this [V00,T07] ( 10, 10 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.ComponentModel.EnumConverter>
+; V01 arg1 [V01,T26] ( 3, 2.50) ref -> rdi class-hnd single-def <System.ComponentModel.ITypeDescriptorContext>
; V02 arg2 [V02,T06] ( 7, 10.50) ref -> rbx class-hnd single-def <System.Globalization.CultureInfo>
; V03 arg3 [V03,T19] ( 8, 5 ) ref -> [rbp+0x28] class-hnd EH-live single-def <System.Object>
-; V04 loc0 [V04,T29] ( 7, 4.25) ref -> rdi class-hnd exact <System.String>
-; V05 loc1 [V05,T27] ( 2, 4.50) ubyte -> rsi
-; V06 loc2 [V06,T09] ( 4, 9 ) long -> r14
+; V04 loc0 [V04,T29] ( 7, 4.25) ref -> r14 class-hnd exact <System.String>
+; V05 loc1 [V05,T27] ( 2, 4.50) ubyte -> rdi
+; V06 loc2 [V06,T08] ( 4, 9.50) long -> r15
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String[]>
-; V08 loc4 [V08,T23] ( 3, 5 ) ref -> rdi class-hnd exact single-def <System.String[]>
-; V09 loc5 [V09,T00] ( 5, 16.50) int -> r15
+; V08 loc4 [V08,T23] ( 3, 5 ) ref -> r14 class-hnd exact single-def <System.String[]>
+; V09 loc5 [V09,T00] ( 5, 16.50) int -> r13
; V10 loc6 [V10,T02] ( 4, 16 ) ref -> rdx class-hnd exact <System.String>
-; V11 loc7 [V11,T41] ( 3, 1.50) ref -> rax class-hnd <System.Object>
+; V11 loc7 [V11,T34] ( 3, 2 ) ref -> rax class-hnd <System.Object>
;* V12 loc8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V13 loc9 [V13,T28] ( 2, 4.50) ubyte -> rsi
-; V14 loc10 [V14,T10] ( 4, 9 ) long -> rdi
-; V15 loc11 [V15,T24] ( 3, 5 ) ref -> r14 class-hnd single-def <<unknown class>>
-; V16 loc12 [V16,T01] ( 5, 16.50) int -> r15
+; V13 loc9 [V13,T28] ( 2, 4.50) ubyte -> rdi
+; V14 loc10 [V14,T09] ( 4, 9.50) long -> r14
+; V15 loc11 [V15,T24] ( 3, 5 ) ref -> r15 class-hnd single-def <<unknown class>>
+; V16 loc12 [V16,T01] ( 5, 16.50) int -> r13
; V17 loc13 [V17,T11] ( 3, 8 ) ref -> rcx class-hnd <System.Enum>
; V18 OutArgs [V18 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V19 tmp1 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-; V20 tmp2 [V20,T37] ( 2, 2 ) long -> rdx "fgMakeTemp is creating a new local variable"
+; V20 tmp2 [V20,T38] ( 2, 2 ) long -> rdx "fgMakeTemp is creating a new local variable"
; V21 tmp3 [V21,T22] ( 5, 5 ) ref -> rcx class-hnd "spilling QMark2" <<unknown class>>
; V22 tmp4 [V22,T61] ( 2, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
; V23 tmp5 [V23,T62] ( 2, 0 ) ref -> rsi class-hnd exact single-def "bubbling QMark2" <System.String>
;* V24 tmp6 [V24,T66] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V25 tmp7 [V25,T63] ( 2, 0 ) ref -> r14 class-hnd single-def "spilling QMark2" <System.String>
+; V25 tmp7 [V25,T63] ( 2, 0 ) ref -> r15 class-hnd single-def "spilling QMark2" <System.String>
; V26 tmp8 [V26,T59] ( 3, 0 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V27 tmp9 [V27,T51] ( 2, 1.00) ubyte -> rax "Inline return value spill temp"
-; V28 tmp10 [V28,T32] ( 2, 2.00) byref -> r8 single-def "Inlining Arg"
+; V28 tmp10 [V28,T35] ( 2, 2.00) byref -> rcx single-def "Inlining Arg"
;* V29 tmp11 [V29,T54] ( 0, 0 ) short -> zero-ref ld-addr-op "Inlining Arg"
-; V30 tmp12 [V30,T38] ( 2, 2.00) int -> rdx "Inlining Arg"
+; V30 tmp12 [V30,T39] ( 2, 2.00) int -> r8 "Inlining Arg"
;* V31 tmp13 [V31 ] ( 0, 0 ) short -> zero-ref ld-addr-op "Inlining Arg"
-; V32 tmp14 [V32,T21] ( 8, 5.65) ref -> rsi class-hnd single-def "Inlining Arg" <System.Type>
-; V33 tmp15 [V33,T45] ( 3, 1 ) ref -> r14 "guarded devirt return temp"
+; V32 tmp14 [V32,T21] ( 8, 5.65) ref -> rdi class-hnd single-def "Inlining Arg" <System.Type>
+; V33 tmp15 [V33,T45] ( 3, 1 ) ref -> r15 "guarded devirt return temp"
;* V34 tmp16 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
;* V35 tmp17 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
;* V36 tmp18 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-; V37 tmp19 [V37,T56] ( 3, 0.97) ref -> r14 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+; V37 tmp19 [V37,T56] ( 3, 0.97) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
;* V38 tmp20 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V39 tmp21 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V40 tmp22 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V41 tmp23 [V41 ] ( 2, 2 ) ushort -> [rbp-0x34] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+; V41 tmp23 [V41 ] ( 2, 2 ) ushort -> [rbp-0x3C] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
;* V42 tmp24 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V43 tmp25 [V43,T12] ( 3, 8 ) ref -> rcx class-hnd "Inline return value spill temp" <System.Object>
-; V44 tmp26 [V44,T03] ( 2, 16 ) ref -> r8 class-hnd "Inlining Arg" <System.Type>
-; V45 tmp27 [V45 ] ( 4, 13.04) ref -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
+; V44 tmp26 [V44,T03] ( 2, 16 ) ref -> rcx class-hnd "Inlining Arg" <System.Type>
+; V45 tmp27 [V45 ] ( 4, 13.04) ref -> [rbp-0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
;* V46 tmp28 [V46 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V47 tmp29 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V48 tmp30 [V48,T31] ( 2, 2.08) int -> rcx
@@ -61,7 +61,7 @@
;* V50 tmp32 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V51 tmp33 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V52 tmp34 [V52,T05] ( 2, 16 ) int -> rdx "Inlining Arg"
-; V53 tmp35 [V53,T04] ( 2, 16 ) byref -> r9 "Inlining Arg"
+; V53 tmp35 [V53,T04] ( 2, 16 ) byref -> r8 "Inlining Arg"
;* V54 tmp36 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V55 tmp37 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V56 tmp38 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -69,19 +69,19 @@
; V58 tmp40 [V58,T13] ( 3, 8 ) long -> rax "Inline return value spill temp"
;* V59 tmp41 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
; V60 tmp42 [V60,T47] ( 2, 1 ) ref -> rax class-hnd single-def "Inline return value spill temp" <System.Object>
-; V61 tmp43 [V61,T33] ( 2, 2 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Type>
-; V62 tmp44 [V62 ] ( 4, 1.76) ref -> [rbp-0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
+; V61 tmp43 [V61,T36] ( 2, 2 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Type>
+; V62 tmp44 [V62 ] ( 4, 1.76) ref -> [rbp-0x50] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
;* V63 tmp45 [V63 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V64 tmp46 [V64 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V65 tmp47 [V65,T44] ( 2, 0.52) int -> rcx
;* V66 tmp48 [V66 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V67 tmp49 [V67 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V68 tmp50 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V69 tmp51 [V69,T39] ( 2, 2 ) int -> rsi "Inlining Arg"
-; V70 tmp52 [V70,T34] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
+; V69 tmp51 [V69,T40] ( 2, 2 ) int -> rdi "Inlining Arg"
+; V70 tmp52 [V70,T37] ( 2, 2 ) byref -> r14 single-def "Inlining Arg"
;* V71 tmp53 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V72 tmp54 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V73 tmp55 [V73,T30] ( 6, 4.35) ref -> rax class-hnd single-def "Inlining Arg" <System.Type>
+; V73 tmp55 [V73,T30] ( 6, 4.35) ref -> rcx class-hnd single-def "Inlining Arg" <System.Type>
; V74 tmp56 [V74,T46] ( 3, 1 ) ref -> rax "guarded devirt return temp"
;* V75 tmp57 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
; V76 tmp58 [V76,T14] ( 3, 8 ) long -> rax "Inline return value spill temp"
@@ -90,110 +90,103 @@
;* V79 tmp61 [V79,T58] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
;* V80 tmp62 [V80 ] ( 0, 0 ) byref -> zero-ref "field V46._reference (fldOffset=0x0)" P-INDEP
;* V81 tmp63 [V81 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP
-; V82 tmp64 [V82,T15] ( 2, 8 ) byref -> r9 "field V49._reference (fldOffset=0x0)" P-INDEP
+; V82 tmp64 [V82,T15] ( 2, 8 ) byref -> r8 "field V49._reference (fldOffset=0x0)" P-INDEP
; V83 tmp65 [V83,T17] ( 2, 8 ) int -> rdx "field V49._length (fldOffset=0x8)" P-INDEP
-; V84 tmp66 [V84,T16] ( 2, 8 ) byref -> r9 "field V50._reference (fldOffset=0x0)" P-INDEP
+; V84 tmp66 [V84,T16] ( 2, 8 ) byref -> r8 "field V50._reference (fldOffset=0x0)" P-INDEP
; V85 tmp67 [V85,T18] ( 2, 8 ) int -> rdx "field V50._length (fldOffset=0x8)" P-INDEP
;* V86 tmp68 [V86 ] ( 0, 0 ) byref -> zero-ref "field V51._reference (fldOffset=0x0)" P-INDEP
;* V87 tmp69 [V87 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP
;* V88 tmp70 [V88 ] ( 0, 0 ) byref -> zero-ref "field V63._reference (fldOffset=0x0)" P-INDEP
;* V89 tmp71 [V89 ] ( 0, 0 ) int -> zero-ref "field V63._length (fldOffset=0x8)" P-INDEP
-; V90 tmp72 [V90,T49] ( 2, 1 ) byref -> rdi single-def "field V66._reference (fldOffset=0x0)" P-INDEP
-; V91 tmp73 [V91,T52] ( 2, 1 ) int -> rsi "field V66._length (fldOffset=0x8)" P-INDEP
-; V92 tmp74 [V92,T50] ( 2, 1 ) byref -> rdi single-def "field V67._reference (fldOffset=0x0)" P-INDEP
-; V93 tmp75 [V93,T53] ( 2, 1 ) int -> rsi "field V67._length (fldOffset=0x8)" P-INDEP
+; V90 tmp72 [V90,T49] ( 2, 1 ) byref -> r14 single-def "field V66._reference (fldOffset=0x0)" P-INDEP
+; V91 tmp73 [V91,T52] ( 2, 1 ) int -> rdi "field V66._length (fldOffset=0x8)" P-INDEP
+; V92 tmp74 [V92,T50] ( 2, 1 ) byref -> r14 single-def "field V67._reference (fldOffset=0x0)" P-INDEP
+; V93 tmp75 [V93,T53] ( 2, 1 ) int -> rdi "field V67._length (fldOffset=0x8)" P-INDEP
;* V94 tmp76 [V94 ] ( 0, 0 ) byref -> zero-ref "field V68._reference (fldOffset=0x0)" P-INDEP
;* V95 tmp77 [V95 ] ( 0, 0 ) int -> zero-ref "field V68._length (fldOffset=0x8)" P-INDEP
-; V96 tmp78 [V96,T35] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V96 tmp78 [V96,T32] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
; V97 tmp79 [V97,T42] ( 2, 1.30) ref -> rcx single-def "arr expr"
-; V98 tmp80 [V98,T43] ( 2, 1.30) ref -> r14 single-def "arr expr"
-; V99 tmp81 [V99,T40] ( 3, 1.95) int -> rax "index expr"
-; V100 tmp82 [V100 ] ( 9, 30 ) struct (16) [rbp-0x58] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V101 tmp83 [V101,T36] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V98 tmp80 [V98,T43] ( 2, 1.30) ref -> r15 single-def "arr expr"
+; V99 tmp81 [V99,T41] ( 3, 1.95) int -> rax "index expr"
+; V100 tmp82 [V100 ] ( 9, 30 ) struct (16) [rbp-0x60] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V101 tmp83 [V101,T33] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
; V102 tmp84 [V102,T60] ( 3, 0 ) ref -> rax single-def "argument with side effect"
; V103 tmp85 [V103,T64] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
; V104 tmp86 [V104,T65] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
; V105 PSPSym [V105,T55] ( 1, 1 ) long -> [rbp-0x68] do-not-enreg[V] "PSPSym"
-; V106 cse0 [V106,T57] ( 3, 0.97) ref -> r14 "CSE - conservative"
-; V107 cse1 [V107,T08] ( 12, 9.45) ref -> rdx multi-def "CSE - aggressive"
+; V106 cse0 [V106,T57] ( 3, 0.97) ref -> r15 "CSE - conservative"
+; V107 cse1 [V107,T10] ( 12, 9.45) ref -> rdx multi-def "CSE - aggressive"
; V108 cse2 [V108,T20] ( 6, 6.50) int -> registers multi-def "CSE - moderate"
-; V109 cse3 [V109,T25] ( 3, 5 ) int -> r13 "CSE - moderate"
+; V109 cse3 [V109,T25] ( 3, 5 ) int -> r12 "CSE - moderate"
;
-; Lcl frame size = 96
+; Lcl frame size = 88
G_M63242_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
+ push r12
push rdi
push rsi
push rbx
- sub rsp, 96
+ sub rsp, 88
lea rbp, [rsp+0x90]
- xor eax, eax
- mov qword ptr [rbp-0x58], rax
vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rbp-0x50], xmm4
- mov qword ptr [rbp-0x40], rax
+ vmovdqu ymmword ptr [rbp-0x60], ymm4
mov qword ptr [rbp-0x68], rsp
mov gword ptr [rbp+0x10], rcx
; GC ptr vars +{V00}
mov gword ptr [rbp+0x28], r9
; GC ptr vars +{V03}
- mov rsi, rdx
+ mov rsi, rcx
; gcrRegs +[rsi]
+ mov rdi, rdx
+ ; gcrRegs +[rdi]
mov rbx, r8
; gcrRegs +[rbx]
- ;; size=59 bbWeight=1 PerfScore 15.83
-G_M63242_IG02: ; bbWeight=1, gcVars=00000000000000000000000000080080 {V00 V03}, gcrefRegs=0248 {rbx rsi r9}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=54 bbWeight=1 PerfScore 14.83
+G_M63242_IG02: ; bbWeight=1, gcVars=00000000000000000000000000080080 {V00 V03}, gcrefRegs=02C8 {rbx rsi rdi r9}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r9]
- mov rdi, r9
- ; gcrRegs +[rdi]
- test rdi, rdi
+ mov r14, r9
+ ; gcrRegs +[r14]
+ test r14, r14
mov r9, gword ptr [rbp+0x28]
je G_M63242_IG27
;; size=16 bbWeight=1 PerfScore 2.50
-G_M63242_IG03: ; bbWeight=0.25, gcrefRegs=02C8 {rbx rsi rdi r9}, byrefRegs=0000 {}, byref, isz
- mov r8, 0xD1FFAB1E ; System.String
- cmp qword ptr [rdi], r8
+G_M63242_IG03: ; bbWeight=0.25, gcrefRegs=42C8 {rbx rsi rdi r9 r14}, byrefRegs=0000 {}, byref, isz
+ mov rcx, 0xD1FFAB1E ; System.String
+ cmp qword ptr [r14], rcx
je SHORT G_M63242_IG05
;; size=15 bbWeight=0.25 PerfScore 1.06
-G_M63242_IG04: ; bbWeight=0.12, gcrefRegs=0248 {rbx rsi r9}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
+G_M63242_IG04: ; bbWeight=0.12, gcrefRegs=02C8 {rbx rsi rdi r9}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14]
jmp G_M63242_IG27
;; size=5 bbWeight=0.12 PerfScore 0.25
-G_M63242_IG05: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi r9] +[rdi]
- lea r8, bword ptr [rdi+0x0C]
- ; byrRegs +[r8]
- mov esi, dword ptr [rdi+0x08]
- mov edx, esi
- mov rcx, r8
+G_M63242_IG05: ; bbWeight=0.50, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi r9] +[r14]
+ lea rcx, bword ptr [r14+0x0C]
; byrRegs +[rcx]
- mov r8d, edx
- ; byrRegs -[r8]
+ mov edi, dword ptr [r14+0x08]
+ mov r8d, edi
mov edx, 44
call [<unknown method>]
; byrRegs -[rcx]
; gcr arg pop 0
test eax, eax
je G_M63242_IG19
- ;; size=34 bbWeight=0.50 PerfScore 3.88
-G_M63242_IG06: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
- mov rcx, gword ptr [rbp+0x10]
- ; gcrRegs +[rcx]
- mov rsi, gword ptr [rcx+0x08]
- ; gcrRegs +[rsi]
- test rsi, rsi
+ ;; size=30 bbWeight=0.50 PerfScore 3.63
+G_M63242_IG06: ; bbWeight=0.50, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+ mov rdi, gword ptr [rsi+0x08]
+ ; gcrRegs +[rdi]
+ test rdi, rdi
...
-5 (-2.84%) : 72007.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution+OperatorCaches+FixedList:Lookup(System.Type,System.Type,byref,byref):ubyte:this (FullOpts)
@@ -10,111 +10,111 @@
; V00 this [V00,T10] ( 7, 5.50) ref -> rbx this class-hnd single-def <Microsoft.VisualBasic.CompilerServices.ConversionResolution+OperatorCaches+FixedList>
; V01 arg1 [V01,T07] ( 3, 6 ) ref -> rdx class-hnd single-def <System.Type>
; V02 arg2 [V02,T11] ( 3, 4 ) ref -> r8 class-hnd single-def <System.Type>
-; V03 arg3 [V03,T13] ( 4, 3 ) byref -> r9 single-def
-; V04 arg4 [V04,T16] ( 2, 1 ) byref -> [rsp+0x60] single-def
-; V05 loc0 [V05,T15] ( 3, 2 ) ubyte -> rax
+; V03 arg3 [V03,T13] ( 4, 3.50) byref -> r9 single-def
+; V04 arg4 [V04,T16] ( 2, 1.50) byref -> rcx single-def
+; V05 loc0 [V05,T15] ( 3, 2.50) ubyte -> rax
; V06 loc1 [V06,T03] ( 6, 14 ) int -> rsi
-; V07 loc2 [V07,T04] ( 4, 13 ) int -> rcx
+; V07 loc2 [V07,T04] ( 4, 13 ) int -> rax
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T00] ( 3, 24 ) ref -> r11 "arr expr"
-; V10 tmp2 [V10,T08] ( 2, 8 ) ref -> r11 "arr expr"
-; V11 tmp3 [V11,T01] ( 2, 16 ) ref -> r11 "arr expr"
+; V09 tmp1 [V09,T00] ( 3, 24 ) ref -> rdi "arr expr"
+; V10 tmp2 [V10,T08] ( 2, 8 ) ref -> rdi "arr expr"
+; V11 tmp3 [V11,T01] ( 2, 16 ) ref -> rdi "arr expr"
;* V12 tmp4 [V12,T17] ( 0, 0 ) ref -> zero-ref "arr expr"
; V13 tmp5 [V13,T14] ( 3, 3 ) ref -> rdx "arr expr"
-; V14 cse0 [V14,T05] ( 5, 12.50) byref -> r11 multi-def "CSE - aggressive"
-; V15 cse1 [V15,T02] ( 5, 14.50) long -> rdi "CSE - aggressive"
-; V16 cse2 [V16,T06] ( 4, 10.50) ref -> r10 hoist "CSE - aggressive"
-; V17 cse3 [V17,T12] ( 3, 6 ) int -> rax "CSE - aggressive"
-; V18 cse4 [V18,T09] ( 2, 8 ) int -> rdi "CSE - aggressive"
+; V14 cse0 [V14,T05] ( 5, 12.50) byref -> rdi multi-def "CSE - aggressive"
+; V15 cse1 [V15,T02] ( 5, 14.50) long -> rbp "CSE - aggressive"
+; V16 cse2 [V16,T06] ( 4, 10.50) ref -> r11 hoist "CSE - aggressive"
+; V17 cse3 [V17,T12] ( 3, 6 ) int -> r10 "CSE - aggressive"
+; V18 cse4 [V18,T09] ( 2, 8 ) int -> rbp "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M36050_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
+ push rbp
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=10 bbWeight=1 PerfScore 3.50
-G_M36050_IG02: ; bbWeight=1, gcrefRegs=010C {rdx rbx r8}, byrefRegs=0200 {r9}, byref, isz
+ mov rcx, bword ptr [rsp+0x70]
+ ; byrRegs +[rcx]
+ ;; size=16 bbWeight=1 PerfScore 5.50
+G_M36050_IG02: ; bbWeight=1, gcrefRegs=010C {rdx rbx r8}, byrefRegs=0202 {rcx r9}, byref, isz
; gcrRegs +[rdx r8]
; byrRegs +[r9]
mov esi, dword ptr [rbx+0x14]
- xor ecx, ecx
- mov eax, dword ptr [rbx+0x1C]
- test eax, eax
+ xor eax, eax
+ mov r10d, dword ptr [rbx+0x1C]
+ test r10d, r10d
jle SHORT G_M36050_IG07
- ;; size=12 bbWeight=1 PerfScore 5.50
-G_M36050_IG03: ; bbWeight=0.50, gcrefRegs=010C {rdx rbx r8}, byrefRegs=0200 {r9}, byref
- mov r10, gword ptr [rbx+0x08]
- ; gcrRegs +[r10]
+ ;; size=14 bbWeight=1 PerfScore 5.50
+G_M36050_IG03: ; bbWeight=0.50, gcrefRegs=010C {rdx rbx r8}, byrefRegs=0202 {rcx r9}, byref
+ mov r11, gword ptr [rbx+0x08]
+ ; gcrRegs +[r11]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M36050_IG04: ; bbWeight=4, gcrefRegs=050C {rdx rbx r8 r10}, byrefRegs=0200 {r9}, byref, isz
- mov r11, r10
- ; gcrRegs +[r11]
- mov edi, dword ptr [r11+0x08]
- cmp esi, edi
- jae G_M36050_IG12
- mov edi, esi
- lea rdi, [rdi+4*rdi]
- cmp gword ptr [r11+8*rdi+0x10], rdx
+G_M36050_IG04: ; bbWeight=4, gcrefRegs=090C {rdx rbx r8 r11}, byrefRegs=0202 {rcx r9}, byref, isz
+ mov rdi, r11
+ ; gcrRegs +[rdi]
+ mov ebp, dword ptr [rdi+0x08]
+ cmp esi, ebp
+ jae SHORT G_M36050_IG12
+ mov ebp, esi
+ lea rbp, [rbp+4*rbp]
+ cmp gword ptr [rdi+8*rbp+0x10], rdx
jne SHORT G_M36050_IG06
- ;; size=28 bbWeight=4 PerfScore 33.00
-G_M36050_IG05: ; bbWeight=2, gcrefRegs=050C {rdx rbx r8 r10}, byrefRegs=0200 {r9}, byref, isz
- ; gcrRegs -[r11]
- mov r11, r10
- ; gcrRegs +[r11]
- lea r11, bword ptr [r11+8*rdi+0x10]
- ; gcrRegs -[r11]
- ; byrRegs +[r11]
- cmp gword ptr [r11+0x08], r8
+ ;; size=24 bbWeight=4 PerfScore 39.00
+G_M36050_IG05: ; bbWeight=2, gcrefRegs=090C {rdx rbx r8 r11}, byrefRegs=0202 {rcx r9}, byref, isz
+ ; gcrRegs -[rdi]
+ mov rdi, r11
+ ; gcrRegs +[rdi]
+ lea rdi, bword ptr [rdi+8*rbp+0x10]
+ ; gcrRegs -[rdi]
+ ; byrRegs +[rdi]
+ cmp gword ptr [rdi+0x08], r8
je SHORT G_M36050_IG09
;; size=14 bbWeight=2 PerfScore 10.50
-G_M36050_IG06: ; bbWeight=4, gcrefRegs=050C {rdx rbx r8 r10}, byrefRegs=0200 {r9}, byref, isz
- ; byrRegs -[r11]
- mov r11, r10
- ; gcrRegs +[r11]
- lea r11, bword ptr [r11+8*rdi+0x10]
- ; gcrRegs -[r11]
- ; byrRegs +[r11]
- mov esi, dword ptr [r11+0x18]
- add ecx, 1
+G_M36050_IG06: ; bbWeight=4, gcrefRegs=090C {rdx rbx r8 r11}, byrefRegs=0202 {rcx r9}, byref, isz
+ ; byrRegs -[rdi]
+ mov rdi, r11
+ ; gcrRegs +[rdi]
+ lea rdi, bword ptr [rdi+8*rbp+0x10]
+ ; gcrRegs -[rdi]
+ ; byrRegs +[rdi]
+ mov esi, dword ptr [rdi+0x18]
+ add eax, 1
jo SHORT G_M36050_IG11
- cmp ecx, eax
+ cmp eax, r10d
jl SHORT G_M36050_IG04
;; size=21 bbWeight=4 PerfScore 23.00
-G_M36050_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0200 {r9}, byref
- ; gcrRegs -[rdx rbx r8 r10]
- ; byrRegs -[r11]
+G_M36050_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0202 {rcx r9}, byref
+ ; gcrRegs -[rdx rbx r8 r11]
+ ; byrRegs -[rdi]
mov byte ptr [r9], 0
- xor r11, r11
- ; gcrRegs +[r11]
- mov rcx, bword ptr [rsp+0x60]
- ; byrRegs +[rcx]
- mov gword ptr [rcx], r11
- ;; size=15 bbWeight=0.50 PerfScore 1.62
-G_M36050_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r11]
- ; byrRegs -[rcx r9]
+ xor r9, r9
+ ; gcrRegs +[r9]
+ ; byrRegs -[r9]
+ mov gword ptr [rcx], r9
+ ;; size=10 bbWeight=1 PerfScore 2.25
+G_M36050_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r9]
+ ; byrRegs -[rcx]
xor eax, eax
jmp SHORT G_M36050_IG10
- ;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M36050_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0A00 {r9 r11}, byref, isz
+ ;; size=4 bbWeight=1 PerfScore 2.25
+G_M36050_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0282 {rcx rdi r9}, byref, isz
; gcrRegs +[rbx]
- ; byrRegs +[r9 r11]
- movsx rdx, byte ptr [r11+0x20]
+ ; byrRegs +[rcx rdi r9]
+ movsx rdx, byte ptr [rdi+0x20]
mov byte ptr [r9], dl
mov rdx, gword ptr [rbx+0x08]
; gcrRegs +[rdx]
cmp esi, dword ptr [rdx+0x08]
jae SHORT G_M36050_IG12
- mov rdx, gword ptr [rdx+8*rdi+0x20]
- mov rcx, bword ptr [rsp+0x60]
- ; byrRegs +[rcx]
+ mov rdx, gword ptr [rdx+8*rbp+0x20]
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rdx]
- ; byrRegs -[rcx r9 r11]
+ ; byrRegs -[rcx rdi r9]
mov rcx, rbx
; gcrRegs +[rcx]
mov edx, esi
@@ -122,14 +122,15 @@ G_M36050_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0A00 {r9
; gcrRegs -[rcx rbx]
; gcr arg pop 0
mov eax, 1
- ;; size=48 bbWeight=0.50 PerfScore 9.38
+ ;; size=43 bbWeight=0.50 PerfScore 8.88
G_M36050_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- add rsp, 32
+ add rsp, 40
pop rbx
+ pop rbp
pop rsi
pop rdi
ret
- ;; size=8 bbWeight=1 PerfScore 2.75
+ ;; size=9 bbWeight=1 PerfScore 3.25
G_M36050_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_OVERFLOW
; gcr arg pop 0
@@ -141,7 +142,7 @@ G_M36050_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 10, PerfScore 91.38, instruction count 57, allocated bytes for code 176 (MethodHash=1809732d) for method Microsoft.VisualBasic.CompilerServices.ConversionResolution+OperatorCaches+FixedList:Lookup(System.Type,System.Type,byref,byref):ubyte:this (FullOpts)
+; Total bytes of code 171, prolog size 16, PerfScore 101.12, instruction count 58, allocated bytes for code 171 (MethodHash=1809732d) for method Microsoft.VisualBasic.CompilerServices.ConversionResolution+OperatorCaches+FixedList:Lookup(System.Type,System.Type,byref,byref):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -149,12 +150,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+41 (+3.97%) : 4167.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxListSystem.__Canon:Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
@@ -8,90 +8,91 @@
; 0 inlinees with PGO data; 20 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 39,506 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser>
-; V01 TypeCtx [V01,T42] ( 7, 5.56) long -> r12 single-def
-; V02 arg1 [V02,T31] ( 4, 14 ) byref -> r14 single-def
-; V03 arg2 [V03,T18] ( 7, 48 ) ushort -> rsi single-def
-; V04 arg3 [V04,T48] ( 1, 1 ) ref -> [rsp+0x100] class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]>
-; V05 arg4 [V05,T29] ( 4, 24 ) ref -> rdi class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
-; V06 arg5 [V06,T30] ( 4, 24 ) ref -> rbp class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]>
-; V07 arg6 [V07,T34] ( 1, 16 ) ubyte -> r15 single-def
-; V08 arg7 [V08,T38] ( 2, 12 ) ubyte -> r13
-; V09 arg8 [V09,T49] ( 1, 1 ) ubyte -> [rsp+0x128] single-def
+; V00 this [V00,T00] ( 39,432 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser>
+; V01 TypeCtx [V01,T43] ( 7, 5.56) long -> r12 single-def
+; V02 arg1 [V02,T30] ( 4, 14 ) byref -> rbp single-def
+; V03 arg2 [V03,T34] ( 4, 12 ) ushort -> r14 single-def
+; V04 arg3 [V04,T49] ( 1, 1 ) ref -> [rsp+0x110] class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]>
+; V05 arg4 [V05,T29] ( 4, 20 ) ref -> rdi class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
+; V06 arg5 [V06,T27] ( 4, 24 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]>
+; V07 arg6 [V07,T42] ( 1, 8 ) ubyte -> r13 single-def
+; V08 arg7 [V08,T37] ( 2, 10 ) ubyte -> r15
+; V09 arg8 [V09,T50] ( 1, 1 ) ubyte -> [rsp+0x138] single-def
;* V10 loc0 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+<>c__DisplayClass418_0`1[System.__Canon]>
-; V11 loc1 [V11 ] ( 7, 42 ) struct ( 8) [rsp+0x88] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
-; V12 loc2 [V12,T17] ( 3, 52 ) int -> [rsp+0x84] ld-addr-op
+; V11 loc1 [V11 ] ( 7, 32 ) struct ( 8) [rsp+0x98] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
+; V12 loc2 [V12,T16] ( 3, 34 ) int -> [rsp+0x94] ld-addr-op
; V13 OutArgs [V13 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T46] ( 3, 4 ) long -> rdx "spilling helperCall"
+; V14 tmp1 [V14,T47] ( 3, 4 ) long -> rdx "spilling helperCall"
;* V15 tmp2 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp3 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
-; V17 tmp4 [V17,T47] ( 3, 4 ) long -> rdx "spilling helperCall"
+; V17 tmp4 [V17,T48] ( 3, 4 ) long -> rdx "spilling helperCall"
;* V18 tmp5 [V18 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V19 tmp6 [V19 ] ( 0, 0 ) byref -> zero-ref
-; V20 tmp7 [V20,T26] ( 2, 32 ) byref -> [rsp+0x78] spill-single-def
-; V21 tmp8 [V21,T25] ( 3, 32 ) ref -> rax
+; V20 tmp7 [V20,T31] ( 2, 16 ) byref -> [rsp+0x80] spill-single-def
+; V21 tmp8 [V21,T28] ( 3, 24 ) ref -> rax
;* V22 tmp9 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V23 tmp10 [V23 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V24 tmp11 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
;* V25 tmp12 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V27 tmp14 [V27,T41] ( 2, 8 ) ref -> rax class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V28 tmp15 [V28,T40] ( 4, 8 ) ref -> rax
-; V29 tmp16 [V29,T36] ( 3, 12 ) ref -> [rsp+0x70] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V27 tmp14 [V27,T40] ( 2, 8 ) ref -> rax class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V28 tmp15 [V28,T39] ( 4, 8 ) ref -> rax
+; V29 tmp16 [V29,T35] ( 3, 12 ) ref -> [rsp+0x78] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V30 tmp17 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-;* V31 tmp18 [V31,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V31 tmp18 [V31,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V32 tmp19 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V33 tmp20 [V33,T32] ( 2, 16 ) ref -> rax class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V34 tmp21 [V34,T35] ( 4, 14 ) ref -> rax
-; V35 tmp22 [V35,T37] ( 3, 12 ) ref -> [rsp+0x68] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V33 tmp20 [V33,T32] ( 2, 16 ) ref -> rdx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V34 tmp21 [V34,T33] ( 4, 14 ) ref -> rdx
+; V35 tmp22 [V35,T36] ( 3, 12 ) ref -> [rsp+0x70] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V36 tmp23 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V37 tmp24 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V38 tmp25 [V38,T07] ( 2, 64 ) ref -> rdx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V39 tmp26 [V39,T12] ( 4, 56 ) ref -> rdx
-; V40 tmp27 [V40,T19] ( 3, 48 ) ref -> [rsp+0x60] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V38 tmp25 [V38,T06] ( 2, 64 ) ref -> r8 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V39 tmp26 [V39,T07] ( 4, 56 ) ref -> r8
+; V40 tmp27 [V40,T08] ( 3, 48 ) ref -> [rsp+0x68] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V41 tmp28 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V42 tmp29 [V42,T33] ( 2, 16 ) ref -> rdx class-hnd "Inlining Arg" <System.__Canon>
+; V42 tmp29 [V42,T41] ( 2, 8 ) ref -> rdx class-hnd "Inlining Arg" <System.__Canon>
;* V43 tmp30 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V44 tmp31 [V44,T08] ( 2, 64 ) ref -> rdx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V45 tmp32 [V45,T13] ( 4, 56 ) ref -> rdx
-; V46 tmp33 [V46,T20] ( 3, 48 ) ref -> [rsp+0x58] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V44 tmp31 [V44,T21] ( 2, 32 ) ref -> rdx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V45 tmp32 [V45,T17] ( 4, 32 ) ref -> rdx
+; V46 tmp33 [V46,T09] ( 3, 48 ) ref -> [rsp+0x60] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V47 tmp34 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-;* V48 tmp35 [V48,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V48 tmp35 [V48,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V49 tmp36 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V50 tmp37 [V50,T09] ( 2, 64 ) ref -> rdx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V51 tmp38 [V51,T14] ( 4, 56 ) ref -> rdx
-; V52 tmp39 [V52,T21] ( 3, 48 ) ref -> [rsp+0x50] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V50 tmp37 [V50,T22] ( 2, 32 ) ref -> r8 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V51 tmp38 [V51,T18] ( 4, 32 ) ref -> r8
+; V52 tmp39 [V52,T10] ( 3, 48 ) ref -> [rsp+0x58] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V53 tmp40 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V54 tmp41 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V55 tmp42 [V55,T01] ( 2,256 ) ref -> r8 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V56 tmp43 [V56,T02] ( 4,224 ) ref -> r8
-; V57 tmp44 [V57,T04] ( 3,192 ) ref -> [rsp+0x48] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V55 tmp42 [V55,T01] ( 2,256 ) ref -> r10 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V56 tmp43 [V56,T02] ( 4,224 ) ref -> r10
+; V57 tmp44 [V57,T03] ( 3,192 ) ref -> [rsp+0x50] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V58 tmp45 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V59 tmp46 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V60 tmp47 [V60,T10] ( 2, 64 ) ref -> r8 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V61 tmp48 [V61,T15] ( 4, 56 ) ref -> r8
-; V62 tmp49 [V62,T22] ( 3, 48 ) ref -> [rsp+0x40] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V60 tmp47 [V60,T23] ( 2, 32 ) ref -> r10 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V61 tmp48 [V61,T19] ( 4, 32 ) ref -> r10
+; V62 tmp49 [V62,T11] ( 3, 48 ) ref -> [rsp+0x48] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V63 tmp50 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V64 tmp51 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V65 tmp52 [V65,T11] ( 2, 64 ) ref -> rax class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V66 tmp53 [V66,T16] ( 4, 56 ) ref -> rax
-; V67 tmp54 [V67,T23] ( 3, 48 ) ref -> [rsp+0x38] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V65 tmp52 [V65,T24] ( 2, 32 ) ref -> rax class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V66 tmp53 [V66,T20] ( 4, 32 ) ref -> rax
+; V67 tmp54 [V67,T12] ( 3, 48 ) ref -> [rsp+0x40] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V68 tmp55 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V69 tmp56 [V69,T27] ( 2, 32 ) ref -> rdx class-hnd "Inlining Arg" <System.__Canon>
-;* V70 tmp57 [V70,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V71 tmp58 [V71,T06] ( 3, 80 ) int -> rcx "Inline stloc first use temp"
+; V69 tmp56 [V69,T25] ( 2, 32 ) ref -> rdx class-hnd "Inlining Arg" <System.__Canon>
+;* V70 tmp57 [V70,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V71 tmp58 [V71,T13] ( 3, 48 ) int -> rcx "Inline stloc first use temp"
;* V72 tmp59 [V72 ] ( 0, 0 ) ref -> zero-ref "field V10.<>4__this (fldOffset=0x0)" P-INDEP
-; V73 tmp60 [V73,T03] ( 7,193 ) ref -> [rsp+0x30] spill-single-def "field V10.isPossibleElement (fldOffset=0x8)" P-INDEP
-;* V74 tmp61 [V74,T50] ( 0, 0 ) ushort -> zero-ref single-def "field V10.separatorTokenKind (fldOffset=0x10)" P-INDEP
-; V75 tmp62 [V75,T05] ( 3, 81 ) ubyte -> [rsp+0x80] spill-single-def "field V10.allowSemicolonAsSeparator (fldOffset=0x12)" P-INDEP
-; V76 tmp63 [V76 ] ( 7, 42 ) ref -> [rsp+0x88] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
+; V73 tmp60 [V73,T04] ( 7,177 ) ref -> [rsp+0x38] spill-single-def "field V10.isPossibleElement (fldOffset=0x8)" P-INDEP
+;* V74 tmp61 [V74,T51] ( 0, 0 ) ushort -> zero-ref single-def "field V10.separatorTokenKind (fldOffset=0x10)" P-INDEP
+; V75 tmp62 [V75,T05] ( 3, 81 ) ubyte -> [rsp+0x90] spill-single-def "field V10.allowSemicolonAsSeparator (fldOffset=0x12)" P-INDEP
+; V76 tmp63 [V76 ] ( 7, 32 ) ref -> [rsp+0x98] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
;* V77 tmp64 [V77 ] ( 0, 0 ) ref -> zero-ref "field V16._builder (fldOffset=0x0)" P-INDEP
;* V78 tmp65 [V78 ] ( 0, 0 ) ref -> zero-ref "field V24._builder (fldOffset=0x0)" P-INDEP
-; V79 rat0 [V79,T43] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
-; V80 rat1 [V80,T44] ( 3, 5.60) long -> rcx "spilling expr"
-; V81 rat2 [V81,T45] ( 3, 4.48) long -> rdx "fgMakeTemp is creating a new local variable"
+; V79 cse0 [V79,T14] ( 7, 40 ) int -> [rsp+0x8C] multi-def "CSE - moderate"
+; V80 rat0 [V80,T44] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
+; V81 rat1 [V81,T45] ( 3, 5.60) long -> rcx "spilling expr"
+; V82 rat2 [V82,T46] ( 3, 4.48) long -> rdx "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 152
+; Lcl frame size = 168
G_M39451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -102,61 +103,61 @@ G_M39451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 152
+ sub rsp, 168
xor eax, eax
- mov qword ptr [rsp+0x88], rax
- mov qword ptr [rsp+0x90], rdx
+ mov qword ptr [rsp+0x98], rax
+ mov qword ptr [rsp+0xA0], rdx
mov rbx, rcx
; gcrRegs +[rbx]
mov r12, rdx
- mov r14, r8
- ; byrRegs +[r14]
- mov esi, r9d
- mov rdi, gword ptr [rsp+0x108]
+ mov rbp, r8
+ ; byrRegs +[rbp]
+ mov r14d, r9d
+ mov rdi, gword ptr [rsp+0x118]
; gcrRegs +[rdi]
- mov rbp, gword ptr [rsp+0x110]
- ; gcrRegs +[rbp]
- mov r15d, dword ptr [rsp+0x118]
- mov r13d, dword ptr [rsp+0x120]
+ mov rsi, gword ptr [rsp+0x120]
+ ; gcrRegs +[rsi]
+ mov r13d, dword ptr [rsp+0x128]
+ mov r15d, dword ptr [rsp+0x130]
;; size=81 bbWeight=1 PerfScore 15.50
-G_M39451_IG02: ; bbWeight=1, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, byref, isz
- movzx rax, byte ptr [rsp+0x128]
- mov byte ptr [rsp+0x80], al
- mov r8, gword ptr [rsp+0x100]
+G_M39451_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref, isz
+ movzx rax, byte ptr [rsp+0x138]
+ mov byte ptr [rsp+0x90], al
+ mov r8, gword ptr [rsp+0x110]
; gcrRegs +[r8]
- mov gword ptr [rsp+0x30], r8
+ mov gword ptr [rsp+0x38], r8
; GC ptr vars +{V73}
mov rcx, qword ptr [r12+0x38]
mov rdx, qword ptr [rcx+0x10]
test rdx, rdx
je SHORT G_M39451_IG04
;; size=42 bbWeight=1 PerfScore 9.25
-G_M39451_IG03: ; bbWeight=0.80, gcVars=0000000000000008 {V73}, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, gcvars, byref, isz
+G_M39451_IG03: ; bbWeight=0.80, gcVars=0000000000000010 {V73}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; gcrRegs -[r8]
jmp SHORT G_M39451_IG05
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, byref
+G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref
mov rcx, r12
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
; gcr arg pop 0
mov rdx, rax
;; size=21 bbWeight=0.20 PerfScore 0.35
-G_M39451_IG05: ; bbWeight=1, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, byref
+G_M39451_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref
mov rcx, gword ptr [rbx+0x108]
; gcrRegs +[rcx]
cmp dword ptr [rcx], ecx
call [Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListPool:AllocateSeparated[System.__Canon]():Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]:this]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov gword ptr [rsp+0x88], rax
+ mov gword ptr [rsp+0x98], rax
;; size=23 bbWeight=1 PerfScore 9.00
-G_M39451_IG06: ; bbWeight=8, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, byref
+G_M39451_IG06: ; bbWeight=8, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref
; gcrRegs -[rax]
- test r13b, r13b
+ test r15b, r15b
jne G_M39451_IG16
;; size=9 bbWeight=8 PerfScore 10.00
-G_M39451_IG07: ; bbWeight=2, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, byref, isz
+G_M39451_IG07: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref, isz
mov rax, gword ptr [rbx+0x10]
; gcrRegs +[rax]
test rax, rax
@@ -166,7 +167,7 @@ G_M39451_IG07: ; bbWeight=2, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000
call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:FetchCurrentToken():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov gword ptr [rsp+0x70], rax
+ mov gword ptr [rsp+0x78], rax
; GC ptr vars +{V29}
lea rcx, bword ptr [rbx+0x10]
; byrRegs +[rcx]
@@ -175,57 +176,25 @@ G_M39451_IG07: ; bbWeight=2, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- mov rax, gword ptr [rsp+0x70]
+ mov rax, gword ptr [rsp+0x78]
; gcrRegs +[rax]
;; size=40 bbWeight=2 PerfScore 20.50
-G_M39451_IG08: ; bbWeight=2, gcVars=0000000000000008 {V73}, gcrefRegs=00A9 {rax rbx rbp rdi}, byrefRegs=4000 {r14}, gcvars, byref
+G_M39451_IG08: ; bbWeight=2, gcVars=0000000000000010 {V73}, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0020 {rbp}, gcvars, byref
...
+15 (+5.40%) : 212574.dasm - System.Reflection.Tests.TypeInfoDeclaredMethodTests:VerifyMethods(System.Type,System.String[]) (FullOpts)
@@ -9,10 +9,10 @@
; Final local variable assignments
;
; V00 arg0 [V00,T19] ( 3, 3 ) ref -> rcx class-hnd single-def <System.Type>
-; V01 arg1 [V01,T12] ( 6, 43 ) ref -> rbx class-hnd single-def <System.String[]>
-; V02 loc0 [V02,T04] ( 6, 67.36) ref -> rsi class-hnd single-def <System.Collections.Generic.List`1[System.Reflection.MethodInfo]>
-; V03 loc1 [V03,T15] ( 3, 22 ) ubyte -> rbp
-; V04 loc2 [V04,T10] ( 6, 73 ) int -> rdi
+; V01 arg1 [V01,T12] ( 6, 19 ) ref -> rbx class-hnd single-def <System.String[]>
+; V02 loc0 [V02,T04] ( 7, 67.36) ref -> rsi class-hnd single-def <System.Collections.Generic.List`1[System.Reflection.MethodInfo]>
+; V03 loc1 [V03,T15] ( 3, 12 ) ubyte -> rbp
+; V04 loc2 [V04,T10] ( 6, 25 ) int -> rdi
;* V05 loc3 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Reflection.MethodInfo]>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Reflection.MethodInfo>
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -29,19 +29,19 @@
;* V18 tmp11 [V18,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Reflection.MethodInfo]>
;* V20 tmp13 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-; V21 tmp14 [V21,T14] ( 2, 64 ) ref -> rdx class-hnd exact "Inlining Arg" <System.String>
+; V21 tmp14 [V21,T14] ( 2, 16 ) ref -> rdx class-hnd exact "Inlining Arg" <System.String>
;* V22 tmp15 [V22,T20] ( 0, 0 ) ref -> zero-ref "field V05._list (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T06] ( 3, 29.36) ref -> rcx "field V05._current (fldOffset=0x8)" P-INDEP
; V24 tmp17 [V24,T02] ( 6, 73.43) int -> r15 "field V05._index (fldOffset=0x10)" P-INDEP
-; V25 tmp18 [V25,T07] ( 2, 36 ) int -> r14 "field V05._version (fldOffset=0x14)" P-INDEP
+; V25 tmp18 [V25,T07] ( 3, 36 ) int -> r14 "field V05._version (fldOffset=0x14)" P-INDEP
; V26 tmp19 [V26,T16] ( 2, 8 ) ref -> rcx "field V09._list (fldOffset=0x0)" P-INDEP
;* V27 tmp20 [V27 ] ( 0, 0 ) ref -> zero-ref "field V09._current (fldOffset=0x8)" P-INDEP
;* V28 tmp21 [V28,T21] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x10)" P-INDEP
; V29 tmp22 [V29,T17] ( 2, 8 ) int -> r14 "field V09._version (fldOffset=0x14)" P-INDEP
;* V30 tmp23 [V30,T22] ( 0, 0 ) ubyte -> zero-ref "field V20.hasValue (fldOffset=0x0)" P-INDEP
-; V31 tmp24 [V31,T18] ( 2, 32 ) ubyte -> rbp "field V20.value (fldOffset=0x1)" P-INDEP
+; V31 tmp24 [V31,T18] ( 2, 8 ) ubyte -> rbp "field V20.value (fldOffset=0x1)" P-INDEP
; V32 tmp25 [V32,T03] ( 3, 80.15) ref -> rcx "arr expr"
-; V33 tmp26 [V33,T11] ( 3, 96 ) struct ( 8) [rsp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+; V33 tmp26 [V33,T11] ( 3, 24 ) struct ( 8) [rsp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
; V34 cse0 [V34,T05] ( 2, 32.00) int -> rcx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -66,10 +66,10 @@ G_M38308_IG02: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {},
mov rsi, rax
; gcrRegs +[rsi]
test rsi, rsi
- je G_M38308_IG16
+ je G_M38308_IG15
xor edi, edi
cmp dword ptr [rbx+0x08], 0
- jle G_M38308_IG12
+ jle G_M38308_IG13
;; size=30 bbWeight=1 PerfScore 8.75
G_M38308_IG03: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
@@ -80,7 +80,7 @@ G_M38308_IG03: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
xor r15d, r15d
jmp SHORT G_M38308_IG08
;; size=14 bbWeight=4 PerfScore 19.00
-G_M38308_IG04: ; bbWeight=8, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref
+G_M38308_IG04: ; bbWeight=8, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
mov eax, edi
mov r13, gword ptr [rbx+8*rax+0x10]
; gcrRegs +[r13]
@@ -93,18 +93,18 @@ G_M38308_IG04: ; bbWeight=8, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000
; gcrRegs +[rdx]
cmp byte ptr [r13], r13b
cmp r13, rdx
- je G_M38308_IG13
- ;; size=33 bbWeight=8 PerfScore 110.00
-G_M38308_IG05: ; bbWeight=5.29, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M38308_IG11
+ ;; size=29 bbWeight=8 PerfScore 110.00
+G_M38308_IG05: ; bbWeight=5.29, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
test rdx, rdx
- je SHORT G_M38308_IG08
- ;; size=5 bbWeight=5.29 PerfScore 6.61
-G_M38308_IG06: ; bbWeight=42.32, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=0000 {}, byref, isz
+ je G_M38308_IG16
+ ;; size=9 bbWeight=5.29 PerfScore 6.61
+G_M38308_IG06: ; bbWeight=42.32, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=0000 {}, byref
mov r8d, dword ptr [r13+0x08]
cmp r8d, dword ptr [rdx+0x08]
- jne SHORT G_M38308_IG08
- ;; size=10 bbWeight=42.32 PerfScore 253.91
+ jne G_M38308_IG16
+ ;; size=14 bbWeight=42.32 PerfScore 253.91
G_M38308_IG07: ; bbWeight=8, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=0000 {}, byref, isz
lea rcx, bword ptr [r13+0x0C]
; byrRegs +[rcx]
@@ -118,29 +118,32 @@ G_M38308_IG07: ; bbWeight=8, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=
; byrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M38308_IG13
+ jne SHORT G_M38308_IG11
;; size=25 bbWeight=8 PerfScore 58.00
-G_M38308_IG08: ; bbWeight=32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M38308_IG08: ; bbWeight=32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp r14d, dword ptr [rsi+0x14]
- jne SHORT G_M38308_IG14
- ;; size=6 bbWeight=32 PerfScore 128.00
+ jne G_M38308_IG17
+ ;; size=10 bbWeight=32 PerfScore 128.00
G_M38308_IG09: ; bbWeight=16.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov ecx, dword ptr [rsi+0x10]
cmp r15d, ecx
- jae SHORT G_M38308_IG11
+ jae SHORT G_M38308_IG12
;; size=8 bbWeight=16.00 PerfScore 52.00
G_M38308_IG10: ; bbWeight=13.36, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rsi+0x08]
; gcrRegs +[rcx]
cmp r15d, dword ptr [rcx+0x08]
- jae SHORT G_M38308_IG15
+ jae SHORT G_M38308_IG14
mov eax, r15d
mov rcx, gword ptr [rcx+8*rax+0x10]
inc r15d
jmp SHORT G_M38308_IG04
;; size=23 bbWeight=13.36 PerfScore 140.27
-G_M38308_IG11: ; bbWeight=16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M38308_IG11: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
+ mov ebp, 1
+ ;; size=5 bbWeight=4 PerfScore 1.00
+G_M38308_IG12: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov edx, edi
mov rdx, gword ptr [rbx+8*rdx+0x10]
; gcrRegs +[rdx]
@@ -160,8 +163,8 @@ G_M38308_IG11: ; bbWeight=16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}
inc edi
cmp dword ptr [rbx+0x08], edi
jg G_M38308_IG03
- ;; size=58 bbWeight=16 PerfScore 256.00
-G_M38308_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=58 bbWeight=4 PerfScore 64.00
+G_M38308_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx rsi]
add rsp, 48
pop rbx
@@ -173,22 +176,11 @@ G_M38308_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop r15
ret
;; size=15 bbWeight=1 PerfScore 4.75
-G_M38308_IG13: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx rsi]
- mov ebp, 1
- jmp SHORT G_M38308_IG11
- ;; size=7 bbWeight=2 PerfScore 4.50
-G_M38308_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi]
- call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M38308_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38308_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M38308_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38308_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs +[rax]
; gcr arg pop 0
@@ -196,11 +188,21 @@ G_M38308_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
call CORINFO_HELP_THROW
; gcrRegs -[rax rcx]
+ ; gcr arg pop 0
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M38308_IG16: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx rsi]
+ cmp r14d, dword ptr [rsi+0x14]
+ je G_M38308_IG09
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M38308_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx rsi]
+ call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
; gcr arg pop 0
int3
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 278, prolog size 14, PerfScore 1049.29, instruction count 84, allocated bytes for code 278 (MethodHash=51c76a5b) for method System.Reflection.Tests.TypeInfoDeclaredMethodTests:VerifyMethods(System.Type,System.String[]) (FullOpts)
+; Total bytes of code 293, prolog size 14, PerfScore 853.79, instruction count 84, allocated bytes for code 293 (MethodHash=51c76a5b) for method System.Reflection.Tests.TypeInfoDeclaredMethodTests:VerifyMethods(System.Type,System.String[]) (FullOpts)
; ============================================================
Unwind Info:
+15 (+5.40%) : 212774.dasm - System.Reflection.Tests.TypeInfoDeclaredMemberTests:VerifyMembers(System.Type,System.String[]) (FullOpts)
@@ -9,10 +9,10 @@
; Final local variable assignments
;
; V00 arg0 [V00,T19] ( 3, 3 ) ref -> rcx class-hnd single-def <System.Type>
-; V01 arg1 [V01,T12] ( 6, 43 ) ref -> rbx class-hnd single-def <System.String[]>
-; V02 loc0 [V02,T04] ( 6, 67.36) ref -> rsi class-hnd single-def <System.Collections.Generic.List`1[System.Reflection.MemberInfo]>
-; V03 loc1 [V03,T15] ( 3, 22 ) ubyte -> rbp
-; V04 loc2 [V04,T10] ( 6, 73 ) int -> rdi
+; V01 arg1 [V01,T12] ( 6, 19 ) ref -> rbx class-hnd single-def <System.String[]>
+; V02 loc0 [V02,T04] ( 7, 67.36) ref -> rsi class-hnd single-def <System.Collections.Generic.List`1[System.Reflection.MemberInfo]>
+; V03 loc1 [V03,T15] ( 3, 12 ) ubyte -> rbp
+; V04 loc2 [V04,T10] ( 6, 25 ) int -> rdi
;* V05 loc3 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Reflection.MemberInfo]>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Reflection.MemberInfo>
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -29,19 +29,19 @@
;* V18 tmp11 [V18,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Reflection.MemberInfo]>
;* V20 tmp13 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-; V21 tmp14 [V21,T14] ( 2, 64 ) ref -> rdx class-hnd exact "Inlining Arg" <System.String>
+; V21 tmp14 [V21,T14] ( 2, 16 ) ref -> rdx class-hnd exact "Inlining Arg" <System.String>
;* V22 tmp15 [V22,T20] ( 0, 0 ) ref -> zero-ref "field V05._list (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T06] ( 3, 29.36) ref -> rcx "field V05._current (fldOffset=0x8)" P-INDEP
; V24 tmp17 [V24,T02] ( 6, 73.43) int -> r15 "field V05._index (fldOffset=0x10)" P-INDEP
-; V25 tmp18 [V25,T07] ( 2, 36 ) int -> r14 "field V05._version (fldOffset=0x14)" P-INDEP
+; V25 tmp18 [V25,T07] ( 3, 36 ) int -> r14 "field V05._version (fldOffset=0x14)" P-INDEP
; V26 tmp19 [V26,T16] ( 2, 8 ) ref -> rcx "field V09._list (fldOffset=0x0)" P-INDEP
;* V27 tmp20 [V27 ] ( 0, 0 ) ref -> zero-ref "field V09._current (fldOffset=0x8)" P-INDEP
;* V28 tmp21 [V28,T21] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x10)" P-INDEP
; V29 tmp22 [V29,T17] ( 2, 8 ) int -> r14 "field V09._version (fldOffset=0x14)" P-INDEP
;* V30 tmp23 [V30,T22] ( 0, 0 ) ubyte -> zero-ref "field V20.hasValue (fldOffset=0x0)" P-INDEP
-; V31 tmp24 [V31,T18] ( 2, 32 ) ubyte -> rbp "field V20.value (fldOffset=0x1)" P-INDEP
+; V31 tmp24 [V31,T18] ( 2, 8 ) ubyte -> rbp "field V20.value (fldOffset=0x1)" P-INDEP
; V32 tmp25 [V32,T03] ( 3, 80.15) ref -> rcx "arr expr"
-; V33 tmp26 [V33,T11] ( 3, 96 ) struct ( 8) [rsp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+; V33 tmp26 [V33,T11] ( 3, 24 ) struct ( 8) [rsp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
; V34 cse0 [V34,T05] ( 2, 32.00) int -> rcx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -66,10 +66,10 @@ G_M52580_IG02: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {},
mov rsi, rax
; gcrRegs +[rsi]
test rsi, rsi
- je G_M52580_IG16
+ je G_M52580_IG15
xor edi, edi
cmp dword ptr [rbx+0x08], 0
- jle G_M52580_IG12
+ jle G_M52580_IG13
;; size=30 bbWeight=1 PerfScore 8.75
G_M52580_IG03: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
@@ -80,7 +80,7 @@ G_M52580_IG03: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
xor r15d, r15d
jmp SHORT G_M52580_IG08
;; size=14 bbWeight=4 PerfScore 19.00
-G_M52580_IG04: ; bbWeight=8, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref
+G_M52580_IG04: ; bbWeight=8, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
mov eax, edi
mov r13, gword ptr [rbx+8*rax+0x10]
; gcrRegs +[r13]
@@ -93,18 +93,18 @@ G_M52580_IG04: ; bbWeight=8, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000
; gcrRegs +[rdx]
cmp byte ptr [r13], r13b
cmp r13, rdx
- je G_M52580_IG13
- ;; size=33 bbWeight=8 PerfScore 110.00
-G_M52580_IG05: ; bbWeight=5.29, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M52580_IG11
+ ;; size=29 bbWeight=8 PerfScore 110.00
+G_M52580_IG05: ; bbWeight=5.29, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
test rdx, rdx
- je SHORT G_M52580_IG08
- ;; size=5 bbWeight=5.29 PerfScore 6.61
-G_M52580_IG06: ; bbWeight=42.32, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=0000 {}, byref, isz
+ je G_M52580_IG16
+ ;; size=9 bbWeight=5.29 PerfScore 6.61
+G_M52580_IG06: ; bbWeight=42.32, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=0000 {}, byref
mov r8d, dword ptr [r13+0x08]
cmp r8d, dword ptr [rdx+0x08]
- jne SHORT G_M52580_IG08
- ;; size=10 bbWeight=42.32 PerfScore 253.91
+ jne G_M52580_IG16
+ ;; size=14 bbWeight=42.32 PerfScore 253.91
G_M52580_IG07: ; bbWeight=8, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=0000 {}, byref, isz
lea rcx, bword ptr [r13+0x0C]
; byrRegs +[rcx]
@@ -118,29 +118,32 @@ G_M52580_IG07: ; bbWeight=8, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=
; byrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M52580_IG13
+ jne SHORT G_M52580_IG11
;; size=25 bbWeight=8 PerfScore 58.00
-G_M52580_IG08: ; bbWeight=32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M52580_IG08: ; bbWeight=32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp r14d, dword ptr [rsi+0x14]
- jne SHORT G_M52580_IG14
- ;; size=6 bbWeight=32 PerfScore 128.00
+ jne G_M52580_IG17
+ ;; size=10 bbWeight=32 PerfScore 128.00
G_M52580_IG09: ; bbWeight=16.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov ecx, dword ptr [rsi+0x10]
cmp r15d, ecx
- jae SHORT G_M52580_IG11
+ jae SHORT G_M52580_IG12
;; size=8 bbWeight=16.00 PerfScore 52.00
G_M52580_IG10: ; bbWeight=13.36, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rsi+0x08]
; gcrRegs +[rcx]
cmp r15d, dword ptr [rcx+0x08]
- jae SHORT G_M52580_IG15
+ jae SHORT G_M52580_IG14
mov eax, r15d
mov rcx, gword ptr [rcx+8*rax+0x10]
inc r15d
jmp SHORT G_M52580_IG04
;; size=23 bbWeight=13.36 PerfScore 140.27
-G_M52580_IG11: ; bbWeight=16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M52580_IG11: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
+ mov ebp, 1
+ ;; size=5 bbWeight=4 PerfScore 1.00
+G_M52580_IG12: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov edx, edi
mov rdx, gword ptr [rbx+8*rdx+0x10]
; gcrRegs +[rdx]
@@ -160,8 +163,8 @@ G_M52580_IG11: ; bbWeight=16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}
inc edi
cmp dword ptr [rbx+0x08], edi
jg G_M52580_IG03
- ;; size=58 bbWeight=16 PerfScore 256.00
-G_M52580_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=58 bbWeight=4 PerfScore 64.00
+G_M52580_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx rsi]
add rsp, 48
pop rbx
@@ -173,22 +176,11 @@ G_M52580_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop r15
ret
;; size=15 bbWeight=1 PerfScore 4.75
-G_M52580_IG13: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx rsi]
- mov ebp, 1
- jmp SHORT G_M52580_IG11
- ;; size=7 bbWeight=2 PerfScore 4.50
-G_M52580_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi]
- call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M52580_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52580_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M52580_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52580_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs +[rax]
; gcr arg pop 0
@@ -196,11 +188,21 @@ G_M52580_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
call CORINFO_HELP_THROW
; gcrRegs -[rax rcx]
+ ; gcr arg pop 0
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M52580_IG16: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx rsi]
+ cmp r14d, dword ptr [rsi+0x14]
+ je G_M52580_IG09
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M52580_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx rsi]
+ call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
; gcr arg pop 0
int3
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 278, prolog size 14, PerfScore 1049.29, instruction count 84, allocated bytes for code 278 (MethodHash=d452329b) for method System.Reflection.Tests.TypeInfoDeclaredMemberTests:VerifyMembers(System.Type,System.String[]) (FullOpts)
+; Total bytes of code 293, prolog size 14, PerfScore 853.79, instruction count 84, allocated bytes for code 293 (MethodHash=d452329b) for method System.Reflection.Tests.TypeInfoDeclaredMemberTests:VerifyMembers(System.Type,System.String[]) (FullOpts)
; ============================================================
Unwind Info:
realworld.run.windows.x64.checked.mch
-28 (-2.88%) : 9413.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplicationThen(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Core.FSharpOption1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption
1[Microsoft.FSharp.Collections.FSharpList1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList
1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList1[System.Tuple
2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList
1[FSharp.Compiler.Syntax.SynExpr],int,Microsoft.FSharp.Collections.FSharpList1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple
2FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv
@@ -24,7 +24,7 @@
; V13 arg13 [V13,T42] ( 1, 1 ) ref -> [rbp+0x78] class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]]>
; V14 arg14 [V14,T43] ( 1, 1 ) ref -> [rbp+0x80] class-hnd single-def <FSharp.Compiler.NameResolution+AfterResolution>
; V15 arg15 [V15,T44] ( 1, 1 ) ref -> [rbp+0x88] class-hnd single-def <FSharp.Compiler.TypedTree+ValUseFlag>
-; V16 arg16 [V16,T12] ( 4, 3 ) ref -> r15 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr]>
+; V16 arg16 [V16,T14] ( 4, 3 ) ref -> r15 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr]>
; V17 arg17 [V17,T46] ( 1, 1 ) int -> [rbp+0x98] single-def
; V18 arg18 [V18,T23] ( 2, 2 ) ref -> r12 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]>
; V19 loc0 [V19,T20] ( 3, 2.50) ref -> [rbp-0x90] class-hnd spill-single-def <FSharp.Compiler.TcGlobals+TcGlobals>
@@ -47,7 +47,7 @@
;* V36 tmp6 [V36 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <FSharp.Compiler.Text.Range>
; V37 tmp7 [V37,T19] ( 2, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <<unknown class>>
; V38 tmp8 [V38,T03] ( 3, 8.50) ref -> [rbp-0xA8] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
-; V39 tmp9 [V39 ] ( 5, 9.50) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed "Inline stloc first use temp" <FSharp.Compiler.Text.Range>
+; V39 tmp9 [V39 ] ( 5, 10.50) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed "Inline stloc first use temp" <FSharp.Compiler.Text.Range>
; V40 tmp10 [V40,T01] ( 4, 12.50) ref -> r10 class-hnd "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr]>
; V41 tmp11 [V41,T00] ( 5, 13 ) ref -> r13 class-hnd "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr]>
;* V42 tmp12 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <FSharp.Compiler.Syntax.SynExpr>
@@ -65,10 +65,10 @@
;* V54 tmp24 [V54 ] ( 0, 0 ) long -> zero-ref single-def "field V20.code2 (fldOffset=0x8)" P-INDEP
; V55 tmp25 [V55,T32] ( 2, 1 ) long -> [rbp-0x50] spill-single-def "field V34.code1 (fldOffset=0x0)" P-INDEP
; V56 tmp26 [V56,T33] ( 2, 1 ) long -> [rbp-0x58] spill-single-def "field V34.code2 (fldOffset=0x8)" P-INDEP
-; V57 tmp27 [V57,T13] ( 4, 3 ) long -> [rbp-0x60] "field V36.code1 (fldOffset=0x0)" P-INDEP
-; V58 tmp28 [V58,T14] ( 4, 3 ) long -> registers "field V36.code2 (fldOffset=0x8)" P-INDEP
-; V59 tmp29 [V59 ] ( 4, 9 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V39.code1 (fldOffset=0x0)" P-DEP
-; V60 tmp30 [V60 ] ( 4, 9 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V39.code2 (fldOffset=0x8)" P-DEP
+; V57 tmp27 [V57,T12] ( 4, 3.50) long -> registers "field V36.code1 (fldOffset=0x0)" P-INDEP
+; V58 tmp28 [V58,T13] ( 4, 3.50) long -> [rbp-0x60] "field V36.code2 (fldOffset=0x8)" P-INDEP
+; V59 tmp29 [V59 ] ( 4, 9.50) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V39.code1 (fldOffset=0x0)" P-DEP
+; V60 tmp30 [V60 ] ( 4, 9.50) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V39.code2 (fldOffset=0x8)" P-DEP
; V61 tmp31 [V61,T30] ( 2, 1 ) ref -> rcx single-def "V28.[000..008)"
; V62 tmp32 [V62,T34] ( 2, 1 ) long -> [rbp-0x68] spill-single-def "V28.[008..016)"
; V63 tmp33 [V63,T35] ( 2, 1 ) long -> [rbp-0x70] spill-single-def "V28.[016..024)"
@@ -124,33 +124,31 @@ G_M29168_IG02: ; bbWeight=1, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, by
mov gword ptr [rbp-0x90], r8
; GC ptr vars +{V19}
test byte ptr [(reloc)], 1 ; global ptr
- je G_M29168_IG16
+ je G_M29168_IG15
;; size=24 bbWeight=1 PerfScore 7.00
-G_M29168_IG03: ; bbWeight=0.50, gcVars=0000000000100000 {V19}, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=2000 {r13}, gcvars, byref
+G_M29168_IG03: ; bbWeight=1, gcVars=0000000000100000 {V19}, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=2000 {r13}, gcvars, byref, isz
; gcrRegs -[r8]
- mov r8, gword ptr [rbp-0x90]
- ; gcrRegs +[r8]
- ;; size=7 bbWeight=0.50 PerfScore 0.50
-G_M29168_IG04: ; bbWeight=1, gcrefRegs=D1C8 {rbx rsi rdi r8 r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
mov rdx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
cmp gword ptr [r15+0x10], 0
- jne SHORT G_M29168_IG06
+ jne SHORT G_M29168_IG05
;; size=20 bbWeight=1 PerfScore 6.25
-G_M29168_IG05: ; bbWeight=0.50, gcrefRegs=D1C8 {rbx rsi rdi r8 r12 r14 r15}, byrefRegs=2000 {r13}, byref
+G_M29168_IG04: ; bbWeight=0.50, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
; gcrRegs -[rdx]
mov r10, qword ptr [r13]
mov r13, qword ptr [r13+0x08]
; byrRegs -[r13]
- jmp G_M29168_IG09
- ;; size=13 bbWeight=0.50 PerfScore 3.00
-G_M29168_IG06: ; bbWeight=0.50, gcrefRegs=D1CC {rdx rbx rsi rdi r8 r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
+ mov qword ptr [rbp-0x60], r13
+ mov r13, r10
+ jmp SHORT G_M29168_IG08
+ ;; size=17 bbWeight=0.50 PerfScore 3.62
+G_M29168_IG05: ; bbWeight=0.50, gcrefRegs=D0CC {rdx rbx rsi rdi r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
; gcrRegs +[rdx]
; byrRegs +[r13]
mov rcx, 0xD1FFAB1E ; <unknown class>
call [Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[FSharp.Compiler.Text.Range,System.__Canon,FSharp.Compiler.Text.Range]:Adapt(Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Text.Range,System.__Canon]):Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[FSharp.Compiler.Text.Range,System.__Canon,FSharp.Compiler.Text.Range]]
- ; gcrRegs -[rdx r8] +[rax]
+ ; gcrRegs -[rdx] +[rax]
mov gword ptr [rbp-0xA8], rax
; GC ptr vars +{V38}
vmovups xmm0, xmmword ptr [r13]
@@ -161,9 +159,9 @@ G_M29168_IG06: ; bbWeight=0.50, gcrefRegs=D1CC {rdx rbx rsi rdi r8 r12 r1
; gcrRegs +[r13]
; byrRegs -[r13]
test r13, r13
- je SHORT G_M29168_IG08
+ je SHORT G_M29168_IG07
;; size=46 bbWeight=0.50 PerfScore 6.38
-G_M29168_IG07: ; bbWeight=4, gcVars=0000000000100008 {V19 V38}, gcrefRegs=F4C9 {rax rbx rsi rdi r10 r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M29168_IG06: ; bbWeight=4, gcVars=0000000000100008 {V19 V38}, gcrefRegs=F4C9 {rax rbx rsi rdi r10 r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
vmovups xmm0, xmmword ptr [rbp-0x48]
vmovups xmmword ptr [rbp-0x80], xmm0
lea r8, [rbp-0x80]
@@ -183,36 +181,31 @@ G_M29168_IG07: ; bbWeight=4, gcVars=0000000000100008 {V19 V38}, gcrefRegs
test r13, r13
mov rax, gword ptr [rbp-0xA8]
; gcrRegs +[rax]
- jne SHORT G_M29168_IG07
+ jne SHORT G_M29168_IG06
;; size=55 bbWeight=4 PerfScore 75.00
-G_M29168_IG08: ; bbWeight=0.50, gcVars=0000000000100000 {V19}, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M29168_IG07: ; bbWeight=1, gcVars=0000000000100000 {V19}, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax r10 r13]
; GC ptr vars -{V38}
mov r10, qword ptr [rbp-0x48]
- mov qword ptr [rbp-0x60], r10
+ mov r13, r10
mov rcx, qword ptr [rbp-0x40]
- mov rax, rcx
- mov r13, rax
- mov r8, gword ptr [rbp-0x90]
- ; gcrRegs +[r8]
- mov r10, qword ptr [rbp-0x60]
- ;; size=29 bbWeight=0.50 PerfScore 2.75
-G_M29168_IG09: ; bbWeight=1, gcrefRegs=D1C8 {rbx rsi rdi r8 r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov qword ptr [rbp-0x60], rcx
+ ;; size=15 bbWeight=1 PerfScore 3.25
+G_M29168_IG08: ; bbWeight=1, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [r12+0x10], 0
- jne SHORT G_M29168_IG11
+ jne SHORT G_M29168_IG10
;; size=8 bbWeight=1 PerfScore 4.00
-G_M29168_IG10: ; bbWeight=0.50, gcrefRegs=D1C8 {rbx rsi rdi r8 r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M29168_IG09: ; bbWeight=0.50, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdx, rdi
; gcrRegs +[rdx]
- jmp SHORT G_M29168_IG12
+ jmp SHORT G_M29168_IG11
;; size=5 bbWeight=0.50 PerfScore 1.12
-G_M29168_IG11: ; bbWeight=0.50, gcrefRegs=D1C8 {rbx rsi rdi r8 r12 r14 r15}, byrefRegs=0000 {}, byref
+G_M29168_IG10: ; bbWeight=0.50, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
- mov qword ptr [rbp-0x60], r10
- mov rcx, r8
+ mov rcx, gword ptr [rbp-0x90]
; gcrRegs +[rcx]
call [FSharp.Compiler.ConstraintSolver:NewInferenceType(FSharp.Compiler.TcGlobals+TcGlobals):FSharp.Compiler.TypedTree+TType]
- ; gcrRegs -[rcx r8] +[rax]
+ ; gcrRegs -[rcx] +[rax]
mov gword ptr [rbp-0xB0], rax
; GC ptr vars +{V43}
mov rcx, 0xD1FFAB1E ; FSharp.Compiler.ConstraintSolver+OverallTy+MustEqual
@@ -230,22 +223,21 @@ G_M29168_IG11: ; bbWeight=0.50, gcrefRegs=D1C8 {rbx rsi rdi r8 r12 r14 r1
; byrRegs -[rcx]
mov rdx, gword ptr [rbp-0xB8]
; gcrRegs +[rdx]
- mov r10, qword ptr [rbp-0x60]
- ;; size=72 bbWeight=0.50 PerfScore 6.12
-G_M29168_IG12: ; bbWeight=1, gcVars=0000000000100000 {V19}, gcrefRegs=D0CC {rdx rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=68 bbWeight=0.50 PerfScore 5.50
+G_M29168_IG11: ; bbWeight=1, gcVars=0000000000100000 {V19}, gcrefRegs=D0CC {rdx rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V44}
- mov r11, gword ptr [rbp+0x38]
+ mov r10, gword ptr [rbp+0x38]
+ ; gcrRegs +[r10]
+ mov gword ptr [rsp+0x20], r10
+ mov r11, gword ptr [rbp+0x40]
; gcrRegs +[r11]
- mov gword ptr [rsp+0x20], r11
- mov rcx, gword ptr [rbp+0x40]
- ; gcrRegs +[rcx]
- mov gword ptr [rsp+0x28], rcx
- mov qword ptr [rbp-0x60], r10
- mov qword ptr [rbp-0x80], r10
- mov qword ptr [rbp-0x78], r13
- mov rax, bword ptr [rbp+0x50]
- ; byrRegs +[rax]
- mov bword ptr [rsp+0x38], rax
+ mov gword ptr [rsp+0x28], r11
+ mov qword ptr [rbp-0x80], r13
+ mov rax, qword ptr [rbp-0x60]
+ mov qword ptr [rbp-0x78], rax
+ mov rcx, bword ptr [rbp+0x50]
+ ; byrRegs +[rcx]
+ mov bword ptr [rsp+0x38], rcx
mov r9, gword ptr [rbp+0x58]
; gcrRegs +[r9]
mov gword ptr [rsp+0x40], r9
@@ -254,9 +246,8 @@ G_M29168_IG12: ; bbWeight=1, gcVars=0000000000100000 {V19}, gcrefRegs=D0C
mov gword ptr [rsp+0x50], r14
mov r14, gword ptr [rbp+0x68]
mov gword ptr [rsp+0x58], r14
- movzx r9, byte ptr [rbp+0x70]
- ; gcrRegs -[r9]
- mov dword ptr [rsp+0x60], r9d
+ movzx r8, byte ptr [rbp+0x70]
+ mov dword ptr [rsp+0x60], r8d
mov r14, gword ptr [rbp+0x78]
mov gword ptr [rsp+0x68], r14
mov r14, gword ptr [rbp+0x80]
@@ -274,12 +265,10 @@ G_M29168_IG12: ; bbWeight=1, gcVars=0000000000100000 {V19}, gcrefRegs=D0C
mov r8, rsi
; gcrRegs +[r8]
mov r9, gword ptr [rbp+0x30]
- ; gcrRegs +[r9]
xor ecx, ecx
- ; gcrRegs -[rcx]
+ ; byrRegs -[rcx]
call [<unknown method>]
- ; gcrRegs -[rdx r8-r9 r11-r12 r14-r15] +[rax]
- ; byrRegs -[rax]
+ ; gcrRegs -[rdx r8-r12 r14-r15] +[rax]
mov r14, gword ptr [rax+0x10]
; gcrRegs +[r14]
mov rdx, gword ptr [rax+0x08]
@@ -290,9 +279,9 @@ G_M29168_IG12: ; bbWeight=1, gcVars=0000000000100000 {V19}, gcrefRegs=D0C
; gcrRegs +[r12]
mov rdx, gword ptr [rdx+0x10]
cmp gword ptr [rdx+0x10], 0
- je G_M29168_IG14
+ je G_M29168_IG13
;; size=196 bbWeight=1 PerfScore 47.25
-G_M29168_IG13: ; bbWeight=0.50, gcrefRegs=D0CC {rdx rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref
+G_M29168_IG12: ; bbWeight=0.50, gcrefRegs=D0CC {rdx rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rcx, 0xD1FFAB1E ; <unknown method>
call [Microsoft.FSharp.Collections.ListModule:Head[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.__Canon]
@@ -344,7 +333,7 @@ G_M29168_IG13: ; bbWeight=0.50, gcrefRegs=D0CC {rdx rbx rsi rdi r12 r14 r
call [<unknown method>]
; gcrRegs -[rax rcx rdx]
;; size=171 bbWeight=0.50 PerfScore 18.88
-G_M29168_IG14: ; bbWeight=1, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref
+G_M29168_IG13: ; bbWeight=1, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; FSharp.Compiler.CheckExpressions+ApplicableExpr
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -369,8 +358,8 @@ G_M29168_IG14: ; bbWeight=1, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, by
mov rax, gword ptr [rbp-0xC0]
; gcrRegs +[rax]
mov byte ptr [rax+0x18], 1
- mov rcx, qword ptr [rbp-0x60]
- mov qword ptr [rbp-0x80], rcx
+ mov qword ptr [rbp-0x80], r13
+ mov r13, qword ptr [rbp-0x60]
mov qword ptr [rbp-0x78], r13
mov rcx, gword ptr [rbp-0x90]
; gcrRegs +[rcx]
@@ -405,7 +394,7 @@ G_M29168_IG14: ; bbWeight=1, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, by
mov rax, gword ptr [rbp-0x88]
; gcrRegs +[rax]
;; size=186 bbWeight=1 PerfScore 30.75
-G_M29168_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M29168_IG14: ; bbWeight=1, epilog, nogc, extend
add rsp, 296
pop rbx
pop rsi
@@ -417,19 +406,17 @@ G_M29168_IG15: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=20 bbWeight=1 PerfScore 5.25
-G_M29168_IG16: ; bbWeight=0, gcVars=0000000000100000 {V19}, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=2000 {r13}, gcvars, byref
+G_M29168_IG15: ; bbWeight=0, gcVars=0000000000100000 {V19}, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=2000 {r13}, gcvars, byref
; gcrRegs -[rax] +[rbx rsi rdi r12 r14-r15]
; byrRegs +[r13]
...
-30 (-1.77%) : 13174.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
@@ -9,11 +9,11 @@
; Final local variable assignments
;
; V00 this [V00,T14] ( 9, 19.50) ref -> rsi this class-hnd single-def <System.Text.UnicodeEncoding>
-; V01 arg1 [V01,T06] ( 22, 52 ) long -> rbx
+; V01 arg1 [V01,T06] ( 22, 56 ) long -> rbx
; V02 arg2 [V02,T29] ( 6, 5.50) int -> rdi single-def
; V03 arg3 [V03,T35] ( 4, 3 ) ref -> rbp class-hnd single-def <System.Text.DecoderNLS>
; V04 loc0 [V04,T12] ( 18, 31.50) ref -> r14 class-hnd exact single-def <<unknown class>>
-; V05 loc1 [V05,T23] ( 6, 12 ) long -> rbp
+; V05 loc1 [V05,T23] ( 6, 14 ) long -> rbp
; V06 loc2 [V06,T22] ( 7, 15 ) long -> r15
; V07 loc3 [V07,T17] ( 11, 19 ) int -> [rsp+0x34]
; V08 loc4 [V08,T02] ( 24, 78 ) ushort -> r12
@@ -21,7 +21,7 @@
; V10 loc6 [V10,T00] ( 34,105 ) ref -> [rsp+0x28] class-hnd <System.Text.DecoderFallbackBuffer>
; V11 loc7 [V11,T15] ( 9, 20 ) ushort -> r13
; V12 loc8 [V12,T16] ( 3, 20 ) long -> rdx
-; V13 loc9 [V13,T03] ( 7, 70 ) long -> rbx
+; V13 loc9 [V13,T03] ( 7, 72 ) long -> rbx
; V14 loc10 [V14,T09] ( 5, 40 ) long -> r10
; V15 loc11 [V15,T31] ( 3, 6 ) ref -> rdi class-hnd <<unknown class>>
; V16 loc12 [V16,T32] ( 3, 6 ) ref -> rdi class-hnd <<unknown class>>
@@ -47,7 +47,7 @@
; V36 tmp17 [V36,T38] ( 3, 3 ) ref -> rax class-hnd exact single-def "dup spill" <<unknown class>>
; V37 tmp18 [V37,T43] ( 3, 1.50) ref -> rax
; V38 tmp19 [V38,T36] ( 4, 4 ) ref -> rdi class-hnd exact single-def "dup spill" <<unknown class>>
-; V39 tmp20 [V39,T44] ( 3, 1.50) ref -> r13
+; V39 tmp20 [V39,T44] ( 3, 1.50) ref -> rbp
; V40 tmp21 [V40,T37] ( 4, 4 ) ref -> rdi class-hnd exact single-def "dup spill" <<unknown class>>
; V41 tmp22 [V41,T46] ( 2, 1 ) int -> rcx
;* V42 tmp23 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -121,7 +121,7 @@ G_M55046_IG06: ; bbWeight=1, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {},
G_M55046_IG07: ; bbWeight=0.25, gcrefRegs=4060 {rbp rsi r14}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; <unknown class>
cmp qword ptr [r14], rcx
- jne G_M55046_IG72
+ jne G_M55046_IG68
;; size=19 bbWeight=0.25 PerfScore 1.06
G_M55046_IG08: ; bbWeight=1, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp]
@@ -175,7 +175,7 @@ G_M55046_IG10: ; bbWeight=0.50, gcrefRegs=4040 {rsi r14}, byrefRegs=0000
test eax, eax
sete cl
test cl, cl
- jne G_M55046_IG26
+ jne G_M55046_IG23
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
@@ -187,7 +187,7 @@ G_M55046_IG10: ; bbWeight=0.50, gcrefRegs=4040 {rsi r14}, byrefRegs=0000
;; size=78 bbWeight=0.50 PerfScore 11.38
G_M55046_IG11: ; bbWeight=1, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
cmp r15, rbp
- jae G_M55046_IG25
+ jae G_M55046_IG49
;; size=9 bbWeight=1 PerfScore 1.25
G_M55046_IG12: ; bbWeight=4, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
movzx rdi, byte ptr [rsi+0x26]
@@ -241,24 +241,24 @@ G_M55046_IG17: ; bbWeight=16, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}
cmp rbx, rdx
jb G_M55046_IG14
;; size=13 bbWeight=16 PerfScore 24.00
-G_M55046_IG18: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG18: ; bbWeight=4, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
cmp rbx, rbp
- jae SHORT G_M55046_IG24
- ;; size=5 bbWeight=2 PerfScore 2.50
+ jae G_M55046_IG49
+ ;; size=9 bbWeight=4 PerfScore 5.00
G_M55046_IG19: ; bbWeight=4, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz
test r13d, r13d
jge SHORT G_M55046_IG21
;; size=5 bbWeight=4 PerfScore 5.00
-G_M55046_IG20: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG20: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
mov rdx, rbx
lea rbx, [rdx+0x01]
movzx r13, byte ptr [rdx]
cmp rbx, rbp
- jae SHORT G_M55046_IG23
- ;; size=16 bbWeight=2 PerfScore 8.00
+ jae G_M55046_IG49
+ ;; size=20 bbWeight=2 PerfScore 8.00
G_M55046_IG21: ; bbWeight=4, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz
test edi, edi
- je SHORT G_M55046_IG27
+ je SHORT G_M55046_IG24
;; size=4 bbWeight=4 PerfScore 5.00
G_M55046_IG22: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz
mov rdx, rbx
@@ -267,25 +267,13 @@ G_M55046_IG22: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {},
movzx rdx, byte ptr [rdx]
or edx, r13d
movzx r13, dx
- jmp SHORT G_M55046_IG28
+ jmp SHORT G_M55046_IG25
;; size=23 bbWeight=2 PerfScore 11.50
-G_M55046_IG23: ; bbWeight=1, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
- mov dword ptr [rsp+0x34], r13d
- jmp G_M55046_IG52
- ;; size=10 bbWeight=1 PerfScore 3.00
-G_M55046_IG24: ; bbWeight=1, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
- mov dword ptr [rsp+0x34], r13d
- jmp G_M55046_IG52
- ;; size=10 bbWeight=1 PerfScore 3.00
-G_M55046_IG25: ; bbWeight=0.50, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
- mov dword ptr [rsp+0x34], r13d
- jmp G_M55046_IG52
- ;; size=10 bbWeight=0.50 PerfScore 1.50
-G_M55046_IG26: ; bbWeight=0.25, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
+G_M55046_IG23: ; bbWeight=0.25, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [rsp+0x30]
jmp G_M55046_IG11
;; size=9 bbWeight=0.25 PerfScore 0.75
-G_M55046_IG27: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
+G_M55046_IG24: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
mov rdx, rbx
lea rbx, [rdx+0x01]
movzx rdx, byte ptr [rdx]
@@ -293,22 +281,22 @@ G_M55046_IG27: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {},
or edx, r13d
movzx r13, dx
;; size=20 bbWeight=2 PerfScore 7.50
-G_M55046_IG28: ; bbWeight=4, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
+G_M55046_IG25: ; bbWeight=4, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
mov dword ptr [rsp+0x34], -1
mov edx, r13d
sub edx, 0xD800
cmp edx, 0x7FF
- ja G_M55046_IG43
+ ja G_M55046_IG40
;; size=29 bbWeight=4 PerfScore 11.00
-G_M55046_IG29: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG26: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz
cmp r13d, 0xDBFF
- jg G_M55046_IG36
+ jg G_M55046_IG33
test r12d, r12d
- jle G_M55046_IG35
+ jle G_M55046_IG32
dec ecx
mov dword ptr [rsp+0x30], ecx
test edi, edi
- je SHORT G_M55046_IG30
+ je SHORT G_M55046_IG27
mov rcx, 0xD1FFAB1E ; <unknown class>
mov edx, 2
call CORINFO_HELP_NEWARR_1_VC
@@ -320,9 +308,9 @@ G_M55046_IG29: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {},
sar ecx, 8
mov byte ptr [rdi+0x10], cl
mov byte ptr [rdi+0x11], r12b
- jmp SHORT G_M55046_IG31
+ jmp SHORT G_M55046_IG28
;; size=70 bbWeight=2 PerfScore 23.00
-G_M55046_IG30: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
+G_M55046_IG27: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rdi]
mov rcx, 0xD1FFAB1E ; <unknown class>
mov edx, 2
@@ -335,14 +323,14 @@ G_M55046_IG30: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {},
sar r12d, 8
mov byte ptr [rdi+0x11], r12b
;; size=35 bbWeight=2 PerfScore 8.50
-G_M55046_IG31: ; bbWeight=2, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG28: ; bbWeight=2, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov r12, gword ptr [rsp+0x28]
; gcrRegs +[r12]
test r12, r12
- jne SHORT G_M55046_IG34
+ jne SHORT G_M55046_IG31
test r14, r14
- je SHORT G_M55046_IG32
+ je SHORT G_M55046_IG29
mov rcx, r14
; gcrRegs +[rcx]
; GC ptr vars -{V10}
@@ -351,9 +339,9 @@ G_M55046_IG31: ; bbWeight=2, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000
; gcr arg pop 0
mov r12, rax
; gcrRegs +[r12]
- jmp SHORT G_M55046_IG33
+ jmp SHORT G_M55046_IG30
;; size=29 bbWeight=2 PerfScore 18.00
-G_M55046_IG32: ; bbWeight=2, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref
+G_M55046_IG29: ; bbWeight=2, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax r12]
mov rcx, gword ptr [rsi+0x18]
; gcrRegs +[rcx]
@@ -365,13 +353,13 @@ G_M55046_IG32: ; bbWeight=2, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000
mov r12, rax
; gcrRegs +[r12]
;; size=17 bbWeight=2 PerfScore 18.50
-G_M55046_IG33: ; bbWeight=2, gcrefRegs=50C0 {rsi rdi r12 r14}, byrefRegs=0000 {}, byref
+G_M55046_IG30: ; bbWeight=2, gcrefRegs=50C0 {rsi rdi r12 r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov qword ptr [r12+0x18], r15
xor ecx, ecx
mov qword ptr [r12+0x20], rcx
;; size=12 bbWeight=2 PerfScore 4.50
-G_M55046_IG34: ; bbWeight=2, gcrefRegs=50C0 {rsi rdi r12 r14}, byrefRegs=0000 {}, byref
+G_M55046_IG31: ; bbWeight=2, gcrefRegs=50C0 {rsi rdi r12 r14}, byrefRegs=0000 {}, byref
mov rcx, r12
; gcrRegs +[rcx]
mov rdx, rdi
@@ -389,17 +377,17 @@ G_M55046_IG34: ; bbWeight=2, gcrefRegs=50C0 {rsi rdi r12 r14}, byrefRegs=
mov edi, ecx
mov ecx, edi
;; size=35 bbWeight=2 PerfScore 23.00
-G_M55046_IG35: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
+G_M55046_IG32: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
mov r12d, r13d
- jmp G_M55046_IG51
+ jmp G_M55046_IG48
;; size=8 bbWeight=2 PerfScore 4.50
-G_M55046_IG36: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG33: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz
test r12d, r12d
- jne G_M55046_IG42
+ jne G_M55046_IG39
dec ecx
mov dword ptr [rsp+0x30], ecx
test edi, edi
- je SHORT G_M55046_IG37
+ je SHORT G_M55046_IG34
mov rcx, 0xD1FFAB1E ; <unknown class>
mov edx, 2
call CORINFO_HELP_NEWARR_1_VC
@@ -411,9 +399,9 @@ G_M55046_IG36: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {},
sar ecx, 8
mov byte ptr [rdi+0x10], cl
mov byte ptr [rdi+0x11], r13b
- jmp SHORT G_M55046_IG38
+ jmp SHORT G_M55046_IG35
;; size=57 bbWeight=2 PerfScore 20.50
-G_M55046_IG37: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
+G_M55046_IG34: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rdi]
mov rcx, 0xD1FFAB1E ; <unknown class>
mov edx, 2
@@ -427,14 +415,14 @@ G_M55046_IG37: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {},
sar ecx, 8
mov byte ptr [rdi+0x11], cl
;; size=36 bbWeight=2 PerfScore 9.00
-G_M55046_IG38: ; bbWeight=2, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG35: ; bbWeight=2, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov r13, gword ptr [rsp+0x28]
...
-44 (-1.62%) : 5323.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
@@ -9,31 +9,31 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 70, 40 ) ref -> [rbp+0x10] this class-hnd single-def <System.Threading.PortableThreadPool+HillClimbing>
-; V01 arg1 [V01,T07] ( 10, 6.50) int -> rsi single-def
-; V02 arg2 [V02,T54] ( 9, 7 ) double -> mm6
-; V03 arg3 [V03,T08] ( 8, 6.50) int -> rdi
-; V04 loc0 [V04,T82] ( 4, 2 ) double -> mm7
+; V01 arg1 [V01,T08] ( 10, 6.50) int -> rsi single-def
+; V02 arg2 [V02,T56] ( 9, 7 ) double -> mm6
+; V03 arg3 [V03,T09] ( 8, 6.50) int -> rdi
+; V04 loc0 [V04,T83] ( 4, 2 ) double -> mm7
; V05 loc1 [V05,T32] ( 4, 2 ) int -> rdx
;* V06 loc2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Threading.PortableThreadPool+HillClimbing+Complex>
;* V07 loc3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Threading.PortableThreadPool+HillClimbing+Complex>
-; V08 loc4 [V08,T58] ( 8, 4 ) double -> mm10
+; V08 loc4 [V08,T60] ( 8, 4 ) double -> mm10
; V09 loc5 [V09 ] ( 8, 4 ) struct (16) [rbp-0xE0] do-not-enreg[XS] addr-exposed ld-addr-op <System.Threading.PortableThreadPool+HillClimbing+Complex>
; V10 loc6 [V10,T81] ( 5, 2.50) double -> mm11
; V11 loc7 [V11,T33] ( 4, 2 ) int -> [rbp-0xE4]
-; V12 loc8 [V12,T09] ( 10, 8.25) int -> [rbp-0xE8] spill-single-def
+; V12 loc8 [V12,T07] ( 10, 8.75) int -> [rbp-0xE8] spill-single-def
; V13 loc9 [V13,T57] ( 11, 5.50) double -> mm12
; V14 loc10 [V14,T112] ( 2, 1 ) double -> mm13
; V15 loc11 [V15,T31] ( 4, 2 ) ref -> rcx class-hnd exact single-def <System.Threading.PortableThreadPool>
-; V16 loc12 [V16,T37] ( 3, 1.50) int -> r15
-; V17 loc13 [V17,T34] ( 4, 2 ) int -> r13
-; V18 loc14 [V18,T28] ( 5, 2.50) int -> [rbp-0xEC] spill-single-def
+; V16 loc12 [V16,T37] ( 3, 1.50) int -> rdi
+; V17 loc13 [V17,T34] ( 4, 2 ) int -> r15
+; V18 loc14 [V18,T28] ( 5, 2.50) int -> r13
; V19 loc15 [V19,T38] ( 3, 1.50) int -> rdx
; V20 loc16 [V20,T39] ( 3, 1.50) int -> rax
-; V21 loc17 [V21,T55] ( 4, 9 ) double -> mm0
-; V22 loc18 [V22,T56] ( 4, 9 ) double -> mm1
-; V23 loc19 [V23,T59] ( 8, 4 ) double -> mm13
-; V24 loc20 [V24,T83] ( 4, 2 ) double -> mm14
-; V25 loc21 [V25,T03] ( 5, 16.50) int -> [rbp-0xF0]
+; V21 loc17 [V21,T54] ( 4, 9.50) double -> mm0
+; V22 loc18 [V22,T55] ( 4, 9.50) double -> mm1
+; V23 loc19 [V23,T58] ( 8, 5 ) double -> mm13
+; V24 loc20 [V24,T82] ( 4, 2.50) double -> mm14
+; V25 loc21 [V25,T03] ( 5, 16.50) int -> [rbp-0xEC]
; V26 loc22 [V26,T113] ( 2, 1 ) double -> mm10
; V27 loc23 [V27,T94] ( 3, 1.50) double -> mm8
; V28 loc24 [V28,T95] ( 3, 1.50) double -> mm2
@@ -94,7 +94,7 @@
;* V83 tmp53 [V83 ] ( 0, 0 ) double -> zero-ref "impAppendStmt"
;* V84 tmp54 [V84 ] ( 0, 0 ) double -> zero-ref "impAppendStmt"
;* V85 tmp55 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Threading.PortableThreadPool+HillClimbing+Complex>
-; V86 tmp56 [V86,T60] ( 3, 3 ) double -> mm0 "impAppendStmt"
+; V86 tmp56 [V86,T61] ( 3, 3 ) double -> mm0 "impAppendStmt"
;* V87 tmp57 [V87 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.PortableThreadPool+HillClimbing+Complex>
; V88 tmp58 [V88,T79] ( 3, 3 ) double -> mm1 "Inlining Arg"
;* V89 tmp59 [V89 ] ( 0, 0 ) double -> zero-ref "impAppendStmt"
@@ -115,11 +115,11 @@
;* V104 tmp74 [V104 ] ( 0, 0 ) double -> zero-ref "impAppendStmt"
;* V105 tmp75 [V105 ] ( 0, 0 ) double -> zero-ref "impAppendStmt"
;* V106 tmp76 [V106 ] ( 0, 0 ) double -> zero-ref "impAppendStmt"
-; V107 tmp77 [V107,T40] ( 3, 1.50) int -> r15 "Inline return value spill temp"
+; V107 tmp77 [V107,T40] ( 3, 1.50) int -> rdi "Inline return value spill temp"
; V108 tmp78 [V108,T25] ( 3, 3 ) int -> rax "Inlining Arg"
-; V109 tmp79 [V109,T35] ( 4, 2 ) int -> r15 "Inline return value spill temp"
-; V110 tmp80 [V110,T41] ( 3, 1.50) int -> r13 "Inline return value spill temp"
-; V111 tmp81 [V111,T29] ( 5, 2.50) int -> r13 "Inline return value spill temp"
+; V109 tmp79 [V109,T35] ( 4, 2 ) int -> rdi "Inline return value spill temp"
+; V110 tmp80 [V110,T41] ( 3, 1.50) int -> r15 "Inline return value spill temp"
+; V111 tmp81 [V111,T29] ( 5, 2.50) int -> r15 "Inline return value spill temp"
;* V112 tmp82 [V112 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Diagnostics.Tracing.NativeRuntimeEventSource>
; V113 tmp83 [V113,T92] ( 2, 2 ) double -> mm13 "Inlining Arg"
; V114 tmp84 [V114,T93] ( 2, 2 ) double -> mm14 "Inlining Arg"
@@ -196,7 +196,7 @@
; V185 cse5 [V185,T42] ( 3, 1.50) int -> rdx "CSE - conservative"
; V186 cse6 [V186,T43] ( 3, 1.50) int -> rdx "CSE - conservative"
; V187 cse7 [V187,T16] ( 2, 4.25) long -> r8 hoist "CSE - moderate"
-; V188 cse8 [V188,T61] ( 7, 3.50) double -> mm12 "CSE - moderate"
+; V188 cse8 [V188,T59] ( 7, 5 ) double -> mm12 "CSE - moderate"
; V189 cse9 [V189,T36] ( 4, 1.75) long -> r8 "CSE - conservative"
; V190 cse10 [V190,T12] ( 4, 5.50) long -> rcx "CSE - aggressive"
; V191 cse11 [V191,T27] ( 5, 2.50) ref -> [rbp-0x170] spill-single-def "CSE - conservative"
@@ -448,7 +448,7 @@ G_M16266_IG14: ; bbWeight=0.25, gcVars=00000000000000000000000008000000 {
G_M16266_IG15: ; bbWeight=4, gcrefRegs=8208 {rbx r9 r15}, byrefRegs=0000 {}, byref
mov rdi, r9
; gcrRegs +[rdi]
- mov dword ptr [rbp-0xF0], eax
+ mov dword ptr [rbp-0xEC], eax
movsxd r12, eax
lea rax, [r8+r12]
cqo
@@ -465,7 +465,7 @@ G_M16266_IG15: ; bbWeight=4, gcrefRegs=8208 {rbx r9 r15}, byrefRegs=0000
cmp rdx, rdi
jae G_M16266_IG44
vaddsd xmm1, xmm1, qword ptr [rax+8*rdx+0x10]
- mov edi, dword ptr [rbp-0xF0]
+ mov edi, dword ptr [rbp-0xEC]
inc edi
mov r12d, dword ptr [rbp-0xE8]
cmp edi, r12d
@@ -473,7 +473,7 @@ G_M16266_IG15: ; bbWeight=4, gcrefRegs=8208 {rbx r9 r15}, byrefRegs=0000
; gcrRegs -[rax]
jl G_M16266_IG21
;; size=89 bbWeight=4 PerfScore 359.00
-G_M16266_IG16: ; bbWeight=0.50, gcrefRegs=0208 {rbx r9}, byrefRegs=0000 {}, byref, isz
+G_M16266_IG16: ; bbWeight=1, gcrefRegs=0208 {rbx r9}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
vxorps xmm12, xmm12, xmm12
vcvtsi2sd xmm12, xmm12, r12d
@@ -482,6 +482,8 @@ G_M16266_IG16: ; bbWeight=0.50, gcrefRegs=0208 {rbx r9}, byrefRegs=0000 {
vxorps xmm0, xmm0, xmm0
vucomisd xmm13, xmm0
jbe G_M16266_IG20
+ ;; size=34 bbWeight=1 PerfScore 33.67
+G_M16266_IG17: ; bbWeight=0.50, gcrefRegs=0208 {rbx r9}, byrefRegs=0000 {}, byref, isz
vxorps xmm0, xmm0, xmm0
vucomisd xmm14, xmm0
jbe G_M16266_IG19
@@ -541,8 +543,6 @@ G_M16266_IG16: ; bbWeight=0.50, gcrefRegs=0208 {rbx r9}, byrefRegs=0000 {
vdivsd xmm0, xmm0, xmm13
vmovsd xmm1, qword ptr [rbp-0x138]
vdivsd xmm1, xmm1, xmm13
- ;; size=273 bbWeight=0.50 PerfScore 111.29
-G_M16266_IG17: ; bbWeight=0.50, extend
vmulsd xmm0, xmm0, xmm0
vmulsd xmm1, xmm1, xmm1
vaddsd xmm0, xmm0, xmm1
@@ -551,7 +551,7 @@ G_M16266_IG17: ; bbWeight=0.50, extend
vfixupimmsd xmm10, xmm0, xmmword ptr [reloc @RWD16], 0
vfixupimmsd xmm1, xmm10, xmmword ptr [reloc @RWD16], 0
vmovaps xmm10, xmm1
- ;; size=49 bbWeight=0.50 PerfScore 17.12
+ ;; size=288 bbWeight=0.50 PerfScore 111.58
G_M16266_IG18: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, dword ptr [rbx+0x98]
@@ -580,20 +580,15 @@ G_M16266_IG18: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
jmp SHORT G_M16266_IG26
;; size=99 bbWeight=0.50 PerfScore 29.58
G_M16266_IG19: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov rdi, gword ptr [rbp-0x170]
- ; gcrRegs +[rdi]
mov r12d, dword ptr [rbp-0xE4]
jmp G_M16266_IG31
- ;; size=19 bbWeight=0.25 PerfScore 1.00
-G_M16266_IG20: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rdi, gword ptr [rbp-0x170]
- ; gcrRegs +[rdi]
+ ;; size=12 bbWeight=0.25 PerfScore 0.75
+G_M16266_IG20: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov r12d, dword ptr [rbp-0xE4]
jmp G_M16266_IG31
- ;; size=19 bbWeight=0.25 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M16266_IG21: ; bbWeight=2, gcrefRegs=8208 {rbx r9 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi] +[r9 r15]
+ ; gcrRegs +[r9 r15]
jmp G_M16266_IG15
;; size=5 bbWeight=2 PerfScore 4.00
G_M16266_IG22: ; bbWeight=0.25, gcrefRegs=0208 {rbx r9}, byrefRegs=0000 {}, byref
@@ -670,17 +665,12 @@ G_M16266_IG29: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
vmovsd xmm3, qword ptr [rbp-0x168]
vdivsd xmm0, xmm3, xmm2
vdivsd xmm11, xmm0, qword ptr [rbx+0x30]
- mov rdi, gword ptr [rbp-0x170]
- ; gcrRegs +[rdi]
jmp SHORT G_M16266_IG31
- ;; size=75 bbWeight=0.50 PerfScore 26.79
+ ;; size=68 bbWeight=0.50 PerfScore 26.29
G_M16266_IG30: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
vmovsd xmm11, qword ptr [reloc @RWD00]
- mov rdi, gword ptr [rbp-0x170]
- ; gcrRegs +[rdi]
- ;; size=15 bbWeight=0.50 PerfScore 2.00
-G_M16266_IG31: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M16266_IG31: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
vmovups xmm0, xmmword ptr [reloc @RWD32]
vmaxsd xmm0, xmm0, qword ptr [rbp-0xD8]
vmovups xmm1, xmmword ptr [reloc @RWD48]
@@ -721,7 +711,7 @@ G_M16266_IG31: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
jle SHORT G_M16266_IG32
vxorps xmm12, xmm12, xmm12
;; size=202 bbWeight=0.50 PerfScore 43.58
-G_M16266_IG32: ; bbWeight=0.50, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0000 {}, byref
+G_M16266_IG32: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
vaddsd xmm0, xmm12, qword ptr [rbx+0x68]
vmovsd qword ptr [rbx+0x68], xmm0
vmulsd xmm0, xmm0, qword ptr [rbx+0x78]
@@ -729,22 +719,21 @@ G_M16266_IG32: ; bbWeight=0.50, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0
vmulsd xmm0, xmm0, qword ptr [rbx+0x48]
vmulsd xmm0, xmm0, qword ptr [reloc @RWD96]
vaddsd xmm0, xmm0, qword ptr [reloc @RWD104]
- vcvttsd2si r15d, xmm0
+ vcvttsd2si edi, xmm0
mov eax, dword ptr [rbx+0xA0]
- cmp r15d, eax
- cmovg r15d, eax
+ cmp edi, eax
+ cmovg edi, eax
mov eax, 1
- test r15d, r15d
- cmovle r15d, eax
- movsx r13, word ptr [rcx+0x5E]
+ test edi, edi
+ cmovle edi, eax
+ movsx r15, word ptr [rcx+0x5E]
call [System.Threading.PortableThreadPool:get_MinThreadsGoal():short:this]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov r10d, eax
- mov dword ptr [rbp-0xEC], r10d
+ mov r13d, eax
vmovsd xmm0, qword ptr [rbx+0x68]
- mov eax, r13d
- sub eax, r15d
+ mov eax, r15d
+ sub eax, edi
vxorps xmm1, xmm1, xmm1
vcvtsi2sd xmm1, xmm1, eax
vrangesd xmm2, xmm1, xmm0, 4
@@ -753,7 +742,7 @@ G_M16266_IG32: ; bbWeight=0.50, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0
vmovsd qword ptr [rbx+0x68], xmm2
vmovsd xmm0, qword ptr [rbx+0x68]
vxorps xmm1, xmm1, xmm1
- vcvtsi2sd xmm1, xmm1, r10d
+ vcvtsi2sd xmm1, xmm1, r13d
vrangesd xmm2, xmm1, xmm0, 5
vfixupimmsd xmm1, xmm0, xmmword ptr [reloc @RWD16], 0
vfixupimmsd xmm2, xmm1, xmmword ptr [reloc @RWD16], 0
@@ -774,24 +763,24 @@ G_M16266_IG32: ; bbWeight=0.50, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0
and rdx, -2
mov r9, rax
sub r9, rdx
- movsxd rdx, r15d
+ movsxd rdx, edi
imul rdx, r9
vxorps xmm1, xmm1, xmm1
vcvtsi2sd xmm1, xmm1, rdx
vaddsd xmm0, xmm0, xmm1
vcvttsd2si edx, xmm0
- cmp r13d, edx
- cmovg r13d, edx
- cmp r10d, r13d
- cmovge r13d, r10d
- movzx rdx, byte ptr [rdi+0x9D]
+ cmp r15d, edx
+ cmovg r15d, edx
+ cmp r13d, r15d
+ cmovge r15d, r13d
...
+10 (+3.21%) : 15571.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -9,33 +9,32 @@
; Final local variable assignments
;
; V00 arg0 [V00,T07] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 loc0 [V01,T11] ( 5, 3.50) int -> rdi
-; V02 loc1 [V02,T00] ( 17, 33 ) int -> rbp
-; V03 loc2 [V03,T12] ( 4, 3.50) ubyte -> r14
-; V04 loc3 [V04,T17] ( 3, 2.50) ubyte -> rax
+; V01 loc0 [V01,T10] ( 5, 3.50) int -> rdi
+; V02 loc1 [V02,T00] ( 19, 34 ) int -> rbp
+; V03 loc2 [V03,T11] ( 4, 3.50) ubyte -> r14
+; V04 loc3 [V04,T16] ( 3, 2.50) ubyte -> rax
; V05 loc4 [V05,T05] ( 4, 12.50) int -> rax
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T18] ( 3, 2 ) int -> rax
-; V08 tmp2 [V08,T19] ( 3, 1.50) int -> rbp
+; V07 tmp1 [V07,T17] ( 3, 2 ) int -> rax
+; V08 tmp2 [V08,T18] ( 3, 1.50) int -> rbp
; V09 tmp3 [V09,T03] ( 2, 16 ) int -> rax "dup spill"
-;* V10 tmp4 [V10,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp5 [V11,T13] ( 3, 3 ) ushort -> rcx "Inlining Arg"
-;* V12 tmp6 [V12,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T14] ( 3, 3 ) ushort -> rax "Inlining Arg"
-;* V14 tmp8 [V14,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp4 [V10,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V11 tmp5 [V11,T12] ( 3, 3 ) ushort -> rcx "Inlining Arg"
+;* V12 tmp6 [V12,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V13 tmp7 [V13,T13] ( 3, 3 ) ushort -> rax "Inlining Arg"
+;* V14 tmp8 [V14,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp9 [V15,T01] ( 3, 24 ) ushort -> rcx "Inlining Arg"
-;* V16 tmp10 [V16,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp10 [V16,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp11 [V17,T02] ( 3, 24 ) ushort -> rax "Inlining Arg"
-;* V18 tmp12 [V18,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 tmp13 [V19,T15] ( 3, 3 ) ushort -> rcx "Inlining Arg"
+;* V18 tmp12 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V19 tmp13 [V19,T14] ( 3, 3 ) ushort -> rax "Inlining Arg"
;* V20 tmp14 [V20 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V21 tmp15 [V21,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V22 tmp16 [V22,T16] ( 3, 3 ) ushort -> rax "Inlining Arg"
-; V23 tmp17 [V23,T04] ( 10, 13 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp18 [V24,T06] ( 6, 11 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
+;* V21 tmp15 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V22 tmp16 [V22,T15] ( 3, 3 ) ushort -> rax "Inlining Arg"
+; V23 tmp17 [V23,T04] ( 11, 13.50) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp18 [V24,T06] ( 7, 15 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
;* V25 tmp19 [V25 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
; V26 tmp20 [V26 ] ( 6, 9 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V27 cse0 [V27,T08] ( 3, 8.50) int -> rcx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -121,7 +120,7 @@ G_M17180_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=2 bbWeight=2 PerfScore 0.50
G_M17180_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp ebp, esi
- jge G_M17180_IG23
+ jge G_M17180_IG24
mov ecx, ebp
movzx rcx, word ptr [rbx+2*rcx]
cmp ecx, 92
@@ -136,16 +135,16 @@ G_M17180_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=6 bbWeight=4 PerfScore 6.00
G_M17180_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rbx]
- jmp SHORT G_M17180_IG23
+ jmp SHORT G_M17180_IG24
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M17180_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov ebp, 1
- jmp SHORT G_M17180_IG23
+ jmp SHORT G_M17180_IG24
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M17180_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs +[rbx]
test r14d, r14d
- je SHORT G_M17180_IG21
+ je SHORT G_M17180_IG22
mov ebp, 4
jmp SHORT G_M17180_IG18
;; size=12 bbWeight=0.50 PerfScore 1.75
@@ -154,55 +153,59 @@ G_M17180_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=2 bbWeight=2 PerfScore 0.50
G_M17180_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp ebp, esi
- jge SHORT G_M17180_IG23
+ jge SHORT G_M17180_IG20
mov eax, ebp
- movzx rcx, word ptr [rbx+2*rax]
- mov eax, ecx
+ movzx rax, word ptr [rbx+2*rax]
cmp eax, 92
- je SHORT G_M17180_IG19
+ je SHORT G_M17180_IG20
cmp eax, 47
jne SHORT G_M17180_IG17
- ;; size=22 bbWeight=4 PerfScore 25.00
-G_M17180_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rbx]
- cmp ebp, 4
- jle SHORT G_M17180_IG23
- ;; size=5 bbWeight=4 PerfScore 5.00
-G_M17180_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 92
- je SHORT G_M17180_IG22
- cmp ecx, 47
- jne SHORT G_M17180_IG23
- jmp SHORT G_M17180_IG22
- ;; size=12 bbWeight=0.50 PerfScore 2.25
+ ;; size=20 bbWeight=4 PerfScore 24.00
+G_M17180_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ jmp SHORT G_M17180_IG21
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M17180_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp ebp, esi
+ jge SHORT G_M17180_IG24
+ ;; size=4 bbWeight=4 PerfScore 5.00
G_M17180_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- ; byrRegs +[rbx]
+ cmp ebp, 4
+ jle SHORT G_M17180_IG24
+ mov eax, ebp
+ movzx rax, word ptr [rbx+2*rax]
+ cmp eax, 92
+ je SHORT G_M17180_IG23
+ cmp eax, 47
+ jne SHORT G_M17180_IG24
+ jmp SHORT G_M17180_IG23
+ ;; size=23 bbWeight=0.50 PerfScore 4.00
+G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp esi, 2
- jl SHORT G_M17180_IG23
+ jl SHORT G_M17180_IG24
cmp word ptr [rbx+0x02], 58
- jne SHORT G_M17180_IG23
+ jne SHORT G_M17180_IG24
movzx rax, word ptr [rbx]
or eax, 32
add eax, -97
cmp eax, 25
- ja SHORT G_M17180_IG23
+ ja SHORT G_M17180_IG24
mov ebp, 2
cmp esi, 2
- jle SHORT G_M17180_IG23
+ jle SHORT G_M17180_IG24
movzx rax, word ptr [rbx+0x04]
cmp eax, 92
- je SHORT G_M17180_IG22
+ je SHORT G_M17180_IG23
cmp eax, 47
- jne SHORT G_M17180_IG23
+ jne SHORT G_M17180_IG24
;; size=50 bbWeight=0.50 PerfScore 7.50
-G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
inc ebp
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M17180_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, ebp
;; size=2 bbWeight=1 PerfScore 0.25
-G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M17180_IG25: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -212,7 +215,7 @@ G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
ret
;; size=11 bbWeight=1 PerfScore 3.75
-; Total bytes of code 312, prolog size 17, PerfScore 112.38, instruction count 114, allocated bytes for code 312 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 322, prolog size 17, PerfScore 114.12, instruction count 118, allocated bytes for code 322 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
+10 (+3.21%) : 1944.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -9,33 +9,32 @@
; Final local variable assignments
;
; V00 arg0 [V00,T07] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 loc0 [V01,T11] ( 5, 3.50) int -> rdi
-; V02 loc1 [V02,T00] ( 17, 33 ) int -> rbp
-; V03 loc2 [V03,T12] ( 4, 3.50) ubyte -> r14
-; V04 loc3 [V04,T17] ( 3, 2.50) ubyte -> rax
+; V01 loc0 [V01,T10] ( 5, 3.50) int -> rdi
+; V02 loc1 [V02,T00] ( 19, 34 ) int -> rbp
+; V03 loc2 [V03,T11] ( 4, 3.50) ubyte -> r14
+; V04 loc3 [V04,T16] ( 3, 2.50) ubyte -> rax
; V05 loc4 [V05,T05] ( 4, 12.50) int -> rax
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T18] ( 3, 2 ) int -> rax
-; V08 tmp2 [V08,T19] ( 3, 1.50) int -> rbp
+; V07 tmp1 [V07,T17] ( 3, 2 ) int -> rax
+; V08 tmp2 [V08,T18] ( 3, 1.50) int -> rbp
; V09 tmp3 [V09,T03] ( 2, 16 ) int -> rax "dup spill"
-;* V10 tmp4 [V10,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp5 [V11,T13] ( 3, 3 ) ushort -> rcx "Inlining Arg"
-;* V12 tmp6 [V12,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T14] ( 3, 3 ) ushort -> rax "Inlining Arg"
-;* V14 tmp8 [V14,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp4 [V10,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V11 tmp5 [V11,T12] ( 3, 3 ) ushort -> rcx "Inlining Arg"
+;* V12 tmp6 [V12,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V13 tmp7 [V13,T13] ( 3, 3 ) ushort -> rax "Inlining Arg"
+;* V14 tmp8 [V14,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp9 [V15,T01] ( 3, 24 ) ushort -> rcx "Inlining Arg"
-;* V16 tmp10 [V16,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp10 [V16,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp11 [V17,T02] ( 3, 24 ) ushort -> rax "Inlining Arg"
-;* V18 tmp12 [V18,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 tmp13 [V19,T15] ( 3, 3 ) ushort -> rcx "Inlining Arg"
+;* V18 tmp12 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V19 tmp13 [V19,T14] ( 3, 3 ) ushort -> rax "Inlining Arg"
;* V20 tmp14 [V20 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V21 tmp15 [V21,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V22 tmp16 [V22,T16] ( 3, 3 ) ushort -> rax "Inlining Arg"
-; V23 tmp17 [V23,T04] ( 10, 13 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp18 [V24,T06] ( 6, 11 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
+;* V21 tmp15 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V22 tmp16 [V22,T15] ( 3, 3 ) ushort -> rax "Inlining Arg"
+; V23 tmp17 [V23,T04] ( 11, 13.50) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp18 [V24,T06] ( 7, 15 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
;* V25 tmp19 [V25 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
; V26 tmp20 [V26 ] ( 6, 9 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V27 cse0 [V27,T08] ( 3, 8.50) int -> rcx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -121,7 +120,7 @@ G_M17180_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=2 bbWeight=2 PerfScore 0.50
G_M17180_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp ebp, esi
- jge G_M17180_IG23
+ jge G_M17180_IG24
mov ecx, ebp
movzx rcx, word ptr [rbx+2*rcx]
cmp ecx, 92
@@ -136,16 +135,16 @@ G_M17180_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=6 bbWeight=4 PerfScore 6.00
G_M17180_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rbx]
- jmp SHORT G_M17180_IG23
+ jmp SHORT G_M17180_IG24
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M17180_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov ebp, 1
- jmp SHORT G_M17180_IG23
+ jmp SHORT G_M17180_IG24
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M17180_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs +[rbx]
test r14d, r14d
- je SHORT G_M17180_IG21
+ je SHORT G_M17180_IG22
mov ebp, 4
jmp SHORT G_M17180_IG18
;; size=12 bbWeight=0.50 PerfScore 1.75
@@ -154,55 +153,59 @@ G_M17180_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=2 bbWeight=2 PerfScore 0.50
G_M17180_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp ebp, esi
- jge SHORT G_M17180_IG23
+ jge SHORT G_M17180_IG20
mov eax, ebp
- movzx rcx, word ptr [rbx+2*rax]
- mov eax, ecx
+ movzx rax, word ptr [rbx+2*rax]
cmp eax, 92
- je SHORT G_M17180_IG19
+ je SHORT G_M17180_IG20
cmp eax, 47
jne SHORT G_M17180_IG17
- ;; size=22 bbWeight=4 PerfScore 25.00
-G_M17180_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rbx]
- cmp ebp, 4
- jle SHORT G_M17180_IG23
- ;; size=5 bbWeight=4 PerfScore 5.00
-G_M17180_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 92
- je SHORT G_M17180_IG22
- cmp ecx, 47
- jne SHORT G_M17180_IG23
- jmp SHORT G_M17180_IG22
- ;; size=12 bbWeight=0.50 PerfScore 2.25
+ ;; size=20 bbWeight=4 PerfScore 24.00
+G_M17180_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ jmp SHORT G_M17180_IG21
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M17180_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp ebp, esi
+ jge SHORT G_M17180_IG24
+ ;; size=4 bbWeight=4 PerfScore 5.00
G_M17180_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- ; byrRegs +[rbx]
+ cmp ebp, 4
+ jle SHORT G_M17180_IG24
+ mov eax, ebp
+ movzx rax, word ptr [rbx+2*rax]
+ cmp eax, 92
+ je SHORT G_M17180_IG23
+ cmp eax, 47
+ jne SHORT G_M17180_IG24
+ jmp SHORT G_M17180_IG23
+ ;; size=23 bbWeight=0.50 PerfScore 4.00
+G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp esi, 2
- jl SHORT G_M17180_IG23
+ jl SHORT G_M17180_IG24
cmp word ptr [rbx+0x02], 58
- jne SHORT G_M17180_IG23
+ jne SHORT G_M17180_IG24
movzx rax, word ptr [rbx]
or eax, 32
add eax, -97
cmp eax, 25
- ja SHORT G_M17180_IG23
+ ja SHORT G_M17180_IG24
mov ebp, 2
cmp esi, 2
- jle SHORT G_M17180_IG23
+ jle SHORT G_M17180_IG24
movzx rax, word ptr [rbx+0x04]
cmp eax, 92
- je SHORT G_M17180_IG22
+ je SHORT G_M17180_IG23
cmp eax, 47
- jne SHORT G_M17180_IG23
+ jne SHORT G_M17180_IG24
;; size=50 bbWeight=0.50 PerfScore 7.50
-G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
inc ebp
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M17180_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, ebp
;; size=2 bbWeight=1 PerfScore 0.25
-G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M17180_IG25: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -212,7 +215,7 @@ G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
ret
;; size=11 bbWeight=1 PerfScore 3.75
-; Total bytes of code 312, prolog size 17, PerfScore 112.38, instruction count 114, allocated bytes for code 312 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 322, prolog size 17, PerfScore 114.12, instruction count 118, allocated bytes for code 322 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
+41 (+3.97%) : 21189.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxListSystem.__Canon:Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
@@ -8,90 +8,91 @@
; 0 inlinees with PGO data; 20 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 39,506 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser>
-; V01 TypeCtx [V01,T42] ( 7, 5.56) long -> r12 single-def
-; V02 arg1 [V02,T31] ( 4, 14 ) byref -> r14 single-def
-; V03 arg2 [V03,T18] ( 7, 48 ) ushort -> rsi single-def
-; V04 arg3 [V04,T48] ( 1, 1 ) ref -> [rsp+0x100] class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]>
-; V05 arg4 [V05,T29] ( 4, 24 ) ref -> rdi class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
-; V06 arg5 [V06,T30] ( 4, 24 ) ref -> rbp class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]>
-; V07 arg6 [V07,T34] ( 1, 16 ) ubyte -> r15 single-def
-; V08 arg7 [V08,T38] ( 2, 12 ) ubyte -> r13
-; V09 arg8 [V09,T49] ( 1, 1 ) ubyte -> [rsp+0x128] single-def
+; V00 this [V00,T00] ( 39,432 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser>
+; V01 TypeCtx [V01,T43] ( 7, 5.56) long -> r12 single-def
+; V02 arg1 [V02,T30] ( 4, 14 ) byref -> rbp single-def
+; V03 arg2 [V03,T34] ( 4, 12 ) ushort -> r14 single-def
+; V04 arg3 [V04,T49] ( 1, 1 ) ref -> [rsp+0x110] class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]>
+; V05 arg4 [V05,T29] ( 4, 20 ) ref -> rdi class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
+; V06 arg5 [V06,T27] ( 4, 24 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]>
+; V07 arg6 [V07,T42] ( 1, 8 ) ubyte -> r13 single-def
+; V08 arg7 [V08,T37] ( 2, 10 ) ubyte -> r15
+; V09 arg8 [V09,T50] ( 1, 1 ) ubyte -> [rsp+0x138] single-def
;* V10 loc0 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+<>c__DisplayClass417_0`1[System.__Canon]>
-; V11 loc1 [V11 ] ( 7, 42 ) struct ( 8) [rsp+0x88] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
-; V12 loc2 [V12,T17] ( 3, 52 ) int -> [rsp+0x84] ld-addr-op
+; V11 loc1 [V11 ] ( 7, 32 ) struct ( 8) [rsp+0x98] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
+; V12 loc2 [V12,T16] ( 3, 34 ) int -> [rsp+0x94] ld-addr-op
; V13 OutArgs [V13 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T46] ( 3, 4 ) long -> rdx "spilling helperCall"
+; V14 tmp1 [V14,T47] ( 3, 4 ) long -> rdx "spilling helperCall"
;* V15 tmp2 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp3 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
-; V17 tmp4 [V17,T47] ( 3, 4 ) long -> rdx "spilling helperCall"
+; V17 tmp4 [V17,T48] ( 3, 4 ) long -> rdx "spilling helperCall"
;* V18 tmp5 [V18 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V19 tmp6 [V19 ] ( 0, 0 ) byref -> zero-ref
-; V20 tmp7 [V20,T26] ( 2, 32 ) byref -> [rsp+0x78] spill-single-def
-; V21 tmp8 [V21,T25] ( 3, 32 ) ref -> rax
+; V20 tmp7 [V20,T31] ( 2, 16 ) byref -> [rsp+0x80] spill-single-def
+; V21 tmp8 [V21,T28] ( 3, 24 ) ref -> rax
;* V22 tmp9 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V23 tmp10 [V23 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V24 tmp11 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
;* V25 tmp12 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V27 tmp14 [V27,T41] ( 2, 8 ) ref -> rax class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V28 tmp15 [V28,T40] ( 4, 8 ) ref -> rax
-; V29 tmp16 [V29,T36] ( 3, 12 ) ref -> [rsp+0x70] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V27 tmp14 [V27,T40] ( 2, 8 ) ref -> rax class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V28 tmp15 [V28,T39] ( 4, 8 ) ref -> rax
+; V29 tmp16 [V29,T35] ( 3, 12 ) ref -> [rsp+0x78] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V30 tmp17 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-;* V31 tmp18 [V31,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V31 tmp18 [V31,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V32 tmp19 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V33 tmp20 [V33,T32] ( 2, 16 ) ref -> rax class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V34 tmp21 [V34,T35] ( 4, 14 ) ref -> rax
-; V35 tmp22 [V35,T37] ( 3, 12 ) ref -> [rsp+0x68] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V33 tmp20 [V33,T32] ( 2, 16 ) ref -> rdx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V34 tmp21 [V34,T33] ( 4, 14 ) ref -> rdx
+; V35 tmp22 [V35,T36] ( 3, 12 ) ref -> [rsp+0x70] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V36 tmp23 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V37 tmp24 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V38 tmp25 [V38,T07] ( 2, 64 ) ref -> rdx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V39 tmp26 [V39,T12] ( 4, 56 ) ref -> rdx
-; V40 tmp27 [V40,T19] ( 3, 48 ) ref -> [rsp+0x60] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V38 tmp25 [V38,T06] ( 2, 64 ) ref -> r8 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V39 tmp26 [V39,T07] ( 4, 56 ) ref -> r8
+; V40 tmp27 [V40,T08] ( 3, 48 ) ref -> [rsp+0x68] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V41 tmp28 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V42 tmp29 [V42,T33] ( 2, 16 ) ref -> rdx class-hnd "Inlining Arg" <System.__Canon>
+; V42 tmp29 [V42,T41] ( 2, 8 ) ref -> rdx class-hnd "Inlining Arg" <System.__Canon>
;* V43 tmp30 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V44 tmp31 [V44,T08] ( 2, 64 ) ref -> rdx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V45 tmp32 [V45,T13] ( 4, 56 ) ref -> rdx
-; V46 tmp33 [V46,T20] ( 3, 48 ) ref -> [rsp+0x58] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V44 tmp31 [V44,T21] ( 2, 32 ) ref -> rdx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V45 tmp32 [V45,T17] ( 4, 32 ) ref -> rdx
+; V46 tmp33 [V46,T09] ( 3, 48 ) ref -> [rsp+0x60] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V47 tmp34 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-;* V48 tmp35 [V48,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V48 tmp35 [V48,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V49 tmp36 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V50 tmp37 [V50,T09] ( 2, 64 ) ref -> rdx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V51 tmp38 [V51,T14] ( 4, 56 ) ref -> rdx
-; V52 tmp39 [V52,T21] ( 3, 48 ) ref -> [rsp+0x50] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V50 tmp37 [V50,T22] ( 2, 32 ) ref -> r8 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V51 tmp38 [V51,T18] ( 4, 32 ) ref -> r8
+; V52 tmp39 [V52,T10] ( 3, 48 ) ref -> [rsp+0x58] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V53 tmp40 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V54 tmp41 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V55 tmp42 [V55,T01] ( 2,256 ) ref -> r8 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V56 tmp43 [V56,T02] ( 4,224 ) ref -> r8
-; V57 tmp44 [V57,T04] ( 3,192 ) ref -> [rsp+0x48] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V55 tmp42 [V55,T01] ( 2,256 ) ref -> r10 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V56 tmp43 [V56,T02] ( 4,224 ) ref -> r10
+; V57 tmp44 [V57,T03] ( 3,192 ) ref -> [rsp+0x50] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V58 tmp45 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V59 tmp46 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V60 tmp47 [V60,T10] ( 2, 64 ) ref -> r8 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V61 tmp48 [V61,T15] ( 4, 56 ) ref -> r8
-; V62 tmp49 [V62,T22] ( 3, 48 ) ref -> [rsp+0x40] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V60 tmp47 [V60,T23] ( 2, 32 ) ref -> r10 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V61 tmp48 [V61,T19] ( 4, 32 ) ref -> r10
+; V62 tmp49 [V62,T11] ( 3, 48 ) ref -> [rsp+0x48] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V63 tmp50 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V64 tmp51 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V65 tmp52 [V65,T11] ( 2, 64 ) ref -> rax class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V66 tmp53 [V66,T16] ( 4, 56 ) ref -> rax
-; V67 tmp54 [V67,T23] ( 3, 48 ) ref -> [rsp+0x38] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V65 tmp52 [V65,T24] ( 2, 32 ) ref -> rax class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V66 tmp53 [V66,T20] ( 4, 32 ) ref -> rax
+; V67 tmp54 [V67,T12] ( 3, 48 ) ref -> [rsp+0x40] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V68 tmp55 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V69 tmp56 [V69,T27] ( 2, 32 ) ref -> rdx class-hnd "Inlining Arg" <System.__Canon>
-;* V70 tmp57 [V70,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V71 tmp58 [V71,T06] ( 3, 80 ) int -> rcx "Inline stloc first use temp"
+; V69 tmp56 [V69,T25] ( 2, 32 ) ref -> rdx class-hnd "Inlining Arg" <System.__Canon>
+;* V70 tmp57 [V70,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V71 tmp58 [V71,T13] ( 3, 48 ) int -> rcx "Inline stloc first use temp"
;* V72 tmp59 [V72 ] ( 0, 0 ) ref -> zero-ref "field V10.<>4__this (fldOffset=0x0)" P-INDEP
-; V73 tmp60 [V73,T03] ( 7,193 ) ref -> [rsp+0x30] spill-single-def "field V10.isPossibleElement (fldOffset=0x8)" P-INDEP
-;* V74 tmp61 [V74,T50] ( 0, 0 ) ushort -> zero-ref single-def "field V10.separatorTokenKind (fldOffset=0x10)" P-INDEP
-; V75 tmp62 [V75,T05] ( 3, 81 ) ubyte -> [rsp+0x80] spill-single-def "field V10.allowSemicolonAsSeparator (fldOffset=0x12)" P-INDEP
-; V76 tmp63 [V76 ] ( 7, 42 ) ref -> [rsp+0x88] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
+; V73 tmp60 [V73,T04] ( 7,177 ) ref -> [rsp+0x38] spill-single-def "field V10.isPossibleElement (fldOffset=0x8)" P-INDEP
+;* V74 tmp61 [V74,T51] ( 0, 0 ) ushort -> zero-ref single-def "field V10.separatorTokenKind (fldOffset=0x10)" P-INDEP
+; V75 tmp62 [V75,T05] ( 3, 81 ) ubyte -> [rsp+0x90] spill-single-def "field V10.allowSemicolonAsSeparator (fldOffset=0x12)" P-INDEP
+; V76 tmp63 [V76 ] ( 7, 32 ) ref -> [rsp+0x98] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
;* V77 tmp64 [V77 ] ( 0, 0 ) ref -> zero-ref "field V16._builder (fldOffset=0x0)" P-INDEP
;* V78 tmp65 [V78 ] ( 0, 0 ) ref -> zero-ref "field V24._builder (fldOffset=0x0)" P-INDEP
-; V79 rat0 [V79,T43] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
-; V80 rat1 [V80,T44] ( 3, 5.60) long -> rcx "spilling expr"
-; V81 rat2 [V81,T45] ( 3, 4.48) long -> rdx "fgMakeTemp is creating a new local variable"
+; V79 cse0 [V79,T14] ( 7, 40 ) int -> [rsp+0x8C] multi-def "CSE - moderate"
+; V80 rat0 [V80,T44] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
+; V81 rat1 [V81,T45] ( 3, 5.60) long -> rcx "spilling expr"
+; V82 rat2 [V82,T46] ( 3, 4.48) long -> rdx "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 152
+; Lcl frame size = 168
G_M39451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -102,61 +103,61 @@ G_M39451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 152
+ sub rsp, 168
xor eax, eax
- mov qword ptr [rsp+0x88], rax
- mov qword ptr [rsp+0x90], rdx
+ mov qword ptr [rsp+0x98], rax
+ mov qword ptr [rsp+0xA0], rdx
mov rbx, rcx
; gcrRegs +[rbx]
mov r12, rdx
- mov r14, r8
- ; byrRegs +[r14]
- mov esi, r9d
- mov rdi, gword ptr [rsp+0x108]
+ mov rbp, r8
+ ; byrRegs +[rbp]
+ mov r14d, r9d
+ mov rdi, gword ptr [rsp+0x118]
; gcrRegs +[rdi]
- mov rbp, gword ptr [rsp+0x110]
- ; gcrRegs +[rbp]
- mov r15d, dword ptr [rsp+0x118]
- mov r13d, dword ptr [rsp+0x120]
+ mov rsi, gword ptr [rsp+0x120]
+ ; gcrRegs +[rsi]
+ mov r13d, dword ptr [rsp+0x128]
+ mov r15d, dword ptr [rsp+0x130]
;; size=81 bbWeight=1 PerfScore 15.50
-G_M39451_IG02: ; bbWeight=1, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, byref, isz
- movzx rax, byte ptr [rsp+0x128]
- mov byte ptr [rsp+0x80], al
- mov r8, gword ptr [rsp+0x100]
+G_M39451_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref, isz
+ movzx rax, byte ptr [rsp+0x138]
+ mov byte ptr [rsp+0x90], al
+ mov r8, gword ptr [rsp+0x110]
; gcrRegs +[r8]
- mov gword ptr [rsp+0x30], r8
+ mov gword ptr [rsp+0x38], r8
; GC ptr vars +{V73}
mov rcx, qword ptr [r12+0x38]
mov rdx, qword ptr [rcx+0x10]
test rdx, rdx
je SHORT G_M39451_IG04
;; size=42 bbWeight=1 PerfScore 9.25
-G_M39451_IG03: ; bbWeight=0.80, gcVars=0000000000000008 {V73}, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, gcvars, byref, isz
+G_M39451_IG03: ; bbWeight=0.80, gcVars=0000000000000010 {V73}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; gcrRegs -[r8]
jmp SHORT G_M39451_IG05
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, byref
+G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref
mov rcx, r12
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
; gcr arg pop 0
mov rdx, rax
;; size=21 bbWeight=0.20 PerfScore 0.35
-G_M39451_IG05: ; bbWeight=1, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, byref
+G_M39451_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref
mov rcx, gword ptr [rbx+0x108]
; gcrRegs +[rcx]
cmp dword ptr [rcx], ecx
call [Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListPool:AllocateSeparated[System.__Canon]():Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]:this]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov gword ptr [rsp+0x88], rax
+ mov gword ptr [rsp+0x98], rax
;; size=23 bbWeight=1 PerfScore 9.00
-G_M39451_IG06: ; bbWeight=8, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, byref
+G_M39451_IG06: ; bbWeight=8, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref
; gcrRegs -[rax]
- test r13b, r13b
+ test r15b, r15b
jne G_M39451_IG16
;; size=9 bbWeight=8 PerfScore 10.00
-G_M39451_IG07: ; bbWeight=2, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, byref, isz
+G_M39451_IG07: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref, isz
mov rax, gword ptr [rbx+0x10]
; gcrRegs +[rax]
test rax, rax
@@ -166,7 +167,7 @@ G_M39451_IG07: ; bbWeight=2, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000
call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:FetchCurrentToken():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov gword ptr [rsp+0x70], rax
+ mov gword ptr [rsp+0x78], rax
; GC ptr vars +{V29}
lea rcx, bword ptr [rbx+0x10]
; byrRegs +[rcx]
@@ -175,57 +176,25 @@ G_M39451_IG07: ; bbWeight=2, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- mov rax, gword ptr [rsp+0x70]
+ mov rax, gword ptr [rsp+0x78]
; gcrRegs +[rax]
;; size=40 bbWeight=2 PerfScore 20.50
-G_M39451_IG08: ; bbWeight=2, gcVars=0000000000000008 {V73}, gcrefRegs=00A9 {rax rbx rbp rdi}, byrefRegs=4000 {r14}, gcvars, byref
+G_M39451_IG08: ; bbWeight=2, gcVars=0000000000000010 {V73}, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0020 {rbp}, gcvars, byref
...
smoke_tests.nativeaot.windows.x64.checked.mch
-8 (-2.17%) : 5794.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
@@ -12,13 +12,13 @@
; V01 loc0 [V01,T03] ( 8, 7 ) ref -> rsi class-hnd exact single-def <ushort[]>
; V02 loc1 [V02,T02] ( 10, 7.75) int -> rdi
; V03 loc2 [V03,T06] ( 3, 1.50) ref -> rbp class-hnd exact single-def <ushort[]>
-;* V04 loc3 [V04,T08] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc4 [V05,T00] ( 10, 16.54) int -> rcx
+;* V04 loc3 [V04,T07] ( 0, 0 ) ubyte -> zero-ref
+; V05 loc4 [V05,T00] ( 10, 16.54) int -> rdx
; V06 OutArgs [V06 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V09 tmp3 [V09,T04] ( 5, 3 ) ref -> rcx single-def "spilling varStr"
-;* V10 tmp4 [V10,T07] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+; V09 tmp3 [V09,T04] ( 5, 3 ) ref -> rdx single-def "spilling varStr"
+;* V10 tmp4 [V10,T08] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
; V11 rat0 [V11,T05] ( 3, 3 ) long -> rsi "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 40
@@ -85,28 +85,28 @@ G_M48063_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; byrRegs -[rcx]
jmp G_M48063_IG16
;; size=54 bbWeight=0.50 PerfScore 6.62
-G_M48063_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M48063_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
- mov rcx, gword ptr [rbx+0x10]
- ; gcrRegs +[rcx]
- test rcx, rcx
- je G_M48063_IG15
- ;; size=13 bbWeight=0.50 PerfScore 1.62
-G_M48063_IG07: ; bbWeight=0.25, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [rcx+0x08], 5
+ mov rdx, gword ptr [rbx+0x10]
+ ; gcrRegs +[rdx]
+ test rdx, rdx
+ je SHORT G_M48063_IG15
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M48063_IG07: ; bbWeight=0.25, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [rdx+0x08], 5
jne SHORT G_M48063_IG15
;; size=6 bbWeight=0.25 PerfScore 1.00
-G_M48063_IG08: ; bbWeight=0.12, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov r8, 0xD1FFAB1E
- xor r8, qword ptr [rcx+0x0C]
- mov ecx, dword ptr [rcx+0x12]
- ; gcrRegs -[rcx]
- xor ecx, 0xD1FFAB1E
- or rcx, r8
+G_M48063_IG08: ; bbWeight=0.12, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rcx, 0xD1FFAB1E
+ xor rcx, qword ptr [rdx+0x0C]
+ mov edx, dword ptr [rdx+0x12]
+ ; gcrRegs -[rdx]
+ xor edx, 0xD1FFAB1E
+ or rdx, rcx
jne SHORT G_M48063_IG15
;; size=28 bbWeight=0.12 PerfScore 0.84
G_M48063_IG09: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- xor ecx, ecx
+ xor edx, edx
test edi, edi
jle SHORT G_M48063_IG14
;; size=6 bbWeight=0.50 PerfScore 0.75
@@ -115,26 +115,26 @@ G_M48063_IG10: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
jg SHORT G_M48063_IG13
;; size=5 bbWeight=0.25 PerfScore 0.31
G_M48063_IG11: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov r8d, ecx
- cmp word ptr [rsi+2*r8+0x10], 4
+ mov ecx, edx
+ cmp word ptr [rsi+2*rcx+0x10], 4
je SHORT G_M48063_IG15
- inc ecx
- cmp ecx, edi
+ inc edx
+ cmp edx, edi
jl SHORT G_M48063_IG11
- ;; size=18 bbWeight=3.96 PerfScore 22.77
-G_M48063_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=3.96 PerfScore 22.77
+G_M48063_IG12: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M48063_IG14
- ;; size=2 bbWeight=0.50 PerfScore 1.00
+ ;; size=2 bbWeight=1 PerfScore 2.00
G_M48063_IG13: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 23
+ cmp edx, 23
jae SHORT G_M48063_IG18
- mov r8d, ecx
- cmp word ptr [rsi+2*r8+0x10], 4
+ mov ecx, edx
+ cmp word ptr [rsi+2*rcx+0x10], 4
je SHORT G_M48063_IG15
- inc ecx
- cmp ecx, edi
+ inc edx
+ cmp edx, edi
jl SHORT G_M48063_IG13
- ;; size=23 bbWeight=0.04 PerfScore 0.28
+ ;; size=21 bbWeight=0.04 PerfScore 0.28
G_M48063_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
inc edi
mov dword ptr [rsp+0x20], 21
@@ -198,7 +198,7 @@ G_M48063_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
jmp G_M48063_IG04
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 369, prolog size 11, PerfScore 62.08, instruction count 94, allocated bytes for code 369 (MethodHash=22244440) for method System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
+; Total bytes of code 361, prolog size 11, PerfScore 63.08, instruction count 94, allocated bytes for code 361 (MethodHash=22244440) for method System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
; ============================================================
Unwind Info:
-8 (-2.17%) : 16882.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
@@ -11,13 +11,13 @@
; V01 loc0 [V01,T03] ( 8, 7 ) ref -> rsi class-hnd exact single-def <ushort[]>
; V02 loc1 [V02,T02] ( 10, 7.75) int -> rdi
; V03 loc2 [V03,T06] ( 3, 1.50) ref -> rbp class-hnd exact single-def <ushort[]>
-;* V04 loc3 [V04,T08] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc4 [V05,T00] ( 10, 16.54) int -> rcx
+;* V04 loc3 [V04,T07] ( 0, 0 ) ubyte -> zero-ref
+; V05 loc4 [V05,T00] ( 10, 16.54) int -> rdx
; V06 OutArgs [V06 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V09 tmp3 [V09,T04] ( 5, 3 ) ref -> rcx single-def "spilling varStr"
-;* V10 tmp4 [V10,T07] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+; V09 tmp3 [V09,T04] ( 5, 3 ) ref -> rdx single-def "spilling varStr"
+;* V10 tmp4 [V10,T08] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
; V11 rat0 [V11,T05] ( 3, 3 ) long -> rsi "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 40
@@ -84,28 +84,28 @@ G_M48063_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; byrRegs -[rcx]
jmp G_M48063_IG16
;; size=54 bbWeight=0.50 PerfScore 6.62
-G_M48063_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M48063_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
- mov rcx, gword ptr [rbx+0x10]
- ; gcrRegs +[rcx]
- test rcx, rcx
- je G_M48063_IG15
- ;; size=13 bbWeight=0.50 PerfScore 1.62
-G_M48063_IG07: ; bbWeight=0.25, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [rcx+0x08], 5
+ mov rdx, gword ptr [rbx+0x10]
+ ; gcrRegs +[rdx]
+ test rdx, rdx
+ je SHORT G_M48063_IG15
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M48063_IG07: ; bbWeight=0.25, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [rdx+0x08], 5
jne SHORT G_M48063_IG15
;; size=6 bbWeight=0.25 PerfScore 1.00
-G_M48063_IG08: ; bbWeight=0.12, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov r8, 0xD1FFAB1E
- xor r8, qword ptr [rcx+0x0C]
- mov ecx, dword ptr [rcx+0x12]
- ; gcrRegs -[rcx]
- xor ecx, 0xD1FFAB1E
- or rcx, r8
+G_M48063_IG08: ; bbWeight=0.12, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rcx, 0xD1FFAB1E
+ xor rcx, qword ptr [rdx+0x0C]
+ mov edx, dword ptr [rdx+0x12]
+ ; gcrRegs -[rdx]
+ xor edx, 0xD1FFAB1E
+ or rdx, rcx
jne SHORT G_M48063_IG15
;; size=28 bbWeight=0.12 PerfScore 0.84
G_M48063_IG09: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- xor ecx, ecx
+ xor edx, edx
test edi, edi
jle SHORT G_M48063_IG14
;; size=6 bbWeight=0.50 PerfScore 0.75
@@ -114,26 +114,26 @@ G_M48063_IG10: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
jg SHORT G_M48063_IG13
;; size=5 bbWeight=0.25 PerfScore 0.31
G_M48063_IG11: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov r8d, ecx
- cmp word ptr [rsi+2*r8+0x10], 4
+ mov ecx, edx
+ cmp word ptr [rsi+2*rcx+0x10], 4
je SHORT G_M48063_IG15
- inc ecx
- cmp ecx, edi
+ inc edx
+ cmp edx, edi
jl SHORT G_M48063_IG11
- ;; size=18 bbWeight=3.96 PerfScore 22.77
-G_M48063_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=3.96 PerfScore 22.77
+G_M48063_IG12: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M48063_IG14
- ;; size=2 bbWeight=0.50 PerfScore 1.00
+ ;; size=2 bbWeight=1 PerfScore 2.00
G_M48063_IG13: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 23
+ cmp edx, 23
jae SHORT G_M48063_IG18
- mov r8d, ecx
- cmp word ptr [rsi+2*r8+0x10], 4
+ mov ecx, edx
+ cmp word ptr [rsi+2*rcx+0x10], 4
je SHORT G_M48063_IG15
- inc ecx
- cmp ecx, edi
+ inc edx
+ cmp edx, edi
jl SHORT G_M48063_IG13
- ;; size=23 bbWeight=0.04 PerfScore 0.28
+ ;; size=21 bbWeight=0.04 PerfScore 0.28
G_M48063_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
inc edi
mov dword ptr [rsp+0x20], 21
@@ -197,7 +197,7 @@ G_M48063_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
jmp G_M48063_IG04
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 369, prolog size 11, PerfScore 62.08, instruction count 94, allocated bytes for code 369 (MethodHash=22244440) for method System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
+; Total bytes of code 361, prolog size 11, PerfScore 63.08, instruction count 94, allocated bytes for code 361 (MethodHash=22244440) for method System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
; ============================================================
Unwind Info:
-8 (-2.17%) : 1747.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
@@ -11,13 +11,13 @@
; V01 loc0 [V01,T03] ( 8, 7 ) ref -> rsi class-hnd exact single-def <ushort[]>
; V02 loc1 [V02,T02] ( 10, 7.75) int -> rdi
; V03 loc2 [V03,T06] ( 3, 1.50) ref -> rbp class-hnd exact single-def <ushort[]>
-;* V04 loc3 [V04,T08] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc4 [V05,T00] ( 10, 16.54) int -> rcx
+;* V04 loc3 [V04,T07] ( 0, 0 ) ubyte -> zero-ref
+; V05 loc4 [V05,T00] ( 10, 16.54) int -> rdx
; V06 OutArgs [V06 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V09 tmp3 [V09,T04] ( 5, 3 ) ref -> rcx single-def "spilling varStr"
-;* V10 tmp4 [V10,T07] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+; V09 tmp3 [V09,T04] ( 5, 3 ) ref -> rdx single-def "spilling varStr"
+;* V10 tmp4 [V10,T08] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
; V11 rat0 [V11,T05] ( 3, 3 ) long -> rsi "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 40
@@ -84,28 +84,28 @@ G_M48063_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; byrRegs -[rcx]
jmp G_M48063_IG16
;; size=54 bbWeight=0.50 PerfScore 6.62
-G_M48063_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M48063_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
- mov rcx, gword ptr [rbx+0x10]
- ; gcrRegs +[rcx]
- test rcx, rcx
- je G_M48063_IG15
- ;; size=13 bbWeight=0.50 PerfScore 1.62
-G_M48063_IG07: ; bbWeight=0.25, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [rcx+0x08], 5
+ mov rdx, gword ptr [rbx+0x10]
+ ; gcrRegs +[rdx]
+ test rdx, rdx
+ je SHORT G_M48063_IG15
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M48063_IG07: ; bbWeight=0.25, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [rdx+0x08], 5
jne SHORT G_M48063_IG15
;; size=6 bbWeight=0.25 PerfScore 1.00
-G_M48063_IG08: ; bbWeight=0.12, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov r8, 0xD1FFAB1E
- xor r8, qword ptr [rcx+0x0C]
- mov ecx, dword ptr [rcx+0x12]
- ; gcrRegs -[rcx]
- xor ecx, 0xD1FFAB1E
- or rcx, r8
+G_M48063_IG08: ; bbWeight=0.12, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rcx, 0xD1FFAB1E
+ xor rcx, qword ptr [rdx+0x0C]
+ mov edx, dword ptr [rdx+0x12]
+ ; gcrRegs -[rdx]
+ xor edx, 0xD1FFAB1E
+ or rdx, rcx
jne SHORT G_M48063_IG15
;; size=28 bbWeight=0.12 PerfScore 0.84
G_M48063_IG09: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- xor ecx, ecx
+ xor edx, edx
test edi, edi
jle SHORT G_M48063_IG14
;; size=6 bbWeight=0.50 PerfScore 0.75
@@ -114,26 +114,26 @@ G_M48063_IG10: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
jg SHORT G_M48063_IG13
;; size=5 bbWeight=0.25 PerfScore 0.31
G_M48063_IG11: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov r8d, ecx
- cmp word ptr [rsi+2*r8+0x10], 4
+ mov ecx, edx
+ cmp word ptr [rsi+2*rcx+0x10], 4
je SHORT G_M48063_IG15
- inc ecx
- cmp ecx, edi
+ inc edx
+ cmp edx, edi
jl SHORT G_M48063_IG11
- ;; size=18 bbWeight=3.96 PerfScore 22.77
-G_M48063_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=3.96 PerfScore 22.77
+G_M48063_IG12: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M48063_IG14
- ;; size=2 bbWeight=0.50 PerfScore 1.00
+ ;; size=2 bbWeight=1 PerfScore 2.00
G_M48063_IG13: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 23
+ cmp edx, 23
jae SHORT G_M48063_IG18
- mov r8d, ecx
- cmp word ptr [rsi+2*r8+0x10], 4
+ mov ecx, edx
+ cmp word ptr [rsi+2*rcx+0x10], 4
je SHORT G_M48063_IG15
- inc ecx
- cmp ecx, edi
+ inc edx
+ cmp edx, edi
jl SHORT G_M48063_IG13
- ;; size=23 bbWeight=0.04 PerfScore 0.28
+ ;; size=21 bbWeight=0.04 PerfScore 0.28
G_M48063_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
inc edi
mov dword ptr [rsp+0x20], 21
@@ -197,7 +197,7 @@ G_M48063_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
jmp G_M48063_IG04
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 369, prolog size 11, PerfScore 62.08, instruction count 94, allocated bytes for code 369 (MethodHash=22244440) for method System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
+; Total bytes of code 361, prolog size 11, PerfScore 63.08, instruction count 94, allocated bytes for code 361 (MethodHash=22244440) for method System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
; ============================================================
Unwind Info:
+48 (+5.49%) : 17794.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan1[ushort],System.ReadOnlySpan
1[ushort],int,ulong,ubyte):int:this (FullOpts)
@@ -12,7 +12,7 @@
; V02 arg2 [V02,T09] ( 4, 8 ) byref -> r8 ld-addr-op single-def
; V03 arg3 [V03,T15] ( 5, 3.50) int -> [rbp+0x28] single-def
; V04 arg4 [V04,T24] ( 4, 2 ) long -> rdi single-def
-; V05 arg5 [V05,T27] ( 2, 1 ) ubyte -> [rbp+0x38] single-def
+; V05 arg5 [V05,T27] ( 2, 1.50) ubyte -> [rbp+0x38] single-def
;* V06 loc0 [V06 ] ( 0, 0 ) long -> zero-ref
; V07 loc1 [V07 ] ( 1, 1 ) byref -> [rbp-0x40] must-init pinned single-def
;* V08 loc2 [V08 ] ( 0, 0 ) long -> zero-ref
@@ -24,7 +24,7 @@
; V14 loc8 [V14,T17] ( 3, 5 ) int -> rdx
; V15 loc9 [V15,T07] ( 7, 17.50) int -> rax
; V16 loc10 [V16,T01] ( 5, 84 ) int -> r8
-; V17 loc11 [V17,T02] ( 8, 75 ) int -> r9
+; V17 loc11 [V17,T02] ( 8, 75.50) int -> r9
; V18 loc12 [V18,T00] ( 4,128 ) ushort -> r10
; V19 loc13 [V19,T03] ( 2, 64 ) ushort -> r11
;* V20 loc14 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
@@ -42,11 +42,11 @@
;* V32 tmp11 [V32 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V33 tmp12 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V34 tmp13 [V34,T13] ( 5, 6 ) int -> rax "Single return block return value"
-; V35 PInvokeFrame [V35 ] ( 5, 3 ) struct (40) [rbp-0xC0] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V36 tmp15 [V36,T22] ( 4, 3.50) byref -> r13 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V37 tmp16 [V37,T10] ( 9, 8.50) int -> r12 "field V01._length (fldOffset=0x8)" P-INDEP
-; V38 tmp17 [V38,T19] ( 4, 4 ) byref -> r14 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V39 tmp18 [V39,T06] ( 11, 26 ) int -> r15 "field V02._length (fldOffset=0x8)" P-INDEP
+; V35 PInvokeFrame [V35 ] ( 5, 3 ) struct (40) [rbp-0xC8] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V36 tmp15 [V36,T22] ( 4, 3.50) byref -> r12 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V37 tmp16 [V37,T10] ( 9, 9 ) int -> [rbp-0x5C] spill-single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V38 tmp17 [V38,T19] ( 4, 4 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V39 tmp18 [V39,T06] ( 11, 26 ) int -> r13 "field V02._length (fldOffset=0x8)" P-INDEP
;* V40 tmp19 [V40 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp20 [V41 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;* V42 tmp21 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP
@@ -61,15 +61,15 @@
;* V51 tmp30 [V51 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
;* V52 tmp31 [V52 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
;* V53 tmp32 [V53 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V54 tmp33 [V54,T20] ( 2, 4 ) long -> rax "Cast away GC"
-; V55 tmp34 [V55,T21] ( 2, 4 ) long -> r8 "Cast away GC"
-; V56 tmp35 [V56 ] ( 6, 9 ) struct (16) [rbp-0x68] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V57 cse0 [V57,T23] ( 5, 2.50) byref -> [rbp-0x78] "CSE - moderate"
-; V58 rat0 [V58,T14] ( 3, 6 ) long -> [rbp-0x70] spill-single-def "fgMakeTemp is creating a new local variable"
-; TEMP_01 int -> [rbp-0x7C]
-; TEMP_04 long -> [rbp-0x84]
-; TEMP_03 long -> [rbp-0x8C]
-; TEMP_02 long -> [rbp-0x94]
+; V54 tmp33 [V54,T20] ( 2, 4 ) long -> r8 "Cast away GC"
+; V55 tmp34 [V55,T21] ( 2, 4 ) long -> r10 "Cast away GC"
+; V56 tmp35 [V56 ] ( 6, 9 ) struct (16) [rbp-0x70] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V57 cse0 [V57,T23] ( 5, 2.50) byref -> [rbp-0x80] "CSE - moderate"
+; V58 rat0 [V58,T14] ( 3, 6 ) long -> [rbp-0x78] spill-single-def "fgMakeTemp is creating a new local variable"
+; TEMP_01 int -> [rbp-0x84]
+; TEMP_04 long -> [rbp-0x8C]
+; TEMP_03 long -> [rbp-0x94]
+; TEMP_02 long -> [rbp-0x9C]
;
; Lcl frame size = 200
@@ -84,35 +84,38 @@ G_M39468_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 200
lea rbp, [rsp+0x100]
- xor eax, eax
- mov qword ptr [rbp-0x68], rax
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rbp-0x60], ymm4
+ vmovdqu ymmword ptr [rbp-0x70], ymm4
+ vmovdqa xmmword ptr [rbp-0x50], xmm4
+ xor eax, eax
mov qword ptr [rbp-0x40], rax
mov rbx, rcx
; gcrRegs +[rbx]
mov esi, r9d
mov rdi, qword ptr [rbp+0x30]
- ;; size=56 bbWeight=1 PerfScore 14.83
+ mov r14d, dword ptr [rbp+0x38]
+ ;; size=61 bbWeight=1 PerfScore 16.83
G_M39468_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0104 {rdx r8}, byref
; byrRegs +[rdx r8]
- mov r14, bword ptr [r8]
- ; byrRegs +[r14]
- mov r15d, dword ptr [r8+0x08]
- mov r13, bword ptr [rdx]
- ; byrRegs +[r13]
- mov r12d, dword ptr [rdx+0x08]
- lea rax, [(reloc)]
- mov qword ptr [rbp-0x70], rax
- cmp qword ptr [rax-0x08], 0
- jne G_M39468_IG37
- ;; size=36 bbWeight=1 PerfScore 13.50
-G_M39468_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
- ; byrRegs -[rdx r8]
- cmp byte ptr [rax], 0
+ mov r15, bword ptr [r8]
+ ; byrRegs +[r15]
+ mov r13d, dword ptr [r8+0x08]
+ mov r12, bword ptr [rdx]
+ ; byrRegs +[r12]
+ mov eax, dword ptr [rdx+0x08]
+ mov dword ptr [rbp-0x5C], eax
+ lea r8, [(reloc)]
+ ; byrRegs -[r8]
+ mov qword ptr [rbp-0x78], r8
+ cmp qword ptr [r8-0x08], 0
+ jne G_M39468_IG40
+ ;; size=38 bbWeight=1 PerfScore 14.50
+G_M39468_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz
+ ; byrRegs -[rdx]
+ cmp byte ptr [r8], 0
je SHORT G_M39468_IG05
- ;; size=5 bbWeight=1 PerfScore 4.00
-G_M39468_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref
+ ;; size=6 bbWeight=1 PerfScore 4.00
+G_M39468_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref
lea rcx, gword ptr [(reloc)]
; gcrRegs +[rcx]
lea rdx, gword ptr [(reloc)]
@@ -121,11 +124,11 @@ G_M39468_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=0.50 PerfScore 1.00
-G_M39468_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
- test r15d, r15d
+G_M39468_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz
+ test r13d, r13d
jne SHORT G_M39468_IG07
;; size=5 bbWeight=1 PerfScore 1.25
-G_M39468_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref
lea rcx, gword ptr [(reloc)]
; gcrRegs +[rcx]
lea rdx, gword ptr [(reloc)]
@@ -134,13 +137,13 @@ G_M39468_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=0.50 PerfScore 1.00
-G_M39468_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
+G_M39468_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz
mov gword ptr [rbp+0x10], rbx
; GC ptr vars +{V00}
cmp byte ptr [rbx+0x2C], 0
je SHORT G_M39468_IG10
;; size=10 bbWeight=1 PerfScore 5.00
-G_M39468_IG08: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
+G_M39468_IG08: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, gcvars, byref, isz
; gcrRegs -[rbx]
mov dword ptr [rbp+0x28], esi
xor ecx, ecx
@@ -149,10 +152,10 @@ G_M39468_IG08: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=
test cl, cl
jne SHORT G_M39468_IG11
;; size=16 bbWeight=0.50 PerfScore 1.88
-G_M39468_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
mov esi, dword ptr [rbp+0x28]
;; size=3 bbWeight=0.25 PerfScore 0.25
-G_M39468_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
lea rcx, gword ptr [(reloc)]
; gcrRegs +[rcx]
lea rdx, gword ptr [(reloc)]
@@ -162,239 +165,252 @@ G_M39468_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r1
; gcr arg pop 0
mov dword ptr [rbp+0x28], esi
;; size=22 bbWeight=0.50 PerfScore 1.50
-G_M39468_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
- mov bword ptr [rbp-0x40], r13
- mov rax, r13
- mov bword ptr [rbp-0x48], r14
- mov r8, r14
- mov qword ptr [rbp-0x50], rax
- mov qword ptr [rbp-0x58], r8
+G_M39468_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
+ mov bword ptr [rbp-0x40], r12
+ mov r8, r12
+ mov bword ptr [rbp-0x48], r15
+ mov r10, r15
+ mov qword ptr [rbp-0x50], r8
+ mov qword ptr [rbp-0x58], r10
lea rdx, [(reloc)]
cmp qword ptr [rdx-0x08], 0
- jne G_M39468_IG38
- mov r10, qword ptr [(reloc)]
- mov bword ptr [rbp-0x78], r10
+ jne G_M39468_IG41
+ mov r9, qword ptr [(reloc)]
+ mov bword ptr [rbp-0x80], r9
; GC ptr vars +{V57}
- mov rcx, gword ptr [r10+0x10]
+ mov rcx, gword ptr [r9+0x10]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M39468_IG39
+ je G_M39468_IG42
;; size=64 bbWeight=1 PerfScore 15.25
-G_M39468_IG12: ; bbWeight=1, gcVars=0000000000801000 {V00 V57}, gcrefRegs=0002 {rcx}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
- mov bword ptr [rbp-0x68], r14
- mov dword ptr [rbp-0x60], r15d
- lea rdx, [rbp-0x68]
- mov r9, qword ptr [rcx]
- call [r9+0x38]<unknown method>
+G_M39468_IG12: ; bbWeight=1, gcVars=0000000000801000 {V00 V57}, gcrefRegs=0002 {rcx}, byrefRegs=9000 {r12 r15}, gcvars, byref, isz
+ mov bword ptr [rbp-0x70], r15
+ mov dword ptr [rbp-0x68], r13d
+ lea rdx, [rbp-0x70]
+ mov r11, qword ptr [rcx]
+ call [r11+0x38]<unknown method>
; gcrRegs -[rcx]
- ; byrRegs -[r14]
+ ; byrRegs -[r15]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M39468_IG15
+ jne SHORT G_M39468_IG16
;; size=23 bbWeight=1 PerfScore 8.75
-G_M39468_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
- cmp r15d, r12d
- jle SHORT G_M39468_IG16
- mov r14, bword ptr [rbp-0x78]
- ; byrRegs +[r14]
- mov rcx, gword ptr [r14+0x10]
+G_M39468_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz
+ mov r15d, dword ptr [rbp-0x5C]
+ cmp r13d, r15d
+ jle SHORT G_M39468_IG17
+ mov rax, bword ptr [rbp-0x80]
+ ; byrRegs +[rax]
+ mov rcx, gword ptr [rax+0x10]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M39468_IG39
- mov bword ptr [rbp-0x68], r13
- mov dword ptr [rbp-0x60], r12d
- lea rdx, [rbp-0x68]
+ je G_M39468_IG42
+ mov bword ptr [rbp-0x70], r12
+ mov dword ptr [rbp-0x68], r15d
+ lea rdx, [rbp-0x70]
mov rax, qword ptr [rcx]
+ ; byrRegs -[rax]
; GC ptr vars -{V57}
call [rax+0x38]<unknown method>
; gcrRegs -[rcx]
- ; byrRegs -[r13-r14]
+ ; byrRegs -[r12]
; gcr arg pop 0
test eax, eax
- mov r13, qword ptr [rbp-0x58]
...
+48 (+5.49%) : 20430.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan1[ushort],System.ReadOnlySpan
1[ushort],int,ulong,ubyte):int:this (FullOpts)
@@ -12,7 +12,7 @@
; V02 arg2 [V02,T09] ( 4, 8 ) byref -> r8 ld-addr-op single-def
; V03 arg3 [V03,T15] ( 5, 3.50) int -> [rbp+0x28] single-def
; V04 arg4 [V04,T24] ( 4, 2 ) long -> rdi single-def
-; V05 arg5 [V05,T27] ( 2, 1 ) ubyte -> [rbp+0x38] single-def
+; V05 arg5 [V05,T27] ( 2, 1.50) ubyte -> [rbp+0x38] single-def
;* V06 loc0 [V06 ] ( 0, 0 ) long -> zero-ref
; V07 loc1 [V07 ] ( 1, 1 ) byref -> [rbp-0x40] must-init pinned single-def
;* V08 loc2 [V08 ] ( 0, 0 ) long -> zero-ref
@@ -24,7 +24,7 @@
; V14 loc8 [V14,T17] ( 3, 5 ) int -> rdx
; V15 loc9 [V15,T07] ( 7, 17.50) int -> rax
; V16 loc10 [V16,T01] ( 5, 84 ) int -> r8
-; V17 loc11 [V17,T02] ( 8, 75 ) int -> r9
+; V17 loc11 [V17,T02] ( 8, 75.50) int -> r9
; V18 loc12 [V18,T00] ( 4,128 ) ushort -> r10
; V19 loc13 [V19,T03] ( 2, 64 ) ushort -> r11
;* V20 loc14 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
@@ -42,11 +42,11 @@
;* V32 tmp11 [V32 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V33 tmp12 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V34 tmp13 [V34,T13] ( 5, 6 ) int -> rax "Single return block return value"
-; V35 PInvokeFrame [V35 ] ( 5, 3 ) struct (40) [rbp-0xC0] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V36 tmp15 [V36,T22] ( 4, 3.50) byref -> r13 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V37 tmp16 [V37,T10] ( 9, 8.50) int -> r12 "field V01._length (fldOffset=0x8)" P-INDEP
-; V38 tmp17 [V38,T19] ( 4, 4 ) byref -> r14 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V39 tmp18 [V39,T06] ( 11, 26 ) int -> r15 "field V02._length (fldOffset=0x8)" P-INDEP
+; V35 PInvokeFrame [V35 ] ( 5, 3 ) struct (40) [rbp-0xC8] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V36 tmp15 [V36,T22] ( 4, 3.50) byref -> r12 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V37 tmp16 [V37,T10] ( 9, 9 ) int -> [rbp-0x5C] spill-single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V38 tmp17 [V38,T19] ( 4, 4 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V39 tmp18 [V39,T06] ( 11, 26 ) int -> r13 "field V02._length (fldOffset=0x8)" P-INDEP
;* V40 tmp19 [V40 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp20 [V41 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;* V42 tmp21 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP
@@ -61,15 +61,15 @@
;* V51 tmp30 [V51 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
;* V52 tmp31 [V52 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
;* V53 tmp32 [V53 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V54 tmp33 [V54,T20] ( 2, 4 ) long -> rax "Cast away GC"
-; V55 tmp34 [V55,T21] ( 2, 4 ) long -> r8 "Cast away GC"
-; V56 tmp35 [V56 ] ( 6, 9 ) struct (16) [rbp-0x68] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V57 cse0 [V57,T23] ( 5, 2.50) byref -> [rbp-0x78] "CSE - moderate"
-; V58 rat0 [V58,T14] ( 3, 6 ) long -> [rbp-0x70] spill-single-def "fgMakeTemp is creating a new local variable"
-; TEMP_01 int -> [rbp-0x7C]
-; TEMP_04 long -> [rbp-0x84]
-; TEMP_03 long -> [rbp-0x8C]
-; TEMP_02 long -> [rbp-0x94]
+; V54 tmp33 [V54,T20] ( 2, 4 ) long -> r8 "Cast away GC"
+; V55 tmp34 [V55,T21] ( 2, 4 ) long -> r10 "Cast away GC"
+; V56 tmp35 [V56 ] ( 6, 9 ) struct (16) [rbp-0x70] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V57 cse0 [V57,T23] ( 5, 2.50) byref -> [rbp-0x80] "CSE - moderate"
+; V58 rat0 [V58,T14] ( 3, 6 ) long -> [rbp-0x78] spill-single-def "fgMakeTemp is creating a new local variable"
+; TEMP_01 int -> [rbp-0x84]
+; TEMP_04 long -> [rbp-0x8C]
+; TEMP_03 long -> [rbp-0x94]
+; TEMP_02 long -> [rbp-0x9C]
;
; Lcl frame size = 200
@@ -84,35 +84,38 @@ G_M39468_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 200
lea rbp, [rsp+0x100]
- xor eax, eax
- mov qword ptr [rbp-0x68], rax
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rbp-0x60], ymm4
+ vmovdqu ymmword ptr [rbp-0x70], ymm4
+ vmovdqa xmmword ptr [rbp-0x50], xmm4
+ xor eax, eax
mov qword ptr [rbp-0x40], rax
mov rbx, rcx
; gcrRegs +[rbx]
mov esi, r9d
mov rdi, qword ptr [rbp+0x30]
- ;; size=56 bbWeight=1 PerfScore 14.83
+ mov r14d, dword ptr [rbp+0x38]
+ ;; size=61 bbWeight=1 PerfScore 16.83
G_M39468_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0104 {rdx r8}, byref
; byrRegs +[rdx r8]
- mov r14, bword ptr [r8]
- ; byrRegs +[r14]
- mov r15d, dword ptr [r8+0x08]
- mov r13, bword ptr [rdx]
- ; byrRegs +[r13]
- mov r12d, dword ptr [rdx+0x08]
- lea rax, [(reloc)]
- mov qword ptr [rbp-0x70], rax
- cmp qword ptr [rax-0x08], 0
- jne G_M39468_IG37
- ;; size=36 bbWeight=1 PerfScore 13.50
-G_M39468_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
- ; byrRegs -[rdx r8]
- cmp byte ptr [rax], 0
+ mov r15, bword ptr [r8]
+ ; byrRegs +[r15]
+ mov r13d, dword ptr [r8+0x08]
+ mov r12, bword ptr [rdx]
+ ; byrRegs +[r12]
+ mov eax, dword ptr [rdx+0x08]
+ mov dword ptr [rbp-0x5C], eax
+ lea r8, [(reloc)]
+ ; byrRegs -[r8]
+ mov qword ptr [rbp-0x78], r8
+ cmp qword ptr [r8-0x08], 0
+ jne G_M39468_IG40
+ ;; size=38 bbWeight=1 PerfScore 14.50
+G_M39468_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz
+ ; byrRegs -[rdx]
+ cmp byte ptr [r8], 0
je SHORT G_M39468_IG05
- ;; size=5 bbWeight=1 PerfScore 4.00
-G_M39468_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref
+ ;; size=6 bbWeight=1 PerfScore 4.00
+G_M39468_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref
lea rcx, gword ptr [(reloc)]
; gcrRegs +[rcx]
lea rdx, gword ptr [(reloc)]
@@ -121,11 +124,11 @@ G_M39468_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=0.50 PerfScore 1.00
-G_M39468_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
- test r15d, r15d
+G_M39468_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz
+ test r13d, r13d
jne SHORT G_M39468_IG07
;; size=5 bbWeight=1 PerfScore 1.25
-G_M39468_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref
lea rcx, gword ptr [(reloc)]
; gcrRegs +[rcx]
lea rdx, gword ptr [(reloc)]
@@ -134,13 +137,13 @@ G_M39468_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=0.50 PerfScore 1.00
-G_M39468_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
+G_M39468_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz
mov gword ptr [rbp+0x10], rbx
; GC ptr vars +{V00}
cmp byte ptr [rbx+0x2C], 0
je SHORT G_M39468_IG10
;; size=10 bbWeight=1 PerfScore 5.00
-G_M39468_IG08: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
+G_M39468_IG08: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, gcvars, byref, isz
; gcrRegs -[rbx]
mov dword ptr [rbp+0x28], esi
xor ecx, ecx
@@ -149,10 +152,10 @@ G_M39468_IG08: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=
test cl, cl
jne SHORT G_M39468_IG11
;; size=16 bbWeight=0.50 PerfScore 1.88
-G_M39468_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
mov esi, dword ptr [rbp+0x28]
;; size=3 bbWeight=0.25 PerfScore 0.25
-G_M39468_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
lea rcx, gword ptr [(reloc)]
; gcrRegs +[rcx]
lea rdx, gword ptr [(reloc)]
@@ -162,239 +165,252 @@ G_M39468_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r1
; gcr arg pop 0
mov dword ptr [rbp+0x28], esi
;; size=22 bbWeight=0.50 PerfScore 1.50
-G_M39468_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
- mov bword ptr [rbp-0x40], r13
- mov rax, r13
- mov bword ptr [rbp-0x48], r14
- mov r8, r14
- mov qword ptr [rbp-0x50], rax
- mov qword ptr [rbp-0x58], r8
+G_M39468_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
+ mov bword ptr [rbp-0x40], r12
+ mov r8, r12
+ mov bword ptr [rbp-0x48], r15
+ mov r10, r15
+ mov qword ptr [rbp-0x50], r8
+ mov qword ptr [rbp-0x58], r10
lea rdx, [(reloc)]
cmp qword ptr [rdx-0x08], 0
- jne G_M39468_IG38
- mov r10, qword ptr [(reloc)]
- mov bword ptr [rbp-0x78], r10
+ jne G_M39468_IG41
+ mov r9, qword ptr [(reloc)]
+ mov bword ptr [rbp-0x80], r9
; GC ptr vars +{V57}
- mov rcx, gword ptr [r10+0x10]
+ mov rcx, gword ptr [r9+0x10]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M39468_IG39
+ je G_M39468_IG42
;; size=64 bbWeight=1 PerfScore 15.25
-G_M39468_IG12: ; bbWeight=1, gcVars=0000000000801000 {V00 V57}, gcrefRegs=0002 {rcx}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
- mov bword ptr [rbp-0x68], r14
- mov dword ptr [rbp-0x60], r15d
- lea rdx, [rbp-0x68]
- mov r9, qword ptr [rcx]
- call [r9+0x38]<unknown method>
+G_M39468_IG12: ; bbWeight=1, gcVars=0000000000801000 {V00 V57}, gcrefRegs=0002 {rcx}, byrefRegs=9000 {r12 r15}, gcvars, byref, isz
+ mov bword ptr [rbp-0x70], r15
+ mov dword ptr [rbp-0x68], r13d
+ lea rdx, [rbp-0x70]
+ mov r11, qword ptr [rcx]
+ call [r11+0x38]<unknown method>
; gcrRegs -[rcx]
- ; byrRegs -[r14]
+ ; byrRegs -[r15]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M39468_IG15
+ jne SHORT G_M39468_IG16
;; size=23 bbWeight=1 PerfScore 8.75
-G_M39468_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
- cmp r15d, r12d
- jle SHORT G_M39468_IG16
- mov r14, bword ptr [rbp-0x78]
- ; byrRegs +[r14]
- mov rcx, gword ptr [r14+0x10]
+G_M39468_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz
+ mov r15d, dword ptr [rbp-0x5C]
+ cmp r13d, r15d
+ jle SHORT G_M39468_IG17
+ mov rax, bword ptr [rbp-0x80]
+ ; byrRegs +[rax]
+ mov rcx, gword ptr [rax+0x10]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M39468_IG39
- mov bword ptr [rbp-0x68], r13
- mov dword ptr [rbp-0x60], r12d
- lea rdx, [rbp-0x68]
+ je G_M39468_IG42
+ mov bword ptr [rbp-0x70], r12
+ mov dword ptr [rbp-0x68], r15d
+ lea rdx, [rbp-0x70]
mov rax, qword ptr [rcx]
+ ; byrRegs -[rax]
; GC ptr vars -{V57}
call [rax+0x38]<unknown method>
; gcrRegs -[rcx]
- ; byrRegs -[r13-r14]
+ ; byrRegs -[r12]
; gcr arg pop 0
test eax, eax
- mov r13, qword ptr [rbp-0x58]
...
+48 (+5.49%) : 23074.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan1[ushort],System.ReadOnlySpan
1[ushort],int,ulong,ubyte):int:this (FullOpts)
@@ -12,7 +12,7 @@
; V02 arg2 [V02,T09] ( 4, 8 ) byref -> r8 ld-addr-op single-def
; V03 arg3 [V03,T15] ( 5, 3.50) int -> [rbp+0x28] single-def
; V04 arg4 [V04,T24] ( 4, 2 ) long -> rdi single-def
-; V05 arg5 [V05,T27] ( 2, 1 ) ubyte -> [rbp+0x38] single-def
+; V05 arg5 [V05,T27] ( 2, 1.50) ubyte -> [rbp+0x38] single-def
;* V06 loc0 [V06 ] ( 0, 0 ) long -> zero-ref
; V07 loc1 [V07 ] ( 1, 1 ) byref -> [rbp-0x40] must-init pinned single-def
;* V08 loc2 [V08 ] ( 0, 0 ) long -> zero-ref
@@ -24,7 +24,7 @@
; V14 loc8 [V14,T17] ( 3, 5 ) int -> rdx
; V15 loc9 [V15,T07] ( 7, 17.50) int -> rax
; V16 loc10 [V16,T01] ( 5, 84 ) int -> r8
-; V17 loc11 [V17,T02] ( 8, 75 ) int -> r9
+; V17 loc11 [V17,T02] ( 8, 75.50) int -> r9
; V18 loc12 [V18,T00] ( 4,128 ) ushort -> r10
; V19 loc13 [V19,T03] ( 2, 64 ) ushort -> r11
;* V20 loc14 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
@@ -42,11 +42,11 @@
;* V32 tmp11 [V32 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V33 tmp12 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V34 tmp13 [V34,T13] ( 5, 6 ) int -> rax "Single return block return value"
-; V35 PInvokeFrame [V35 ] ( 5, 3 ) struct (40) [rbp-0xC0] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V36 tmp15 [V36,T22] ( 4, 3.50) byref -> r13 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V37 tmp16 [V37,T10] ( 9, 8.50) int -> r12 "field V01._length (fldOffset=0x8)" P-INDEP
-; V38 tmp17 [V38,T19] ( 4, 4 ) byref -> r14 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V39 tmp18 [V39,T06] ( 11, 26 ) int -> r15 "field V02._length (fldOffset=0x8)" P-INDEP
+; V35 PInvokeFrame [V35 ] ( 5, 3 ) struct (40) [rbp-0xC8] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V36 tmp15 [V36,T22] ( 4, 3.50) byref -> r12 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V37 tmp16 [V37,T10] ( 9, 9 ) int -> [rbp-0x5C] spill-single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V38 tmp17 [V38,T19] ( 4, 4 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V39 tmp18 [V39,T06] ( 11, 26 ) int -> r13 "field V02._length (fldOffset=0x8)" P-INDEP
;* V40 tmp19 [V40 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp20 [V41 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;* V42 tmp21 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP
@@ -61,15 +61,15 @@
;* V51 tmp30 [V51 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
;* V52 tmp31 [V52 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
;* V53 tmp32 [V53 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V54 tmp33 [V54,T20] ( 2, 4 ) long -> rax "Cast away GC"
-; V55 tmp34 [V55,T21] ( 2, 4 ) long -> r8 "Cast away GC"
-; V56 tmp35 [V56 ] ( 6, 9 ) struct (16) [rbp-0x68] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V57 cse0 [V57,T23] ( 5, 2.50) byref -> [rbp-0x78] "CSE - moderate"
-; V58 rat0 [V58,T14] ( 3, 6 ) long -> [rbp-0x70] spill-single-def "fgMakeTemp is creating a new local variable"
-; TEMP_01 int -> [rbp-0x7C]
-; TEMP_04 long -> [rbp-0x84]
-; TEMP_03 long -> [rbp-0x8C]
-; TEMP_02 long -> [rbp-0x94]
+; V54 tmp33 [V54,T20] ( 2, 4 ) long -> r8 "Cast away GC"
+; V55 tmp34 [V55,T21] ( 2, 4 ) long -> r10 "Cast away GC"
+; V56 tmp35 [V56 ] ( 6, 9 ) struct (16) [rbp-0x70] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V57 cse0 [V57,T23] ( 5, 2.50) byref -> [rbp-0x80] "CSE - moderate"
+; V58 rat0 [V58,T14] ( 3, 6 ) long -> [rbp-0x78] spill-single-def "fgMakeTemp is creating a new local variable"
+; TEMP_01 int -> [rbp-0x84]
+; TEMP_04 long -> [rbp-0x8C]
+; TEMP_03 long -> [rbp-0x94]
+; TEMP_02 long -> [rbp-0x9C]
;
; Lcl frame size = 200
@@ -84,35 +84,38 @@ G_M39468_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 200
lea rbp, [rsp+0x100]
- xor eax, eax
- mov qword ptr [rbp-0x68], rax
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rbp-0x60], ymm4
+ vmovdqu ymmword ptr [rbp-0x70], ymm4
+ vmovdqa xmmword ptr [rbp-0x50], xmm4
+ xor eax, eax
mov qword ptr [rbp-0x40], rax
mov rbx, rcx
; gcrRegs +[rbx]
mov esi, r9d
mov rdi, qword ptr [rbp+0x30]
- ;; size=56 bbWeight=1 PerfScore 14.83
+ mov r14d, dword ptr [rbp+0x38]
+ ;; size=61 bbWeight=1 PerfScore 16.83
G_M39468_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0104 {rdx r8}, byref
; byrRegs +[rdx r8]
- mov r14, bword ptr [r8]
- ; byrRegs +[r14]
- mov r15d, dword ptr [r8+0x08]
- mov r13, bword ptr [rdx]
- ; byrRegs +[r13]
- mov r12d, dword ptr [rdx+0x08]
- lea rax, [(reloc)]
- mov qword ptr [rbp-0x70], rax
- cmp qword ptr [rax-0x08], 0
- jne G_M39468_IG37
- ;; size=36 bbWeight=1 PerfScore 13.50
-G_M39468_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
- ; byrRegs -[rdx r8]
- cmp byte ptr [rax], 0
+ mov r15, bword ptr [r8]
+ ; byrRegs +[r15]
+ mov r13d, dword ptr [r8+0x08]
+ mov r12, bword ptr [rdx]
+ ; byrRegs +[r12]
+ mov eax, dword ptr [rdx+0x08]
+ mov dword ptr [rbp-0x5C], eax
+ lea r8, [(reloc)]
+ ; byrRegs -[r8]
+ mov qword ptr [rbp-0x78], r8
+ cmp qword ptr [r8-0x08], 0
+ jne G_M39468_IG40
+ ;; size=38 bbWeight=1 PerfScore 14.50
+G_M39468_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz
+ ; byrRegs -[rdx]
+ cmp byte ptr [r8], 0
je SHORT G_M39468_IG05
- ;; size=5 bbWeight=1 PerfScore 4.00
-G_M39468_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref
+ ;; size=6 bbWeight=1 PerfScore 4.00
+G_M39468_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref
lea rcx, gword ptr [(reloc)]
; gcrRegs +[rcx]
lea rdx, gword ptr [(reloc)]
@@ -121,11 +124,11 @@ G_M39468_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=0.50 PerfScore 1.00
-G_M39468_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
- test r15d, r15d
+G_M39468_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz
+ test r13d, r13d
jne SHORT G_M39468_IG07
;; size=5 bbWeight=1 PerfScore 1.25
-G_M39468_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref
lea rcx, gword ptr [(reloc)]
; gcrRegs +[rcx]
lea rdx, gword ptr [(reloc)]
@@ -134,13 +137,13 @@ G_M39468_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=0.50 PerfScore 1.00
-G_M39468_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
+G_M39468_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz
mov gword ptr [rbp+0x10], rbx
; GC ptr vars +{V00}
cmp byte ptr [rbx+0x2C], 0
je SHORT G_M39468_IG10
;; size=10 bbWeight=1 PerfScore 5.00
-G_M39468_IG08: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
+G_M39468_IG08: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, gcvars, byref, isz
; gcrRegs -[rbx]
mov dword ptr [rbp+0x28], esi
xor ecx, ecx
@@ -149,10 +152,10 @@ G_M39468_IG08: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=
test cl, cl
jne SHORT G_M39468_IG11
;; size=16 bbWeight=0.50 PerfScore 1.88
-G_M39468_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
mov esi, dword ptr [rbp+0x28]
;; size=3 bbWeight=0.25 PerfScore 0.25
-G_M39468_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
lea rcx, gword ptr [(reloc)]
; gcrRegs +[rcx]
lea rdx, gword ptr [(reloc)]
@@ -162,239 +165,252 @@ G_M39468_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r1
; gcr arg pop 0
mov dword ptr [rbp+0x28], esi
;; size=22 bbWeight=0.50 PerfScore 1.50
-G_M39468_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
- mov bword ptr [rbp-0x40], r13
- mov rax, r13
- mov bword ptr [rbp-0x48], r14
- mov r8, r14
- mov qword ptr [rbp-0x50], rax
- mov qword ptr [rbp-0x58], r8
+G_M39468_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
+ mov bword ptr [rbp-0x40], r12
+ mov r8, r12
+ mov bword ptr [rbp-0x48], r15
+ mov r10, r15
+ mov qword ptr [rbp-0x50], r8
+ mov qword ptr [rbp-0x58], r10
lea rdx, [(reloc)]
cmp qword ptr [rdx-0x08], 0
- jne G_M39468_IG38
- mov r10, qword ptr [(reloc)]
- mov bword ptr [rbp-0x78], r10
+ jne G_M39468_IG41
+ mov r9, qword ptr [(reloc)]
+ mov bword ptr [rbp-0x80], r9
; GC ptr vars +{V57}
- mov rcx, gword ptr [r10+0x10]
+ mov rcx, gword ptr [r9+0x10]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M39468_IG39
+ je G_M39468_IG42
;; size=64 bbWeight=1 PerfScore 15.25
-G_M39468_IG12: ; bbWeight=1, gcVars=0000000000801000 {V00 V57}, gcrefRegs=0002 {rcx}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
- mov bword ptr [rbp-0x68], r14
- mov dword ptr [rbp-0x60], r15d
- lea rdx, [rbp-0x68]
- mov r9, qword ptr [rcx]
- call [r9+0x38]<unknown method>
+G_M39468_IG12: ; bbWeight=1, gcVars=0000000000801000 {V00 V57}, gcrefRegs=0002 {rcx}, byrefRegs=9000 {r12 r15}, gcvars, byref, isz
+ mov bword ptr [rbp-0x70], r15
+ mov dword ptr [rbp-0x68], r13d
+ lea rdx, [rbp-0x70]
+ mov r11, qword ptr [rcx]
+ call [r11+0x38]<unknown method>
; gcrRegs -[rcx]
- ; byrRegs -[r14]
+ ; byrRegs -[r15]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M39468_IG15
+ jne SHORT G_M39468_IG16
;; size=23 bbWeight=1 PerfScore 8.75
-G_M39468_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz
- cmp r15d, r12d
- jle SHORT G_M39468_IG16
- mov r14, bword ptr [rbp-0x78]
- ; byrRegs +[r14]
- mov rcx, gword ptr [r14+0x10]
+G_M39468_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz
+ mov r15d, dword ptr [rbp-0x5C]
+ cmp r13d, r15d
+ jle SHORT G_M39468_IG17
+ mov rax, bword ptr [rbp-0x80]
+ ; byrRegs +[rax]
+ mov rcx, gword ptr [rax+0x10]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M39468_IG39
- mov bword ptr [rbp-0x68], r13
- mov dword ptr [rbp-0x60], r12d
- lea rdx, [rbp-0x68]
+ je G_M39468_IG42
+ mov bword ptr [rbp-0x70], r12
+ mov dword ptr [rbp-0x68], r15d
+ lea rdx, [rbp-0x70]
mov rax, qword ptr [rcx]
+ ; byrRegs -[rax]
; GC ptr vars -{V57}
call [rax+0x38]<unknown method>
; gcrRegs -[rcx]
- ; byrRegs -[r13-r14]
+ ; byrRegs -[r12]
; gcr arg pop 0
test eax, eax
- mov r13, qword ptr [rbp-0x58]
...
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
aspnet.run.windows.x64.checked.mch |
3,332 |
1,572 |
1,366 |
394 |
-19,382 |
+20,571 |
benchmarks.run.windows.x64.checked.mch |
362 |
65 |
55 |
242 |
-500 |
+973 |
benchmarks.run_pgo.windows.x64.checked.mch |
6,847 |
2,583 |
3,815 |
449 |
-22,503 |
+50,468 |
benchmarks.run_tiered.windows.x64.checked.mch |
117 |
41 |
17 |
59 |
-363 |
+490 |
coreclr_tests.run.windows.x64.checked.mch |
3,905 |
307 |
298 |
3,300 |
-2,036 |
+2,793 |
libraries.crossgen2.windows.x64.checked.mch |
591 |
62 |
87 |
442 |
-938 |
+1,146 |
libraries.pmi.windows.x64.checked.mch |
1,148 |
213 |
213 |
722 |
-1,543 |
+2,607 |
libraries_tests.run.windows.x64.Release.mch |
1,424 |
280 |
857 |
287 |
-2,015 |
+9,719 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
1,336 |
287 |
342 |
707 |
-3,433 |
+4,869 |
realworld.run.windows.x64.checked.mch |
330 |
56 |
58 |
216 |
-1,282 |
+1,131 |
smoke_tests.nativeaot.windows.x64.checked.mch |
318 |
36 |
33 |
249 |
-313 |
+906 |
|
19,710 |
5,502 |
7,141 |
7,067 |
-54,308 |
+95,673 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
aspnet.run.windows.x64.checked.mch |
129,145 |
61,702 |
67,443 |
133 (0.10%) |
145 (0.11%) |
benchmarks.run.windows.x64.checked.mch |
36,886 |
6 |
36,880 |
55 (0.15%) |
55 (0.15%) |
benchmarks.run_pgo.windows.x64.checked.mch |
107,598 |
68,114 |
39,484 |
379 (0.35%) |
379 (0.35%) |
benchmarks.run_tiered.windows.x64.checked.mch |
82,880 |
62,052 |
20,828 |
63 (0.08%) |
63 (0.08%) |
coreclr_tests.run.windows.x64.checked.mch |
492,181 |
273,478 |
218,703 |
118 (0.02%) |
120 (0.02%) |
libraries.crossgen2.windows.x64.checked.mch |
274,111 |
15 |
274,096 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.windows.x64.checked.mch |
343,887 |
6 |
343,881 |
90 (0.03%) |
90 (0.03%) |
libraries_tests.run.windows.x64.Release.mch |
120,206 |
100,260 |
19,946 |
40 (0.03%) |
40 (0.03%) |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
341,592 |
21,947 |
319,645 |
2,320 (0.67%) |
2,320 (0.67%) |
realworld.run.windows.x64.checked.mch |
38,742 |
3 |
38,739 |
14 (0.04%) |
14 (0.04%) |
smoke_tests.nativeaot.windows.x64.checked.mch |
32,421 |
11 |
32,410 |
13 (0.04%) |
13 (0.04%) |
|
1,999,649 |
587,594 |
1,412,055 |
3,225 (0.16%) |
3,239 (0.16%) |
jit-analyze output
aspnet.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 46746711 (overridden on cmd)
Total bytes of diff: 46747900 (overridden on cmd)
Total bytes of delta: 1189 (0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
251 : 29871.dasm (4.76 % of base)
238 : 21357.dasm (6.25 % of base)
213 : 11014.dasm (5.47 % of base)
184 : 77251.dasm (6.88 % of base)
184 : 57536.dasm (6.88 % of base)
149 : 10261.dasm (2.97 % of base)
143 : 20216.dasm (5.36 % of base)
143 : 13881.dasm (5.36 % of base)
127 : 22025.dasm (2.08 % of base)
127 : 24621.dasm (2.08 % of base)
127 : 9228.dasm (2.08 % of base)
127 : 10012.dasm (2.08 % of base)
127 : 21364.dasm (2.08 % of base)
127 : 23228.dasm (2.08 % of base)
123 : 69400.dasm (3.01 % of base)
117 : 34329.dasm (1.93 % of base)
117 : 56313.dasm (1.93 % of base)
117 : 29905.dasm (1.93 % of base)
117 : 57478.dasm (1.93 % of base)
117 : 77241.dasm (1.93 % of base)
Top file improvements (bytes):
-373 : 80893.dasm (-5.92 % of base)
-298 : 70616.dasm (-4.66 % of base)
-271 : 80044.dasm (-4.38 % of base)
-266 : 54277.dasm (-6.69 % of base)
-260 : 51091.dasm (-6.45 % of base)
-206 : 114544.dasm (-1.54 % of base)
-152 : 30356.dasm (-4.40 % of base)
-152 : 56319.dasm (-7.34 % of base)
-152 : 29944.dasm (-7.34 % of base)
-152 : 56325.dasm (-4.40 % of base)
-152 : 57489.dasm (-7.34 % of base)
-152 : 77248.dasm (-7.34 % of base)
-138 : 57650.dasm (-4.01 % of base)
-138 : 77259.dasm (-4.01 % of base)
-131 : 117374.dasm (-4.84 % of base)
-131 : 116448.dasm (-4.84 % of base)
-128 : 20529.dasm (-10.38 % of base)
-123 : 60236.dasm (-3.19 % of base)
-123 : 116378.dasm (-4.53 % of base)
-123 : 46766.dasm (-3.19 % of base)
88 total files with Code Size differences (47 improved, 41 regressed), 20 unchanged.
Top method regressions (bytes):
251 (4.76 % of base) : 29871.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (Tier1-OSR)
238 (6.25 % of base) : 21357.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1-OSR)
213 (5.47 % of base) : 11014.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (Tier1)
184 (6.88 % of base) : 77251.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
184 (6.88 % of base) : 57536.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
149 (2.97 % of base) : 10261.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
143 (5.36 % of base) : 20216.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
143 (5.36 % of base) : 13881.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
127 (2.08 % of base) : 22025.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
127 (2.08 % of base) : 24621.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
127 (2.08 % of base) : 9228.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
127 (2.08 % of base) : 10012.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
127 (2.08 % of base) : 21364.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
127 (2.08 % of base) : 23228.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
123 (3.01 % of base) : 69400.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
117 (1.93 % of base) : 34329.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
117 (1.93 % of base) : 56313.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
117 (1.93 % of base) : 29905.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
117 (1.93 % of base) : 57478.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
117 (1.93 % of base) : 77241.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
Top method improvements (bytes):
-373 (-5.92 % of base) : 80893.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-298 (-4.66 % of base) : 70616.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-271 (-4.38 % of base) : 80044.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-266 (-6.69 % of base) : 54277.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-260 (-6.45 % of base) : 51091.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (FullOpts)
-206 (-1.54 % of base) : 114544.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-152 (-4.40 % of base) : 30356.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1-OSR)
-152 (-4.40 % of base) : 56325.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1-OSR)
-152 (-7.34 % of base) : 56319.dasm - System.Linq.Expressions.Expression:GetProperty(System.Reflection.MethodInfo,System.String,int):System.Reflection.PropertyInfo (Tier1-OSR)
-152 (-7.34 % of base) : 29944.dasm - System.Linq.Expressions.Expression:GetProperty(System.Reflection.MethodInfo,System.String,int):System.Reflection.PropertyInfo (Tier1-OSR)
-152 (-7.34 % of base) : 57489.dasm - System.Linq.Expressions.Expression:GetProperty(System.Reflection.MethodInfo,System.String,int):System.Reflection.PropertyInfo (Tier1-OSR)
-152 (-7.34 % of base) : 77248.dasm - System.Linq.Expressions.Expression:GetProperty(System.Reflection.MethodInfo,System.String,int):System.Reflection.PropertyInfo (Tier1-OSR)
-138 (-4.01 % of base) : 57650.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1-OSR)
-138 (-4.01 % of base) : 77259.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1-OSR)
-131 (-4.84 % of base) : 117374.dasm - System.Uri:CheckAuthorityHelper(ulong,int,int,byref,byref,System.UriParser,byref):int:this (Tier1-OSR)
-131 (-4.84 % of base) : 116448.dasm - System.Uri:CheckAuthorityHelper(ulong,int,int,byref,byref,System.UriParser,byref):int:this (Tier1-OSR)
-128 (-10.38 % of base) : 20529.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,System.__Canon]:TryGetValue(System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,byref):ubyte:this (Tier1)
-123 (-3.19 % of base) : 60236.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-123 (-3.19 % of base) : 46766.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-123 (-4.53 % of base) : 116378.dasm - System.Uri:CheckAuthorityHelper(ulong,int,int,byref,byref,System.UriParser,byref):int:this (Tier1-OSR)
Top method regressions (percentages):
29 (14.01 % of base) : 22911.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (14.01 % of base) : 25211.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (14.01 % of base) : 29392.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (14.01 % of base) : 50094.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (14.01 % of base) : 54512.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (14.01 % of base) : 70329.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (14.01 % of base) : 79380.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (14.01 % of base) : 79749.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (14.01 % of base) : 63854.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (14.01 % of base) : 64207.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (14.01 % of base) : 67833.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (14.01 % of base) : 80587.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (14.01 % of base) : 25475.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (14.01 % of base) : 28098.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (14.01 % of base) : 71168.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
76 (12.90 % of base) : 69200.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)
55 (10.30 % of base) : 118469.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
7 (10.14 % of base) : 80564.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
7 (10.14 % of base) : 69240.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
7 (10.14 % of base) : 117448.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
Top method improvements (percentages):
-7 (-10.77 % of base) : 127877.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
-39 (-10.63 % of base) : 12416.dasm - System.Net.Sockets.DynamicWinsockMethods:GetMethods(int,int,int):System.Net.Sockets.DynamicWinsockMethods (Tier1)
-81 (-10.49 % of base) : 36042.dasm - System.Convert:TryDecodeFromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):ubyte (Tier1-OSR)
-7 (-10.45 % of base) : 118816.dasm - OrchardCore.DisplayManagement.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
-7 (-10.45 % of base) : 116843.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
-7 (-10.45 % of base) : 129217.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
-7 (-10.45 % of base) : 101923.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
-7 (-10.45 % of base) : 117797.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
-7 (-10.45 % of base) : 119370.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
-7 (-10.45 % of base) : 85126.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
-128 (-10.38 % of base) : 20529.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,System.__Canon]:TryGetValue(System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,byref):ubyte:this (Tier1)
-2 (-10.00 % of base) : 127921.dasm - System.Text.StringBuilder:FindChunkForIndex(int):System.Text.StringBuilder:this (Tier1)
-20 (-9.05 % of base) : 36041.dasm - System.Convert:FromBase64_ComputeResultLength(ulong,int):int (Tier1-OSR)
-54 (-8.75 % of base) : 84206.dasm - System.Net.IPAddressParser:<FormatIPv6Address>g__AppendSections|6_0[ushort](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref) (Tier1)
-26 (-8.61 % of base) : 116000.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[long,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[long,System.__Canon],long,int,byref):ubyte (Tier1)
-2 (-8.00 % of base) : 51841.dasm - System.Collections.Concurrent.ConcurrentStack`1[System.__Canon]:get_Count():int:this (Tier1)
-2 (-8.00 % of base) : 59683.dasm - System.Collections.Concurrent.ConcurrentStack`1[System.__Canon]:get_Count():int:this (Tier1)
-2 (-8.00 % of base) : 65861.dasm - System.Collections.Concurrent.ConcurrentStack`1[System.__Canon]:get_Count():int:this (Tier1)
-2 (-8.00 % of base) : 45831.dasm - System.Collections.Concurrent.ConcurrentStack`1[System.__Canon]:get_Count():int:this (Tier1)
-2 (-8.00 % of base) : 49187.dasm - System.Collections.Concurrent.ConcurrentStack`1[System.__Canon]:get_Count():int:this (Tier1)
benchmarks.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 11727476 (overridden on cmd)
Total bytes of diff: 11727949 (overridden on cmd)
Total bytes of delta: 473 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
128 : 9234.dasm (2.81 % of base)
128 : 33496.dasm (2.90 % of base)
83 : 17319.dasm (1.89 % of base)
83 : 1988.dasm (1.89 % of base)
82 : 3440.dasm (6.39 % of base)
77 : 21752.dasm (1.89 % of base)
77 : 32050.dasm (1.89 % of base)
23 : 25524.dasm (0.75 % of base)
21 : 34874.dasm (1.15 % of base)
17 : 27501.dasm (0.61 % of base)
16 : 15997.dasm (0.20 % of base)
16 : 10171.dasm (0.20 % of base)
15 : 27811.dasm (0.25 % of base)
15 : 34882.dasm (0.91 % of base)
14 : 23436.dasm (0.99 % of base)
14 : 24007.dasm (0.99 % of base)
12 : 35930.dasm (0.24 % of base)
11 : 31537.dasm (2.93 % of base)
11 : 23905.dasm (2.93 % of base)
10 : 2990.dasm (3.21 % of base)
Top file improvements (bytes):
-54 : 24463.dasm (-4.17 % of base)
-44 : 14233.dasm (-1.62 % of base)
-44 : 2588.dasm (-1.62 % of base)
-30 : 28582.dasm (-0.99 % of base)
-25 : 10551.dasm (-1.75 % of base)
-21 : 24596.dasm (-2.44 % of base)
-20 : 11255.dasm (-1.42 % of base)
-20 : 18940.dasm (-1.42 % of base)
-16 : 7478.dasm (-4.47 % of base)
-14 : 12335.dasm (-0.95 % of base)
-14 : 34897.dasm (-2.03 % of base)
-14 : 581.dasm (-0.95 % of base)
-13 : 27103.dasm (-1.23 % of base)
-13 : 32063.dasm (-0.39 % of base)
-13 : 29683.dasm (-0.39 % of base)
-11 : 26568.dasm (-0.45 % of base)
-10 : 31702.dasm (-0.84 % of base)
-8 : 31670.dasm (-0.49 % of base)
-8 : 4045.dasm (-0.49 % of base)
-7 : 23773.dasm (-1.62 % of base)
51 total files with Code Size differences (24 improved, 27 regressed), 20 unchanged.
Top method regressions (bytes):
128 (2.81 % of base) : 9234.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
128 (2.90 % of base) : 33496.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
83 (1.89 % of base) : 17319.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
83 (1.89 % of base) : 1988.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
82 (6.39 % of base) : 3440.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
77 (1.89 % of base) : 21752.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
77 (1.89 % of base) : 32050.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
23 (0.75 % of base) : 25524.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
21 (1.15 % of base) : 34874.dasm - MessagePack.Formatters.MicroBenchmarks_Serializers_ActiveOrUpcomingEventFormatter2:Deserialize(ubyte[],int,MessagePack.IFormatterResolver,byref):MicroBenchmarks.Serializers.ActiveOrUpcomingEvent:this (FullOpts)
17 (0.61 % of base) : 27501.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
16 (0.20 % of base) : 15997.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping):this (FullOpts)
16 (0.20 % of base) : 10171.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping):this (FullOpts)
15 (0.91 % of base) : 34882.dasm - MessagePack.Formatters.MicroBenchmarks_Serializers_CampaignSummaryViewModelFormatter3:Deserialize(ubyte[],int,MessagePack.IFormatterResolver,byref):MicroBenchmarks.Serializers.CampaignSummaryViewModel:this (FullOpts)
15 (0.25 % of base) : 27811.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
14 (0.99 % of base) : 23436.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (FullOpts)
14 (0.99 % of base) : 24007.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (FullOpts)
12 (0.24 % of base) : 35930.dasm - System.Xml.Schema.XsdDuration:TryFormat(System.Span`1[ushort],byref,int):ubyte:this (FullOpts)
11 (2.93 % of base) : 31537.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
11 (2.93 % of base) : 23905.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
10 (3.21 % of base) : 2990.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
Top method improvements (bytes):
-54 (-4.17 % of base) : 24463.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (FullOpts)
-44 (-1.62 % of base) : 14233.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
-44 (-1.62 % of base) : 2588.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
-30 (-0.99 % of base) : 28582.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
-25 (-1.75 % of base) : 10551.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
-21 (-2.44 % of base) : 24596.dasm - System.Net.WebUtility:UrlDecodeInternal(System.String,System.Text.Encoding):System.String (FullOpts)
-20 (-1.42 % of base) : 11255.dasm - System.Buffers.Text.Utf8Parser:TryParseNumber(System.ReadOnlySpan`1[ubyte],byref,byref,int,byref):ubyte (FullOpts)
-20 (-1.42 % of base) : 18940.dasm - System.Buffers.Text.Utf8Parser:TryParseNumber(System.ReadOnlySpan`1[ubyte],byref,byref,int,byref):ubyte (FullOpts)
-16 (-4.47 % of base) : 7478.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-14 (-2.03 % of base) : 34897.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (FullOpts)
-14 (-0.95 % of base) : 12335.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
-14 (-0.95 % of base) : 581.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
-13 (-1.23 % of base) : 27103.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryInsert(System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon],ubyte):ubyte:this (FullOpts)
-13 (-0.39 % of base) : 32063.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
-13 (-0.39 % of base) : 29683.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
-11 (-0.45 % of base) : 26568.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:AddSyntaxTrees(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxTree]):Microsoft.CodeAnalysis.CSharp.CSharpCompilation:this (FullOpts)
-10 (-0.84 % of base) : 31702.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-8 (-0.49 % of base) : 31670.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
-8 (-0.49 % of base) : 4045.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
-7 (-1.62 % of base) : 23773.dasm - System.Tests.Perf_Int32:TryFormat(int):ubyte:this (FullOpts)
Top method regressions (percentages):
82 (6.39 % of base) : 3440.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
10 (3.21 % of base) : 2990.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.21 % of base) : 12639.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
11 (2.93 % of base) : 31537.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
11 (2.93 % of base) : 23905.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
128 (2.90 % of base) : 33496.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
128 (2.81 % of base) : 9234.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
7 (1.92 % of base) : 10410.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
7 (1.92 % of base) : 31316.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
83 (1.89 % of base) : 17319.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
83 (1.89 % of base) : 1988.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
77 (1.89 % of base) : 21752.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
77 (1.89 % of base) : 32050.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
9 (1.80 % of base) : 5177.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
8 (1.44 % of base) : 23527.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)
2 (1.20 % of base) : 36126.dasm - V8.Crypto.ListX`1[int]:set_Item(int,int):this (FullOpts)
2 (1.18 % of base) : 36172.dasm - V8.Crypto.ListX`1[ubyte]:set_Item(int,ubyte):this (FullOpts)
21 (1.15 % of base) : 34874.dasm - MessagePack.Formatters.MicroBenchmarks_Serializers_ActiveOrUpcomingEventFormatter2:Deserialize(ubyte[],int,MessagePack.IFormatterResolver,byref):MicroBenchmarks.Serializers.ActiveOrUpcomingEvent:this (FullOpts)
14 (0.99 % of base) : 23436.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (FullOpts)
14 (0.99 % of base) : 24007.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (FullOpts)
Top method improvements (percentages):
-16 (-4.47 % of base) : 7478.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-54 (-4.17 % of base) : 24463.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (FullOpts)
-21 (-2.44 % of base) : 24596.dasm - System.Net.WebUtility:UrlDecodeInternal(System.String,System.Text.Encoding):System.String (FullOpts)
-14 (-2.03 % of base) : 34897.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (FullOpts)
-25 (-1.75 % of base) : 10551.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
-7 (-1.62 % of base) : 23773.dasm - System.Tests.Perf_Int32:TryFormat(int):ubyte:this (FullOpts)
-44 (-1.62 % of base) : 14233.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
-44 (-1.62 % of base) : 2588.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
-20 (-1.42 % of base) : 11255.dasm - System.Buffers.Text.Utf8Parser:TryParseNumber(System.ReadOnlySpan`1[ubyte],byref,byref,int,byref):ubyte (FullOpts)
-20 (-1.42 % of base) : 18940.dasm - System.Buffers.Text.Utf8Parser:TryParseNumber(System.ReadOnlySpan`1[ubyte],byref,byref,int,byref):ubyte (FullOpts)
-13 (-1.23 % of base) : 27103.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryInsert(System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon],ubyte):ubyte:this (FullOpts)
-4 (-1.20 % of base) : 30518.dasm - System.Tests.Perf_UInt32:TryFormat(uint):ubyte:this (FullOpts)
-4 (-1.20 % of base) : 32607.dasm - System.Tests.Perf_UInt32:TryFormat(uint):ubyte:this (FullOpts)
-30 (-0.99 % of base) : 28582.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
-14 (-0.95 % of base) : 12335.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
-14 (-0.95 % of base) : 581.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
-5 (-0.85 % of base) : 6400.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
-10 (-0.84 % of base) : 31702.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-4 (-0.60 % of base) : 21830.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteISO8601StyleDateTime():this (FullOpts)
-8 (-0.49 % of base) : 31670.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
benchmarks.run_pgo.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 34353258 (overridden on cmd)
Total bytes of diff: 34381223 (overridden on cmd)
Total bytes of delta: 27965 (0.08 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
198 : 64336.dasm (17.82 % of base)
184 : 68141.dasm (16.28 % of base)
182 : 70971.dasm (17.15 % of base)
181 : 65842.dasm (17.08 % of base)
133 : 7970.dasm (9.40 % of base)
121 : 107773.dasm (2.92 % of base)
115 : 97615.dasm (2.77 % of base)
106 : 89036.dasm (2.25 % of base)
106 : 89159.dasm (2.30 % of base)
106 : 32005.dasm (2.25 % of base)
96 : 84331.dasm (3.34 % of base)
81 : 105724.dasm (14.14 % of base)
81 : 106853.dasm (14.14 % of base)
81 : 107901.dasm (14.14 % of base)
81 : 107921.dasm (14.14 % of base)
81 : 29722.dasm (14.14 % of base)
81 : 106543.dasm (14.14 % of base)
77 : 107700.dasm (2.58 % of base)
73 : 96296.dasm (12.56 % of base)
73 : 106891.dasm (12.56 % of base)
Top file improvements (bytes):
-184 : 96365.dasm (-4.23 % of base)
-92 : 92265.dasm (-2.62 % of base)
-88 : 74767.dasm (-2.51 % of base)
-67 : 72866.dasm (-1.09 % of base)
-64 : 58202.dasm (-3.41 % of base)
-57 : 58206.dasm (-3.14 % of base)
-49 : 72962.dasm (-2.53 % of base)
-46 : 49527.dasm (-2.53 % of base)
-46 : 87622.dasm (-4.80 % of base)
-43 : 93024.dasm (-2.50 % of base)
-43 : 46883.dasm (-2.50 % of base)
-40 : 97709.dasm (-13.51 % of base)
-39 : 86334.dasm (-3.66 % of base)
-39 : 93278.dasm (-6.28 % of base)
-38 : 32126.dasm (-4.49 % of base)
-38 : 52446.dasm (-2.01 % of base)
-38 : 70102.dasm (-2.20 % of base)
-38 : 88504.dasm (-2.20 % of base)
-38 : 94739.dasm (-4.26 % of base)
-37 : 19777.dasm (-5.71 % of base)
85 total files with Code Size differences (54 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
198 (17.82 % of base) : 64336.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1-OSR)
184 (16.28 % of base) : 68141.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1-OSR)
182 (17.15 % of base) : 70971.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
181 (17.08 % of base) : 65842.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
133 (9.40 % of base) : 7970.dasm - System.RuntimeType:GetConstructorCandidates(System.String,int,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.ConstructorInfo]:this (Tier1)
121 (2.92 % of base) : 107773.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
115 (2.77 % of base) : 97615.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
106 (2.25 % of base) : 89036.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
106 (2.30 % of base) : 89159.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
106 (2.25 % of base) : 32005.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
96 (3.34 % of base) : 84331.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1)
81 (14.14 % of base) : 105724.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
81 (14.14 % of base) : 106853.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
81 (14.14 % of base) : 107901.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
81 (14.14 % of base) : 107921.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
81 (14.14 % of base) : 29722.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
81 (14.14 % of base) : 106543.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
77 (2.58 % of base) : 107700.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
73 (12.56 % of base) : 96296.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
73 (12.56 % of base) : 106891.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
Top method improvements (bytes):
-184 (-4.23 % of base) : 96365.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
-92 (-2.62 % of base) : 92265.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
-88 (-2.51 % of base) : 74767.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
-67 (-1.09 % of base) : 72866.dasm - LUDecomp:Run():double:this (Tier1)
-64 (-3.41 % of base) : 58202.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1-OSR)
-57 (-3.14 % of base) : 58206.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1-OSR)
-49 (-2.53 % of base) : 72962.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.__Canon],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.__Canon] (Tier1-OSR)
-46 (-4.80 % of base) : 87622.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier1-OSR)
-46 (-2.53 % of base) : 49527.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Tier1)
-43 (-2.50 % of base) : 93024.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
-43 (-2.50 % of base) : 46883.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
-40 (-13.51 % of base) : 97709.dasm - System.Numerics.BigIntegerCalculator:Add(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
-39 (-6.28 % of base) : 93278.dasm - BenchmarksGame.Fasta_2:MakeRandomFasta(System.String,System.String,BenchmarksGame.Fasta_2+Frequency[],int,System.IO.Stream) (Tier1-OSR)
-39 (-3.66 % of base) : 86334.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1)
-38 (-4.26 % of base) : 94739.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Rent(int):System.__Canon[]:this (Tier1)
-38 (-4.49 % of base) : 32126.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (Tier1)
-38 (-2.01 % of base) : 52446.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1-OSR)
-38 (-2.20 % of base) : 70102.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
-38 (-2.20 % of base) : 88504.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
-37 (-5.71 % of base) : 19777.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
Top method regressions (percentages):
198 (17.82 % of base) : 64336.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1-OSR)
182 (17.15 % of base) : 70971.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
181 (17.08 % of base) : 65842.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
184 (16.28 % of base) : 68141.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1-OSR)
81 (14.14 % of base) : 105724.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
81 (14.14 % of base) : 106853.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
81 (14.14 % of base) : 107901.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
81 (14.14 % of base) : 107921.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
81 (14.14 % of base) : 29722.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
81 (14.14 % of base) : 106543.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
24 (14.12 % of base) : 101959.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
11 (13.25 % of base) : 91041.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
11 (13.25 % of base) : 85527.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
57 (12.58 % of base) : 63688.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
57 (12.58 % of base) : 64876.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
57 (12.58 % of base) : 71288.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
57 (12.58 % of base) : 84208.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
57 (12.58 % of base) : 65344.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
57 (12.58 % of base) : 87768.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
57 (12.58 % of base) : 93696.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
Top method improvements (percentages):
-15 (-24.19 % of base) : 91602.dasm - Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
-40 (-13.51 % of base) : 97709.dasm - System.Numerics.BigIntegerCalculator:Add(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
-10 (-8.26 % of base) : 98082.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-26 (-7.60 % of base) : 62519.dasm - AssignJagged:calc_minimum_costs(int[][]) (Tier1-OSR)
-36 (-6.86 % of base) : 96825.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-11 (-6.29 % of base) : 88560.dasm - System.Collections.Concurrent.AddRemoveFromDifferentThreads`1+<>c__DisplayClass10_0[int]:<SetupConcurrentQueueIteration>b__0():this (Tier1-OSR)
-39 (-6.28 % of base) : 93278.dasm - BenchmarksGame.Fasta_2:MakeRandomFasta(System.String,System.String,BenchmarksGame.Fasta_2+Frequency[],int,System.IO.Stream) (Tier1-OSR)
-14 (-5.96 % of base) : 93913.dasm - BenchmarksGame.KNucleotide:KFrequency(int,int):this (Tier1-OSR)
-27 (-5.84 % of base) : 100688.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-27 (-5.84 % of base) : 101436.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-27 (-5.84 % of base) : 90569.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-27 (-5.84 % of base) : 97882.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-27 (-5.84 % of base) : 105172.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-27 (-5.84 % of base) : 93581.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-27 (-5.84 % of base) : 91482.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-10 (-5.78 % of base) : 29393.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-10 (-5.78 % of base) : 72673.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-10 (-5.78 % of base) : 64086.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-10 (-5.78 % of base) : 92121.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-10 (-5.78 % of base) : 98997.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
benchmarks.run_tiered.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 19449443 (overridden on cmd)
Total bytes of diff: 19449570 (overridden on cmd)
Total bytes of delta: 127 (0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
128 : 18791.dasm (2.81 % of base)
128 : 72423.dasm (2.81 % of base)
128 : 73266.dasm (2.90 % of base)
23 : 16095.dasm (3.45 % of base)
23 : 48350.dasm (0.75 % of base)
13 : 48314.dasm (0.45 % of base)
12 : 79553.dasm (0.24 % of base)
10 : 74014.dasm (3.21 % of base)
7 : 74366.dasm (0.60 % of base)
3 : 81303.dasm (0.51 % of base)
3 : 56839.dasm (0.36 % of base)
3 : 67475.dasm (0.36 % of base)
2 : 28598.dasm (0.63 % of base)
2 : 2939.dasm (0.10 % of base)
2 : 35043.dasm (0.10 % of base)
2 : 79122.dasm (0.19 % of base)
1 : 58992.dasm (0.14 % of base)
Top file improvements (bytes):
-54 : 46318.dasm (-4.17 % of base)
-44 : 36105.dasm (-1.62 % of base)
-44 : 9897.dasm (-1.62 % of base)
-25 : 45622.dasm (-1.75 % of base)
-25 : 21491.dasm (-1.75 % of base)
-19 : 65941.dasm (-1.78 % of base)
-14 : 36717.dasm (-0.95 % of base)
-14 : 18720.dasm (-0.95 % of base)
-13 : 61708.dasm (-0.39 % of base)
-13 : 68143.dasm (-0.38 % of base)
-13 : 56318.dasm (-1.23 % of base)
-13 : 65943.dasm (-1.23 % of base)
-10 : 67783.dasm (-0.84 % of base)
-5 : 12734.dasm (-1.04 % of base)
-5 : 2868.dasm (-1.43 % of base)
-5 : 34511.dasm (-1.43 % of base)
-5 : 46324.dasm (-1.04 % of base)
-5 : 78147.dasm (-0.18 % of base)
-4 : 42413.dasm (-0.41 % of base)
-4 : 10749.dasm (-0.41 % of base)
43 total files with Code Size differences (26 improved, 17 regressed), 22 unchanged.
Top method regressions (bytes):
128 (2.81 % of base) : 18791.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
128 (2.81 % of base) : 72423.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
128 (2.90 % of base) : 73266.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
23 (0.75 % of base) : 48350.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
23 (3.45 % of base) : 16095.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
13 (0.45 % of base) : 48314.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
12 (0.24 % of base) : 79553.dasm - System.Xml.Schema.XsdDuration:TryFormat(System.Span`1[ushort],byref,int):ubyte:this (Tier0-FullOpts)
10 (3.21 % of base) : 74014.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier1)
7 (0.60 % of base) : 74366.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (Tier0-FullOpts)
3 (0.36 % of base) : 56839.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (Tier1)
3 (0.36 % of base) : 67475.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (Tier1)
3 (0.51 % of base) : 81303.dasm - System.Buffers.Text.Base64:DecodeFromUtf8InPlace(System.Span`1[ubyte],byref,ubyte):int (Tier1-OSR)
2 (0.19 % of base) : 79122.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1)
2 (0.10 % of base) : 2939.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
2 (0.10 % of base) : 35043.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
2 (0.63 % of base) : 28598.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:<ToList>g__AppendToList|25_0(System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]],int) (Tier1)
1 (0.14 % of base) : 58992.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1)
Top method improvements (bytes):
-54 (-4.17 % of base) : 46318.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1)
-44 (-1.62 % of base) : 36105.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (Tier1)
-44 (-1.62 % of base) : 9897.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (Tier1)
-25 (-1.75 % of base) : 45622.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
-25 (-1.75 % of base) : 21491.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
-19 (-1.78 % of base) : 65941.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.__Canon]:TryInsert(System.ReadOnlyMemory`1[ushort],System.__Canon,ubyte):ubyte:this (Tier1)
-14 (-0.95 % of base) : 36717.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
-14 (-0.95 % of base) : 18720.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
-13 (-1.23 % of base) : 56318.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryInsert(System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon],ubyte):ubyte:this (Tier1)
-13 (-1.23 % of base) : 65943.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryInsert(System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon],ubyte):ubyte:this (Tier1)
-13 (-0.39 % of base) : 61708.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (Tier0-FullOpts)
-13 (-0.38 % of base) : 68143.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (Tier0-FullOpts)
-10 (-0.84 % of base) : 67783.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-5 (-1.04 % of base) : 12734.dasm - System.Int32:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier1)
-5 (-1.04 % of base) : 46324.dasm - System.Int32:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier1)
-5 (-0.18 % of base) : 78147.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
-5 (-1.43 % of base) : 2868.dasm - System.UInt32:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier1)
-5 (-1.43 % of base) : 34511.dasm - System.UInt32:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier1)
-4 (-0.41 % of base) : 42413.dasm - System.IPv4AddressHelper:ParseCanonicalName(System.String,int,int,byref):System.String (Tier0-FullOpts)
-4 (-0.41 % of base) : 10749.dasm - System.IPv4AddressHelper:ParseCanonicalName(System.String,int,int,byref):System.String (Tier0-FullOpts)
Top method regressions (percentages):
23 (3.45 % of base) : 16095.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
10 (3.21 % of base) : 74014.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier1)
128 (2.90 % of base) : 73266.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
128 (2.81 % of base) : 18791.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
128 (2.81 % of base) : 72423.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
23 (0.75 % of base) : 48350.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
2 (0.63 % of base) : 28598.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:<ToList>g__AppendToList|25_0(System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]],int) (Tier1)
7 (0.60 % of base) : 74366.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (Tier0-FullOpts)
3 (0.51 % of base) : 81303.dasm - System.Buffers.Text.Base64:DecodeFromUtf8InPlace(System.Span`1[ubyte],byref,ubyte):int (Tier1-OSR)
13 (0.45 % of base) : 48314.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
3 (0.36 % of base) : 56839.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (Tier1)
3 (0.36 % of base) : 67475.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (Tier1)
12 (0.24 % of base) : 79553.dasm - System.Xml.Schema.XsdDuration:TryFormat(System.Span`1[ushort],byref,int):ubyte:this (Tier0-FullOpts)
2 (0.19 % of base) : 79122.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1)
1 (0.14 % of base) : 58992.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1)
2 (0.10 % of base) : 35043.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
2 (0.10 % of base) : 2939.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
Top method improvements (percentages):
-54 (-4.17 % of base) : 46318.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1)
-19 (-1.78 % of base) : 65941.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.__Canon]:TryInsert(System.ReadOnlyMemory`1[ushort],System.__Canon,ubyte):ubyte:this (Tier1)
-25 (-1.75 % of base) : 45622.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
-25 (-1.75 % of base) : 21491.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
-44 (-1.62 % of base) : 36105.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (Tier1)
-44 (-1.62 % of base) : 9897.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (Tier1)
-5 (-1.43 % of base) : 2868.dasm - System.UInt32:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier1)
-5 (-1.43 % of base) : 34511.dasm - System.UInt32:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier1)
-13 (-1.23 % of base) : 56318.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryInsert(System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon],ubyte):ubyte:this (Tier1)
-13 (-1.23 % of base) : 65943.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryInsert(System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon],ubyte):ubyte:this (Tier1)
-5 (-1.04 % of base) : 12734.dasm - System.Int32:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier1)
-5 (-1.04 % of base) : 46324.dasm - System.Int32:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier1)
-14 (-0.95 % of base) : 36717.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
-14 (-0.95 % of base) : 18720.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
-10 (-0.84 % of base) : 67783.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-2 (-0.79 % of base) : 66331.dasm - System.Threading.ReaderWriterLockSlim:GetThreadRWCount(ubyte):System.Threading.ReaderWriterCount:this (Tier1)
-1 (-0.46 % of base) : 35083.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (Tier1)
-1 (-0.46 % of base) : 3506.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (Tier1)
-2 (-0.43 % of base) : 81992.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this (Tier1)
-2 (-0.43 % of base) : 20083.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this (Tier1)
coreclr_tests.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 296148172 (overridden on cmd)
Total bytes of diff: 296148929 (overridden on cmd)
Total bytes of delta: 757 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
147 : 166814.dasm (10.14 % of base)
147 : 31016.dasm (10.14 % of base)
53 : 447876.dasm (3.80 % of base)
49 : 292031.dasm (1.53 % of base)
49 : 312852.dasm (1.53 % of base)
32 : 439628.dasm (15.38 % of base)
32 : 427695.dasm (3.14 % of base)
32 : 489628.dasm (3.14 % of base)
31 : 318580.dasm (3.02 % of base)
31 : 428497.dasm (2.40 % of base)
30 : 441298.dasm (4.54 % of base)
29 : 229184.dasm (2.60 % of base)
29 : 418978.dasm (2.56 % of base)
29 : 429264.dasm (2.82 % of base)
29 : 430910.dasm (12.45 % of base)
29 : 435638.dasm (12.45 % of base)
29 : 482121.dasm (4.39 % of base)
29 : 369105.dasm (12.55 % of base)
29 : 417928.dasm (12.45 % of base)
29 : 456257.dasm (12.45 % of base)
Top file improvements (bytes):
-50 : 230781.dasm (-4.03 % of base)
-50 : 433920.dasm (-4.03 % of base)
-46 : 424742.dasm (-4.77 % of base)
-42 : 455262.dasm (-3.27 % of base)
-41 : 239781.dasm (-0.58 % of base)
-37 : 444619.dasm (-5.71 % of base)
-35 : 489455.dasm (-1.63 % of base)
-35 : 489527.dasm (-1.65 % of base)
-30 : 190125.dasm (-0.97 % of base)
-30 : 240940.dasm (-0.97 % of base)
-25 : 481494.dasm (-4.74 % of base)
-23 : 189006.dasm (-0.44 % of base)
-22 : 447890.dasm (-2.53 % of base)
-22 : 71443.dasm (-3.85 % of base)
-22 : 71468.dasm (-3.85 % of base)
-22 : 86226.dasm (-3.85 % of base)
-22 : 416509.dasm (-1.45 % of base)
-20 : 433404.dasm (-0.77 % of base)
-18 : 415954.dasm (-3.76 % of base)
-18 : 416012.dasm (-3.76 % of base)
69 total files with Code Size differences (34 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
147 (10.14 % of base) : 166814.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
147 (10.14 % of base) : 31016.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
53 (3.80 % of base) : 447876.dasm - System.PackedSpanHelpers:IndexOfAny[System.SpanHelpers+DontNegate`1[short]](byref,short,short,int):int (Tier1)
49 (1.53 % of base) : 292031.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.RuntimeFunctionsTableNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
49 (1.53 % of base) : 312852.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.RuntimeFunctionsTableNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
32 (3.14 % of base) : 427695.dasm - System.PackedSpanHelpers:IndexOfAny[System.SpanHelpers+DontNegate`1[short]](byref,short,short,int):int (Tier1)
32 (3.14 % of base) : 489628.dasm - System.PackedSpanHelpers:IndexOfAny[System.SpanHelpers+DontNegate`1[short]](byref,short,short,int):int (Tier1)
32 (15.38 % of base) : 439628.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
31 (3.02 % of base) : 318580.dasm - System.PackedSpanHelpers:IndexOfAny[System.SpanHelpers+DontNegate`1[short]](byref,short,short,int):int (Tier1)
31 (2.40 % of base) : 428497.dasm - System.PackedSpanHelpers:IndexOfAny[System.SpanHelpers+DontNegate`1[short]](byref,short,short,int):int (Tier1)
30 (4.54 % of base) : 441298.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
29 (2.60 % of base) : 229184.dasm - JitTest_lcsvalbox_lcs_cs.LCS:findLCS(System.Object[,,,],ushort[][],int[]) (FullOpts)
29 (2.56 % of base) : 418978.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
29 (2.82 % of base) : 429264.dasm - System.PackedSpanHelpers:IndexOfAny[System.SpanHelpers+DontNegate`1[short]](byref,short,short,int):int (Tier1)
29 (12.45 % of base) : 430910.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (12.45 % of base) : 435638.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (12.55 % of base) : 369105.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (12.45 % of base) : 417928.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (12.45 % of base) : 456257.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (4.39 % of base) : 482121.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
Top method improvements (bytes):
-50 (-4.03 % of base) : 230781.dasm - Test_fgloop.EHTest:f1(int,long,long,int,long):int (FullOpts)
-50 (-4.03 % of base) : 433920.dasm - Test_fgloop.EHTest:f1(int,long,long,int,long):int (Tier0-FullOpts)
-46 (-4.77 % of base) : 424742.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier1-OSR)
-42 (-3.27 % of base) : 455262.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (Tier1)
-41 (-0.58 % of base) : 239781.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1055_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
-37 (-5.71 % of base) : 444619.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
-35 (-1.63 % of base) : 489455.dasm - System.Diagnostics.AsyncStreamReader+<ReadBufferAsync>d__16:MoveNext():this (Tier1)
-35 (-1.65 % of base) : 489527.dasm - System.Diagnostics.AsyncStreamReader+<ReadBufferAsync>d__16:MoveNext():this (Tier1)
-30 (-0.97 % of base) : 190125.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
-30 (-0.97 % of base) : 240940.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
-25 (-4.74 % of base) : 481494.dasm - TestSet:.ctor(int,int):this (Tier1-OSR)
-23 (-0.44 % of base) : 189006.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:GetMergedGlobalAliasesAndUsings(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+MergedGlobalAliasesAndUsings:this (FullOpts)
-22 (-3.85 % of base) : 71443.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorCreate__CreateScalarDouble:ValidateResult(double[],double,System.String):this (FullOpts)
-22 (-3.85 % of base) : 71468.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorCreate__CreateScalarSingle:ValidateResult(float[],float,System.String):this (FullOpts)
-22 (-3.85 % of base) : 86226.dasm - JIT.HardwareIntrinsics.General._Vector64.VectorCreate__CreateScalarSingle:ValidateResult(float[],float,System.String):this (FullOpts)
-22 (-2.53 % of base) : 447890.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
-22 (-1.45 % of base) : 416509.dasm - System.Reflection.TypeNameParser:GetTypeHelper(ulong,System.Reflection.RuntimeAssembly,ubyte,ubyte):System.RuntimeType (Instrumented Tier1)
-20 (-0.77 % of base) : 433404.dasm - System.Decimal+DecCalc:VarDecDiv(byref,byref) (Instrumented Tier1)
-18 (-0.45 % of base) : 237853.dasm - DefaultNamespace.RanCollect:runTest(int,int,int,int):ubyte:this (FullOpts)
-18 (-3.73 % of base) : 415945.dasm - SizeParamIndex.PInvoke.Helper:EqualArray[short](short[],int,short[],int):ubyte (Tier1-OSR)
Top method regressions (percentages):
28 (16.47 % of base) : 490049.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
32 (15.38 % of base) : 439628.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
29 (12.55 % of base) : 369105.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (12.45 % of base) : 430910.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (12.45 % of base) : 435638.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (12.45 % of base) : 417928.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
29 (12.45 % of base) : 456257.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
147 (10.14 % of base) : 166814.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
147 (10.14 % of base) : 31016.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
21 (9.01 % of base) : 422642.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
21 (9.01 % of base) : 488180.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
21 (9.01 % of base) : 489413.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
21 (9.01 % of base) : 489482.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
21 (9.01 % of base) : 418977.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
21 (9.01 % of base) : 462974.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
21 (9.01 % of base) : 468227.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
21 (9.01 % of base) : 488115.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
10 (5.71 % of base) : 441942.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
11 (5.67 % of base) : 427899.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
9 (5.39 % of base) : 425090.dasm - BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
Top method improvements (percentages):
-37 (-5.71 % of base) : 444619.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
-13 (-5.63 % of base) : 422907.dasm - Benchstone.BenchI.CSieve:Bench():ubyte (Tier1-OSR)
-6 (-5.31 % of base) : 416484.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-46 (-4.77 % of base) : 424742.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier1-OSR)
-25 (-4.74 % of base) : 481494.dasm - TestSet:.ctor(int,int):this (Tier1-OSR)
-5 (-4.20 % of base) : 438998.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-5 (-4.20 % of base) : 439192.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-5 (-4.20 % of base) : 440227.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-5 (-4.20 % of base) : 482044.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-5 (-4.20 % of base) : 244792.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-5 (-4.20 % of base) : 440175.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-5 (-4.20 % of base) : 491869.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-50 (-4.03 % of base) : 230781.dasm - Test_fgloop.EHTest:f1(int,long,long,int,long):int (FullOpts)
-50 (-4.03 % of base) : 433920.dasm - Test_fgloop.EHTest:f1(int,long,long,int,long):int (Tier0-FullOpts)
-17 (-3.99 % of base) : 425713.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
-22 (-3.85 % of base) : 71443.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorCreate__CreateScalarDouble:ValidateResult(double[],double,System.String):this (FullOpts)
-22 (-3.85 % of base) : 71468.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorCreate__CreateScalarSingle:ValidateResult(float[],float,System.String):this (FullOpts)
-22 (-3.85 % of base) : 86226.dasm - JIT.HardwareIntrinsics.General._Vector64.VectorCreate__CreateScalarSingle:ValidateResult(float[],float,System.String):this (FullOpts)
-18 (-3.76 % of base) : 415954.dasm - SizeParamIndex.PInvoke.Helper:EqualArray[ushort](ushort[],int,ushort[],int):ubyte (Tier1-OSR)
-18 (-3.76 % of base) : 416012.dasm - SizeParamIndex.ReversePInvoke.Helper:EqualArray[ushort](ushort[],int,ushort[],int):ubyte (Tier1-OSR)
libraries.crossgen2.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 44929099 (overridden on cmd)
Total bytes of diff: 44929307 (overridden on cmd)
Total bytes of delta: 208 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
135 : 108526.dasm (2.23 % of base)
75 : 98642.dasm (2.31 % of base)
65 : 171789.dasm (2.71 % of base)
52 : 66520.dasm (1.12 % of base)
40 : 181858.dasm (0.73 % of base)
39 : 29532.dasm (4.50 % of base)
39 : 29533.dasm (4.80 % of base)
38 : 261442.dasm (5.07 % of base)
37 : 229503.dasm (0.40 % of base)
29 : 115235.dasm (0.67 % of base)
28 : 217450.dasm (1.26 % of base)
28 : 30121.dasm (0.85 % of base)
28 : 151874.dasm (2.74 % of base)
28 : 93476.dasm (2.74 % of base)
26 : 151884.dasm (4.09 % of base)
26 : 93486.dasm (4.05 % of base)
24 : 151264.dasm (2.64 % of base)
24 : 92713.dasm (2.64 % of base)
20 : 94849.dasm (1.80 % of base)
19 : 39456.dasm (4.30 % of base)
Top file improvements (bytes):
-278 : 1735.dasm (-0.43 % of base)
-64 : 25623.dasm (-4.20 % of base)
-41 : 93159.dasm (-0.78 % of base)
-36 : 37384.dasm (-1.24 % of base)
-34 : 174632.dasm (-1.62 % of base)
-32 : 257975.dasm (-1.38 % of base)
-32 : 38822.dasm (-1.19 % of base)
-30 : 16315.dasm (-1.87 % of base)
-29 : 152745.dasm (-4.28 % of base)
-29 : 234053.dasm (-4.28 % of base)
-28 : 129740.dasm (-1.71 % of base)
-28 : 68014.dasm (-1.71 % of base)
-25 : 243324.dasm (-1.35 % of base)
-16 : 94601.dasm (-0.32 % of base)
-16 : 245271.dasm (-0.65 % of base)
-16 : 31375.dasm (-0.60 % of base)
-15 : 94834.dasm (-0.54 % of base)
-14 : 234546.dasm (-2.21 % of base)
-14 : 60313.dasm (-0.29 % of base)
-13 : 94852.dasm (-0.28 % of base)
55 total files with Code Size differences (27 improved, 28 regressed), 20 unchanged.
Top method regressions (bytes):
135 (2.23 % of base) : 108526.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
75 (2.31 % of base) : 98642.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:CheckDeclarationNameAndTypeParameters(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref):this (FullOpts)
65 (2.71 % of base) : 171789.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (FullOpts)
52 (1.12 % of base) : 66520.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|232_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
40 (0.73 % of base) : 181858.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
39 (4.80 % of base) : 29533.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
39 (4.50 % of base) : 29532.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
38 (5.07 % of base) : 261442.dasm - System.Linq.Parallel.GroupJoinQueryOperator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:WrapPartitionedStreamHelper[int,System.__Canon](System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],int],System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.__Canon],System.Linq.Parallel.IPartitionedStreamRecipient`1[System.__Canon],int,System.Threading.CancellationToken):this (FullOpts)
37 (0.40 % of base) : 229503.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
29 (0.67 % of base) : 115235.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
28 (2.74 % of base) : 151874.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
28 (2.74 % of base) : 93476.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
28 (0.85 % of base) : 30121.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (FullOpts)
28 (1.26 % of base) : 217450.dasm - System.Xml.Serialization.ReflectionXmlSerializationWriter:GenerateMembersElement(System.Object,System.Xml.Serialization.XmlMembersMapping):this (FullOpts)
26 (4.09 % of base) : 151884.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:AddError[System.__Canon](System.__Canon,int,System.Object[]):System.__Canon:this (FullOpts)
26 (4.05 % of base) : 93486.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:AddError[System.__Canon](System.__Canon,int,System.Object[]):System.__Canon:this (FullOpts)
24 (2.64 % of base) : 151264.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:HadBadArguments(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Binder,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.Location,uint,ubyte):ubyte:this (FullOpts)
24 (2.64 % of base) : 92713.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:HadBadArguments(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Binder,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.Location,uint,ubyte):ubyte:this (FullOpts)
20 (1.80 % of base) : 94849.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindObjectCreationExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.BoundWithLValueExpressionPlaceholder):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
19 (4.30 % of base) : 39456.dasm - Microsoft.Diagnostics.Utilities.XmlUtilities:XmlEscape(System.Object,ubyte):System.String (FullOpts)
Top method improvements (bytes):
-278 (-0.43 % of base) : 1735.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (FullOpts)
-64 (-4.20 % of base) : 25623.dasm - System.Buffers.Text.Utf8Parser:TryParseNumber(System.ReadOnlySpan`1[ubyte],byref,byref,int,byref):ubyte (FullOpts)
-41 (-0.78 % of base) : 93159.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
-36 (-1.24 % of base) : 37384.dasm - System.Data.XSDSchema:HandleElementColumn(System.Xml.Schema.XmlSchemaElement,System.Data.DataTable,ubyte):this (FullOpts)
-34 (-1.62 % of base) : 174632.dasm - System.DirectoryServices.AccountManagement.ADStoreCtx:PushChangesToNative(System.DirectoryServices.AccountManagement.Principal):System.Object:this (FullOpts)
-32 (-1.19 % of base) : 38822.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CanMatchArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
-32 (-1.38 % of base) : 257975.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteArray(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):this (FullOpts)
-30 (-1.87 % of base) : 16315.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
-29 (-4.28 % of base) : 152745.dasm - System.Data.ProviderBase.DbMetaDataFactory:CloneAndFilterCollection(System.String,System.String[]):System.Data.DataTable:this (FullOpts)
-29 (-4.28 % of base) : 234053.dasm - System.Data.ProviderBase.DbMetaDataFactory:CloneAndFilterCollection(System.String,System.String[]):System.Data.DataTable:this (FullOpts)
-28 (-1.71 % of base) : 129740.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
-28 (-1.71 % of base) : 68014.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
-25 (-1.35 % of base) : 243324.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
-16 (-0.32 % of base) : 94601.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:MakeVarianceConversionSuggestion(int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref,ubyte):ubyte:this (FullOpts)
-16 (-0.65 % of base) : 245271.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
-16 (-0.60 % of base) : 31375.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
-15 (-0.54 % of base) : 94834.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindLateBoundInvocation(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-14 (-0.29 % of base) : 60313.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedStringHandlerInMemberCall(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-14 (-2.21 % of base) : 234546.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
-13 (-0.28 % of base) : 94852.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindObjectCreationExpression(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.BoundObjectInitializerExpressionBase,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
Top method regressions (percentages):
38 (5.07 % of base) : 261442.dasm - System.Linq.Parallel.GroupJoinQueryOperator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:WrapPartitionedStreamHelper[int,System.__Canon](System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],int],System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.__Canon],System.Linq.Parallel.IPartitionedStreamRecipient`1[System.__Canon],int,System.Threading.CancellationToken):this (FullOpts)
39 (4.80 % of base) : 29533.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
39 (4.50 % of base) : 29532.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
19 (4.30 % of base) : 39456.dasm - Microsoft.Diagnostics.Utilities.XmlUtilities:XmlEscape(System.Object,ubyte):System.String (FullOpts)
26 (4.09 % of base) : 151884.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:AddError[System.__Canon](System.__Canon,int,System.Object[]):System.__Canon:this (FullOpts)
26 (4.05 % of base) : 93486.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:AddError[System.__Canon](System.__Canon,int,System.Object[]):System.__Canon:this (FullOpts)
14 (4.05 % of base) : 272519.dasm - System.Text.Encodings.Web.TextEncoder:TryEncodeUnicodeScalarUtf8(uint,System.Span`1[ushort],System.Span`1[ubyte],byref):ubyte:this (FullOpts)
13 (3.36 % of base) : 251260.dasm - System.DirectoryServices.Protocols.LdapConnection:ConstructAttribute(long,long):System.DirectoryServices.Protocols.DirectoryAttribute:this (FullOpts)
10 (3.21 % of base) : 26558.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.21 % of base) : 271411.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
11 (2.85 % of base) : 18734.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
7 (2.79 % of base) : 221087.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
28 (2.74 % of base) : 151874.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
28 (2.74 % of base) : 93476.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
65 (2.71 % of base) : 171789.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (FullOpts)
24 (2.64 % of base) : 151264.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:HadBadArguments(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Binder,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.Location,uint,ubyte):ubyte:this (FullOpts)
24 (2.64 % of base) : 92713.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:HadBadArguments(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Binder,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.Location,uint,ubyte):ubyte:this (FullOpts)
75 (2.31 % of base) : 98642.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:CheckDeclarationNameAndTypeParameters(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref):this (FullOpts)
135 (2.23 % of base) : 108526.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
5 (2.05 % of base) : 121378.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:PeekAheadFor[System.__Canon](System.Func`3[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken,System.__Canon,ubyte],System.__Canon,byref):int:this (FullOpts)
Top method improvements (percentages):
-29 (-4.28 % of base) : 152745.dasm - System.Data.ProviderBase.DbMetaDataFactory:CloneAndFilterCollection(System.String,System.String[]):System.Data.DataTable:this (FullOpts)
-29 (-4.28 % of base) : 234053.dasm - System.Data.ProviderBase.DbMetaDataFactory:CloneAndFilterCollection(System.String,System.String[]):System.Data.DataTable:this (FullOpts)
-64 (-4.20 % of base) : 25623.dasm - System.Buffers.Text.Utf8Parser:TryParseNumber(System.ReadOnlySpan`1[ubyte],byref,byref,int,byref):ubyte (FullOpts)
-12 (-3.70 % of base) : 28654.dasm - System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:GetCount(System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon],int,System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon],int):long (FullOpts)
-5 (-2.79 % of base) : 38952.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution+OperatorCaches+FixedList:Lookup(System.Type,System.Type,byref,byref):ubyte:this (FullOpts)
-8 (-2.26 % of base) : 25408.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-14 (-2.21 % of base) : 234546.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
-30 (-1.87 % of base) : 16315.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
-4 (-1.86 % of base) : 250780.dasm - System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (FullOpts)
-28 (-1.71 % of base) : 129740.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
-28 (-1.71 % of base) : 68014.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
-34 (-1.62 % of base) : 174632.dasm - System.DirectoryServices.AccountManagement.ADStoreCtx:PushChangesToNative(System.DirectoryServices.AccountManagement.Principal):System.Object:this (FullOpts)
-32 (-1.38 % of base) : 257975.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteArray(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):this (FullOpts)
-25 (-1.35 % of base) : 243324.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
-8 (-1.29 % of base) : 251451.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (FullOpts)
-36 (-1.24 % of base) : 37384.dasm - System.Data.XSDSchema:HandleElementColumn(System.Xml.Schema.XmlSchemaElement,System.Data.DataTable,ubyte):this (FullOpts)
-32 (-1.19 % of base) : 38822.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CanMatchArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
-8 (-0.86 % of base) : 216572.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext:FindBestMethod(System.Reflection.MethodInfo[],ubyte,ubyte,System.String,int[]):System.Reflection.MethodInfo (FullOpts)
-10 (-0.79 % of base) : 202477.dasm - System.Speech.Recognition.RecognizedPhrase:RecursiveBuildSemanticProperties(System.Collections.Generic.IList`1[System.Speech.Recognition.RecognizedWordUnit],System.Collections.Generic.List`1[System.Speech.Recognition.RecognizedPhrase+ResultPropertiesRef],System.Speech.Recognition.RecognizedPhrase+RuleNode,int,byref):System.Speech.Recognition.SemanticValue (FullOpts)
-41 (-0.78 % of base) : 93159.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
libraries.pmi.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 67669814 (overridden on cmd)
Total bytes of diff: 67670878 (overridden on cmd)
Total bytes of delta: 1064 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
161 : 146181.dasm (1.77 % of base)
147 : 340606.dasm (10.14 % of base)
123 : 135973.dasm (2.06 % of base)
111 : 23387.dasm (6.25 % of base)
102 : 118229.dasm (5.85 % of base)
83 : 154848.dasm (1.36 % of base)
83 : 192680.dasm (1.90 % of base)
60 : 61780.dasm (1.92 % of base)
57 : 242967.dasm (13.01 % of base)
46 : 192681.dasm (2.63 % of base)
43 : 67179.dasm (2.39 % of base)
37 : 59310.dasm (1.43 % of base)
32 : 169068.dasm (6.04 % of base)
32 : 203682.dasm (6.04 % of base)
30 : 303120.dasm (2.87 % of base)
30 : 16997.dasm (2.87 % of base)
30 : 221892.dasm (2.87 % of base)
29 : 330805.dasm (2.79 % of base)
29 : 167464.dasm (4.23 % of base)
29 : 202163.dasm (4.23 % of base)
Top file improvements (bytes):
-98 : 57928.dasm (-0.34 % of base)
-71 : 68052.dasm (-3.17 % of base)
-67 : 135034.dasm (-1.67 % of base)
-59 : 59651.dasm (-0.98 % of base)
-45 : 131805.dasm (-1.07 % of base)
-40 : 283970.dasm (-0.98 % of base)
-37 : 265394.dasm (-2.15 % of base)
-34 : 216721.dasm (-2.71 % of base)
-32 : 131316.dasm (-1.56 % of base)
-32 : 290086.dasm (-1.18 % of base)
-32 : 329624.dasm (-1.18 % of base)
-30 : 67760.dasm (-0.93 % of base)
-28 : 331759.dasm (-0.99 % of base)
-26 : 184738.dasm (-2.91 % of base)
-25 : 326289.dasm (-1.74 % of base)
-24 : 131308.dasm (-0.30 % of base)
-24 : 278305.dasm (-1.91 % of base)
-23 : 89403.dasm (-0.43 % of base)
-20 : 187177.dasm (-1.39 % of base)
-19 : 65816.dasm (-0.89 % of base)
66 total files with Code Size differences (35 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
161 (1.77 % of base) : 146181.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
147 (10.14 % of base) : 340606.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
123 (2.06 % of base) : 135973.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:CheckDeclarationNameAndTypeParameters(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref):this (FullOpts)
111 (6.25 % of base) : 23387.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
102 (5.85 % of base) : 118229.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
83 (1.90 % of base) : 192680.dasm - Microsoft.Build.BackEnd.Scheduler:WriteNodeUtilizationGraph(Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext,ubyte):this (FullOpts)
83 (1.36 % of base) : 154848.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
60 (1.92 % of base) : 61780.dasm - Microsoft.CodeAnalysis.CSharp.SwitchBinder:CheckSwitchErrors(byref,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
57 (13.01 % of base) : 242967.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
46 (2.63 % of base) : 192681.dasm - Microsoft.Build.BackEnd.Scheduler:WriteNodeUtilizationGraphLine(Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext,int[],int[],System.DateTime,System.DateTime,int,byref):this (FullOpts)
43 (2.39 % of base) : 67179.dasm - Microsoft.CodeAnalysis.CSharp.ClosureConversion:RemapLocalFunction(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,byref,byref,byref,byref):this (FullOpts)
37 (1.43 % of base) : 59310.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GenerateImplicitConversionErrorForCollectionExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedCollectionExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
32 (6.04 % of base) : 169068.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
32 (6.04 % of base) : 203682.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
30 (2.87 % of base) : 303120.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F3D2F53A382AC8D28802D228929C0CCEBC3558AAD1706BFB4D4EDB695DB536DFD__CreateConnectionStringQuoteOdbcValueRegex_2+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
30 (2.87 % of base) : 16997.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F8CFCAEBF51DE37CE3EEBF6F23954BEEBCBCD4E908A2963911D4B27C7CD5148E6__CreateConnectionStringQuoteOdbcValueRegex_2+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
30 (2.87 % of base) : 221892.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FA531B1B140B4C4724EBE448DE02C2BB45C5CE928BA56DEA80B8B0BA098711049__CreateConnectionStringQuoteOdbcValueRegex_2+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
29 (4.23 % of base) : 167464.dasm - Microsoft.CodeAnalysis.Compilation:CheckTupleElementNames(int,System.Collections.Immutable.ImmutableArray`1[System.String]):System.Collections.Immutable.ImmutableArray`1[System.String] (FullOpts)
29 (4.23 % of base) : 202163.dasm - Microsoft.CodeAnalysis.Compilation:CheckTupleElementNames(int,System.Collections.Immutable.ImmutableArray`1[System.String]):System.Collections.Immutable.ImmutableArray`1[System.String] (FullOpts)
29 (2.79 % of base) : 330805.dasm - System.Globalization.FormatProvider+Number:FormatFixed(byref,byref,int,int,System.Globalization.NumberFormatInfo,int[],System.String,System.String) (FullOpts)
Top method improvements (bytes):
-98 (-0.34 % of base) : 57928.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-71 (-3.17 % of base) : 68052.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeValueOrDefaultTemp(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-67 (-1.67 % of base) : 135034.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:Create(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,int,byref):Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol (FullOpts)
-59 (-0.98 % of base) : 59651.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedStringHandlerInMemberCall(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-45 (-1.07 % of base) : 131805.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindXmlContainerRewriterInfo(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Binder+XmlElementRootInfo,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundXmlContainerRewriterInfo:this (FullOpts)
-40 (-0.98 % of base) : 283970.dasm - ILCompiler.Diagnostics.PdbWriter:WriteCompilerVersion():this (FullOpts)
-37 (-2.15 % of base) : 265394.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7680D248A4DE6BF5B840634AFF895A52942D245A7F8BB88A5564E83370DDC02A__CreateIntegerRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-34 (-2.71 % of base) : 216721.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
-32 (-1.56 % of base) : 131316.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReclassifyTupleLiteral(int,Microsoft.CodeAnalysis.SyntaxNode,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-32 (-1.18 % of base) : 290086.dasm - System.Reflection.TypeLoading.Ecma.EcmaModule:GetTypeCoreNoCache(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],byref):System.Reflection.TypeLoading.RoDefinitionType:this (FullOpts)
-32 (-1.18 % of base) : 329624.dasm - System.Reflection.TypeLoading.Ecma.EcmaModule:GetTypeCoreNoCache(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],byref):System.Reflection.TypeLoading.RoDefinitionType:this (FullOpts)
-30 (-0.93 % of base) : 67760.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
-28 (-0.99 % of base) : 331759.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteArray(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):this (FullOpts)
-26 (-2.91 % of base) : 184738.dasm - Newtonsoft.Json.Serialization.DefaultSerializationBinder:GetTypeFromTypeNameKey(Newtonsoft.Json.Utilities.StructMultiKey`2[System.String,System.String]):System.Type:this (FullOpts)
-25 (-1.74 % of base) : 326289.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
-24 (-1.91 % of base) : 278305.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:GetLiveSlotsAtSafepoints(ubyte[],byref):System.Collections.Generic.List`1[System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcSlot]]:this (FullOpts)
-24 (-0.30 % of base) : 131308.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:MakeVarianceConversionSuggestion(int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref,ubyte):ubyte:this (FullOpts)
-23 (-0.43 % of base) : 89403.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:GetMergedGlobalAliasesAndUsings(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+MergedGlobalAliasesAndUsings:this (FullOpts)
-20 (-1.39 % of base) : 187177.dasm - Internal.IL.UnsafeAccessors:DoesMethodMatchUnsafeAccessorDeclaration(byref,Internal.TypeSystem.MethodDesc,ubyte):ubyte (FullOpts)
-19 (-0.89 % of base) : 65816.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:RemoveArgumentConversions(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte]):System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]]:this (FullOpts)
Top method regressions (percentages):
57 (13.01 % of base) : 242967.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
147 (10.14 % of base) : 340606.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
23 (6.53 % of base) : 316646.dasm - System.Linq.OrderedEnumerable`1[double]:TryGetLast(byref):double:this (FullOpts)
23 (6.34 % of base) : 316645.dasm - System.Linq.OrderedEnumerable`1[double]:TryGetFirst(byref):double:this (FullOpts)
111 (6.25 % of base) : 23387.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
32 (6.04 % of base) : 169068.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
32 (6.04 % of base) : 203682.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
102 (5.85 % of base) : 118229.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
13 (4.76 % of base) : 228663.dasm - System.Dynamic.ExpandoObject+ValueCollection:Contains(System.Object):ubyte:this (FullOpts)
29 (4.23 % of base) : 167464.dasm - Microsoft.CodeAnalysis.Compilation:CheckTupleElementNames(int,System.Collections.Immutable.ImmutableArray`1[System.String]):System.Collections.Immutable.ImmutableArray`1[System.String] (FullOpts)
29 (4.23 % of base) : 202163.dasm - Microsoft.CodeAnalysis.Compilation:CheckTupleElementNames(int,System.Collections.Immutable.ImmutableArray`1[System.String]):System.Collections.Immutable.ImmutableArray`1[System.String] (FullOpts)
10 (3.85 % of base) : 290265.dasm - System.Reflection.TypeLoading.GetTypeCoreCache+Container:TryGetValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int,byref):ubyte:this (FullOpts)
10 (3.85 % of base) : 329795.dasm - System.Reflection.TypeLoading.GetTypeCoreCache+Container:TryGetValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int,byref):ubyte:this (FullOpts)
7 (3.72 % of base) : 145840.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:PeekAheadFor[System.__Canon](System.Func`3[System.__Canon,System.__Canon,ubyte],System.__Canon,byref):int:this (FullOpts)
13 (3.56 % of base) : 18905.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
6 (3.49 % of base) : 217313.dasm - System.ComponentModel.TypeDescriptor:set_ComNativeDescriptorHandler(System.ComponentModel.IComNativeDescriptorHandler) (FullOpts)
10 (3.21 % of base) : 308943.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.15 % of base) : 310899.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
30 (2.87 % of base) : 303120.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F3D2F53A382AC8D28802D228929C0CCEBC3558AAD1706BFB4D4EDB695DB536DFD__CreateConnectionStringQuoteOdbcValueRegex_2+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
30 (2.87 % of base) : 16997.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F8CFCAEBF51DE37CE3EEBF6F23954BEEBCBCD4E908A2963911D4B27C7CD5148E6__CreateConnectionStringQuoteOdbcValueRegex_2+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
Top method improvements (percentages):
-7 (-12.96 % of base) : 25678.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-7 (-12.96 % of base) : 120524.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-7 (-12.50 % of base) : 120512.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-7 (-12.50 % of base) : 25666.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-71 (-3.17 % of base) : 68052.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeValueOrDefaultTemp(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-6 (-3.09 % of base) : 10210.dasm - Microsoft.FSharp.Collections.ListModule:Sum$W[System.Numerics.Vector`1[float]](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Numerics.Vector`1[float]],Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]],Microsoft.FSharp.Collections.FSharpList`1[System.Numerics.Vector`1[float]]):System.Numerics.Vector`1[float] (FullOpts)
-26 (-2.91 % of base) : 184738.dasm - Newtonsoft.Json.Serialization.DefaultSerializationBinder:GetTypeFromTypeNameKey(Newtonsoft.Json.Utilities.StructMultiKey`2[System.String,System.String]):System.Type:this (FullOpts)
-5 (-2.84 % of base) : 56950.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution+OperatorCaches+FixedList:Lookup(System.Type,System.Type,byref,byref):ubyte:this (FullOpts)
-34 (-2.71 % of base) : 216721.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
-11 (-2.28 % of base) : 249688.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
-8 (-2.24 % of base) : 163123.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.VariantArray:CreateCustomType(int):System.Type (FullOpts)
-18 (-2.23 % of base) : 36900.dasm - Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer:<GenerateThreadTimeStacks>b__13_2(Microsoft.Diagnostics.Tracing.TraceEvent):this (FullOpts)
-18 (-2.23 % of base) : 97892.dasm - Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer:<GenerateThreadTimeStacks>b__13_2(Microsoft.Diagnostics.Tracing.TraceEvent):this (FullOpts)
-37 (-2.15 % of base) : 265394.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7680D248A4DE6BF5B840634AFF895A52942D245A7F8BB88A5564E83370DDC02A__CreateIntegerRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-18 (-2.11 % of base) : 340663.dasm - Xunit.Internal.AssertHelper:ShortenAndEncodeString(System.String,int,byref):System.String (FullOpts)
-14 (-2.03 % of base) : 326280.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (FullOpts)
-24 (-1.91 % of base) : 278305.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:GetLiveSlotsAtSafepoints(ubyte[],byref):System.Collections.Generic.List`1[System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcSlot]]:this (FullOpts)
-4 (-1.87 % of base) : 307285.dasm - System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (FullOpts)
-8 (-1.75 % of base) : 290602.dasm - System.Security.Permissions.PrincipalPermission:IsSubsetOf(System.Security.IPermission):ubyte:this (FullOpts)
-8 (-1.75 % of base) : 333788.dasm - System.Security.Permissions.PrincipalPermission:IsSubsetOf(System.Security.IPermission):ubyte:this (FullOpts)
libraries_tests.run.windows.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 42430255 (overridden on cmd)
Total bytes of diff: 42437959 (overridden on cmd)
Total bytes of delta: 7704 (0.02 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
301 : 56681.dasm (9.70 % of base)
145 : 19518.dasm (15.97 % of base)
78 : 60195.dasm (8.04 % of base)
75 : 22856.dasm (7.61 % of base)
75 : 683.dasm (7.61 % of base)
73 : 10765.dasm (7.45 % of base)
73 : 14571.dasm (7.45 % of base)
68 : 11401.dasm (7.03 % of base)
68 : 11928.dasm (6.96 % of base)
68 : 7656.dasm (7.03 % of base)
65 : 6709.dasm (6.63 % of base)
64 : 22988.dasm (6.45 % of base)
63 : 104304.dasm (6.49 % of base)
63 : 10697.dasm (6.49 % of base)
63 : 109478.dasm (6.49 % of base)
63 : 1280.dasm (6.49 % of base)
62 : 1430.dasm (6.24 % of base)
61 : 44036.dasm (14.25 % of base)
61 : 82439.dasm (14.25 % of base)
57 : 7576.dasm (5.79 % of base)
Top file improvements (bytes):
-40 : 76036.dasm (-2.24 % of base)
-35 : 103741.dasm (-1.09 % of base)
-33 : 71609.dasm (-4.10 % of base)
-29 : 116778.dasm (-3.16 % of base)
-25 : 71888.dasm (-1.71 % of base)
-25 : 86573.dasm (-1.74 % of base)
-25 : 24178.dasm (-1.74 % of base)
-24 : 83269.dasm (-2.68 % of base)
-23 : 76685.dasm (-0.49 % of base)
-20 : 31821.dasm (-2.48 % of base)
-20 : 36242.dasm (-2.48 % of base)
-20 : 53443.dasm (-2.48 % of base)
-20 : 47222.dasm (-2.17 % of base)
-20 : 83454.dasm (-2.48 % of base)
-19 : 76742.dasm (-1.30 % of base)
-19 : 76775.dasm (-1.30 % of base)
-19 : 114312.dasm (-3.07 % of base)
-19 : 28738.dasm (-0.69 % of base)
-19 : 76733.dasm (-1.22 % of base)
-18 : 62325.dasm (-4.21 % of base)
86 total files with Code Size differences (49 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
301 (9.70 % of base) : 56681.dasm - System.Net.Mime.ByteEncoder:EncodeBytes(ubyte[],int,int,ubyte,ubyte):int:this (Tier1-OSR)
145 (15.97 % of base) : 19518.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
78 (8.04 % of base) : 60195.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
75 (7.61 % of base) : 22856.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
75 (7.61 % of base) : 683.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
73 (7.45 % of base) : 10765.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
73 (7.45 % of base) : 14571.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
68 (7.03 % of base) : 11401.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
68 (6.96 % of base) : 11928.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
68 (7.03 % of base) : 7656.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
65 (6.63 % of base) : 6709.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
64 (6.45 % of base) : 22988.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
63 (6.49 % of base) : 104304.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
63 (6.49 % of base) : 10697.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
63 (6.49 % of base) : 109478.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
63 (6.49 % of base) : 1280.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
62 (6.24 % of base) : 1430.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
61 (14.25 % of base) : 44036.dasm - System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte (Tier1)
61 (14.25 % of base) : 82439.dasm - System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte (Tier1)
57 (5.79 % of base) : 7576.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
Top method improvements (bytes):
-40 (-2.24 % of base) : 76036.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:PickPivotAndPartition(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]):int (Tier1-OSR)
-35 (-1.09 % of base) : 103741.dasm - System.Xml.DocumentXPathNodeIterator_ElemDescendants:MoveNext():ubyte:this (Tier1-OSR)
-33 (-4.10 % of base) : 71609.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[ushort]:ToArray():ushort[]:this (Tier1-OSR)
-29 (-3.16 % of base) : 116778.dasm - System.Xml.Linq.XHashtable`1+XHashtableState[System.__Canon]:Resize():System.Xml.Linq.XHashtable`1+XHashtableState[System.__Canon]:this (Tier1-OSR)
-25 (-1.71 % of base) : 71888.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
-25 (-1.74 % of base) : 86573.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
-25 (-1.74 % of base) : 24178.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
-24 (-2.68 % of base) : 83269.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
-23 (-0.49 % of base) : 76685.dasm - System.Reflection.Metadata.Tests.LargeTablesAndHeapsTests:Others():this (Tier1-OSR)
-20 (-2.17 % of base) : 47222.dasm - System.Linq.Enumerable+SelectEnumerableIterator`2[int,int]:ToArray():int[]:this (Tier1-OSR)
-20 (-2.48 % of base) : 31821.dasm - Xunit.JsonBuffer:Read():Xunit.JsonToken:this (Tier1)
-20 (-2.48 % of base) : 36242.dasm - Xunit.JsonBuffer:Read():Xunit.JsonToken:this (Tier1)
-20 (-2.48 % of base) : 53443.dasm - Xunit.JsonBuffer:Read():Xunit.JsonToken:this (Tier1)
-20 (-2.48 % of base) : 83454.dasm - Xunit.JsonBuffer:Read():Xunit.JsonToken:this (Tier1)
-19 (-0.69 % of base) : 28738.dasm - System.Formats.Asn1.AsnDecoder:CopyConstructedOctetString(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ubyte],ubyte,ubyte,byref):int (Tier1-OSR)
-19 (-1.22 % of base) : 76733.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeConstantTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
-19 (-1.30 % of base) : 76775.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeDeclSecurityTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
-19 (-1.30 % of base) : 76742.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodSemanticsTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
-19 (-3.07 % of base) : 114312.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
-18 (-1.93 % of base) : 22997.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
Top method regressions (percentages):
145 (15.97 % of base) : 19518.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
61 (14.25 % of base) : 44036.dasm - System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte (Tier1)
61 (14.25 % of base) : 82439.dasm - System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte (Tier1)
301 (9.70 % of base) : 56681.dasm - System.Net.Mime.ByteEncoder:EncodeBytes(ubyte[],int,int,ubyte,ubyte):int:this (Tier1-OSR)
21 (9.01 % of base) : 115597.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
21 (9.01 % of base) : 19667.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
21 (9.01 % of base) : 117356.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
21 (9.01 % of base) : 1561.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
21 (9.01 % of base) : 27539.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
21 (9.01 % of base) : 87682.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
21 (9.01 % of base) : 108734.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
21 (9.01 % of base) : 115391.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
21 (9.01 % of base) : 24893.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
78 (8.04 % of base) : 60195.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
30 (7.67 % of base) : 15227.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
75 (7.61 % of base) : 22856.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
75 (7.61 % of base) : 683.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
73 (7.45 % of base) : 10765.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
73 (7.45 % of base) : 14571.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
21 (7.32 % of base) : 24528.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
Top method improvements (percentages):
-6 (-5.31 % of base) : 87045.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-18 (-4.21 % of base) : 62325.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
-5 (-4.20 % of base) : 114715.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-5 (-4.20 % of base) : 37698.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-5 (-4.20 % of base) : 49449.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-5 (-4.20 % of base) : 62839.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-5 (-4.20 % of base) : 84709.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-5 (-4.20 % of base) : 87778.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-5 (-4.20 % of base) : 95140.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-5 (-4.20 % of base) : 108925.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-5 (-4.20 % of base) : 115552.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-5 (-4.20 % of base) : 87699.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-5 (-4.20 % of base) : 87747.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-5 (-4.20 % of base) : 32959.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-5 (-4.20 % of base) : 6448.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-33 (-4.10 % of base) : 71609.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[ushort]:ToArray():ushort[]:this (Tier1-OSR)
-16 (-3.92 % of base) : 55352.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
-8 (-3.90 % of base) : 113990.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
-15 (-3.61 % of base) : 19567.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
-4 (-3.60 % of base) : 37825.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
librariestestsnotieredcompilation.run.windows.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 142641671 (overridden on cmd)
Total bytes of diff: 142643107 (overridden on cmd)
Total bytes of delta: 1436 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
178 : 312454.dasm (4.22 % of base)
174 : 312508.dasm (4.41 % of base)
134 : 31565.dasm (9.63 % of base)
134 : 1258.dasm (9.63 % of base)
120 : 329786.dasm (1.96 % of base)
83 : 319316.dasm (5.23 % of base)
77 : 41026.dasm (1.89 % of base)
77 : 65557.dasm (1.89 % of base)
72 : 319317.dasm (4.45 % of base)
72 : 319320.dasm (4.45 % of base)
72 : 319318.dasm (4.45 % of base)
72 : 319321.dasm (4.45 % of base)
72 : 319319.dasm (4.45 % of base)
72 : 319322.dasm (4.45 % of base)
72 : 156177.dasm (5.88 % of base)
71 : 319324.dasm (4.45 % of base)
60 : 304785.dasm (2.03 % of base)
57 : 150260.dasm (13.01 % of base)
57 : 74097.dasm (13.01 % of base)
51 : 327656.dasm (2.50 % of base)
Top file improvements (bytes):
-176 : 321513.dasm (-6.08 % of base)
-136 : 312455.dasm (-1.99 % of base)
-113 : 327056.dasm (-3.21 % of base)
-98 : 71308.dasm (-0.35 % of base)
-89 : 202864.dasm (-3.21 % of base)
-59 : 312610.dasm (-3.20 % of base)
-58 : 39379.dasm (-0.96 % of base)
-58 : 15691.dasm (-0.96 % of base)
-45 : 15874.dasm (-1.10 % of base)
-43 : 321795.dasm (-1.50 % of base)
-43 : 321615.dasm (-2.56 % of base)
-41 : 54810.dasm (-0.56 % of base)
-41 : 35218.dasm (-0.58 % of base)
-41 : 60841.dasm (-0.56 % of base)
-41 : 6279.dasm (-0.58 % of base)
-39 : 321767.dasm (-3.17 % of base)
-37 : 294586.dasm (-2.15 % of base)
-37 : 321649.dasm (-2.62 % of base)
-36 : 321772.dasm (-2.56 % of base)
-35 : 308800.dasm (-1.99 % of base)
55 total files with Code Size differences (29 improved, 26 regressed), 20 unchanged.
Top method regressions (bytes):
178 (4.22 % of base) : 312454.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1665_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
174 (4.41 % of base) : 312508.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1680_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
134 (9.63 % of base) : 31565.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
134 (9.63 % of base) : 1258.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
120 (1.96 % of base) : 329786.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31345_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
83 (5.23 % of base) : 319316.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5355_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
77 (1.89 % of base) : 41026.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
77 (1.89 % of base) : 65557.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
72 (5.88 % of base) : 156177.dasm - System.Linq.Parallel.GroupJoinQueryOperator`4[int,int,int,System.Collections.Generic.KeyValuePair`2[int,System.__Canon]]:WrapPartitionedStreamHelper[int,int](System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[int,int],int],System.Linq.Parallel.PartitionedStream`2[int,int],System.Linq.Parallel.IPartitionedStreamRecipient`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],int,System.Threading.CancellationToken):this (FullOpts)
72 (4.45 % of base) : 319317.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5356_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
72 (4.45 % of base) : 319318.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5357_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
72 (4.45 % of base) : 319319.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5358_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
72 (4.45 % of base) : 319320.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5359_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
72 (4.45 % of base) : 319321.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5360_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
72 (4.45 % of base) : 319322.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5361_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
71 (4.45 % of base) : 319324.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5362_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
60 (2.03 % of base) : 304785.dasm - Microsoft.CodeAnalysis.CSharp.SwitchBinder:CheckSwitchErrors(byref,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
57 (13.01 % of base) : 150260.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
57 (13.01 % of base) : 74097.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
51 (2.50 % of base) : 327656.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6444_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (bytes):
-176 (-6.08 % of base) : 321513.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4397_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-136 (-1.99 % of base) : 312455.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1671_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-113 (-3.21 % of base) : 327056.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6095_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-98 (-0.35 % of base) : 71308.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-89 (-3.21 % of base) : 202864.dasm - XmlCoreTest.Common.WriterFactory:CompareStringWithPrefixes(System.String):ubyte:this (FullOpts)
-59 (-3.20 % of base) : 312610.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1728_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-58 (-0.96 % of base) : 39379.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
-58 (-0.96 % of base) : 15691.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
-45 (-1.10 % of base) : 15874.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-43 (-2.56 % of base) : 321615.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4452_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-43 (-1.50 % of base) : 321795.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4895_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-41 (-0.56 % of base) : 54810.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1012_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
-41 (-0.56 % of base) : 60841.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1034_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
-41 (-0.58 % of base) : 35218.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1054_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
-41 (-0.58 % of base) : 6279.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1054_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
-39 (-3.17 % of base) : 321767.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4863_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-37 (-2.62 % of base) : 321649.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4554_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-37 (-2.15 % of base) : 294586.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7680D248A4DE6BF5B840634AFF895A52942D245A7F8BB88A5564E83370DDC02A__CreateIntegerRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-36 (-2.56 % of base) : 321772.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4869_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-35 (-1.99 % of base) : 308766.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex627_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method regressions (percentages):
57 (13.01 % of base) : 150260.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
57 (13.01 % of base) : 74097.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
134 (9.63 % of base) : 31565.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
134 (9.63 % of base) : 1258.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
72 (5.88 % of base) : 156177.dasm - System.Linq.Parallel.GroupJoinQueryOperator`4[int,int,int,System.Collections.Generic.KeyValuePair`2[int,System.__Canon]]:WrapPartitionedStreamHelper[int,int](System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[int,int],int],System.Linq.Parallel.PartitionedStream`2[int,int],System.Linq.Parallel.IPartitionedStreamRecipient`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],int,System.Threading.CancellationToken):this (FullOpts)
15 (5.40 % of base) : 212774.dasm - System.Reflection.Tests.TypeInfoDeclaredMemberTests:VerifyMembers(System.Type,System.String[]) (FullOpts)
15 (5.40 % of base) : 212574.dasm - System.Reflection.Tests.TypeInfoDeclaredMethodTests:VerifyMethods(System.Type,System.String[]) (FullOpts)
83 (5.23 % of base) : 319316.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5355_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
72 (4.45 % of base) : 319317.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5356_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
72 (4.45 % of base) : 319318.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5357_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
72 (4.45 % of base) : 319319.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5358_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
72 (4.45 % of base) : 319320.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5359_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
72 (4.45 % of base) : 319321.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5360_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
72 (4.45 % of base) : 319322.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5361_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
71 (4.45 % of base) : 319324.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5362_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
174 (4.41 % of base) : 312508.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1680_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
178 (4.22 % of base) : 312454.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1665_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
41 (3.97 % of base) : 4167.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
10 (3.85 % of base) : 206635.dasm - System.Reflection.TypeLoading.GetTypeCoreCache+Container:TryGetValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int,byref):ubyte:this (FullOpts)
10 (3.85 % of base) : 211244.dasm - System.Reflection.TypeLoading.GetTypeCoreCache+Container:TryGetValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int,byref):ubyte:this (FullOpts)
Top method improvements (percentages):
-176 (-6.08 % of base) : 321513.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4397_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-89 (-3.21 % of base) : 202864.dasm - XmlCoreTest.Common.WriterFactory:CompareStringWithPrefixes(System.String):ubyte:this (FullOpts)
-113 (-3.21 % of base) : 327056.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6095_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-59 (-3.20 % of base) : 312610.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1728_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-39 (-3.17 % of base) : 321767.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4863_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-34 (-2.84 % of base) : 41333.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
-5 (-2.84 % of base) : 72007.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution+OperatorCaches+FixedList:Lookup(System.Type,System.Type,byref,byref):ubyte:this (FullOpts)
-37 (-2.62 % of base) : 321649.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4554_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-43 (-2.56 % of base) : 321615.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4452_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-36 (-2.56 % of base) : 321772.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4869_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-23 (-2.41 % of base) : 307962.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex999_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-11 (-2.28 % of base) : 197645.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
-37 (-2.15 % of base) : 294586.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7680D248A4DE6BF5B840634AFF895A52942D245A7F8BB88A5564E83370DDC02A__CreateIntegerRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-18 (-2.11 % of base) : 340919.dasm - Xunit.Internal.AssertHelper:ShortenAndEncodeString(System.String,int,byref):System.String (FullOpts)
-14 (-2.03 % of base) : 170902.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (FullOpts)
-14 (-2.03 % of base) : 173581.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (FullOpts)
-35 (-1.99 % of base) : 308800.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex628_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-136 (-1.99 % of base) : 312455.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1671_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-35 (-1.99 % of base) : 308766.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex627_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-11 (-1.97 % of base) : 228669.dasm - DataContractJsonSerializerTests:DCJS_DecimalAsRoot() (FullOpts)
realworld.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 14769832 (overridden on cmd)
Total bytes of diff: 14769681 (overridden on cmd)
Total bytes of delta: -151 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
117 : 1393.dasm (0.71 % of base)
94 : 18406.dasm (7.18 % of base)
83 : 7753.dasm (1.89 % of base)
83 : 19658.dasm (1.89 % of base)
77 : 22235.dasm (1.83 % of base)
73 : 1135.dasm (0.75 % of base)
60 : 29148.dasm (2.01 % of base)
56 : 10096.dasm (1.87 % of base)
51 : 16735.dasm (1.46 % of base)
41 : 21189.dasm (3.97 % of base)
35 : 32203.dasm (2.03 % of base)
28 : 22032.dasm (1.67 % of base)
20 : 20143.dasm (1.75 % of base)
20 : 1353.dasm (0.17 % of base)
18 : 26279.dasm (1.12 % of base)
17 : 24785.dasm (0.61 % of base)
15 : 25256.dasm (0.25 % of base)
15 : 1166.dasm (0.26 % of base)
14 : 17128.dasm (0.42 % of base)
14 : 24212.dasm (0.23 % of base)
Top file improvements (bytes):
-255 : 1384.dasm (-1.40 % of base)
-175 : 18794.dasm (-14.29 % of base)
-147 : 1391.dasm (-0.96 % of base)
-65 : 1207.dasm (-1.47 % of base)
-58 : 27119.dasm (-0.95 % of base)
-46 : 1112.dasm (-1.34 % of base)
-44 : 5323.dasm (-1.62 % of base)
-44 : 16523.dasm (-1.62 % of base)
-41 : 23462.dasm (-0.58 % of base)
-40 : 17916.dasm (-0.49 % of base)
-32 : 34285.dasm (-0.74 % of base)
-30 : 31131.dasm (-1.01 % of base)
-30 : 13174.dasm (-1.77 % of base)
-28 : 9413.dasm (-2.88 % of base)
-27 : 1243.dasm (-1.12 % of base)
-26 : 1364.dasm (-0.28 % of base)
-20 : 24576.dasm (-0.39 % of base)
-18 : 1321.dasm (-1.30 % of base)
-14 : 16279.dasm (-0.78 % of base)
-14 : 2162.dasm (-0.95 % of base)
54 total files with Code Size differences (26 improved, 28 regressed), 20 unchanged.
Top method regressions (bytes):
117 (0.71 % of base) : 1393.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxPairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
94 (7.18 % of base) : 18406.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
83 (1.89 % of base) : 7753.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
83 (1.89 % of base) : 19658.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
77 (1.83 % of base) : 22235.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
73 (0.75 % of base) : 1135.dasm - BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester`6[BepuPhysics.Collidables.Box,BepuPhysics.Collidables.BoxWide,BepuPhysics.Collidables.BoxSupportFinder,BepuPhysics.Collidables.Box,BepuPhysics.Collidables.BoxWide,BepuPhysics.Collidables.BoxSupportFinder]:FindClosestPoint(byref,byref,byref,byref,byref) (FullOpts)
60 (2.01 % of base) : 29148.dasm - Microsoft.CodeAnalysis.CSharp.SwitchBinder:CheckSwitchErrors(byref,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
56 (1.87 % of base) : 10096.dasm - FSharp.Compiler.CheckExpressions:TcLetrecBindings(FSharp.Compiler.CheckExpressions+OverridesOK,FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+RecDefnBindingInfo],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range):System.Tuple`3[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
51 (1.46 % of base) : 16735.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:DecodeBlockProgressiveACRefined(byref,byref):this (FullOpts)
41 (3.97 % of base) : 21189.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
35 (2.03 % of base) : 32203.dasm - Microsoft.CodeAnalysis.CSharp.ClosureConversion:RemapLocalFunction(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,byref,byref,byref,byref):this (FullOpts)
28 (1.67 % of base) : 22032.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:TryParseLocalFunctionStatementBody(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax],Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LocalFunctionStatementSyntax:this (FullOpts)
20 (0.17 % of base) : 1353.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TriangleConvexHullTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
20 (1.75 % of base) : 20143.dasm - Microsoft.ML.Numeric.VectorUtils:DotProductWithOffset(byref,int,byref):float (FullOpts)
18 (1.12 % of base) : 26279.dasm - Microsoft.CodeAnalysis.CSharp.Binder:UnaryOperatorOverloadResolution(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref):Microsoft.CodeAnalysis.CSharp.UnaryOperatorAnalysisResult:this (FullOpts)
17 (0.61 % of base) : 24785.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
15 (0.26 % of base) : 1166.dasm - BepuPhysics.IslandAwakener:PrepareJobs(byref,ubyte,int):System.ValueTuple`2[int,int]:this (FullOpts)
15 (0.25 % of base) : 25256.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
14 (0.23 % of base) : 24212.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|232_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
14 (0.42 % of base) : 17128.dasm - SixLabors.ImageSharp.Processing.Processors.Dithering.OrderedDither:ApplyQuantizationDither[SixLabors.ImageSharp.Processing.Processors.Quantization.PaletteQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.PixelFormats.Rgba32](byref,SixLabors.ImageSharp.ImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.IndexedImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Rectangle):this (FullOpts)
Top method improvements (bytes):
-255 (-1.40 % of base) : 1384.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TriangleCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
-175 (-14.29 % of base) : 18794.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,System.__Canon]:TryGetValue(System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,byref):ubyte:this (FullOpts)
-147 (-0.96 % of base) : 1391.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
-65 (-1.47 % of base) : 1207.dasm - BepuPhysics.Trees.Tree:FindPartitionBinned(byref,int,int,byref,byref,byref,byref,byref):this (FullOpts)
-58 (-0.95 % of base) : 27119.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
-46 (-1.34 % of base) : 1112.dasm - BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Box,BepuPhysics.Collidables.BoxWide,BepuPhysics.CollisionDetection.SweepTasks.CapsuleBoxDistanceTester]:Sweep[BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5+UnoffsetSweep[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Box,BepuPhysics.Collidables.BoxWide,BepuPhysics.CollisionDetection.SweepTasks.CapsuleBoxDistanceTester]](ulong,byref,byref,ulong,byref,byref,byref,float,float,float,int,byref,byref,byref,byref,byref):ubyte (FullOpts)
-44 (-1.62 % of base) : 5323.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
-44 (-1.62 % of base) : 16523.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
-41 (-0.58 % of base) : 23462.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1055_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
-40 (-0.49 % of base) : 17916.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
-32 (-0.74 % of base) : 34285.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-30 (-1.01 % of base) : 31131.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
-30 (-1.77 % of base) : 13174.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
-28 (-2.88 % of base) : 9413.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplicationThen(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
-27 (-1.12 % of base) : 1243.dasm - BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:Reduce(ulong,int,byref,float,byref,byref,byref,byref,float,float,byref,byref,int,byref) (FullOpts)
-26 (-0.28 % of base) : 1364.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxTriangleTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
-20 (-0.39 % of base) : 24576.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:ResolveBounds(Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterBounds (FullOpts)
-18 (-1.30 % of base) : 1321.dasm - BepuPhysics.Constraints.TypeProcessor`3[BepuPhysics.Constraints.TwoBodyReferences,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses]:Remove(byref,int,byref,ubyte):this (FullOpts)
-14 (-0.78 % of base) : 16279.dasm - SixLabors.ImageSharp.Formats.Jpeg.JpegDecoderCore:ProcessStartOfFrameMarker(SixLabors.ImageSharp.IO.BufferedReadStream,int,byref,ubyte):this (FullOpts)
-14 (-0.95 % of base) : 2162.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
Top method regressions (percentages):
94 (7.18 % of base) : 18406.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
41 (3.97 % of base) : 21189.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
10 (3.21 % of base) : 1944.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.21 % of base) : 15571.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
35 (2.03 % of base) : 32203.dasm - Microsoft.CodeAnalysis.CSharp.ClosureConversion:RemapLocalFunction(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,byref,byref,byref,byref):this (FullOpts)
60 (2.01 % of base) : 29148.dasm - Microsoft.CodeAnalysis.CSharp.SwitchBinder:CheckSwitchErrors(byref,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
83 (1.89 % of base) : 7753.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
83 (1.89 % of base) : 19658.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
56 (1.87 % of base) : 10096.dasm - FSharp.Compiler.CheckExpressions:TcLetrecBindings(FSharp.Compiler.CheckExpressions+OverridesOK,FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+RecDefnBindingInfo],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range):System.Tuple`3[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
77 (1.83 % of base) : 22235.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
12 (1.77 % of base) : 31814.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+DecisionDagRewriter:ShareTempsIfPossibleAndEvaluateInput(Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],byref):Microsoft.CodeAnalysis.CSharp.BoundDecisionDag:this (FullOpts)
20 (1.75 % of base) : 20143.dasm - Microsoft.ML.Numeric.VectorUtils:DotProductWithOffset(byref,int,byref):float (FullOpts)
13 (1.72 % of base) : 8344.dasm - FSharp.Compiler.CheckDeclarations+TyconConstraintInference:InferSetOfTyconsSupportingEquatable[FSharp.Compiler.Text.Range](FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTreeOps+DisplayEnv,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Entity,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range]]]]):Microsoft.FSharp.Collections.FSharpSet`1[long] (FullOpts)
28 (1.67 % of base) : 22032.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:TryParseLocalFunctionStatementBody(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax],Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LocalFunctionStatementSyntax:this (FullOpts)
13 (1.60 % of base) : 8319.dasm - FSharp.Compiler.CheckDeclarations+TyconConstraintInference:InferSetOfTyconsSupportingComparable[FSharp.Compiler.Text.Range](FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTreeOps+DisplayEnv,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Entity,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range]]]]):Microsoft.FSharp.Collections.FSharpSet`1[long] (FullOpts)
51 (1.46 % of base) : 16735.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:DecodeBlockProgressiveACRefined(byref,byref):this (FullOpts)
8 (1.16 % of base) : 29412.dasm - Microsoft.CodeAnalysis.CSharp.TypeCompilationState:ReportCtorInitializerCycles(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
18 (1.12 % of base) : 26279.dasm - Microsoft.CodeAnalysis.CSharp.Binder:UnaryOperatorOverloadResolution(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref):Microsoft.CodeAnalysis.CSharp.UnaryOperatorAnalysisResult:this (FullOpts)
10 (0.78 % of base) : 1231.dasm - BepuPhysics.CollisionDetection.DepthRefiner`6[BepuPhysics.Collidables.ConvexHull,BepuPhysics.Collidables.ConvexHullWide,BepuPhysics.Collidables.ConvexHullSupportFinder,BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.CapsuleSupportFinder]:FindMinimumDepth(byref,byref,byref,byref,byref,byref,byref,byref,byref,byref,byref,byref,byref,byref,byref,int) (FullOpts)
2 (0.77 % of base) : 30887.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentIDVisitor+PartVisitor:VisitTypeParameter(Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,System.Text.StringBuilder):System.Object:this (FullOpts)
Top method improvements (percentages):
-175 (-14.29 % of base) : 18794.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,System.__Canon]:TryGetValue(System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,byref):ubyte:this (FullOpts)
-28 (-2.88 % of base) : 9413.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplicationThen(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
-30 (-1.77 % of base) : 13174.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
-44 (-1.62 % of base) : 5323.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
-44 (-1.62 % of base) : 16523.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
-65 (-1.47 % of base) : 1207.dasm - BepuPhysics.Trees.Tree:FindPartitionBinned(byref,int,int,byref,byref,byref,byref,byref):this (FullOpts)
-255 (-1.40 % of base) : 1384.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TriangleCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
-46 (-1.34 % of base) : 1112.dasm - BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Box,BepuPhysics.Collidables.BoxWide,BepuPhysics.CollisionDetection.SweepTasks.CapsuleBoxDistanceTester]:Sweep[BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5+UnoffsetSweep[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Box,BepuPhysics.Collidables.BoxWide,BepuPhysics.CollisionDetection.SweepTasks.CapsuleBoxDistanceTester]](ulong,byref,byref,ulong,byref,byref,byref,float,float,float,int,byref,byref,byref,byref,byref):ubyte (FullOpts)
-18 (-1.30 % of base) : 1321.dasm - BepuPhysics.Constraints.TypeProcessor`3[BepuPhysics.Constraints.TwoBodyReferences,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses]:Remove(byref,int,byref,ubyte):this (FullOpts)
-13 (-1.13 % of base) : 23138.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryInsert(System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon],ubyte):ubyte:this (FullOpts)
-27 (-1.12 % of base) : 1243.dasm - BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:Reduce(ulong,int,byref,float,byref,byref,byref,byref,float,float,byref,byref,int,byref) (FullOpts)
-30 (-1.01 % of base) : 31131.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
-147 (-0.96 % of base) : 1391.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
-58 (-0.95 % of base) : 27119.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
-14 (-0.95 % of base) : 2162.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
-14 (-0.95 % of base) : 559.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
-2 (-0.86 % of base) : 1205.dasm - BepuPhysics.Trees.Tree:CreateStagingNodeBinned(byref,int,int,byref,byref):int:this (FullOpts)
-14 (-0.78 % of base) : 16279.dasm - SixLabors.ImageSharp.Formats.Jpeg.JpegDecoderCore:ProcessStartOfFrameMarker(SixLabors.ImageSharp.IO.BufferedReadStream,int,byref,ubyte):this (FullOpts)
-32 (-0.74 % of base) : 34285.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-6 (-0.62 % of base) : 2575.dasm - System.Version:TryFormatCore[ushort](System.Span`1[ushort],int,byref):ubyte:this (FullOpts)
smoke_tests.nativeaot.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5085273 (overridden on cmd)
Total bytes of diff: 5085866 (overridden on cmd)
Total bytes of delta: 593 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
158 : 10631.dasm (3.84 % of base)
158 : 4647.dasm (3.84 % of base)
48 : 17794.dasm (5.49 % of base)
48 : 20430.dasm (5.49 % of base)
48 : 17795.dasm (5.16 % of base)
48 : 20431.dasm (5.16 % of base)
48 : 23074.dasm (5.49 % of base)
48 : 23077.dasm (5.16 % of base)
47 : 8624.dasm (4.97 % of base)
47 : 2673.dasm (5.36 % of base)
47 : 2674.dasm (5.04 % of base)
47 : 8623.dasm (5.28 % of base)
17 : 11504.dasm (1.59 % of base)
17 : 6194.dasm (1.59 % of base)
10 : 17637.dasm (3.23 % of base)
10 : 22921.dasm (3.23 % of base)
10 : 20282.dasm (3.23 % of base)
10 : 2560.dasm (3.23 % of base)
10 : 7563.dasm (3.23 % of base)
7 : 23449.dasm (1.41 % of base)
Top file improvements (bytes):
-30 : 18359.dasm (-1.91 % of base)
-30 : 20990.dasm (-1.91 % of base)
-30 : 3484.dasm (-1.49 % of base)
-30 : 15590.dasm (-1.91 % of base)
-30 : 465.dasm (-1.91 % of base)
-16 : 1395.dasm (-1.13 % of base)
-16 : 21833.dasm (-1.13 % of base)
-16 : 19200.dasm (-1.13 % of base)
-16 : 4853.dasm (-1.13 % of base)
-16 : 16556.dasm (-1.13 % of base)
-8 : 1747.dasm (-2.17 % of base)
-8 : 19539.dasm (-2.17 % of base)
-8 : 22208.dasm (-2.17 % of base)
-8 : 16882.dasm (-2.17 % of base)
-8 : 5794.dasm (-2.17 % of base)
-5 : 413.dasm (-1.35 % of base)
-5 : 18190.dasm (-1.35 % of base)
-5 : 20836.dasm (-1.35 % of base)
-5 : 3292.dasm (-1.35 % of base)
-5 : 15638.dasm (-1.35 % of base)
40 total files with Code Size differences (20 improved, 20 regressed), 20 unchanged.
Top method regressions (bytes):
158 (3.84 % of base) : 10631.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
158 (3.84 % of base) : 4647.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
48 (5.49 % of base) : 17794.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
48 (5.49 % of base) : 20430.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
48 (5.49 % of base) : 23074.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
48 (5.16 % of base) : 17795.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
48 (5.16 % of base) : 20431.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
48 (5.16 % of base) : 23077.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
47 (5.36 % of base) : 2673.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
47 (5.28 % of base) : 8623.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
47 (4.97 % of base) : 8624.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
47 (5.04 % of base) : 2674.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
17 (1.59 % of base) : 11504.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:TryGetStaticFunctionPointerTypeForComponents(System.RuntimeTypeHandle,System.RuntimeTypeHandle[],ubyte,byref):ubyte:this (FullOpts)
17 (1.59 % of base) : 6194.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:TryGetStaticFunctionPointerTypeForComponents(System.RuntimeTypeHandle,System.RuntimeTypeHandle[],ubyte,byref):ubyte:this (FullOpts)
10 (3.23 % of base) : 17637.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.23 % of base) : 22921.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.23 % of base) : 20282.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.23 % of base) : 2560.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.23 % of base) : 7563.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
7 (1.41 % of base) : 23449.dasm - System.Runtime.ThunkBlocks:GetNewThunksBlock():long (FullOpts)
Top method improvements (bytes):
-30 (-1.91 % of base) : 18359.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
-30 (-1.91 % of base) : 20990.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
-30 (-1.49 % of base) : 3484.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
-30 (-1.91 % of base) : 15590.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
-30 (-1.91 % of base) : 465.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
-16 (-1.13 % of base) : 1395.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
-16 (-1.13 % of base) : 21833.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
-16 (-1.13 % of base) : 19200.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
-16 (-1.13 % of base) : 4853.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
-16 (-1.13 % of base) : 16556.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
-8 (-2.17 % of base) : 1747.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-8 (-2.17 % of base) : 19539.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-8 (-2.17 % of base) : 22208.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-8 (-2.17 % of base) : 16882.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-8 (-2.17 % of base) : 5794.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-5 (-1.35 % of base) : 413.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,System.Span`1[ushort],byref):ubyte (FullOpts)
-5 (-1.35 % of base) : 18190.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,System.Span`1[ushort],byref):ubyte (FullOpts)
-5 (-1.35 % of base) : 20836.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,System.Span`1[ushort],byref):ubyte (FullOpts)
-5 (-1.35 % of base) : 3292.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,System.Span`1[ushort],byref):ubyte (FullOpts)
-5 (-1.35 % of base) : 15638.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,System.Span`1[ushort],byref):ubyte (FullOpts)
Top method regressions (percentages):
48 (5.49 % of base) : 17794.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
48 (5.49 % of base) : 20430.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
48 (5.49 % of base) : 23074.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
47 (5.36 % of base) : 2673.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
47 (5.28 % of base) : 8623.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
48 (5.16 % of base) : 17795.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
48 (5.16 % of base) : 20431.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
48 (5.16 % of base) : 23077.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
47 (5.04 % of base) : 2674.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
47 (4.97 % of base) : 8624.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
158 (3.84 % of base) : 10631.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
158 (3.84 % of base) : 4647.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
10 (3.23 % of base) : 17637.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.23 % of base) : 22921.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.23 % of base) : 20282.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.23 % of base) : 2560.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.23 % of base) : 7563.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
17 (1.59 % of base) : 11504.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:TryGetStaticFunctionPointerTypeForComponents(System.RuntimeTypeHandle,System.RuntimeTypeHandle[],ubyte,byref):ubyte:this (FullOpts)
17 (1.59 % of base) : 6194.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:TryGetStaticFunctionPointerTypeForComponents(System.RuntimeTypeHandle,System.RuntimeTypeHandle[],ubyte,byref):ubyte:this (FullOpts)
7 (1.41 % of base) : 23449.dasm - System.Runtime.ThunkBlocks:GetNewThunksBlock():long (FullOpts)
Top method improvements (percentages):
-8 (-2.17 % of base) : 1747.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-8 (-2.17 % of base) : 19539.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-8 (-2.17 % of base) : 22208.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-8 (-2.17 % of base) : 16882.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-8 (-2.17 % of base) : 5794.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-30 (-1.91 % of base) : 18359.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
-30 (-1.91 % of base) : 20990.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
-30 (-1.91 % of base) : 15590.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
-30 (-1.91 % of base) : 465.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
-30 (-1.49 % of base) : 3484.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
-5 (-1.35 % of base) : 413.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,System.Span`1[ushort],byref):ubyte (FullOpts)
-5 (-1.35 % of base) : 18190.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,System.Span`1[ushort],byref):ubyte (FullOpts)
-5 (-1.35 % of base) : 20836.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,System.Span`1[ushort],byref):ubyte (FullOpts)
-5 (-1.35 % of base) : 3292.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,System.Span`1[ushort],byref):ubyte (FullOpts)
-5 (-1.35 % of base) : 15638.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,System.Span`1[ushort],byref):ubyte (FullOpts)
-16 (-1.13 % of base) : 21833.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
-16 (-1.13 % of base) : 19200.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
-16 (-1.13 % of base) : 16556.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
-16 (-1.13 % of base) : 1395.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
-16 (-1.13 % of base) : 4853.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)