Assembly Diffs

windows x86

Diffs are based on 2,290,733 contexts (838,165 MinOpts, 1,452,568 FullOpts).

MISSED contexts: base: 808 (0.04%), diff: 826 (0.04%)

Overall (-13,099 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,121,149 +163
benchmarks.run_pgo.windows.x86.checked.mch 45,137,639 -11,164
benchmarks.run_tiered.windows.x86.checked.mch 9,473,362 +172
coreclr_tests.run.windows.x86.checked.mch 309,359,021 -436
libraries.crossgen2.windows.x86.checked.mch 31,674,254 -215
libraries.pmi.windows.x86.checked.mch 49,133,274 +839
libraries_tests.run.windows.x86.Release.mch 184,746,965 -2,954
librariestestsnotieredcompilation.run.windows.x86.Release.mch 103,724,167 +293
realworld.run.windows.x86.checked.mch 11,283,258 +203

FullOpts (-13,099 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,120,868 +163
benchmarks.run_pgo.windows.x86.checked.mch 38,525,273 -11,164
benchmarks.run_tiered.windows.x86.checked.mch 5,203,770 +172
coreclr_tests.run.windows.x86.checked.mch 107,563,444 -436
libraries.crossgen2.windows.x86.checked.mch 31,673,194 -215
libraries.pmi.windows.x86.checked.mch 49,038,041 +839
libraries_tests.run.windows.x86.Release.mch 87,446,925 -2,954
librariestestsnotieredcompilation.run.windows.x86.Release.mch 95,044,106 +293
realworld.run.windows.x86.checked.mch 10,987,544 +203

Example diffs

benchmarks.run.windows.x86.checked.mch

-26 (-28.89%) : 3048.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,11 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> ecx class-hnd single-def <System.String> -; V01 arg1 [V01,T03] ( 7, 5 ) int -> edx single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> esi -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> edi -; V04 cse0 [V04,T04] ( 6, 6.54) int -> eax "CSE - aggressive"
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> ecx class-hnd single-def <System.String> +; V01 arg1 [V01,T04] ( 6, 4.50) int -> edx single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> esi +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> edi +; V04 cse0 [V04,T01] ( 5, 10.50) int -> eax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -37,72 +37,51 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ecx] mov esi, edx
- test edx, edx - jl SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz + cmp esi, eax + jae SHORT G_M3357_IG13
movzx edi, word ptr [ecx+2*esi+0x08] cmp edi, 32 je SHORT G_M3357_IG08
- ;; size=10 bbWeight=3.96 PerfScore 12.87 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=14 bbWeight=4 PerfScore 18.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
cmp edi, 9
- jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=1.98 PerfScore 2.48 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M3357_IG11 + ;; size=5 bbWeight=2 PerfScore 2.50 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
inc esi cmp eax, esi jg SHORT G_M3357_IG06
- ;; size=5 bbWeight=3.96 PerfScore 5.94 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] - jmp SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ecx] - cmp esi, eax - jae SHORT G_M3357_IG17 - movzx edi, word ptr [ecx+2*esi+0x08] - cmp edi, 32 - je SHORT G_M3357_IG12 - ;; size=14 bbWeight=0.04 PerfScore 0.18 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - cmp edi, 9 - jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=0.02 PerfScore 0.03 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - inc esi - cmp eax, esi - jg SHORT G_M3357_IG10 - ;; size=5 bbWeight=0.04 PerfScore 0.06 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=5 bbWeight=4 PerfScore 6.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx] sub eax, edx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
mov eax, esi sub eax, edx ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 90, prolog size 5, PerfScore 34.05, instruction count 47, allocated bytes for code 90 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 64, prolog size 5, PerfScore 37.38, instruction count 36, allocated bytes for code 64 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================

-9 (-1.38%) : 3760.dasm - System.Linq.Enumerable:g_EnumerableToArray|2960ushort:ushort

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 26 single block inlinees; 22 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T12] ( 3, 3 ) ref -> edx class-hnd single-def <System.Collections.Generic.IEnumerable`1[ushort]>
+; V00 arg0 [V00,T11] ( 3, 3 ) ref -> edx class-hnd single-def <System.Collections.Generic.IEnumerable`1[ushort]>
; V01 loc0 [V01 ] ( 2, 2 ) struct (16) [ebp-0x1C] do-not-enreg[XS] addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[ushort]> ; V02 loc1 [V02 ] ( 16, 12 ) struct (136) [ebp-0xA4] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1[ushort]> ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <ushort[]> @@ -16,26 +16,26 @@ ;* V05 tmp1 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "Inline stloc first use temp" <System.Span`1[ushort]> ;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <ushort[]>
-; V08 tmp4 [V08,T20] ( 3, 2.50) int -> edx "Inline stloc first use temp" -; V09 tmp5 [V09,T17] ( 6, 3.50) ref -> [ebp-0xC8] class-hnd "Inline stloc first use temp" <ushort[]>
+; V08 tmp4 [V08,T19] ( 3, 2.50) int -> edx "Inline stloc first use temp" +; V09 tmp5 [V09,T16] ( 6, 3.50) ref -> [ebp-0xC4] class-hnd "Inline stloc first use temp" <ushort[]>
;* V10 tmp6 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <ushort[]> ;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ushort[]> ;* V14 tmp10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V15 tmp11 [V15,T15] ( 8, 4 ) int -> [ebp-0xA8] "Inline stloc first use temp"
+; V15 tmp11 [V15,T14] ( 8, 4 ) int -> [ebp-0xA8] "Inline stloc first use temp"
; V16 tmp12 [V16 ] ( 3, 1.50) struct ( 8) [ebp-0xB0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V17 tmp13 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V18 tmp14 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort]> ;* V19 tmp15 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort[]]> ;* V20 tmp16 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort[]]>
-; V21 tmp17 [V21,T01] ( 5, 16.50) int -> [ebp-0xB4] "Inline stloc first use temp"
+; V21 tmp17 [V21,T02] ( 5, 16.50) int -> [ebp-0xB4] "Inline stloc first use temp"
; V22 tmp18 [V22,T06] ( 4, 12 ) ref -> esi class-hnd "Inline stloc first use temp" <ushort[]> ;* V23 tmp19 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort]> ;* V24 tmp20 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V25 tmp21 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V26 tmp22 [V26,T11] ( 5, 5 ) int -> [ebp-0xB8] spill-single-def "Inlining Arg" -; V27 tmp23 [V27,T22] ( 2, 2 ) byref -> [ebp-0xCC] spill-single-def "Inlining Arg"
+; V26 tmp22 [V26,T10] ( 5, 5 ) int -> [ebp-0xB8] spill-single-def "Inlining Arg" +; V27 tmp23 [V27,T21] ( 2, 2 ) byref -> [ebp-0xC8] spill-single-def "Inlining Arg"
;* V28 tmp24 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp25 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp26 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> @@ -45,8 +45,8 @@ ;* V34 tmp30 [V34 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V36 tmp32 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V37 tmp33 [V37,T19] ( 3, 3 ) int -> ebx "Inlining Arg" -; V38 tmp34 [V38,T23] ( 2, 2 ) byref -> edi single-def "Inlining Arg"
+; V37 tmp33 [V37,T18] ( 3, 3 ) int -> ebx "Inlining Arg" +; V38 tmp34 [V38,T22] ( 2, 2 ) byref -> edi single-def "Inlining Arg"
;* V39 tmp35 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp36 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V41 tmp37 [V41 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort[]]> @@ -66,20 +66,20 @@ ; V55 tmp51 [V55,T03] ( 2, 16 ) byref -> edi "Inlining Arg" ;* V56 tmp52 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp53 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V58 tmp54 [V58,T16] ( 4, 4 ) int -> esi "Inlining Arg"
+; V58 tmp54 [V58,T15] ( 4, 4 ) int -> esi "Inlining Arg"
;* V59 tmp55 [V59 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V60 tmp56 [V60,T24] ( 2, 2 ) byref -> [ebp-0xD0] spill-single-def "Inlining Arg" -; V61 tmp57 [V61,T21] ( 3, 2.50) int -> edx "Inline stloc first use temp"
+; V60 tmp56 [V60,T23] ( 2, 2 ) byref -> [ebp-0xCC] spill-single-def "Inlining Arg" +; V61 tmp57 [V61,T20] ( 3, 2.50) int -> edx "Inline stloc first use temp"
;* V62 tmp58 [V62 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP ;* V63 tmp59 [V63 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x4)" P-INDEP
-; V64 tmp60 [V64,T18] ( 3, 3 ) byref -> ecx single-def "field V05._reference (fldOffset=0x0)" P-INDEP -;* V65 tmp61 [V65,T36] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x4)" P-INDEP
+; V64 tmp60 [V64,T17] ( 3, 3 ) byref -> ecx single-def "field V05._reference (fldOffset=0x0)" P-INDEP +;* V65 tmp61 [V65,T35] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x4)" P-INDEP
;* V66 tmp62 [V66 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP ;* V67 tmp63 [V67 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x4)" P-INDEP ;* V68 tmp64 [V68 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp65 [V69 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP
-; V70 tmp66 [V70,T25] ( 3, 1.50) byref -> edi "field V14._reference (fldOffset=0x0)" P-INDEP -; V71 tmp67 [V71,T26] ( 3, 1.50) int -> ebx "field V14._length (fldOffset=0x4)" P-INDEP
+; V70 tmp66 [V70,T24] ( 3, 1.50) byref -> edi "field V14._reference (fldOffset=0x0)" P-INDEP +; V71 tmp67 [V71,T25] ( 3, 1.50) int -> ebx "field V14._length (fldOffset=0x4)" P-INDEP
; V72 tmp68 [V72 ] ( 2, 1 ) byref -> [ebp-0xB0] do-not-enreg[X] addr-exposed "field V16._reference (fldOffset=0x0)" P-DEP ; V73 tmp69 [V73 ] ( 2, 1 ) int -> [ebp-0xAC] do-not-enreg[X] addr-exposed "field V16._length (fldOffset=0x4)" P-DEP ; V74 tmp70 [V74,T04] ( 8, 14.50) byref -> edi "field V17._reference (fldOffset=0x0)" P-INDEP @@ -88,33 +88,32 @@ ;* V77 tmp73 [V77 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP ;* V78 tmp74 [V78 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP ;* V79 tmp75 [V79 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x4)" P-INDEP
-; V80 tmp76 [V80,T14] ( 2, 4.50) byref -> [ebp-0xD4] spill-single-def "field V20._reference (fldOffset=0x0)" P-INDEP -; V81 tmp77 [V81,T13] ( 3, 5 ) int -> [ebp-0xBC] spill-single-def "field V20._length (fldOffset=0x4)" P-INDEP
+; V80 tmp76 [V80,T13] ( 2, 4.50) byref -> [ebp-0xD0] spill-single-def "field V20._reference (fldOffset=0x0)" P-INDEP +; V81 tmp77 [V81,T12] ( 3, 5 ) int -> [ebp-0xBC] spill-single-def "field V20._length (fldOffset=0x4)" P-INDEP
;* V82 tmp78 [V82 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP ;* V83 tmp79 [V83 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP
-; V84 tmp80 [V84,T27] ( 2, 1 ) byref -> edx single-def "field V24._reference (fldOffset=0x0)" P-INDEP -; V85 tmp81 [V85,T32] ( 2, 1 ) int -> ecx "field V24._length (fldOffset=0x4)" P-INDEP
+; V84 tmp80 [V84,T26] ( 2, 1 ) byref -> edx single-def "field V24._reference (fldOffset=0x0)" P-INDEP +; V85 tmp81 [V85,T31] ( 2, 1 ) int -> ecx "field V24._length (fldOffset=0x4)" P-INDEP
;* V86 tmp82 [V86 ] ( 0, 0 ) byref -> zero-ref single-def "field V25._reference (fldOffset=0x0)" P-INDEP ;* V87 tmp83 [V87 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x4)" P-INDEP ;* V88 tmp84 [V88 ] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP ;* V89 tmp85 [V89 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x4)" P-INDEP
-; V90 tmp86 [V90,T28] ( 2, 1 ) byref -> edi single-def "field V36._reference (fldOffset=0x0)" P-INDEP -; V91 tmp87 [V91,T33] ( 2, 1 ) int -> ebx "field V36._length (fldOffset=0x4)" P-INDEP -; V92 tmp88 [V92,T29] ( 2, 1 ) byref -> [ebp-0xD8] spill-single-def "field V41._reference (fldOffset=0x0)" P-INDEP
+; V90 tmp86 [V90,T27] ( 2, 1 ) byref -> edi single-def "field V36._reference (fldOffset=0x0)" P-INDEP +; V91 tmp87 [V91,T32] ( 2, 1 ) int -> ebx "field V36._length (fldOffset=0x4)" P-INDEP +; V92 tmp88 [V92,T28] ( 2, 1 ) byref -> [ebp-0xD4] spill-single-def "field V41._reference (fldOffset=0x0)" P-INDEP
;* V93 tmp89 [V93 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x4)" P-INDEP
-; V94 tmp90 [V94,T30] ( 2, 1 ) byref -> edx single-def "field V42._reference (fldOffset=0x0)" P-INDEP -; V95 tmp91 [V95,T34] ( 2, 1 ) int -> eax "field V42._length (fldOffset=0x4)" P-INDEP -; V96 tmp92 [V96,T08] ( 3, 8 ) byref -> registers "field V46._reference (fldOffset=0x0)" P-INDEP -; V97 tmp93 [V97,T02] ( 5, 16 ) int -> [ebp-0xC0] "field V46._length (fldOffset=0x4)" P-INDEP
+; V94 tmp90 [V94,T29] ( 2, 1 ) byref -> edx single-def "field V42._reference (fldOffset=0x0)" P-INDEP +; V95 tmp91 [V95,T33] ( 2, 1 ) int -> eax "field V42._length (fldOffset=0x4)" P-INDEP +; V96 tmp92 [V96,T07] ( 3, 8 ) byref -> registers "field V46._reference (fldOffset=0x0)" P-INDEP +; V97 tmp93 [V97,T01] ( 6, 20 ) int -> [ebp-0xC0] "field V46._length (fldOffset=0x4)" P-INDEP
;* V98 tmp94 [V98 ] ( 0, 0 ) byref -> zero-ref "field V47._reference (fldOffset=0x0)" P-INDEP ;* V99 tmp95 [V99 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x4)" P-INDEP
-; V100 tmp96 [V100,T09] ( 2, 8 ) byref -> edi "field V53._reference (fldOffset=0x0)" P-INDEP -; V101 tmp97 [V101,T10] ( 2, 8 ) int -> ebx "field V53._length (fldOffset=0x4)" P-INDEP -; V102 tmp98 [V102,T31] ( 2, 1 ) byref -> ecx single-def "field V59._reference (fldOffset=0x0)" P-INDEP -; V103 tmp99 [V103,T35] ( 2, 1 ) int -> esi "field V59._length (fldOffset=0x4)" P-INDEP -; V104 cse0 [V104,T07] ( 3, 12 ) int -> [ebp-0xC4] spill-single-def "CSE - moderate"
+; V100 tmp96 [V100,T08] ( 2, 8 ) byref -> edi "field V53._reference (fldOffset=0x0)" P-INDEP +; V101 tmp97 [V101,T09] ( 2, 8 ) int -> ebx "field V53._length (fldOffset=0x4)" P-INDEP +; V102 tmp98 [V102,T30] ( 2, 1 ) byref -> ecx single-def "field V59._reference (fldOffset=0x0)" P-INDEP +; V103 tmp99 [V103,T34] ( 2, 1 ) int -> esi "field V59._length (fldOffset=0x4)" P-INDEP
;
-; Lcl frame size = 204
+; Lcl frame size = 200
G_M32039_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -122,7 +121,7 @@ G_M32039_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 204
+ sub esp, 200
vzeroupper vxorps xmm4, xmm4, xmm4 vmovdqu ymmword ptr [ebp-0xB0], ymm4 @@ -173,10 +172,10 @@ G_M32039_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; byrRegs -[edi] lea edi, bword ptr [esi+0x08] ; byrRegs +[edi]
- mov gword ptr [ebp-0xC8], esi
+ mov gword ptr [ebp-0xC4], esi
; GC ptr vars +{V09} mov ebx, dword ptr [esi+0x04]
- mov esi, gword ptr [ebp-0xC8]
+ mov esi, gword ptr [ebp-0xC4]
;; size=18 bbWeight=0.50 PerfScore 2.25 G_M32039_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz ; GC ptr vars -{V09} @@ -187,7 +186,7 @@ G_M32039_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov edx, bword ptr [ebp-0x2C] ; byrRegs +[edx] mov ecx, dword ptr [ebp-0x28]
- mov bword ptr [ebp-0xCC], edx
+ mov bword ptr [ebp-0xC8], edx
; GC ptr vars +{V27} mov dword ptr [ebp-0xB8], ecx cmp ecx, ebx @@ -197,7 +196,7 @@ G_M32039_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 push edx mov ecx, edi ; byrRegs +[ecx]
- mov edx, bword ptr [ebp-0xCC]
+ mov edx, bword ptr [ebp-0xC8]
; byrRegs +[edx] ; GC ptr vars -{V27} call [<unknown method>] @@ -219,7 +218,7 @@ G_M32039_IG06: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 je SHORT G_M32039_IG10 lea edx, bword ptr [ebp-0x98] ; byrRegs +[edx]
- mov bword ptr [ebp-0xD8], edx
+ mov bword ptr [ebp-0xD4], edx
; GC ptr vars +{V92} cmp eax, 27 ja G_M32039_IG24 @@ -235,19 +234,19 @@ G_M32039_IG06: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; gcrRegs -[ecx edx] ;; size=56 bbWeight=0.50 PerfScore 5.38 G_M32039_IG07: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
- mov edx, bword ptr [ebp-0xD8]
+ mov edx, bword ptr [ebp-0xD4]
; byrRegs +[edx] mov eax, dword ptr [ebp-0xA8]
- mov bword ptr [ebp-0xD4], edx
+ mov bword ptr [ebp-0xD0], edx
; GC ptr vars +{V80} mov dword ptr [ebp-0xBC], eax xor ecx, ecx test eax, eax
- mov gword ptr [ebp-0xC8], esi
+ mov gword ptr [ebp-0xC4], esi
; GC ptr vars +{V09} jle G_M32039_IG16 ;; size=40 bbWeight=0.50 PerfScore 3.25
-G_M32039_IG08: ; bbWeight=4, gcVars=0000000000024000 {V09 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref, isz
+G_M32039_IG08: ; bbWeight=4, gcVars=0000000000012000 {V09 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref, isz
; gcrRegs -[esi] ; GC ptr vars -{V92} mov dword ptr [ebp-0xB4], ecx @@ -268,17 +267,17 @@ G_M32039_IG10: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs +[esi] ; byrRegs -[esi] ; GC ptr vars -{V09 V80}
- mov gword ptr [ebp-0xC8], esi
+ mov gword ptr [ebp-0xC4], esi
; GC ptr vars +{V09} jmp SHORT G_M32039_IG16 ;; size=8 bbWeight=0.25 PerfScore 0.75 G_M32039_IG11: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz ; GC ptr vars -{V09}
- mov gword ptr [ebp-0xC8], esi
+ mov gword ptr [ebp-0xC4], esi
; GC ptr vars +{V09} jmp SHORT G_M32039_IG16 ;; size=8 bbWeight=0.25 PerfScore 0.75
-G_M32039_IG12: ; bbWeight=2, gcVars=0000000000024000 {V09 V80}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref
+G_M32039_IG12: ; bbWeight=2, gcVars=0000000000012000 {V09 V80}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref
; GC ptr vars +{V80} lea edx, bword ptr [esi+0x08] ; byrRegs +[edx] @@ -297,7 +296,6 @@ G_M32039_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {e ja G_M32039_IG25 mov dword ptr [ebp-0xC0], edx lea eax, [edx+edx]
- mov dword ptr [ebp-0xC4], eax
push eax mov ecx, edi ; byrRegs +[ecx] @@ -305,11 +303,11 @@ G_M32039_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {e ; byrRegs +[edx] call [<unknown method>] ; byrRegs -[ecx edx esi]
- mov esi, dword ptr [ebp-0xC4] - add edi, esi - sub ebx, dword ptr [ebp-0xC0]
+ mov esi, dword ptr [ebp-0xC0] + lea edi, bword ptr [edi+2*esi] + sub ebx, esi
jns SHORT G_M32039_IG15
- ;; size=50 bbWeight=4 PerfScore 50.00
+ ;; size=41 bbWeight=4 PerfScore 40.00
G_M32039_IG14: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] @@ -323,11 +321,11 @@ G_M32039_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000080 {e ...

-9 (-1.01%) : 23598.dasm - BenchmarksGame.RegexRedux_1:RunBench():int:this (FullOpts)

@@ -53,21 +53,21 @@ ;* V42 tmp29 [V42 ] ( 0, 0 ) ref -> zero-ref ;* V43 tmp30 [V43 ] ( 0, 0 ) int -> zero-ref ;* V44 tmp31 [V44 ] ( 0, 0 ) int -> zero-ref
-; V45 tmp32 [V45,T31] ( 3, 8 ) int -> eax
+; V45 tmp32 [V45,T32] ( 3, 8 ) int -> eax
;* V46 tmp33 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ;* V47 tmp34 [V47 ] ( 0, 0 ) ref -> zero-ref ;* V48 tmp35 [V48 ] ( 0, 0 ) ref -> zero-ref ;* V49 tmp36 [V49 ] ( 0, 0 ) ref -> zero-ref ;* V50 tmp37 [V50 ] ( 0, 0 ) int -> zero-ref ; V51 tmp38 [V51,T02] ( 10, 36 ) ref -> [ebp-0x34] spill-single-def
-; V52 tmp39 [V52,T27] ( 3, 10 ) ref -> [ebp-0x38] spill-single-def
+; V52 tmp39 [V52,T20] ( 3, 12 ) ref -> [ebp-0x38] spill-single-def
; V53 tmp40 [V53,T06] ( 6, 30 ) ref -> [ebp-0x3C] spill-single-def ;* V54 tmp41 [V54,T50] ( 0, 0 ) int -> zero-ref
-; V55 tmp42 [V55,T32] ( 3, 8 ) int -> [ebp-0x18]
+; V55 tmp42 [V55,T28] ( 3, 10 ) int -> [ebp-0x18]
; V56 tmp43 [V56,T15] ( 2, 16 ) ref -> edi class-hnd exact "dup spill" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]> ; V57 tmp44 [V57,T10] ( 8, 22 ) ref -> registers
-; V58 tmp45 [V58,T20] ( 3, 12 ) ref -> [ebp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]> -; V59 tmp46 [V59,T21] ( 3, 12 ) byref -> edi "finalizable newobj spill"
+; V58 tmp45 [V58,T21] ( 3, 12 ) ref -> [ebp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]> +; V59 tmp46 [V59,T22] ( 3, 12 ) byref -> edi "finalizable newobj spill"
; V60 tmp47 [V60,T34] ( 2, 8 ) ref -> edi class-hnd exact "dup spill" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]> ;* V61 tmp48 [V61 ] ( 0, 0 ) ref -> zero-ref ;* V62 tmp49 [V62 ] ( 0, 0 ) ref -> zero-ref @@ -77,27 +77,27 @@ ;* V66 tmp53 [V66 ] ( 0, 0 ) ref -> zero-ref ;* V67 tmp54 [V67 ] ( 0, 0 ) int -> zero-ref ;* V68 tmp55 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.ComAwareWeakReference+ComInfo>
-; V69 tmp56 [V69,T29] ( 4, 8 ) int -> eax "Inline stloc first use temp"
+; V69 tmp56 [V69,T30] ( 4, 8 ) int -> eax "Inline stloc first use temp"
;* V70 tmp57 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.ComAwareWeakReference+ComInfo> ;* V71 tmp58 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.RegexReplacement> ; V72 tmp59 [V72,T12] ( 6, 18 ) ref -> esi ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.RegexReplacement>
-; V73 tmp60 [V73,T25] ( 2, 12 ) int -> [ebp-0x1C] spill-single-def "Inlining Arg" -; V74 tmp61 [V74,T23] ( 2, 12 ) ref -> [ebp-0x44] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable> -; V75 tmp62 [V75,T26] ( 2, 12 ) int -> [ebp-0x20] spill-single-def "Inlining Arg" -; V76 tmp63 [V76,T24] ( 2, 12 ) ref -> [ebp-0x48] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable>
+; V73 tmp60 [V73,T26] ( 2, 12 ) int -> [ebp-0x1C] spill-single-def "Inlining Arg" +; V74 tmp61 [V74,T24] ( 2, 12 ) ref -> [ebp-0x44] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable> +; V75 tmp62 [V75,T27] ( 2, 12 ) int -> [ebp-0x20] spill-single-def "Inlining Arg" +; V76 tmp63 [V76,T25] ( 2, 12 ) ref -> [ebp-0x48] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable>
;* V77 tmp64 [V77 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V78 tmp65 [V78 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexReplacement>
-; V79 tmp66 [V79,T30] ( 3, 8 ) ref -> esi class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexReplacement>
+; V79 tmp66 [V79,T31] ( 3, 8 ) ref -> esi class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexReplacement>
; V80 tmp67 [V80,T18] ( 5, 14 ) int -> esi "Inline stloc first use temp" ;* V81 tmp68 [V81 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Text.RegularExpressions.RegexReplacement> ; V82 tmp69 [V82,T39] ( 3, 6 ) ref -> esi class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.RegexReplacement> ;* V83 tmp70 [V83 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Text.RegularExpressions.RegexReplacement> ;* V84 tmp71 [V84 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.RegexReplacement>
-; V85 tmp72 [V85,T22] ( 3, 12 ) ref -> esi class-hnd "updating class info" <System.ComAwareWeakReference>
+; V85 tmp72 [V85,T23] ( 3, 12 ) ref -> esi class-hnd "updating class info" <System.ComAwareWeakReference>
;* V86 tmp73 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V87 tmp74 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V88 tmp75 [V88,T35] ( 2, 8 ) ref -> eax class-hnd "dup spill" <System.Object>
-; V89 tmp76 [V89,T28] ( 4, 8 ) ref -> eax
+; V89 tmp76 [V89,T29] ( 4, 8 ) ref -> eax
;* V90 tmp77 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.RegexReplacement> ; V91 tmp78 [V91,T19] ( 2, 4 ) ubyte -> eax "Inline return value spill temp" ; V92 tmp79 [V92,T01] ( 6, 52 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String> @@ -156,7 +156,7 @@ G_M53318_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 call [System.Text.RegularExpressions.Regex:.ctor(System.String,int):this] ; gcrRegs -[eax ecx edx] test esi, esi
- je G_M53318_IG37
+ je G_M53318_IG36
test byte ptr [edi+0x20], 64 jne SHORT G_M53318_IG04 ;; size=44 bbWeight=1 PerfScore 13.25 @@ -231,7 +231,7 @@ G_M53318_IG06: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 call [System.Text.RegularExpressions.Regex:.ctor(System.String,int):this] ; gcrRegs -[eax ecx edx] test esi, esi
- je G_M53318_IG37
+ je G_M53318_IG36
mov ecx, dword ptr [esi+0x04] mov edx, gword ptr [ebp-0x2C] ; gcrRegs +[edx] @@ -335,7 +335,7 @@ G_M53318_IG13: ; bbWeight=4, gcVars=0000800000000000 {V10}, gcrefRegs=000 call [System.Text.RegularExpressions.Regex:.ctor(System.String,int):this] ; gcrRegs -[eax ecx edx] test esi, esi
- je G_M53318_IG37
+ je G_M53318_IG36
mov eax, gword ptr [ebp-0x30] ; gcrRegs +[eax] mov gword ptr [ebp-0x34], eax @@ -349,26 +349,26 @@ G_M53318_IG13: ; bbWeight=4, gcVars=0000800000000000 {V10}, gcrefRegs=000 test byte ptr [eax+0x20], 64 jne SHORT G_M53318_IG15 ;; size=73 bbWeight=4 PerfScore 103.00
-G_M53318_IG14: ; bbWeight=2, gcVars=0000800008000044 {V10 V51 V52 V53}, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M53318_IG14: ; bbWeight=2, gcVars=0000800000100044 {V10 V51 V52 V53}, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V22 V100} xor ecx, ecx
+ mov dword ptr [ebp-0x18], ecx
jmp SHORT G_M53318_IG16
- ;; size=4 bbWeight=2 PerfScore 4.50 -G_M53318_IG15: ; bbWeight=2, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref
+ ;; size=7 bbWeight=2 PerfScore 6.50 +G_M53318_IG15: ; bbWeight=4, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [esi+0x04] mov dword ptr [ebp-0x18], ecx
- mov esi, gword ptr [ebp-0x38] - ;; size=9 bbWeight=2 PerfScore 8.00 -G_M53318_IG16: ; bbWeight=4, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref
+ ;; size=6 bbWeight=4 PerfScore 12.00 +G_M53318_IG16: ; bbWeight=4, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[esi]
test edx, edx
- je G_M53318_IG38
+ je G_M53318_IG37
mov edi, gword ptr [eax+0x18] ; gcrRegs +[edi] test edi, edi
- mov dword ptr [ebp-0x18], ecx - jne G_M53318_IG22 - ;; size=22 bbWeight=4 PerfScore 22.00 -G_M53318_IG17: ; bbWeight=2, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M53318_IG19 + ;; size=15 bbWeight=4 PerfScore 18.00 +G_M53318_IG17: ; bbWeight=2, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx edi] lea edi, bword ptr [eax+0x18] ; byrRegs +[edi] @@ -389,12 +389,12 @@ G_M53318_IG17: ; bbWeight=2, gcrefRegs=00000041 {eax esi}, byrefRegs=0000 call [<unknown method>] ; gcrRegs -[ecx] ;; size=39 bbWeight=2 PerfScore 18.00
-G_M53318_IG18: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
+G_M53318_IG18: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
mov edx, gword ptr [ebp-0x40] ; gcrRegs +[edx] mov dword ptr [edx+0x04], eax test edi, edi
- je G_M53318_IG39
+ je G_M53318_IG38
push 0 mov ecx, edi ; byrRegs +[ecx] @@ -415,7 +415,7 @@ G_M53318_IG18: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000080 mov edi, ecx ;; size=43 bbWeight=2 PerfScore 22.00 G_M53318_IG19: ; bbWeight=4, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx esi]
+ ; gcrRegs -[ecx]
mov ecx, gword ptr [eax+0x0C] ; gcrRegs +[ecx] mov gword ptr [ebp-0x44], ecx @@ -431,40 +431,37 @@ G_M53318_IG19: ; bbWeight=4, gcrefRegs=00000081 {eax edi}, byrefRegs=0000 mov dword ptr [ebp-0x1C], esi mov esi, dword ptr [edi+0x04] and esi, -2
- jne SHORT G_M53318_IG23
+ jne SHORT G_M53318_IG22
;; size=32 bbWeight=4 PerfScore 61.00
-G_M53318_IG20: ; bbWeight=2, gcVars=0000800009800044 {V10 V51 V52 V53 V74 V76}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M53318_IG20: ; bbWeight=2, gcVars=0000800003100044 {V10 V51 V52 V53 V74 V76}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax ecx] mov eax, gword ptr [ebp-0x34] ; gcrRegs +[eax] xor esi, esi ; gcrRegs +[esi]
- jmp SHORT G_M53318_IG27
+ jmp SHORT G_M53318_IG26
;; size=7 bbWeight=2 PerfScore 6.50
-G_M53318_IG21: ; bbWeight=1, gcVars=0000800008000044 {V10 V51 V52 V53}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax]
+G_M53318_IG21: ; bbWeight=1, gcVars=0000800000100044 {V10 V51 V52 V53}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax esi]
; GC ptr vars -{V74 V76} mov eax, gword ptr [ebp-0x34] ; gcrRegs +[eax] jmp SHORT G_M53318_IG19 ;; size=5 bbWeight=1 PerfScore 3.00
-G_M53318_IG22: ; bbWeight=2, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M53318_IG19 - ;; size=2 bbWeight=2 PerfScore 4.00 -G_M53318_IG23: ; bbWeight=2, gcVars=0000800009800044 {V10 V51 V52 V53 V74 V76}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax esi]
+G_M53318_IG22: ; bbWeight=2, gcVars=0000800003100044 {V10 V51 V52 V53 V74 V76}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax]
; GC ptr vars +{V74 V76} mov eax, gword ptr [ebp-0x34] ; gcrRegs +[eax] test esi, 2
- jne SHORT G_M53318_IG24
+ jne SHORT G_M53318_IG23
mov ecx, esi call <unknown method> mov esi, eax ; gcrRegs +[esi]
- jmp SHORT G_M53318_IG26
+ jmp SHORT G_M53318_IG25
;; size=22 bbWeight=2 PerfScore 11.50
-G_M53318_IG24: ; bbWeight=2, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref, isz
+G_M53318_IG23: ; bbWeight=2, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi] mov ecx, esi and ecx, -4 @@ -474,40 +471,40 @@ G_M53318_IG24: ; bbWeight=2, gcrefRegs=00000081 {eax edi}, byrefRegs=0000 mov ecx, dword ptr [esi+0x08] call <unknown method> test eax, eax
- jne SHORT G_M53318_IG25
+ jne SHORT G_M53318_IG24
mov ecx, esi ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx esi] ;; size=32 bbWeight=2 PerfScore 18.50
-G_M53318_IG25: ; bbWeight=2, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
+G_M53318_IG24: ; bbWeight=2, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
mov esi, eax ; gcrRegs +[esi] ;; size=2 bbWeight=2 PerfScore 0.50
-G_M53318_IG26: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M53318_IG25: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] mov eax, gword ptr [ebp-0x34] ; gcrRegs +[eax] ;; size=3 bbWeight=2 PerfScore 2.00
-G_M53318_IG27: ; bbWeight=4, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
+G_M53318_IG26: ; bbWeight=4, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
test esi, esi
- je G_M53318_IG36
+ je G_M53318_IG35
;; size=8 bbWeight=4 PerfScore 5.00
-G_M53318_IG28: ; bbWeight=2, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M53318_IG27: ; bbWeight=2, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [esi+0x0C] ; gcrRegs +[ecx] cmp byte ptr [ecx], cl cmp ecx, gword ptr [ebp-0x3C]
- je SHORT G_M53318_IG32
+ je SHORT G_M53318_IG31
;; size=10 bbWeight=2 PerfScore 16.00
-G_M53318_IG29: ; bbWeight=16, gcrefRegs=000000C3 {eax ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M53318_IG28: ; bbWeight=16, gcrefRegs=000000C3 {eax ecx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ecx+0x04] mov ebx, gword ptr [ebp-0x3C] ; gcrRegs +[ebx] cmp edx, dword ptr [ebx+0x04]
- jne SHORT G_M53318_IG31
+ jne SHORT G_M53318_IG30
;; size=11 bbWeight=16 PerfScore 112.00
-G_M53318_IG30: ; bbWeight=2, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
...

+2 (+0.11%) : 16171.dasm - System.Threading.ReaderWriterLockSlim:TryEnterReadLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (FullOpts)

@@ -65,7 +65,7 @@ ; V54 tmp48 [V54,T14] ( 9, 40 ) ref -> registers class-hnd "Inline stloc first use temp" <System.Threading.ReaderWriterCount> ;* V55 tmp49 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Threading.ReaderWriterCount> ;* V56 tmp50 [V56,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V57 tmp51 [V57,T72] ( 3, 3 ) byref -> esi "Inlining Arg"
+; V57 tmp51 [V57,T72] ( 3, 3 ) byref -> esi single-def "Inlining Arg"
;* V58 tmp52 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V59 tmp53 [V59,T85] ( 2, 2 ) int -> ebx "Single return block return value" ; V60 tmp54 [V60,T41] ( 6, 13 ) int -> [ebp-0x1C] spill-single-def "V01.[000..004)" @@ -141,7 +141,7 @@ G_M55237_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov edi, dword ptr [ebp+0x08] mov dword ptr [ebp-0x1C], edi cmp byte ptr [esi+0x3B], 0
- jne G_M55237_IG101
+ jne G_M55237_IG102
call <unknown method> mov ebx, eax mov dword ptr [ebp-0x10], ebx @@ -150,7 +150,7 @@ G_M55237_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ;; size=36 bbWeight=1 PerfScore 12.25 G_M55237_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz cmp ebx, dword ptr [esi+0x30]
- je G_M55237_IG102
+ je G_M55237_IG103
lea ecx, bword ptr [esi+0x3C] ; byrRegs +[ecx] mov edx, 1 @@ -167,11 +167,11 @@ G_M55237_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov ecx, dword ptr FS:[0x002C] mov ecx, dword ptr [ecx] cmp dword ptr [ecx+0x80], 3
- jl G_M55237_IG103
+ jl G_M55237_IG104
mov ecx, dword ptr [ecx+0x84] mov ecx, dword ptr [ecx+0x0C] test ecx, ecx
- je G_M55237_IG103
+ je G_M55237_IG104
mov eax, bword ptr [ecx] ; byrRegs +[eax] add eax, 8 @@ -310,7 +310,7 @@ G_M55237_IG16: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=0 ; gcrRegs +[edi] mov edx, dword ptr [edi+0x10] test edx, edx
- jg G_M55237_IG104
+ jg G_M55237_IG105
mov ebx, dword ptr [ebp-0x10] cmp ebx, dword ptr [esi+0x2C] jne G_M55237_IG39 @@ -353,11 +353,11 @@ G_M55237_IG19: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov ecx, dword ptr FS:[0x002C] mov ecx, dword ptr [ecx] cmp dword ptr [ecx+0x80], 3
- jl G_M55237_IG105
+ jl G_M55237_IG106
mov ecx, dword ptr [ecx+0x84] mov ecx, dword ptr [ecx+0x0C] test ecx, ecx
- je G_M55237_IG105
+ je G_M55237_IG106
mov eax, bword ptr [ecx] ; byrRegs +[eax] add eax, 8 @@ -590,7 +590,7 @@ G_M55237_IG39: ; bbWeight=0.50, gcVars=00000000000000000000001000000000 { ;; size=12 bbWeight=0.50 PerfScore 1.12 G_M55237_IG40: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz cmp dword ptr [esi+0x34], 0xD1FFAB1E
- jb G_M55237_IG98
+ jb G_M55237_IG94
mov ecx, dword ptr [ebp-0x1C] cmp ecx, -1 je SHORT G_M55237_IG42 @@ -605,16 +605,16 @@ G_M55237_IG42: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 G_M55237_IG43: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref call <unknown method> sub eax, dword ptr [ebp+0x0C]
- js G_M55237_IG94
+ js G_M55237_IG95
mov edx, dword ptr [ebp-0x1C] cmp eax, edx
- jge G_M55237_IG94
+ jge G_M55237_IG95
mov ecx, edx sub ecx, eax ;; size=29 bbWeight=2 PerfScore 13.50 G_M55237_IG44: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref test ecx, ecx
- je G_M55237_IG94
+ je G_M55237_IG95
;; size=8 bbWeight=2 PerfScore 2.50 G_M55237_IG45: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz cmp dword ptr [ebp-0x18], 20 @@ -1022,7 +1022,7 @@ G_M55237_IG82: ; bbWeight=4, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs= mov ebx, eax mov dword ptr [ebp-0x14], ebx test ebx, ebx
- je G_M55237_IG96
+ je G_M55237_IG97
lea ecx, bword ptr [edi+0x04] ; byrRegs +[ecx] mov eax, dword ptr [ecx] @@ -1157,14 +1157,20 @@ G_M55237_IG93: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000 ; gcrRegs +[edi] jmp G_M55237_IG40 ;; size=7 bbWeight=4 PerfScore 9.00
-G_M55237_IG94: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[ebx edi]
+G_M55237_IG94: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[ebx]
; GC ptr vars -{V67}
+ inc dword ptr [esi+0x34] + inc dword ptr [edi+0x10] + jmp SHORT G_M55237_IG99 + ;; size=8 bbWeight=0.50 PerfScore 4.00 +G_M55237_IG95: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[edi]
add esi, 60 ; gcrRegs -[esi] ; byrRegs +[esi] cmp dword ptr [esi], 0
- jne SHORT G_M55237_IG95
+ jne SHORT G_M55237_IG96
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -1172,15 +1178,15 @@ G_M55237_IG94: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 { call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=24 bbWeight=0.50 PerfScore 3.88
-G_M55237_IG95: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+G_M55237_IG96: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
xor eax, eax mov dword ptr [esi], eax ;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M55237_IG96: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M55237_IG97: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; byrRegs -[esi] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M55237_IG97: ; bbWeight=0.50, epilog, nogc, extend
+G_M55237_IG98: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -1188,29 +1194,27 @@ G_M55237_IG97: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 8 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M55237_IG98: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi edi] - inc dword ptr [esi+0x34] - inc dword ptr [edi+0x10]
+G_M55237_IG99: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[esi]
add esi, 60 ; gcrRegs -[esi] ; byrRegs +[esi] cmp dword ptr [esi], 0
- jne SHORT G_M55237_IG99
+ jne SHORT G_M55237_IG100
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>]
- ; gcrRegs -[ecx edx edi] - ;; size=30 bbWeight=0.50 PerfScore 6.88 -G_M55237_IG99: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+ ; gcrRegs -[ecx edx] + ;; size=24 bbWeight=0.50 PerfScore 3.88 +G_M55237_IG100: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
xor eax, eax mov dword ptr [esi], eax mov ebx, dword ptr [ebp-0x14] movzx eax, bl ;; size=10 bbWeight=0.50 PerfScore 1.25
-G_M55237_IG100: ; bbWeight=0.50, epilog, nogc, extend
+G_M55237_IG101: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -1218,7 +1222,7 @@ G_M55237_IG100: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 8 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M55237_IG101: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M55237_IG102: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi] ; byrRegs -[esi] mov ecx, esi @@ -1227,7 +1231,7 @@ G_M55237_IG101: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, ; gcrRegs -[ecx esi] int3 ;; size=9 bbWeight=0 PerfScore 0.00
-G_M55237_IG102: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M55237_IG103: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; System.Threading.LockRecursionException call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] @@ -1250,14 +1254,14 @@ G_M55237_IG102: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 { call CORINFO_HELP_THROW ; gcrRegs -[ecx esi] ;; size=43 bbWeight=0 PerfScore 0.00
-G_M55237_IG103: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M55237_IG104: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi] mov ecx, 3 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED ; byrRegs +[eax] jmp G_M55237_IG05 ;; size=15 bbWeight=0 PerfScore 0.00
-G_M55237_IG104: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M55237_IG105: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; byrRegs -[eax] lea ecx, bword ptr [esi+0x3C] ; byrRegs +[ecx] @@ -1286,7 +1290,7 @@ G_M55237_IG104: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=0000000 call CORINFO_HELP_THROW ; gcrRegs -[ecx esi] ;; size=52 bbWeight=0 PerfScore 0.00
-G_M55237_IG105: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M55237_IG106: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi] mov ecx, 3 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED @@ -1294,6 +1298,6 @@ G_M55237_IG105: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=0000000 jmp G_M55237_IG20 ;; size=15 bbWeight=0 PerfScore 0.00
-Total bytes of code 1870, prolog size 11, PerfScore 4653.88, instruction count 619, allocated bytes for code 1870 (MethodHash=22c1283a) for method System.Threading.ReaderWriterLockSlim:TryEnterReadLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (FullOpts)
+Total bytes of code 1872, prolog size 11, PerfScore 4654.88, instruction count 620, allocated bytes for code 1872 (MethodHash=22c1283a) for method System.Threading.ReaderWriterLockSlim:TryEnterReadLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (FullOpts)
; ============================================================

+7 (+0.25%) : 2636.dasm - System.Net.Security.SslStream:SelectClientCertificate():System.Security.Cryptography.X509Certificates.X509Certificate2:this (FullOpts)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 100 single block inlinees; 37 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 51,111 ) ref -> [ebp-0x28] this class-hnd EH-live single-def <System.Net.Security.SslStream>
+; V00 this [V00,T09] ( 51,111 ) ref -> [ebp-0x28] this class-hnd EH-live single-def <System.Net.Security.SslStream>
; V01 loc0 [V01,T35] ( 9, 30 ) ref -> esi class-hnd <System.Security.Cryptography.X509Certificates.X509Certificate> ; V02 loc1 [V02,T41] ( 5, 19 ) ref -> [ebp-0x2C] do-not-enreg[Z] class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Certificate2> ; V03 loc2 [V03,T22] ( 13, 43 ) ref -> [ebp-0x30] do-not-enreg[M] ld-addr-op class-hnd EH-live <<unknown class>> @@ -21,10 +21,10 @@ ; V10 loc9 [V10,T12] ( 9, 92 ) ref -> [ebp-0x40] do-not-enreg[Z] class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Chain> ; V11 loc10 [V11,T14] ( 3, 68 ) ubyte -> ebx ; V12 loc11 [V12,T23] ( 3, 40 ) int -> esi
-; V13 loc12 [V13,T03] ( 5,132 ) int -> edi
+; V13 loc12 [V13,T04] ( 5,132 ) int -> edi
;* V14 loc13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ; V15 loc14 [V15,T24] ( 3, 40 ) int -> ebx
-; V16 loc15 [V16,T04] ( 5,132 ) int -> esi
+; V16 loc15 [V16,T05] ( 5,132 ) int -> esi
; V17 loc16 [V17,T16] ( 7, 49 ) int -> edi ; V18 tmp0 [V18,T67] ( 3, 6 ) ref -> eax class-hnd exact single-def "dup spill" <System.Object[]> ; V19 tmp1 [V19,T17] ( 3, 48 ) ref -> eax class-hnd "dup spill" <System.Security.Cryptography.X509Certificates.X509Certificate2> @@ -32,7 +32,7 @@ ;* V21 tmp3 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>> ; V22 tmp4 [V22,T36] ( 3, 24 ) ref -> ebx class-hnd exact "impAppendStmt" <System.Net.NetEventSource> ; V23 tmp5 [V23,T15] ( 8, 64 ) ref -> esi class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509Chain>
-; V24 tmp6 [V24,T09] ( 3, 96 ) ref -> eax class-hnd exact "dup spill" <System.Object[]>
+; V24 tmp6 [V24,T10] ( 3, 96 ) ref -> eax class-hnd exact "dup spill" <System.Object[]>
; V25 tmp7 [V25,T37] ( 3, 24 ) ref -> eax class-hnd exact "dup spill" <System.Object[]> ; V26 tmp8 [V26,T38] ( 3, 24 ) ref -> esi class-hnd exact "dup spill" <System.Object[]> ;* V27 tmp9 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.Security.LocalCertificateSelectionCallback> @@ -143,10 +143,10 @@ ;* V132 tmp114 [V132 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection> ;* V133 tmp115 [V133 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElement> ;* V134 tmp116 [V134 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
-; V135 tmp117 [V135,T00] ( 6,320 ) ref -> ebx class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2> -; V136 tmp118 [V136,T05] ( 2,128 ) ref -> eax class-hnd exact "dup spill" <System.String> -; V137 tmp119 [V137,T02] ( 6,132 ) ref -> [ebp-0x48] -; V138 tmp120 [V138,T10] ( 3, 96 ) ref -> eax class-hnd exact "dup spill" <System.String>
+; V135 tmp117 [V135,T00] ( 6,384 ) ref -> ebx class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2> +; V136 tmp118 [V136,T06] ( 2,128 ) ref -> eax class-hnd exact "dup spill" <System.String> +; V137 tmp119 [V137,T03] ( 6,148 ) ref -> [ebp-0x48] +; V138 tmp120 [V138,T01] ( 3,192 ) ref -> eax class-hnd exact "dup spill" <System.String>
;* V139 tmp121 [V139 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String> ;* V140 tmp122 [V140 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource> ;* V141 tmp123 [V141 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.NetEventSource> @@ -234,9 +234,9 @@ ; V223 tmp205 [V223,T85] ( 3, 6 ) ref -> eax single-def "argument with side effect" ; V224 tmp206 [V224,T86] ( 3, 6 ) ref -> eax single-def "argument with side effect" ; V225 tmp207 [V225,T20] ( 3, 48 ) ref -> eax "argument with side effect"
-; V226 tmp208 [V226,T06] ( 2,128 ) ref -> ecx "argument with side effect" -; V227 tmp209 [V227,T07] ( 2,128 ) ref -> ecx "argument with side effect" -; V228 tmp210 [V228,T01] ( 3,192 ) ref -> ecx "argument with side effect"
+; V226 tmp208 [V226,T07] ( 2,128 ) ref -> ecx "argument with side effect" +; V227 tmp209 [V227,T08] ( 2,128 ) ref -> ecx "argument with side effect" +; V228 tmp210 [V228,T02] ( 3,192 ) ref -> ecx "argument with side effect"
; V229 tmp211 [V229,T101] ( 2, 4 ) ref -> esi single-def "argument with side effect" ; V230 tmp212 [V230,T87] ( 3, 6 ) ref -> eax single-def "argument with side effect" ; V231 tmp213 [V231,T88] ( 3, 6 ) ref -> eax single-def "argument with side effect" @@ -268,14 +268,14 @@ G_M34773_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov gword ptr [ebp-0x28], ecx ; GC ptr vars +{V00} ;; size=20 bbWeight=1 PerfScore 7.75
-G_M34773_IG02: ; bbWeight=1, gcVars=0000000000000000000000000000000000000100 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
+G_M34773_IG02: ; bbWeight=1, gcVars=0000000000000000000000000000000000000200 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ecx] xor eax, eax ; gcrRegs +[eax] mov gword ptr [ebp-0x2C], eax ; GC ptr vars +{V02} ;; size=5 bbWeight=1 PerfScore 1.25
-G_M34773_IG03: ; bbWeight=1, gcVars=0000000000000000000000000000020000000100 {V00 V02}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34773_IG03: ; bbWeight=1, gcVars=0000000000000000000000000000020000000200 {V00 V02}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] mov gword ptr [ebp-0x30], eax ; GC ptr vars +{V03} @@ -386,7 +386,7 @@ G_M34773_IG08: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=8 bbWeight=1 PerfScore 3.50
-G_M34773_IG09: ; bbWeight=1, gcVars=0000000000000000000000000000020000400100 {V00 V02 V03}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34773_IG09: ; bbWeight=1, gcVars=0000000000000000000000000000020000400200 {V00 V02 V03}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[esi] ; GC ptr vars +{V02 V03 V22 V41} cmp gword ptr [esi+0x18], 0 @@ -423,7 +423,7 @@ G_M34773_IG10: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 mov gword ptr [ebp-0x38], eax ; GC ptr vars +{V05} ;; size=5 bbWeight=1 PerfScore 1.25
-G_M34773_IG11: ; bbWeight=1, gcVars=0000000000000000000000040000020000400100 {V00 V02 V03 V05}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34773_IG11: ; bbWeight=1, gcVars=0000000000000000000000040000020000400200 {V00 V02 V03 V05}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] ; GC ptr vars -{V22 V41} call [System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this] @@ -437,7 +437,7 @@ G_M34773_IG11: ; bbWeight=1, gcVars=0000000000000000000000040000020000400 test byte ptr [D1FFAB1EH], 1 ; global ptr jne SHORT G_M34773_IG13 ;; size=24 bbWeight=1 PerfScore 11.00
-G_M34773_IG12: ; bbWeight=0, gcVars=0000000000000000000000040000020000402100 {V00 V02 V03 V04 V05}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M34773_IG12: ; bbWeight=0, gcVars=0000000000000000000000040000020000402200 {V00 V02 V03 V04 V05}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax ecx] mov ecx, 0xD1FFAB1E mov edx, 56 @@ -550,13 +550,13 @@ G_M34773_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} pop eax jmp eax ;; size=3 bbWeight=0 PerfScore 0.00
-G_M34773_IG18: ; bbWeight=1, gcVars=0000000000000000000000000000020000400100 {V00 V02 V03}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34773_IG18: ; bbWeight=1, gcVars=0000000000000000000000000000020000400200 {V00 V02 V03}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi]
- ; GC ptr vars +{V00 V02 V03 V08 V22 V41}
+ ; GC ptr vars +{V00 V02 V03 V09 V22 V41}
test esi, esi je G_M34773_IG21 mov ecx, 0xD1FFAB1E ; <unknown class>
- ; GC ptr vars -{V03 V08 V22 V41}
+ ; GC ptr vars -{V03 V09 V22 V41}
call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] mov edi, eax @@ -604,7 +604,7 @@ G_M34773_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov ecx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ecx] cmp byte ptr [ecx+0x59], 0
- je G_M34773_IG68
+ je G_M34773_IG69
mov ebx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ebx] cmp byte ptr [ebx], bl @@ -619,7 +619,7 @@ G_M34773_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov edx, 19 call [System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this] ; gcrRegs -[ecx ebx]
- jmp G_M34773_IG68
+ jmp G_M34773_IG69
;; size=54 bbWeight=1 PerfScore 25.50 G_M34773_IG21: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x28] @@ -643,7 +643,7 @@ G_M34773_IG22: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax] cmp byte ptr [eax+0x59], 0
- je G_M34773_IG68
+ je G_M34773_IG69
mov ebx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ebx] cmp byte ptr [ebx], bl @@ -660,13 +660,13 @@ G_M34773_IG22: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov edx, 20 call [System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this] ; gcrRegs -[ecx ebx]
- jmp G_M34773_IG68
+ jmp G_M34773_IG69
;; size=53 bbWeight=1 PerfScore 25.50 G_M34773_IG23: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax] cmp byte ptr [eax+0x59], 0
- je G_M34773_IG68
+ je G_M34773_IG69
mov ebx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ebx] cmp byte ptr [ebx], bl @@ -683,7 +683,7 @@ G_M34773_IG23: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov edx, 21 call [System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this] ; gcrRegs -[ecx ebx]
- jmp G_M34773_IG68
+ jmp G_M34773_IG69
;; size=53 bbWeight=1 PerfScore 25.50 G_M34773_IG24: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ecx esi] @@ -718,7 +718,7 @@ G_M34773_IG24: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000 test esi, esi je SHORT G_M34773_IG29 ;; size=69 bbWeight=1 PerfScore 30.75
-G_M34773_IG25: ; bbWeight=0.50, gcVars=0000000000000000000000000000020000000100 {V00 V02}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34773_IG25: ; bbWeight=0.50, gcVars=0000000000000000000000000000020000000200 {V00 V02}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03} mov ecx, 0xD1FFAB1E ; System.Security.Cryptography.X509Certificates.X509Certificate cmp dword ptr [esi], ecx @@ -779,7 +779,7 @@ G_M34773_IG29: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov ecx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ecx] cmp byte ptr [ecx+0x59], 0
- je G_M34773_IG68
+ je G_M34773_IG69
push gword ptr [ebp-0x28] mov ecx, gword ptr [D1FFAB1EH] ; static handle mov edx, esi @@ -787,7 +787,7 @@ G_M34773_IG29: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 cmp dword ptr [ecx], ecx call [System.Net.NetEventSource:AttemptingRestartUsingCert(System.Security.Cryptography.X509Certificates.X509Certificate,System.Net.Security.SslStream):this] ; gcrRegs -[ecx edx esi]
- jmp G_M34773_IG68
+ jmp G_M34773_IG69
;; size=40 bbWeight=1 PerfScore 17.25 G_M34773_IG30: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x28] @@ -796,7 +796,7 @@ G_M34773_IG30: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[eax] mov eax, gword ptr [eax+0x08] test eax, eax
- je G_M34773_IG68
+ je G_M34773_IG69
mov eax, gword ptr [eax+0x04] mov ecx, eax mov eax, dword ptr [eax] @@ -805,7 +805,7 @@ G_M34773_IG30: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call [eax+0x18]<unknown method> ; gcrRegs -[ecx] test eax, eax
- jle G_M34773_IG68
+ jle G_M34773_IG69
mov ecx, gword ptr [ebp-0x28] ; gcrRegs +[ecx] call [System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this] @@ -823,7 +823,7 @@ G_M34773_IG30: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} cmp dword ptr [ecx+0x04], 0 jne SHORT G_M34773_IG32 ;; size=77 bbWeight=1 PerfScore 35.75
-G_M34773_IG31: ; bbWeight=1, gcVars=0000000000000000000000000000020000402100 {V00 V02 V03 V04}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34773_IG31: ; bbWeight=1, gcVars=0000000000000000000000000000020000402200 {V00 V02 V03 V04}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax ecx] cmp byte ptr [ebx], bl mov ecx, gword ptr [ebp-0x28] @@ -862,25 +862,25 @@ G_M34773_IG32: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 G_M34773_IG33: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref xor ecx, ecx mov dword ptr [ebp-0x24], ecx
- jmp G_M34773_IG67
+ jmp G_M34773_IG68
;; size=10 bbWeight=1 PerfScore 3.25 G_M34773_IG34: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref cmp gword ptr [ebp-0x34], 0
- je G_M34773_IG60
+ je G_M34773_IG61
mov ecx, gword ptr [ebp-0x34] ; gcrRegs +[ecx] cmp dword ptr [ecx+0x04], 0
- je G_M34773_IG60
+ je G_M34773_IG61
xor ecx, ecx mov gword ptr [ebp-0x3C], ecx ; GC ptr vars +{V09} ;; size=28 bbWeight=4 PerfScore 37.00
-G_M34773_IG35: ; bbWeight=4, gcVars=0000000000000000000000000000020002402100 {V00 V02 V03 V04 V09}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M34773_IG35: ; bbWeight=4, gcVars=0000000000000000000000000000020002402200 {V00 V02 V03 V04 V09}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx] mov gword ptr [ebp-0x40], ecx ...

+49 (+10.68%) : 607.dasm - System.Collections.Generic.ArraySortHelper1[int]:IntroSort(System.Span1[int],int,System.Comparison`1[int]) (FullOpts)

@@ -11,7 +11,7 @@ ; V00 arg0 [V00,T13] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[int]> ; V01 arg1 [V01,T03] ( 7, 19 ) int -> esi ; V02 arg2 [V02,T05] ( 15, 16 ) ref -> edi class-hnd single-def <System.Comparison`1[int]>
-; V03 loc0 [V03,T01] ( 14, 28.50) int -> [ebp-0x10]
+; V03 loc0 [V03,T00] ( 16, 33 ) int -> [ebp-0x10]
; V04 loc1 [V04,T08] ( 3, 12 ) int -> [ebp-0x14] spill-single-def ; V05 loc2 [V05,T04] ( 5, 20 ) int -> ecx ;* V06 tmp0 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[int]> @@ -43,7 +43,7 @@ ;* V32 tmp26 [V32 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V33 tmp27 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp28 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V35 tmp29 [V35,T00] ( 4, 32 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
+; V35 tmp29 [V35,T01] ( 4, 32 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
;* V36 tmp30 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ; V37 tmp31 [V37,T07] ( 2, 16 ) byref -> [ebp-0x20] spill-single-def "Inlining Arg" ;* V38 tmp32 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -136,17 +136,30 @@ G_M15629_IG08: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000008 mov eax, dword ptr [ebp-0x1C] mov edx, eax cmp eax, 1
- jle G_M15629_IG21
+ jle G_M15629_IG24
;; size=14 bbWeight=1 PerfScore 2.50 G_M15629_IG09: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz cmp edx, 16
- jle G_M15629_IG14
+ jle G_M15629_IG16
test esi, esi
- je G_M15629_IG20
+ je G_M15629_IG22
dec esi cmp edx, eax
- ja G_M15629_IG23
+ ja G_M15629_IG26
mov dword ptr [ebp-0x10], edx
+ test edx, edx + jge SHORT G_M15629_IG11 + ;; size=33 bbWeight=4 PerfScore 25.00 +G_M15629_IG10: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=16 bbWeight=2 PerfScore 7.00 +G_M15629_IG11: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz + mov edx, dword ptr [ebp-0x10]
mov ecx, edx push ecx push ebx @@ -161,18 +174,18 @@ G_M15629_IG09: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 mov dword ptr [ebp-0x18], edx mov eax, dword ptr [ebp-0x1C] cmp ecx, eax
- ja G_M15629_IG23
+ ja G_M15629_IG26
sub eax, ecx cmp eax, edx
- jb G_M15629_IG23
+ jb G_M15629_IG26
lea eax, bword ptr [ebx+4*ecx] ; byrRegs +[eax] mov bword ptr [ebp-0x20], eax ; GC ptr vars +{V37} test edx, edx
- jge SHORT G_M15629_IG11 - ;; size=86 bbWeight=4 PerfScore 83.00 -G_M15629_IG10: ; bbWeight=2, gcVars=00000080 {V37}, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, gcvars, byref
+ jge SHORT G_M15629_IG13 + ;; size=60 bbWeight=4 PerfScore 67.00 +G_M15629_IG12: ; bbWeight=2, gcVars=00000080 {V37}, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, gcvars, byref
; byrRegs -[eax] mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] @@ -181,7 +194,7 @@ G_M15629_IG10: ; bbWeight=2, gcVars=00000080 {V37}, gcrefRegs=00000080 {e call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=16 bbWeight=2 PerfScore 7.00
-G_M15629_IG11: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG13: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
mov eax, bword ptr [ebp-0x20] ; byrRegs +[eax] mov edx, dword ptr [ebp-0x18] @@ -198,22 +211,22 @@ G_M15629_IG11: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 mov eax, edx cmp eax, 1 mov edx, eax
- jg SHORT G_M15629_IG13
+ jg SHORT G_M15629_IG15
;; size=30 bbWeight=4 PerfScore 41.00
-G_M15629_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M15629_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[edi] ; byrRegs -[ebx]
- jmp G_M15629_IG21
+ jmp G_M15629_IG24
;; size=5 bbWeight=1 PerfScore 2.00
-G_M15629_IG13: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref
+G_M15629_IG15: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref
; gcrRegs +[edi] ; byrRegs +[ebx] mov eax, dword ptr [ebp-0x1C] jmp G_M15629_IG09 ;; size=8 bbWeight=2 PerfScore 6.00
-G_M15629_IG14: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
cmp edx, 2
- jne SHORT G_M15629_IG15
+ jne SHORT G_M15629_IG17
mov edx, dword ptr [ebx] push dword ptr [ebx+0x04] mov ecx, gword ptr [edi+0x04] @@ -221,17 +234,17 @@ G_M15629_IG14: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [edi+0x0C]<unknown method> ; gcrRegs -[ecx edi] test eax, eax
- jle G_M15629_IG21
+ jle G_M15629_IG24
mov edx, dword ptr [ebx] mov ecx, dword ptr [ebx+0x04] mov dword ptr [ebx], ecx mov dword ptr [ebx+0x04], edx
- jmp G_M15629_IG21
+ jmp G_M15629_IG24
;; size=39 bbWeight=0.50 PerfScore 9.75
-G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[edi] cmp edx, 3
- jne SHORT G_M15629_IG18
+ jne SHORT G_M15629_IG20
mov edx, dword ptr [ebx] push dword ptr [ebx+0x04] mov ecx, gword ptr [edi+0x04] @@ -239,29 +252,29 @@ G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [edi+0x0C]<unknown method> ; gcrRegs -[ecx] test eax, eax
- jle SHORT G_M15629_IG16
+ jle SHORT G_M15629_IG18
mov edx, dword ptr [ebx] mov ecx, dword ptr [ebx+0x04] mov dword ptr [ebx], ecx mov dword ptr [ebx+0x04], edx ;; size=30 bbWeight=0.50 PerfScore 8.75
-G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
mov edx, dword ptr [ebx] cmp dword ptr [ebp-0x1C], 2
- jbe G_M15629_IG22
+ jbe G_M15629_IG25
push dword ptr [ebx+0x08] mov ecx, gword ptr [edi+0x04] ; gcrRegs +[ecx] call [edi+0x0C]<unknown method> ; gcrRegs -[ecx] test eax, eax
- jle SHORT G_M15629_IG17
+ jle SHORT G_M15629_IG19
mov edx, dword ptr [ebx] mov ecx, dword ptr [ebx+0x08] mov dword ptr [ebx], ecx mov dword ptr [ebx+0x08], edx ;; size=35 bbWeight=0.50 PerfScore 9.62
-G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
mov edx, dword ptr [ebx+0x04] push dword ptr [ebx+0x08] mov ecx, gword ptr [edi+0x04] @@ -269,20 +282,20 @@ G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [edi+0x0C]<unknown method> ; gcrRegs -[ecx edi] test eax, eax
- jle SHORT G_M15629_IG21
+ jle SHORT G_M15629_IG24
mov ecx, dword ptr [ebx+0x04] mov edx, dword ptr [ebx+0x08] mov dword ptr [ebx+0x04], edx mov dword ptr [ebx+0x08], ecx
- jmp SHORT G_M15629_IG21
+ jmp SHORT G_M15629_IG24
;; size=30 bbWeight=0.50 PerfScore 9.12
-G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG20: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[edi] cmp edx, eax
- ja SHORT G_M15629_IG23
+ ja SHORT G_M15629_IG26
mov dword ptr [ebp-0x10], edx test edx, edx
- jge SHORT G_M15629_IG19
+ jge SHORT G_M15629_IG21
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -290,7 +303,7 @@ G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=27 bbWeight=0.50 PerfScore 3.50
-G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG21: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
mov edx, dword ptr [ebp-0x10] mov ecx, edx push ecx @@ -300,15 +313,27 @@ G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [System.Collections.Generic.ArraySortHelper`1[int]:InsertionSort(System.Span`1[int],System.Comparison`1[int])] ; gcrRegs -[ecx edi] ; byrRegs -[ebx]
- jmp SHORT G_M15629_IG21
+ jmp SHORT G_M15629_IG24
;; size=17 bbWeight=0.50 PerfScore 4.25
-G_M15629_IG20: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG22: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[edi] ; byrRegs +[ebx] cmp edx, eax
- ja SHORT G_M15629_IG23
+ ja SHORT G_M15629_IG26 + mov dword ptr [ebp-0x10], edx + test edx, edx + jge SHORT G_M15629_IG23 + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=27 bbWeight=0.50 PerfScore 3.50 +G_M15629_IG23: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref
mov ecx, ebx ; byrRegs +[ecx]
+ mov edx, dword ptr [ebp-0x10]
mov eax, edx push eax push ecx @@ -318,8 +343,8 @@ G_M15629_IG20: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [System.Collections.Generic.ArraySortHelper`1[int]:HeapSort(System.Span`1[int],System.Comparison`1[int])] ; gcrRegs -[ecx edi] ; byrRegs -[ebx]
- ;; size=18 bbWeight=0.50 PerfScore 3.50 -G_M15629_IG21: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=17 bbWeight=0.50 PerfScore 3.38 +G_M15629_IG24: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C] pop ebx pop esi @@ -327,14 +352,14 @@ G_M15629_IG21: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ...

benchmarks.run_pgo.windows.x86.checked.mch

-26 (-28.89%) : 15360.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)

@@ -7,11 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> ecx class-hnd single-def <System.String> -; V01 arg1 [V01,T03] ( 7, 5 ) int -> edx single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> esi -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> edi -; V04 cse0 [V04,T04] ( 6, 6.54) int -> eax "CSE - aggressive"
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> ecx class-hnd single-def <System.String> +; V01 arg1 [V01,T04] ( 6, 4.50) int -> edx single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> esi +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> edi +; V04 cse0 [V04,T01] ( 5, 10.50) int -> eax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -37,72 +37,51 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ecx] mov esi, edx
- test edx, edx - jl SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz + cmp esi, eax + jae SHORT G_M3357_IG13
movzx edi, word ptr [ecx+2*esi+0x08] cmp edi, 32 je SHORT G_M3357_IG08
- ;; size=10 bbWeight=3.96 PerfScore 12.87 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=14 bbWeight=4 PerfScore 18.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
cmp edi, 9
- jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=1.98 PerfScore 2.48 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M3357_IG11 + ;; size=5 bbWeight=2 PerfScore 2.50 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
inc esi cmp eax, esi jg SHORT G_M3357_IG06
- ;; size=5 bbWeight=3.96 PerfScore 5.94 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] - jmp SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ecx] - cmp esi, eax - jae SHORT G_M3357_IG17 - movzx edi, word ptr [ecx+2*esi+0x08] - cmp edi, 32 - je SHORT G_M3357_IG12 - ;; size=14 bbWeight=0.04 PerfScore 0.18 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - cmp edi, 9 - jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=0.02 PerfScore 0.03 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - inc esi - cmp eax, esi - jg SHORT G_M3357_IG10 - ;; size=5 bbWeight=0.04 PerfScore 0.06 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=5 bbWeight=4 PerfScore 6.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx] sub eax, edx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
mov eax, esi sub eax, edx ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 90, prolog size 5, PerfScore 34.05, instruction count 47, allocated bytes for code 90 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)
+Total bytes of code 64, prolog size 5, PerfScore 37.38, instruction count 36, allocated bytes for code 64 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)
; ============================================================

-14 (-2.62%) : 2864.dasm - System.Threading.PortableThreadPool+ThreadCounts:InterlockedSetNumThreadsGoal(short):System.Threading.PortableThreadPool+ThreadCounts:this (Tier0-FullOpts)

@@ -33,7 +33,7 @@ ; V22 tmp16 [V22,T06] ( 3, 24 ) short -> [ebp-0x10] spill-single-def "Inline stloc first use temp" ;* V23 tmp17 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp18 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 tmp19 [V25,T09] ( 4, 12 ) ref -> ebx class-hnd exact "Inlining Arg" <System.Threading.LowLevelLock>
+; V25 tmp19 [V25,T09] ( 3, 12 ) ref -> ebx class-hnd exact "Inlining Arg" <System.Threading.LowLevelLock>
; V26 tmp20 [V26,T12] ( 2, 8 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "impAppendStmt" <System.Threading.Thread> ; V27 tmp21 [V27,T13] ( 2, 8 ) ref -> edx class-hnd exact "dup spill" <System.Threading.Thread> ; V28 tmp22 [V28,T11] ( 4, 8 ) ref -> edx @@ -89,11 +89,11 @@ G_M54103_IG02: ; bbWeight=1, gcVars=00080000 {V01}, gcrefRegs=00000000 {} mov ecx, dword ptr FS:[0x002C] mov ecx, dword ptr [ecx] cmp dword ptr [ecx+0x80], 3
- jl G_M54103_IG20
+ jl G_M54103_IG22
mov ecx, dword ptr [ecx+0x84] mov ecx, dword ptr [ecx+0x0C] test ecx, ecx
- je G_M54103_IG20
+ je G_M54103_IG22
mov ecx, bword ptr [ecx] ; byrRegs +[ecx] add ecx, 8 @@ -120,11 +120,11 @@ G_M54103_IG05: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000080 mov edx, gword ptr [ebp-0x34] ; gcrRegs +[edx] cmp edx, ebx
- jne G_M54103_IG21
+ jne G_M54103_IG23
mov eax, gword ptr [ebp-0x30] ; gcrRegs +[eax] test byte ptr [eax+0x08], 1
- je G_M54103_IG22
+ je G_M54103_IG24
;; size=24 bbWeight=1 PerfScore 7.25 G_M54103_IG06: ; bbWeight=1, gcVars=00180000 {V01 V41}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref ; gcrRegs -[eax edx ebx] @@ -140,7 +140,7 @@ G_M54103_IG06: ; bbWeight=1, gcVars=00180000 {V01 V41}, gcrefRegs=0000000 G_M54103_IG07: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref movsx eax, si test eax, eax
- jle G_M54103_IG23
+ jle G_M54103_IG25
;; size=11 bbWeight=8 PerfScore 12.00 G_M54103_IG08: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz movsx eax, si @@ -165,17 +165,17 @@ G_M54103_IG11: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000080 {e mov dword ptr [ebp-0x1C], eax movsx ebx, word ptr [ebp-0x1C] test ebx, ebx
- jle G_M54103_IG24
+ jle G_M54103_IG26
;; size=38 bbWeight=8 PerfScore 74.00 G_M54103_IG12: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref movsx eax, word ptr [ebp-0x14] mov dword ptr [ebp-0x10], eax test eax, eax
- jle G_M54103_IG25
+ jle G_M54103_IG27
;; size=15 bbWeight=8 PerfScore 42.00 G_M54103_IG13: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz cmp ebx, eax
- je SHORT G_M54103_IG16
+ je SHORT G_M54103_IG18
;; size=4 bbWeight=8 PerfScore 10.00 G_M54103_IG14: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz mov eax, gword ptr [D1FFAB1EH] ; static handle @@ -202,13 +202,24 @@ G_M54103_IG15: ; bbWeight=2, gcrefRegs=0000000C {edx ebx}, byrefRegs=0000 mov eax, gword ptr [ebp-0x38] ; gcrRegs +[eax] cmp eax, edx
- jne G_M54103_IG26 - test byte ptr [ebx+0x08], 1 - je G_M54103_IG27 - ;; size=21 bbWeight=2 PerfScore 12.50 -G_M54103_IG16: ; bbWeight=8, gcVars=00180000 {V01 V41}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref, isz - ; gcrRegs -[eax edx ebx]
+ jne G_M54103_IG28 + ;; size=11 bbWeight=2 PerfScore 4.50 +G_M54103_IG16: ; bbWeight=2, gcVars=00180000 {V01 V41}, gcrefRegs=00000008 {ebx}, byrefRegs=00000080 {edi}, gcvars, byref, isz + ; gcrRegs -[eax edx]
; GC ptr vars -{V26}
+ test byte ptr [ebx+0x08], 1 + jne SHORT G_M54103_IG18 + ;; size=6 bbWeight=2 PerfScore 8.00 +G_M54103_IG17: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref + ; gcrRegs -[ebx] + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=16 bbWeight=8 PerfScore 28.00 +G_M54103_IG18: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
push dword ptr [ebp-0x1C] push dword ptr [ebp-0x20] push dword ptr [ebp-0x14] @@ -224,16 +235,16 @@ G_M54103_IG16: ; bbWeight=8, gcVars=00180000 {V01 V41}, gcrefRegs=0000000 xor ecx, dword ptr [ebp-0x18] xor eax, dword ptr [ebp-0x14] or ecx, eax
- je SHORT G_M54103_IG18
+ je SHORT G_M54103_IG20
;; size=41 bbWeight=8 PerfScore 116.00
-G_M54103_IG17: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
+G_M54103_IG19: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
mov ecx, dword ptr [ebp-0x28] mov eax, dword ptr [ebp-0x24] mov dword ptr [ebp-0x18], ecx mov dword ptr [ebp-0x14], eax jmp G_M54103_IG07 ;; size=17 bbWeight=4 PerfScore 24.00
-G_M54103_IG18: ; bbWeight=1, gcVars=00080000 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M54103_IG20: ; bbWeight=1, gcVars=00080000 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[edi] ; GC ptr vars -{V41} mov ebx, bword ptr [ebp-0x2C] @@ -243,7 +254,7 @@ G_M54103_IG18: ; bbWeight=1, gcVars=00080000 {V01}, gcrefRegs=00000000 {} mov ecx, dword ptr [ebp-0x1C] mov dword ptr [ebx+0x04], ecx ;; size=14 bbWeight=1 PerfScore 5.00
-G_M54103_IG19: ; bbWeight=1, epilog, nogc, extend
+G_M54103_IG21: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -251,7 +262,7 @@ G_M54103_IG19: ; bbWeight=1, epilog, nogc, extend pop ebp ret 4 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M54103_IG20: ; bbWeight=0, gcVars=00484000 {V01 V06 V07}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref
+G_M54103_IG22: ; bbWeight=0, gcVars=00484000 {V01 V06 V07}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref
; byrRegs -[ebx] +[edi] ; GC ptr vars +{V06 V07 V14 V22} mov ecx, 3 @@ -261,7 +272,7 @@ G_M54103_IG20: ; bbWeight=0, gcVars=00484000 {V01 V06 V07}, gcrefRegs=000 ; byrRegs +[ecx] jmp G_M54103_IG03 ;; size=17 bbWeight=0 PerfScore 0.00
-G_M54103_IG21: ; bbWeight=0, gcVars=00184000 {V01 V06 V41}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref
+G_M54103_IG23: ; bbWeight=0, gcVars=00184000 {V01 V06 V41}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref
; byrRegs -[eax ecx] ; GC ptr vars -{V07 V14 V22} +{V41} mov ecx, 0xD1FFAB1E @@ -275,7 +286,7 @@ G_M54103_IG21: ; bbWeight=0, gcVars=00184000 {V01 V06 V41}, gcrefRegs=000 test byte ptr [ecx+0x08], 1 jne G_M54103_IG06 ;; size=29 bbWeight=0 PerfScore 0.00
-G_M54103_IG22: ; bbWeight=0, gcVars=00180000 {V01 V41}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref
+G_M54103_IG24: ; bbWeight=0, gcVars=00180000 {V01 V41}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref
; gcrRegs -[ecx] ; GC ptr vars -{V06} mov ecx, 0xD1FFAB1E @@ -286,7 +297,7 @@ G_M54103_IG22: ; bbWeight=0, gcVars=00180000 {V01 V41}, gcrefRegs=0000000 ; gcrRegs -[ecx edx] jmp G_M54103_IG06 ;; size=21 bbWeight=0 PerfScore 0.00
-G_M54103_IG23: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
+G_M54103_IG25: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -295,7 +306,7 @@ G_M54103_IG23: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {e ; gcrRegs -[ecx edx] jmp G_M54103_IG08 ;; size=21 bbWeight=0 PerfScore 0.00
-G_M54103_IG24: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
+G_M54103_IG26: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -304,7 +315,7 @@ G_M54103_IG24: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {e ; gcrRegs -[ecx edx] jmp G_M54103_IG12 ;; size=21 bbWeight=0 PerfScore 0.00
-G_M54103_IG25: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
+G_M54103_IG27: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -314,7 +325,7 @@ G_M54103_IG25: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {e mov eax, dword ptr [ebp-0x10] jmp G_M54103_IG13 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M54103_IG26: ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000080 {edi}, byref
+G_M54103_IG28: ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000080 {edi}, byref
; gcrRegs +[ebx] mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] @@ -322,20 +333,9 @@ G_M54103_IG26: ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000080 ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- test byte ptr [ebx+0x08], 1 - jne G_M54103_IG16 - ;; size=26 bbWeight=0 PerfScore 0.00 -G_M54103_IG27: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref - ; gcrRegs -[ebx] - mov ecx, 0xD1FFAB1E - ; gcrRegs +[ecx] - mov edx, 0xD1FFAB1E - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx]
jmp G_M54103_IG16 ;; size=21 bbWeight=0 PerfScore 0.00
-Total bytes of code 534, prolog size 17, PerfScore 394.62, instruction count 148, allocated bytes for code 534 (MethodHash=59d72ca8) for method System.Threading.PortableThreadPool+ThreadCounts:InterlockedSetNumThreadsGoal(short):System.Threading.PortableThreadPool+ThreadCounts:this (Tier0-FullOpts)
+Total bytes of code 520, prolog size 17, PerfScore 422.62, instruction count 146, allocated bytes for code 520 (MethodHash=59d72ca8) for method System.Threading.PortableThreadPool+ThreadCounts:InterlockedSetNumThreadsGoal(short):System.Threading.PortableThreadPool+ThreadCounts:this (Tier0-FullOpts)
; ============================================================

-46 (-2.52%) : 9263.dasm - System.UInt128:g_DivideSlow|1112(System.UInt128,System.UInt128):System.UInt128 (Tier0-FullOpts)

@@ -24,8 +24,8 @@ ;* V13 loc10 [V13 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[uint]> ;* V14 loc11 [V14 ] ( 0, 0 ) int -> zero-ref ptr ; V15 loc12 [V15,T08] ( 17, 51 ) int -> [ebp-0x54] ptr
-; V16 loc13 [V16,T15] ( 8, 18 ) int -> [ebp-0x58] spill-single-def ptr -; V17 loc14 [V17,T22] ( 4, 12 ) int -> [ebp-0x5C] spill-single-def ptr
+; V16 loc13 [V16,T15] ( 7, 18 ) int -> [ebp-0x58] spill-single-def ptr +; V17 loc14 [V17,T21] ( 4, 12 ) int -> [ebp-0x5C] spill-single-def ptr
;* V18 loc15 [V18 ] ( 0, 0 ) long -> zero-ref ptr ; V19 loc16 [V19,T14] ( 3, 22 ) int -> [ebp-0x60] ptr ; V20 loc17 [V20 ] ( 1, 4 ) long -> [ebp-0x68] multireg-ret @@ -38,7 +38,7 @@ ; V27 tmp4 [V27,T38] ( 3, 6 ) int -> ecx "Span.get_Item index" ; V28 tmp5 [V28,T77] ( 2, 2 ) int -> eax "Span.get_Item index" ; V29 tmp6 [V29,T63] ( 5, 3 ) int -> [ebp-0x6C] ptr
-; V30 tmp7 [V30,T28] ( 3, 8 ) int -> ebx
+; V30 tmp7 [V30,T27] ( 3, 8 ) int -> ebx
; V31 tmp8 [V31,T20] ( 5, 12 ) int -> [ebp-0x70] ptr ;* V32 tmp9 [V32 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Span`1[uint]> ;* V33 tmp10 [V33 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[uint]> @@ -73,8 +73,8 @@ ;* V62 tmp39 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V63 tmp40 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V64 tmp41 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V65 tmp42 [V65,T23] ( 3, 12 ) int -> [ebp-0x98] spill-single-def ptr "Inlining Arg" -; V66 tmp43 [V66,T29] ( 2, 8 ) byref -> [ebp-0x124] spill-single-def ptr "Inlining Arg"
+; V65 tmp42 [V65,T22] ( 3, 12 ) int -> [ebp-0x98] spill-single-def ptr "Inlining Arg" +; V66 tmp43 [V66,T28] ( 2, 8 ) byref -> [ebp-0x124] spill-single-def ptr "Inlining Arg"
;* V67 tmp44 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V68 tmp45 [V68 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V69 tmp46 [V69 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]> @@ -86,8 +86,8 @@ ;* V75 tmp52 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V76 tmp53 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V77 tmp54 [V77 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V78 tmp55 [V78,T21] ( 5, 12 ) int -> [ebp-0x9C] ptr "Inlining Arg" -; V79 tmp56 [V79,T27] ( 3, 8 ) byref -> ebx "Inlining Arg"
+; V78 tmp55 [V78,T23] ( 3, 12 ) int -> [ebp-0x9C] spill-single-def ptr "Inlining Arg" +; V79 tmp56 [V79,T29] ( 2, 8 ) byref -> ebx "Inlining Arg"
;* V80 tmp57 [V80 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V81 tmp58 [V81 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V82 tmp59 [V82 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]> @@ -101,7 +101,7 @@ ;* V90 tmp67 [V90 ] ( 0, 0 ) long -> zero-ref ptr "Inlining Arg" ;* V91 tmp68 [V91 ] ( 0, 0 ) long -> zero-ref ptr "Inlining Arg" ; V92 tmp69 [V92,T18] ( 7, 15 ) byref -> [ebp-0x128] spill-single-def ptr "field V04._reference (fldOffset=0x0)" P-INDEP
-; V93 tmp70 [V93,T13] ( 15, 28 ) int -> [ebp-0xA0] spill-single-def ptr "field V04._length (fldOffset=0x4)" P-INDEP
+; V93 tmp70 [V93,T13] ( 14, 28 ) int -> [ebp-0xA0] spill-single-def ptr "field V04._length (fldOffset=0x4)" P-INDEP
; V94 tmp71 [V94,T17] ( 6, 7 ) byref -> [ebp-0x12C] spill-single-def ptr "field V06._reference (fldOffset=0x0)" P-INDEP ; V95 tmp72 [V95,T12] ( 15, 21.50) int -> [ebp-0xA4] spill-single-def ptr "field V06._length (fldOffset=0x4)" P-INDEP ; V96 tmp73 [V96,T24] ( 7, 8 ) byref -> [ebp-0x130] spill-single-def ptr "field V07._reference (fldOffset=0x0)" P-INDEP @@ -117,7 +117,7 @@ ;* V106 tmp83 [V106 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP ;* V107 tmp84 [V107 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x4)" P-INDEP ; V108 tmp85 [V108,T48] ( 2, 4 ) byref -> ebx "field V34._reference (fldOffset=0x0)" P-INDEP
-; V109 tmp86 [V109,T52] ( 2, 4 ) int -> eax "field V34._length (fldOffset=0x4)" P-INDEP
+; V109 tmp86 [V109,T52] ( 2, 4 ) int -> edx "field V34._length (fldOffset=0x4)" P-INDEP
;* V110 tmp87 [V110 ] ( 0, 0 ) byref -> zero-ref "field V35._reference (fldOffset=0x0)" P-INDEP ;* V111 tmp88 [V111 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x4)" P-INDEP ; V112 tmp89 [V112,T66] ( 3, 3 ) long -> [ebp-0xB0] do-not-enreg[F] ptr "field V37._lower (fldOffset=0x0)" P-INDEP @@ -131,7 +131,7 @@ ;* V120 tmp97 [V120,T86] ( 0, 0 ) byref -> zero-ref ptr "field V70._reference (fldOffset=0x0)" P-INDEP ;* V121 tmp98 [V121,T88] ( 0, 0 ) int -> zero-ref ptr "field V70._length (fldOffset=0x4)" P-INDEP ; V122 tmp99 [V122,T50] ( 2, 4 ) byref -> ebx "field V77._reference (fldOffset=0x0)" P-INDEP
-; V123 tmp100 [V123,T54] ( 2, 4 ) int -> eax "field V77._length (fldOffset=0x4)" P-INDEP
+; V123 tmp100 [V123,T54] ( 2, 4 ) int -> edx "field V77._length (fldOffset=0x4)" P-INDEP
;* V124 tmp101 [V124 ] ( 0, 0 ) byref -> zero-ref ptr "field V82._reference (fldOffset=0x0)" P-INDEP ;* V125 tmp102 [V125 ] ( 0, 0 ) int -> zero-ref ptr "field V82._length (fldOffset=0x4)" P-INDEP ;* V126 tmp103 [V126,T87] ( 0, 0 ) byref -> zero-ref ptr "field V83._reference (fldOffset=0x0)" P-INDEP @@ -147,7 +147,7 @@ ; V136 cse1 [V136,T71] ( 3, 2.50) int -> ebx "CSE - conservative" ; V137 cse2 [V137,T72] ( 3, 2.50) int -> [ebp-0xE0] spill-single-def "CSE - conservative" ; V138 cse3 [V138,T73] ( 3, 2.50) int -> [ebp-0xE4] spill-single-def "CSE - conservative"
-; V139 cse4 [V139,T35] ( 4, 6 ) byref -> [ebp-0x134] spill-single-def "CSE - conservative"
+; V139 cse4 [V139,T35] ( 3, 6 ) byref -> [ebp-0x134] spill-single-def "CSE - conservative"
; V140 rat0 [V140,T06] ( 6, 60 ) int -> [ebp-0xE8] "field V18.lo (fldOffset=0x0)" P-INDEP ; V141 rat1 [V141,T07] ( 6, 60 ) int -> [ebp-0xEC] "field V18.hi (fldOffset=0x4)" P-INDEP ; V142 rat2 [V142,T05] ( 11,102 ) int -> [ebp-0xF0] "field V20.lo (fldOffset=0x0)" P-INDEP @@ -164,8 +164,8 @@ ; V153 rat13 [V153,T01] ( 5,144 ) int -> [ebp-0xFC] "field V60.hi (fldOffset=0x4)" P-INDEP ; V154 rat14 [V154,T02] ( 4,112 ) int -> eax "field V61.lo (fldOffset=0x0)" P-INDEP ; V155 rat15 [V155,T03] ( 4,112 ) int -> registers "field V61.hi (fldOffset=0x4)" P-INDEP
-; V156 rat16 [V156,T80] ( 2, 2 ) int -> esi "field V90.lo (fldOffset=0x0)" P-INDEP -; V157 rat17 [V157,T81] ( 2, 2 ) int -> edi "field V90.hi (fldOffset=0x4)" P-INDEP
+; V156 rat16 [V156,T80] ( 2, 2 ) int -> edi "field V90.lo (fldOffset=0x0)" P-INDEP +; V157 rat17 [V157,T81] ( 2, 2 ) int -> esi "field V90.hi (fldOffset=0x4)" P-INDEP
; V158 rat18 [V158,T82] ( 2, 2 ) int -> eax "field V91.lo (fldOffset=0x0)" P-INDEP ; V159 rat19 [V159,T83] ( 2, 2 ) int -> ecx "field V91.hi (fldOffset=0x4)" P-INDEP ; V160 rat20 [V160,T74] ( 3, 2.50) int -> [ebp-0x100] spill-single-def "field V128.lo (fldOffset=0x0)" P-INDEP @@ -182,7 +182,7 @@ ; V171 rat31 [V171,T42] ( 2, 6 ) int -> eax "field V170.lo (fldOffset=0x0)" P-INDEP ; V172 rat32 [V172,T43] ( 2, 6 ) int -> edx "field V170.hi (fldOffset=0x4)" P-INDEP ; V173 rat33 [V173,T55] ( 2, 4 ) int -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V174 rat34 [V174,T56] ( 2, 4 ) int -> edi "ReplaceWithLclVar is creating a new local variable"
+; V174 rat34 [V174,T56] ( 2, 4 ) int -> esi "ReplaceWithLclVar is creating a new local variable"
; V175 rat35 [V175,T36] ( 3, 6 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable" ; V176 rat36 [V176,T37] ( 3, 6 ) byref -> esi "ReplaceWithLclVar is creating a new local variable" ; TEMP_02 int -> [ebp-0x138] @@ -261,7 +261,7 @@ G_M55503_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov edi, eax neg edi add edi, 4
- js G_M55503_IG56
+ js G_M55503_IG54
mov bword ptr [ebp-0x128], ecx ; GC ptr vars +{V92} mov dword ptr [ebp-0xA0], edi @@ -311,7 +311,7 @@ G_M55503_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov edx, ecx neg edx add edx, 4
- js G_M55503_IG56
+ js G_M55503_IG54
mov bword ptr [ebp-0x12C], eax ; GC ptr vars +{V94} mov dword ptr [ebp-0xA4], edx @@ -325,7 +325,7 @@ G_M55503_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} inc edx mov dword ptr [ebp-0x84], edx cmp edx, 4
- ja G_M55503_IG56
+ ja G_M55503_IG54
mov ecx, edx not ecx shr ecx, 31 @@ -419,7 +419,7 @@ G_M55503_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 G_M55503_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov edx, edi cmp edi, dword ptr [ebp-0xA4]
- jl G_M55503_IG43
+ jl G_M55503_IG44
;; size=14 bbWeight=1 PerfScore 3.25 G_M55503_IG16: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, edx @@ -612,13 +612,13 @@ G_M55503_IG34: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov ebx, dword ptr [ebp-0xF4] mov eax, edi or eax, ebx
- je G_M55503_IG38
+ je G_M55503_IG39
;; size=22 bbWeight=8 PerfScore 28.00 G_M55503_IG35: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov esi, dword ptr [ebp-0x58] mov eax, dword ptr [ebp-0xA0] cmp esi, eax
- ja G_M55503_IG56
+ ja G_M55503_IG54
mov edx, bword ptr [ebp-0x128] ; byrRegs +[edx] lea ecx, bword ptr [edx+4*esi] @@ -634,7 +634,7 @@ G_M55503_IG35: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {} test edx, edx jl G_M55503_IG51 ;; size=56 bbWeight=2 PerfScore 19.00
-G_M55503_IG36: ; bbWeight=2, gcVars=00000000000000000000000C21060000 {V00 V66 V92 V94 V96 V139}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref
+G_M55503_IG36: ; bbWeight=2, gcVars=00000000000000000000000C11060000 {V00 V66 V92 V94 V96 V139}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
push edx push ecx ; byr arg push 1 @@ -652,17 +652,27 @@ G_M55503_IG36: ; bbWeight=2, gcVars=00000000000000000000000C21060000 {V00 je G_M55503_IG47 inc ebx cmp eax, ebx
- jne G_M55503_IG52
+ je SHORT G_M55503_IG37 + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=54 bbWeight=2 PerfScore 32.50 +G_M55503_IG37: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ebx, bword ptr [ebp-0x134] ; byrRegs +[ebx]
- mov edx, dword ptr [ebp-0xA0] - mov eax, edx - sub eax, esi - js G_M55503_IG46 - ;; size=64 bbWeight=2 PerfScore 32.50 -G_M55503_IG37: ; bbWeight=2, gcVars=00000000000000000000000401060000 {V00 V92 V94 V96}, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, gcvars, byref
+ mov eax, dword ptr [ebp-0xA0] + mov edx, eax + sub edx, esi + mov dword ptr [ebp-0x9C], edx + test edx, edx + jl G_M55503_IG52 + ;; size=30 bbWeight=2 PerfScore 9.50 +G_M55503_IG38: ; bbWeight=2, gcVars=00000000000000000000000401060000 {V00 V92 V94 V96}, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, gcvars, byref
; GC ptr vars -{V139}
- push eax
+ push edx
push ebx ; byr arg push 1 mov ebx, dword ptr [ebp-0xA4] @@ -674,41 +684,41 @@ G_M55503_IG37: ; bbWeight=2, gcVars=00000000000000000000000401060000 {V00 ; gcr arg pop 2 sub edi, 1 cmp eax, 1
- jne G_M55503_IG55
+ jne G_M55503_IG53
;; size=33 bbWeight=2 PerfScore 19.00
-G_M55503_IG38: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M55503_IG39: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov esi, dword ptr [ebp-0x58] cmp esi, dword ptr [ebp-0xA8]
- jae SHORT G_M55503_IG40
+ jae SHORT G_M55503_IG41
;; size=11 bbWeight=4 PerfScore 16.00
-G_M55503_IG39: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M55503_IG40: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov edx, bword ptr [ebp-0x130] ; byrRegs +[edx] mov dword ptr [edx+4*esi], edi ;; size=9 bbWeight=2 PerfScore 4.00
-G_M55503_IG40: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M55503_IG41: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; byrRegs -[edx] mov esi, dword ptr [ebp-0x54] mov edi, dword ptr [ebp-0xA0] cmp esi, edi
- jae SHORT G_M55503_IG42
+ jae SHORT G_M55503_IG43
;; size=13 bbWeight=4 PerfScore 13.00
-G_M55503_IG41: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M55503_IG42: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor ecx, ecx mov eax, bword ptr [ebp-0x128] ; byrRegs +[eax] mov dword ptr [eax+4*esi], ecx ;; size=11 bbWeight=2 PerfScore 4.50
-G_M55503_IG42: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M55503_IG43: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; byrRegs -[eax] dec esi mov ebx, dword ptr [ebp-0xA4] cmp esi, ebx mov edx, esi mov ecx, dword ptr [ebp-0x44]
- jge SHORT G_M55503_IG45
+ jge SHORT G_M55503_IG46
;; size=16 bbWeight=4 PerfScore 15.00
-G_M55503_IG43: ; bbWeight=1, gcVars=00000000000000000000000401000000 {V00 V96}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M55503_IG44: ; bbWeight=1, gcVars=00000000000000000000000401000000 {V00 V96}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V92 V94} mov edx, bword ptr [ebp-0x130] ; byrRegs +[edx] @@ -716,12 +726,12 @@ G_M55503_IG43: ; bbWeight=1, gcVars=00000000000000000000000401000000 {V00 xor eax, eax or eax, dword ptr [edx+0x08] ...

+7 (+0.25%) : 5865.dasm - System.Net.Security.SslStream:SelectClientCertificate():System.Security.Cryptography.X509Certificates.X509Certificate2:this (Tier0-FullOpts)

@@ -8,7 +8,7 @@ ; 3 inlinees with PGO data; 100 single block inlinees; 34 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 51,111 ) ref -> [ebp-0x28] this class-hnd EH-live single-def <System.Net.Security.SslStream>
+; V00 this [V00,T09] ( 51,111 ) ref -> [ebp-0x28] this class-hnd EH-live single-def <System.Net.Security.SslStream>
; V01 loc0 [V01,T35] ( 9, 30 ) ref -> esi class-hnd <System.Security.Cryptography.X509Certificates.X509Certificate> ; V02 loc1 [V02,T41] ( 5, 19 ) ref -> [ebp-0x2C] do-not-enreg[Z] class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Certificate2> ; V03 loc2 [V03,T22] ( 13, 43 ) ref -> [ebp-0x30] do-not-enreg[M] ld-addr-op class-hnd EH-live <<unknown class>> @@ -21,10 +21,10 @@ ; V10 loc9 [V10,T12] ( 9, 92 ) ref -> [ebp-0x40] do-not-enreg[Z] class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Chain> ; V11 loc10 [V11,T14] ( 3, 68 ) ubyte -> ebx ; V12 loc11 [V12,T23] ( 3, 40 ) int -> esi
-; V13 loc12 [V13,T03] ( 5,132 ) int -> edi
+; V13 loc12 [V13,T04] ( 5,132 ) int -> edi
;* V14 loc13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ; V15 loc14 [V15,T24] ( 3, 40 ) int -> ebx
-; V16 loc15 [V16,T04] ( 5,132 ) int -> esi
+; V16 loc15 [V16,T05] ( 5,132 ) int -> esi
; V17 loc16 [V17,T16] ( 7, 49 ) int -> edi ; V18 tmp0 [V18,T67] ( 3, 6 ) ref -> eax class-hnd exact single-def "dup spill" <System.Object[]> ; V19 tmp1 [V19,T17] ( 3, 48 ) ref -> eax class-hnd "dup spill" <System.Security.Cryptography.X509Certificates.X509Certificate2> @@ -32,7 +32,7 @@ ;* V21 tmp3 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>> ; V22 tmp4 [V22,T36] ( 3, 24 ) ref -> ebx class-hnd exact "impAppendStmt" <System.Net.NetEventSource> ; V23 tmp5 [V23,T15] ( 8, 64 ) ref -> esi class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509Chain>
-; V24 tmp6 [V24,T09] ( 3, 96 ) ref -> eax class-hnd exact "dup spill" <System.Object[]>
+; V24 tmp6 [V24,T10] ( 3, 96 ) ref -> eax class-hnd exact "dup spill" <System.Object[]>
; V25 tmp7 [V25,T37] ( 3, 24 ) ref -> eax class-hnd exact "dup spill" <System.Object[]> ; V26 tmp8 [V26,T38] ( 3, 24 ) ref -> esi class-hnd exact "dup spill" <System.Object[]> ;* V27 tmp9 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.Security.LocalCertificateSelectionCallback> @@ -143,10 +143,10 @@ ;* V132 tmp114 [V132 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection> ;* V133 tmp115 [V133 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElement> ;* V134 tmp116 [V134 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
-; V135 tmp117 [V135,T00] ( 6,320 ) ref -> ebx class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2> -; V136 tmp118 [V136,T05] ( 2,128 ) ref -> eax class-hnd exact "dup spill" <System.String> -; V137 tmp119 [V137,T02] ( 6,132 ) ref -> [ebp-0x48] -; V138 tmp120 [V138,T10] ( 3, 96 ) ref -> eax class-hnd exact "dup spill" <System.String>
+; V135 tmp117 [V135,T00] ( 6,384 ) ref -> ebx class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2> +; V136 tmp118 [V136,T06] ( 2,128 ) ref -> eax class-hnd exact "dup spill" <System.String> +; V137 tmp119 [V137,T03] ( 6,148 ) ref -> [ebp-0x48] +; V138 tmp120 [V138,T01] ( 3,192 ) ref -> eax class-hnd exact "dup spill" <System.String>
;* V139 tmp121 [V139 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String> ;* V140 tmp122 [V140 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource> ;* V141 tmp123 [V141 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.NetEventSource> @@ -234,9 +234,9 @@ ; V223 tmp205 [V223,T85] ( 3, 6 ) ref -> eax single-def "argument with side effect" ; V224 tmp206 [V224,T86] ( 3, 6 ) ref -> eax single-def "argument with side effect" ; V225 tmp207 [V225,T20] ( 3, 48 ) ref -> eax "argument with side effect"
-; V226 tmp208 [V226,T06] ( 2,128 ) ref -> ecx "argument with side effect" -; V227 tmp209 [V227,T07] ( 2,128 ) ref -> ecx "argument with side effect" -; V228 tmp210 [V228,T01] ( 3,192 ) ref -> ecx "argument with side effect"
+; V226 tmp208 [V226,T07] ( 2,128 ) ref -> ecx "argument with side effect" +; V227 tmp209 [V227,T08] ( 2,128 ) ref -> ecx "argument with side effect" +; V228 tmp210 [V228,T02] ( 3,192 ) ref -> ecx "argument with side effect"
; V229 tmp211 [V229,T101] ( 2, 4 ) ref -> esi single-def "argument with side effect" ; V230 tmp212 [V230,T87] ( 3, 6 ) ref -> eax single-def "argument with side effect" ; V231 tmp213 [V231,T88] ( 3, 6 ) ref -> eax single-def "argument with side effect" @@ -268,14 +268,14 @@ G_M34773_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov gword ptr [ebp-0x28], ecx ; GC ptr vars +{V00} ;; size=20 bbWeight=1 PerfScore 7.75
-G_M34773_IG02: ; bbWeight=1, gcVars=0000000000000000000000000000000000000100 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
+G_M34773_IG02: ; bbWeight=1, gcVars=0000000000000000000000000000000000000200 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ecx] xor eax, eax ; gcrRegs +[eax] mov gword ptr [ebp-0x2C], eax ; GC ptr vars +{V02} ;; size=5 bbWeight=1 PerfScore 1.25
-G_M34773_IG03: ; bbWeight=1, gcVars=0000000000000000000000000000020000000100 {V00 V02}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34773_IG03: ; bbWeight=1, gcVars=0000000000000000000000000000020000000200 {V00 V02}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] mov gword ptr [ebp-0x30], eax ; GC ptr vars +{V03} @@ -386,7 +386,7 @@ G_M34773_IG08: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=8 bbWeight=1 PerfScore 3.50
-G_M34773_IG09: ; bbWeight=1, gcVars=0000000000000000000000000000020000400100 {V00 V02 V03}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34773_IG09: ; bbWeight=1, gcVars=0000000000000000000000000000020000400200 {V00 V02 V03}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[esi] ; GC ptr vars +{V02 V03 V22 V41} cmp gword ptr [esi+0x18], 0 @@ -423,7 +423,7 @@ G_M34773_IG10: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 mov gword ptr [ebp-0x38], eax ; GC ptr vars +{V05} ;; size=5 bbWeight=1 PerfScore 1.25
-G_M34773_IG11: ; bbWeight=1, gcVars=0000000000000000000000040000020000400100 {V00 V02 V03 V05}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34773_IG11: ; bbWeight=1, gcVars=0000000000000000000000040000020000400200 {V00 V02 V03 V05}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] ; GC ptr vars -{V22 V41} call [System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this] @@ -437,7 +437,7 @@ G_M34773_IG11: ; bbWeight=1, gcVars=0000000000000000000000040000020000400 test byte ptr [D1FFAB1EH], 1 ; global ptr jne SHORT G_M34773_IG13 ;; size=24 bbWeight=1 PerfScore 11.00
-G_M34773_IG12: ; bbWeight=0, gcVars=0000000000000000000000040000020000402100 {V00 V02 V03 V04 V05}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M34773_IG12: ; bbWeight=0, gcVars=0000000000000000000000040000020000402200 {V00 V02 V03 V04 V05}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax ecx] mov ecx, 0xD1FFAB1E mov edx, 56 @@ -550,13 +550,13 @@ G_M34773_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} pop eax jmp eax ;; size=3 bbWeight=0 PerfScore 0.00
-G_M34773_IG18: ; bbWeight=1, gcVars=0000000000000000000000000000020000400100 {V00 V02 V03}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34773_IG18: ; bbWeight=1, gcVars=0000000000000000000000000000020000400200 {V00 V02 V03}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi]
- ; GC ptr vars +{V00 V02 V03 V08 V22 V41}
+ ; GC ptr vars +{V00 V02 V03 V09 V22 V41}
test esi, esi je G_M34773_IG21 mov ecx, 0xD1FFAB1E ; <unknown class>
- ; GC ptr vars -{V03 V08 V22 V41}
+ ; GC ptr vars -{V03 V09 V22 V41}
call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] mov edi, eax @@ -604,7 +604,7 @@ G_M34773_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov ecx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ecx] cmp byte ptr [ecx+0x59], 0
- je G_M34773_IG68
+ je G_M34773_IG69
mov ebx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ebx] cmp byte ptr [ebx], bl @@ -619,7 +619,7 @@ G_M34773_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov edx, 19 call [System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this] ; gcrRegs -[ecx ebx]
- jmp G_M34773_IG68
+ jmp G_M34773_IG69
;; size=54 bbWeight=1 PerfScore 25.50 G_M34773_IG21: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x28] @@ -643,7 +643,7 @@ G_M34773_IG22: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax] cmp byte ptr [eax+0x59], 0
- je G_M34773_IG68
+ je G_M34773_IG69
mov ebx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ebx] cmp byte ptr [ebx], bl @@ -660,13 +660,13 @@ G_M34773_IG22: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov edx, 20 call [System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this] ; gcrRegs -[ecx ebx]
- jmp G_M34773_IG68
+ jmp G_M34773_IG69
;; size=53 bbWeight=1 PerfScore 25.50 G_M34773_IG23: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax] cmp byte ptr [eax+0x59], 0
- je G_M34773_IG68
+ je G_M34773_IG69
mov ebx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ebx] cmp byte ptr [ebx], bl @@ -683,7 +683,7 @@ G_M34773_IG23: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov edx, 21 call [System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this] ; gcrRegs -[ecx ebx]
- jmp G_M34773_IG68
+ jmp G_M34773_IG69
;; size=53 bbWeight=1 PerfScore 25.50 G_M34773_IG24: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ecx esi] @@ -718,7 +718,7 @@ G_M34773_IG24: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000 test esi, esi je SHORT G_M34773_IG29 ;; size=69 bbWeight=1 PerfScore 30.75
-G_M34773_IG25: ; bbWeight=0.50, gcVars=0000000000000000000000000000020000000100 {V00 V02}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34773_IG25: ; bbWeight=0.50, gcVars=0000000000000000000000000000020000000200 {V00 V02}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03} mov ecx, 0xD1FFAB1E ; System.Security.Cryptography.X509Certificates.X509Certificate cmp dword ptr [esi], ecx @@ -779,7 +779,7 @@ G_M34773_IG29: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov ecx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ecx] cmp byte ptr [ecx+0x59], 0
- je G_M34773_IG68
+ je G_M34773_IG69
push gword ptr [ebp-0x28] mov ecx, gword ptr [D1FFAB1EH] ; static handle mov edx, esi @@ -787,7 +787,7 @@ G_M34773_IG29: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 cmp dword ptr [ecx], ecx call [System.Net.NetEventSource:AttemptingRestartUsingCert(System.Security.Cryptography.X509Certificates.X509Certificate,System.Net.Security.SslStream):this] ; gcrRegs -[ecx edx esi]
- jmp G_M34773_IG68
+ jmp G_M34773_IG69
;; size=40 bbWeight=1 PerfScore 17.25 G_M34773_IG30: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x28] @@ -796,7 +796,7 @@ G_M34773_IG30: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[eax] mov eax, gword ptr [eax+0x08] test eax, eax
- je G_M34773_IG68
+ je G_M34773_IG69
mov eax, gword ptr [eax+0x04] mov ecx, eax mov eax, dword ptr [eax] @@ -805,7 +805,7 @@ G_M34773_IG30: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call [eax+0x18]<unknown method> ; gcrRegs -[ecx] test eax, eax
- jle G_M34773_IG68
+ jle G_M34773_IG69
mov ecx, gword ptr [ebp-0x28] ; gcrRegs +[ecx] call [System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this] @@ -823,7 +823,7 @@ G_M34773_IG30: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} cmp dword ptr [ecx+0x04], 0 jne SHORT G_M34773_IG32 ;; size=77 bbWeight=1 PerfScore 35.75
-G_M34773_IG31: ; bbWeight=1, gcVars=0000000000000000000000000000020000402100 {V00 V02 V03 V04}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34773_IG31: ; bbWeight=1, gcVars=0000000000000000000000000000020000402200 {V00 V02 V03 V04}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax ecx] cmp byte ptr [ebx], bl mov ecx, gword ptr [ebp-0x28] @@ -862,25 +862,25 @@ G_M34773_IG32: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 G_M34773_IG33: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref xor ecx, ecx mov dword ptr [ebp-0x24], ecx
- jmp G_M34773_IG67
+ jmp G_M34773_IG68
;; size=10 bbWeight=1 PerfScore 3.25 G_M34773_IG34: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref cmp gword ptr [ebp-0x34], 0
- je G_M34773_IG60
+ je G_M34773_IG61
mov ecx, gword ptr [ebp-0x34] ; gcrRegs +[ecx] cmp dword ptr [ecx+0x04], 0
- je G_M34773_IG60
+ je G_M34773_IG61
xor ecx, ecx mov gword ptr [ebp-0x3C], ecx ; GC ptr vars +{V09} ;; size=28 bbWeight=4 PerfScore 37.00
-G_M34773_IG35: ; bbWeight=4, gcVars=0000000000000000000000000000020002402100 {V00 V02 V03 V04 V09}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M34773_IG35: ; bbWeight=4, gcVars=0000000000000000000000000000020002402200 {V00 V02 V03 V04 V09}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx] mov gword ptr [ebp-0x40], ecx ...

+6 (+0.53%) : 12252.dasm - System.IO.Strategies.FileStreamHelpers:ValidateArguments(System.String,int,int,int,int,int,long) (Tier1)

@@ -70,10 +70,10 @@ ;* V58 tmp49 [V58 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V59 tmp50 [V59 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ;* V60 tmp51 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V61 tmp52 [V61,T17] ( 2, 2 ) ubyte -> ecx "Inline return value spill temp"
+; V61 tmp52 [V61,T17] ( 2, 2 ) ubyte -> edx "Inline return value spill temp"
;* V62 tmp53 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Runtime.Serialization.DeserializationTracker> ;* V63 tmp54 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V64 tmp55 [V64,T14] ( 2, 2 ) ubyte -> eax "Inline return value spill temp"
+; V64 tmp55 [V64,T14] ( 2, 2 ) ubyte -> ecx "Inline return value spill temp"
; V65 tmp56 [V65,T10] ( 3, 4 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <System.Threading.AsyncLocal`1[ubyte]> ;* V66 tmp57 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Object> ;* V67 tmp58 [V67 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" @@ -161,20 +161,20 @@ G_M20415_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=21 bbWeight=1 PerfScore 7.25 G_M20415_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref test edi, edi
- je G_M20415_IG20
+ je G_M20415_IG21
cmp dword ptr [edi+0x04], 0
- je G_M20415_IG20
+ je G_M20415_IG21
mov eax, dword ptr [ebp+0x18] and eax, -17 xor edi, edi test esi, esi
- jle G_M20415_IG11
+ jle G_M20415_IG20
cmp esi, 6
- jg G_M20415_IG11
+ jg G_M20415_IG20
mov edx, ebx sub edx, 1 cmp edx, 2
- ja G_M20415_IG21
+ ja G_M20415_IG22
mov edx, 0xD1FFAB1E ; gcrRegs +[edx] cmp eax, 7 @@ -183,42 +183,42 @@ G_M20415_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 G_M20415_IG03: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref ; gcrRegs -[edx] test edi, edi
- jne G_M20415_IG22
+ jne G_M20415_IG23
mov eax, dword ptr [ebp+0x10] test eax, eax
- jne G_M20415_IG23
+ jne G_M20415_IG24
;; size=19 bbWeight=1 PerfScore 3.50 G_M20415_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[edi] cmp dword ptr [ebp+0x14], 0
- jl G_M20415_IG24 - cmp dword ptr [ebp+0x0C], 0
jl G_M20415_IG25
+ cmp dword ptr [ebp+0x0C], 0 + jl G_M20415_IG26
test bl, 2
- je G_M20415_IG26
+ je G_M20415_IG27
;; size=29 bbWeight=1 PerfScore 7.25 G_M20415_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref test bl, 1
- jne G_M20415_IG28
+ jne G_M20415_IG29
;; size=9 bbWeight=1 PerfScore 1.25 G_M20415_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref cmp dword ptr [ebp+0x08], 1 mov eax, dword ptr [ebp+0x0C] sbb eax, 0
- jge G_M20415_IG29
+ jge G_M20415_IG30
;; size=16 bbWeight=1 PerfScore 4.50 G_M20415_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref test bl, 2
- je G_M20415_IG19
+ je G_M20415_IG15
xor eax, eax ;; size=11 bbWeight=1 PerfScore 1.50
-G_M20415_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M20415_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; gcrRegs +[edx] movzx edx, word ptr [edx+2*eax+0x08] ; gcrRegs -[edx] cmp edx, 256
- jb SHORT G_M20415_IG12
+ jb G_M20415_IG16
mov ecx, edx shr ecx, 9 movzx ecx, byte ptr [ecx+D1FFAB1EH] @@ -231,92 +231,66 @@ G_M20415_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} and edx, 15 movzx edx, byte ptr [ecx+edx+D1FFAB1EH] cmp byte ptr [edx+D1FFAB1EH], 0
- jge SHORT G_M20415_IG13 - ;; size=72 bbWeight=1 PerfScore 16.50 -G_M20415_IG09: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - inc eax - cmp eax, 15 - jl SHORT G_M20415_IG08 - ;; size=6 bbWeight=8 PerfScore 12.00 -G_M20415_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - jmp G_M20415_IG30 - ;; size=5 bbWeight=1 PerfScore 2.00 -G_M20415_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - mov edi, 0xD1FFAB1E - ; gcrRegs +[edi] - jmp G_M20415_IG03 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M20415_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[edi] - test byte ptr [edx+D1FFAB1EH], 128 - jne SHORT G_M20415_IG09 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M20415_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jl G_M20415_IG17 + ;; size=80 bbWeight=1 PerfScore 16.50 +G_M20415_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
cmp dword ptr [D1FFAB1EH], 0
- je G_M20415_IG31
+ je G_M20415_IG32
;; size=13 bbWeight=1 PerfScore 4.00
-G_M20415_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M20415_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [D1FFAB1EH] cmp eax, 1
- je G_M20415_IG19
+ je SHORT G_M20415_IG15
cmp eax, -1
- jne G_M20415_IG37
+ jne G_M20415_IG38
mov ebx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ebx] cmp byte ptr [ebx], bl mov eax, dword ptr FS:[0x002C] mov eax, dword ptr [eax] cmp dword ptr [eax+0x80], 3
- jl G_M20415_IG33
+ jl G_M20415_IG34
mov eax, dword ptr [eax+0x84] mov eax, dword ptr [eax+0x0C] test eax, eax
- je G_M20415_IG33
+ je G_M20415_IG34
mov eax, bword ptr [eax] ; byrRegs +[eax] add eax, 8
- ;; size=74 bbWeight=1 PerfScore 24.00 -G_M20415_IG15: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000001 {eax}, byref, isz
+ ;; size=70 bbWeight=1 PerfScore 24.00 +G_M20415_IG11: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000001 {eax}, byref, isz
mov eax, gword ptr [eax+0x0C] ; gcrRegs +[eax] ; byrRegs -[eax] test eax, eax
- jne SHORT G_M20415_IG16
+ jne SHORT G_M20415_IG12
call [<unknown method>] ;; size=13 bbWeight=1 PerfScore 6.25
-G_M20415_IG16: ; bbWeight=1, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref
+G_M20415_IG12: ; bbWeight=1, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref
mov edi, gword ptr [eax+0x04] ; gcrRegs +[edi] test edi, edi
- jne G_M20415_IG34
+ jne G_M20415_IG35
xor edx, edx ; gcrRegs +[edx] ;; size=13 bbWeight=1 PerfScore 3.50
-G_M20415_IG17: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+G_M20415_IG13: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax ebx edi]
- xor ecx, ecx - ; gcrRegs +[ecx] - mov gword ptr [ebp-0x14], ecx
+ xor eax, eax + ; gcrRegs +[eax] + mov gword ptr [ebp-0x14], eax
test edx, edx
- je SHORT G_M20415_IG18 - mov ecx, 0xD1FFAB1E ; System.Boolean - ; gcrRegs -[ecx] - call [CORINFO_HELP_UNBOX] - ; gcrRegs -[edx] - ; byrRegs +[eax] - movzx eax, byte ptr [eax] - ; byrRegs -[eax] - test eax, eax - jne G_M20415_IG36 - ;; size=31 bbWeight=1 PerfScore 9.00 -G_M20415_IG18: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M20415_IG19 + ;; size=9 bbWeight=1 PerfScore 2.50 +G_M20415_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax edx]
call [System.Runtime.Serialization.SerializationInfo:GetThreadDeserializationTracker():System.Runtime.Serialization.DeserializationTracker] ; gcrRegs +[eax]
- movzx ecx, byte ptr [eax+0x04] - test ecx, ecx - jne G_M20415_IG36
+ movzx edx, byte ptr [eax+0x04] + test edx, edx + jne G_M20415_IG37
;; size=18 bbWeight=1 PerfScore 6.25
-G_M20415_IG19: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M20415_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[eax] lea esp, [ebp-0x0C] pop ebx @@ -325,8 +299,36 @@ G_M20415_IG19: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} pop ebp ret 24 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M20415_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M20415_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + test byte ptr [edx+D1FFAB1EH], 128 + je G_M20415_IG09 + ;; size=13 bbWeight=1 PerfScore 4.00 +G_M20415_IG17: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + inc eax + cmp eax, 15 + jl G_M20415_IG08 + ;; size=10 bbWeight=8 PerfScore 12.00 +G_M20415_IG18: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + jmp G_M20415_IG31 + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M20415_IG19: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[edx] + mov ecx, 0xD1FFAB1E ; System.Boolean + call [CORINFO_HELP_UNBOX] + ; gcrRegs -[edx] + ; byrRegs +[eax] + movzx ecx, byte ptr [eax] + test ecx, ecx + jne G_M20415_IG37 + jmp SHORT G_M20415_IG14 + ;; size=24 bbWeight=1 PerfScore 8.50 +G_M20415_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; byrRegs -[eax] + mov edi, 0xD1FFAB1E
; gcrRegs +[edi]
+ jmp G_M20415_IG03 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M20415_IG21: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
mov ecx, 0x2FB96 mov edx, 0xD1FFAB1E call CORINFO_HELP_STRCNS @@ -339,12 +341,12 @@ G_M20415_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=000000 ...

+6 (+0.53%) : 97106.dasm - System.IO.Strategies.FileStreamHelpers:ValidateArguments(System.String,int,int,int,int,int,long) (Tier1)

@@ -70,10 +70,10 @@ ;* V58 tmp49 [V58 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V59 tmp50 [V59 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ;* V60 tmp51 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V61 tmp52 [V61,T17] ( 2, 2 ) ubyte -> ecx "Inline return value spill temp"
+; V61 tmp52 [V61,T17] ( 2, 2 ) ubyte -> edx "Inline return value spill temp"
;* V62 tmp53 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Runtime.Serialization.DeserializationTracker> ;* V63 tmp54 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V64 tmp55 [V64,T14] ( 2, 2 ) ubyte -> eax "Inline return value spill temp"
+; V64 tmp55 [V64,T14] ( 2, 2 ) ubyte -> ecx "Inline return value spill temp"
; V65 tmp56 [V65,T10] ( 3, 4 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <System.Threading.AsyncLocal`1[ubyte]> ;* V66 tmp57 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Object> ;* V67 tmp58 [V67 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" @@ -161,20 +161,20 @@ G_M20415_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=21 bbWeight=1 PerfScore 7.25 G_M20415_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref test edi, edi
- je G_M20415_IG20
+ je G_M20415_IG21
cmp dword ptr [edi+0x04], 0
- je G_M20415_IG20
+ je G_M20415_IG21
mov eax, dword ptr [ebp+0x18] and eax, -17 xor edi, edi test esi, esi
- jle G_M20415_IG11
+ jle G_M20415_IG20
cmp esi, 6
- jg G_M20415_IG11
+ jg G_M20415_IG20
mov edx, ebx sub edx, 1 cmp edx, 2
- ja G_M20415_IG21
+ ja G_M20415_IG22
mov edx, 0xD1FFAB1E ; gcrRegs +[edx] cmp eax, 7 @@ -183,44 +183,44 @@ G_M20415_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 G_M20415_IG03: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref ; gcrRegs -[edx] test edi, edi
- jne G_M20415_IG22
+ jne G_M20415_IG23
mov eax, dword ptr [ebp+0x10] test eax, eax
- jne G_M20415_IG23
+ jne G_M20415_IG24
;; size=19 bbWeight=1 PerfScore 3.50 G_M20415_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[edi] cmp dword ptr [ebp+0x14], 0
- jl G_M20415_IG24 - cmp dword ptr [ebp+0x0C], 0
jl G_M20415_IG25
+ cmp dword ptr [ebp+0x0C], 0 + jl G_M20415_IG26
test bl, 2
- je G_M20415_IG26
+ je G_M20415_IG27
;; size=29 bbWeight=1 PerfScore 7.25 G_M20415_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz test bl, 1 je SHORT G_M20415_IG06 cmp esi, 6
- je G_M20415_IG28
+ je G_M20415_IG29
;; size=14 bbWeight=1 PerfScore 2.50 G_M20415_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref cmp dword ptr [ebp+0x08], 1 mov eax, dword ptr [ebp+0x0C] sbb eax, 0
- jge G_M20415_IG29
+ jge G_M20415_IG30
;; size=16 bbWeight=1 PerfScore 4.50 G_M20415_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref test bl, 2
- je G_M20415_IG19
+ je G_M20415_IG15
xor eax, eax ;; size=11 bbWeight=1 PerfScore 1.50
-G_M20415_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M20415_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; gcrRegs +[edx] movzx edx, word ptr [edx+2*eax+0x08] ; gcrRegs -[edx] cmp edx, 256
- jb SHORT G_M20415_IG12
+ jb G_M20415_IG16
mov ecx, edx shr ecx, 9 movzx ecx, byte ptr [ecx+D1FFAB1EH] @@ -233,92 +233,66 @@ G_M20415_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} and edx, 15 movzx edx, byte ptr [ecx+edx+D1FFAB1EH] cmp byte ptr [edx+D1FFAB1EH], 0
- jge SHORT G_M20415_IG13 - ;; size=72 bbWeight=1 PerfScore 16.50 -G_M20415_IG09: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - inc eax - cmp eax, 15 - jl SHORT G_M20415_IG08 - ;; size=6 bbWeight=8 PerfScore 12.00 -G_M20415_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - jmp G_M20415_IG30 - ;; size=5 bbWeight=1 PerfScore 2.00 -G_M20415_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - mov edi, 0xD1FFAB1E - ; gcrRegs +[edi] - jmp G_M20415_IG03 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M20415_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[edi] - test byte ptr [edx+D1FFAB1EH], 128 - jne SHORT G_M20415_IG09 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M20415_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jl G_M20415_IG17 + ;; size=80 bbWeight=1 PerfScore 16.50 +G_M20415_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
cmp dword ptr [D1FFAB1EH], 0
- je G_M20415_IG31
+ je G_M20415_IG32
;; size=13 bbWeight=1 PerfScore 4.00
-G_M20415_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M20415_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [D1FFAB1EH] cmp eax, 1
- je G_M20415_IG19
+ je SHORT G_M20415_IG15
cmp eax, -1
- jne G_M20415_IG37
+ jne G_M20415_IG38
mov ebx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ebx] cmp byte ptr [ebx], bl mov eax, dword ptr FS:[0x002C] mov eax, dword ptr [eax] cmp dword ptr [eax+0x80], 3
- jl G_M20415_IG33
+ jl G_M20415_IG34
mov eax, dword ptr [eax+0x84] mov eax, dword ptr [eax+0x0C] test eax, eax
- je G_M20415_IG33
+ je G_M20415_IG34
mov eax, bword ptr [eax] ; byrRegs +[eax] add eax, 8
- ;; size=74 bbWeight=1 PerfScore 24.00 -G_M20415_IG15: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000001 {eax}, byref, isz
+ ;; size=70 bbWeight=1 PerfScore 24.00 +G_M20415_IG11: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000001 {eax}, byref, isz
mov eax, gword ptr [eax+0x0C] ; gcrRegs +[eax] ; byrRegs -[eax] test eax, eax
- jne SHORT G_M20415_IG16
+ jne SHORT G_M20415_IG12
call [<unknown method>] ;; size=13 bbWeight=1 PerfScore 6.25
-G_M20415_IG16: ; bbWeight=1, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref
+G_M20415_IG12: ; bbWeight=1, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref
mov edi, gword ptr [eax+0x04] ; gcrRegs +[edi] test edi, edi
- jne G_M20415_IG34
+ jne G_M20415_IG35
xor edx, edx ; gcrRegs +[edx] ;; size=13 bbWeight=1 PerfScore 3.50
-G_M20415_IG17: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+G_M20415_IG13: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax ebx edi]
- xor ecx, ecx - ; gcrRegs +[ecx] - mov gword ptr [ebp-0x14], ecx
+ xor eax, eax + ; gcrRegs +[eax] + mov gword ptr [ebp-0x14], eax
test edx, edx
- je SHORT G_M20415_IG18 - mov ecx, 0xD1FFAB1E ; System.Boolean - ; gcrRegs -[ecx] - call [CORINFO_HELP_UNBOX] - ; gcrRegs -[edx] - ; byrRegs +[eax] - movzx eax, byte ptr [eax] - ; byrRegs -[eax] - test eax, eax - jne G_M20415_IG36 - ;; size=31 bbWeight=1 PerfScore 9.00 -G_M20415_IG18: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M20415_IG19 + ;; size=9 bbWeight=1 PerfScore 2.50 +G_M20415_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax edx]
call [System.Runtime.Serialization.SerializationInfo:GetThreadDeserializationTracker():System.Runtime.Serialization.DeserializationTracker] ; gcrRegs +[eax]
- movzx ecx, byte ptr [eax+0x04] - test ecx, ecx - jne G_M20415_IG36
+ movzx edx, byte ptr [eax+0x04] + test edx, edx + jne G_M20415_IG37
;; size=18 bbWeight=1 PerfScore 6.25
-G_M20415_IG19: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M20415_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[eax] lea esp, [ebp-0x0C] pop ebx @@ -327,8 +301,36 @@ G_M20415_IG19: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} pop ebp ret 24 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M20415_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M20415_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + test byte ptr [edx+D1FFAB1EH], 128 + je G_M20415_IG09 + ;; size=13 bbWeight=1 PerfScore 4.00 +G_M20415_IG17: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + inc eax + cmp eax, 15 + jl G_M20415_IG08 + ;; size=10 bbWeight=8 PerfScore 12.00 +G_M20415_IG18: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + jmp G_M20415_IG31 + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M20415_IG19: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[edx] + mov ecx, 0xD1FFAB1E ; System.Boolean + call [CORINFO_HELP_UNBOX] + ; gcrRegs -[edx] + ; byrRegs +[eax] + movzx ecx, byte ptr [eax] + test ecx, ecx + jne G_M20415_IG37 + jmp SHORT G_M20415_IG14 + ;; size=24 bbWeight=1 PerfScore 8.50 +G_M20415_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; byrRegs -[eax] + mov edi, 0xD1FFAB1E
; gcrRegs +[edi]
+ jmp G_M20415_IG03 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M20415_IG21: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
mov ecx, 0x2FB96 mov edx, 0xD1FFAB1E ...

benchmarks.run_tiered.windows.x86.checked.mch

-26 (-28.89%) : 9240.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)

@@ -7,11 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> ecx class-hnd single-def <System.String> -; V01 arg1 [V01,T03] ( 7, 5 ) int -> edx single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> esi -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> edi -; V04 cse0 [V04,T04] ( 6, 6.54) int -> eax "CSE - aggressive"
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> ecx class-hnd single-def <System.String> +; V01 arg1 [V01,T04] ( 6, 4.50) int -> edx single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> esi +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> edi +; V04 cse0 [V04,T01] ( 5, 10.50) int -> eax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -37,72 +37,51 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ecx] mov esi, edx
- test edx, edx - jl SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz + cmp esi, eax + jae SHORT G_M3357_IG13
movzx edi, word ptr [ecx+2*esi+0x08] cmp edi, 32 je SHORT G_M3357_IG08
- ;; size=10 bbWeight=3.96 PerfScore 12.87 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=14 bbWeight=4 PerfScore 18.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
cmp edi, 9
- jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=1.98 PerfScore 2.48 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M3357_IG11 + ;; size=5 bbWeight=2 PerfScore 2.50 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
inc esi cmp eax, esi jg SHORT G_M3357_IG06
- ;; size=5 bbWeight=3.96 PerfScore 5.94 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] - jmp SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ecx] - cmp esi, eax - jae SHORT G_M3357_IG17 - movzx edi, word ptr [ecx+2*esi+0x08] - cmp edi, 32 - je SHORT G_M3357_IG12 - ;; size=14 bbWeight=0.04 PerfScore 0.18 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - cmp edi, 9 - jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=0.02 PerfScore 0.03 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - inc esi - cmp eax, esi - jg SHORT G_M3357_IG10 - ;; size=5 bbWeight=0.04 PerfScore 0.06 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=5 bbWeight=4 PerfScore 6.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx] sub eax, edx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
mov eax, esi sub eax, edx ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 90, prolog size 5, PerfScore 34.05, instruction count 47, allocated bytes for code 90 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)
+Total bytes of code 64, prolog size 5, PerfScore 37.38, instruction count 36, allocated bytes for code 64 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)
; ============================================================

-9 (-1.01%) : 46732.dasm - BenchmarksGame.RegexRedux_1:RunBench():int:this (Tier0-FullOpts)

@@ -53,21 +53,21 @@ ;* V42 tmp29 [V42 ] ( 0, 0 ) ref -> zero-ref ;* V43 tmp30 [V43 ] ( 0, 0 ) int -> zero-ref ;* V44 tmp31 [V44 ] ( 0, 0 ) int -> zero-ref
-; V45 tmp32 [V45,T31] ( 3, 8 ) int -> eax
+; V45 tmp32 [V45,T32] ( 3, 8 ) int -> eax
;* V46 tmp33 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ;* V47 tmp34 [V47 ] ( 0, 0 ) ref -> zero-ref ;* V48 tmp35 [V48 ] ( 0, 0 ) ref -> zero-ref ;* V49 tmp36 [V49 ] ( 0, 0 ) ref -> zero-ref ;* V50 tmp37 [V50 ] ( 0, 0 ) int -> zero-ref ; V51 tmp38 [V51,T02] ( 10, 36 ) ref -> [ebp-0x34] spill-single-def
-; V52 tmp39 [V52,T27] ( 3, 10 ) ref -> [ebp-0x38] spill-single-def
+; V52 tmp39 [V52,T20] ( 3, 12 ) ref -> [ebp-0x38] spill-single-def
; V53 tmp40 [V53,T06] ( 6, 30 ) ref -> [ebp-0x3C] spill-single-def ;* V54 tmp41 [V54,T50] ( 0, 0 ) int -> zero-ref
-; V55 tmp42 [V55,T32] ( 3, 8 ) int -> [ebp-0x18]
+; V55 tmp42 [V55,T28] ( 3, 10 ) int -> [ebp-0x18]
; V56 tmp43 [V56,T15] ( 2, 16 ) ref -> edi class-hnd exact "dup spill" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]> ; V57 tmp44 [V57,T10] ( 8, 22 ) ref -> registers
-; V58 tmp45 [V58,T20] ( 3, 12 ) ref -> [ebp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]> -; V59 tmp46 [V59,T21] ( 3, 12 ) byref -> edi "finalizable newobj spill"
+; V58 tmp45 [V58,T21] ( 3, 12 ) ref -> [ebp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]> +; V59 tmp46 [V59,T22] ( 3, 12 ) byref -> edi "finalizable newobj spill"
; V60 tmp47 [V60,T34] ( 2, 8 ) ref -> edi class-hnd exact "dup spill" <System.WeakReference`1[System.Text.RegularExpressions.RegexReplacement]> ;* V61 tmp48 [V61 ] ( 0, 0 ) ref -> zero-ref ;* V62 tmp49 [V62 ] ( 0, 0 ) ref -> zero-ref @@ -77,27 +77,27 @@ ;* V66 tmp53 [V66 ] ( 0, 0 ) ref -> zero-ref ;* V67 tmp54 [V67 ] ( 0, 0 ) int -> zero-ref ;* V68 tmp55 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.ComAwareWeakReference+ComInfo>
-; V69 tmp56 [V69,T29] ( 4, 8 ) int -> eax "Inline stloc first use temp"
+; V69 tmp56 [V69,T30] ( 4, 8 ) int -> eax "Inline stloc first use temp"
;* V70 tmp57 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.ComAwareWeakReference+ComInfo> ;* V71 tmp58 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.RegexReplacement> ; V72 tmp59 [V72,T12] ( 6, 18 ) ref -> esi ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.RegexReplacement>
-; V73 tmp60 [V73,T25] ( 2, 12 ) int -> [ebp-0x1C] spill-single-def "Inlining Arg" -; V74 tmp61 [V74,T23] ( 2, 12 ) ref -> [ebp-0x44] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable> -; V75 tmp62 [V75,T26] ( 2, 12 ) int -> [ebp-0x20] spill-single-def "Inlining Arg" -; V76 tmp63 [V76,T24] ( 2, 12 ) ref -> [ebp-0x48] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable>
+; V73 tmp60 [V73,T26] ( 2, 12 ) int -> [ebp-0x1C] spill-single-def "Inlining Arg" +; V74 tmp61 [V74,T24] ( 2, 12 ) ref -> [ebp-0x44] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable> +; V75 tmp62 [V75,T27] ( 2, 12 ) int -> [ebp-0x20] spill-single-def "Inlining Arg" +; V76 tmp63 [V76,T25] ( 2, 12 ) ref -> [ebp-0x48] class-hnd spill-single-def "Inlining Arg" <System.Collections.Hashtable>
;* V77 tmp64 [V77 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V78 tmp65 [V78 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexReplacement>
-; V79 tmp66 [V79,T30] ( 3, 8 ) ref -> esi class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexReplacement>
+; V79 tmp66 [V79,T31] ( 3, 8 ) ref -> esi class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexReplacement>
; V80 tmp67 [V80,T18] ( 5, 14 ) int -> esi "Inline stloc first use temp" ;* V81 tmp68 [V81 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Text.RegularExpressions.RegexReplacement> ; V82 tmp69 [V82,T39] ( 3, 6 ) ref -> esi class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.RegexReplacement> ;* V83 tmp70 [V83 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Text.RegularExpressions.RegexReplacement> ;* V84 tmp71 [V84 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.RegexReplacement>
-; V85 tmp72 [V85,T22] ( 3, 12 ) ref -> esi class-hnd "updating class info" <System.ComAwareWeakReference>
+; V85 tmp72 [V85,T23] ( 3, 12 ) ref -> esi class-hnd "updating class info" <System.ComAwareWeakReference>
;* V86 tmp73 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V87 tmp74 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V88 tmp75 [V88,T35] ( 2, 8 ) ref -> eax class-hnd "dup spill" <System.Object>
-; V89 tmp76 [V89,T28] ( 4, 8 ) ref -> eax
+; V89 tmp76 [V89,T29] ( 4, 8 ) ref -> eax
;* V90 tmp77 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.RegexReplacement> ; V91 tmp78 [V91,T19] ( 2, 4 ) ubyte -> eax "Inline return value spill temp" ; V92 tmp79 [V92,T01] ( 6, 52 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String> @@ -156,7 +156,7 @@ G_M53318_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 call [System.Text.RegularExpressions.Regex:.ctor(System.String,int):this] ; gcrRegs -[eax ecx edx] test esi, esi
- je G_M53318_IG37
+ je G_M53318_IG36
test byte ptr [edi+0x20], 64 jne SHORT G_M53318_IG04 ;; size=44 bbWeight=1 PerfScore 13.25 @@ -231,7 +231,7 @@ G_M53318_IG06: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 call [System.Text.RegularExpressions.Regex:.ctor(System.String,int):this] ; gcrRegs -[eax ecx edx] test esi, esi
- je G_M53318_IG37
+ je G_M53318_IG36
mov ecx, dword ptr [esi+0x04] mov edx, gword ptr [ebp-0x2C] ; gcrRegs +[edx] @@ -335,7 +335,7 @@ G_M53318_IG13: ; bbWeight=4, gcVars=0000800000000000 {V10}, gcrefRegs=000 call [System.Text.RegularExpressions.Regex:.ctor(System.String,int):this] ; gcrRegs -[eax ecx edx] test esi, esi
- je G_M53318_IG37
+ je G_M53318_IG36
mov eax, gword ptr [ebp-0x30] ; gcrRegs +[eax] mov gword ptr [ebp-0x34], eax @@ -349,26 +349,26 @@ G_M53318_IG13: ; bbWeight=4, gcVars=0000800000000000 {V10}, gcrefRegs=000 test byte ptr [eax+0x20], 64 jne SHORT G_M53318_IG15 ;; size=73 bbWeight=4 PerfScore 103.00
-G_M53318_IG14: ; bbWeight=2, gcVars=0000800008000044 {V10 V51 V52 V53}, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M53318_IG14: ; bbWeight=2, gcVars=0000800000100044 {V10 V51 V52 V53}, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V22 V100} xor ecx, ecx
+ mov dword ptr [ebp-0x18], ecx
jmp SHORT G_M53318_IG16
- ;; size=4 bbWeight=2 PerfScore 4.50 -G_M53318_IG15: ; bbWeight=2, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref
+ ;; size=7 bbWeight=2 PerfScore 6.50 +G_M53318_IG15: ; bbWeight=4, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [esi+0x04] mov dword ptr [ebp-0x18], ecx
- mov esi, gword ptr [ebp-0x38] - ;; size=9 bbWeight=2 PerfScore 8.00 -G_M53318_IG16: ; bbWeight=4, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref
+ ;; size=6 bbWeight=4 PerfScore 12.00 +G_M53318_IG16: ; bbWeight=4, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[esi]
test edx, edx
- je G_M53318_IG38
+ je G_M53318_IG37
mov edi, gword ptr [eax+0x18] ; gcrRegs +[edi] test edi, edi
- mov dword ptr [ebp-0x18], ecx - jne G_M53318_IG22 - ;; size=22 bbWeight=4 PerfScore 22.00 -G_M53318_IG17: ; bbWeight=2, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M53318_IG19 + ;; size=15 bbWeight=4 PerfScore 18.00 +G_M53318_IG17: ; bbWeight=2, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx edi] lea edi, bword ptr [eax+0x18] ; byrRegs +[edi] @@ -389,12 +389,12 @@ G_M53318_IG17: ; bbWeight=2, gcrefRegs=00000041 {eax esi}, byrefRegs=0000 call [<unknown method>] ; gcrRegs -[ecx] ;; size=39 bbWeight=2 PerfScore 18.00
-G_M53318_IG18: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
+G_M53318_IG18: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
mov edx, gword ptr [ebp-0x40] ; gcrRegs +[edx] mov dword ptr [edx+0x04], eax test edi, edi
- je G_M53318_IG39
+ je G_M53318_IG38
push 0 mov ecx, edi ; byrRegs +[ecx] @@ -415,7 +415,7 @@ G_M53318_IG18: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000080 mov edi, ecx ;; size=43 bbWeight=2 PerfScore 22.00 G_M53318_IG19: ; bbWeight=4, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx esi]
+ ; gcrRegs -[ecx]
mov ecx, gword ptr [eax+0x0C] ; gcrRegs +[ecx] mov gword ptr [ebp-0x44], ecx @@ -431,40 +431,37 @@ G_M53318_IG19: ; bbWeight=4, gcrefRegs=00000081 {eax edi}, byrefRegs=0000 mov dword ptr [ebp-0x1C], esi mov esi, dword ptr [edi+0x04] and esi, -2
- jne SHORT G_M53318_IG23
+ jne SHORT G_M53318_IG22
;; size=32 bbWeight=4 PerfScore 61.00
-G_M53318_IG20: ; bbWeight=2, gcVars=0000800009800044 {V10 V51 V52 V53 V74 V76}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M53318_IG20: ; bbWeight=2, gcVars=0000800003100044 {V10 V51 V52 V53 V74 V76}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax ecx] mov eax, gword ptr [ebp-0x34] ; gcrRegs +[eax] xor esi, esi ; gcrRegs +[esi]
- jmp SHORT G_M53318_IG27
+ jmp SHORT G_M53318_IG26
;; size=7 bbWeight=2 PerfScore 6.50
-G_M53318_IG21: ; bbWeight=1, gcVars=0000800008000044 {V10 V51 V52 V53}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax]
+G_M53318_IG21: ; bbWeight=1, gcVars=0000800000100044 {V10 V51 V52 V53}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax esi]
; GC ptr vars -{V74 V76} mov eax, gword ptr [ebp-0x34] ; gcrRegs +[eax] jmp SHORT G_M53318_IG19 ;; size=5 bbWeight=1 PerfScore 3.00
-G_M53318_IG22: ; bbWeight=2, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M53318_IG19 - ;; size=2 bbWeight=2 PerfScore 4.00 -G_M53318_IG23: ; bbWeight=2, gcVars=0000800009800044 {V10 V51 V52 V53 V74 V76}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax esi]
+G_M53318_IG22: ; bbWeight=2, gcVars=0000800003100044 {V10 V51 V52 V53 V74 V76}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax]
; GC ptr vars +{V74 V76} mov eax, gword ptr [ebp-0x34] ; gcrRegs +[eax] test esi, 2
- jne SHORT G_M53318_IG24
+ jne SHORT G_M53318_IG23
mov ecx, esi call <unknown method> mov esi, eax ; gcrRegs +[esi]
- jmp SHORT G_M53318_IG26
+ jmp SHORT G_M53318_IG25
;; size=22 bbWeight=2 PerfScore 11.50
-G_M53318_IG24: ; bbWeight=2, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref, isz
+G_M53318_IG23: ; bbWeight=2, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi] mov ecx, esi and ecx, -4 @@ -474,40 +471,40 @@ G_M53318_IG24: ; bbWeight=2, gcrefRegs=00000081 {eax edi}, byrefRegs=0000 mov ecx, dword ptr [esi+0x08] call <unknown method> test eax, eax
- jne SHORT G_M53318_IG25
+ jne SHORT G_M53318_IG24
mov ecx, esi ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx esi] ;; size=32 bbWeight=2 PerfScore 18.50
-G_M53318_IG25: ; bbWeight=2, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
+G_M53318_IG24: ; bbWeight=2, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
mov esi, eax ; gcrRegs +[esi] ;; size=2 bbWeight=2 PerfScore 0.50
-G_M53318_IG26: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M53318_IG25: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] mov eax, gword ptr [ebp-0x34] ; gcrRegs +[eax] ;; size=3 bbWeight=2 PerfScore 2.00
-G_M53318_IG27: ; bbWeight=4, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
+G_M53318_IG26: ; bbWeight=4, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
test esi, esi
- je G_M53318_IG36
+ je G_M53318_IG35
;; size=8 bbWeight=4 PerfScore 5.00
-G_M53318_IG28: ; bbWeight=2, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M53318_IG27: ; bbWeight=2, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [esi+0x0C] ; gcrRegs +[ecx] cmp byte ptr [ecx], cl cmp ecx, gword ptr [ebp-0x3C]
- je SHORT G_M53318_IG32
+ je SHORT G_M53318_IG31
;; size=10 bbWeight=2 PerfScore 16.00
-G_M53318_IG29: ; bbWeight=16, gcrefRegs=000000C3 {eax ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M53318_IG28: ; bbWeight=16, gcrefRegs=000000C3 {eax ecx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ecx+0x04] mov ebx, gword ptr [ebp-0x3C] ; gcrRegs +[ebx] cmp edx, dword ptr [ebx+0x04]
- jne SHORT G_M53318_IG31
+ jne SHORT G_M53318_IG30
;; size=11 bbWeight=16 PerfScore 112.00
-G_M53318_IG30: ; bbWeight=2, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
...

+0 (0.00%) : 3169.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (Tier0-FullOpts)

@@ -71,12 +71,14 @@ G_M29788_IG04: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=0000000 G_M29788_IG05: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte] test eax, eax
- jne SHORT G_M29788_IG12
+ je SHORT G_M29788_IG08
;; size=10 bbWeight=8 PerfScore 34.00
-G_M29788_IG06: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M29788_IG08 - ;; size=2 bbWeight=16 PerfScore 32.00
+G_M29788_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[esi] + jmp SHORT G_M29788_IG12 + ;; size=2 bbWeight=0.50 PerfScore 1.00
G_M29788_IG07: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[esi]
test byte ptr [ecx+D1FFAB1EH], 128 jne SHORT G_M29788_IG12 ;; size=9 bbWeight=8 PerfScore 32.00 @@ -119,6 +121,6 @@ G_M29788_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b int3 ;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 110, prolog size 8, PerfScore 400.00, instruction count 46, allocated bytes for code 110 (MethodHash=bfc38ba3) for method System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (Tier0-FullOpts)
+Total bytes of code 110, prolog size 8, PerfScore 369.00, instruction count 46, allocated bytes for code 110 (MethodHash=bfc38ba3) for method System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (Tier0-FullOpts)
; ============================================================

+2 (+0.11%) : 31653.dasm - System.Threading.ReaderWriterLockSlim:TryEnterReadLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier0-FullOpts)

@@ -65,7 +65,7 @@ ; V54 tmp48 [V54,T14] ( 9, 40 ) ref -> registers class-hnd "Inline stloc first use temp" <System.Threading.ReaderWriterCount> ;* V55 tmp49 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Threading.ReaderWriterCount> ;* V56 tmp50 [V56,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V57 tmp51 [V57,T72] ( 3, 3 ) byref -> esi "Inlining Arg"
+; V57 tmp51 [V57,T72] ( 3, 3 ) byref -> esi single-def "Inlining Arg"
;* V58 tmp52 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V59 tmp53 [V59,T85] ( 2, 2 ) int -> ebx "Single return block return value" ; V60 tmp54 [V60,T41] ( 6, 13 ) int -> [ebp-0x1C] spill-single-def "V01.[000..004)" @@ -141,7 +141,7 @@ G_M55237_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov edi, dword ptr [ebp+0x08] mov dword ptr [ebp-0x1C], edi cmp byte ptr [esi+0x3B], 0
- jne G_M55237_IG101
+ jne G_M55237_IG102
call <unknown method> mov ebx, eax mov dword ptr [ebp-0x10], ebx @@ -150,7 +150,7 @@ G_M55237_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ;; size=36 bbWeight=1 PerfScore 12.25 G_M55237_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz cmp ebx, dword ptr [esi+0x30]
- je G_M55237_IG102
+ je G_M55237_IG103
lea ecx, bword ptr [esi+0x3C] ; byrRegs +[ecx] mov edx, 1 @@ -167,11 +167,11 @@ G_M55237_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov ecx, dword ptr FS:[0x002C] mov ecx, dword ptr [ecx] cmp dword ptr [ecx+0x80], 3
- jl G_M55237_IG103
+ jl G_M55237_IG104
mov ecx, dword ptr [ecx+0x84] mov ecx, dword ptr [ecx+0x0C] test ecx, ecx
- je G_M55237_IG103
+ je G_M55237_IG104
mov eax, bword ptr [ecx] ; byrRegs +[eax] add eax, 8 @@ -310,7 +310,7 @@ G_M55237_IG16: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=0 ; gcrRegs +[edi] mov edx, dword ptr [edi+0x10] test edx, edx
- jg G_M55237_IG104
+ jg G_M55237_IG105
mov ebx, dword ptr [ebp-0x10] cmp ebx, dword ptr [esi+0x2C] jne G_M55237_IG39 @@ -353,11 +353,11 @@ G_M55237_IG19: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov ecx, dword ptr FS:[0x002C] mov ecx, dword ptr [ecx] cmp dword ptr [ecx+0x80], 3
- jl G_M55237_IG105
+ jl G_M55237_IG106
mov ecx, dword ptr [ecx+0x84] mov ecx, dword ptr [ecx+0x0C] test ecx, ecx
- je G_M55237_IG105
+ je G_M55237_IG106
mov eax, bword ptr [ecx] ; byrRegs +[eax] add eax, 8 @@ -590,7 +590,7 @@ G_M55237_IG39: ; bbWeight=0.50, gcVars=00000000000000000000001000000000 { ;; size=12 bbWeight=0.50 PerfScore 1.12 G_M55237_IG40: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz cmp dword ptr [esi+0x34], 0xD1FFAB1E
- jb G_M55237_IG98
+ jb G_M55237_IG94
mov ecx, dword ptr [ebp-0x1C] cmp ecx, -1 je SHORT G_M55237_IG42 @@ -605,16 +605,16 @@ G_M55237_IG42: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 G_M55237_IG43: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref call <unknown method> sub eax, dword ptr [ebp+0x0C]
- js G_M55237_IG94
+ js G_M55237_IG95
mov edx, dword ptr [ebp-0x1C] cmp eax, edx
- jge G_M55237_IG94
+ jge G_M55237_IG95
mov ecx, edx sub ecx, eax ;; size=29 bbWeight=2 PerfScore 13.50 G_M55237_IG44: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref test ecx, ecx
- je G_M55237_IG94
+ je G_M55237_IG95
;; size=8 bbWeight=2 PerfScore 2.50 G_M55237_IG45: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz cmp dword ptr [ebp-0x18], 20 @@ -1022,7 +1022,7 @@ G_M55237_IG82: ; bbWeight=4, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs= mov ebx, eax mov dword ptr [ebp-0x14], ebx test ebx, ebx
- je G_M55237_IG96
+ je G_M55237_IG97
lea ecx, bword ptr [edi+0x04] ; byrRegs +[ecx] mov eax, dword ptr [ecx] @@ -1157,14 +1157,20 @@ G_M55237_IG93: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000 ; gcrRegs +[edi] jmp G_M55237_IG40 ;; size=7 bbWeight=4 PerfScore 9.00
-G_M55237_IG94: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[ebx edi]
+G_M55237_IG94: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[ebx]
; GC ptr vars -{V67}
+ inc dword ptr [esi+0x34] + inc dword ptr [edi+0x10] + jmp SHORT G_M55237_IG99 + ;; size=8 bbWeight=0.50 PerfScore 4.00 +G_M55237_IG95: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[edi]
add esi, 60 ; gcrRegs -[esi] ; byrRegs +[esi] cmp dword ptr [esi], 0
- jne SHORT G_M55237_IG95
+ jne SHORT G_M55237_IG96
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -1172,15 +1178,15 @@ G_M55237_IG94: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 { call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=24 bbWeight=0.50 PerfScore 3.88
-G_M55237_IG95: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+G_M55237_IG96: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
xor eax, eax mov dword ptr [esi], eax ;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M55237_IG96: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M55237_IG97: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; byrRegs -[esi] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M55237_IG97: ; bbWeight=0.50, epilog, nogc, extend
+G_M55237_IG98: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -1188,29 +1194,27 @@ G_M55237_IG97: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 8 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M55237_IG98: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi edi] - inc dword ptr [esi+0x34] - inc dword ptr [edi+0x10]
+G_M55237_IG99: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[esi]
add esi, 60 ; gcrRegs -[esi] ; byrRegs +[esi] cmp dword ptr [esi], 0
- jne SHORT G_M55237_IG99
+ jne SHORT G_M55237_IG100
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>]
- ; gcrRegs -[ecx edx edi] - ;; size=30 bbWeight=0.50 PerfScore 6.88 -G_M55237_IG99: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+ ; gcrRegs -[ecx edx] + ;; size=24 bbWeight=0.50 PerfScore 3.88 +G_M55237_IG100: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
xor eax, eax mov dword ptr [esi], eax mov ebx, dword ptr [ebp-0x14] movzx eax, bl ;; size=10 bbWeight=0.50 PerfScore 1.25
-G_M55237_IG100: ; bbWeight=0.50, epilog, nogc, extend
+G_M55237_IG101: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -1218,7 +1222,7 @@ G_M55237_IG100: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 8 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M55237_IG101: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M55237_IG102: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi] ; byrRegs -[esi] mov ecx, esi @@ -1227,7 +1231,7 @@ G_M55237_IG101: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, ; gcrRegs -[ecx esi] int3 ;; size=9 bbWeight=0 PerfScore 0.00
-G_M55237_IG102: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M55237_IG103: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; System.Threading.LockRecursionException call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] @@ -1250,14 +1254,14 @@ G_M55237_IG102: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 { call CORINFO_HELP_THROW ; gcrRegs -[ecx esi] ;; size=43 bbWeight=0 PerfScore 0.00
-G_M55237_IG103: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M55237_IG104: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi] mov ecx, 3 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED ; byrRegs +[eax] jmp G_M55237_IG05 ;; size=15 bbWeight=0 PerfScore 0.00
-G_M55237_IG104: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M55237_IG105: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; byrRegs -[eax] lea ecx, bword ptr [esi+0x3C] ; byrRegs +[ecx] @@ -1286,7 +1290,7 @@ G_M55237_IG104: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=0000000 call CORINFO_HELP_THROW ; gcrRegs -[ecx esi] ;; size=52 bbWeight=0 PerfScore 0.00
-G_M55237_IG105: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M55237_IG106: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi] mov ecx, 3 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED @@ -1294,6 +1298,6 @@ G_M55237_IG105: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=0000000 jmp G_M55237_IG20 ;; size=15 bbWeight=0 PerfScore 0.00
-Total bytes of code 1870, prolog size 11, PerfScore 4653.88, instruction count 619, allocated bytes for code 1870 (MethodHash=22c1283a) for method System.Threading.ReaderWriterLockSlim:TryEnterReadLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier0-FullOpts)
+Total bytes of code 1872, prolog size 11, PerfScore 4654.88, instruction count 620, allocated bytes for code 1872 (MethodHash=22c1283a) for method System.Threading.ReaderWriterLockSlim:TryEnterReadLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier0-FullOpts)
; ============================================================

+7 (+0.25%) : 8440.dasm - System.Net.Security.SslStream:SelectClientCertificate():System.Security.Cryptography.X509Certificates.X509Certificate2:this (Tier0-FullOpts)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 100 single block inlinees; 37 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 51,111 ) ref -> [ebp-0x28] this class-hnd EH-live single-def <System.Net.Security.SslStream>
+; V00 this [V00,T09] ( 51,111 ) ref -> [ebp-0x28] this class-hnd EH-live single-def <System.Net.Security.SslStream>
; V01 loc0 [V01,T35] ( 9, 30 ) ref -> esi class-hnd <System.Security.Cryptography.X509Certificates.X509Certificate> ; V02 loc1 [V02,T41] ( 5, 19 ) ref -> [ebp-0x2C] do-not-enreg[Z] class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Certificate2> ; V03 loc2 [V03,T22] ( 13, 43 ) ref -> [ebp-0x30] do-not-enreg[M] ld-addr-op class-hnd EH-live <<unknown class>> @@ -21,10 +21,10 @@ ; V10 loc9 [V10,T12] ( 9, 92 ) ref -> [ebp-0x40] do-not-enreg[Z] class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Chain> ; V11 loc10 [V11,T14] ( 3, 68 ) ubyte -> ebx ; V12 loc11 [V12,T23] ( 3, 40 ) int -> esi
-; V13 loc12 [V13,T03] ( 5,132 ) int -> edi
+; V13 loc12 [V13,T04] ( 5,132 ) int -> edi
;* V14 loc13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ; V15 loc14 [V15,T24] ( 3, 40 ) int -> ebx
-; V16 loc15 [V16,T04] ( 5,132 ) int -> esi
+; V16 loc15 [V16,T05] ( 5,132 ) int -> esi
; V17 loc16 [V17,T16] ( 7, 49 ) int -> edi ; V18 tmp0 [V18,T67] ( 3, 6 ) ref -> eax class-hnd exact single-def "dup spill" <System.Object[]> ; V19 tmp1 [V19,T17] ( 3, 48 ) ref -> eax class-hnd "dup spill" <System.Security.Cryptography.X509Certificates.X509Certificate2> @@ -32,7 +32,7 @@ ;* V21 tmp3 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>> ; V22 tmp4 [V22,T36] ( 3, 24 ) ref -> ebx class-hnd exact "impAppendStmt" <System.Net.NetEventSource> ; V23 tmp5 [V23,T15] ( 8, 64 ) ref -> esi class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509Chain>
-; V24 tmp6 [V24,T09] ( 3, 96 ) ref -> eax class-hnd exact "dup spill" <System.Object[]>
+; V24 tmp6 [V24,T10] ( 3, 96 ) ref -> eax class-hnd exact "dup spill" <System.Object[]>
; V25 tmp7 [V25,T37] ( 3, 24 ) ref -> eax class-hnd exact "dup spill" <System.Object[]> ; V26 tmp8 [V26,T38] ( 3, 24 ) ref -> esi class-hnd exact "dup spill" <System.Object[]> ;* V27 tmp9 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.Security.LocalCertificateSelectionCallback> @@ -143,10 +143,10 @@ ;* V132 tmp114 [V132 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElementCollection> ;* V133 tmp115 [V133 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509ChainElement> ;* V134 tmp116 [V134 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
-; V135 tmp117 [V135,T00] ( 6,320 ) ref -> ebx class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2> -; V136 tmp118 [V136,T05] ( 2,128 ) ref -> eax class-hnd exact "dup spill" <System.String> -; V137 tmp119 [V137,T02] ( 6,132 ) ref -> [ebp-0x48] -; V138 tmp120 [V138,T10] ( 3, 96 ) ref -> eax class-hnd exact "dup spill" <System.String>
+; V135 tmp117 [V135,T00] ( 6,384 ) ref -> ebx class-hnd "Inlining Arg" <System.Security.Cryptography.X509Certificates.X509Certificate2> +; V136 tmp118 [V136,T06] ( 2,128 ) ref -> eax class-hnd exact "dup spill" <System.String> +; V137 tmp119 [V137,T03] ( 6,148 ) ref -> [ebp-0x48] +; V138 tmp120 [V138,T01] ( 3,192 ) ref -> eax class-hnd exact "dup spill" <System.String>
;* V139 tmp121 [V139 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String> ;* V140 tmp122 [V140 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource> ;* V141 tmp123 [V141 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.NetEventSource> @@ -234,9 +234,9 @@ ; V223 tmp205 [V223,T85] ( 3, 6 ) ref -> eax single-def "argument with side effect" ; V224 tmp206 [V224,T86] ( 3, 6 ) ref -> eax single-def "argument with side effect" ; V225 tmp207 [V225,T20] ( 3, 48 ) ref -> eax "argument with side effect"
-; V226 tmp208 [V226,T06] ( 2,128 ) ref -> ecx "argument with side effect" -; V227 tmp209 [V227,T07] ( 2,128 ) ref -> ecx "argument with side effect" -; V228 tmp210 [V228,T01] ( 3,192 ) ref -> ecx "argument with side effect"
+; V226 tmp208 [V226,T07] ( 2,128 ) ref -> ecx "argument with side effect" +; V227 tmp209 [V227,T08] ( 2,128 ) ref -> ecx "argument with side effect" +; V228 tmp210 [V228,T02] ( 3,192 ) ref -> ecx "argument with side effect"
; V229 tmp211 [V229,T101] ( 2, 4 ) ref -> esi single-def "argument with side effect" ; V230 tmp212 [V230,T87] ( 3, 6 ) ref -> eax single-def "argument with side effect" ; V231 tmp213 [V231,T88] ( 3, 6 ) ref -> eax single-def "argument with side effect" @@ -268,14 +268,14 @@ G_M34773_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov gword ptr [ebp-0x28], ecx ; GC ptr vars +{V00} ;; size=20 bbWeight=1 PerfScore 7.75
-G_M34773_IG02: ; bbWeight=1, gcVars=0000000000000000000000000000000000000100 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
+G_M34773_IG02: ; bbWeight=1, gcVars=0000000000000000000000000000000000000200 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ecx] xor eax, eax ; gcrRegs +[eax] mov gword ptr [ebp-0x2C], eax ; GC ptr vars +{V02} ;; size=5 bbWeight=1 PerfScore 1.25
-G_M34773_IG03: ; bbWeight=1, gcVars=0000000000000000000000000000020000000100 {V00 V02}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34773_IG03: ; bbWeight=1, gcVars=0000000000000000000000000000020000000200 {V00 V02}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] mov gword ptr [ebp-0x30], eax ; GC ptr vars +{V03} @@ -386,7 +386,7 @@ G_M34773_IG08: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=8 bbWeight=1 PerfScore 3.50
-G_M34773_IG09: ; bbWeight=1, gcVars=0000000000000000000000000000020000400100 {V00 V02 V03}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34773_IG09: ; bbWeight=1, gcVars=0000000000000000000000000000020000400200 {V00 V02 V03}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[esi] ; GC ptr vars +{V02 V03 V22 V41} cmp gword ptr [esi+0x18], 0 @@ -423,7 +423,7 @@ G_M34773_IG10: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 mov gword ptr [ebp-0x38], eax ; GC ptr vars +{V05} ;; size=5 bbWeight=1 PerfScore 1.25
-G_M34773_IG11: ; bbWeight=1, gcVars=0000000000000000000000040000020000400100 {V00 V02 V03 V05}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34773_IG11: ; bbWeight=1, gcVars=0000000000000000000000040000020000400200 {V00 V02 V03 V05}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] ; GC ptr vars -{V22 V41} call [System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this] @@ -437,7 +437,7 @@ G_M34773_IG11: ; bbWeight=1, gcVars=0000000000000000000000040000020000400 test byte ptr [D1FFAB1EH], 1 ; global ptr jne SHORT G_M34773_IG13 ;; size=24 bbWeight=1 PerfScore 11.00
-G_M34773_IG12: ; bbWeight=0, gcVars=0000000000000000000000040000020000402100 {V00 V02 V03 V04 V05}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M34773_IG12: ; bbWeight=0, gcVars=0000000000000000000000040000020000402200 {V00 V02 V03 V04 V05}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax ecx] mov ecx, 0xD1FFAB1E mov edx, 56 @@ -550,13 +550,13 @@ G_M34773_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} pop eax jmp eax ;; size=3 bbWeight=0 PerfScore 0.00
-G_M34773_IG18: ; bbWeight=1, gcVars=0000000000000000000000000000020000400100 {V00 V02 V03}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34773_IG18: ; bbWeight=1, gcVars=0000000000000000000000000000020000400200 {V00 V02 V03}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi]
- ; GC ptr vars +{V00 V02 V03 V08 V22 V41}
+ ; GC ptr vars +{V00 V02 V03 V09 V22 V41}
test esi, esi je G_M34773_IG21 mov ecx, 0xD1FFAB1E ; <unknown class>
- ; GC ptr vars -{V03 V08 V22 V41}
+ ; GC ptr vars -{V03 V09 V22 V41}
call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] mov edi, eax @@ -604,7 +604,7 @@ G_M34773_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov ecx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ecx] cmp byte ptr [ecx+0x59], 0
- je G_M34773_IG68
+ je G_M34773_IG69
mov ebx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ebx] cmp byte ptr [ebx], bl @@ -619,7 +619,7 @@ G_M34773_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov edx, 19 call [System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this] ; gcrRegs -[ecx ebx]
- jmp G_M34773_IG68
+ jmp G_M34773_IG69
;; size=54 bbWeight=1 PerfScore 25.50 G_M34773_IG21: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x28] @@ -643,7 +643,7 @@ G_M34773_IG22: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax] cmp byte ptr [eax+0x59], 0
- je G_M34773_IG68
+ je G_M34773_IG69
mov ebx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ebx] cmp byte ptr [ebx], bl @@ -660,13 +660,13 @@ G_M34773_IG22: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov edx, 20 call [System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this] ; gcrRegs -[ecx ebx]
- jmp G_M34773_IG68
+ jmp G_M34773_IG69
;; size=53 bbWeight=1 PerfScore 25.50 G_M34773_IG23: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax] cmp byte ptr [eax+0x59], 0
- je G_M34773_IG68
+ je G_M34773_IG69
mov ebx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ebx] cmp byte ptr [ebx], bl @@ -683,7 +683,7 @@ G_M34773_IG23: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov edx, 21 call [System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this] ; gcrRegs -[ecx ebx]
- jmp G_M34773_IG68
+ jmp G_M34773_IG69
;; size=53 bbWeight=1 PerfScore 25.50 G_M34773_IG24: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ecx esi] @@ -718,7 +718,7 @@ G_M34773_IG24: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000 test esi, esi je SHORT G_M34773_IG29 ;; size=69 bbWeight=1 PerfScore 30.75
-G_M34773_IG25: ; bbWeight=0.50, gcVars=0000000000000000000000000000020000000100 {V00 V02}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34773_IG25: ; bbWeight=0.50, gcVars=0000000000000000000000000000020000000200 {V00 V02}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03} mov ecx, 0xD1FFAB1E ; System.Security.Cryptography.X509Certificates.X509Certificate cmp dword ptr [esi], ecx @@ -779,7 +779,7 @@ G_M34773_IG29: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov ecx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ecx] cmp byte ptr [ecx+0x59], 0
- je G_M34773_IG68
+ je G_M34773_IG69
push gword ptr [ebp-0x28] mov ecx, gword ptr [D1FFAB1EH] ; static handle mov edx, esi @@ -787,7 +787,7 @@ G_M34773_IG29: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 cmp dword ptr [ecx], ecx call [System.Net.NetEventSource:AttemptingRestartUsingCert(System.Security.Cryptography.X509Certificates.X509Certificate,System.Net.Security.SslStream):this] ; gcrRegs -[ecx edx esi]
- jmp G_M34773_IG68
+ jmp G_M34773_IG69
;; size=40 bbWeight=1 PerfScore 17.25 G_M34773_IG30: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x28] @@ -796,7 +796,7 @@ G_M34773_IG30: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[eax] mov eax, gword ptr [eax+0x08] test eax, eax
- je G_M34773_IG68
+ je G_M34773_IG69
mov eax, gword ptr [eax+0x04] mov ecx, eax mov eax, dword ptr [eax] @@ -805,7 +805,7 @@ G_M34773_IG30: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call [eax+0x18]<unknown method> ; gcrRegs -[ecx] test eax, eax
- jle G_M34773_IG68
+ jle G_M34773_IG69
mov ecx, gword ptr [ebp-0x28] ; gcrRegs +[ecx] call [System.Net.Security.SslStream:GetRequestCertificateAuthorities():System.String[]:this] @@ -823,7 +823,7 @@ G_M34773_IG30: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} cmp dword ptr [ecx+0x04], 0 jne SHORT G_M34773_IG32 ;; size=77 bbWeight=1 PerfScore 35.75
-G_M34773_IG31: ; bbWeight=1, gcVars=0000000000000000000000000000020000402100 {V00 V02 V03 V04}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34773_IG31: ; bbWeight=1, gcVars=0000000000000000000000000000020000402200 {V00 V02 V03 V04}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax ecx] cmp byte ptr [ebx], bl mov ecx, gword ptr [ebp-0x28] @@ -862,25 +862,25 @@ G_M34773_IG32: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 G_M34773_IG33: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref xor ecx, ecx mov dword ptr [ebp-0x24], ecx
- jmp G_M34773_IG67
+ jmp G_M34773_IG68
;; size=10 bbWeight=1 PerfScore 3.25 G_M34773_IG34: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref cmp gword ptr [ebp-0x34], 0
- je G_M34773_IG60
+ je G_M34773_IG61
mov ecx, gword ptr [ebp-0x34] ; gcrRegs +[ecx] cmp dword ptr [ecx+0x04], 0
- je G_M34773_IG60
+ je G_M34773_IG61
xor ecx, ecx mov gword ptr [ebp-0x3C], ecx ; GC ptr vars +{V09} ;; size=28 bbWeight=4 PerfScore 37.00
-G_M34773_IG35: ; bbWeight=4, gcVars=0000000000000000000000000000020002402100 {V00 V02 V03 V04 V09}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M34773_IG35: ; bbWeight=4, gcVars=0000000000000000000000000000020002402200 {V00 V02 V03 V04 V09}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx] mov gword ptr [ebp-0x40], ecx ...

+49 (+10.68%) : 1507.dasm - System.Collections.Generic.ArraySortHelper1[int]:IntroSort(System.Span1[int],int,System.Comparison`1[int]) (Tier0-FullOpts)

@@ -11,7 +11,7 @@ ; V00 arg0 [V00,T13] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[int]> ; V01 arg1 [V01,T03] ( 7, 19 ) int -> esi ; V02 arg2 [V02,T05] ( 15, 16 ) ref -> edi class-hnd single-def <System.Comparison`1[int]>
-; V03 loc0 [V03,T01] ( 14, 28.50) int -> [ebp-0x10]
+; V03 loc0 [V03,T00] ( 16, 33 ) int -> [ebp-0x10]
; V04 loc1 [V04,T08] ( 3, 12 ) int -> [ebp-0x14] spill-single-def ; V05 loc2 [V05,T04] ( 5, 20 ) int -> ecx ;* V06 tmp0 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[int]> @@ -43,7 +43,7 @@ ;* V32 tmp26 [V32 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V33 tmp27 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp28 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V35 tmp29 [V35,T00] ( 4, 32 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
+; V35 tmp29 [V35,T01] ( 4, 32 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
;* V36 tmp30 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ; V37 tmp31 [V37,T07] ( 2, 16 ) byref -> [ebp-0x20] spill-single-def "Inlining Arg" ;* V38 tmp32 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -136,17 +136,30 @@ G_M15629_IG08: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000008 mov eax, dword ptr [ebp-0x1C] mov edx, eax cmp eax, 1
- jle G_M15629_IG21
+ jle G_M15629_IG24
;; size=14 bbWeight=1 PerfScore 2.50 G_M15629_IG09: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz cmp edx, 16
- jle G_M15629_IG14
+ jle G_M15629_IG16
test esi, esi
- je G_M15629_IG20
+ je G_M15629_IG22
dec esi cmp edx, eax
- ja G_M15629_IG23
+ ja G_M15629_IG26
mov dword ptr [ebp-0x10], edx
+ test edx, edx + jge SHORT G_M15629_IG11 + ;; size=33 bbWeight=4 PerfScore 25.00 +G_M15629_IG10: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=16 bbWeight=2 PerfScore 7.00 +G_M15629_IG11: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz + mov edx, dword ptr [ebp-0x10]
mov ecx, edx push ecx push ebx @@ -161,18 +174,18 @@ G_M15629_IG09: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 mov dword ptr [ebp-0x18], edx mov eax, dword ptr [ebp-0x1C] cmp ecx, eax
- ja G_M15629_IG23
+ ja G_M15629_IG26
sub eax, ecx cmp eax, edx
- jb G_M15629_IG23
+ jb G_M15629_IG26
lea eax, bword ptr [ebx+4*ecx] ; byrRegs +[eax] mov bword ptr [ebp-0x20], eax ; GC ptr vars +{V37} test edx, edx
- jge SHORT G_M15629_IG11 - ;; size=86 bbWeight=4 PerfScore 83.00 -G_M15629_IG10: ; bbWeight=2, gcVars=00000080 {V37}, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, gcvars, byref
+ jge SHORT G_M15629_IG13 + ;; size=60 bbWeight=4 PerfScore 67.00 +G_M15629_IG12: ; bbWeight=2, gcVars=00000080 {V37}, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, gcvars, byref
; byrRegs -[eax] mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] @@ -181,7 +194,7 @@ G_M15629_IG10: ; bbWeight=2, gcVars=00000080 {V37}, gcrefRegs=00000080 {e call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=16 bbWeight=2 PerfScore 7.00
-G_M15629_IG11: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG13: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
mov eax, bword ptr [ebp-0x20] ; byrRegs +[eax] mov edx, dword ptr [ebp-0x18] @@ -198,22 +211,22 @@ G_M15629_IG11: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 mov eax, edx cmp eax, 1 mov edx, eax
- jg SHORT G_M15629_IG13
+ jg SHORT G_M15629_IG15
;; size=30 bbWeight=4 PerfScore 41.00
-G_M15629_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M15629_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[edi] ; byrRegs -[ebx]
- jmp G_M15629_IG21
+ jmp G_M15629_IG24
;; size=5 bbWeight=1 PerfScore 2.00
-G_M15629_IG13: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref
+G_M15629_IG15: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref
; gcrRegs +[edi] ; byrRegs +[ebx] mov eax, dword ptr [ebp-0x1C] jmp G_M15629_IG09 ;; size=8 bbWeight=2 PerfScore 6.00
-G_M15629_IG14: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
cmp edx, 2
- jne SHORT G_M15629_IG15
+ jne SHORT G_M15629_IG17
mov edx, dword ptr [ebx] push dword ptr [ebx+0x04] mov ecx, gword ptr [edi+0x04] @@ -221,17 +234,17 @@ G_M15629_IG14: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [edi+0x0C]<unknown method> ; gcrRegs -[ecx edi] test eax, eax
- jle G_M15629_IG21
+ jle G_M15629_IG24
mov edx, dword ptr [ebx] mov ecx, dword ptr [ebx+0x04] mov dword ptr [ebx], ecx mov dword ptr [ebx+0x04], edx
- jmp G_M15629_IG21
+ jmp G_M15629_IG24
;; size=39 bbWeight=0.50 PerfScore 9.75
-G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[edi] cmp edx, 3
- jne SHORT G_M15629_IG18
+ jne SHORT G_M15629_IG20
mov edx, dword ptr [ebx] push dword ptr [ebx+0x04] mov ecx, gword ptr [edi+0x04] @@ -239,29 +252,29 @@ G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [edi+0x0C]<unknown method> ; gcrRegs -[ecx] test eax, eax
- jle SHORT G_M15629_IG16
+ jle SHORT G_M15629_IG18
mov edx, dword ptr [ebx] mov ecx, dword ptr [ebx+0x04] mov dword ptr [ebx], ecx mov dword ptr [ebx+0x04], edx ;; size=30 bbWeight=0.50 PerfScore 8.75
-G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
mov edx, dword ptr [ebx] cmp dword ptr [ebp-0x1C], 2
- jbe G_M15629_IG22
+ jbe G_M15629_IG25
push dword ptr [ebx+0x08] mov ecx, gword ptr [edi+0x04] ; gcrRegs +[ecx] call [edi+0x0C]<unknown method> ; gcrRegs -[ecx] test eax, eax
- jle SHORT G_M15629_IG17
+ jle SHORT G_M15629_IG19
mov edx, dword ptr [ebx] mov ecx, dword ptr [ebx+0x08] mov dword ptr [ebx], ecx mov dword ptr [ebx+0x08], edx ;; size=35 bbWeight=0.50 PerfScore 9.62
-G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
mov edx, dword ptr [ebx+0x04] push dword ptr [ebx+0x08] mov ecx, gword ptr [edi+0x04] @@ -269,20 +282,20 @@ G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [edi+0x0C]<unknown method> ; gcrRegs -[ecx edi] test eax, eax
- jle SHORT G_M15629_IG21
+ jle SHORT G_M15629_IG24
mov ecx, dword ptr [ebx+0x04] mov edx, dword ptr [ebx+0x08] mov dword ptr [ebx+0x04], edx mov dword ptr [ebx+0x08], ecx
- jmp SHORT G_M15629_IG21
+ jmp SHORT G_M15629_IG24
;; size=30 bbWeight=0.50 PerfScore 9.12
-G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG20: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[edi] cmp edx, eax
- ja SHORT G_M15629_IG23
+ ja SHORT G_M15629_IG26
mov dword ptr [ebp-0x10], edx test edx, edx
- jge SHORT G_M15629_IG19
+ jge SHORT G_M15629_IG21
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -290,7 +303,7 @@ G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=27 bbWeight=0.50 PerfScore 3.50
-G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG21: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
mov edx, dword ptr [ebp-0x10] mov ecx, edx push ecx @@ -300,15 +313,27 @@ G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [System.Collections.Generic.ArraySortHelper`1[int]:InsertionSort(System.Span`1[int],System.Comparison`1[int])] ; gcrRegs -[ecx edi] ; byrRegs -[ebx]
- jmp SHORT G_M15629_IG21
+ jmp SHORT G_M15629_IG24
;; size=17 bbWeight=0.50 PerfScore 4.25
-G_M15629_IG20: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG22: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[edi] ; byrRegs +[ebx] cmp edx, eax
- ja SHORT G_M15629_IG23
+ ja SHORT G_M15629_IG26 + mov dword ptr [ebp-0x10], edx + test edx, edx + jge SHORT G_M15629_IG23 + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=27 bbWeight=0.50 PerfScore 3.50 +G_M15629_IG23: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref
mov ecx, ebx ; byrRegs +[ecx]
+ mov edx, dword ptr [ebp-0x10]
mov eax, edx push eax push ecx @@ -318,8 +343,8 @@ G_M15629_IG20: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [System.Collections.Generic.ArraySortHelper`1[int]:HeapSort(System.Span`1[int],System.Comparison`1[int])] ; gcrRegs -[ecx edi] ; byrRegs -[ebx]
- ;; size=18 bbWeight=0.50 PerfScore 3.50 -G_M15629_IG21: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=17 bbWeight=0.50 PerfScore 3.38 +G_M15629_IG24: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C] pop ebx pop esi @@ -327,14 +352,14 @@ G_M15629_IG21: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ...

coreclr_tests.run.windows.x86.checked.mch

-26 (-4.97%) : 309363.dasm - System.Runtime.Serialization.SerializationInfo:ThrowIfDeserializationInProgress(System.String,byref) (Tier1)

@@ -30,7 +30,7 @@ ; V18 tmp15 [V18,T15] ( 2, 2 ) ubyte -> edx "Inline return value spill temp" ;* V19 tmp16 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Runtime.Serialization.DeserializationTracker> ;* V20 tmp17 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V21 tmp18 [V21,T13] ( 2, 2 ) ubyte -> edx "Inline return value spill temp"
+; V21 tmp18 [V21,T13] ( 2, 2 ) ubyte -> eax "Inline return value spill temp"
; V22 tmp19 [V22,T03] ( 3, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <System.Threading.AsyncLocal`1[ubyte]> ;* V23 tmp20 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Object> ;* V24 tmp21 [V24 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" @@ -82,25 +82,30 @@ G_M22412_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=18 bbWeight=1 PerfScore 6.25 G_M22412_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz test esi, esi
- je SHORT G_M22412_IG05
+ je SHORT G_M22412_IG06
xor ebx, ebx cmp dword ptr [esi+0x04], 0
- jle SHORT G_M22412_IG05
+ jle SHORT G_M22412_IG06
;; size=12 bbWeight=1 PerfScore 5.50 G_M22412_IG03: ; bbWeight=0.89, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz movzx ecx, word ptr [esi+2*ebx+0x08] cmp ecx, 256
- jb G_M22412_IG13
+ jb SHORT G_M22412_IG04
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte] test eax, eax
- je SHORT G_M22412_IG06 - ;; size=27 bbWeight=0.89 PerfScore 6.64 -G_M22412_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
+ jne SHORT G_M22412_IG05 + jmp SHORT G_M22412_IG07 + ;; size=25 bbWeight=0.89 PerfScore 8.41 +G_M22412_IG04: ; bbWeight=0.89, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz + test byte ptr [ecx+D1FFAB1EH], 128 + je SHORT G_M22412_IG07 + ;; size=9 bbWeight=0.89 PerfScore 3.54 +G_M22412_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
inc ebx cmp dword ptr [esi+0x04], ebx jg SHORT G_M22412_IG03 ;; size=6 bbWeight=1 PerfScore 4.25
-G_M22412_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
+G_M22412_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -108,80 +113,52 @@ G_M22412_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=16 bbWeight=1 PerfScore 3.50
-G_M22412_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
+G_M22412_IG07: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
cmp dword ptr [edi], 0 je G_M22412_IG21 ;; size=9 bbWeight=1 PerfScore 4.00
-G_M22412_IG07: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
+G_M22412_IG08: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
mov eax, dword ptr [edi] cmp eax, 1
- je G_M22412_IG23
+ je G_M22412_IG18
cmp eax, -1
- jne G_M22412_IG26
+ jne G_M22412_IG20
mov ebx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ebx] cmp byte ptr [ebx], bl mov eax, dword ptr FS:[0x002C] mov eax, dword ptr [eax] cmp dword ptr [eax+0x80], 3
- jl G_M22412_IG24
+ jl G_M22412_IG23
mov eax, dword ptr [eax+0x84] mov eax, dword ptr [eax+0x0C] test eax, eax
- je G_M22412_IG24
+ je G_M22412_IG23
mov eax, bword ptr [eax] ; byrRegs +[eax] add eax, 8 ;; size=71 bbWeight=1 PerfScore 24.00
-G_M22412_IG08: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000001 {eax}, byref, isz
+G_M22412_IG09: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000001 {eax}, byref, isz
; byrRegs -[edi] mov eax, gword ptr [eax+0x0C] ; gcrRegs +[eax] ; byrRegs -[eax] test eax, eax
- jne SHORT G_M22412_IG09
+ jne SHORT G_M22412_IG10
call [<unknown method>] ;; size=13 bbWeight=1 PerfScore 6.25
-G_M22412_IG09: ; bbWeight=1, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M22412_IG10: ; bbWeight=1, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz
mov edi, gword ptr [eax+0x04] ; gcrRegs +[edi] test edi, edi
- jne SHORT G_M22412_IG15
+ jne SHORT G_M22412_IG11
xor ebx, ebx
- ;; size=9 bbWeight=1 PerfScore 3.50 -G_M22412_IG10: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax edi] - xor eax, eax - ; gcrRegs +[eax] - mov gword ptr [ebp-0x14], eax - test ebx, ebx - jne SHORT G_M22412_IG18 - ;; size=9 bbWeight=1 PerfScore 2.50 -G_M22412_IG11: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax ebx] - call [System.Runtime.Serialization.SerializationInfo:GetThreadDeserializationTracker():System.Runtime.Serialization.DeserializationTracker] - ; gcrRegs +[eax] - movzx edx, byte ptr [eax+0x04] - test edx, edx - je G_M22412_IG23 - ;; size=18 bbWeight=1 PerfScore 6.25 -G_M22412_IG12: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M22412_IG14 + ;; size=11 bbWeight=1 PerfScore 5.50 +G_M22412_IG11: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
- jmp G_M22412_IG25 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M22412_IG13: ; bbWeight=0.89, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref - ; byrRegs +[edi] - test byte ptr [ecx+D1FFAB1EH], 128 - jne G_M22412_IG04 - ;; size=13 bbWeight=0.89 PerfScore 3.54 -G_M22412_IG14: ; bbWeight=0.89, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref - jmp G_M22412_IG06 - ;; size=5 bbWeight=0.89 PerfScore 1.77 -G_M22412_IG15: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ebx edi] - ; byrRegs -[edi]
cmp byte ptr [edi+0x0D], 0
- je SHORT G_M22412_IG16
+ je SHORT G_M22412_IG12
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -189,9 +166,9 @@ G_M22412_IG15: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=22 bbWeight=1 PerfScore 7.50
-G_M22412_IG16: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M22412_IG12: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp gword ptr [edi+0x04], 0
- jne SHORT G_M22412_IG17
+ jne SHORT G_M22412_IG13
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -199,7 +176,7 @@ G_M22412_IG16: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=22 bbWeight=1 PerfScore 7.50
-G_M22412_IG17: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M22412_IG13: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [edi+0x04] ; gcrRegs +[ecx] lea edx, [ebp-0x14] @@ -210,52 +187,39 @@ G_M22412_IG17: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= ; gcrRegs -[ecx edx ebx edi] mov ebx, gword ptr [ebp-0x14] ; gcrRegs +[ebx]
- jmp SHORT G_M22412_IG10 - ;; size=20 bbWeight=1 PerfScore 9.75 -G_M22412_IG18: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=18 bbWeight=1 PerfScore 7.75 +G_M22412_IG14: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + xor edx, edx + ; gcrRegs +[edx] + mov gword ptr [ebp-0x14], edx + test ebx, ebx + je SHORT G_M22412_IG17
cmp dword ptr [ebx], 0xD1FFAB1E
- je SHORT G_M22412_IG20 - ;; size=8 bbWeight=1 PerfScore 4.00 -G_M22412_IG19: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M22412_IG16 + ;; size=17 bbWeight=1 PerfScore 6.50 +G_M22412_IG15: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[edx]
mov edx, ebx ; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; System.Boolean call [CORINFO_HELP_UNBOX] ; gcrRegs -[edx] ;; size=13 bbWeight=0.50 PerfScore 1.75
-G_M22412_IG20: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - movzx edx, byte ptr [ebx+0x04] - test edx, edx - jne SHORT G_M22412_IG25 - jmp G_M22412_IG11 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M22412_IG21: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
+G_M22412_IG16: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + movzx eax, byte ptr [ebx+0x04] + test eax, eax + jne SHORT G_M22412_IG19 + ;; size=8 bbWeight=1 PerfScore 3.25 +G_M22412_IG17: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx]
- ; byrRegs +[edi] - mov edx, esi - ; gcrRegs +[edx] - mov ecx, 0xD1FFAB1E - ; gcrRegs +[ecx] - call [<unknown method>] - ; gcrRegs -[ecx edx] +[eax] - mov ecx, eax - ; gcrRegs +[ecx] - lea edx, [ebp-0x10] - call [<unknown method>] - ; gcrRegs -[eax ecx] - movzx ecx, byte ptr [ebp-0x10] - test eax, ecx - je SHORT G_M22412_IG22 - mov dword ptr [edi], 1 - jmp G_M22412_IG07 - ;; size=43 bbWeight=0 PerfScore 0.00 -G_M22412_IG22: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref - mov dword ptr [edi], -1 - jmp G_M22412_IG07 - ;; size=11 bbWeight=0 PerfScore 0.00 -G_M22412_IG23: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc - ; gcrRegs -[esi] - ; byrRegs -[edi]
+ call [System.Runtime.Serialization.SerializationInfo:GetThreadDeserializationTracker():System.Runtime.Serialization.DeserializationTracker] + ; gcrRegs +[eax] + movzx edx, byte ptr [eax+0x04] + test edx, edx + jne SHORT G_M22412_IG19 + ;; size=14 bbWeight=1 PerfScore 6.25 +G_M22412_IG18: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc + ; gcrRegs -[eax esi]
lea esp, [ebp-0x0C] pop ebx pop esi @@ -263,16 +227,8 @@ G_M22412_IG23: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} pop ebp ret ;; size=8 bbWeight=0 PerfScore 0.00
-G_M22412_IG24: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs +[ebx esi] - mov ecx, 3 - call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED - ; byrRegs +[eax]
...

-15 (-3.28%) : 300681.dasm - Program:ManipulateListOfString():ubyte (FullOpts)

@@ -10,7 +10,7 @@ ; ; V00 loc0 [V00,T00] ( 16, 38.50) ref -> esi class-hnd exact single-def <<unknown class>> ; V01 loc1 [V01,T04] ( 5, 17 ) int -> edi ld-addr-op
-; V02 loc2 [V02,T01] ( 12, 37 ) int -> [ebp-0x10]
+; V02 loc2 [V02,T01] ( 12, 37 ) int -> edi
; V03 tmp0 [V03,T20] ( 3, 6 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V04 tmp1 [V04,T07] ( 3, 12 ) ref -> eax class-hnd exact "impAppendStmt" <System.String> ; V05 tmp2 [V05,T12] ( 3, 9.82) ref -> edx class-hnd "Inline stloc first use temp" <<unknown class>> @@ -18,9 +18,9 @@ ; V07 tmp4 [V07,T08] ( 3, 12 ) ref -> eax class-hnd exact "Inlining Arg" <System.String> ; V08 tmp5 [V08,T23] ( 3, 7.90) ref -> ecx class-hnd "Inline return value spill temp" <System.String> ; V09 tmp6 [V09,T03] ( 4, 23.47) ref -> ebx class-hnd "Inlining Arg" <System.__Canon>
-; V10 tmp7 [V10,T13] ( 5, 9.48) int -> [ebp-0x14] spill-single-def "Inline stloc first use temp"
+; V10 tmp7 [V10,T13] ( 5, 9.48) int -> [ebp-0x10] spill-single-def "Inline stloc first use temp"
; V11 tmp8 [V11,T24] ( 3, 5.69) int -> ecx "Inline stloc first use temp"
-; V12 tmp9 [V12,T06] ( 7, 13.27) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <System.String>
+; V12 tmp9 [V12,T06] ( 7, 13.27) ref -> [ebp-0x18] class-hnd exact spill-single-def "Inline stloc first use temp" <System.String>
;* V13 tmp10 [V13,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V14 tmp11 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V15 tmp12 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -45,9 +45,9 @@ ; V34 tmp31 [V34,T10] ( 3, 12 ) ref -> edx "arr expr" ; V35 cse0 [V35,T22] ( 3, 6 ) int -> ecx "CSE - conservative" ; V36 cse1 [V36,T21] ( 3, 6 ) ref -> edx "CSE - conservative"
-; V37 cse2 [V37,T14] ( 4, 7.47) int -> [ebp-0x18] "CSE - moderate"
+; V37 cse2 [V37,T14] ( 4, 7.47) int -> [ebp-0x14] "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 12
G_M45788_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -55,7 +55,7 @@ G_M45788_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16
+ sub esp, 12
;; size=9 bbWeight=1 PerfScore 4.50 G_M45788_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 0xD1FFAB1E ; <unknown class> @@ -113,137 +113,125 @@ G_M45788_IG07: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs -[ecx] xor edi, edi cmp dword ptr [esi+0x08], 0
- jle G_M45788_IG19
+ jle G_M45788_IG17
;; size=27 bbWeight=1 PerfScore 10.75
-G_M45788_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M45788_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
cmp edi, dword ptr [esi+0x08]
- jae G_M45788_IG26
+ jae G_M45788_IG24
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] cmp edi, dword ptr [ecx+0x04]
- jae G_M45788_IG24
+ jae G_M45788_IG22
mov ebx, gword ptr [ecx+4*edi+0x08] ; gcrRegs +[ebx] test ebx, ebx
- je SHORT G_M45788_IG11 - ;; size=29 bbWeight=4 PerfScore 53.00 -G_M45788_IG09: ; bbWeight=1.84, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ je G_M45788_IG19 + ;; size=33 bbWeight=4 PerfScore 53.00 +G_M45788_IG09: ; bbWeight=1.84, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx] mov eax, dword ptr [ebx+0x04] test eax, eax
- je SHORT G_M45788_IG11 - ;; size=7 bbWeight=1.84 PerfScore 5.97
+ je G_M45788_IG19 + ;; size=11 bbWeight=1.84 PerfScore 5.97
G_M45788_IG10: ; bbWeight=1.90, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x18], eax
+ mov dword ptr [ebp-0x14], eax
mov edx, eax
- mov dword ptr [ebp-0x14], edx
+ mov dword ptr [ebp-0x10], edx
lea ecx, [edx+0x01] test ecx, ecx
- jl G_M45788_IG25 - jmp SHORT G_M45788_IG12 - ;; size=21 bbWeight=1.90 PerfScore 11.38 -G_M45788_IG11: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ebx] - mov ecx, 0xD1FFAB1E - ; gcrRegs +[ecx] - jmp G_M45788_IG16 - ;; size=10 bbWeight=2 PerfScore 4.50 -G_M45788_IG12: ; bbWeight=1.90, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] +[ebx]
+ jl G_M45788_IG23
call <unknown method> ; gcrRegs +[eax] mov ecx, eax ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x1C], ecx
+ mov gword ptr [ebp-0x18], ecx
; GC ptr vars +{V12} test ecx, ecx
- jne SHORT G_M45788_IG13
+ jne SHORT G_M45788_IG11
mov ecx, 0xD1FFAB1E mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[eax ecx edx]
- ;; size=30 bbWeight=1.90 PerfScore 13.27 -G_M45788_IG13: ; bbWeight=1.90, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref - mov ecx, gword ptr [ebp-0x1C]
+ ;; size=49 bbWeight=1.90 PerfScore 20.86 +G_M45788_IG11: ; bbWeight=1.90, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx]
- mov edx, dword ptr [ebp-0x18]
+ mov edx, dword ptr [ebp-0x14]
cmp dword ptr [ecx+0x04], edx
- jge G_M45788_IG21
+ jge SHORT G_M45788_IG12
mov ecx, 0xD1FFAB1E mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- mov dword ptr [ebp-0x10], edi - ;; size=34 bbWeight=1.90 PerfScore 19.91 -G_M45788_IG14: ; bbWeight=1.90, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - mov ecx, gword ptr [ebp-0x1C]
+ ;; size=27 bbWeight=1.90 PerfScore 18.01 +G_M45788_IG12: ; bbWeight=1.90, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx] lea edx, bword ptr [ecx+0x08] ; byrRegs +[edx] add ebx, 8 ; gcrRegs -[ebx] ; byrRegs +[ebx]
- mov eax, dword ptr [ebp-0x14] - lea edi, [eax+eax] - push edi
+ mov eax, dword ptr [ebp-0x10] + add eax, eax + push eax
mov ecx, edx ; gcrRegs -[ecx] ; byrRegs +[ecx] mov edx, ebx call [<unknown method>] ; byrRegs -[ecx edx ebx]
- mov edi, gword ptr [ebp-0x1C] - ; gcrRegs +[edi] - mov ecx, dword ptr [edi+0x04] - mov ebx, dword ptr [ebp-0x14] - sub ecx, ebx
+ mov ebx, gword ptr [ebp-0x18] + ; gcrRegs +[ebx] + mov ecx, dword ptr [ebx+0x04] + sub ecx, dword ptr [ebp-0x10]
test ecx, ecx
- jg SHORT G_M45788_IG15
+ jg SHORT G_M45788_IG13
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- ;; size=57 bbWeight=1.90 PerfScore 31.76 -G_M45788_IG15: ; bbWeight=1.90, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref - lea ecx, bword ptr [edi+2*ebx+0x08]
+ ;; size=54 bbWeight=1.90 PerfScore 32.71 +G_M45788_IG13: ; bbWeight=1.90, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref + mov eax, dword ptr [ebp-0x10] + lea ecx, bword ptr [ebx+2*eax+0x08]
; byrRegs +[ecx] mov edx, 0xD1FFAB1E ; byrRegs +[edx] push 2 call [<unknown method>] ; byrRegs -[ecx edx]
- mov ecx, edi
+ mov ecx, ebx
; gcrRegs +[ecx]
- mov edi, dword ptr [ebp-0x10] - ; gcrRegs -[edi]
;; size=22 bbWeight=1.90 PerfScore 12.32
-G_M45788_IG16: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M45788_IG14: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[ebx]
; GC ptr vars -{V12} call [<unknown method>] ; gcrRegs -[ecx] test edi, edi
- jle SHORT G_M45788_IG18
+ jle SHORT G_M45788_IG16
;; size=10 bbWeight=4 PerfScore 17.00
-G_M45788_IG17: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M45788_IG15: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi+0x08] cmp edi, ecx
- jae SHORT G_M45788_IG26
+ jae SHORT G_M45788_IG24
mov edx, gword ptr [esi+0x04] ; gcrRegs +[edx] mov eax, edx ; gcrRegs +[eax] cmp edi, dword ptr [eax+0x04]
- jae SHORT G_M45788_IG24
+ jae SHORT G_M45788_IG22
mov eax, gword ptr [eax+4*edi+0x08] lea ebx, [edi-0x01] cmp ebx, ecx
- jae SHORT G_M45788_IG26 - cmp ebx, dword ptr [edx+0x04]
jae SHORT G_M45788_IG24
+ cmp ebx, dword ptr [edx+0x04] + jae SHORT G_M45788_IG22
mov edx, gword ptr [edx+4*ebx+0x08] cmp byte ptr [eax], al push 0 @@ -252,20 +240,20 @@ G_M45788_IG17: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 call [<unknown method>] ; gcrRegs -[eax ecx edx] test eax, eax
- jle SHORT G_M45788_IG22
+ jle SHORT G_M45788_IG20
;; size=53 bbWeight=2 PerfScore 55.50
-G_M45788_IG18: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M45788_IG16: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
inc edi cmp edi, dword ptr [esi+0x08] jl G_M45788_IG08 ;; size=10 bbWeight=4 PerfScore 17.00
-G_M45788_IG19: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M45788_IG17: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
call [<unknown method>] xor eax, eax cmp dword ptr [esi+0x08], 100 sete al ;; size=15 bbWeight=0.50 PerfScore 3.62
-G_M45788_IG20: ; bbWeight=0.50, epilog, nogc, extend
+G_M45788_IG18: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -273,18 +261,16 @@ G_M45788_IG20: ; bbWeight=0.50, epilog, nogc, extend pop ebp ...

-15 (-3.28%) : 561429.dasm - Program:ManipulateListOfString():ubyte (Tier0-FullOpts)

@@ -10,7 +10,7 @@ ; ; V00 loc0 [V00,T00] ( 16, 38.50) ref -> esi class-hnd exact single-def <<unknown class>> ; V01 loc1 [V01,T04] ( 5, 17 ) int -> edi ld-addr-op
-; V02 loc2 [V02,T01] ( 12, 37 ) int -> [ebp-0x10]
+; V02 loc2 [V02,T01] ( 12, 37 ) int -> edi
; V03 tmp0 [V03,T20] ( 3, 6 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V04 tmp1 [V04,T07] ( 3, 12 ) ref -> eax class-hnd exact "impAppendStmt" <System.String> ; V05 tmp2 [V05,T12] ( 3, 9.82) ref -> edx class-hnd "Inline stloc first use temp" <<unknown class>> @@ -18,9 +18,9 @@ ; V07 tmp4 [V07,T08] ( 3, 12 ) ref -> eax class-hnd exact "Inlining Arg" <System.String> ; V08 tmp5 [V08,T23] ( 3, 7.90) ref -> ecx class-hnd "Inline return value spill temp" <System.String> ; V09 tmp6 [V09,T03] ( 4, 23.47) ref -> ebx class-hnd "Inlining Arg" <System.__Canon>
-; V10 tmp7 [V10,T13] ( 5, 9.48) int -> [ebp-0x14] spill-single-def "Inline stloc first use temp"
+; V10 tmp7 [V10,T13] ( 5, 9.48) int -> [ebp-0x10] spill-single-def "Inline stloc first use temp"
; V11 tmp8 [V11,T24] ( 3, 5.69) int -> ecx "Inline stloc first use temp"
-; V12 tmp9 [V12,T06] ( 7, 13.27) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <System.String>
+; V12 tmp9 [V12,T06] ( 7, 13.27) ref -> [ebp-0x18] class-hnd exact spill-single-def "Inline stloc first use temp" <System.String>
;* V13 tmp10 [V13,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V14 tmp11 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V15 tmp12 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -45,9 +45,9 @@ ; V34 tmp31 [V34,T10] ( 3, 12 ) ref -> edx "arr expr" ; V35 cse0 [V35,T22] ( 3, 6 ) int -> ecx "CSE - conservative" ; V36 cse1 [V36,T21] ( 3, 6 ) ref -> edx "CSE - conservative"
-; V37 cse2 [V37,T14] ( 4, 7.47) int -> [ebp-0x18] "CSE - moderate"
+; V37 cse2 [V37,T14] ( 4, 7.47) int -> [ebp-0x14] "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 12
G_M45788_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -55,7 +55,7 @@ G_M45788_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16
+ sub esp, 12
;; size=9 bbWeight=1 PerfScore 4.50 G_M45788_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 0xD1FFAB1E ; <unknown class> @@ -113,137 +113,125 @@ G_M45788_IG07: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs -[ecx] xor edi, edi cmp dword ptr [esi+0x08], 0
- jle G_M45788_IG19
+ jle G_M45788_IG17
;; size=27 bbWeight=1 PerfScore 10.75
-G_M45788_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M45788_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
cmp edi, dword ptr [esi+0x08]
- jae G_M45788_IG26
+ jae G_M45788_IG24
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] cmp edi, dword ptr [ecx+0x04]
- jae G_M45788_IG24
+ jae G_M45788_IG22
mov ebx, gword ptr [ecx+4*edi+0x08] ; gcrRegs +[ebx] test ebx, ebx
- je SHORT G_M45788_IG11 - ;; size=29 bbWeight=4 PerfScore 53.00 -G_M45788_IG09: ; bbWeight=1.84, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ je G_M45788_IG19 + ;; size=33 bbWeight=4 PerfScore 53.00 +G_M45788_IG09: ; bbWeight=1.84, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx] mov eax, dword ptr [ebx+0x04] test eax, eax
- je SHORT G_M45788_IG11 - ;; size=7 bbWeight=1.84 PerfScore 5.97
+ je G_M45788_IG19 + ;; size=11 bbWeight=1.84 PerfScore 5.97
G_M45788_IG10: ; bbWeight=1.90, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x18], eax
+ mov dword ptr [ebp-0x14], eax
mov edx, eax
- mov dword ptr [ebp-0x14], edx
+ mov dword ptr [ebp-0x10], edx
lea ecx, [edx+0x01] test ecx, ecx
- jl G_M45788_IG25 - jmp SHORT G_M45788_IG12 - ;; size=21 bbWeight=1.90 PerfScore 11.38 -G_M45788_IG11: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ebx] - mov ecx, 0xD1FFAB1E - ; gcrRegs +[ecx] - jmp G_M45788_IG16 - ;; size=10 bbWeight=2 PerfScore 4.50 -G_M45788_IG12: ; bbWeight=1.90, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] +[ebx]
+ jl G_M45788_IG23
call <unknown method> ; gcrRegs +[eax] mov ecx, eax ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x1C], ecx
+ mov gword ptr [ebp-0x18], ecx
; GC ptr vars +{V12} test ecx, ecx
- jne SHORT G_M45788_IG13
+ jne SHORT G_M45788_IG11
mov ecx, 0xD1FFAB1E mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[eax ecx edx]
- ;; size=30 bbWeight=1.90 PerfScore 13.27 -G_M45788_IG13: ; bbWeight=1.90, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref - mov ecx, gword ptr [ebp-0x1C]
+ ;; size=49 bbWeight=1.90 PerfScore 20.86 +G_M45788_IG11: ; bbWeight=1.90, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx]
- mov edx, dword ptr [ebp-0x18]
+ mov edx, dword ptr [ebp-0x14]
cmp dword ptr [ecx+0x04], edx
- jge G_M45788_IG21
+ jge SHORT G_M45788_IG12
mov ecx, 0xD1FFAB1E mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- mov dword ptr [ebp-0x10], edi - ;; size=34 bbWeight=1.90 PerfScore 19.91 -G_M45788_IG14: ; bbWeight=1.90, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - mov ecx, gword ptr [ebp-0x1C]
+ ;; size=27 bbWeight=1.90 PerfScore 18.01 +G_M45788_IG12: ; bbWeight=1.90, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx] lea edx, bword ptr [ecx+0x08] ; byrRegs +[edx] add ebx, 8 ; gcrRegs -[ebx] ; byrRegs +[ebx]
- mov eax, dword ptr [ebp-0x14] - lea edi, [eax+eax] - push edi
+ mov eax, dword ptr [ebp-0x10] + add eax, eax + push eax
mov ecx, edx ; gcrRegs -[ecx] ; byrRegs +[ecx] mov edx, ebx call [<unknown method>] ; byrRegs -[ecx edx ebx]
- mov edi, gword ptr [ebp-0x1C] - ; gcrRegs +[edi] - mov ecx, dword ptr [edi+0x04] - mov ebx, dword ptr [ebp-0x14] - sub ecx, ebx
+ mov ebx, gword ptr [ebp-0x18] + ; gcrRegs +[ebx] + mov ecx, dword ptr [ebx+0x04] + sub ecx, dword ptr [ebp-0x10]
test ecx, ecx
- jg SHORT G_M45788_IG15
+ jg SHORT G_M45788_IG13
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- ;; size=57 bbWeight=1.90 PerfScore 31.76 -G_M45788_IG15: ; bbWeight=1.90, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref - lea ecx, bword ptr [edi+2*ebx+0x08]
+ ;; size=54 bbWeight=1.90 PerfScore 32.71 +G_M45788_IG13: ; bbWeight=1.90, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref + mov eax, dword ptr [ebp-0x10] + lea ecx, bword ptr [ebx+2*eax+0x08]
; byrRegs +[ecx] mov edx, 0xD1FFAB1E ; byrRegs +[edx] push 2 call [<unknown method>] ; byrRegs -[ecx edx]
- mov ecx, edi
+ mov ecx, ebx
; gcrRegs +[ecx]
- mov edi, dword ptr [ebp-0x10] - ; gcrRegs -[edi]
;; size=22 bbWeight=1.90 PerfScore 12.32
-G_M45788_IG16: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M45788_IG14: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[ebx]
; GC ptr vars -{V12} call [<unknown method>] ; gcrRegs -[ecx] test edi, edi
- jle SHORT G_M45788_IG18
+ jle SHORT G_M45788_IG16
;; size=10 bbWeight=4 PerfScore 17.00
-G_M45788_IG17: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M45788_IG15: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi+0x08] cmp edi, ecx
- jae SHORT G_M45788_IG26
+ jae SHORT G_M45788_IG24
mov edx, gword ptr [esi+0x04] ; gcrRegs +[edx] mov eax, edx ; gcrRegs +[eax] cmp edi, dword ptr [eax+0x04]
- jae SHORT G_M45788_IG24
+ jae SHORT G_M45788_IG22
mov eax, gword ptr [eax+4*edi+0x08] lea ebx, [edi-0x01] cmp ebx, ecx
- jae SHORT G_M45788_IG26 - cmp ebx, dword ptr [edx+0x04]
jae SHORT G_M45788_IG24
+ cmp ebx, dword ptr [edx+0x04] + jae SHORT G_M45788_IG22
mov edx, gword ptr [edx+4*ebx+0x08] cmp byte ptr [eax], al push 0 @@ -252,20 +240,20 @@ G_M45788_IG17: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 call [<unknown method>] ; gcrRegs -[eax ecx edx] test eax, eax
- jle SHORT G_M45788_IG22
+ jle SHORT G_M45788_IG20
;; size=53 bbWeight=2 PerfScore 55.50
-G_M45788_IG18: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M45788_IG16: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
inc edi cmp edi, dword ptr [esi+0x08] jl G_M45788_IG08 ;; size=10 bbWeight=4 PerfScore 17.00
-G_M45788_IG19: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M45788_IG17: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
call [<unknown method>] xor eax, eax cmp dword ptr [esi+0x08], 100 sete al ;; size=15 bbWeight=0.50 PerfScore 3.62
-G_M45788_IG20: ; bbWeight=0.50, epilog, nogc, extend
+G_M45788_IG18: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -273,18 +261,16 @@ G_M45788_IG20: ; bbWeight=0.50, epilog, nogc, extend pop ebp ...

+49 (+7.53%) : 430720.dasm - System.Collections.Generic.ArraySortHelper1[System.Numerics.Vector2]:IntroSort(System.Span1[System.Numerics.Vector2],int,System.Comparison`1[System.Numerics.Vector2]) (Tier0-FullOpts)

@@ -11,7 +11,7 @@ ; V00 arg0 [V00,T21] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.Numerics.Vector2]> ; V01 arg1 [V01,T02] ( 7, 19 ) int -> esi ; V02 arg2 [V02,T05] ( 15, 16 ) ref -> edi class-hnd single-def <System.Comparison`1[System.Numerics.Vector2]>
-; V03 loc0 [V03,T01] ( 14, 28.50) int -> [ebp-0x10]
+; V03 loc0 [V03,T00] ( 16, 33 ) int -> [ebp-0x10]
; V04 loc1 [V04,T08] ( 3, 12 ) int -> [ebp-0x14] spill-single-def ; V05 loc2 [V05,T03] ( 5, 20 ) int -> ecx ;* V06 tmp0 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[System.Numerics.Vector2]> @@ -43,7 +43,7 @@ ;* V32 tmp26 [V32 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V33 tmp27 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp28 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V35 tmp29 [V35,T00] ( 4, 32 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
+; V35 tmp29 [V35,T01] ( 4, 32 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
;* V36 tmp30 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Numerics.Vector2]> ; V37 tmp31 [V37,T07] ( 2, 16 ) byref -> [ebp-0x20] spill-single-def "Inlining Arg" ;* V38 tmp32 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -152,17 +152,30 @@ G_M41768_IG08: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000008 mov eax, dword ptr [ebp-0x1C] mov edx, eax cmp eax, 1
- jle G_M41768_IG21
+ jle G_M41768_IG24
;; size=14 bbWeight=1 PerfScore 2.50 G_M41768_IG09: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz cmp edx, 16
- jle G_M41768_IG14
+ jle G_M41768_IG16
test esi, esi
- je G_M41768_IG20
+ je G_M41768_IG22
dec esi cmp edx, eax
- ja G_M41768_IG23
+ ja G_M41768_IG26
mov dword ptr [ebp-0x10], edx
+ test edx, edx + jge SHORT G_M41768_IG11 + ;; size=33 bbWeight=4 PerfScore 25.00 +G_M41768_IG10: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=16 bbWeight=2 PerfScore 7.00 +G_M41768_IG11: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz + mov edx, dword ptr [ebp-0x10]
mov ecx, edx push ecx push ebx @@ -177,18 +190,18 @@ G_M41768_IG09: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 mov dword ptr [ebp-0x18], edx mov eax, dword ptr [ebp-0x1C] cmp ecx, eax
- ja G_M41768_IG23
+ ja G_M41768_IG26
sub eax, ecx cmp eax, edx
- jb G_M41768_IG23
+ jb G_M41768_IG26
lea eax, bword ptr [ebx+8*ecx] ; byrRegs +[eax] mov bword ptr [ebp-0x20], eax ; GC ptr vars +{V37} test edx, edx
- jge SHORT G_M41768_IG11 - ;; size=86 bbWeight=4 PerfScore 83.00 -G_M41768_IG10: ; bbWeight=2, gcVars=0000000000000080 {V37}, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, gcvars, byref
+ jge SHORT G_M41768_IG13 + ;; size=60 bbWeight=4 PerfScore 67.00 +G_M41768_IG12: ; bbWeight=2, gcVars=0000000000000080 {V37}, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, gcvars, byref
; byrRegs -[eax] mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] @@ -197,7 +210,7 @@ G_M41768_IG10: ; bbWeight=2, gcVars=0000000000000080 {V37}, gcrefRegs=000 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=16 bbWeight=2 PerfScore 7.00
-G_M41768_IG11: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M41768_IG13: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
mov eax, bword ptr [ebp-0x20] ; byrRegs +[eax] mov edx, dword ptr [ebp-0x18] @@ -214,22 +227,22 @@ G_M41768_IG11: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 mov eax, edx cmp eax, 1 mov edx, eax
- jg SHORT G_M41768_IG13
+ jg SHORT G_M41768_IG15
;; size=30 bbWeight=4 PerfScore 41.00
-G_M41768_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M41768_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[edi] ; byrRegs -[ebx]
- jmp G_M41768_IG21
+ jmp G_M41768_IG24
;; size=5 bbWeight=1 PerfScore 2.00
-G_M41768_IG13: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref
+G_M41768_IG15: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref
; gcrRegs +[edi] ; byrRegs +[ebx] mov eax, dword ptr [ebp-0x1C] jmp G_M41768_IG09 ;; size=8 bbWeight=2 PerfScore 6.00
-G_M41768_IG14: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M41768_IG16: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
cmp edx, 2
- jne SHORT G_M41768_IG15
+ jne SHORT G_M41768_IG17
mov esi, ebx ; byrRegs +[esi] vmovsd xmm0, qword ptr [esi] @@ -248,7 +261,7 @@ G_M41768_IG14: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 ; gcrRegs -[ecx edi] ; byrRegs -[eax] test eax, eax
- jle G_M41768_IG21
+ jle G_M41768_IG24
vmovss xmm0, dword ptr [ebx] vmovss xmm1, dword ptr [ebx+0x04] mov ebx, bword ptr [ebp-0x24] @@ -256,14 +269,14 @@ G_M41768_IG14: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 vmovsd qword ptr [esi], xmm2 vmovss dword ptr [ebx], xmm0 vmovss dword ptr [ebx+0x04], xmm1
- jmp G_M41768_IG21
+ jmp G_M41768_IG24
;; size=85 bbWeight=0.50 PerfScore 21.38
-G_M41768_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
+G_M41768_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
; gcrRegs +[edi] ; byrRegs -[esi] ; GC ptr vars -{V83} cmp edx, 3
- jne G_M41768_IG18
+ jne G_M41768_IG20
mov esi, ebx ; byrRegs +[esi] vmovsd xmm0, qword ptr [esi] @@ -285,7 +298,7 @@ G_M41768_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs -[ecx] ; byrRegs -[edx] test eax, eax
- jle SHORT G_M41768_IG16
+ jle SHORT G_M41768_IG18
vmovss xmm0, dword ptr [ebx] vmovss xmm1, dword ptr [ebx+0x04] mov eax, bword ptr [ebp-0x24] @@ -298,13 +311,13 @@ G_M41768_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 vmovss dword ptr [ecx], xmm0 vmovss dword ptr [ecx+0x04], xmm1 ;; size=87 bbWeight=0.50 PerfScore 21.12
-G_M41768_IG16: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000048 {ebx esi}, byref, isz
+G_M41768_IG18: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000048 {ebx esi}, byref, isz
; byrRegs -[eax ecx] vmovsd xmm0, qword ptr [esi] sub esp, 8 vmovsd qword ptr [esp], xmm0 cmp dword ptr [ebp-0x1C], 2
- jbe G_M41768_IG22
+ jbe G_M41768_IG25
lea edx, bword ptr [ebx+0x10] ; byrRegs +[edx] mov bword ptr [ebp-0x28], edx @@ -318,7 +331,7 @@ G_M41768_IG16: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 ; gcrRegs -[ecx] ; byrRegs -[edx] test eax, eax
- jle SHORT G_M41768_IG17
+ jle SHORT G_M41768_IG19
vmovss xmm0, dword ptr [ebx] vmovss xmm1, dword ptr [ebx+0x04] mov ebx, bword ptr [ebp-0x28] @@ -329,7 +342,7 @@ G_M41768_IG16: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 vmovss dword ptr [ecx], xmm0 vmovss dword ptr [ecx+0x04], xmm1 ;; size=81 bbWeight=0.50 PerfScore 21.25
-G_M41768_IG17: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M41768_IG19: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
; byrRegs -[ecx ebx esi] mov esi, bword ptr [ebp-0x24] ; byrRegs +[esi] @@ -347,7 +360,7 @@ G_M41768_IG17: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [edi+0x0C]<unknown method> ; gcrRegs -[ecx edi] test eax, eax
- jle SHORT G_M41768_IG21
+ jle SHORT G_M41768_IG24
mov ecx, esi ; byrRegs +[ecx] vmovss xmm0, dword ptr [ecx] @@ -356,17 +369,17 @@ G_M41768_IG17: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 vmovsd qword ptr [esi], xmm2 vmovss dword ptr [ebx], xmm0 vmovss dword ptr [ebx+0x04], xmm1
- jmp SHORT G_M41768_IG21
+ jmp SHORT G_M41768_IG24
;; size=70 bbWeight=0.50 PerfScore 20.50
-G_M41768_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
+G_M41768_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
; gcrRegs +[edi] ; byrRegs -[ecx esi] ; GC ptr vars -{V84} cmp edx, eax
- ja SHORT G_M41768_IG23
+ ja SHORT G_M41768_IG26
mov dword ptr [ebp-0x10], edx test edx, edx
- jge SHORT G_M41768_IG19
+ jge SHORT G_M41768_IG21
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -374,7 +387,7 @@ G_M41768_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=27 bbWeight=0.50 PerfScore 3.50
-G_M41768_IG19: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M41768_IG21: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
mov edx, dword ptr [ebp-0x10] mov ecx, edx push ecx @@ -384,15 +397,27 @@ G_M41768_IG19: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [System.Collections.Generic.ArraySortHelper`1[System.Numerics.Vector2]:InsertionSort(System.Span`1[System.Numerics.Vector2],System.Comparison`1[System.Numerics.Vector2])] ; gcrRegs -[ecx edi] ; byrRegs -[ebx]
- jmp SHORT G_M41768_IG21
+ jmp SHORT G_M41768_IG24
;; size=17 bbWeight=0.50 PerfScore 4.25
-G_M41768_IG20: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M41768_IG22: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[edi] ; byrRegs +[ebx] cmp edx, eax
- ja SHORT G_M41768_IG23
+ ja SHORT G_M41768_IG26 + mov dword ptr [ebp-0x10], edx + test edx, edx + jge SHORT G_M41768_IG23 + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=27 bbWeight=0.50 PerfScore 3.50 +G_M41768_IG23: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref
...

+47 (+7.57%) : 454711.dasm - System.Collections.Generic.ArraySortHelper1[System.ValueTuple2[ushort,ushort]]:IntroSort(System.Span1[System.ValueTuple2[ushort,ushort]],int,System.Comparison1[System.ValueTuple2[ushort,ushort]]) (Instrumented Tier1)

@@ -10,8 +10,8 @@ ; ; V00 arg0 [V00,T16] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.ValueTuple`2[ushort,ushort]]> ; V01 arg1 [V01,T02] ( 7, 8.50) int -> edi
-; V02 arg2 [V02,T00] ( 15, 9 ) ref -> esi class-hnd single-def <System.Comparison`1[System.ValueTuple`2[ushort,ushort]]> -; V03 loc0 [V03,T01] ( 14, 11 ) int -> [ebp-0x10]
+; V02 arg2 [V02,T01] ( 15, 9 ) ref -> esi class-hnd single-def <System.Comparison`1[System.ValueTuple`2[ushort,ushort]]> +; V03 loc0 [V03,T00] ( 16, 12 ) int -> [ebp-0x10]
; V04 loc1 [V04,T17] ( 3, 1.50) int -> [ebp-0x14] spill-single-def ; V05 loc2 [V05,T14] ( 5, 2.50) int -> ecx ;* V06 tmp0 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[System.ValueTuple`2[ushort,ushort]]> @@ -151,14 +151,14 @@ G_M22846_IG08: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000008 mov eax, dword ptr [ebp-0x20] mov edx, eax cmp eax, 1
- jle G_M22846_IG13
+ jle G_M22846_IG15
;; size=14 bbWeight=1 PerfScore 2.50 G_M22846_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref mov dword ptr [ebp-0x10], edx cmp edx, 16
- jle G_M22846_IG14
+ jle G_M22846_IG16
test edi, edi
- je G_M22846_IG20
+ je G_M22846_IG22
;; size=20 bbWeight=4 PerfScore 14.00 G_M22846_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz mov ecx, 0xD1FFAB1E @@ -167,8 +167,21 @@ G_M22846_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov eax, dword ptr [ebp-0x10] mov edx, dword ptr [ebp-0x20] cmp eax, edx
- ja G_M22846_IG23
+ ja G_M22846_IG26
mov dword ptr [ebp-0x10], eax
+ test eax, eax + jge SHORT G_M22846_IG12 + ;; size=32 bbWeight=0.50 PerfScore 3.50 +G_M22846_IG11: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=16 bbWeight=2 PerfScore 7.00 +G_M22846_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz + mov eax, dword ptr [ebp-0x10]
mov ecx, eax push ecx push ebx @@ -183,18 +196,18 @@ G_M22846_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov dword ptr [ebp-0x18], edx mov eax, dword ptr [ebp-0x20] cmp ecx, eax
- ja G_M22846_IG23
+ ja G_M22846_IG26
sub eax, ecx cmp eax, edx
- jb G_M22846_IG23
+ jb G_M22846_IG26
lea eax, bword ptr [ebx+4*ecx] ; byrRegs +[eax] mov bword ptr [ebp-0x24], eax ; GC ptr vars +{V37} test edx, edx
- jge SHORT G_M22846_IG12 - ;; size=85 bbWeight=0.50 PerfScore 10.75 -G_M22846_IG11: ; bbWeight=2, gcVars=0000000000008000 {V37}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref
+ jge SHORT G_M22846_IG14 + ;; size=60 bbWeight=0.50 PerfScore 8.38 +G_M22846_IG13: ; bbWeight=2, gcVars=0000000000008000 {V37}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref
; byrRegs -[eax] mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] @@ -203,7 +216,7 @@ G_M22846_IG11: ; bbWeight=2, gcVars=0000000000008000 {V37}, gcrefRegs=000 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=16 bbWeight=2 PerfScore 7.00
-G_M22846_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
+G_M22846_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
mov ecx, bword ptr [ebp-0x24] ; byrRegs +[ecx] mov edx, dword ptr [ebp-0x18] @@ -222,19 +235,19 @@ G_M22846_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov edx, eax jg G_M22846_IG09 ;; size=34 bbWeight=0.50 PerfScore 5.12
-G_M22846_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M22846_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi] ; byrRegs -[ebx] mov ecx, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32
- jmp G_M22846_IG21
+ jmp G_M22846_IG24
;; size=15 bbWeight=0.50 PerfScore 1.62
-G_M22846_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M22846_IG16: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[esi] ; byrRegs +[ebx] mov edx, dword ptr [ebp-0x10] cmp edx, 2
- jne SHORT G_M22846_IG15
+ jne SHORT G_M22846_IG17
mov ecx, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 mov edi, ebx @@ -251,7 +264,7 @@ G_M22846_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; gcrRegs -[ecx esi] ; byrRegs -[eax] test eax, eax
- jle G_M22846_IG21
+ jle G_M22846_IG24
movzx ecx, word ptr [ebx] movzx eax, word ptr [ebx+0x02] mov ebx, bword ptr [ebp-0x28] @@ -259,15 +272,15 @@ G_M22846_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov dword ptr [edi], edx mov word ptr [ebx], cx mov word ptr [ebx+0x02], ax
- jmp G_M22846_IG21
+ jmp G_M22846_IG24
;; size=70 bbWeight=0.50 PerfScore 13.75
-G_M22846_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
+G_M22846_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
; gcrRegs +[esi] ; byrRegs -[edi] ; GC ptr vars -{V82} mov dword ptr [ebp-0x10], edx cmp edx, 3
- jne G_M22846_IG18
+ jne G_M22846_IG20
mov ecx, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 mov edi, ebx @@ -287,7 +300,7 @@ G_M22846_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs -[ecx] ; byrRegs -[eax] test eax, eax
- jle SHORT G_M22846_IG16
+ jle SHORT G_M22846_IG18
movzx ecx, word ptr [ebx] movzx eax, word ptr [ebx+0x02] mov word ptr [ebp-0x1C], ax @@ -302,11 +315,11 @@ G_M22846_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 movzx ecx, word ptr [ebp-0x1C] mov word ptr [eax+0x02], cx ;; size=80 bbWeight=0.50 PerfScore 14.50
-G_M22846_IG16: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000088 {ebx edi}, byref, isz
+G_M22846_IG18: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000088 {ebx edi}, byref, isz
; byrRegs -[eax edx] push dword ptr [edi] cmp dword ptr [ebp-0x20], 2
- jbe G_M22846_IG22
+ jbe G_M22846_IG25
lea eax, bword ptr [ebx+0x08] ; byrRegs +[eax] mov bword ptr [ebp-0x2C], eax @@ -318,7 +331,7 @@ G_M22846_IG16: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; gcrRegs -[ecx] ; byrRegs -[eax] test eax, eax
- jle SHORT G_M22846_IG17
+ jle SHORT G_M22846_IG19
movzx ecx, word ptr [ebx] movzx eax, word ptr [ebx+0x02] mov ebx, bword ptr [ebp-0x2C] @@ -329,7 +342,7 @@ G_M22846_IG16: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov word ptr [edx], cx mov word ptr [edx+0x02], ax ;; size=53 bbWeight=0.50 PerfScore 12.50
-G_M22846_IG17: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M22846_IG19: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; byrRegs -[edx ebx edi] mov edi, bword ptr [ebp-0x28] ; byrRegs +[edi] @@ -343,7 +356,7 @@ G_M22846_IG17: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [esi+0x0C]<unknown method> ; gcrRegs -[ecx esi] test eax, eax
- jle SHORT G_M22846_IG21
+ jle G_M22846_IG24
mov ecx, edi ; byrRegs +[ecx] movzx eax, word ptr [ecx] @@ -353,9 +366,9 @@ G_M22846_IG17: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov dword ptr [edi], edx mov word ptr [ebx], ax mov word ptr [ebx+0x02], cx
- jmp SHORT G_M22846_IG21 - ;; size=42 bbWeight=0.50 PerfScore 11.75 -G_M22846_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
+ jmp SHORT G_M22846_IG24 + ;; size=46 bbWeight=0.50 PerfScore 11.75 +G_M22846_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
; gcrRegs +[esi] ; byrRegs -[edi] ; GC ptr vars -{V83} @@ -364,9 +377,9 @@ G_M22846_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 mov edi, dword ptr [ebp-0x10] mov eax, dword ptr [ebp-0x20] cmp edi, eax
- ja SHORT G_M22846_IG23
+ ja SHORT G_M22846_IG26
test edi, edi
- jge SHORT G_M22846_IG19
+ jge SHORT G_M22846_IG21
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -374,7 +387,7 @@ G_M22846_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=40 bbWeight=0.50 PerfScore 4.62
-G_M22846_IG19: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M22846_IG21: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
mov ecx, edi push ecx push ebx @@ -383,9 +396,9 @@ G_M22846_IG19: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [System.Collections.Generic.ArraySortHelper`1[System.ValueTuple`2[ushort,ushort]]:InsertionSort(System.Span`1[System.ValueTuple`2[ushort,ushort]],System.Comparison`1[System.ValueTuple`2[ushort,ushort]])] ; gcrRegs -[ecx esi] ; byrRegs -[ebx]
- jmp SHORT G_M22846_IG21
+ jmp SHORT G_M22846_IG24
;; size=14 bbWeight=0.50 PerfScore 3.75
-G_M22846_IG20: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M22846_IG22: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[esi] ; byrRegs +[ebx] mov ecx, 0xD1FFAB1E @@ -393,7 +406,17 @@ G_M22846_IG20: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov edi, dword ptr [ebp-0x10] mov ecx, dword ptr [ebp-0x20] cmp edi, ecx
- ja SHORT G_M22846_IG23
+ ja SHORT G_M22846_IG26 + test edi, edi + jge SHORT G_M22846_IG23 + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=40 bbWeight=0.50 PerfScore 4.62 +G_M22846_IG23: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
mov ecx, ebx ...

+43 (+8.02%) : 454523.dasm - System.Collections.Generic.ArraySortHelper1[int]:IntroSort(System.Span1[int],int,System.Comparison`1[int]) (Instrumented Tier1)

@@ -11,7 +11,7 @@ ; V00 arg0 [V00,T08] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[int]> ; V01 arg1 [V01,T03] ( 7, 8.51) int -> edi ; V02 arg2 [V02,T02] ( 15, 9 ) ref -> esi class-hnd single-def <System.Comparison`1[int]>
-; V03 loc0 [V03,T01] ( 14, 11.02) int -> [ebp-0x10]
+; V03 loc0 [V03,T01] ( 16, 12.02) int -> [ebp-0x10]
; V04 loc1 [V04,T13] ( 3, 1.50) int -> [ebp-0x14] spill-single-def ; V05 loc2 [V05,T06] ( 5, 2.51) int -> ecx ;* V06 tmp0 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[int]> @@ -136,14 +136,14 @@ G_M15629_IG08: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000008 mov eax, dword ptr [ebp-0x1C] mov edx, eax cmp eax, 1
- jle G_M15629_IG16
+ jle G_M15629_IG18
;; size=14 bbWeight=1 PerfScore 2.50 G_M15629_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref mov dword ptr [ebp-0x10], edx cmp edx, 16
- jle G_M15629_IG17
+ jle G_M15629_IG19
test edi, edi
- je G_M15629_IG24
+ je G_M15629_IG26
;; size=20 bbWeight=4 PerfScore 14.00 G_M15629_IG10: ; bbWeight=0.51, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref mov ecx, 0xD1FFAB1E @@ -152,10 +152,23 @@ G_M15629_IG10: ; bbWeight=0.51, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov eax, dword ptr [ebp-0x10] mov edx, dword ptr [ebp-0x1C] cmp eax, edx
- ja G_M15629_IG28
+ ja G_M15629_IG31
;; size=25 bbWeight=0.51 PerfScore 2.40
-G_M15629_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
+G_M15629_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
mov dword ptr [ebp-0x10], eax
+ test eax, eax + jge SHORT G_M15629_IG13 + ;; size=7 bbWeight=0.50 PerfScore 1.12 +G_M15629_IG12: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=16 bbWeight=2 PerfScore 7.00 +G_M15629_IG13: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref + mov eax, dword ptr [ebp-0x10]
mov ecx, eax push ecx push ebx @@ -170,22 +183,22 @@ G_M15629_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov dword ptr [ebp-0x18], edx mov eax, dword ptr [ebp-0x1C] cmp ecx, eax
- ja G_M15629_IG28
+ ja G_M15629_IG31
;; size=40 bbWeight=0.50 PerfScore 6.25
-G_M15629_IG12: ; bbWeight=0.51, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
+G_M15629_IG14: ; bbWeight=0.51, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
sub eax, ecx cmp eax, edx
- jb G_M15629_IG28
+ jb G_M15629_IG31
;; size=10 bbWeight=0.51 PerfScore 0.76
-G_M15629_IG13: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
lea eax, bword ptr [ebx+4*ecx] ; byrRegs +[eax] mov bword ptr [ebp-0x20], eax ; GC ptr vars +{V37} test edx, edx
- jge SHORT G_M15629_IG15
+ jge SHORT G_M15629_IG17
;; size=10 bbWeight=0.50 PerfScore 1.38
-G_M15629_IG14: ; bbWeight=2, gcVars=00000080 {V37}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref
+G_M15629_IG16: ; bbWeight=2, gcVars=00000080 {V37}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref
; byrRegs -[eax] mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] @@ -194,7 +207,7 @@ G_M15629_IG14: ; bbWeight=2, gcVars=00000080 {V37}, gcrefRegs=00000040 {e call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=16 bbWeight=2 PerfScore 7.00
-G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
+G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
mov ecx, bword ptr [ebp-0x20] ; byrRegs +[ecx] mov edx, dword ptr [ebp-0x18] @@ -213,19 +226,19 @@ G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov edx, eax jg G_M15629_IG09 ;; size=34 bbWeight=0.50 PerfScore 5.12
-G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi] ; byrRegs -[ebx] mov ecx, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32
- jmp G_M15629_IG26
+ jmp G_M15629_IG29
;; size=15 bbWeight=0.50 PerfScore 1.62
-G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[esi] ; byrRegs +[ebx] mov edx, dword ptr [ebp-0x10] cmp edx, 2
- jne SHORT G_M15629_IG18
+ jne SHORT G_M15629_IG20
mov ecx, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 mov edx, dword ptr [ebx] @@ -235,18 +248,18 @@ G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [esi+0x0C]<unknown method> ; gcrRegs -[ecx esi] test eax, eax
- jle G_M15629_IG26
+ jle G_M15629_IG29
mov ecx, dword ptr [ebx] mov eax, dword ptr [ebx+0x04] mov dword ptr [ebx], eax mov dword ptr [ebx+0x04], ecx
- jmp G_M15629_IG26
+ jmp G_M15629_IG29
;; size=52 bbWeight=0.50 PerfScore 10.88
-G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG20: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[esi] mov dword ptr [ebp-0x10], edx cmp edx, 3
- jne SHORT G_M15629_IG21
+ jne SHORT G_M15629_IG23
mov ecx, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 mov edx, dword ptr [ebx] @@ -256,29 +269,29 @@ G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [esi+0x0C]<unknown method> ; gcrRegs -[ecx] test eax, eax
- jle SHORT G_M15629_IG19
+ jle SHORT G_M15629_IG21
mov edx, dword ptr [ebx] mov ecx, dword ptr [ebx+0x04] mov dword ptr [ebx], ecx mov dword ptr [ebx+0x04], edx ;; size=43 bbWeight=0.50 PerfScore 9.88
-G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG21: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
mov edx, dword ptr [ebx] cmp dword ptr [ebp-0x1C], 2
- jbe G_M15629_IG27
+ jbe G_M15629_IG30
push dword ptr [ebx+0x08] mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] call [esi+0x0C]<unknown method> ; gcrRegs -[ecx] test eax, eax
- jle SHORT G_M15629_IG20
+ jle SHORT G_M15629_IG22
mov edx, dword ptr [ebx] mov ecx, dword ptr [ebx+0x08] mov dword ptr [ebx], ecx mov dword ptr [ebx+0x08], edx ;; size=35 bbWeight=0.50 PerfScore 9.62
-G_M15629_IG20: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG22: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
mov edx, dword ptr [ebx+0x04] push dword ptr [ebx+0x08] mov ecx, gword ptr [esi+0x04] @@ -286,25 +299,25 @@ G_M15629_IG20: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [esi+0x0C]<unknown method> ; gcrRegs -[ecx esi] test eax, eax
- jle SHORT G_M15629_IG26
+ jle SHORT G_M15629_IG29
mov ecx, dword ptr [ebx+0x04] mov eax, dword ptr [ebx+0x08] mov dword ptr [ebx+0x04], eax mov dword ptr [ebx+0x08], ecx
- jmp SHORT G_M15629_IG26
+ jmp SHORT G_M15629_IG29
;; size=30 bbWeight=0.50 PerfScore 9.12
-G_M15629_IG21: ; bbWeight=0.51, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG23: ; bbWeight=0.51, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[esi] mov ecx, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 mov edi, dword ptr [ebp-0x10] mov eax, dword ptr [ebp-0x1C] cmp edi, eax
- ja SHORT G_M15629_IG28
+ ja SHORT G_M15629_IG31
;; size=20 bbWeight=0.51 PerfScore 2.27
-G_M15629_IG22: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG24: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
test edi, edi
- jge SHORT G_M15629_IG23
+ jge SHORT G_M15629_IG25
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -312,7 +325,7 @@ G_M15629_IG22: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=20 bbWeight=0.50 PerfScore 2.38
-G_M15629_IG23: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG25: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
mov ecx, edi push ecx push ebx @@ -321,9 +334,9 @@ G_M15629_IG23: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [System.Collections.Generic.ArraySortHelper`1[int]:InsertionSort(System.Span`1[int],System.Comparison`1[int])] ; gcrRegs -[ecx esi] ; byrRegs -[ebx]
- jmp SHORT G_M15629_IG26
+ jmp SHORT G_M15629_IG29
;; size=14 bbWeight=0.50 PerfScore 3.75
-G_M15629_IG24: ; bbWeight=0.51, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG26: ; bbWeight=0.51, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[esi] ; byrRegs +[ebx] mov ecx, 0xD1FFAB1E @@ -331,9 +344,19 @@ G_M15629_IG24: ; bbWeight=0.51, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov edi, dword ptr [ebp-0x10] mov ecx, dword ptr [ebp-0x1C] cmp edi, ecx
- ja SHORT G_M15629_IG28
+ ja SHORT G_M15629_IG31
;; size=20 bbWeight=0.51 PerfScore 2.27
-G_M15629_IG25: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
+G_M15629_IG27: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz + test edi, edi + jge SHORT G_M15629_IG28 + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=20 bbWeight=0.50 PerfScore 2.38 +G_M15629_IG28: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
mov ecx, ebx ; byrRegs +[ecx] mov eax, edi @@ -346,7 +369,7 @@ G_M15629_IG25: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; gcrRegs -[ecx esi] ...

libraries.crossgen2.windows.x86.checked.mch

-26 (-28.57%) : 188491.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -8,11 +8,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> ecx class-hnd single-def <System.String> -; V01 arg1 [V01,T03] ( 7, 5 ) int -> edx single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> esi -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> edi -; V04 cse0 [V04,T04] ( 6, 6.54) int -> eax "CSE - aggressive"
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> ecx class-hnd single-def <System.String> +; V01 arg1 [V01,T04] ( 6, 4.50) int -> edx single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> esi +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> edi +; V04 cse0 [V04,T01] ( 5, 10.50) int -> eax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -38,72 +38,51 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ecx] mov esi, edx
- test edx, edx - jl SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz + cmp esi, eax + jae SHORT G_M3357_IG13
movzx edi, word ptr [ecx+2*esi+0x08] cmp edi, 32 je SHORT G_M3357_IG08
- ;; size=10 bbWeight=3.96 PerfScore 12.87 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=14 bbWeight=4 PerfScore 18.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
cmp edi, 9
- jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=1.98 PerfScore 2.48 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M3357_IG11 + ;; size=5 bbWeight=2 PerfScore 2.50 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
inc esi cmp eax, esi jg SHORT G_M3357_IG06
- ;; size=5 bbWeight=3.96 PerfScore 5.94 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] - jmp SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ecx] - cmp esi, eax - jae SHORT G_M3357_IG17 - movzx edi, word ptr [ecx+2*esi+0x08] - cmp edi, 32 - je SHORT G_M3357_IG12 - ;; size=14 bbWeight=0.04 PerfScore 0.18 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - cmp edi, 9 - jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=0.02 PerfScore 0.03 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - inc esi - cmp eax, esi - jg SHORT G_M3357_IG10 - ;; size=5 bbWeight=0.04 PerfScore 0.06 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=5 bbWeight=4 PerfScore 6.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx] sub eax, edx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
mov eax, esi sub eax, edx ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 91, prolog size 5, PerfScore 34.05, instruction count 47, allocated bytes for code 91 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 65, prolog size 5, PerfScore 37.38, instruction count 36, allocated bytes for code 65 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================

-22 (-5.42%) : 171185.dasm - System.Dynamic.Utils.DelegateHelpers:GetCSharpThunk(System.Type,ubyte,System.Reflection.ParameterInfo[]):System.Reflection.MethodInfo (FullOpts)

@@ -53,7 +53,7 @@ G_M49765_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 jle SHORT G_M49765_IG03 xor ebx, ebx ; gcrRegs +[ebx]
- jmp G_M49765_IG21
+ jmp G_M49765_IG22
;; size=18 bbWeight=1 PerfScore 6.50 G_M49765_IG03: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[ebx] @@ -81,15 +81,15 @@ G_M49765_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs -[esi edi] xor ebx, ebx ; gcrRegs +[ebx]
- jmp G_M49765_IG21
+ jmp G_M49765_IG22
;; size=7 bbWeight=1 PerfScore 2.25
-G_M49765_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M49765_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx] +[esi edi] xor eax, eax cmp dword ptr [ebp-0x2C], 0
- jle G_M49765_IG14 - ;; size=12 bbWeight=1 PerfScore 3.25 -G_M49765_IG06: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ jle SHORT G_M49765_IG08 + ;; size=8 bbWeight=1 PerfScore 3.25 +G_M49765_IG06: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x24], eax mov ecx, gword ptr [esi+4*eax+0x08] ; gcrRegs +[ecx] @@ -104,44 +104,74 @@ G_M49765_IG06: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 call [<unknown method>] ; gcrRegs -[eax ecx] test eax, eax
- jne G_M49765_IG16
+ jne SHORT G_M49765_IG07
mov ecx, gword ptr [ebp-0x34] ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx] test eax, eax
- jne G_M49765_IG16
+ jne SHORT G_M49765_IG07
mov ecx, gword ptr [ebp-0x34] ; gcrRegs +[ecx] ; GC ptr vars -{V10} call [<unknown method>] ; gcrRegs -[ecx] test eax, eax
- jne G_M49765_IG16
+ je SHORT G_M49765_IG10 + ;; size=58 bbWeight=8 PerfScore 224.00 +G_M49765_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[esi edi] + xor ebx, ebx + ; gcrRegs +[ebx] + jmp G_M49765_IG22 + ;; size=7 bbWeight=1 PerfScore 2.25 +G_M49765_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ebx] +[esi edi] + mov edx, dword ptr [ebp-0x2C] + jmp SHORT G_M49765_IG11 + ;; size=5 bbWeight=0.50 PerfScore 1.50 +G_M49765_IG09: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[esi edi] + call [CORINFO_HELP_RNGCHKFAIL] + ;; size=6 bbWeight=0 PerfScore 0.00 +G_M49765_IG10: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[esi edi]
mov eax, dword ptr [ebp-0x24] inc eax mov edx, dword ptr [ebp-0x2C] cmp edx, eax
- jg G_M49765_IG13 - ;; size=85 bbWeight=8 PerfScore 252.00 -G_M49765_IG07: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ jg SHORT G_M49765_IG12 + ;; size=11 bbWeight=8 PerfScore 28.00 +G_M49765_IG11: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, edx lea eax, [ecx+0x01] test bl, bl cmovne ecx, eax test ecx, ecx
- je G_M49765_IG17
+ je SHORT G_M49765_IG13
call [CORINFO_HELP_READYTORUN_NEWARR_1] ; gcrRegs +[eax]
- ;; size=24 bbWeight=1 PerfScore 5.50 -G_M49765_IG08: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M49765_IG14 + ;; size=22 bbWeight=1 PerfScore 7.50 +G_M49765_IG12: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax] + jmp SHORT G_M49765_IG06 + ;; size=2 bbWeight=4 PerfScore 8.00 +G_M49765_IG13: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref + call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE] + ; byrRegs +[eax] + mov eax, gword ptr [eax] + ; gcrRegs +[eax] + ; byrRegs -[eax] + ;; size=8 bbWeight=1 PerfScore 5.00 +G_M49765_IG14: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
mov gword ptr [ebp-0x30], eax ; GC ptr vars +{V04} xor edx, edx cmp dword ptr [ebp-0x2C], 0
- jle SHORT G_M49765_IG10
+ jle SHORT G_M49765_IG16
;; size=11 bbWeight=1 PerfScore 4.25
-G_M49765_IG09: ; bbWeight=8, gcVars=00000020 {V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M49765_IG15: ; bbWeight=8, gcVars=00000020 {V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] mov dword ptr [ebp-0x28], edx mov ecx, gword ptr [esi+4*edx+0x08] @@ -158,12 +188,12 @@ G_M49765_IG09: ; bbWeight=8, gcVars=00000020 {V04}, gcrefRegs=000000C0 {e mov edx, dword ptr [ebp-0x28] inc edx cmp dword ptr [ebp-0x2C], edx
- jg SHORT G_M49765_IG09
+ jg SHORT G_M49765_IG15
;; size=37 bbWeight=8 PerfScore 154.00
-G_M49765_IG10: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M49765_IG16: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi] test bl, bl
- je SHORT G_M49765_IG18
+ je SHORT G_M49765_IG17
mov esi, gword ptr [ebp-0x30] ; gcrRegs +[esi] mov edx, dword ptr [esi+0x04] @@ -180,86 +210,58 @@ G_M49765_IG10: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 ; byrRegs -[eax] mov edi, dword ptr [ebp-0x2C] cmp edi, dword ptr [eax+0x04]
- jae SHORT G_M49765_IG15
+ jae G_M49765_IG09
mov ecx, gword ptr [eax+4*edi+0x08] ; gcrRegs +[ecx]
- ;; size=44 bbWeight=1 PerfScore 20.75 -G_M49765_IG11: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax] - cmp dword ptr [esi+0x04], 0 - jne SHORT G_M49765_IG19 - mov ebx, ecx - ; gcrRegs +[ebx] - ;; size=8 bbWeight=1 PerfScore 4.25 -G_M49765_IG12: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[ecx esi] - ; GC ptr vars -{V04} - jmp SHORT G_M49765_IG21 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M49765_IG13: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ebx] +[esi edi] - jmp G_M49765_IG06 - ;; size=5 bbWeight=4 PerfScore 8.00 -G_M49765_IG14: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref - mov edx, dword ptr [ebp-0x2C] - jmp G_M49765_IG07 - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M49765_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi edi] - call [CORINFO_HELP_RNGCHKFAIL] - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M49765_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - xor ebx, ebx - ; gcrRegs +[ebx] - jmp SHORT G_M49765_IG21 - ;; size=4 bbWeight=1 PerfScore 2.25 -G_M49765_IG17: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ebx] +[esi edi] - call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE] - ; byrRegs +[eax] - mov eax, gword ptr [eax] - ; gcrRegs +[eax] - ; byrRegs -[eax] - jmp G_M49765_IG08 - ;; size=13 bbWeight=1 PerfScore 7.00 -G_M49765_IG18: ; bbWeight=1, gcVars=00000020 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax esi edi] - ; GC ptr vars +{V04 V05}
+ jmp SHORT G_M49765_IG18 + ;; size=50 bbWeight=1 PerfScore 22.75 +G_M49765_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax ecx esi]
call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE] ; byrRegs +[eax] mov ecx, gword ptr [eax+0x0780] ; gcrRegs +[ecx] mov edi, dword ptr [ebp-0x2C] cmp edi, dword ptr [ecx+0x04]
- jae SHORT G_M49765_IG15
+ jae G_M49765_IG09
mov ecx, gword ptr [ecx+4*edi+0x08] mov esi, gword ptr [ebp-0x30] ; gcrRegs +[esi]
- jmp SHORT G_M49765_IG11 - ;; size=29 bbWeight=1 PerfScore 15.00 -G_M49765_IG19: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=31 bbWeight=1 PerfScore 13.00 +G_M49765_IG18: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
; byrRegs -[eax]
+ cmp dword ptr [esi+0x04], 0 + jne SHORT G_M49765_IG19 + mov ebx, ecx + ; gcrRegs +[ebx] + jmp SHORT G_M49765_IG20 + ;; size=10 bbWeight=1 PerfScore 6.25 +G_M49765_IG19: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[ebx]
mov edx, esi ; gcrRegs +[edx] cmp dword ptr [ecx], ecx
- ; GC ptr vars -{V04 V05}
+ ; GC ptr vars -{V04}
call [<unknown method>] ; gcrRegs -[ecx edx esi] +[eax] mov ebx, eax ; gcrRegs +[ebx]
- jmp SHORT G_M49765_IG12 - ;; size=14 bbWeight=1 PerfScore 8.50 -G_M49765_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax ebx]
+ ;; size=12 bbWeight=1 PerfScore 6.50 +G_M49765_IG20: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax] + jmp SHORT G_M49765_IG22 + ;; size=2 bbWeight=1 PerfScore 2.00 +G_M49765_IG21: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[ebx]
xor ebx, ebx ; gcrRegs +[ebx] call [CORINFO_HELP_ENDCATCH] ;; size=8 bbWeight=0 PerfScore 0.00
-G_M49765_IG21: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
+G_M49765_IG22: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
mov eax, ebx ; gcrRegs +[eax] ;; size=2 bbWeight=1 PerfScore 0.25
-G_M49765_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M49765_IG23: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -268,9 +270,9 @@ G_M49765_IG22: ; bbWeight=1, epilog, nogc, extend ret 4 ;; size=10 bbWeight=1 PerfScore 4.50
-Total bytes of code 406, prolog size 14, PerfScore 525.50, instruction count 130, allocated bytes for code 406 (MethodHash=e8fe3d9a) for method System.Dynamic.Utils.DelegateHelpers:GetCSharpThunk(System.Type,ubyte,System.Reflection.ParameterInfo[]):System.Reflection.MethodInfo (FullOpts)
...

-19 (-4.87%) : 155069.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)

@@ -16,10 +16,10 @@ ; V04 loc1 [V04 ] ( 3, 2 ) ubyte -> [ebp-0x24] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V05 loc2 [V05,T00] ( 18, 48 ) int -> [ebp-0x28] ;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.GeneratorDriver>
-; V07 tmp0 [V07,T06] ( 2, 16 ) ref -> eax class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+; V07 tmp0 [V07,T06] ( 2, 16 ) ref -> ecx class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "Strict ordering of exceptions for Array store" <System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.GeneratorDriver]> ; V09 tmp2 [V09 ] ( 3, 3 ) struct ( 8) [ebp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.GeneratorDriver]>
-; V10 tmp3 [V10,T15] ( 3, 3 ) ref -> edi class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V10 tmp3 [V10,T15] ( 3, 3 ) ref -> ebx class-hnd exact single-def "impAppendStmt" <<unknown class>>
; V11 tmp4 [V11,T20] ( 2, 1 ) int -> eax "Inline return value spill temp" ; V12 tmp5 [V12,T21] ( 2, 1 ) int -> eax "Inline return value spill temp" ; V13 tmp6 [V13,T18] ( 3, 3 ) int -> ecx "Inlining Arg" @@ -29,11 +29,11 @@ ; V17 tmp10 [V17 ] ( 2, 1.50) ref -> [ebp-0x2C] do-not-enreg[X] addr-exposed "field V09.Item2 (fldOffset=0x4)" P-DEP ; V18 tmp11 [V18,T01] ( 3, 24 ) ref -> ecx "arr expr" ; V19 tmp12 [V19,T07] ( 2, 16 ) ref -> ecx "argument with side effect"
-; V20 tmp13 [V20,T16] ( 3, 3 ) ref -> edx "arr expr"
+; V20 tmp13 [V20,T16] ( 3, 3 ) ref -> ecx "arr expr"
; V21 tmp14 [V21,T02] ( 3, 24 ) ref -> edx "arr expr" ; V22 tmp15 [V22,T03] ( 3, 24 ) byref -> edx "BlockOp address local"
-; V23 tmp16 [V23,T04] ( 3, 24 ) byref -> ecx "BlockOp address local" -; V24 tmp17 [V24,T17] ( 3, 3 ) byref -> edi single-def "BlockOp address local"
+; V23 tmp16 [V23,T04] ( 3, 24 ) byref -> eax "BlockOp address local" +; V24 tmp17 [V24,T17] ( 3, 3 ) byref -> ebx single-def "BlockOp address local"
; V25 EHSlots [V25 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar" ; V26 cse0 [V26,T08] ( 3, 12 ) ref -> edx "CSE - moderate" ; V27 cse1 [V27,T09] ( 3, 12 ) int -> edi "CSE - moderate" @@ -64,19 +64,19 @@ G_M51982_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= mov gword ptr [ebp-0x3C], ecx ; GC ptr vars +{V03} ;; size=6 bbWeight=1 PerfScore 3.00
-G_M51982_IG03: ; bbWeight=1, gcVars=00080000 {V03}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M51982_IG03: ; bbWeight=1, gcVars=00080000 {V03}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
lea edx, [ebp-0x24] call [<unknown method>] ; gcrRegs -[ecx] xor eax, eax cmp dword ptr [esi+0x0C], 0
- jle G_M51982_IG11 - ;; size=21 bbWeight=1 PerfScore 7.75
+ jle SHORT G_M51982_IG06 + ;; size=17 bbWeight=1 PerfScore 7.75
G_M51982_IG04: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] cmp eax, dword ptr [ecx+0x04]
- jae G_M51982_IG12
+ jae G_M51982_IG11
mov dword ptr [ebp-0x28], eax mov ecx, gword ptr [ecx+8*eax+0x08] mov gword ptr [ebp-0x38], edi @@ -86,37 +86,49 @@ G_M51982_IG04: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= call [<unknown method>] ; gcrRegs -[ecx edx edi] test eax, eax
- jne G_M51982_IG13
+ je G_M51982_IG12 + ;; size=38 bbWeight=4 PerfScore 58.00 +G_M51982_IG05: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + test ebx, ebx
mov eax, dword ptr [ebp-0x28]
- inc eax - cmp eax, dword ptr [esi+0x0C] - jl G_M51982_IG10 - ;; size=51 bbWeight=4 PerfScore 79.00 -G_M51982_IG05: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+ mov edi, gword ptr [ebp-0x38] + ; gcrRegs +[edi] + jne SHORT G_M51982_IG06 + mov ecx, gword ptr [esi+0x04] + ; gcrRegs +[ecx] + cmp eax, dword ptr [ecx+0x04] + jae G_M51982_IG11 + mov ebx, gword ptr [ecx+8*eax+0x0C] + ;; size=26 bbWeight=0.50 PerfScore 5.62 +G_M51982_IG06: ; bbWeight=1, gcVars=00080000 {V03}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[ecx] + ; GC ptr vars -{V01}
mov gword ptr [ebp+0x08], ebx test ebx, ebx
- je G_M51982_IG09
+ je G_M51982_IG10
;; size=11 bbWeight=1 PerfScore 2.25
-G_M51982_IG06: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M51982_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx] mov edx, 9 cmp eax, 9 cmovg eax, edx
- mov ecx, eax - test ecx, ecx - jle SHORT G_M51982_IG08 - ;; size=17 bbWeight=0.50 PerfScore 1.12 -G_M51982_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ test eax, eax + mov gword ptr [ebp-0x38], edi + ; GC ptr vars +{V01} + jle SHORT G_M51982_IG09 + ;; size=18 bbWeight=0.50 PerfScore 1.50 +G_M51982_IG08: ; bbWeight=4, gcVars=00080800 {V01 V03}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[edi]
mov edx, gword ptr [esi+0x04] ; gcrRegs +[edx]
- mov eax, edx - ; gcrRegs +[eax] - lea ebx, [ecx-0x01]
+ mov ecx, edx + ; gcrRegs +[ecx] + lea ebx, [eax-0x01]
mov dword ptr [ebp-0x34], ebx mov edi, dword ptr [edx+0x04] cmp ebx, edi
- jae G_M51982_IG12 - lea edx, bword ptr [edx+8*ecx]
+ jae G_M51982_IG11 + lea edx, bword ptr [edx+8*eax]
; gcrRegs -[edx] ; byrRegs +[edx] mov ebx, gword ptr [edx] @@ -126,36 +138,35 @@ G_M51982_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; byrRegs -[edx] mov gword ptr [ebp-0x40], edx ; GC ptr vars +{V15}
- cmp ecx, edi - jae G_M51982_IG12 - lea ecx, bword ptr [eax+8*ecx+0x08] - ; byrRegs +[ecx] - mov edx, ecx
+ cmp eax, edi + jae SHORT G_M51982_IG11 + lea eax, bword ptr [ecx+8*eax+0x08] + ; byrRegs +[eax] + mov edx, eax
; gcrRegs -[edx] ; byrRegs +[edx] call [CORINFO_HELP_CHECKED_ASSIGN_REF_EBX]
- ; gcrRegs -[eax ebx]
+ ; gcrRegs -[ecx ebx]
; byrRegs -[edx]
- lea edx, bword ptr [ecx+0x04]
+ lea edx, bword ptr [eax+0x04]
; byrRegs +[edx] mov ecx, gword ptr [ebp-0x40] ; gcrRegs +[ecx]
- ; byrRegs -[ecx]
; GC ptr vars -{V15} call [CORINFO_HELP_CHECKED_ASSIGN_REF_ECX] ; gcrRegs -[ecx]
- ; byrRegs -[edx]
+ ; byrRegs -[eax edx]
mov ebx, dword ptr [ebp-0x34] test ebx, ebx
- mov ecx, ebx - jg SHORT G_M51982_IG07 - ;; size=74 bbWeight=4 PerfScore 100.00 -G_M51982_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov edi, gword ptr [esi+0x04] - ; gcrRegs +[edi] - mov ebx, gword ptr [ebp+0x08]
+ mov eax, ebx + jg SHORT G_M51982_IG08 + ;; size=70 bbWeight=4 PerfScore 100.00 +G_M51982_IG09: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov ebx, gword ptr [esi+0x04]
; gcrRegs +[ebx]
- push ebx
+ mov edi, gword ptr [ebp+0x08] + ; gcrRegs +[edi] + push edi
; gcr arg push 0 push dword ptr [(reloc)] lea ecx, [ebp-0x30] @@ -165,110 +176,93 @@ G_M51982_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [<unknown method>] ; gcrRegs -[edx] ; gcr arg pop 1
- cmp dword ptr [edi+0x04], 0 - jbe SHORT G_M51982_IG12 - add edi, 8 - ; gcrRegs -[edi] - ; byrRegs +[edi]
+ cmp dword ptr [ebx+0x04], 0 + jbe SHORT G_M51982_IG11 + add ebx, 8 + ; gcrRegs -[ebx] + ; byrRegs +[ebx]
mov ecx, gword ptr [ebp-0x30] ; gcrRegs +[ecx]
- mov edx, edi
+ mov edx, ebx
; byrRegs +[edx] call [CORINFO_HELP_CHECKED_ASSIGN_REF_ECX] ; gcrRegs -[ecx] ; byrRegs -[edx]
- lea edx, bword ptr [edi+0x04]
+ lea edx, bword ptr [ebx+0x04]
; byrRegs +[edx] mov ecx, gword ptr [ebp-0x2C] ; gcrRegs +[ecx] call [CORINFO_HELP_CHECKED_ASSIGN_REF_ECX] ; gcrRegs -[ecx]
- ; byrRegs -[edx edi]
+ ; byrRegs -[edx ebx]
mov ecx, dword ptr [esi+0x0C] inc ecx mov eax, 10 cmp ecx, 10 cmovl eax, ecx mov dword ptr [esi+0x0C], eax
- jmp SHORT G_M51982_IG15 - ;; size=77 bbWeight=0.50 PerfScore 14.75 -G_M51982_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ebx esi]
+ mov ebx, edi + ; gcrRegs +[ebx] + jmp SHORT G_M51982_IG14 + ;; size=79 bbWeight=0.50 PerfScore 14.88 +G_M51982_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ebx esi edi]
mov ebx, gword ptr [ebp+0x08] ; gcrRegs +[ebx]
- jmp SHORT G_M51982_IG15
+ jmp SHORT G_M51982_IG14
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M51982_IG10: ; bbWeight=2, gcVars=00080800 {V01 V03}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs +[esi] - ; GC ptr vars +{V01 V11} - mov edi, gword ptr [ebp-0x38] - ; gcrRegs +[edi] - jmp G_M51982_IG04 - ;; size=8 bbWeight=2 PerfScore 6.00 -G_M51982_IG11: ; bbWeight=0.50, gcVars=00080000 {V03}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; GC ptr vars -{V01 V11} - mov gword ptr [ebp-0x38], edi - ; GC ptr vars +{V01} - jmp G_M51982_IG05 - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M51982_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ebx esi edi] - ; GC ptr vars -{V01}
+G_M51982_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[ebx]
call [CORINFO_HELP_RNGCHKFAIL] ;; size=6 bbWeight=0 PerfScore 0.00
-G_M51982_IG13: ; bbWeight=0.50, gcVars=00080800 {V01 V03}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M51982_IG12: ; bbWeight=4, gcVars=00080800 {V01 V03}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ebx esi] ; GC ptr vars +{V01 V11}
- test ebx, ebx
...

+8 (+4.12%) : 24174.dasm - System.Reflection.TypeLoading.RoConstructedGenericType+Key:Equals(System.Reflection.TypeLoading.RoConstructedGenericType+Key):ubyte:this (FullOpts)

@@ -34,7 +34,7 @@ G_M135_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, mov esi, ecx ; byrRegs +[esi] ;; size=11 bbWeight=1 PerfScore 4.75
-G_M135_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+G_M135_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
mov edi, gword ptr [ebp+0x0C] ; gcrRegs +[edi] mov ecx, gword ptr [esi] @@ -44,19 +44,19 @@ G_M135_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi call [<unknown method>] ; gcrRegs -[ecx edx] test eax, eax
- jne SHORT G_M135_IG07 - ;; size=18 bbWeight=1 PerfScore 8.25
+ jne G_M135_IG09 + ;; size=22 bbWeight=1 PerfScore 8.25
G_M135_IG03: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] mov eax, dword ptr [ecx+0x04] mov ebx, dword ptr [edi+0x04] cmp eax, ebx
- jne SHORT G_M135_IG07
+ jne G_M135_IG09
xor eax, eax cmp dword ptr [ecx+0x04], 0 jle SHORT G_M135_IG05
- ;; size=21 bbWeight=0.50 PerfScore 5.75
+ ;; size=25 bbWeight=0.50 PerfScore 5.75
G_M135_IG04: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz ; gcrRegs -[ecx] mov ecx, gword ptr [esi+0x04] @@ -77,13 +77,13 @@ G_M135_IG04: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 { call [CORINFO_HELP_READYTORUN_ISINSTANCEOF] ; gcrRegs -[ecx edx] +[eax] test eax, eax
- jne SHORT G_M135_IG09
+ jne SHORT G_M135_IG07
mov ecx, gword ptr [ebp-0x18] ; gcrRegs +[ecx] call [CORINFO_HELP_READYTORUN_ISINSTANCEOF] ; gcrRegs -[ecx] test eax, eax
- jne SHORT G_M135_IG09
+ jne SHORT G_M135_IG07
mov ecx, gword ptr [ebp-0x14] ; gcrRegs +[ecx] mov edx, gword ptr [ebp-0x18] @@ -92,7 +92,7 @@ G_M135_IG04: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 { call [<unknown method>] ; gcrRegs -[eax ecx edx] test eax, eax
- jne SHORT G_M135_IG07
+ jne SHORT G_M135_IG09
mov eax, dword ptr [ebp-0x10] inc eax mov edx, gword ptr [esi+0x04] @@ -113,18 +113,7 @@ G_M135_IG06: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 8 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M135_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - xor eax, eax - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M135_IG08: ; bbWeight=0.50, epilog, nogc, extend - lea esp, [ebp-0x0C] - pop ebx - pop esi - pop edi - pop ebp - ret 8 - ;; size=10 bbWeight=0.50 PerfScore 2.25 -G_M135_IG09: ; bbWeight=0.50, gcVars=00000018 {V03 V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M135_IG07: ; bbWeight=0.50, gcVars=00000018 {V03 V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars +{V03 V04} mov esi, gword ptr [ebp-0x14] ; gcrRegs +[esi] @@ -133,6 +122,19 @@ G_M135_IG09: ; bbWeight=0.50, gcVars=00000018 {V03 V04}, gcrefRegs=000000 sete al movzx eax, al ;; size=14 bbWeight=0.50 PerfScore 2.25
+G_M135_IG08: ; bbWeight=0.50, epilog, nogc, extend + lea esp, [ebp-0x0C] + pop ebx + pop esi + pop edi + pop ebp + ret 8 + ;; size=10 bbWeight=0.50 PerfScore 2.25 +G_M135_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[esi] + ; GC ptr vars -{V03 V04} + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M135_IG10: ; bbWeight=0.50, epilog, nogc, extend lea esp, [ebp-0x0C] pop ebx @@ -142,12 +144,10 @@ G_M135_IG10: ; bbWeight=0.50, epilog, nogc, extend ret 8 ;; size=10 bbWeight=0.50 PerfScore 2.25 G_M135_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[esi] - ; GC ptr vars -{V03 V04}
call [CORINFO_HELP_RNGCHKFAIL] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 194, prolog size 9, PerfScore 178.00, instruction count 76, allocated bytes for code 194 (MethodHash=dc8eff78) for method System.Reflection.TypeLoading.RoConstructedGenericType+Key:Equals(System.Reflection.TypeLoading.RoConstructedGenericType+Key):ubyte:this (FullOpts)
+Total bytes of code 202, prolog size 9, PerfScore 178.00, instruction count 76, allocated bytes for code 202 (MethodHash=dc8eff78) for method System.Reflection.TypeLoading.RoConstructedGenericType+Key:Equals(System.Reflection.TypeLoading.RoConstructedGenericType+Key):ubyte:this (FullOpts)
; ============================================================

+22 (+5.45%) : 151276.dasm - System.Xml.Serialization.XmlSchemaImporter:KeepXmlnsDeclarations(System.Xml.Schema.XmlSchemaType,byref):ubyte (FullOpts)

@@ -95,9 +95,9 @@ G_M9923_IG06: ; bbWeight=1, gcVars=00000040 {V02}, gcrefRegs=00000001 {ea call [<unknown method>] ; gcrRegs -[eax ecx] test eax, eax
- je G_M9923_IG16
+ je G_M9923_IG15
;; size=17 bbWeight=1 PerfScore 6.25
-G_M9923_IG07: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
+G_M9923_IG07: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
mov eax, gword ptr [ebp-0x2C] ; gcrRegs +[eax] mov ecx, gword ptr [eax+0x04] @@ -115,9 +115,9 @@ G_M9923_IG07: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000080 {ed call [CORINFO_HELP_READYTORUN_ISINSTANCEOF] ; gcrRegs -[ecx] test eax, eax
- je SHORT G_M9923_IG12 - ;; size=34 bbWeight=8 PerfScore 112.00 -G_M9923_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
+ je G_M9923_IG14 + ;; size=38 bbWeight=8 PerfScore 112.00 +G_M9923_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
; gcrRegs -[eax] mov ecx, esi ; gcrRegs +[ecx] @@ -126,16 +126,16 @@ G_M9923_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000080 mov esi, gword ptr [eax+0x20] ; gcrRegs +[esi] test esi, esi
- je SHORT G_M9923_IG12
+ je G_M9923_IG14
mov ebx, dword ptr [esi+0x04] test ebx, ebx
- je SHORT G_M9923_IG12
+ je G_M9923_IG14
xor eax, eax ; gcrRegs -[eax] test ebx, ebx
- jle SHORT G_M9923_IG12 - ;; size=28 bbWeight=4 PerfScore 45.00 -G_M9923_IG09: ; bbWeight=32, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
+ jle G_M9923_IG14 + ;; size=40 bbWeight=4 PerfScore 45.00 +G_M9923_IG09: ; bbWeight=32, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
mov dword ptr [ebp-0x24], eax mov ecx, gword ptr [esi+4*eax+0x08] ; gcrRegs +[ecx] @@ -144,8 +144,8 @@ G_M9923_IG09: ; bbWeight=32, gcrefRegs=00000040 {esi}, byrefRegs=00000080 mov gword ptr [ebp-0x30], eax ; GC ptr vars +{V08} test eax, eax
- je SHORT G_M9923_IG11 - ;; size=20 bbWeight=32 PerfScore 264.00
+ je G_M9923_IG13 + ;; size=24 bbWeight=32 PerfScore 264.00
G_M9923_IG10: ; bbWeight=16, gcVars=00000042 {V02 V08}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz mov ecx, eax ; gcrRegs +[ecx] @@ -159,33 +159,10 @@ G_M9923_IG10: ; bbWeight=16, gcVars=00000042 {V02 V08}, gcrefRegs=0000004 call [<unknown method>] ; gcrRegs -[eax ecx edx] test eax, eax
- jne SHORT G_M9923_IG14
+ je SHORT G_M9923_IG13
;; size=28 bbWeight=16 PerfScore 188.00
-G_M9923_IG11: ; bbWeight=32, gcVars=00000040 {V02}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz - ; GC ptr vars -{V08} - mov eax, dword ptr [ebp-0x24] - inc eax - cmp ebx, eax - jg SHORT G_M9923_IG09 - ;; size=8 bbWeight=32 PerfScore 80.00 -G_M9923_IG12: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
+G_M9923_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
; gcrRegs -[esi]
- mov eax, gword ptr [ebp-0x2C] - ; gcrRegs +[eax] - mov ecx, gword ptr [eax+0x04] - ; gcrRegs +[ecx] - call [<unknown method>] - ; gcrRegs -[eax ecx] - test eax, eax - jne G_M9923_IG07 - ;; size=20 bbWeight=8 PerfScore 58.00 -G_M9923_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; byrRegs -[edi] - jmp SHORT G_M9923_IG16 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M9923_IG14: ; bbWeight=1, gcVars=00000042 {V02 V08}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref, isz - ; byrRegs +[edi] - ; GC ptr vars +{V01 V08}
mov eax, gword ptr [ebp-0x30] ; gcrRegs +[eax] mov ecx, eax @@ -197,10 +174,10 @@ G_M9923_IG14: ; bbWeight=1, gcVars=00000042 {V02 V08}, gcrefRegs=00000000 call [CORINFO_HELP_READYTORUN_ISINSTANCEOF] ; gcrRegs -[ecx] test eax, eax
- je SHORT G_M9923_IG15
+ je SHORT G_M9923_IG12
mov ecx, gword ptr [ebp-0x30] ; gcrRegs +[ecx]
- ; GC ptr vars -{V01 V08}
+ ; GC ptr vars -{V08}
call [<unknown method>] ; gcrRegs -[ecx] mov ecx, eax @@ -225,14 +202,34 @@ G_M9923_IG14: ; bbWeight=1, gcVars=00000042 {V02 V08}, gcrefRegs=00000000 ; gcrRegs -[eax] ; byrRegs -[edx edi] ;; size=70 bbWeight=1 PerfScore 32.00
-G_M9923_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M9923_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x28], 1 mov dword ptr [ebp-0x1C], 0 mov dword ptr [ebp-0x18], 252
- push G_M9923_IG17 - jmp SHORT G_M9923_IG18
+ push G_M9923_IG16 + jmp SHORT G_M9923_IG17
;; size=28 bbWeight=1 PerfScore 6.00
-G_M9923_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M9923_IG13: ; bbWeight=32, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref + ; gcrRegs +[esi] + ; byrRegs +[edi] + mov eax, dword ptr [ebp-0x24] + inc eax + cmp ebx, eax + jg G_M9923_IG09 + ;; size=12 bbWeight=32 PerfScore 80.00 +G_M9923_IG14: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref + ; gcrRegs -[esi] + mov eax, gword ptr [ebp-0x2C] + ; gcrRegs +[eax] + mov ecx, gword ptr [eax+0x04] + ; gcrRegs +[ecx] + call [<unknown method>] + ; gcrRegs -[eax ecx] + test eax, eax + jne G_M9923_IG07 + ;; size=20 bbWeight=8 PerfScore 58.00 +G_M9923_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; byrRegs -[edi]
mov ecx, gword ptr [ebp-0x2C] ; gcrRegs +[ecx] ; GC ptr vars -{V02} @@ -246,11 +243,11 @@ G_M9923_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, ; gcrRegs -[eax ecx] jmp G_M9923_IG03 ;; size=30 bbWeight=1 PerfScore 10.50
-G_M9923_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M9923_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x18], 0
- jmp SHORT G_M9923_IG20
+ jmp SHORT G_M9923_IG19
;; size=9 bbWeight=1 PerfScore 3.00
-G_M9923_IG18: ; bbWeight=1, gcVars=00000040 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M9923_IG17: ; bbWeight=1, gcVars=00000040 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars +{V02 V06} mov ecx, gword ptr [ebp-0x2C] ; gcrRegs +[ecx] @@ -258,20 +255,20 @@ G_M9923_IG18: ; bbWeight=1, gcVars=00000040 {V02}, gcrefRegs=00000000 {}, call [CORINFO_HELP_READYTORUN_ISINSTANCEOF] ; gcrRegs -[ecx] +[eax] test eax, eax
- je SHORT G_M9923_IG19
+ je SHORT G_M9923_IG18
mov ecx, eax ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[eax ecx] ;; size=21 bbWeight=1 PerfScore 8.50
-G_M9923_IG19: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M9923_IG18: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
pop eax jmp eax ;; size=3 bbWeight=1 PerfScore 2.50
-G_M9923_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M9923_IG19: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [ebp-0x28] ;; size=3 bbWeight=1 PerfScore 1.00
-G_M9923_IG21: ; bbWeight=1, epilog, nogc, extend
+G_M9923_IG20: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -280,9 +277,9 @@ G_M9923_IG21: ; bbWeight=1, epilog, nogc, extend ret ;; size=8 bbWeight=1 PerfScore 3.50
-Total bytes of code 404, prolog size 18, PerfScore 858.25, instruction count 132, allocated bytes for code 404 (MethodHash=ce9ad93c) for method System.Xml.Serialization.XmlSchemaImporter:KeepXmlnsDeclarations(System.Xml.Schema.XmlSchemaType,byref):ubyte (FullOpts)
+Total bytes of code 426, prolog size 18, PerfScore 856.25, instruction count 131, allocated bytes for code 426 (MethodHash=ce9ad93c) for method System.Xml.Serialization.XmlSchemaImporter:KeepXmlnsDeclarations(System.Xml.Schema.XmlSchemaType,byref):ubyte (FullOpts)
; ============================================================ *************** EH table for System.Xml.Serialization.XmlSchemaImporter:KeepXmlnsDeclarations(System.Xml.Schema.XmlSchemaType,byref):ubyte 1 EH table entries, 1 total EH entries reported to VM
-EH#0: try [G_M9923_IG06..G_M9923_IG16) handled by [G_M9923_IG18..G_M9923_IG20) (finally)
+EH#0: try [G_M9923_IG06..G_M9923_IG15) handled by [G_M9923_IG17..G_M9923_IG19) (finally)
+12 (+6.94%) : 185143.dasm - System.IO.Packaging.ContentType:ValidateCarriageReturns(System.String) (FullOpts)
@@ -8,23 +8,24 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 7, 14 ) ref -> esi class-hnd single-def <System.String>
+; V00 arg0 [V00,T02] ( 7, 14 ) ref -> esi class-hnd single-def <System.String>
; V01 loc0 [V01,T00] ( 9, 26 ) int -> eax ;* V02 tmp0 [V02 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V03 tmp1 [V03,T12] ( 3, 0 ) ref -> edi class-hnd exact "NewObj constructor temp" <<unknown class>> -; V04 tmp2 [V04,T13] ( 2, 0 ) ref -> esi class-hnd "finalizable newobj spill" <System.String> -; V05 tmp3 [V05,T08] ( 3, 6 ) ref -> edx single-def "arr expr" -; V06 tmp4 [V06,T10] ( 2, 4 ) int -> edx "argument with side effect"
+; V03 tmp1 [V03,T13] ( 3, 0 ) ref -> edi class-hnd exact "NewObj constructor temp" <<unknown class>> +; V04 tmp2 [V04,T14] ( 2, 0 ) ref -> esi class-hnd "finalizable newobj spill" <System.String> +; V05 tmp3 [V05,T09] ( 3, 6 ) ref -> edx single-def "arr expr" +; V06 tmp4 [V06,T11] ( 2, 4 ) int -> edx "argument with side effect"
; V07 tmp5 [V07,T01] ( 3, 24 ) ref -> edi "arr expr"
-;* V08 tmp6 [V08,T11] ( 0, 0 ) ref -> zero-ref "arr expr" -; V09 tmp7 [V09,T02] ( 3, 24 ) ref -> ecx "arr expr"
+;* V08 tmp6 [V08,T12] ( 0, 0 ) ref -> zero-ref "arr expr" +; V09 tmp7 [V09,T03] ( 2, 16 ) ref -> ecx "arr expr"
; V10 tmp8 [V10,T04] ( 2, 16 ) int -> edx "argument with side effect" ; V11 cse0 [V11,T05] ( 3, 12 ) ref -> ecx "CSE - moderate"
-; V12 cse1 [V12,T09] ( 3, 6 ) byref -> [ebp-0x10] spill-single-def "CSE - moderate" -; V13 cse2 [V13,T06] ( 3, 10 ) int -> edi "CSE - moderate" -; V14 cse3 [V14,T07] ( 3, 7 ) int -> ebx hoist "CSE - moderate"
+; V12 cse1 [V12,T10] ( 3, 6 ) byref -> [ebp-0x14] spill-single-def "CSE - moderate" +; V13 cse2 [V13,T07] ( 3, 10 ) int -> edi "CSE - moderate" +; V14 cse3 [V14,T08] ( 3, 7 ) int -> [ebp-0x10] spill-single-def hoist "CSE - moderate" +; V15 cse4 [V15,T06] ( 3, 12 ) int -> ebx "CSE - moderate"
;
-; Lcl frame size = 4
+; Lcl frame size = 8
G_M26859_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -32,16 +33,16 @@ G_M26859_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- push eax
+ sub esp, 8
mov esi, ecx ; gcrRegs +[esi]
- ;; size=9 bbWeight=1 PerfScore 5.50
+ ;; size=11 bbWeight=1 PerfScore 4.75
G_M26859_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE] ; byrRegs +[eax] mov edi, eax ; byrRegs +[edi]
- mov bword ptr [ebp-0x10], edi
+ mov bword ptr [ebp-0x14], edi
; GC ptr vars +{V12} mov edx, gword ptr [edi+0x08] ; gcrRegs +[edx] @@ -58,7 +59,8 @@ G_M26859_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 cmp eax, -1 je SHORT G_M26859_IG06 mov ebx, dword ptr [esi+0x04]
- ;; size=42 bbWeight=1 PerfScore 21.75
+ mov dword ptr [ebp-0x10], ebx + ;; size=45 bbWeight=1 PerfScore 22.75
G_M26859_IG03: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz lea edx, [eax-0x01] cmp edx, ebx @@ -69,23 +71,24 @@ G_M26859_IG03: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000080 mov edi, ecx ; gcrRegs +[edi] ; byrRegs -[edi]
- cmp dword ptr [edi+0x04], 1
+ mov ebx, dword ptr [edi+0x04] + cmp ebx, 1
jbe SHORT G_M26859_IG07 movzx edi, word ptr [edi+0x0A] ; gcrRegs -[edi] cmp edx, edi je SHORT G_M26859_IG05
- ;; size=31 bbWeight=4 PerfScore 53.00
+ ;; size=33 bbWeight=4 PerfScore 50.00
G_M26859_IG04: ; bbWeight=2, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz lea edx, [eax+0x01]
- cmp edx, ebx
+ cmp edx, dword ptr [ebp-0x10]
jae SHORT G_M26859_IG07 movzx edx, word ptr [esi+2*eax+0x0A] cmp edx, edi jne SHORT G_M26859_IG08
- ;; size=16 bbWeight=2 PerfScore 10.00
+ ;; size=17 bbWeight=2 PerfScore 13.50
G_M26859_IG05: ; bbWeight=4, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [ecx+0x04], 2
+ cmp ebx, 2
jbe SHORT G_M26859_IG07 movzx edx, word ptr [ecx+0x0C] inc eax @@ -94,21 +97,22 @@ G_M26859_IG05: ; bbWeight=4, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000 call [<unknown method>] ; gcrRegs -[ecx] cmp eax, -1
- mov edi, bword ptr [ebp-0x10]
+ mov ebx, dword ptr [ebp-0x10] + mov edi, bword ptr [ebp-0x14]
; byrRegs +[edi] jne SHORT G_M26859_IG03
- ;; size=28 bbWeight=4 PerfScore 51.00
+ ;; size=30 bbWeight=4 PerfScore 44.00
G_M26859_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc ; gcrRegs -[esi] ; byrRegs -[edi] ; GC ptr vars -{V12}
- pop ecx
+ lea esp, [ebp-0x0C]
pop ebx pop esi pop edi pop ebp ret
- ;; size=6 bbWeight=1 PerfScore 3.50
+ ;; size=8 bbWeight=1 PerfScore 3.50
G_M26859_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref call [CORINFO_HELP_RNGCHKFAIL] ;; size=6 bbWeight=0 PerfScore 0.00 @@ -133,6 +137,6 @@ G_M26859_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} int3 ;; size=35 bbWeight=0 PerfScore 0.00
-Total bytes of code 173, prolog size 7, PerfScore 144.75, instruction count 64, allocated bytes for code 173 (MethodHash=5f739714) for method System.IO.Packaging.ContentType:ValidateCarriageReturns(System.String) (FullOpts)
+Total bytes of code 185, prolog size 9, PerfScore 138.50, instruction count 67, allocated bytes for code 185 (MethodHash=5f739714) for method System.IO.Packaging.ContentType:ValidateCarriageReturns(System.String) (FullOpts)
; ============================================================

libraries.pmi.windows.x86.checked.mch

-26 (-28.89%) : 257781.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,11 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> ecx class-hnd single-def <System.String> -; V01 arg1 [V01,T03] ( 7, 5 ) int -> edx single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> esi -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> edi -; V04 cse0 [V04,T04] ( 6, 6.54) int -> eax "CSE - aggressive"
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> ecx class-hnd single-def <System.String> +; V01 arg1 [V01,T04] ( 6, 4.50) int -> edx single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> esi +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> edi +; V04 cse0 [V04,T01] ( 5, 10.50) int -> eax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -37,72 +37,51 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ecx] mov esi, edx
- test edx, edx - jl SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz + cmp esi, eax + jae SHORT G_M3357_IG13
movzx edi, word ptr [ecx+2*esi+0x08] cmp edi, 32 je SHORT G_M3357_IG08
- ;; size=10 bbWeight=3.96 PerfScore 12.87 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=14 bbWeight=4 PerfScore 18.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
cmp edi, 9
- jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=1.98 PerfScore 2.48 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M3357_IG11 + ;; size=5 bbWeight=2 PerfScore 2.50 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
inc esi cmp eax, esi jg SHORT G_M3357_IG06
- ;; size=5 bbWeight=3.96 PerfScore 5.94 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] - jmp SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ecx] - cmp esi, eax - jae SHORT G_M3357_IG17 - movzx edi, word ptr [ecx+2*esi+0x08] - cmp edi, 32 - je SHORT G_M3357_IG12 - ;; size=14 bbWeight=0.04 PerfScore 0.18 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - cmp edi, 9 - jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=0.02 PerfScore 0.03 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - inc esi - cmp eax, esi - jg SHORT G_M3357_IG10 - ;; size=5 bbWeight=0.04 PerfScore 0.06 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=5 bbWeight=4 PerfScore 6.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx] sub eax, edx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
mov eax, esi sub eax, edx ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 90, prolog size 5, PerfScore 34.05, instruction count 47, allocated bytes for code 90 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 64, prolog size 5, PerfScore 37.38, instruction count 36, allocated bytes for code 64 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================

-15 (-2.58%) : 215616.dasm - System.Configuration.ConfigurationLockCollection:.ctor(System.Configuration.ConfigurationElement,int,System.String,System.Configuration.ConfigurationLockCollection):this (FullOpts)

@@ -8,12 +8,12 @@ ; 8 inlinees with PGO data; 21 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 18, 27.50) ref -> [ebp-0x2C] this class-hnd single-def <System.Configuration.ConfigurationLockCollection>
+; V00 this [V00,T00] ( 18, 27.50) ref -> esi this class-hnd single-def <System.Configuration.ConfigurationLockCollection>
; V01 arg1 [V01,T16] ( 3, 3 ) ref -> ecx class-hnd single-def <System.Configuration.ConfigurationElement> ; V02 arg2 [V02,T27] ( 1, 1 ) int -> [ebp+0x10] single-def ; V03 arg3 [V03,T26] ( 1, 1 ) ref -> [ebp+0x0C] class-hnd single-def <System.String> ; V04 arg4 [V04,T25] ( 2, 1.50) ref -> edi class-hnd single-def <System.Configuration.ConfigurationLockCollection>
-; V05 loc0 [V05,T08] ( 6, 9 ) ref -> [ebp-0x30] class-hnd EH-live spill-single-def <System.Collections.IEnumerator>
+; V05 loc0 [V05,T08] ( 6, 9 ) ref -> [ebp-0x2C] class-hnd EH-live spill-single-def <System.Collections.IEnumerator>
; V06 loc1 [V06,T05] ( 3, 10 ) ref -> edi class-hnd exact <System.String> ; V07 loc2 [V07,T24] ( 6, 1.50) ref -> eax class-hnd <<unknown class>> ; V08 tmp0 [V08,T18] ( 2, 4 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <System.Collections.Specialized.HybridDictionary> @@ -28,7 +28,7 @@ ; V17 tmp9 [V17,T03] ( 4, 15.47) ref -> ebx class-hnd exact "Inlining Arg" <System.String> ; V18 tmp10 [V18,T06] ( 5, 9.48) int -> [ebp-0x24] spill-single-def "Inline stloc first use temp" ; V19 tmp11 [V19,T15] ( 3, 5.69) int -> ecx "Inline stloc first use temp"
-; V20 tmp12 [V20,T04] ( 7, 13.27) ref -> [ebp-0x34] class-hnd exact spill-single-def "Inline stloc first use temp" <System.String>
+; V20 tmp12 [V20,T04] ( 7, 13.27) ref -> [ebp-0x30] class-hnd exact spill-single-def "Inline stloc first use temp" <System.String>
;* V21 tmp13 [V21,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V22 tmp14 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V23 tmp15 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -51,7 +51,7 @@ ; V40 cse0 [V40,T14] ( 3, 6 ) ref -> ebx "CSE - conservative" ; V41 cse1 [V41,T07] ( 4, 7.47) int -> [ebp-0x28] "CSE - moderate" ;
-; Lcl frame size = 40
+; Lcl frame size = 36
G_M55843_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -59,7 +59,7 @@ G_M55843_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 40
+ sub esp, 36
xor eax, eax mov dword ptr [ebp-0x20], eax mov dword ptr [ebp-0x1C], eax @@ -152,7 +152,7 @@ G_M55843_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e mov eax, dword ptr [eax+0x38] call [eax]<unknown method> ; gcrRegs -[ecx edi] +[eax]
- mov gword ptr [ebp-0x30], eax
+ mov gword ptr [ebp-0x2C], eax
; GC ptr vars +{V05} ;; size=13 bbWeight=0.50 PerfScore 5.00 G_M55843_IG08: ; bbWeight=0.50, gcVars=00000100 {V05}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref @@ -161,10 +161,10 @@ G_M55843_IG08: ; bbWeight=0.50, gcVars=00000100 {V05}, gcrefRegs=00000041 call [<unknown method>] ; gcrRegs -[eax ecx] test eax, eax
- je G_M55843_IG27
+ je G_M55843_IG25
;; size=16 bbWeight=0.50 PerfScore 2.25 G_M55843_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, gword ptr [ebp-0x30]
+ mov ecx, gword ptr [ebp-0x2C]
; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx] +[eax] @@ -176,7 +176,7 @@ G_M55843_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 G_M55843_IG10: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref mov ecx, 0xD1FFAB1E ; System.String cmp dword ptr [edi], ecx
- jne G_M55843_IG25
+ jne G_M55843_IG22
;; size=13 bbWeight=1 PerfScore 4.25 G_M55843_IG11: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref ; gcrRegs -[eax] @@ -188,69 +188,56 @@ G_M55843_IG11: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 call [System.Configuration.ConfigurationLockCollection:Add(System.String,int):this] ; gcrRegs -[ecx edx] cmp byte ptr [esi+0x1D], 0
- je G_M55843_IG22
+ je G_M55843_IG20
;; size=22 bbWeight=4 PerfScore 34.00
-G_M55843_IG12: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M55843_IG12: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ebx, gword ptr [esi+0x14] ; gcrRegs +[ebx] cmp dword ptr [ebx+0x04], 0
- je G_M55843_IG21
+ je G_M55843_IG19
test ebx, ebx
- je SHORT G_M55843_IG15 - ;; size=17 bbWeight=2 PerfScore 14.50 -G_M55843_IG13: ; bbWeight=1.84, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ je G_M55843_IG24 + ;; size=21 bbWeight=2 PerfScore 14.50 +G_M55843_IG13: ; bbWeight=1.84, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [ebx+0x04] test eax, eax
- je SHORT G_M55843_IG15 - ;; size=7 bbWeight=1.84 PerfScore 5.97
+ je G_M55843_IG24 + ;; size=11 bbWeight=1.84 PerfScore 5.97
G_M55843_IG14: ; bbWeight=1.90, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz mov dword ptr [ebp-0x28], eax mov edx, eax mov dword ptr [ebp-0x24], edx lea ecx, [edx+0x01] test ecx, ecx
- jl G_M55843_IG26 - jmp SHORT G_M55843_IG16 - ;; size=21 bbWeight=1.90 PerfScore 11.38 -G_M55843_IG15: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ebx] - mov ecx, 0xD1FFAB1E - ; gcrRegs +[ecx] - jmp G_M55843_IG20 - ;; size=10 bbWeight=2 PerfScore 4.50 -G_M55843_IG16: ; bbWeight=1.90, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] +[ebx]
+ jl G_M55843_IG23
call <unknown method> ; gcrRegs +[eax] mov ecx, eax ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x34], ecx
+ mov gword ptr [ebp-0x30], ecx
; GC ptr vars +{V20} test ecx, ecx
- jne SHORT G_M55843_IG17
+ jne SHORT G_M55843_IG15
mov ecx, 0xD1FFAB1E mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[eax ecx edx]
- ;; size=30 bbWeight=1.90 PerfScore 13.27 -G_M55843_IG17: ; bbWeight=1.90, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref - mov ecx, gword ptr [ebp-0x34]
+ ;; size=49 bbWeight=1.90 PerfScore 20.86 +G_M55843_IG15: ; bbWeight=1.90, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx] mov edx, dword ptr [ebp-0x28] cmp dword ptr [ecx+0x04], edx
- jge G_M55843_IG24
+ jge SHORT G_M55843_IG16
mov ecx, 0xD1FFAB1E mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- mov gword ptr [ebp-0x2C], esi - ; GC ptr vars +{V00} - ;; size=34 bbWeight=1.90 PerfScore 19.91 -G_M55843_IG18: ; bbWeight=1.90, gcVars=00000111 {V00 V05 V20}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[esi] - mov ecx, gword ptr [ebp-0x34]
+ ;; size=27 bbWeight=1.90 PerfScore 18.01 +G_M55843_IG16: ; bbWeight=1.90, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx] lea edx, bword ptr [ecx+0x08] ; byrRegs +[edx] @@ -258,49 +245,49 @@ G_M55843_IG18: ; bbWeight=1.90, gcVars=00000111 {V00 V05 V20}, gcrefRegs= ; gcrRegs -[ebx] ; byrRegs +[ebx] mov eax, dword ptr [ebp-0x24]
- lea esi, [eax+eax] - push esi
+ add eax, eax + push eax
mov ecx, edx ; gcrRegs -[ecx] ; byrRegs +[ecx] mov edx, ebx call [<unknown method>] ; byrRegs -[ecx edx ebx]
- mov esi, gword ptr [ebp-0x34] - ; gcrRegs +[esi] - mov ecx, dword ptr [esi+0x04] - mov ebx, dword ptr [ebp-0x24] - sub ecx, ebx
+ mov ebx, gword ptr [ebp-0x30] + ; gcrRegs +[ebx] + mov ecx, dword ptr [ebx+0x04] + sub ecx, dword ptr [ebp-0x24]
test ecx, ecx
- jg SHORT G_M55843_IG19
+ jg SHORT G_M55843_IG17
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- ;; size=57 bbWeight=1.90 PerfScore 31.76 -G_M55843_IG19: ; bbWeight=1.90, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref - lea ecx, bword ptr [esi+2*ebx+0x08]
+ ;; size=54 bbWeight=1.90 PerfScore 32.71 +G_M55843_IG17: ; bbWeight=1.90, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref + mov eax, dword ptr [ebp-0x24] + lea ecx, bword ptr [ebx+2*eax+0x08]
; byrRegs +[ecx] mov edx, 0xD1FFAB1E ; byrRegs +[edx] push 2 call [<unknown method>] ; byrRegs -[ecx edx]
- mov ecx, esi
+ mov ecx, ebx
; gcrRegs +[ecx]
- mov esi, gword ptr [ebp-0x2C]
;; size=22 bbWeight=1.90 PerfScore 12.32
-G_M55843_IG20: ; bbWeight=2, gcVars=00000100 {V05}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; GC ptr vars -{V00 V20}
+G_M55843_IG18: ; bbWeight=2, gcVars=00000100 {V05}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[ebx] + ; GC ptr vars -{V20}
lea edx, bword ptr [esi+0x14] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_ECX ; gcrRegs -[ecx] ; byrRegs -[edx] ;; size=8 bbWeight=2 PerfScore 3.00
-G_M55843_IG21: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M55843_IG19: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x14] ; gcrRegs +[ecx] mov edx, edi @@ -313,41 +300,40 @@ G_M55843_IG21: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 ; gcrRegs -[eax] ; byrRegs -[edx] ;; size=19 bbWeight=2 PerfScore 13.50
-G_M55843_IG22: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - mov ecx, gword ptr [ebp-0x30]
+G_M55843_IG20: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + mov ecx, gword ptr [ebp-0x2C]
; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx] test eax, eax jne G_M55843_IG09 ;; size=17 bbWeight=4 PerfScore 21.00
-G_M55843_IG23: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M55843_IG21: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi]
- jmp SHORT G_M55843_IG27
+ jmp SHORT G_M55843_IG25
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M55843_IG24: ; bbWeight=0.95, gcVars=00000110 {V05 V20}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs +[ebx esi edi] - ; GC ptr vars +{V04 V20}
...

-15 (-2.58%) : 231748.dasm - System.Configuration.ConfigurationLockCollection:.ctor(System.Configuration.ConfigurationElement,int,System.String,System.Configuration.ConfigurationLockCollection):this (FullOpts)

@@ -8,12 +8,12 @@ ; 8 inlinees with PGO data; 21 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 18, 27.50) ref -> [ebp-0x2C] this class-hnd single-def <System.Configuration.ConfigurationLockCollection>
+; V00 this [V00,T00] ( 18, 27.50) ref -> esi this class-hnd single-def <System.Configuration.ConfigurationLockCollection>
; V01 arg1 [V01,T16] ( 3, 3 ) ref -> ecx class-hnd single-def <System.Configuration.ConfigurationElement> ; V02 arg2 [V02,T27] ( 1, 1 ) int -> [ebp+0x10] single-def ; V03 arg3 [V03,T26] ( 1, 1 ) ref -> [ebp+0x0C] class-hnd single-def <System.String> ; V04 arg4 [V04,T25] ( 2, 1.50) ref -> edi class-hnd single-def <System.Configuration.ConfigurationLockCollection>
-; V05 loc0 [V05,T08] ( 6, 9 ) ref -> [ebp-0x30] class-hnd EH-live spill-single-def <System.Collections.IEnumerator>
+; V05 loc0 [V05,T08] ( 6, 9 ) ref -> [ebp-0x2C] class-hnd EH-live spill-single-def <System.Collections.IEnumerator>
; V06 loc1 [V06,T05] ( 3, 10 ) ref -> edi class-hnd exact <System.String> ; V07 loc2 [V07,T24] ( 6, 1.50) ref -> eax class-hnd <<unknown class>> ; V08 tmp0 [V08,T18] ( 2, 4 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <System.Collections.Specialized.HybridDictionary> @@ -28,7 +28,7 @@ ; V17 tmp9 [V17,T03] ( 4, 15.47) ref -> ebx class-hnd exact "Inlining Arg" <System.String> ; V18 tmp10 [V18,T06] ( 5, 9.48) int -> [ebp-0x24] spill-single-def "Inline stloc first use temp" ; V19 tmp11 [V19,T15] ( 3, 5.69) int -> ecx "Inline stloc first use temp"
-; V20 tmp12 [V20,T04] ( 7, 13.27) ref -> [ebp-0x34] class-hnd exact spill-single-def "Inline stloc first use temp" <System.String>
+; V20 tmp12 [V20,T04] ( 7, 13.27) ref -> [ebp-0x30] class-hnd exact spill-single-def "Inline stloc first use temp" <System.String>
;* V21 tmp13 [V21,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V22 tmp14 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V23 tmp15 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -51,7 +51,7 @@ ; V40 cse0 [V40,T14] ( 3, 6 ) ref -> ebx "CSE - conservative" ; V41 cse1 [V41,T07] ( 4, 7.47) int -> [ebp-0x28] "CSE - moderate" ;
-; Lcl frame size = 40
+; Lcl frame size = 36
G_M55843_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -59,7 +59,7 @@ G_M55843_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 40
+ sub esp, 36
xor eax, eax mov dword ptr [ebp-0x20], eax mov dword ptr [ebp-0x1C], eax @@ -152,7 +152,7 @@ G_M55843_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e mov eax, dword ptr [eax+0x38] call [eax]<unknown method> ; gcrRegs -[ecx edi] +[eax]
- mov gword ptr [ebp-0x30], eax
+ mov gword ptr [ebp-0x2C], eax
; GC ptr vars +{V05} ;; size=13 bbWeight=0.50 PerfScore 5.00 G_M55843_IG08: ; bbWeight=0.50, gcVars=00000100 {V05}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref @@ -161,10 +161,10 @@ G_M55843_IG08: ; bbWeight=0.50, gcVars=00000100 {V05}, gcrefRegs=00000041 call [<unknown method>] ; gcrRegs -[eax ecx] test eax, eax
- je G_M55843_IG27
+ je G_M55843_IG25
;; size=16 bbWeight=0.50 PerfScore 2.25 G_M55843_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, gword ptr [ebp-0x30]
+ mov ecx, gword ptr [ebp-0x2C]
; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx] +[eax] @@ -176,7 +176,7 @@ G_M55843_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 G_M55843_IG10: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref mov ecx, 0xD1FFAB1E ; System.String cmp dword ptr [edi], ecx
- jne G_M55843_IG25
+ jne G_M55843_IG22
;; size=13 bbWeight=1 PerfScore 4.25 G_M55843_IG11: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref ; gcrRegs -[eax] @@ -188,69 +188,56 @@ G_M55843_IG11: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 call [System.Configuration.ConfigurationLockCollection:Add(System.String,int):this] ; gcrRegs -[ecx edx] cmp byte ptr [esi+0x1D], 0
- je G_M55843_IG22
+ je G_M55843_IG20
;; size=22 bbWeight=4 PerfScore 34.00
-G_M55843_IG12: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M55843_IG12: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ebx, gword ptr [esi+0x14] ; gcrRegs +[ebx] cmp dword ptr [ebx+0x04], 0
- je G_M55843_IG21
+ je G_M55843_IG19
test ebx, ebx
- je SHORT G_M55843_IG15 - ;; size=17 bbWeight=2 PerfScore 14.50 -G_M55843_IG13: ; bbWeight=1.84, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ je G_M55843_IG24 + ;; size=21 bbWeight=2 PerfScore 14.50 +G_M55843_IG13: ; bbWeight=1.84, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [ebx+0x04] test eax, eax
- je SHORT G_M55843_IG15 - ;; size=7 bbWeight=1.84 PerfScore 5.97
+ je G_M55843_IG24 + ;; size=11 bbWeight=1.84 PerfScore 5.97
G_M55843_IG14: ; bbWeight=1.90, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz mov dword ptr [ebp-0x28], eax mov edx, eax mov dword ptr [ebp-0x24], edx lea ecx, [edx+0x01] test ecx, ecx
- jl G_M55843_IG26 - jmp SHORT G_M55843_IG16 - ;; size=21 bbWeight=1.90 PerfScore 11.38 -G_M55843_IG15: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ebx] - mov ecx, 0xD1FFAB1E - ; gcrRegs +[ecx] - jmp G_M55843_IG20 - ;; size=10 bbWeight=2 PerfScore 4.50 -G_M55843_IG16: ; bbWeight=1.90, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] +[ebx]
+ jl G_M55843_IG23
call <unknown method> ; gcrRegs +[eax] mov ecx, eax ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x34], ecx
+ mov gword ptr [ebp-0x30], ecx
; GC ptr vars +{V20} test ecx, ecx
- jne SHORT G_M55843_IG17
+ jne SHORT G_M55843_IG15
mov ecx, 0xD1FFAB1E mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[eax ecx edx]
- ;; size=30 bbWeight=1.90 PerfScore 13.27 -G_M55843_IG17: ; bbWeight=1.90, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref - mov ecx, gword ptr [ebp-0x34]
+ ;; size=49 bbWeight=1.90 PerfScore 20.86 +G_M55843_IG15: ; bbWeight=1.90, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx] mov edx, dword ptr [ebp-0x28] cmp dword ptr [ecx+0x04], edx
- jge G_M55843_IG24
+ jge SHORT G_M55843_IG16
mov ecx, 0xD1FFAB1E mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- mov gword ptr [ebp-0x2C], esi - ; GC ptr vars +{V00} - ;; size=34 bbWeight=1.90 PerfScore 19.91 -G_M55843_IG18: ; bbWeight=1.90, gcVars=00000111 {V00 V05 V20}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[esi] - mov ecx, gword ptr [ebp-0x34]
+ ;; size=27 bbWeight=1.90 PerfScore 18.01 +G_M55843_IG16: ; bbWeight=1.90, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx] lea edx, bword ptr [ecx+0x08] ; byrRegs +[edx] @@ -258,49 +245,49 @@ G_M55843_IG18: ; bbWeight=1.90, gcVars=00000111 {V00 V05 V20}, gcrefRegs= ; gcrRegs -[ebx] ; byrRegs +[ebx] mov eax, dword ptr [ebp-0x24]
- lea esi, [eax+eax] - push esi
+ add eax, eax + push eax
mov ecx, edx ; gcrRegs -[ecx] ; byrRegs +[ecx] mov edx, ebx call [<unknown method>] ; byrRegs -[ecx edx ebx]
- mov esi, gword ptr [ebp-0x34] - ; gcrRegs +[esi] - mov ecx, dword ptr [esi+0x04] - mov ebx, dword ptr [ebp-0x24] - sub ecx, ebx
+ mov ebx, gword ptr [ebp-0x30] + ; gcrRegs +[ebx] + mov ecx, dword ptr [ebx+0x04] + sub ecx, dword ptr [ebp-0x24]
test ecx, ecx
- jg SHORT G_M55843_IG19
+ jg SHORT G_M55843_IG17
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- ;; size=57 bbWeight=1.90 PerfScore 31.76 -G_M55843_IG19: ; bbWeight=1.90, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref - lea ecx, bword ptr [esi+2*ebx+0x08]
+ ;; size=54 bbWeight=1.90 PerfScore 32.71 +G_M55843_IG17: ; bbWeight=1.90, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref + mov eax, dword ptr [ebp-0x24] + lea ecx, bword ptr [ebx+2*eax+0x08]
; byrRegs +[ecx] mov edx, 0xD1FFAB1E ; byrRegs +[edx] push 2 call [<unknown method>] ; byrRegs -[ecx edx]
- mov ecx, esi
+ mov ecx, ebx
; gcrRegs +[ecx]
- mov esi, gword ptr [ebp-0x2C]
;; size=22 bbWeight=1.90 PerfScore 12.32
-G_M55843_IG20: ; bbWeight=2, gcVars=00000100 {V05}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; GC ptr vars -{V00 V20}
+G_M55843_IG18: ; bbWeight=2, gcVars=00000100 {V05}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[ebx] + ; GC ptr vars -{V20}
lea edx, bword ptr [esi+0x14] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_ECX ; gcrRegs -[ecx] ; byrRegs -[edx] ;; size=8 bbWeight=2 PerfScore 3.00
-G_M55843_IG21: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M55843_IG19: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x14] ; gcrRegs +[ecx] mov edx, edi @@ -313,41 +300,40 @@ G_M55843_IG21: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 ; gcrRegs -[eax] ; byrRegs -[edx] ;; size=19 bbWeight=2 PerfScore 13.50
-G_M55843_IG22: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - mov ecx, gword ptr [ebp-0x30]
+G_M55843_IG20: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + mov ecx, gword ptr [ebp-0x2C]
; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx] test eax, eax jne G_M55843_IG09 ;; size=17 bbWeight=4 PerfScore 21.00
-G_M55843_IG23: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M55843_IG21: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi]
- jmp SHORT G_M55843_IG27
+ jmp SHORT G_M55843_IG25
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M55843_IG24: ; bbWeight=0.95, gcVars=00000110 {V05 V20}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs +[ebx esi edi] - ; GC ptr vars +{V04 V20}
...

+46 (+7.68%) : 158815.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper2[ubyte,System.Nullable1[int]]:IntroSort(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment1[ubyte],System.Span1[System.Nullable1[int]],int,System.Collections.Generic.IComparer1[ubyte]) (FullOpts)

@@ -12,11 +12,11 @@ ; V01 arg1 [V01,T06] ( 13, 24 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.Nullable`1[int]]> ; V02 arg2 [V02,T09] ( 6, 18 ) int -> esi ; V03 arg3 [V03,T15] ( 10, 13 ) ref -> [ebp-0x5C] class-hnd single-def <System.Collections.Generic.IComparer`1[ubyte]>
-; V04 loc0 [V04,T02] ( 21, 39.50) int -> ebx
+; V04 loc0 [V04,T00] ( 23, 44 ) int -> ebx
; V05 loc1 [V05,T16] ( 3, 12 ) int -> [ebp-0x10] spill-single-def
-; V06 tmp0 [V06,T00] ( 5, 40 ) struct (16) [ebp-0x20] do-not-enreg[S] must-init "impAppendStmt" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]>
+; V06 tmp0 [V06,T01] ( 5, 40 ) struct (16) [ebp-0x20] do-not-enreg[S] must-init "impAppendStmt" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]>
;* V07 tmp1 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[System.Nullable`1[int]]>
-; V08 tmp2 [V08,T01] ( 5, 40 ) struct (16) [ebp-0x30] do-not-enreg[S] must-init "impAppendStmt" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]>
+; V08 tmp2 [V08,T02] ( 5, 40 ) struct (16) [ebp-0x30] do-not-enreg[S] must-init "impAppendStmt" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]>
;* V09 tmp3 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[System.Nullable`1[int]]> ; V10 tmp4 [V10,T26] ( 5, 5 ) struct (16) [ebp-0x40] do-not-enreg[S] must-init "impAppendStmt" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]> ;* V11 tmp5 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[System.Nullable`1[int]]> @@ -31,16 +31,16 @@ ;* V20 tmp14 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp15 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[ubyte]> ;* V22 tmp16 [V22 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]>
-; V23 tmp17 [V23,T31] ( 2, 2 ) int -> edx "Inlining Arg"
+; V23 tmp17 [V23,T31] ( 2, 2 ) int -> eax "Inlining Arg"
;* V24 tmp18 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Nullable`1[int]]>
-; V25 tmp19 [V25,T29] ( 2, 2 ) byref -> ecx single-def "Inlining Arg"
+; V25 tmp19 [V25,T29] ( 2, 2 ) byref -> esi single-def "Inlining Arg"
;* V26 tmp20 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V27 tmp21 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V28 tmp22 [V28 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[ubyte]> ;* V29 tmp23 [V29 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte]>
-; V30 tmp24 [V30,T13] ( 2, 16 ) int -> edx "Inlining Arg"
+; V30 tmp24 [V30,T13] ( 2, 16 ) int -> eax "Inlining Arg"
;* V31 tmp25 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Nullable`1[int]]>
-; V32 tmp26 [V32,T11] ( 2, 16 ) byref -> ecx "Inlining Arg"
+; V32 tmp26 [V32,T11] ( 2, 16 ) byref -> [ebp-0x60] spill-single-def "Inlining Arg"
;* V33 tmp27 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp28 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V35 tmp29 [V35,T07] ( 3, 24 ) int -> edx "Inlining Arg" @@ -67,13 +67,13 @@ ; V56 tmp50 [V56,T33] ( 2, 1 ) byref -> esi single-def "field V17._reference (fldOffset=0x0)" P-INDEP ; V57 tmp51 [V57,T37] ( 2, 1 ) int -> ecx single-def "field V17._length (fldOffset=0x4)" P-INDEP ; V58 tmp52 [V58,T34] ( 2, 1 ) ref -> ecx single-def "field V21._items (fldOffset=0x0)" P-INDEP
-; V59 tmp53 [V59,T38] ( 2, 1 ) int -> eax single-def "field V21._length (fldOffset=0x4)" P-INDEP -; V60 tmp54 [V60,T35] ( 2, 1 ) byref -> ecx single-def "field V24._reference (fldOffset=0x0)" P-INDEP -; V61 tmp55 [V61,T39] ( 2, 1 ) int -> eax single-def "field V24._length (fldOffset=0x4)" P-INDEP
+; V59 tmp53 [V59,T38] ( 2, 1 ) int -> edx single-def "field V21._length (fldOffset=0x4)" P-INDEP +; V60 tmp54 [V60,T35] ( 2, 1 ) byref -> esi single-def "field V24._reference (fldOffset=0x0)" P-INDEP +; V61 tmp55 [V61,T39] ( 2, 1 ) int -> ecx single-def "field V24._length (fldOffset=0x4)" P-INDEP
; V62 tmp56 [V62,T18] ( 2, 8 ) ref -> ecx "field V28._items (fldOffset=0x0)" P-INDEP
-; V63 tmp57 [V63,T22] ( 2, 8 ) int -> eax "field V28._length (fldOffset=0x4)" P-INDEP -; V64 tmp58 [V64,T19] ( 2, 8 ) byref -> ecx "field V31._reference (fldOffset=0x0)" P-INDEP -; V65 tmp59 [V65,T23] ( 2, 8 ) int -> eax "field V31._length (fldOffset=0x4)" P-INDEP
+; V63 tmp57 [V63,T22] ( 2, 8 ) int -> edx "field V28._length (fldOffset=0x4)" P-INDEP +; V64 tmp58 [V64,T19] ( 2, 8 ) byref -> eax "field V31._reference (fldOffset=0x0)" P-INDEP +; V65 tmp59 [V65,T23] ( 2, 8 ) int -> ecx "field V31._length (fldOffset=0x4)" P-INDEP
; V66 tmp60 [V66,T20] ( 2, 8 ) ref -> ecx "field V37._items (fldOffset=0x0)" P-INDEP ; V67 tmp61 [V67,T24] ( 2, 8 ) int -> edi "field V37._length (fldOffset=0x4)" P-INDEP ; V68 tmp62 [V68,T21] ( 2, 8 ) byref -> edi "field V42._reference (fldOffset=0x0)" P-INDEP @@ -97,7 +97,7 @@ ; V86 cse0 [V86,T17] ( 3, 12 ) int -> [ebp-0x54] spill-single-def "CSE - conservative" ; V87 cse1 [V87,T10] ( 4, 16 ) int -> [ebp-0x58] spill-single-def "CSE - moderate" ;
-; Lcl frame size = 80
+; Lcl frame size = 84
G_M62721_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -105,7 +105,7 @@ G_M62721_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 80
+ sub esp, 84
vxorps xmm4, xmm4, xmm4 vmovdqu ymmword ptr [ebp-0x50], ymm4 vmovdqu ymmword ptr [ebp-0x30], ymm4 @@ -116,43 +116,61 @@ G_M62721_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} G_M62721_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref mov ebx, dword ptr [ebp+0x14] cmp ebx, 1
- jle G_M62721_IG13
+ jle G_M62721_IG15
;; size=12 bbWeight=1 PerfScore 2.25
-G_M62721_IG03: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M62721_IG03: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
cmp ebx, 16
- jle G_M62721_IG08
+ jle G_M62721_IG09
test esi, esi
- je G_M62721_IG12
+ je G_M62721_IG13
dec esi cmp ebx, dword ptr [ebp+0x14]
- ja G_M62721_IG14
+ ja G_M62721_IG16
mov ecx, gword ptr [ebp+0x18] ; gcrRegs +[ecx]
- mov eax, dword ptr [ebp+0x1C] - mov edx, dword ptr [ebp+0x10] - mov dword ptr [ebp-0x20], edx
+ mov edx, dword ptr [ebp+0x1C] + mov eax, dword ptr [ebp+0x10] + mov dword ptr [ebp-0x20], eax
mov dword ptr [ebp-0x1C], ebx mov gword ptr [ebp-0x18], ecx
- mov dword ptr [ebp-0x14], eax
+ mov dword ptr [ebp-0x14], edx
cmp ebx, dword ptr [ebp+0x0C]
- ja G_M62721_IG15 - mov ecx, bword ptr [ebp+0x08]
+ ja G_M62721_IG17 + mov eax, bword ptr [ebp+0x08] + ; byrRegs +[eax] + mov bword ptr [ebp-0x60], eax + ; GC ptr vars +{V32} + test ebx, ebx + jge SHORT G_M62721_IG05 + ;; size=67 bbWeight=4 PerfScore 76.00 +G_M62721_IG04: ; bbWeight=2, gcVars=0000000000000800 {V32}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx]
- ; byrRegs +[ecx] - mov eax, ebx
+ ; byrRegs -[eax] + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=16 bbWeight=2 PerfScore 7.00 +G_M62721_IG05: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz + mov eax, bword ptr [ebp-0x60] + ; byrRegs +[eax] + mov ecx, ebx
push dword ptr [ebp-0x14] push gword ptr [ebp-0x18] push dword ptr [ebp-0x1C] push dword ptr [ebp-0x20]
- push eax
push ecx
+ push eax
mov gword ptr [ebp-0x5C], edi ; GC ptr vars +{V03} mov ecx, edi ; gcrRegs +[ecx]
- ; byrRegs -[ecx]
+ ; GC ptr vars -{V32}
call [<unknown method>] ; gcrRegs -[ecx edi]
+ ; byrRegs -[eax]
mov dword ptr [ebp-0x10], eax lea ecx, [eax+0x01] mov dword ptr [ebp-0x58], ecx @@ -167,7 +185,7 @@ G_M62721_IG03: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 xor ecx, ecx cmp dword ptr [ebp+0x14], edi sbb ecx, ebx
- jb G_M62721_IG14
+ jb G_M62721_IG16
mov ecx, gword ptr [ebp+0x18] ; gcrRegs +[ecx] mov edi, dword ptr [ebp+0x1C] @@ -180,21 +198,19 @@ G_M62721_IG03: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 ; gcrRegs -[ecx] mov ebx, dword ptr [ebp-0x54] cmp ecx, dword ptr [ebp+0x0C]
- ja G_M62721_IG15
+ ja G_M62721_IG17
mov edx, dword ptr [ebp+0x0C] sub edx, ecx cmp edx, ebx
- ;; size=170 bbWeight=4 PerfScore 204.00 -G_M62721_IG04: ; bbWeight=4, isz, extend - jb G_M62721_IG15
+ jb G_M62721_IG17
mov edx, bword ptr [ebp+0x08] ; byrRegs +[edx] lea edi, bword ptr [edx+8*ecx] ; byrRegs +[edi] test ebx, ebx
- jge SHORT G_M62721_IG06 - ;; size=16 bbWeight=4 PerfScore 15.00 -G_M62721_IG05: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
+ jge SHORT G_M62721_IG07 + ;; size=129 bbWeight=4 PerfScore 156.00 +G_M62721_IG06: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
; byrRegs -[edx] mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] @@ -203,7 +219,7 @@ G_M62721_IG05: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000080 {e call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=16 bbWeight=2 PerfScore 7.00
-G_M62721_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
+G_M62721_IG07: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
push dword ptr [ebp-0x24] push gword ptr [ebp-0x28] push dword ptr [ebp-0x2C] @@ -222,15 +238,15 @@ G_M62721_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000080 {e ; gcrRegs +[edi] jg G_M62721_IG03 ;; size=40 bbWeight=4 PerfScore 54.00
-G_M62721_IG07: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M62721_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[edi] ; GC ptr vars -{V03}
- jmp G_M62721_IG13
+ jmp G_M62721_IG15
;; size=5 bbWeight=1 PerfScore 2.00
-G_M62721_IG08: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M62721_IG09: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[edi] cmp ebx, 2
- jne SHORT G_M62721_IG09
+ jne SHORT G_M62721_IG10
push dword ptr [ebp+0x1C] push gword ptr [ebp+0x18] push dword ptr [ebp+0x14] @@ -243,12 +259,12 @@ G_M62721_IG08: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 xor edx, edx call [<unknown method>] ; gcrRegs -[ecx edi]
- jmp G_M62721_IG13
+ jmp G_M62721_IG15
;; size=40 bbWeight=0.50 PerfScore 6.88
-G_M62721_IG09: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M62721_IG10: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[edi] cmp ebx, 3
- jne SHORT G_M62721_IG10
+ jne SHORT G_M62721_IG11
push dword ptr [ebp+0x1C] push gword ptr [ebp+0x18] push dword ptr [ebp+0x14] @@ -285,12 +301,12 @@ G_M62721_IG09: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 mov edx, 1 call [<unknown method>] ; gcrRegs -[ecx edi]
- jmp G_M62721_IG13
+ jmp G_M62721_IG15
;; size=103 bbWeight=0.50 PerfScore 17.38
-G_M62721_IG10: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M62721_IG11: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[edi] cmp ebx, dword ptr [ebp+0x14]
- ja G_M62721_IG14
+ ja G_M62721_IG16
mov ecx, gword ptr [ebp+0x18] ; gcrRegs +[ecx] mov edx, dword ptr [ebp+0x1C] @@ -300,18 +316,18 @@ G_M62721_IG10: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 mov gword ptr [ebp-0x48], ecx ...

+49 (+8.19%) : 11703.dasm - System.Collections.Generic.ArraySortHelper1[System.Numerics.Vector1[float]]:IntroSort(System.Span1[System.Numerics.Vector1[float]],int,System.Comparison1[System.Numerics.Vector1[float]]) (FullOpts)

@@ -11,7 +11,7 @@ ; V00 arg0 [V00,T16] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.Numerics.Vector`1[float]]> ; V01 arg1 [V01,T02] ( 7, 19 ) int -> esi ; V02 arg2 [V02,T04] ( 15, 16 ) ref -> edi class-hnd single-def <System.Comparison`1[System.Numerics.Vector`1[float]]>
-; V03 loc0 [V03,T01] ( 14, 28.50) int -> [ebp-0x10]
+; V03 loc0 [V03,T00] ( 16, 33 ) int -> [ebp-0x10]
; V04 loc1 [V04,T08] ( 3, 12 ) int -> [ebp-0x14] spill-single-def ; V05 loc2 [V05,T03] ( 5, 20 ) int -> edx ;* V06 tmp0 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[System.Numerics.Vector`1[float]]> @@ -43,7 +43,7 @@ ;* V32 tmp26 [V32 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V33 tmp27 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp28 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V35 tmp29 [V35,T00] ( 4, 32 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
+; V35 tmp29 [V35,T01] ( 4, 32 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
;* V36 tmp30 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Numerics.Vector`1[float]]> ; V37 tmp31 [V37,T07] ( 2, 16 ) byref -> [ebp-0x20] spill-single-def "Inlining Arg" ;* V38 tmp32 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -136,17 +136,30 @@ G_M13661_IG08: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000008 mov eax, dword ptr [ebp-0x1C] mov edx, eax cmp eax, 1
- jle G_M13661_IG21
+ jle G_M13661_IG24
;; size=14 bbWeight=1 PerfScore 2.50 G_M13661_IG09: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz cmp edx, 16
- jle G_M13661_IG14
+ jle G_M13661_IG16
test esi, esi
- je G_M13661_IG20
+ je G_M13661_IG22
dec esi cmp edx, eax
- ja G_M13661_IG23
+ ja G_M13661_IG26
mov dword ptr [ebp-0x10], edx
+ test edx, edx + jge SHORT G_M13661_IG11 + ;; size=33 bbWeight=4 PerfScore 25.00 +G_M13661_IG10: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=16 bbWeight=2 PerfScore 7.00 +G_M13661_IG11: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz + mov edx, dword ptr [ebp-0x10]
mov ecx, edx push ecx push ebx @@ -161,19 +174,19 @@ G_M13661_IG09: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 mov dword ptr [ebp-0x18], ecx mov eax, dword ptr [ebp-0x1C] cmp edx, eax
- ja G_M13661_IG23
+ ja G_M13661_IG26
sub eax, edx cmp eax, ecx
- jb G_M13661_IG23
+ jb G_M13661_IG26
shl edx, 5 lea eax, bword ptr [ebx+edx] ; byrRegs +[eax] mov bword ptr [ebp-0x20], eax ; GC ptr vars +{V37} test ecx, ecx
- jge SHORT G_M13661_IG11 - ;; size=89 bbWeight=4 PerfScore 85.00 -G_M13661_IG10: ; bbWeight=2, gcVars=00000080 {V37}, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, gcvars, byref
+ jge SHORT G_M13661_IG13 + ;; size=63 bbWeight=4 PerfScore 69.00 +G_M13661_IG12: ; bbWeight=2, gcVars=00000080 {V37}, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, gcvars, byref
; byrRegs -[eax] mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] @@ -182,7 +195,7 @@ G_M13661_IG10: ; bbWeight=2, gcVars=00000080 {V37}, gcrefRegs=00000080 {e call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=16 bbWeight=2 PerfScore 7.00
-G_M13661_IG11: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M13661_IG13: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
mov eax, bword ptr [ebp-0x20] ; byrRegs +[eax] mov ecx, dword ptr [ebp-0x18] @@ -199,22 +212,22 @@ G_M13661_IG11: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 mov eax, ecx cmp eax, 1 mov edx, eax
- jg SHORT G_M13661_IG13
+ jg SHORT G_M13661_IG15
;; size=30 bbWeight=4 PerfScore 41.00
-G_M13661_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M13661_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[edi] ; byrRegs -[ebx]
- jmp G_M13661_IG21
+ jmp G_M13661_IG24
;; size=5 bbWeight=1 PerfScore 2.00
-G_M13661_IG13: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref
+G_M13661_IG15: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref
; gcrRegs +[edi] ; byrRegs +[ebx] mov eax, dword ptr [ebp-0x1C] jmp G_M13661_IG09 ;; size=8 bbWeight=2 PerfScore 6.00
-G_M13661_IG14: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M13661_IG16: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
cmp edx, 2
- jne SHORT G_M13661_IG15
+ jne SHORT G_M13661_IG17
mov esi, ebx ; byrRegs +[esi] vmovups ymm0, ymmword ptr [esi] @@ -229,18 +242,18 @@ G_M13661_IG14: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [edi+0x0C]<unknown method> ; gcrRegs -[ecx edi] test eax, eax
- jle G_M13661_IG21
+ jle G_M13661_IG24
vmovups ymm0, ymmword ptr [esi] vmovups ymm1, ymmword ptr [ebx] vmovups ymmword ptr [esi], ymm1 vmovups ymmword ptr [ebx], ymm0
- jmp G_M13661_IG21
+ jmp G_M13661_IG24
;; size=69 bbWeight=0.50 PerfScore 19.25
-G_M13661_IG15: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M13661_IG17: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[edi] ; byrRegs -[esi] cmp edx, 3
- jne G_M13661_IG18
+ jne G_M13661_IG20
mov esi, ebx ; byrRegs +[esi] vmovups ymm0, ymmword ptr [esi] @@ -262,7 +275,7 @@ G_M13661_IG15: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 ; gcrRegs -[ecx] ; byrRegs -[edx] test eax, eax
- jle SHORT G_M13661_IG16
+ jle SHORT G_M13661_IG18
vmovups ymm0, ymmword ptr [esi] mov eax, bword ptr [ebp-0x24] ; byrRegs +[eax] @@ -271,13 +284,13 @@ G_M13661_IG15: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 mov bword ptr [ebp-0x24], eax vmovups ymmword ptr [eax], ymm0 ;; size=75 bbWeight=0.50 PerfScore 20.00
-G_M13661_IG16: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000048 {ebx esi}, byref, isz
+G_M13661_IG18: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000048 {ebx esi}, byref, isz
; byrRegs -[eax] vmovups ymm0, ymmword ptr [esi] sub esp, 32 vmovups ymmword ptr [esp], ymm0 cmp dword ptr [ebp-0x1C], 2
- jbe G_M13661_IG22
+ jbe G_M13661_IG25
add ebx, 64 vmovups ymm0, ymmword ptr [ebx] sub esp, 32 @@ -287,13 +300,13 @@ G_M13661_IG16: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [edi+0x0C]<unknown method> ; gcrRegs -[ecx] test eax, eax
- jle SHORT G_M13661_IG17
+ jle SHORT G_M13661_IG19
vmovups ymm0, ymmword ptr [esi] vmovups ymm1, ymmword ptr [ebx] vmovups ymmword ptr [esi], ymm1 vmovups ymmword ptr [ebx], ymm0 ;; size=63 bbWeight=0.50 PerfScore 19.00
-G_M13661_IG17: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M13661_IG19: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
; byrRegs -[esi] mov esi, bword ptr [ebp-0x24] ; byrRegs +[esi] @@ -309,21 +322,21 @@ G_M13661_IG17: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [edi+0x0C]<unknown method> ; gcrRegs -[ecx edi] test eax, eax
- jle SHORT G_M13661_IG21
+ jle SHORT G_M13661_IG24
vmovups ymm0, ymmword ptr [esi] vmovups ymm1, ymmword ptr [ebx] vmovups ymmword ptr [esi], ymm1 vmovups ymmword ptr [ebx], ymm0
- jmp SHORT G_M13661_IG21
+ jmp SHORT G_M13661_IG24
;; size=55 bbWeight=0.50 PerfScore 18.88
-G_M13661_IG18: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M13661_IG20: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[edi] ; byrRegs -[esi] cmp edx, eax
- ja SHORT G_M13661_IG23
+ ja SHORT G_M13661_IG26
mov dword ptr [ebp-0x10], edx test edx, edx
- jge SHORT G_M13661_IG19
+ jge SHORT G_M13661_IG21
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -331,7 +344,7 @@ G_M13661_IG18: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=27 bbWeight=0.50 PerfScore 3.50
-G_M13661_IG19: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M13661_IG21: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
mov ecx, ebx ; byrRegs +[ecx] mov edx, dword ptr [ebp-0x10] @@ -344,15 +357,27 @@ G_M13661_IG19: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [System.Collections.Generic.ArraySortHelper`1[System.Numerics.Vector`1[float]]:InsertionSort(System.Span`1[System.Numerics.Vector`1[float]],System.Comparison`1[System.Numerics.Vector`1[float]])] ; gcrRegs -[ecx edi] ; byrRegs -[ebx]
- jmp SHORT G_M13661_IG21
+ jmp SHORT G_M13661_IG24
;; size=19 bbWeight=0.50 PerfScore 4.38
-G_M13661_IG20: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M13661_IG22: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[edi] ; byrRegs +[ebx] cmp edx, eax
- ja SHORT G_M13661_IG23
+ ja SHORT G_M13661_IG26 + mov dword ptr [ebp-0x10], edx + test edx, edx + jge SHORT G_M13661_IG23 + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=27 bbWeight=0.50 PerfScore 3.50 +G_M13661_IG23: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref
mov ecx, ebx ; byrRegs +[ecx]
+ mov edx, dword ptr [ebp-0x10]
mov eax, edx push eax push ecx @@ -362,8 +387,8 @@ G_M13661_IG20: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [System.Collections.Generic.ArraySortHelper`1[System.Numerics.Vector`1[float]]:HeapSort(System.Span`1[System.Numerics.Vector`1[float]],System.Comparison`1[System.Numerics.Vector`1[float]])] ; gcrRegs -[ecx edi] ...

+46 (+50.55%) : 4787.dasm - System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)

@@ -8,21 +8,21 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 4, 10 ) ref -> eax this class-hnd single-def <System.Buffers.Latin1CharSearchValues>
+; V00 this [V00,T04] ( 4, 10 ) ref -> esi this class-hnd single-def <System.Buffers.Latin1CharSearchValues>
; V01 arg1 [V01,T09] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]> ;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T01] ( 5, 17 ) int -> edi -; V04 loc2 [V04,T02] ( 4, 16 ) ushort -> ecx -; V05 tmp0 [V05,T05] ( 2, 8 ) int -> edx "Inline stloc first use temp" -; V06 tmp1 [V06,T06] ( 2, 8 ) int -> esi "Inline stloc first use temp" -; V07 tmp2 [V07,T03] ( 2, 16 ) byref -> ebx "Inlining Arg"
+; V03 loc1 [V03,T02] ( 5, 17 ) int -> [ebp-0x10] +; V04 loc2 [V04,T01] ( 5, 20 ) ushort -> [ebp-0x14] spill-single-def +; V05 tmp0 [V05,T05] ( 2, 8 ) int -> edi "Inline stloc first use temp" +; V06 tmp1 [V06,T06] ( 2, 8 ) int -> ebx "Inline stloc first use temp" +; V07 tmp2 [V07,T03] ( 2, 16 ) byref -> [ebp-0x1C] spill-single-def "Inlining Arg"
; V08 tmp3 [V08,T00] ( 3, 24 ) byref -> edx "dup spill" ;* V09 tmp4 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp6 [V11,T08] ( 2, 5 ) byref -> [ebp-0x14] spill-single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V12 tmp7 [V12,T07] ( 3, 6 ) int -> [ebp-0x10] spill-single-def "field V02._length (fldOffset=0x4)" P-INDEP
+; V11 tmp6 [V11,T08] ( 2, 5 ) byref -> [ebp-0x20] spill-single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V12 tmp7 [V12,T07] ( 3, 6 ) int -> [ebp-0x18] spill-single-def "field V02._length (fldOffset=0x4)" P-INDEP
;
-; Lcl frame size = 8
+; Lcl frame size = 20
G_M159_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -30,46 +30,71 @@ G_M159_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push edi push esi push ebx
- sub esp, 8 - mov eax, ecx - ; gcrRegs +[eax]
+ sub esp, 20 + mov esi, ecx + ; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 4.75
-G_M159_IG02: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz - mov edx, bword ptr [ebp+0x08] - ; byrRegs +[edx] - mov bword ptr [ebp-0x14], edx
+G_M159_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov edi, bword ptr [ebp+0x08] + ; byrRegs +[edi] + mov bword ptr [ebp-0x20], edi
; GC ptr vars +{V11}
- mov esi, dword ptr [ebp+0x0C] - mov dword ptr [ebp-0x10], esi - xor edi, edi - test esi, esi - jle SHORT G_M159_IG04
+ mov ebx, dword ptr [ebp+0x0C] + mov dword ptr [ebp-0x18], ebx + xor eax, eax + test ebx, ebx + jle SHORT G_M159_IG06
;; size=18 bbWeight=1 PerfScore 5.50
-G_M159_IG03: ; bbWeight=4, gcVars=00000100 {V11}, gcrefRegs=00000001 {eax}, byrefRegs=00000004 {edx}, gcvars, byref, isz - movzx ecx, word ptr [edx+2*edi] - cmp ecx, 255 - jg SHORT G_M159_IG05 - cmp byte ptr [eax], al - lea ebx, bword ptr [eax+0x04] - ; byrRegs +[ebx] - mov edx, ecx - ; byrRegs -[edx] - sar edx, 5 - mov esi, 1 - shl esi, cl - lea edx, bword ptr [ebx+4*edx]
+G_M159_IG03: ; bbWeight=4, gcVars=00000100 {V11}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz + mov dword ptr [ebp-0x10], eax + movzx edx, word ptr [edi+2*eax] + mov dword ptr [ebp-0x14], edx + cmp edx, 255 + jg SHORT G_M159_IG07 + mov ecx, esi + ; gcrRegs +[ecx] + cmp byte ptr [ecx], cl + lea ecx, bword ptr [esi+0x04] + ; gcrRegs -[ecx] + ; byrRegs +[ecx] + mov bword ptr [ebp-0x1C], ecx + ; GC ptr vars +{V07} + cmp edx, 256 + jl SHORT G_M159_IG05 + ;; size=36 bbWeight=4 PerfScore 45.00 +G_M159_IG04: ; bbWeight=2, gcVars=00000108 {V07 V11}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref + ; byrRegs -[ecx edi] + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=16 bbWeight=2 PerfScore 7.00 +G_M159_IG05: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov edx, dword ptr [ebp-0x14] + mov edi, edx + sar edi, 5 + mov ebx, 1 + mov ecx, edx + shl ebx, cl + mov ecx, bword ptr [ebp-0x1C] + ; byrRegs +[ecx] + lea edx, bword ptr [ecx+4*edi]
; byrRegs +[edx]
- or dword ptr [edx], esi - inc edi - mov esi, dword ptr [ebp-0x10] - cmp edi, esi - mov edx, bword ptr [ebp-0x14]
+ or dword ptr [edx], ebx + mov eax, dword ptr [ebp-0x10] + inc eax + mov ebx, dword ptr [ebp-0x18] + cmp eax, ebx + mov edi, bword ptr [ebp-0x20] + ; byrRegs +[edi]
jl SHORT G_M159_IG03
- ;; size=45 bbWeight=4 PerfScore 67.00 -G_M159_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc - ; gcrRegs -[eax] - ; byrRegs -[edx ebx] - ; GC ptr vars -{V11}
+ ;; size=39 bbWeight=4 PerfScore 53.00 +G_M159_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc + ; gcrRegs -[esi] + ; byrRegs -[ecx edx edi] + ; GC ptr vars -{V07 V11}
lea esp, [ebp-0x0C] pop ebx pop esi @@ -77,11 +102,11 @@ G_M159_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byr pop ebp ret 8 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M159_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M159_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 91, prolog size 11, PerfScore 81.75, instruction count 38, allocated bytes for code 91 (MethodHash=05e2ff60) for method System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
+Total bytes of code 137, prolog size 11, PerfScore 119.75, instruction count 51, allocated bytes for code 137 (MethodHash=05e2ff60) for method System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
; ============================================================

libraries_tests.run.windows.x86.Release.mch

-26 (-28.89%) : 64319.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)

@@ -7,11 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> ecx class-hnd single-def <System.String> -; V01 arg1 [V01,T03] ( 7, 5 ) int -> edx single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> esi -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> edi -; V04 cse0 [V04,T04] ( 6, 6.54) int -> eax "CSE - aggressive"
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> ecx class-hnd single-def <System.String> +; V01 arg1 [V01,T04] ( 6, 4.50) int -> edx single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> esi +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> edi +; V04 cse0 [V04,T01] ( 5, 10.50) int -> eax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -37,72 +37,51 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ecx] mov esi, edx
- test edx, edx - jl SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz + cmp esi, eax + jae SHORT G_M3357_IG13
movzx edi, word ptr [ecx+2*esi+0x08] cmp edi, 32 je SHORT G_M3357_IG08
- ;; size=10 bbWeight=3.96 PerfScore 12.87 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=14 bbWeight=4 PerfScore 18.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
cmp edi, 9
- jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=1.98 PerfScore 2.48 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M3357_IG11 + ;; size=5 bbWeight=2 PerfScore 2.50 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
inc esi cmp eax, esi jg SHORT G_M3357_IG06
- ;; size=5 bbWeight=3.96 PerfScore 5.94 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] - jmp SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ecx] - cmp esi, eax - jae SHORT G_M3357_IG17 - movzx edi, word ptr [ecx+2*esi+0x08] - cmp edi, 32 - je SHORT G_M3357_IG12 - ;; size=14 bbWeight=0.04 PerfScore 0.18 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - cmp edi, 9 - jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=0.02 PerfScore 0.03 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - inc esi - cmp eax, esi - jg SHORT G_M3357_IG10 - ;; size=5 bbWeight=0.04 PerfScore 0.06 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=5 bbWeight=4 PerfScore 6.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx] sub eax, edx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
mov eax, esi sub eax, edx ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 90, prolog size 5, PerfScore 34.05, instruction count 47, allocated bytes for code 90 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)
+Total bytes of code 64, prolog size 5, PerfScore 37.38, instruction count 36, allocated bytes for code 64 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)
; ============================================================

-26 (-28.89%) : 319212.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)

@@ -7,11 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> ecx class-hnd single-def <System.String> -; V01 arg1 [V01,T03] ( 7, 5 ) int -> edx single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> esi -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> edi -; V04 cse0 [V04,T04] ( 6, 6.54) int -> eax "CSE - aggressive"
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> ecx class-hnd single-def <System.String> +; V01 arg1 [V01,T04] ( 6, 4.50) int -> edx single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> esi +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> edi +; V04 cse0 [V04,T01] ( 5, 10.50) int -> eax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -37,72 +37,51 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ecx] mov esi, edx
- test edx, edx - jl SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz + cmp esi, eax + jae SHORT G_M3357_IG13
movzx edi, word ptr [ecx+2*esi+0x08] cmp edi, 32 je SHORT G_M3357_IG08
- ;; size=10 bbWeight=3.96 PerfScore 12.87 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=14 bbWeight=4 PerfScore 18.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
cmp edi, 9
- jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=1.98 PerfScore 2.48 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M3357_IG11 + ;; size=5 bbWeight=2 PerfScore 2.50 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
inc esi cmp eax, esi jg SHORT G_M3357_IG06
- ;; size=5 bbWeight=3.96 PerfScore 5.94 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] - jmp SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ecx] - cmp esi, eax - jae SHORT G_M3357_IG17 - movzx edi, word ptr [ecx+2*esi+0x08] - cmp edi, 32 - je SHORT G_M3357_IG12 - ;; size=14 bbWeight=0.04 PerfScore 0.18 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - cmp edi, 9 - jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=0.02 PerfScore 0.03 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - inc esi - cmp eax, esi - jg SHORT G_M3357_IG10 - ;; size=5 bbWeight=0.04 PerfScore 0.06 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=5 bbWeight=4 PerfScore 6.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx] sub eax, edx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
mov eax, esi sub eax, edx ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 90, prolog size 5, PerfScore 34.05, instruction count 47, allocated bytes for code 90 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)
+Total bytes of code 64, prolog size 5, PerfScore 37.38, instruction count 36, allocated bytes for code 64 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (Tier0-FullOpts)
; ============================================================

-34 (-7.47%) : 323250.dasm - System.Net.Http.Headers.WarningHeaderValue:TryReadAgent(System.String,byref,byref):ubyte (Tier1)

@@ -9,13 +9,13 @@ ; 5 inlinees with PGO data; 10 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 7, 12.31) ref -> esi class-hnd single-def <System.String>
+; V00 arg0 [V00,T03] ( 6, 12.31) ref -> esi class-hnd single-def <System.String>
; V01 arg1 [V01,T04] ( 10, 9.31) byref -> edi single-def ; V02 arg2 [V02,T21] ( 2, 1.92) byref -> [ebp+0x08] single-def ;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref single-def ;* V04 loc1 [V04 ] ( 0, 0 ) int -> zero-ref single-def ; V05 tmp0 [V05,T13] ( 5, 3.81) int -> registers "Inline return value spill temp"
-; V06 tmp1 [V06,T06] ( 5, 10 ) int -> ecx "Inlining Arg"
+; V06 tmp1 [V06,T05] ( 5, 10 ) int -> ecx "Inlining Arg"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ushort]> ; V08 tmp3 [V08,T15] ( 8, 3.52) int -> ebx single-def "Inline stloc first use temp" ;* V09 tmp4 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -39,10 +39,10 @@ ;* V27 tmp22 [V27 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V28 tmp23 [V28 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V30 tmp25 [V30,T10] ( 5, 4.62) int -> eax "Inline return value spill temp" -; V31 tmp26 [V31,T05] ( 6, 11.08) int -> ecx "Inlining Arg" -; V32 tmp27 [V32,T00] ( 11, 31.46) int -> eax "Inline stloc first use temp" -; V33 tmp28 [V33,T01] ( 6, 18.46) ushort -> edx "Inline stloc first use temp"
+; V30 tmp25 [V30,T10] ( 5, 4.62) int -> ecx "Inline return value spill temp" +; V31 tmp26 [V31,T06] ( 5, 9.23) int -> eax "Inlining Arg" +; V32 tmp27 [V32,T00] ( 7, 38.77) int -> ecx "Inline stloc first use temp" +; V33 tmp28 [V33,T02] ( 3, 18.46) ushort -> edx "Inline stloc first use temp"
; V34 tmp29 [V34,T16] ( 5, 3.34) byref -> [ebp-0x20] "field V07._reference (fldOffset=0x0)" P-INDEP ; V35 tmp30 [V35,T11] ( 6, 4.28) int -> [ebp-0x10] "field V07._length (fldOffset=0x4)" P-INDEP ; V36 tmp31 [V36,T17] ( 4, 2.50) byref -> [ebp-0x24] spill-single-def "field V09._reference (fldOffset=0x0)" P-INDEP @@ -66,7 +66,7 @@ ;* V54 tmp49 [V54 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP ;* V55 tmp50 [V55 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x4)" P-INDEP ; V56 tmp51 [V56,T14] ( 2, 3.69) int -> edx "argument with side effect"
-; V57 cse0 [V57,T03] ( 10, 14.07) int -> [ebp-0x18] spill-single-def "CSE - aggressive"
+; V57 cse0 [V57,T01] ( 9, 21.38) int -> [ebp-0x18] spill-single-def "CSE - aggressive"
; ; Lcl frame size = 24 @@ -94,8 +94,8 @@ G_M24478_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000088 mov eax, dword ptr [esi+0x04] mov dword ptr [ebp-0x18], eax cmp eax, ecx
- jle G_M24478_IG22 - jb G_M24478_IG31
+ jle G_M24478_IG23 + jb G_M24478_IG27
lea edx, bword ptr [esi+2*ecx+0x08] ; byrRegs +[edx] mov bword ptr [ebp-0x1C], edx @@ -119,7 +119,7 @@ G_M24478_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000088 mov ebx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ebx] test ebx, ebx
- je G_M24478_IG32
+ je G_M24478_IG28
add ebx, 4 ; gcrRegs -[ebx] ; byrRegs +[ebx] @@ -149,7 +149,7 @@ G_M24478_IG04: ; bbWeight=0.97, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov ecx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ecx] test ecx, ecx
- je G_M24478_IG32
+ je G_M24478_IG28
add ecx, 4 ; gcrRegs -[ecx] ; byrRegs +[ecx] @@ -183,12 +183,12 @@ G_M24478_IG06: ; bbWeight=0.92, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; gcrRegs -[eax] ; byrRegs -[edx] add dword ptr [edi], ebx
- mov ecx, dword ptr [edi]
+ mov eax, dword ptr [edi]
mov ebx, dword ptr [ebp-0x18]
- cmp ebx, ecx
+ cmp ebx, eax
jg SHORT G_M24478_IG09
- xor eax, eax - jmp G_M24478_IG27
+ xor ecx, ecx + jmp G_M24478_IG21
;; size=37 bbWeight=0.92 PerfScore 16.38 G_M24478_IG07: ; bbWeight=0.08, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[esi] @@ -203,31 +203,33 @@ G_M24478_IG08: ; bbWeight=0.08, epilog, nogc, extend pop ebp ret 4 ;; size=10 bbWeight=0.08 PerfScore 0.35
-G_M24478_IG09: ; bbWeight=0.92, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
+G_M24478_IG09: ; bbWeight=0.92, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref
; gcrRegs +[esi] ; byrRegs +[edi]
- mov eax, ecx - test ecx, ecx - jl SHORT G_M24478_IG20 - ;; size=6 bbWeight=0.92 PerfScore 1.38 -G_M24478_IG10: ; bbWeight=7.31, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz - movzx edx, word ptr [esi+2*eax+0x08]
+ mov ecx, eax + ;; size=2 bbWeight=0.92 PerfScore 0.23 +G_M24478_IG10: ; bbWeight=7.38, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz + cmp ecx, ebx + jae G_M24478_IG26 + movzx edx, word ptr [esi+2*ecx+0x08]
cmp edx, 32 je SHORT G_M24478_IG12
- ;; size=10 bbWeight=7.31 PerfScore 23.76 -G_M24478_IG11: ; bbWeight=3.66, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
+ ;; size=18 bbWeight=7.38 PerfScore 33.23 +G_M24478_IG11: ; bbWeight=3.69, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
cmp edx, 9
- jne G_M24478_IG26 - ;; size=9 bbWeight=3.66 PerfScore 4.57 -G_M24478_IG12: ; bbWeight=7.31, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz - inc eax - cmp ebx, eax
+ jne SHORT G_M24478_IG20 + ;; size=5 bbWeight=3.69 PerfScore 4.62 +G_M24478_IG12: ; bbWeight=7.38, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz + inc ecx + cmp ebx, ecx
jg SHORT G_M24478_IG10
- ;; size=5 bbWeight=7.31 PerfScore 10.97
+ ;; size=5 bbWeight=7.38 PerfScore 11.08
G_M24478_IG13: ; bbWeight=0.92, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz ; gcrRegs -[esi]
- jmp SHORT G_M24478_IG25 - ;; size=2 bbWeight=0.92 PerfScore 1.85
+ mov ecx, ebx + sub ecx, eax + jmp SHORT G_M24478_IG21 + ;; size=6 bbWeight=0.92 PerfScore 2.31
G_M24478_IG14: ; bbWeight=0.13, gcVars=00010000 {V34}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz ; gcrRegs +[esi] ; GC ptr vars +{V34} @@ -239,8 +241,8 @@ G_M24478_IG14: ; bbWeight=0.13, gcVars=00010000 {V34}, gcrefRegs=00000040 ; gcr arg pop 1 test eax, eax mov eax, dword ptr [ebp-0x18]
- je SHORT G_M24478_IG22 - mov edx, ebx
+ je SHORT G_M24478_IG23 + mov ecx, ebx
jmp SHORT G_M24478_IG05 ;; size=21 bbWeight=0.13 PerfScore 1.19 G_M24478_IG15: ; bbWeight=0.28, gcVars=00020000 {V36}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz @@ -251,16 +253,16 @@ G_M24478_IG15: ; bbWeight=0.28, gcVars=00020000 {V36}, gcrefRegs=00000040 G_M24478_IG16: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz mov ecx, dword ptr [ebp-0x14] cmp ebx, ecx
- jae G_M24478_IG30
+ jae SHORT G_M24478_IG26
mov edx, bword ptr [ebp-0x24] ; byrRegs +[edx] cmp word ptr [edx+2*ebx], 47 je SHORT G_M24478_IG18
- ;; size=21 bbWeight=0.25 PerfScore 1.82 -G_M24478_IG17: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
+ ;; size=17 bbWeight=0.25 PerfScore 1.82 +G_M24478_IG17: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
; byrRegs -[edx] cmp ebx, ecx
- ja G_M24478_IG33
+ ja SHORT G_M24478_IG29
mov ecx, ebx not ecx shr ecx, 31 @@ -270,63 +272,44 @@ G_M24478_IG17: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov eax, edx ; byrRegs +[eax] jmp G_M24478_IG04
- ;; size=31 bbWeight=0.25 PerfScore 2.08
+ ;; size=27 bbWeight=0.25 PerfScore 2.08
G_M24478_IG18: ; bbWeight=0.13, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz ; byrRegs -[eax edx] ; GC ptr vars -{V36} mov eax, dword ptr [ebp-0x18]
- jmp SHORT G_M24478_IG22
+ jmp SHORT G_M24478_IG23
;; size=5 bbWeight=0.13 PerfScore 0.38 G_M24478_IG19: ; bbWeight=0.14, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz mov eax, dword ptr [ebp-0x18]
- jmp SHORT G_M24478_IG22 - ;; size=5 bbWeight=0.14 PerfScore 0.42 -G_M24478_IG20: ; bbWeight=0.07, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz - cmp eax, ebx - jae SHORT G_M24478_IG30 - movzx edx, word ptr [esi+2*eax+0x08] - cmp edx, 32 - je SHORT G_M24478_IG24 - ;; size=14 bbWeight=0.07 PerfScore 0.33 -G_M24478_IG21: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
jmp SHORT G_M24478_IG23
- ;; size=2 bbWeight=0.04 PerfScore 0.07 -G_M24478_IG22: ; bbWeight=0.03, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
+ ;; size=5 bbWeight=0.14 PerfScore 0.42 +G_M24478_IG20: ; bbWeight=0.92, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref + ; gcrRegs -[esi] + sub ecx, eax + ;; size=2 bbWeight=0.92 PerfScore 0.23 +G_M24478_IG21: ; bbWeight=0.92, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref + add dword ptr [edi], ecx + test ecx, ecx + je G_M24478_IG07 + ;; size=10 bbWeight=0.92 PerfScore 3.92 +G_M24478_IG22: ; bbWeight=0.77, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz + jmp SHORT G_M24478_IG24 + ;; size=2 bbWeight=0.77 PerfScore 1.54 +G_M24478_IG23: ; bbWeight=0.03, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref + ; gcrRegs +[esi]
xor edx, edx xor ecx, ecx mov ebx, ecx jmp G_M24478_IG05 ;; size=11 bbWeight=0.03 PerfScore 0.07
-G_M24478_IG23: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz - cmp edx, 9 - jne SHORT G_M24478_IG26 - ;; size=5 bbWeight=0.04 PerfScore 0.05 -G_M24478_IG24: ; bbWeight=0.07, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz - inc eax - cmp ebx, eax - jg SHORT G_M24478_IG20 - ;; size=5 bbWeight=0.07 PerfScore 0.11 -G_M24478_IG25: ; bbWeight=0.92, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
+G_M24478_IG24: ; bbWeight=0.77, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
; gcrRegs -[esi]
- mov eax, ebx - sub eax, ecx - jmp SHORT G_M24478_IG27 - ;; size=6 bbWeight=0.92 PerfScore 2.31 -G_M24478_IG26: ; bbWeight=0.92, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref - sub eax, ecx - ;; size=2 bbWeight=0.92 PerfScore 0.23 -G_M24478_IG27: ; bbWeight=0.92, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref - add dword ptr [edi], eax - test eax, eax - je G_M24478_IG07 - ;; size=10 bbWeight=0.92 PerfScore 3.92 -G_M24478_IG28: ; bbWeight=0.77, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
mov eax, dword ptr [ebp-0x18] cmp dword ptr [edi], eax je G_M24478_IG07 mov eax, 1 ;; size=16 bbWeight=0.77 PerfScore 4.04
-G_M24478_IG29: ; bbWeight=0.77, epilog, nogc, extend
+G_M24478_IG25: ; bbWeight=0.77, epilog, nogc, extend
lea esp, [ebp-0x0C] ...

+29 (+3.94%) : 432489.dasm - System.Collections.Generic.ArraySortHelper1[int]:IntroSort(System.Span1[int],int,System.Comparison`1[int]) (Tier1)

@@ -12,7 +12,7 @@ ; V00 arg0 [V00,T17] ( 9, 3.79) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[int]> ; V01 arg1 [V01,T11] ( 7, 7.60) int -> edi ; V02 arg2 [V02,T08] ( 17, 39.69) ref -> [ebp-0x2C] class-hnd single-def <System.Comparison`1[int]>
-; V03 loc0 [V03,T09] ( 15, 14.39) int -> [ebp-0x10]
+; V03 loc0 [V03,T09] ( 16, 15.28) int -> [ebp-0x10]
; V04 loc1 [V04,T20] ( 3, 3.68) int -> [ebp-0x14] spill-single-def ; V05 loc2 [V05,T15] ( 5, 4.48) int -> ecx ;* V06 tmp0 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[int]> @@ -38,12 +38,12 @@ ;* V26 tmp20 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ; V27 tmp21 [V27,T26] ( 2, 0 ) byref -> edi single-def "Inlining Arg" ;* V28 tmp22 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V29 tmp23 [V29,T21] ( 2, 3.58) byref -> ecx "Inlining Arg"
+; V29 tmp23 [V29,T21] ( 2, 3.58) byref -> [ebp-0x30] spill-single-def "Inlining Arg"
;* V30 tmp24 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V31 tmp25 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V32 tmp26 [V32,T12] ( 4, 9.18) int -> [ebp-0x24] spill-single-def "Inlining Arg" ;* V33 tmp27 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V34 tmp28 [V34,T14] ( 2, 5.58) byref -> [ebp-0x30] spill-single-def "Inlining Arg"
+; V34 tmp28 [V34,T14] ( 2, 5.58) byref -> [ebp-0x34] spill-single-def "Inlining Arg"
;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V36 tmp30 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V37 tmp31 [V37 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP @@ -68,7 +68,7 @@ ; V56 tmp50 [V56,T02] ( 4,126.32) ref -> eax "argument with side effect" ; V57 cse0 [V57,T10] ( 4, 10.26) int -> [ebp-0x28] spill-single-def "CSE - moderate" ;
-; Lcl frame size = 36
+; Lcl frame size = 40
G_M15629_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -76,7 +76,7 @@ G_M15629_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 36
+ sub esp, 40
mov edi, ecx mov esi, edx ; gcrRegs +[esi] @@ -115,25 +115,43 @@ G_M15629_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 G_M15629_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref mov eax, ebx cmp ebx, 1
- jle G_M15629_IG34
+ jle G_M15629_IG36
;; size=11 bbWeight=1 PerfScore 1.50 G_M15629_IG06: ; bbWeight=1.89, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref cmp eax, 16
- jle G_M15629_IG15
+ jle G_M15629_IG17
;; size=9 bbWeight=1.89 PerfScore 2.37 G_M15629_IG07: ; bbWeight=0.89, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref test edi, edi
- je G_M15629_IG40
+ je G_M15629_IG42
;; size=8 bbWeight=0.89 PerfScore 1.12 G_M15629_IG08: ; bbWeight=0.90, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref dec edi cmp eax, ebx
- ja G_M15629_IG41
+ ja G_M15629_IG43
;; size=9 bbWeight=0.90 PerfScore 1.36
-G_M15629_IG09: ; bbWeight=0.89, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - mov ecx, bword ptr [ebp+0x08] - ; byrRegs +[ecx]
+G_M15629_IG09: ; bbWeight=0.89, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov edx, bword ptr [ebp+0x08] + ; byrRegs +[edx] + mov bword ptr [ebp-0x30], edx + ; GC ptr vars +{V29}
mov dword ptr [ebp-0x10], eax
+ test eax, eax + jge SHORT G_M15629_IG11 + ;; size=13 bbWeight=0.89 PerfScore 3.80 +G_M15629_IG10: ; bbWeight=3.58, gcVars=00200000 {V29}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref + ; byrRegs -[edx] + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=16 bbWeight=3.58 PerfScore 12.53 +G_M15629_IG11: ; bbWeight=0.89, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + mov ecx, bword ptr [ebp-0x30] + ; byrRegs +[ecx] + mov eax, dword ptr [ebp-0x10]
mov edx, eax push edx push ecx @@ -141,6 +159,7 @@ G_M15629_IG09: ; bbWeight=0.89, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov ecx, esi ; gcrRegs +[ecx] ; byrRegs -[ecx]
+ ; GC ptr vars -{V29}
call [<unknown method>] ; gcrRegs -[ecx] ; gcr arg pop 1 @@ -150,24 +169,24 @@ G_M15629_IG09: ; bbWeight=0.89, gcrefRegs=00000040 {esi}, byrefRegs=00000 sub edx, ecx mov dword ptr [ebp-0x24], edx cmp ecx, ebx
- ja G_M15629_IG41
+ ja G_M15629_IG43
;; size=40 bbWeight=0.89 PerfScore 11.18
-G_M15629_IG10: ; bbWeight=0.90, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M15629_IG12: ; bbWeight=0.90, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov eax, ebx sub eax, ecx cmp eax, edx
- jb G_M15629_IG41
+ jb G_M15629_IG43
;; size=12 bbWeight=0.90 PerfScore 1.58
-G_M15629_IG11: ; bbWeight=0.89, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M15629_IG13: ; bbWeight=0.89, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov eax, bword ptr [ebp+0x08] ; byrRegs +[eax] lea eax, bword ptr [eax+4*ecx]
- mov bword ptr [ebp-0x30], eax
+ mov bword ptr [ebp-0x34], eax
; GC ptr vars +{V34} test edx, edx
- jge SHORT G_M15629_IG13
+ jge SHORT G_M15629_IG15
;; size=13 bbWeight=0.89 PerfScore 3.36
-G_M15629_IG12: ; bbWeight=3.58, gcVars=00004000 {V34}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M15629_IG14: ; bbWeight=3.58, gcVars=00004000 {V34}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[eax] mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] @@ -176,8 +195,8 @@ G_M15629_IG12: ; bbWeight=3.58, gcVars=00004000 {V34}, gcrefRegs=00000040 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=16 bbWeight=3.58 PerfScore 12.53
-G_M15629_IG13: ; bbWeight=1.89, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - mov ecx, bword ptr [ebp-0x30]
+G_M15629_IG15: ; bbWeight=1.89, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + mov ecx, bword ptr [ebp-0x34]
; byrRegs +[ecx] mov edx, dword ptr [ebp-0x24] push edx @@ -196,27 +215,27 @@ G_M15629_IG13: ; bbWeight=1.89, gcrefRegs=00000040 {esi}, byrefRegs=00000 cmp eax, 1 jg G_M15629_IG06 ;; size=32 bbWeight=1.89 PerfScore 18.95
-G_M15629_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M15629_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi]
- jmp G_M15629_IG34
+ jmp G_M15629_IG36
;; size=5 bbWeight=1 PerfScore 2.00
-G_M15629_IG15: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M15629_IG17: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi] cmp eax, 2
- je G_M15629_IG37
+ je G_M15629_IG39
cmp eax, 3
- je G_M15629_IG38
+ je G_M15629_IG40
;; size=18 bbWeight=1 PerfScore 2.50
-G_M15629_IG16: ; bbWeight=1.01, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M15629_IG18: ; bbWeight=1.01, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
cmp eax, ebx
- ja G_M15629_IG41
+ ja G_M15629_IG43
;; size=8 bbWeight=1.01 PerfScore 1.26
-G_M15629_IG17: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M15629_IG19: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ebx, bword ptr [ebp+0x08] ; byrRegs +[ebx] mov dword ptr [ebp-0x10], eax test eax, eax
- jge SHORT G_M15629_IG18
+ jge SHORT G_M15629_IG20
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -224,52 +243,52 @@ G_M15629_IG17: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=26 bbWeight=1 PerfScore 6.75
-G_M15629_IG18: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG20: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
mov eax, dword ptr [ebp-0x10] mov edi, eax xor eax, eax lea edx, [edi-0x01] mov dword ptr [ebp-0x28], edx test edx, edx
- jle G_M15629_IG34
+ jle G_M15629_IG36
test esi, esi
- je G_M15629_IG27
+ je G_M15629_IG29
mov gword ptr [ebp-0x2C], esi ; GC ptr vars +{V02} cmp dword ptr [esi+0x0C], 0xD1FFAB1E
- jne SHORT G_M15629_IG20
+ jne SHORT G_M15629_IG22
;; size=41 bbWeight=1 PerfScore 10.50
-G_M15629_IG19: ; bbWeight=8.18, gcVars=00000100 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
+G_M15629_IG21: ; bbWeight=8.18, gcVars=00000100 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
; gcrRegs -[esi] mov ecx, dword ptr [ebx+4*eax+0x04] mov dword ptr [ebp-0x1C], ecx mov dword ptr [ebp-0x18], eax mov edx, eax
- jmp SHORT G_M15629_IG22
+ jmp SHORT G_M15629_IG24
;; size=14 bbWeight=8.18 PerfScore 51.13
-G_M15629_IG20: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG22: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
mov esi, gword ptr [ebp-0x2C] ; gcrRegs +[esi]
- jmp SHORT G_M15629_IG27
+ jmp SHORT G_M15629_IG29
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M15629_IG21: ; bbWeight=25.48, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref
+G_M15629_IG23: ; bbWeight=25.48, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref
; gcrRegs -[esi] mov esi, dword ptr [ebp-0x20] lea ecx, [esi+0x01] cmp ecx, edi
- jae G_M15629_IG36
+ jae G_M15629_IG38
mov ecx, dword ptr [ebx+4*esi] mov dword ptr [ebx+4*esi+0x04], ecx dec esi mov edx, esi ;; size=24 bbWeight=25.48 PerfScore 159.27
-G_M15629_IG22: ; bbWeight=33.58, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG24: ; bbWeight=33.58, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
test edx, edx
- jl SHORT G_M15629_IG25
+ jl SHORT G_M15629_IG27
;; size=4 bbWeight=33.58 PerfScore 41.98
-G_M15629_IG23: ; bbWeight=31.26, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG25: ; bbWeight=31.26, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
cmp edx, edi
- jae G_M15629_IG36
+ jae G_M15629_IG38
mov dword ptr [ebp-0x20], edx mov esi, dword ptr [ebx+4*edx] mov eax, gword ptr [ebp-0x2C] @@ -282,44 +301,44 @@ G_M15629_IG23: ; bbWeight=31.26, gcrefRegs=00000000 {}, byrefRegs=0000000 call [System.Linq.EnumerableSorter`2[System.__Canon,System.__Canon]:CompareAnyKeys(int,int):int:this] ...

+47 (+7.57%) : 773.dasm - System.Collections.Generic.ArraySortHelper1[System.ValueTuple2[ushort,ushort]]:IntroSort(System.Span1[System.ValueTuple2[ushort,ushort]],int,System.Comparison1[System.ValueTuple2[ushort,ushort]]) (Instrumented Tier1)

@@ -10,8 +10,8 @@ ; ; V00 arg0 [V00,T16] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[System.ValueTuple`2[ushort,ushort]]> ; V01 arg1 [V01,T02] ( 7, 8.50) int -> edi
-; V02 arg2 [V02,T00] ( 15, 9 ) ref -> esi class-hnd single-def <System.Comparison`1[System.ValueTuple`2[ushort,ushort]]> -; V03 loc0 [V03,T01] ( 14, 11 ) int -> [ebp-0x10]
+; V02 arg2 [V02,T01] ( 15, 9 ) ref -> esi class-hnd single-def <System.Comparison`1[System.ValueTuple`2[ushort,ushort]]> +; V03 loc0 [V03,T00] ( 16, 12 ) int -> [ebp-0x10]
; V04 loc1 [V04,T17] ( 3, 1.50) int -> [ebp-0x14] spill-single-def ; V05 loc2 [V05,T14] ( 5, 2.50) int -> ecx ;* V06 tmp0 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[System.ValueTuple`2[ushort,ushort]]> @@ -151,14 +151,14 @@ G_M22846_IG08: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000008 mov eax, dword ptr [ebp-0x20] mov edx, eax cmp eax, 1
- jle G_M22846_IG13
+ jle G_M22846_IG15
;; size=14 bbWeight=1 PerfScore 2.50 G_M22846_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref mov dword ptr [ebp-0x10], edx cmp edx, 16
- jle G_M22846_IG14
+ jle G_M22846_IG16
test edi, edi
- je G_M22846_IG20
+ je G_M22846_IG22
;; size=20 bbWeight=4 PerfScore 14.00 G_M22846_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz mov ecx, 0xD1FFAB1E @@ -167,8 +167,21 @@ G_M22846_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov eax, dword ptr [ebp-0x10] mov edx, dword ptr [ebp-0x20] cmp eax, edx
- ja G_M22846_IG23
+ ja G_M22846_IG26
mov dword ptr [ebp-0x10], eax
+ test eax, eax + jge SHORT G_M22846_IG12 + ;; size=32 bbWeight=0.50 PerfScore 3.50 +G_M22846_IG11: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=16 bbWeight=2 PerfScore 7.00 +G_M22846_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz + mov eax, dword ptr [ebp-0x10]
mov ecx, eax push ecx push ebx @@ -183,18 +196,18 @@ G_M22846_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov dword ptr [ebp-0x18], edx mov eax, dword ptr [ebp-0x20] cmp ecx, eax
- ja G_M22846_IG23
+ ja G_M22846_IG26
sub eax, ecx cmp eax, edx
- jb G_M22846_IG23
+ jb G_M22846_IG26
lea eax, bword ptr [ebx+4*ecx] ; byrRegs +[eax] mov bword ptr [ebp-0x24], eax ; GC ptr vars +{V37} test edx, edx
- jge SHORT G_M22846_IG12 - ;; size=85 bbWeight=0.50 PerfScore 10.75 -G_M22846_IG11: ; bbWeight=2, gcVars=0000000000008000 {V37}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref
+ jge SHORT G_M22846_IG14 + ;; size=60 bbWeight=0.50 PerfScore 8.38 +G_M22846_IG13: ; bbWeight=2, gcVars=0000000000008000 {V37}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref
; byrRegs -[eax] mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] @@ -203,7 +216,7 @@ G_M22846_IG11: ; bbWeight=2, gcVars=0000000000008000 {V37}, gcrefRegs=000 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=16 bbWeight=2 PerfScore 7.00
-G_M22846_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
+G_M22846_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
mov ecx, bword ptr [ebp-0x24] ; byrRegs +[ecx] mov edx, dword ptr [ebp-0x18] @@ -222,19 +235,19 @@ G_M22846_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov edx, eax jg G_M22846_IG09 ;; size=34 bbWeight=0.50 PerfScore 5.12
-G_M22846_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M22846_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi] ; byrRegs -[ebx] mov ecx, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32
- jmp G_M22846_IG21
+ jmp G_M22846_IG24
;; size=15 bbWeight=0.50 PerfScore 1.62
-G_M22846_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M22846_IG16: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[esi] ; byrRegs +[ebx] mov edx, dword ptr [ebp-0x10] cmp edx, 2
- jne SHORT G_M22846_IG15
+ jne SHORT G_M22846_IG17
mov ecx, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 mov edi, ebx @@ -251,7 +264,7 @@ G_M22846_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; gcrRegs -[ecx esi] ; byrRegs -[eax] test eax, eax
- jle G_M22846_IG21
+ jle G_M22846_IG24
movzx ecx, word ptr [ebx] movzx eax, word ptr [ebx+0x02] mov ebx, bword ptr [ebp-0x28] @@ -259,15 +272,15 @@ G_M22846_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov dword ptr [edi], edx mov word ptr [ebx], cx mov word ptr [ebx+0x02], ax
- jmp G_M22846_IG21
+ jmp G_M22846_IG24
;; size=70 bbWeight=0.50 PerfScore 13.75
-G_M22846_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
+G_M22846_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
; gcrRegs +[esi] ; byrRegs -[edi] ; GC ptr vars -{V82} mov dword ptr [ebp-0x10], edx cmp edx, 3
- jne G_M22846_IG18
+ jne G_M22846_IG20
mov ecx, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 mov edi, ebx @@ -287,7 +300,7 @@ G_M22846_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs -[ecx] ; byrRegs -[eax] test eax, eax
- jle SHORT G_M22846_IG16
+ jle SHORT G_M22846_IG18
movzx ecx, word ptr [ebx] movzx eax, word ptr [ebx+0x02] mov word ptr [ebp-0x1C], ax @@ -302,11 +315,11 @@ G_M22846_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 movzx ecx, word ptr [ebp-0x1C] mov word ptr [eax+0x02], cx ;; size=80 bbWeight=0.50 PerfScore 14.50
-G_M22846_IG16: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000088 {ebx edi}, byref, isz
+G_M22846_IG18: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000088 {ebx edi}, byref, isz
; byrRegs -[eax edx] push dword ptr [edi] cmp dword ptr [ebp-0x20], 2
- jbe G_M22846_IG22
+ jbe G_M22846_IG25
lea eax, bword ptr [ebx+0x08] ; byrRegs +[eax] mov bword ptr [ebp-0x2C], eax @@ -318,7 +331,7 @@ G_M22846_IG16: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; gcrRegs -[ecx] ; byrRegs -[eax] test eax, eax
- jle SHORT G_M22846_IG17
+ jle SHORT G_M22846_IG19
movzx ecx, word ptr [ebx] movzx eax, word ptr [ebx+0x02] mov ebx, bword ptr [ebp-0x2C] @@ -329,7 +342,7 @@ G_M22846_IG16: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov word ptr [edx], cx mov word ptr [edx+0x02], ax ;; size=53 bbWeight=0.50 PerfScore 12.50
-G_M22846_IG17: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M22846_IG19: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; byrRegs -[edx ebx edi] mov edi, bword ptr [ebp-0x28] ; byrRegs +[edi] @@ -343,7 +356,7 @@ G_M22846_IG17: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [esi+0x0C]<unknown method> ; gcrRegs -[ecx esi] test eax, eax
- jle SHORT G_M22846_IG21
+ jle G_M22846_IG24
mov ecx, edi ; byrRegs +[ecx] movzx eax, word ptr [ecx] @@ -353,9 +366,9 @@ G_M22846_IG17: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov dword ptr [edi], edx mov word ptr [ebx], ax mov word ptr [ebx+0x02], cx
- jmp SHORT G_M22846_IG21 - ;; size=42 bbWeight=0.50 PerfScore 11.75 -G_M22846_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
+ jmp SHORT G_M22846_IG24 + ;; size=46 bbWeight=0.50 PerfScore 11.75 +G_M22846_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
; gcrRegs +[esi] ; byrRegs -[edi] ; GC ptr vars -{V83} @@ -364,9 +377,9 @@ G_M22846_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 mov edi, dword ptr [ebp-0x10] mov eax, dword ptr [ebp-0x20] cmp edi, eax
- ja SHORT G_M22846_IG23
+ ja SHORT G_M22846_IG26
test edi, edi
- jge SHORT G_M22846_IG19
+ jge SHORT G_M22846_IG21
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -374,7 +387,7 @@ G_M22846_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=40 bbWeight=0.50 PerfScore 4.62
-G_M22846_IG19: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M22846_IG21: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
mov ecx, edi push ecx push ebx @@ -383,9 +396,9 @@ G_M22846_IG19: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [System.Collections.Generic.ArraySortHelper`1[System.ValueTuple`2[ushort,ushort]]:InsertionSort(System.Span`1[System.ValueTuple`2[ushort,ushort]],System.Comparison`1[System.ValueTuple`2[ushort,ushort]])] ; gcrRegs -[ecx esi] ; byrRegs -[ebx]
- jmp SHORT G_M22846_IG21
+ jmp SHORT G_M22846_IG24
;; size=14 bbWeight=0.50 PerfScore 3.75
-G_M22846_IG20: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M22846_IG22: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[esi] ; byrRegs +[ebx] mov ecx, 0xD1FFAB1E @@ -393,7 +406,17 @@ G_M22846_IG20: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov edi, dword ptr [ebp-0x10] mov ecx, dword ptr [ebp-0x20] cmp edi, ecx
- ja SHORT G_M22846_IG23
+ ja SHORT G_M22846_IG26 + test edi, edi + jge SHORT G_M22846_IG23 + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=40 bbWeight=0.50 PerfScore 4.62 +G_M22846_IG23: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
mov ecx, ebx ...

+43 (+8.02%) : 3687.dasm - System.Collections.Generic.ArraySortHelper1[int]:IntroSort(System.Span1[int],int,System.Comparison`1[int]) (Instrumented Tier1)

@@ -11,7 +11,7 @@ ; V00 arg0 [V00,T08] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[int]> ; V01 arg1 [V01,T03] ( 7, 8.51) int -> edi ; V02 arg2 [V02,T02] ( 15, 9 ) ref -> esi class-hnd single-def <System.Comparison`1[int]>
-; V03 loc0 [V03,T01] ( 14, 11.02) int -> [ebp-0x10]
+; V03 loc0 [V03,T01] ( 16, 12.02) int -> [ebp-0x10]
; V04 loc1 [V04,T13] ( 3, 1.50) int -> [ebp-0x14] spill-single-def ; V05 loc2 [V05,T06] ( 5, 2.51) int -> ecx ;* V06 tmp0 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[int]> @@ -136,14 +136,14 @@ G_M15629_IG08: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000008 mov eax, dword ptr [ebp-0x1C] mov edx, eax cmp eax, 1
- jle G_M15629_IG16
+ jle G_M15629_IG18
;; size=14 bbWeight=1 PerfScore 2.50 G_M15629_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref mov dword ptr [ebp-0x10], edx cmp edx, 16
- jle G_M15629_IG17
+ jle G_M15629_IG19
test edi, edi
- je G_M15629_IG24
+ je G_M15629_IG26
;; size=20 bbWeight=4 PerfScore 14.00 G_M15629_IG10: ; bbWeight=0.51, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref mov ecx, 0xD1FFAB1E @@ -152,10 +152,23 @@ G_M15629_IG10: ; bbWeight=0.51, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov eax, dword ptr [ebp-0x10] mov edx, dword ptr [ebp-0x1C] cmp eax, edx
- ja G_M15629_IG28
+ ja G_M15629_IG31
;; size=25 bbWeight=0.51 PerfScore 2.40
-G_M15629_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
+G_M15629_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
mov dword ptr [ebp-0x10], eax
+ test eax, eax + jge SHORT G_M15629_IG13 + ;; size=7 bbWeight=0.50 PerfScore 1.12 +G_M15629_IG12: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=16 bbWeight=2 PerfScore 7.00 +G_M15629_IG13: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref + mov eax, dword ptr [ebp-0x10]
mov ecx, eax push ecx push ebx @@ -170,22 +183,22 @@ G_M15629_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov dword ptr [ebp-0x18], edx mov eax, dword ptr [ebp-0x1C] cmp ecx, eax
- ja G_M15629_IG28
+ ja G_M15629_IG31
;; size=40 bbWeight=0.50 PerfScore 6.25
-G_M15629_IG12: ; bbWeight=0.51, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
+G_M15629_IG14: ; bbWeight=0.51, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
sub eax, ecx cmp eax, edx
- jb G_M15629_IG28
+ jb G_M15629_IG31
;; size=10 bbWeight=0.51 PerfScore 0.76
-G_M15629_IG13: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
lea eax, bword ptr [ebx+4*ecx] ; byrRegs +[eax] mov bword ptr [ebp-0x20], eax ; GC ptr vars +{V37} test edx, edx
- jge SHORT G_M15629_IG15
+ jge SHORT G_M15629_IG17
;; size=10 bbWeight=0.50 PerfScore 1.38
-G_M15629_IG14: ; bbWeight=2, gcVars=00000080 {V37}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref
+G_M15629_IG16: ; bbWeight=2, gcVars=00000080 {V37}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref
; byrRegs -[eax] mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] @@ -194,7 +207,7 @@ G_M15629_IG14: ; bbWeight=2, gcVars=00000080 {V37}, gcrefRegs=00000040 {e call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=16 bbWeight=2 PerfScore 7.00
-G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
+G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
mov ecx, bword ptr [ebp-0x20] ; byrRegs +[ecx] mov edx, dword ptr [ebp-0x18] @@ -213,19 +226,19 @@ G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov edx, eax jg G_M15629_IG09 ;; size=34 bbWeight=0.50 PerfScore 5.12
-G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi] ; byrRegs -[ebx] mov ecx, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32
- jmp G_M15629_IG26
+ jmp G_M15629_IG29
;; size=15 bbWeight=0.50 PerfScore 1.62
-G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[esi] ; byrRegs +[ebx] mov edx, dword ptr [ebp-0x10] cmp edx, 2
- jne SHORT G_M15629_IG18
+ jne SHORT G_M15629_IG20
mov ecx, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 mov edx, dword ptr [ebx] @@ -235,18 +248,18 @@ G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [esi+0x0C]<unknown method> ; gcrRegs -[ecx esi] test eax, eax
- jle G_M15629_IG26
+ jle G_M15629_IG29
mov ecx, dword ptr [ebx] mov eax, dword ptr [ebx+0x04] mov dword ptr [ebx], eax mov dword ptr [ebx+0x04], ecx
- jmp G_M15629_IG26
+ jmp G_M15629_IG29
;; size=52 bbWeight=0.50 PerfScore 10.88
-G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG20: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[esi] mov dword ptr [ebp-0x10], edx cmp edx, 3
- jne SHORT G_M15629_IG21
+ jne SHORT G_M15629_IG23
mov ecx, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 mov edx, dword ptr [ebx] @@ -256,29 +269,29 @@ G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [esi+0x0C]<unknown method> ; gcrRegs -[ecx] test eax, eax
- jle SHORT G_M15629_IG19
+ jle SHORT G_M15629_IG21
mov edx, dword ptr [ebx] mov ecx, dword ptr [ebx+0x04] mov dword ptr [ebx], ecx mov dword ptr [ebx+0x04], edx ;; size=43 bbWeight=0.50 PerfScore 9.88
-G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG21: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
mov edx, dword ptr [ebx] cmp dword ptr [ebp-0x1C], 2
- jbe G_M15629_IG27
+ jbe G_M15629_IG30
push dword ptr [ebx+0x08] mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] call [esi+0x0C]<unknown method> ; gcrRegs -[ecx] test eax, eax
- jle SHORT G_M15629_IG20
+ jle SHORT G_M15629_IG22
mov edx, dword ptr [ebx] mov ecx, dword ptr [ebx+0x08] mov dword ptr [ebx], ecx mov dword ptr [ebx+0x08], edx ;; size=35 bbWeight=0.50 PerfScore 9.62
-G_M15629_IG20: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG22: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
mov edx, dword ptr [ebx+0x04] push dword ptr [ebx+0x08] mov ecx, gword ptr [esi+0x04] @@ -286,25 +299,25 @@ G_M15629_IG20: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [esi+0x0C]<unknown method> ; gcrRegs -[ecx esi] test eax, eax
- jle SHORT G_M15629_IG26
+ jle SHORT G_M15629_IG29
mov ecx, dword ptr [ebx+0x04] mov eax, dword ptr [ebx+0x08] mov dword ptr [ebx+0x04], eax mov dword ptr [ebx+0x08], ecx
- jmp SHORT G_M15629_IG26
+ jmp SHORT G_M15629_IG29
;; size=30 bbWeight=0.50 PerfScore 9.12
-G_M15629_IG21: ; bbWeight=0.51, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG23: ; bbWeight=0.51, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[esi] mov ecx, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 mov edi, dword ptr [ebp-0x10] mov eax, dword ptr [ebp-0x1C] cmp edi, eax
- ja SHORT G_M15629_IG28
+ ja SHORT G_M15629_IG31
;; size=20 bbWeight=0.51 PerfScore 2.27
-G_M15629_IG22: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG24: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
test edi, edi
- jge SHORT G_M15629_IG23
+ jge SHORT G_M15629_IG25
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -312,7 +325,7 @@ G_M15629_IG22: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=20 bbWeight=0.50 PerfScore 2.38
-G_M15629_IG23: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG25: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
mov ecx, edi push ecx push ebx @@ -321,9 +334,9 @@ G_M15629_IG23: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [System.Collections.Generic.ArraySortHelper`1[int]:InsertionSort(System.Span`1[int],System.Comparison`1[int])] ; gcrRegs -[ecx esi] ; byrRegs -[ebx]
- jmp SHORT G_M15629_IG26
+ jmp SHORT G_M15629_IG29
;; size=14 bbWeight=0.50 PerfScore 3.75
-G_M15629_IG24: ; bbWeight=0.51, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG26: ; bbWeight=0.51, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[esi] ; byrRegs +[ebx] mov ecx, 0xD1FFAB1E @@ -331,9 +344,19 @@ G_M15629_IG24: ; bbWeight=0.51, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov edi, dword ptr [ebp-0x10] mov ecx, dword ptr [ebp-0x1C] cmp edi, ecx
- ja SHORT G_M15629_IG28
+ ja SHORT G_M15629_IG31
;; size=20 bbWeight=0.51 PerfScore 2.27
-G_M15629_IG25: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
+G_M15629_IG27: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz + test edi, edi + jge SHORT G_M15629_IG28 + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=20 bbWeight=0.50 PerfScore 2.38 +G_M15629_IG28: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
mov ecx, ebx ; byrRegs +[ecx] mov eax, edi @@ -346,7 +369,7 @@ G_M15629_IG25: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; gcrRegs -[ecx esi] ...

librariestestsnotieredcompilation.run.windows.x86.Release.mch

-26 (-28.89%) : 20607.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,11 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> ecx class-hnd single-def <System.String> -; V01 arg1 [V01,T03] ( 7, 5 ) int -> edx single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> esi -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> edi -; V04 cse0 [V04,T04] ( 6, 6.54) int -> eax "CSE - aggressive"
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> ecx class-hnd single-def <System.String> +; V01 arg1 [V01,T04] ( 6, 4.50) int -> edx single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> esi +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> edi +; V04 cse0 [V04,T01] ( 5, 10.50) int -> eax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -37,72 +37,51 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ecx] mov esi, edx
- test edx, edx - jl SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz + cmp esi, eax + jae SHORT G_M3357_IG13
movzx edi, word ptr [ecx+2*esi+0x08] cmp edi, 32 je SHORT G_M3357_IG08
- ;; size=10 bbWeight=3.96 PerfScore 12.87 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=14 bbWeight=4 PerfScore 18.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
cmp edi, 9
- jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=1.98 PerfScore 2.48 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M3357_IG11 + ;; size=5 bbWeight=2 PerfScore 2.50 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
inc esi cmp eax, esi jg SHORT G_M3357_IG06
- ;; size=5 bbWeight=3.96 PerfScore 5.94 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] - jmp SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ecx] - cmp esi, eax - jae SHORT G_M3357_IG17 - movzx edi, word ptr [ecx+2*esi+0x08] - cmp edi, 32 - je SHORT G_M3357_IG12 - ;; size=14 bbWeight=0.04 PerfScore 0.18 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - cmp edi, 9 - jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=0.02 PerfScore 0.03 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - inc esi - cmp eax, esi - jg SHORT G_M3357_IG10 - ;; size=5 bbWeight=0.04 PerfScore 0.06 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=5 bbWeight=4 PerfScore 6.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx] sub eax, edx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
mov eax, esi sub eax, edx ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 90, prolog size 5, PerfScore 34.05, instruction count 47, allocated bytes for code 90 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 64, prolog size 5, PerfScore 37.38, instruction count 36, allocated bytes for code 64 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================

-26 (-28.89%) : 152699.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,11 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> ecx class-hnd single-def <System.String> -; V01 arg1 [V01,T03] ( 7, 5 ) int -> edx single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> esi -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> edi -; V04 cse0 [V04,T04] ( 6, 6.54) int -> eax "CSE - aggressive"
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> ecx class-hnd single-def <System.String> +; V01 arg1 [V01,T04] ( 6, 4.50) int -> edx single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> esi +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> edi +; V04 cse0 [V04,T01] ( 5, 10.50) int -> eax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -37,72 +37,51 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ecx] mov esi, edx
- test edx, edx - jl SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz + cmp esi, eax + jae SHORT G_M3357_IG13
movzx edi, word ptr [ecx+2*esi+0x08] cmp edi, 32 je SHORT G_M3357_IG08
- ;; size=10 bbWeight=3.96 PerfScore 12.87 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=14 bbWeight=4 PerfScore 18.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
cmp edi, 9
- jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=1.98 PerfScore 2.48 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M3357_IG11 + ;; size=5 bbWeight=2 PerfScore 2.50 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
inc esi cmp eax, esi jg SHORT G_M3357_IG06
- ;; size=5 bbWeight=3.96 PerfScore 5.94 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] - jmp SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ecx] - cmp esi, eax - jae SHORT G_M3357_IG17 - movzx edi, word ptr [ecx+2*esi+0x08] - cmp edi, 32 - je SHORT G_M3357_IG12 - ;; size=14 bbWeight=0.04 PerfScore 0.18 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - cmp edi, 9 - jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=0.02 PerfScore 0.03 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - inc esi - cmp eax, esi - jg SHORT G_M3357_IG10 - ;; size=5 bbWeight=0.04 PerfScore 0.06 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=5 bbWeight=4 PerfScore 6.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx] sub eax, edx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
mov eax, esi sub eax, edx ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 90, prolog size 5, PerfScore 34.05, instruction count 47, allocated bytes for code 90 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 64, prolog size 5, PerfScore 37.38, instruction count 36, allocated bytes for code 64 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================

-23 (-2.37%) : 186746.dasm - System.Reflection.Metadata.Ecma335.ControlFlowBuilder:CopyCodeAndFixupBranches(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.BlobBuilder):this (FullOpts)

@@ -8,20 +8,20 @@ ; 3 inlinees with PGO data; 25 single block inlinees; 11 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T20] ( 6, 43 ) ref -> [ebp-0x7C] this class-hnd single-def <System.Reflection.Metadata.Ecma335.ControlFlowBuilder>
+; V00 this [V00,T20] ( 6, 43 ) ref -> [ebp-0x74] this class-hnd single-def <System.Reflection.Metadata.Ecma335.ControlFlowBuilder>
; V01 arg1 [V01,T40] ( 3, 3 ) ref -> ecx class-hnd single-def <System.Reflection.Metadata.BlobBuilder> ; V02 arg2 [V02,T01] ( 13,128 ) ref -> ebx class-hnd single-def <System.Reflection.Metadata.BlobBuilder> ; V03 loc0 [V03 ] ( 11,113 ) struct (20) [ebp-0x34] do-not-enreg[XSF] addr-exposed ld-addr-op <System.Reflection.Metadata.Ecma335.ControlFlowBuilder+BranchInfo>
-; V04 loc1 [V04,T08] ( 7, 73 ) int -> [ebp-0x38] -; V05 loc2 [V05,T04] ( 6, 81 ) int -> [ebp-0x3C] -; V06 loc3 [V06,T00] ( 16,204.97) int -> [ebp-0x40]
+; V04 loc1 [V04,T07] ( 7, 73 ) int -> edi +; V05 loc2 [V05,T04] ( 6, 81 ) int -> [ebp-0x38] +; V06 loc3 [V06,T00] ( 16,196.97) int -> [ebp-0x3C]
;* V07 loc4 [V07 ] ( 0, 0 ) struct (12) zero-ref do-not-enreg[SF] ld-addr-op <System.Reflection.Metadata.BlobBuilder+Blobs>
-; V08 loc5 [V08 ] ( 4, 4 ) struct (12) [ebp-0x4C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Metadata.BlobBuilder+Blobs>
+; V08 loc5 [V08 ] ( 4, 4 ) struct (12) [ebp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Metadata.BlobBuilder+Blobs>
;* V09 loc6 [V09 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op <System.Reflection.Metadata.Blob>
-; V10 loc7 [V10,T02] ( 7,103.97) int -> [ebp-0x50] spill-single-def
+; V10 loc7 [V10,T02] ( 7,103.97) int -> [ebp-0x4C] spill-single-def
;* V11 loc8 [V11 ] ( 0, 0 ) int -> zero-ref
-; V12 loc9 [V12,T27] ( 2, 32 ) ubyte -> [ebp-0x54] spill-single-def -; V13 loc10 [V13,T23] ( 3, 32 ) int -> [ebp-0x58] spill-single-def
+; V12 loc9 [V12,T27] ( 2, 32 ) ubyte -> [ebp-0x50] spill-single-def +; V13 loc10 [V13,T23] ( 3, 32 ) int -> [ebp-0x54] spill-single-def
;* V14 loc11 [V14 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Reflection.Metadata.Ecma335.LabelHandle> ; V15 tmp0 [V15,T05] ( 3, 75.77) int -> ecx "impAppendStmt" ;* V16 tmp1 [V16 ] ( 0, 0 ) struct (20) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.Ecma335.ControlFlowBuilder+BranchInfo> @@ -29,11 +29,11 @@ ;* V18 tmp3 [V18 ] ( 0, 0 ) struct (12) zero-ref "Inline return value spill temp" <System.Reflection.Metadata.Blob> ;* V19 tmp4 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Metadata.BlobBuilder> ;* V20 tmp5 [V20 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Reflection.Metadata.Blob>
-; V21 tmp6 [V21,T33] ( 2, 8 ) ref -> [ebp-0x80] class-hnd spill-single-def "impAppendStmt" <ubyte[]>
+; V21 tmp6 [V21,T33] ( 2, 8 ) ref -> [ebp-0x78] class-hnd spill-single-def "impAppendStmt" <ubyte[]>
;* V22 tmp7 [V22 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.Blob>
-; V23 tmp8 [V23,T34] ( 2, 8 ) int -> [ebp-0x5C] spill-single-def "Inlining Arg"
+; V23 tmp8 [V23,T34] ( 2, 8 ) int -> [ebp-0x58] spill-single-def "Inlining Arg"
; V24 tmp9 [V24,T31] ( 3, 24 ) int -> eax "Inline return value spill temp"
-; V25 tmp10 [V25,T09] ( 3, 68.23) int -> eax "Inlining Arg"
+; V25 tmp10 [V25,T08] ( 3, 68.23) int -> eax "Inlining Arg"
;* V26 tmp11 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> ;* V27 tmp12 [V27 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]> ;* V28 tmp13 [V28 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]> @@ -41,12 +41,12 @@ ;* V30 tmp15 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V31 tmp16 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> ;* V32 tmp17 [V32 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V33 tmp18 [V33,T11] ( 2, 64 ) int -> [ebp-0x60] spill-single-def "Inlining Arg" -; V34 tmp19 [V34,T10] ( 2, 64 ) byref -> [ebp-0x84] spill-single-def "Inlining Arg"
+; V33 tmp18 [V33,T11] ( 2, 64 ) int -> [ebp-0x5C] spill-single-def "Inlining Arg" +; V34 tmp19 [V34,T10] ( 2, 64 ) byref -> [ebp-0x7C] spill-single-def "Inlining Arg"
;* V35 tmp20 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V36 tmp21 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V37 tmp22 [V37,T21] ( 5, 42 ) int -> [ebp-0x64] "Inline return value spill temp" -; V38 tmp23 [V38,T06] ( 3, 75.77) int -> ecx "Inlining Arg"
+; V37 tmp22 [V37,T21] ( 5, 42 ) int -> [ebp-0x60] "Inline return value spill temp" +; V38 tmp23 [V38,T06] ( 3, 75.77) int -> edx "Inlining Arg"
;* V39 tmp24 [V39 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" ;* V40 tmp25 [V40 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V41 tmp26 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -61,35 +61,35 @@ ;* V50 tmp35 [V50 ] ( 0, 0 ) int -> zero-ref ;* V51 tmp36 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Reflection.Metadata.Ecma335.ControlFlowBuilder+BranchInfo]> ;* V52 tmp37 [V52 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Reflection.Metadata.Ecma335.LabelHandle>
-; V53 tmp38 [V53,T24] ( 2, 32 ) ref -> [ebp-0x88] class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Reflection.Metadata.Ecma335.ControlFlowBuilder+BranchInfo]>
+; V53 tmp38 [V53,T24] ( 2, 32 ) ref -> edx class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Reflection.Metadata.Ecma335.ControlFlowBuilder+BranchInfo]>
;* V54 tmp39 [V54,T35] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V55 tmp40 [V55,T07] ( 6, 73.97) ref -> [ebp-0x8C] spill-single-def "field V09.Buffer (fldOffset=0x0)" P-INDEP
+; V55 tmp40 [V55,T09] ( 6, 65.97) ref -> [ebp-0x80] spill-single-def "field V09.Buffer (fldOffset=0x0)" P-INDEP
;* V56 tmp41 [V56 ] ( 0, 0 ) int -> zero-ref "field V09.Start (fldOffset=0x4)" P-INDEP
-; V57 tmp42 [V57,T12] ( 4, 50 ) int -> [ebp-0x68] spill-single-def "field V09.<Length>k__BackingField (fldOffset=0x8)" P-INDEP
+; V57 tmp42 [V57,T12] ( 4, 50 ) int -> [ebp-0x64] spill-single-def "field V09.<Length>k__BackingField (fldOffset=0x8)" P-INDEP
;* V58 tmp43 [V58 ] ( 0, 0 ) int -> zero-ref "field V14.<Id>k__BackingField (fldOffset=0x0)" P-INDEP
-; V59 tmp44 [V59,T37] ( 3, 6 ) ref -> [ebp-0x90] "field V18.Buffer (fldOffset=0x0)" P-INDEP
+; V59 tmp44 [V59,T37] ( 3, 6 ) ref -> [ebp-0x84] "field V18.Buffer (fldOffset=0x0)" P-INDEP
;* V60 tmp45 [V60 ] ( 0, 0 ) int -> zero-ref "field V18.Start (fldOffset=0x4)" P-INDEP
-; V61 tmp46 [V61,T39] ( 3, 6 ) int -> [ebp-0x6C] "field V18.<Length>k__BackingField (fldOffset=0x8)" P-INDEP
+; V61 tmp46 [V61,T39] ( 3, 6 ) int -> [ebp-0x68] "field V18.<Length>k__BackingField (fldOffset=0x8)" P-INDEP
;* V62 tmp47 [V62 ] ( 0, 0 ) ref -> zero-ref "field V20.Buffer (fldOffset=0x0)" P-INDEP ;* V63 tmp48 [V63 ] ( 0, 0 ) int -> zero-ref "field V20.Start (fldOffset=0x4)" P-INDEP ;* V64 tmp49 [V64 ] ( 0, 0 ) int -> zero-ref "field V20.<Length>k__BackingField (fldOffset=0x8)" P-INDEP
-; V65 tmp50 [V65,T42] ( 2, 4 ) ref -> [ebp-0x94] spill-single-def "field V22.Buffer (fldOffset=0x0)" P-INDEP
+; V65 tmp50 [V65,T42] ( 2, 4 ) ref -> [ebp-0x88] spill-single-def "field V22.Buffer (fldOffset=0x0)" P-INDEP
;* V66 tmp51 [V66 ] ( 0, 0 ) int -> zero-ref "field V22.Start (fldOffset=0x4)" P-INDEP
-; V67 tmp52 [V67,T43] ( 2, 4 ) int -> [ebp-0x70] spill-single-def "field V22.<Length>k__BackingField (fldOffset=0x8)" P-INDEP
+; V67 tmp52 [V67,T43] ( 2, 4 ) int -> [ebp-0x6C] spill-single-def "field V22.<Length>k__BackingField (fldOffset=0x8)" P-INDEP
;* V68 tmp53 [V68 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp54 [V69 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x4)" P-INDEP ;* V70 tmp55 [V70 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP ;* V71 tmp56 [V71 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP
-; V72 tmp57 [V72,T25] ( 2, 32 ) byref -> [ebp-0x98] spill-single-def "field V30._reference (fldOffset=0x0)" P-INDEP -; V73 tmp58 [V73,T28] ( 2, 32 ) int -> [ebp-0x74] spill-single-def "field V30._length (fldOffset=0x4)" P-INDEP
+; V72 tmp57 [V72,T25] ( 2, 32 ) byref -> [ebp-0x8C] spill-single-def "field V30._reference (fldOffset=0x0)" P-INDEP +; V73 tmp58 [V73,T28] ( 2, 32 ) int -> [ebp-0x70] spill-single-def "field V30._length (fldOffset=0x4)" P-INDEP
;* V74 tmp59 [V74 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V75 tmp60 [V75 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x4)" P-INDEP
-; V76 tmp61 [V76,T26] ( 2, 32 ) byref -> [ebp-0x9C] spill-single-def "field V32._reference (fldOffset=0x0)" P-INDEP
+; V76 tmp61 [V76,T26] ( 2, 32 ) byref -> [ebp-0x90] spill-single-def "field V32._reference (fldOffset=0x0)" P-INDEP
; V77 tmp62 [V77,T29] ( 2, 32 ) int -> ecx "field V32._length (fldOffset=0x4)" P-INDEP ;* V78 tmp63 [V78 ] ( 0, 0 ) int -> zero-ref "field V52.<Id>k__BackingField (fldOffset=0x0)" P-INDEP
-; V79 tmp64 [V79,T32] ( 4, 15 ) ref -> [ebp-0xA0] spill-single-def "V07.[000..004)" -; V80 tmp65 [V80,T41] ( 3, 9 ) ref -> [ebp-0xA4] "V07.[004..008)" -; V81 tmp66 [V81,T30] ( 9, 29 ) ref -> [ebp-0xA8] "V07.[008..012)"
+; V79 tmp64 [V79,T32] ( 4, 15 ) ref -> [ebp-0x94] spill-single-def "V07.[000..004)" +; V80 tmp65 [V80,T41] ( 3, 9 ) ref -> [ebp-0x98] "V07.[004..008)" +; V81 tmp66 [V81,T30] ( 9, 29 ) ref -> [ebp-0x9C] "V07.[008..012)"
;* V82 tmp67 [V82 ] ( 0, 0 ) int -> zero-ref "V16.[000..004)" ;* V83 tmp68 [V83 ] ( 0, 0 ) int -> zero-ref "V16.[004..008)" ;* V84 tmp69 [V84 ] ( 0, 0 ) int -> zero-ref "V16.[008..012)" @@ -98,13 +98,13 @@ ; V87 tmp72 [V87,T38] ( 3, 6 ) ref -> edx single-def "arr expr" ; V88 tmp73 [V88,T15] ( 3, 48 ) ref -> ecx "arr expr" ; V89 tmp74 [V89,T16] ( 3, 48 ) ref -> ecx "arr expr"
-; V90 tmp75 [V90,T17] ( 3, 48 ) ref -> eax "arr expr"
+; V90 tmp75 [V90,T17] ( 3, 48 ) ref -> edx "arr expr"
; V91 EHSlots [V91 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"
-; V92 cse0 [V92,T22] ( 3, 40 ) int -> [ebp-0x78] spill-single-def "CSE - conservative"
+; V92 cse0 [V92,T22] ( 3, 40 ) int -> eax "CSE - conservative"
; V93 rat0 [V93,T18] ( 3, 48 ) int -> ecx "ReplaceWithLclVar is creating a new local variable" ; V94 rat1 [V94,T19] ( 3, 48 ) int -> ecx "ReplaceWithLclVar is creating a new local variable" ;
-; Lcl frame size = 156
+; Lcl frame size = 144
G_M21190_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -112,12 +112,12 @@ G_M21190_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 156
+ sub esp, 144
vzeroupper xor eax, eax
- mov dword ptr [ebp-0x4C], eax
mov dword ptr [ebp-0x48], eax mov dword ptr [ebp-0x44], eax
+ mov dword ptr [ebp-0x40], eax
mov dword ptr [ebp-0x18], eax mov esi, ecx ; gcrRegs +[esi] @@ -127,40 +127,39 @@ G_M21190_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[ebx] ;; size=36 bbWeight=1 PerfScore 11.25 G_M21190_IG02: ; bbWeight=1, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref
- mov gword ptr [ebp-0x7C], esi
+ mov gword ptr [ebp-0x74], esi
; GC ptr vars +{V00} mov edx, gword ptr [esi+0x04] ; gcrRegs +[edx] cmp dword ptr [edx+0x08], 0
- je G_M21190_IG38
+ je G_M21190_IG39
mov edx, gword ptr [edx+0x04] cmp dword ptr [edx+0x04], 0
- jbe G_M21190_IG32
+ jbe G_M21190_IG33
vmovdqu xmm0, xmmword ptr [edx+0x08] vmovdqu xmmword ptr [ebp-0x34], xmm0 mov eax, dword ptr [edx+0x18] mov dword ptr [ebp-0x24], eax xor edi, edi
- mov dword ptr [ebp-0x38], edi
xor eax, eax
- mov dword ptr [ebp-0x3C], eax
+ mov dword ptr [ebp-0x38], eax
xor edx, edx ; gcrRegs -[edx]
- mov dword ptr [ebp-0x40], edx - lea edx, [ebp-0x4C]
+ mov dword ptr [ebp-0x3C], edx + lea edx, [ebp-0x48]
cmp dword ptr [ecx], ecx call [System.Reflection.Metadata.BlobBuilder:GetBlobs():System.Reflection.Metadata.BlobBuilder+Blobs:this] ; gcrRegs -[ecx esi]
- mov eax, gword ptr [ebp-0x4C]
+ mov eax, gword ptr [ebp-0x48]
; gcrRegs +[eax]
- mov gword ptr [ebp-0xA0], eax
+ mov gword ptr [ebp-0x94], eax
; GC ptr vars +{V79}
- mov edx, gword ptr [ebp-0x48]
+ mov edx, gword ptr [ebp-0x44]
; gcrRegs +[edx]
- mov ecx, gword ptr [ebp-0x44]
+ mov ecx, gword ptr [ebp-0x40]
; gcrRegs +[ecx]
- jmp G_M21190_IG27 - ;; size=91 bbWeight=1 PerfScore 37.25
+ jmp G_M21190_IG28 + ;; size=88 bbWeight=1 PerfScore 36.25
G_M21190_IG03: ; bbWeight=2, gcVars=0000020100100000 {V00 V79 V80}, gcrefRegs=0000000B {eax ecx ebx}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[edx] ; GC ptr vars +{V80} @@ -168,144 +167,159 @@ G_M21190_IG03: ; bbWeight=2, gcVars=0000020100100000 {V00 V79 V80}, gcref je SHORT G_M21190_IG04 mov edx, gword ptr [ecx+0x08] ; gcrRegs +[edx]
- mov gword ptr [ebp-0x80], edx
+ mov gword ptr [ebp-0x78], edx
; GC ptr vars +{V21}
- mov gword ptr [ebp-0xA8], ecx
+ mov gword ptr [ebp-0x9C], ecx
; GC ptr vars +{V81} mov edx, dword ptr [ecx+0x10] ; gcrRegs -[edx] and edx, 0xD1FFAB1E
- mov dword ptr [ebp-0x5C], edx - mov edx, gword ptr [ebp-0x80]
+ mov dword ptr [ebp-0x58], edx + mov edx, gword ptr [ebp-0x78]
; gcrRegs +[edx]
- mov gword ptr [ebp-0x94], edx
+ mov gword ptr [ebp-0x88], edx
; GC ptr vars +{V65}
- mov edx, dword ptr [ebp-0x5C] - ; gcrRegs -[edx] - mov dword ptr [ebp-0x70], edx - mov edx, gword ptr [ebp-0x94] - ; gcrRegs +[edx] - mov gword ptr [ebp-0x90], edx - ; GC ptr vars +{V59} - mov edx, dword ptr [ebp-0x70]
+ mov edx, dword ptr [ebp-0x58]
; gcrRegs -[edx] mov dword ptr [ebp-0x6C], edx
+ mov edx, gword ptr [ebp-0x88] + ; gcrRegs +[edx] + mov gword ptr [ebp-0x84], edx + ; GC ptr vars +{V59} + mov edx, dword ptr [ebp-0x6C] + ; gcrRegs -[edx] + mov dword ptr [ebp-0x68], edx
jmp SHORT G_M21190_IG05 ;; size=63 bbWeight=2 PerfScore 37.00 G_M21190_IG04: ; bbWeight=2, gcrefRegs=0000000B {eax ecx ebx}, byrefRegs=00000000 {}, byref ; GC ptr vars -{V21 V59 V65 V81} xor edx, edx ; gcrRegs +[edx]
- mov gword ptr [ebp-0x90], edx
+ mov gword ptr [ebp-0x84], edx
; GC ptr vars +{V59} xor edx, edx ; gcrRegs -[edx]
- mov dword ptr [ebp-0x6C], edx - mov gword ptr [ebp-0xA8], ecx
+ mov dword ptr [ebp-0x68], edx + mov gword ptr [ebp-0x9C], ecx
; GC ptr vars +{V81} ...

+12 (+3.70%) : 18405.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndexSystem.__Canon:System.Nullable`1int

@@ -10,7 +10,7 @@ ; ; V00 RetBuf [V00,T11] ( 7, 4.50) byref -> [ebp-0x20] single-def ;* V01 arg0 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V02 arg1 [V02,T01] ( 6, 14 ) ref -> esi class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
+; V02 arg1 [V02,T02] ( 6, 14 ) ref -> esi class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
; V03 arg2 [V03,T07] ( 4, 8 ) ref -> [ebp+0x0C] class-hnd single-def <System.Func`3[System.__Canon,System.__Canon,int]> ;* V04 TypeCtx [V04 ] ( 0, 0 ) int -> zero-ref single-def ;* V05 loc0 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]> @@ -19,7 +19,7 @@ ; V08 loc3 [V08,T00] ( 6, 18.50) int -> [ebp-0x10] ; V09 loc4 [V09,T03] ( 4, 12 ) ref -> edi class-hnd <System.__Canon> ; V10 loc5 [V10,T08] ( 4, 8 ) int -> eax
-; V11 loc6 [V11,T02] ( 6, 12.50) int -> edi
+; V11 loc6 [V11,T01] ( 7, 17 ) int -> edi
; V12 loc7 [V12,T12] ( 3, 6 ) ref -> [ebp-0x24] class-hnd spill-single-def <System.__Canon> ; V13 loc8 [V13,T13] ( 3, 6 ) int -> eax ;* V14 loc9 [V14 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" @@ -28,7 +28,7 @@ ;* V17 tmp3 [V17 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V18 tmp4 [V18,T10] ( 3, 7 ) ref -> [ebp+0x10] single-def "field V01.array (fldOffset=0x0)" P-INDEP ; V19 tmp5 [V19,T09] ( 6, 7.50) ubyte -> [ebp-0x14] "field V05.hasValue (fldOffset=0x0)" P-INDEP
-; V20 tmp6 [V20,T04] ( 5, 9 ) int -> [ebp-0x18] "field V05.value (fldOffset=0x4)" P-INDEP
+; V20 tmp6 [V20,T04] ( 6, 9.50) int -> [ebp-0x18] "field V05.value (fldOffset=0x4)" P-INDEP
;* V21 tmp7 [V21 ] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP ;* V22 tmp8 [V22 ] ( 0, 0 ) int -> zero-ref "field V07.value (fldOffset=0x4)" P-INDEP ; V23 cse0 [V23,T06] ( 5, 8.50) int -> [ebp-0x1C] spill-single-def "CSE - moderate" @@ -180,11 +180,12 @@ G_M52223_IG15: ; bbWeight=2, gcVars=00000800 {V00}, gcrefRegs=00000048 {e ;; size=7 bbWeight=2 PerfScore 4.50 G_M52223_IG16: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz xor edi, edi
- jmp SHORT G_M52223_IG19 - ;; size=4 bbWeight=0.50 PerfScore 1.12
+ cmp edi, dword ptr [ebp-0x18] + jge SHORT G_M52223_IG22 + ;; size=7 bbWeight=0.50 PerfScore 1.62
G_M52223_IG17: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz cmp edi, edx
- jae SHORT G_M52223_IG24
+ jae SHORT G_M52223_IG25
mov edx, gword ptr [ebp+0x10] ; gcrRegs +[edx] mov edx, gword ptr [edx+4*edi+0x08] @@ -210,26 +211,24 @@ G_M52223_IG17: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000 test eax, eax je SHORT G_M52223_IG18 cmp eax, 3
- jne SHORT G_M52223_IG22
+ jne SHORT G_M52223_IG23
;; size=50 bbWeight=2 PerfScore 44.50
-G_M52223_IG18: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+G_M52223_IG18: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
inc edi
+ mov eax, dword ptr [ebp-0x18] + cmp edi, eax
mov edx, dword ptr [ebp-0x1C]
- ;; size=4 bbWeight=2 PerfScore 2.50 -G_M52223_IG19: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - cmp edi, dword ptr [ebp-0x18] - jl SHORT G_M52223_IG17 - ;; size=5 bbWeight=4 PerfScore 12.00 -G_M52223_IG20: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jl SHORT G_M52223_IG21 + ;; size=11 bbWeight=4 PerfScore 14.00 +G_M52223_IG19: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx esi] mov edi, bword ptr [ebp-0x20] ; byrRegs +[edi]
- movzx ecx, byte ptr [ebp-0x14] - mov byte ptr [edi], cl - mov eax, dword ptr [ebp-0x18]
+ movzx ebx, byte ptr [ebp-0x14] + mov byte ptr [edi], bl
mov dword ptr [edi+0x04], eax
- ;; size=15 bbWeight=0.50 PerfScore 2.50 -G_M52223_IG21: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M52223_IG20: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -237,15 +236,25 @@ G_M52223_IG21: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 12 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M52223_IG22: ; bbWeight=0.50, gcVars=00000800 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M52223_IG21: ; bbWeight=2, gcVars=00000800 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[ebx esi]
; byrRegs -[edi]
+ mov dword ptr [ebp-0x18], eax + jmp SHORT G_M52223_IG17 + ;; size=5 bbWeight=2 PerfScore 6.00 +G_M52223_IG22: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ebx esi] + mov eax, dword ptr [ebp-0x18] + jmp SHORT G_M52223_IG19 + ;; size=5 bbWeight=0.25 PerfScore 0.75 +G_M52223_IG23: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor eax, eax mov edi, bword ptr [ebp-0x20] ; byrRegs +[edi] mov dword ptr [edi], eax mov dword ptr [edi+0x04], eax ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M52223_IG23: ; bbWeight=0.50, epilog, nogc, extend
+G_M52223_IG24: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -253,13 +262,13 @@ G_M52223_IG23: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 12 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M52223_IG24: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M52223_IG25: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[edi] ; GC ptr vars -{V00} call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 324, prolog size 9, PerfScore 202.00, instruction count 136, allocated bytes for code 324 (MethodHash=aba93400) for method Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndex[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,int]):System.Nullable`1[int] (FullOpts)
+Total bytes of code 336, prolog size 9, PerfScore 208.25, instruction count 141, allocated bytes for code 336 (MethodHash=aba93400) for method Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndex[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,int]):System.Nullable`1[int] (FullOpts)
; ============================================================

+9 (+3.85%) : 132611.dasm - System.IO.Packaging.ContentType:ValidateCarriageReturns(System.String) (FullOpts)

@@ -8,30 +8,31 @@ ; 1 inlinees with PGO data; 12 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 7, 14 ) ref -> esi class-hnd single-def <System.String>
+; V00 arg0 [V00,T03] ( 7, 14 ) ref -> esi class-hnd single-def <System.String>
; V01 loc0 [V01,T00] ( 9, 26 ) int -> eax
-; V02 tmp0 [V02,T03] ( 3, 24 ) int -> eax "dup spill" -; V03 tmp1 [V03,T17] ( 3, 0 ) ref -> esi class-hnd exact "NewObj constructor temp" <<unknown class>> -; V04 tmp2 [V04,T11] ( 2, 4 ) ushort -> edx "Inlining Arg" -; V05 tmp3 [V05,T13] ( 3, 3 ) byref -> ecx single-def "Inlining Arg" -; V06 tmp4 [V06,T14] ( 3, 3 ) int -> eax "Inlining Arg"
+; V02 tmp0 [V02,T02] ( 3, 24 ) int -> eax "dup spill" +; V03 tmp1 [V03,T18] ( 3, 0 ) ref -> esi class-hnd exact "NewObj constructor temp" <<unknown class>> +; V04 tmp2 [V04,T12] ( 2, 4 ) ushort -> edx "Inlining Arg" +; V05 tmp3 [V05,T14] ( 3, 3 ) byref -> ecx single-def "Inlining Arg" +; V06 tmp4 [V06,T15] ( 3, 3 ) int -> eax "Inlining Arg"
;* V07 tmp5 [V07 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
-; V08 tmp6 [V08,T15] ( 3, 1.50) int -> eax "Inline return value spill temp" -; V09 tmp7 [V09,T10] ( 4, 5 ) short -> edx ld-addr-op "Inlining Arg"
+; V08 tmp6 [V08,T16] ( 3, 1.50) int -> eax "Inline return value spill temp" +; V09 tmp7 [V09,T11] ( 4, 5 ) short -> edx ld-addr-op "Inlining Arg"
;* V10 tmp8 [V10 ] ( 0, 0 ) short -> zero-ref ld-addr-op "Inlining Arg" ;* V11 tmp9 [V11 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ; V12 tmp10 [V12,T05] ( 2, 16 ) ushort -> edx "Inlining Arg"
-; V13 tmp11 [V13,T09] ( 3, 6 ) ref -> edx single-def "arr expr"
+; V13 tmp11 [V13,T10] ( 3, 6 ) ref -> edx single-def "arr expr"
; V14 tmp12 [V14,T01] ( 3, 24 ) ref -> ebx "arr expr"
-;* V15 tmp13 [V15,T12] ( 0, 0 ) ref -> zero-ref "arr expr" -; V16 tmp14 [V16,T18] ( 2, 0 ) ref -> edx "argument with side effect" -; V17 tmp15 [V17,T02] ( 3, 24 ) ref -> edx "arr expr" -; V18 cse0 [V18,T06] ( 3, 12 ) ref -> edx "CSE - moderate" -;* V19 cse1 [V19,T16] ( 0, 0 ) int -> zero-ref "CSE - moderate" -; V20 cse2 [V20,T08] ( 3, 10 ) int -> ebx "CSE - moderate"
+;* V15 tmp13 [V15,T13] ( 0, 0 ) ref -> zero-ref "arr expr" +; V16 tmp14 [V16,T19] ( 2, 0 ) ref -> edx "argument with side effect" +; V17 tmp15 [V17,T04] ( 2, 16 ) ref -> ecx "arr expr" +; V18 cse0 [V18,T06] ( 3, 12 ) ref -> [ebp-0x10] spill-single-def "CSE - moderate" +;* V19 cse1 [V19,T17] ( 0, 0 ) int -> zero-ref "CSE - moderate" +; V20 cse2 [V20,T09] ( 3, 10 ) int -> ebx "CSE - moderate"
; V21 cse3 [V21,T07] ( 5, 12 ) int -> edi "CSE - moderate"
+; V22 cse4 [V22,T08] ( 3, 12 ) int -> edx "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M26859_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -39,9 +40,10 @@ G_M26859_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
+ push eax
mov esi, ecx ; gcrRegs +[esi]
- ;; size=8 bbWeight=1 PerfScore 4.50
+ ;; size=9 bbWeight=1 PerfScore 5.50
G_M26859_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref test byte ptr [D1FFAB1EH], 1 ; global ptr je G_M26859_IG12 @@ -87,16 +89,20 @@ G_M26859_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 movzx ecx, word ptr [esi+2*eax+0x06] mov edx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[edx]
+ mov gword ptr [ebp-0x10], edx + ; GC ptr vars +{V18}
mov ebx, edx ; gcrRegs +[ebx]
- cmp dword ptr [ebx+0x04], 1
+ mov edx, dword ptr [ebx+0x04] + ; gcrRegs -[edx] + cmp edx, 1
jbe SHORT G_M26859_IG11 movzx ebx, word ptr [ebx+0x0A] ; gcrRegs -[ebx] cmp ecx, ebx je SHORT G_M26859_IG09
- ;; size=34 bbWeight=4 PerfScore 53.00 -G_M26859_IG08: ; bbWeight=2, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=39 bbWeight=4 PerfScore 54.00 +G_M26859_IG08: ; bbWeight=2, gcVars=00000040 {V18}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
lea ecx, [eax+0x01] cmp ecx, edi jae SHORT G_M26859_IG11 @@ -104,31 +110,35 @@ G_M26859_IG08: ; bbWeight=2, gcrefRegs=00000044 {edx esi}, byrefRegs=0000 cmp ecx, ebx jne SHORT G_M26859_IG13 ;; size=16 bbWeight=2 PerfScore 10.00
-G_M26859_IG09: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+G_M26859_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
inc eax
- cmp dword ptr [edx+0x04], 2
+ mov ecx, gword ptr [ebp-0x10] + ; gcrRegs +[ecx] + cmp edx, 2
jbe SHORT G_M26859_IG11
- movzx edx, word ptr [edx+0x0C] - ; gcrRegs -[edx]
+ movzx edx, word ptr [ecx+0x0C]
push eax mov ecx, edi
+ ; gcrRegs -[ecx]
sub ecx, eax push ecx mov ecx, esi ; gcrRegs +[ecx]
+ ; GC ptr vars -{V18}
call [System.String:IndexOf(ushort,int,int):int:this] ; gcrRegs -[ecx] cmp eax, -1 jne SHORT G_M26859_IG07
- ;; size=30 bbWeight=4 PerfScore 53.00
+ ;; size=32 bbWeight=4 PerfScore 46.00
G_M26859_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc ; gcrRegs -[esi]
+ pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=5 bbWeight=1 PerfScore 3.00
+ ;; size=6 bbWeight=1 PerfScore 3.50
G_M26859_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00 @@ -160,6 +170,6 @@ G_M26859_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} int3 ;; size=36 bbWeight=0 PerfScore 0.00
-Total bytes of code 234, prolog size 6, PerfScore 144.62, instruction count 77, allocated bytes for code 234 (MethodHash=5f739714) for method System.IO.Packaging.ContentType:ValidateCarriageReturns(System.String) (FullOpts)
+Total bytes of code 243, prolog size 7, PerfScore 140.12, instruction count 82, allocated bytes for code 243 (MethodHash=5f739714) for method System.IO.Packaging.ContentType:ValidateCarriageReturns(System.String) (FullOpts)
; ============================================================

+18 (+3.93%) : 304886.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[System.__Canon]:<TryFoldAlternation>g__TrySplitConcatSubsumption|53_0(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[System.Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[System.Canon],byref):ubyte (FullOpts)

@@ -8,12 +8,12 @@ ; 1 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 7, 11.50) ref -> [ebp-0x14] class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon]> -; V01 arg1 [V01,T03] ( 6, 14.50) ref -> esi class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]>
+; V00 arg0 [V00,T04] ( 7, 11.50) ref -> [ebp-0x14] class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon]> +; V01 arg1 [V01,T02] ( 6, 14.50) ref -> esi class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]>
; V02 arg2 [V02,T14] ( 1, 1 ) ref -> [ebp+0x10] class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]> ; V03 arg3 [V03,T13] ( 3, 1.50) byref -> [ebp+0x0C] single-def ; V04 TypeCtx [V04,T12] ( 3, 2.20) int -> ecx single-def
-; V05 loc0 [V05,T01] ( 13, 25.82) ref -> [ebp-0x18] class-hnd exact spill-single-def <System.Collections.Generic.List`1[System.__Canon]>
+; V05 loc0 [V05,T01] ( 13, 22 ) ref -> [ebp-0x18] class-hnd exact spill-single-def <System.Collections.Generic.List`1[System.__Canon]>
; V06 loc1 [V06,T00] ( 12, 36.50) ref -> [ebp-0x1C] class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]> ; V07 loc2 [V07,T08] ( 3, 6 ) ref -> [ebp-0x20] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]> ;* V08 tmp1 [V08 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" @@ -23,8 +23,8 @@ ;* V12 tmp5 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V13 tmp6 [V13,T07] ( 3, 9.82) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> ; V14 tmp7 [V14,T06] ( 4, 11.64) int -> ebx "Inline stloc first use temp"
-; V15 tmp8 [V15,T02] ( 3, 19.64) ref -> edx class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]> -; V16 tmp9 [V16,T04] ( 2, 16 ) ref -> ecx "argument with side effect"
+; V15 tmp8 [V15,T05] ( 3, 12 ) ref -> edx class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]> +; V16 tmp9 [V16,T03] ( 2, 16 ) ref -> ecx "argument with side effect"
; V17 rat0 [V17,T11] ( 3, 4 ) int -> edx "runtime lookup" ; V18 rat1 [V18,T10] ( 3, 5.60) int -> edx "fgMakeTemp is creating a new local variable" ; @@ -152,6 +152,8 @@ G_M49898_IG11: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 test eax, eax je G_M49898_IG21 mov bword ptr [ebp+0x0C], ebx
+ mov edi, gword ptr [ebp-0x14] + ; gcrRegs +[edi]
mov eax, gword ptr [ebp-0x1C] ; gcrRegs +[eax] mov edx, gword ptr [eax+0x08] @@ -166,53 +168,60 @@ G_M49898_IG11: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 ; GC ptr vars +{V13} mov ebx, dword ptr [ecx+0x08] ; gcrRegs -[ebx]
- mov edi, gword ptr [ebp-0x24] - ; gcrRegs +[edi] - cmp dword ptr [edi+0x04], ebx
+ mov ecx, gword ptr [ebp-0x24] + cmp dword ptr [ecx+0x04], ebx
jbe SHORT G_M49898_IG15
- ;; size=73 bbWeight=4 PerfScore 135.00 -G_M49898_IG12: ; bbWeight=1.82, gcVars=000000A3 {V00 V05 V06 V13}, gcrefRegs=00000046 {ecx edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax edi] - lea edi, [ebx+0x01] - mov dword ptr [ecx+0x08], edi
+ ;; size=76 bbWeight=4 PerfScore 139.00 +G_M49898_IG12: ; bbWeight=1.82, gcVars=00000083 {V05 V06 V13}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax ecx] + ; GC ptr vars -{V00} + mov gword ptr [ebp-0x14], edi + ; GC ptr vars +{V00} + lea ecx, [ebx+0x01] + mov edi, gword ptr [ebp-0x18] + mov dword ptr [edi+0x08], ecx
push edx mov ecx, gword ptr [ebp-0x24]
+ ; gcrRegs +[ecx]
mov edx, ebx ; gcrRegs -[edx] ; GC ptr vars -{V13} call CORINFO_HELP_ARRADDR_ST ; gcrRegs -[ecx] jmp SHORT G_M49898_IG16
- ;; size=19 bbWeight=1.82 PerfScore 12.28
+ ;; size=25 bbWeight=1.82 PerfScore 15.92
G_M49898_IG13: ; bbWeight=1, gcVars=00000003 {V05 V06}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, gcvars, byref
- ; gcrRegs +[edi]
; byrRegs +[ebx]
- ; GC ptr vars -{V00 V05}
+ ; GC ptr vars -{V00}
mov edx, gword ptr [ebp-0x1C] ; gcrRegs +[edx] jmp G_M49898_IG09 ;; size=8 bbWeight=1 PerfScore 3.00 G_M49898_IG14: ; bbWeight=2, gcVars=00000002 {V05}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000008 {ebx}, gcvars, byref
- ; GC ptr vars -{V06} +{V05}
+ ; GC ptr vars -{V06}
mov gword ptr [ebp-0x1C], edx ; GC ptr vars +{V06} jmp G_M49898_IG08 ;; size=8 bbWeight=2 PerfScore 6.00
-G_M49898_IG15: ; bbWeight=4, gcVars=00000023 {V00 V05 V06}, gcrefRegs=00000046 {ecx edx esi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[edi] +[ecx]
+G_M49898_IG15: ; bbWeight=0.18, gcVars=00000003 {V05 V06}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[ebx]
- ; GC ptr vars +{V00}
+ mov ecx, gword ptr [ebp-0x18] + ; gcrRegs +[ecx]
call [<unknown method>] ; gcrRegs -[ecx edx]
- ;; size=6 bbWeight=4 PerfScore 12.00 -G_M49898_IG16: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov edi, gword ptr [ebp-0x1C] - ; gcrRegs +[edi] - mov edi, gword ptr [edi+0x0C] - cmp dword ptr [edi+0x18], 2 - mov edx, edi
+ mov gword ptr [ebp-0x14], edi + ; GC ptr vars +{V00} + mov edi, gword ptr [ebp-0x18] + ;; size=15 bbWeight=0.18 PerfScore 1.08 +G_M49898_IG16: ; bbWeight=4, gcVars=00000013 {V00 V05 V06}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + mov ebx, gword ptr [ebp-0x1C] + ; gcrRegs +[ebx] + mov ebx, gword ptr [ebx+0x0C] + cmp dword ptr [ebx+0x18], 2 + mov edx, ebx
; gcrRegs +[edx] mov ebx, bword ptr [ebp+0x0C]
+ ; gcrRegs -[ebx]
; byrRegs +[ebx] je SHORT G_M49898_IG18 ;; size=17 bbWeight=4 PerfScore 33.00 @@ -221,16 +230,16 @@ G_M49898_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {} ; GC ptr vars -{V00 V05 V06} jmp G_M49898_IG23 ;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M49898_IG18: ; bbWeight=2, gcVars=00000022 {V00 V05}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000008 {ebx}, gcvars, byref
+G_M49898_IG18: ; bbWeight=2, gcVars=00000012 {V00 V05}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000008 {ebx}, gcvars, byref
; gcrRegs +[edx esi]
- ; GC ptr vars +{V00 V01 V05}
+ ; GC ptr vars +{V00 V01 V04 V05}
mov edi, gword ptr [ebp-0x14] ; gcrRegs +[edi] jmp G_M49898_IG06 ;; size=8 bbWeight=2 PerfScore 6.00 G_M49898_IG19: ; bbWeight=0.50, gcVars=00000002 {V05}, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, gcvars, byref ; gcrRegs -[edx esi]
- ; GC ptr vars -{V00 V01 V05}
+ ; GC ptr vars -{V00 V01 V04}
mov esi, gword ptr [ebp-0x18] ; gcrRegs +[esi] push dword ptr [esi+0x08] @@ -244,6 +253,7 @@ G_M49898_IG19: ; bbWeight=0.50, gcVars=00000002 {V05}, gcrefRegs=00000080 mov edx, esi ; gcrRegs +[edx] cmp dword ptr [ecx], ecx
+ ; GC ptr vars -{V05}
call [<unknown method>] ; gcrRegs -[ecx edx esi edi] +[eax] mov edx, ebx @@ -261,10 +271,10 @@ G_M49898_IG20: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 12 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M49898_IG21: ; bbWeight=0.50, gcVars=00000023 {V00 V05 V06}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
+G_M49898_IG21: ; bbWeight=0.50, gcVars=00000013 {V00 V05 V06}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
; gcrRegs +[esi] ; byrRegs +[ebx]
- ; GC ptr vars +{V00 V01 V05 V06}
+ ; GC ptr vars +{V00 V01 V04 V05 V06}
mov edi, gword ptr [ebp-0x14] ; gcrRegs +[edi] push gword ptr [ebp-0x1C] @@ -274,7 +284,7 @@ G_M49898_IG21: ; bbWeight=0.50, gcVars=00000023 {V00 V05 V06}, gcrefRegs= mov edx, edi ; gcrRegs +[edx] cmp dword ptr [ecx], ecx
- ; GC ptr vars -{V00 V01 V05 V06}
+ ; GC ptr vars -{V00 V01 V04 V06}
call [<unknown method>] ; gcrRegs -[ecx edx esi] test eax, eax @@ -292,6 +302,7 @@ G_M49898_IG21: ; bbWeight=0.50, gcVars=00000023 {V00 V05 V06}, gcrefRegs= mov edx, esi ; gcrRegs +[edx] cmp dword ptr [ecx], ecx
+ ; GC ptr vars -{V05}
call [<unknown method>] ; gcrRegs -[ecx edx esi edi] +[eax] mov edx, ebx @@ -326,6 +337,6 @@ G_M49898_IG24: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 ret 12 ;; size=10 bbWeight=0.50 PerfScore 2.25
-Total bytes of code 458, prolog size 15, PerfScore 343.18, instruction count 153, allocated bytes for code 458 (MethodHash=98593d15) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:<TryFoldAlternation>g__TrySplitConcatSubsumption|53_0(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],byref):ubyte (FullOpts)
+Total bytes of code 476, prolog size 15, PerfScore 339.90, instruction count 159, allocated bytes for code 476 (MethodHash=98593d15) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:<TryFoldAlternation>g__TrySplitConcatSubsumption|53_0(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],byref):ubyte (FullOpts)
; ============================================================

realworld.run.windows.x86.checked.mch

-26 (-28.89%) : 17542.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)

@@ -7,11 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 7 ) ref -> ecx class-hnd single-def <System.String> -; V01 arg1 [V01,T03] ( 7, 5 ) int -> edx single-def -; V02 loc0 [V02,T00] ( 11, 17.04) int -> esi -; V03 loc1 [V03,T01] ( 6, 10 ) ushort -> edi -; V04 cse0 [V04,T04] ( 6, 6.54) int -> eax "CSE - aggressive"
+; V00 arg0 [V00,T03] ( 4, 7 ) ref -> ecx class-hnd single-def <System.String> +; V01 arg1 [V01,T04] ( 6, 4.50) int -> edx single-def +; V02 loc0 [V02,T00] ( 7, 21 ) int -> esi +; V03 loc1 [V03,T02] ( 3, 10 ) ushort -> edi +; V04 cse0 [V04,T01] ( 5, 10.50) int -> eax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -37,72 +37,51 @@ G_M3357_IG04: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M3357_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ecx] mov esi, edx
- test edx, edx - jl SHORT G_M3357_IG10 - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M3357_IG06: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M3357_IG06: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz + cmp esi, eax + jae SHORT G_M3357_IG13
movzx edi, word ptr [ecx+2*esi+0x08] cmp edi, 32 je SHORT G_M3357_IG08
- ;; size=10 bbWeight=3.96 PerfScore 12.87 -G_M3357_IG07: ; bbWeight=1.98, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=14 bbWeight=4 PerfScore 18.00 +G_M3357_IG07: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
cmp edi, 9
- jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=1.98 PerfScore 2.48 -G_M3357_IG08: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M3357_IG11 + ;; size=5 bbWeight=2 PerfScore 2.50 +G_M3357_IG08: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
inc esi cmp eax, esi jg SHORT G_M3357_IG06
- ;; size=5 bbWeight=3.96 PerfScore 5.94 -G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] - jmp SHORT G_M3357_IG13 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M3357_IG10: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ecx] - cmp esi, eax - jae SHORT G_M3357_IG17 - movzx edi, word ptr [ecx+2*esi+0x08] - cmp edi, 32 - je SHORT G_M3357_IG12 - ;; size=14 bbWeight=0.04 PerfScore 0.18 -G_M3357_IG11: ; bbWeight=0.02, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - cmp edi, 9 - jne SHORT G_M3357_IG15 - ;; size=5 bbWeight=0.02 PerfScore 0.03 -G_M3357_IG12: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - inc esi - cmp eax, esi - jg SHORT G_M3357_IG10 - ;; size=5 bbWeight=0.04 PerfScore 0.06 -G_M3357_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=5 bbWeight=4 PerfScore 6.00 +G_M3357_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx] sub eax, edx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3357_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M3357_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
mov eax, esi sub eax, edx ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3357_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M3357_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M3357_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M3357_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 90, prolog size 5, PerfScore 34.05, instruction count 47, allocated bytes for code 90 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
+Total bytes of code 64, prolog size 5, PerfScore 37.38, instruction count 36, allocated bytes for code 64 (MethodHash=2746f2e2) for method System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int (FullOpts)
; ============================================================

-9 (-1.35%) : 16656.dasm - System.Linq.Enumerable:g_EnumerableToArray|2960double:double

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 26 single block inlinees; 22 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T12] ( 3, 3 ) ref -> edx class-hnd single-def <System.Collections.Generic.IEnumerable`1[double]>
+; V00 arg0 [V00,T11] ( 3, 3 ) ref -> edx class-hnd single-def <System.Collections.Generic.IEnumerable`1[double]>
; V01 loc0 [V01 ] ( 2, 2 ) struct (64) [ebp-0x4C] do-not-enreg[XS] addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[double]> ; V02 loc1 [V02 ] ( 16, 12 ) struct (136) [ebp-0xD4] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1[double]> ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <double[]> @@ -16,26 +16,26 @@ ;* V05 tmp1 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]> ;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "Inline stloc first use temp" <System.Span`1[double]> ;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <double[]>
-; V08 tmp4 [V08,T20] ( 3, 2.50) int -> edx "Inline stloc first use temp" -; V09 tmp5 [V09,T17] ( 6, 3.50) ref -> [ebp-0xF8] class-hnd "Inline stloc first use temp" <double[]>
+; V08 tmp4 [V08,T19] ( 3, 2.50) int -> edx "Inline stloc first use temp" +; V09 tmp5 [V09,T16] ( 6, 3.50) ref -> [ebp-0xF4] class-hnd "Inline stloc first use temp" <double[]>
;* V10 tmp6 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[double]> ;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <double[]> ;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <double[]> ;* V14 tmp10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]>
-; V15 tmp11 [V15,T15] ( 8, 4 ) int -> [ebp-0xD8] "Inline stloc first use temp"
+; V15 tmp11 [V15,T14] ( 8, 4 ) int -> [ebp-0xD8] "Inline stloc first use temp"
; V16 tmp12 [V16 ] ( 3, 1.50) struct ( 8) [ebp-0xE0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[double]> ;* V17 tmp13 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[double]> ;* V18 tmp14 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[double]> ;* V19 tmp15 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[double[]]> ;* V20 tmp16 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[double[]]>
-; V21 tmp17 [V21,T01] ( 5, 16.50) int -> [ebp-0xE4] "Inline stloc first use temp"
+; V21 tmp17 [V21,T02] ( 5, 16.50) int -> [ebp-0xE4] "Inline stloc first use temp"
; V22 tmp18 [V22,T06] ( 4, 12 ) ref -> esi class-hnd "Inline stloc first use temp" <double[]> ;* V23 tmp19 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[double]> ;* V24 tmp20 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[double]> ;* V25 tmp21 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[double]>
-; V26 tmp22 [V26,T11] ( 5, 5 ) int -> [ebp-0xE8] spill-single-def "Inlining Arg" -; V27 tmp23 [V27,T22] ( 2, 2 ) byref -> [ebp-0xFC] spill-single-def "Inlining Arg"
+; V26 tmp22 [V26,T10] ( 5, 5 ) int -> [ebp-0xE8] spill-single-def "Inlining Arg" +; V27 tmp23 [V27,T21] ( 2, 2 ) byref -> [ebp-0xF8] spill-single-def "Inlining Arg"
;* V28 tmp24 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp25 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp26 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[double]> @@ -45,8 +45,8 @@ ;* V34 tmp30 [V34 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V36 tmp32 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]>
-; V37 tmp33 [V37,T19] ( 3, 3 ) int -> ebx "Inlining Arg" -; V38 tmp34 [V38,T23] ( 2, 2 ) byref -> edi single-def "Inlining Arg"
+; V37 tmp33 [V37,T18] ( 3, 3 ) int -> ebx "Inlining Arg" +; V38 tmp34 [V38,T22] ( 2, 2 ) byref -> edi single-def "Inlining Arg"
;* V39 tmp35 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp36 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V41 tmp37 [V41 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[double[]]> @@ -66,20 +66,20 @@ ; V55 tmp51 [V55,T03] ( 2, 16 ) byref -> edi "Inlining Arg" ;* V56 tmp52 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp53 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V58 tmp54 [V58,T16] ( 4, 4 ) int -> esi "Inlining Arg"
+; V58 tmp54 [V58,T15] ( 4, 4 ) int -> esi "Inlining Arg"
;* V59 tmp55 [V59 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]>
-; V60 tmp56 [V60,T24] ( 2, 2 ) byref -> [ebp-0x100] spill-single-def "Inlining Arg" -; V61 tmp57 [V61,T21] ( 3, 2.50) int -> edx "Inline stloc first use temp"
+; V60 tmp56 [V60,T23] ( 2, 2 ) byref -> [ebp-0xFC] spill-single-def "Inlining Arg" +; V61 tmp57 [V61,T20] ( 3, 2.50) int -> edx "Inline stloc first use temp"
;* V62 tmp58 [V62 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP ;* V63 tmp59 [V63 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x4)" P-INDEP
-; V64 tmp60 [V64,T18] ( 3, 3 ) byref -> ecx single-def "field V05._reference (fldOffset=0x0)" P-INDEP -;* V65 tmp61 [V65,T36] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x4)" P-INDEP
+; V64 tmp60 [V64,T17] ( 3, 3 ) byref -> ecx single-def "field V05._reference (fldOffset=0x0)" P-INDEP +;* V65 tmp61 [V65,T35] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x4)" P-INDEP
;* V66 tmp62 [V66 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP ;* V67 tmp63 [V67 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x4)" P-INDEP ;* V68 tmp64 [V68 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp65 [V69 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP
-; V70 tmp66 [V70,T25] ( 3, 1.50) byref -> edi "field V14._reference (fldOffset=0x0)" P-INDEP -; V71 tmp67 [V71,T26] ( 3, 1.50) int -> ebx "field V14._length (fldOffset=0x4)" P-INDEP
+; V70 tmp66 [V70,T24] ( 3, 1.50) byref -> edi "field V14._reference (fldOffset=0x0)" P-INDEP +; V71 tmp67 [V71,T25] ( 3, 1.50) int -> ebx "field V14._length (fldOffset=0x4)" P-INDEP
; V72 tmp68 [V72 ] ( 2, 1 ) byref -> [ebp-0xE0] do-not-enreg[X] addr-exposed "field V16._reference (fldOffset=0x0)" P-DEP ; V73 tmp69 [V73 ] ( 2, 1 ) int -> [ebp-0xDC] do-not-enreg[X] addr-exposed "field V16._length (fldOffset=0x4)" P-DEP ; V74 tmp70 [V74,T04] ( 8, 14.50) byref -> edi "field V17._reference (fldOffset=0x0)" P-INDEP @@ -88,33 +88,32 @@ ;* V77 tmp73 [V77 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP ;* V78 tmp74 [V78 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP ;* V79 tmp75 [V79 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x4)" P-INDEP
-; V80 tmp76 [V80,T14] ( 2, 4.50) byref -> [ebp-0x104] spill-single-def "field V20._reference (fldOffset=0x0)" P-INDEP -; V81 tmp77 [V81,T13] ( 3, 5 ) int -> [ebp-0xEC] spill-single-def "field V20._length (fldOffset=0x4)" P-INDEP
+; V80 tmp76 [V80,T13] ( 2, 4.50) byref -> [ebp-0x100] spill-single-def "field V20._reference (fldOffset=0x0)" P-INDEP +; V81 tmp77 [V81,T12] ( 3, 5 ) int -> [ebp-0xEC] spill-single-def "field V20._length (fldOffset=0x4)" P-INDEP
;* V82 tmp78 [V82 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP ;* V83 tmp79 [V83 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP
-; V84 tmp80 [V84,T27] ( 2, 1 ) byref -> edx single-def "field V24._reference (fldOffset=0x0)" P-INDEP -; V85 tmp81 [V85,T32] ( 2, 1 ) int -> ecx "field V24._length (fldOffset=0x4)" P-INDEP
+; V84 tmp80 [V84,T26] ( 2, 1 ) byref -> edx single-def "field V24._reference (fldOffset=0x0)" P-INDEP +; V85 tmp81 [V85,T31] ( 2, 1 ) int -> ecx "field V24._length (fldOffset=0x4)" P-INDEP
;* V86 tmp82 [V86 ] ( 0, 0 ) byref -> zero-ref single-def "field V25._reference (fldOffset=0x0)" P-INDEP ;* V87 tmp83 [V87 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x4)" P-INDEP ;* V88 tmp84 [V88 ] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP ;* V89 tmp85 [V89 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x4)" P-INDEP
-; V90 tmp86 [V90,T28] ( 2, 1 ) byref -> edi single-def "field V36._reference (fldOffset=0x0)" P-INDEP -; V91 tmp87 [V91,T33] ( 2, 1 ) int -> ebx "field V36._length (fldOffset=0x4)" P-INDEP -; V92 tmp88 [V92,T29] ( 2, 1 ) byref -> [ebp-0x108] spill-single-def "field V41._reference (fldOffset=0x0)" P-INDEP
+; V90 tmp86 [V90,T27] ( 2, 1 ) byref -> edi single-def "field V36._reference (fldOffset=0x0)" P-INDEP +; V91 tmp87 [V91,T32] ( 2, 1 ) int -> ebx "field V36._length (fldOffset=0x4)" P-INDEP +; V92 tmp88 [V92,T28] ( 2, 1 ) byref -> [ebp-0x104] spill-single-def "field V41._reference (fldOffset=0x0)" P-INDEP
;* V93 tmp89 [V93 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x4)" P-INDEP
-; V94 tmp90 [V94,T30] ( 2, 1 ) byref -> edx single-def "field V42._reference (fldOffset=0x0)" P-INDEP -; V95 tmp91 [V95,T34] ( 2, 1 ) int -> eax "field V42._length (fldOffset=0x4)" P-INDEP -; V96 tmp92 [V96,T08] ( 3, 8 ) byref -> registers "field V46._reference (fldOffset=0x0)" P-INDEP -; V97 tmp93 [V97,T02] ( 5, 16 ) int -> [ebp-0xF0] "field V46._length (fldOffset=0x4)" P-INDEP
+; V94 tmp90 [V94,T29] ( 2, 1 ) byref -> edx single-def "field V42._reference (fldOffset=0x0)" P-INDEP +; V95 tmp91 [V95,T33] ( 2, 1 ) int -> eax "field V42._length (fldOffset=0x4)" P-INDEP +; V96 tmp92 [V96,T07] ( 3, 8 ) byref -> registers "field V46._reference (fldOffset=0x0)" P-INDEP +; V97 tmp93 [V97,T01] ( 6, 20 ) int -> [ebp-0xF0] "field V46._length (fldOffset=0x4)" P-INDEP
;* V98 tmp94 [V98 ] ( 0, 0 ) byref -> zero-ref "field V47._reference (fldOffset=0x0)" P-INDEP ;* V99 tmp95 [V99 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x4)" P-INDEP
-; V100 tmp96 [V100,T09] ( 2, 8 ) byref -> edi "field V53._reference (fldOffset=0x0)" P-INDEP -; V101 tmp97 [V101,T10] ( 2, 8 ) int -> ebx "field V53._length (fldOffset=0x4)" P-INDEP -; V102 tmp98 [V102,T31] ( 2, 1 ) byref -> ecx single-def "field V59._reference (fldOffset=0x0)" P-INDEP -; V103 tmp99 [V103,T35] ( 2, 1 ) int -> esi "field V59._length (fldOffset=0x4)" P-INDEP -; V104 cse0 [V104,T07] ( 3, 12 ) int -> [ebp-0xF4] spill-single-def "CSE - moderate"
+; V100 tmp96 [V100,T08] ( 2, 8 ) byref -> edi "field V53._reference (fldOffset=0x0)" P-INDEP +; V101 tmp97 [V101,T09] ( 2, 8 ) int -> ebx "field V53._length (fldOffset=0x4)" P-INDEP +; V102 tmp98 [V102,T30] ( 2, 1 ) byref -> ecx single-def "field V59._reference (fldOffset=0x0)" P-INDEP +; V103 tmp99 [V103,T34] ( 2, 1 ) int -> esi "field V59._length (fldOffset=0x4)" P-INDEP
;
-; Lcl frame size = 252
+; Lcl frame size = 248
G_M60021_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -122,7 +121,7 @@ G_M60021_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 252
+ sub esp, 248
vzeroupper vxorps xmm4, xmm4, xmm4 vmovdqu ymmword ptr [ebp-0xE0], ymm4 @@ -174,10 +173,10 @@ G_M60021_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; byrRegs -[edi] lea edi, bword ptr [esi+0x08] ; byrRegs +[edi]
- mov gword ptr [ebp-0xF8], esi
+ mov gword ptr [ebp-0xF4], esi
; GC ptr vars +{V09} mov ebx, dword ptr [esi+0x04]
- mov esi, gword ptr [ebp-0xF8]
+ mov esi, gword ptr [ebp-0xF4]
;; size=18 bbWeight=0.50 PerfScore 2.25 G_M60021_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz ; GC ptr vars -{V09} @@ -188,7 +187,7 @@ G_M60021_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov edx, bword ptr [ebp-0x5C] ; byrRegs +[edx] mov ecx, dword ptr [ebp-0x58]
- mov bword ptr [ebp-0xFC], edx
+ mov bword ptr [ebp-0xF8], edx
; GC ptr vars +{V27} mov dword ptr [ebp-0xE8], ecx cmp ecx, ebx @@ -198,7 +197,7 @@ G_M60021_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 push edx mov ecx, edi ; byrRegs +[ecx]
- mov edx, bword ptr [ebp-0xFC]
+ mov edx, bword ptr [ebp-0xF8]
; byrRegs +[edx] ; GC ptr vars -{V27} call [<unknown method>] @@ -220,7 +219,7 @@ G_M60021_IG06: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 je SHORT G_M60021_IG10 lea edx, bword ptr [ebp-0xC8] ; byrRegs +[edx]
- mov bword ptr [ebp-0x108], edx
+ mov bword ptr [ebp-0x104], edx
; GC ptr vars +{V92} cmp eax, 27 ja G_M60021_IG24 @@ -236,19 +235,19 @@ G_M60021_IG06: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; gcrRegs -[ecx edx] ;; size=56 bbWeight=0.50 PerfScore 5.38 G_M60021_IG07: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
- mov edx, bword ptr [ebp-0x108]
+ mov edx, bword ptr [ebp-0x104]
; byrRegs +[edx] mov eax, dword ptr [ebp-0xD8]
- mov bword ptr [ebp-0x104], edx
+ mov bword ptr [ebp-0x100], edx
; GC ptr vars +{V80} mov dword ptr [ebp-0xEC], eax xor ecx, ecx test eax, eax
- mov gword ptr [ebp-0xF8], esi
+ mov gword ptr [ebp-0xF4], esi
; GC ptr vars +{V09} jle G_M60021_IG16 ;; size=40 bbWeight=0.50 PerfScore 3.25
-G_M60021_IG08: ; bbWeight=4, gcVars=0000000000024000 {V09 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref, isz
+G_M60021_IG08: ; bbWeight=4, gcVars=0000000000012000 {V09 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref, isz
; gcrRegs -[esi] ; GC ptr vars -{V92} mov dword ptr [ebp-0xE4], ecx @@ -269,17 +268,17 @@ G_M60021_IG10: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs +[esi] ; byrRegs -[esi] ; GC ptr vars -{V09 V80}
- mov gword ptr [ebp-0xF8], esi
+ mov gword ptr [ebp-0xF4], esi
; GC ptr vars +{V09} jmp SHORT G_M60021_IG16 ;; size=8 bbWeight=0.25 PerfScore 0.75 G_M60021_IG11: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz ; GC ptr vars -{V09}
- mov gword ptr [ebp-0xF8], esi
+ mov gword ptr [ebp-0xF4], esi
; GC ptr vars +{V09} jmp SHORT G_M60021_IG16 ;; size=8 bbWeight=0.25 PerfScore 0.75
-G_M60021_IG12: ; bbWeight=2, gcVars=0000000000024000 {V09 V80}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref
+G_M60021_IG12: ; bbWeight=2, gcVars=0000000000012000 {V09 V80}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref
; GC ptr vars +{V80} lea edx, bword ptr [esi+0x08] ; byrRegs +[edx] @@ -298,7 +297,6 @@ G_M60021_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {e ja G_M60021_IG25 mov dword ptr [ebp-0xF0], edx lea eax, [8*edx]
- mov dword ptr [ebp-0xF4], eax
push eax mov ecx, edi ; byrRegs +[ecx] @@ -306,11 +304,11 @@ G_M60021_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {e ; byrRegs +[edx] call [<unknown method>] ; byrRegs -[ecx edx esi]
- mov esi, dword ptr [ebp-0xF4] - add edi, esi - sub ebx, dword ptr [ebp-0xF0]
+ mov esi, dword ptr [ebp-0xF0] + lea edi, bword ptr [edi+8*esi] + sub ebx, esi
jns SHORT G_M60021_IG15
- ;; size=54 bbWeight=4 PerfScore 50.00
+ ;; size=45 bbWeight=4 PerfScore 40.00
G_M60021_IG14: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] @@ -324,11 +322,11 @@ G_M60021_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000080 {e ...

-5 (-0.96%) : 20716.dasm - System.Text.RegularExpressions.RegexParser:EscapeImpl(System.ReadOnlySpan`1[ushort],int):System.String (FullOpts)

@@ -8,15 +8,15 @@ ; 0 inlinees with PGO data; 15 single block inlinees; 13 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T24] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> -; V01 arg1 [V01,T00] ( 13, 72 ) int -> esi -; V02 loc0 [V02 ] ( 23, 95 ) struct (16) [ebp-0x20] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
+; V00 arg0 [V00,T23] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> +; V01 arg1 [V01,T00] ( 14, 80 ) int -> esi +; V02 loc0 [V02 ] ( 23, 97 ) struct (16) [ebp-0x20] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.Text.ValueStringBuilder> ;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[ushort]>
-; V05 loc3 [V05,T13] ( 8, 20 ) ushort -> esi
+; V05 loc3 [V05,T12] ( 8, 22 ) ushort -> esi
;* V06 tmp0 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V07 tmp1 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V08 tmp2 [V08,T25] ( 2, 2 ) int -> eax "Inlining Arg"
+; V08 tmp2 [V08,T24] ( 2, 2 ) int -> eax "Inlining Arg"
;* V09 tmp3 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <ushort[]> ;* V11 tmp5 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> @@ -28,7 +28,7 @@ ; V17 tmp11 [V17,T01] ( 4, 64 ) int -> ecx "Inlining Arg" ;* V18 tmp12 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V19 tmp13 [V19,T03] ( 3, 48 ) int -> [ebp-0x24] spill-single-def "Inlining Arg"
-; V20 tmp14 [V20,T05] ( 2, 32 ) byref -> [ebp-0x2C] spill-single-def "Inlining Arg"
+; V20 tmp14 [V20,T05] ( 2, 32 ) byref -> [ebp-0x28] spill-single-def "Inlining Arg"
;* V21 tmp15 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V22 tmp16 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V23 tmp17 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -37,13 +37,13 @@ ;* V26 tmp20 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ; V27 tmp21 [V27,T02] ( 4, 56 ) int -> ebx "Inlining Arg" ; V28 tmp22 [V28,T04] ( 3, 32 ) byref -> edi "Inlining Arg"
-; V29 tmp23 [V29,T15] ( 4, 12 ) int -> ecx "Inline stloc first use temp"
+; V29 tmp23 [V29,T14] ( 4, 12 ) int -> ecx "Inline stloc first use temp"
;* V30 tmp24 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
-; V31 tmp25 [V31,T16] ( 4, 12 ) int -> ecx "Inline stloc first use temp"
+; V31 tmp25 [V31,T15] ( 4, 12 ) int -> ecx "Inline stloc first use temp"
;* V32 tmp26 [V32 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V33 tmp27 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ; V34 tmp28 [V34,T09] ( 3, 24 ) int -> ebx "Inlining Arg"
-; V35 tmp29 [V35,T14] ( 2, 16 ) byref -> edi "Inlining Arg"
+; V35 tmp29 [V35,T13] ( 2, 16 ) byref -> edi "Inlining Arg"
;* V36 tmp30 [V36 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V37 tmp31 [V37,T08] ( 3, 24 ) ref -> ecx class-hnd exact "Inlining Arg" <System.Buffers.AsciiCharSearchValues`1[System.Buffers.IndexOfAnyAsciiSearcher+Default]> ;* V38 tmp32 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -55,10 +55,10 @@ ;* V44 tmp38 [V44 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x4)" P-INDEP ;* V45 tmp39 [V45 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP ;* V46 tmp40 [V46 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x4)" P-INDEP
-; V47 tmp41 [V47,T28] ( 2, 1 ) byref -> eax single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+; V47 tmp41 [V47,T27] ( 2, 1 ) byref -> eax single-def "field V07._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp42 [V48 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x4)" P-INDEP
-; V49 tmp43 [V49,T26] ( 3, 1.50) byref -> eax "field V11._reference (fldOffset=0x0)" P-INDEP -; V50 tmp44 [V50,T27] ( 3, 1.50) int -> edx "field V11._length (fldOffset=0x4)" P-INDEP
+; V49 tmp43 [V49,T25] ( 3, 1.50) byref -> eax "field V11._reference (fldOffset=0x0)" P-INDEP +; V50 tmp44 [V50,T26] ( 3, 1.50) int -> edx "field V11._length (fldOffset=0x4)" P-INDEP
;* V51 tmp45 [V51 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP ;* V52 tmp46 [V52 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x4)" P-INDEP ;* V53 tmp47 [V53 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP @@ -71,10 +71,10 @@ ;* V60 tmp54 [V60 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x4)" P-INDEP ;* V61 tmp55 [V61 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-INDEP ;* V62 tmp56 [V62 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x4)" P-INDEP
-; V63 tmp57 [V63,T19] ( 2, 6 ) byref -> edx "field V30._reference (fldOffset=0x0)" P-INDEP -; V64 tmp58 [V64,T17] ( 2, 8 ) int -> eax "field V30._length (fldOffset=0x4)" P-INDEP -; V65 tmp59 [V65,T20] ( 2, 6 ) byref -> edx "field V32._reference (fldOffset=0x0)" P-INDEP -; V66 tmp60 [V66,T18] ( 2, 8 ) int -> eax "field V32._length (fldOffset=0x4)" P-INDEP
+; V63 tmp57 [V63,T18] ( 2, 6 ) byref -> edx "field V30._reference (fldOffset=0x0)" P-INDEP +; V64 tmp58 [V64,T16] ( 2, 8 ) int -> eax "field V30._length (fldOffset=0x4)" P-INDEP +; V65 tmp59 [V65,T19] ( 2, 6 ) byref -> edx "field V32._reference (fldOffset=0x0)" P-INDEP +; V66 tmp60 [V66,T17] ( 2, 8 ) int -> eax "field V32._length (fldOffset=0x4)" P-INDEP
;* V67 tmp61 [V67 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP ;* V68 tmp62 [V68 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x4)" P-INDEP ;* V69 tmp63 [V69 ] ( 0, 0 ) byref -> zero-ref "field V36._reference (fldOffset=0x0)" P-INDEP @@ -85,17 +85,16 @@ ;* V74 tmp68 [V74 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x4)" P-INDEP ; V75 tmp69 [V75,T07] ( 5, 25 ) byref -> edi "V00.[000..004)" ; V76 tmp70 [V76,T06] ( 8, 30.50) int -> ebx "V00.[004..008)"
-; V77 tmp71 [V77,T21] ( 6, 3.50) ref -> ecx "V03.[000..004)"
+; V77 tmp71 [V77,T20] ( 6, 3.50) ref -> ecx "V03.[000..004)"
;* V78 tmp72 [V78 ] ( 0, 0 ) int -> zero-ref "V03.[004..008)"
-; V79 tmp73 [V79,T22] ( 3, 2 ) byref -> eax "V03.[008..012)" -; V80 tmp74 [V80,T23] ( 3, 2 ) int -> edx "V03.[012..016)" -; V81 GsCookie [V81 ] ( 1, 1 ) int -> [ebp-0x30] do-not-enreg[X] addr-exposed "GSSecurityCookie" -; V82 LocAllocSP [V82,T29] ( 1, 1 ) int -> [ebp-0x10] "LocAllocSPvar"
+; V79 tmp73 [V79,T21] ( 3, 2 ) byref -> eax "V03.[008..012)" +; V80 tmp74 [V80,T22] ( 3, 2 ) int -> edx "V03.[012..016)" +; V81 GsCookie [V81 ] ( 1, 1 ) int -> [ebp-0x2C] do-not-enreg[X] addr-exposed "GSSecurityCookie" +; V82 LocAllocSP [V82,T28] ( 1, 1 ) int -> [ebp-0x10] "LocAllocSPvar"
; V83 cse0 [V83,T10] ( 3, 24 ) int -> eax "CSE - moderate"
-; V84 cse1 [V84,T11] ( 3, 24 ) int -> [ebp-0x28] spill-single-def "CSE - moderate" -; V85 rat0 [V85,T12] ( 3, 24 ) int -> eax "ReplaceWithLclVar is creating a new local variable"
+; V84 rat0 [V84,T11] ( 3, 24 ) int -> eax "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 40
+; Lcl frame size = 36
G_M39925_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -103,12 +102,12 @@ G_M39925_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 40
+ sub esp, 36
xor eax, eax mov dword ptr [ebp-0x20], eax mov dword ptr [ebp-0x18], eax mov dword ptr [ebp-0x10], esp
- mov dword ptr [ebp-0x30], 0xD1FFAB1E
+ mov dword ptr [ebp-0x2C], 0xD1FFAB1E
mov esi, ecx ;; size=29 bbWeight=1 PerfScore 9.00 G_M39925_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz @@ -194,7 +193,7 @@ G_M39925_IG10: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000080 {e mov edx, bword ptr [ebp-0x18] ; byrRegs +[edx] lea edx, bword ptr [edx+2*ecx]
- mov bword ptr [ebp-0x2C], edx
+ mov bword ptr [ebp-0x28], edx
; GC ptr vars +{V20} sub eax, ecx mov dword ptr [ebp-0x24], eax @@ -205,10 +204,9 @@ G_M39925_IG10: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000080 {e ; byrRegs -[edx] cmp esi, dword ptr [ebp-0x24] ja G_M39925_IG25
- lea eax, [esi+esi] - mov dword ptr [ebp-0x28], eax - push eax - mov ecx, bword ptr [ebp-0x2C]
+ lea ecx, [esi+esi] + push ecx + mov ecx, bword ptr [ebp-0x28]
; byrRegs +[ecx] mov edx, edi ; byrRegs +[edx] @@ -218,8 +216,7 @@ G_M39925_IG10: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000080 {e mov ecx, esi add ecx, dword ptr [ebp-0x1C] mov dword ptr [ebp-0x1C], ecx
- mov ecx, dword ptr [ebp-0x28] - add edi, ecx
+ lea edi, bword ptr [edi+2*esi]
sub ebx, esi mov ecx, ebx not ecx @@ -227,7 +224,7 @@ G_M39925_IG10: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000080 {e call [<unknown method>] test ebx, ebx je G_M39925_IG23
- ;; size=104 bbWeight=8 PerfScore 246.00
+ ;; size=99 bbWeight=8 PerfScore 232.00
G_M39925_IG11: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz movzx esi, word ptr [edi] lea eax, [esi-0x09] @@ -288,12 +285,12 @@ G_M39925_IG20: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000084 {e mov dword ptr [ebp-0x1C], ecx jmp SHORT G_M39925_IG22 ;; size=10 bbWeight=2 PerfScore 8.50
-G_M39925_IG21: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
+G_M39925_IG21: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
; byrRegs -[edx] lea ecx, [ebp-0x20] mov edx, esi call [<unknown method>]
- ;; size=11 bbWeight=2 PerfScore 7.50
+ ;; size=11 bbWeight=4 PerfScore 15.00
G_M39925_IG22: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz add edi, 2 dec ebx @@ -324,7 +321,7 @@ G_M39925_IG23: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} lea ecx, [ebp-0x20] call [System.Text.ValueStringBuilder:ToString():System.String:this] ; gcrRegs +[eax]
- cmp dword ptr [ebp-0x30], 0xD1FFAB1E
+ cmp dword ptr [ebp-0x2C], 0xD1FFAB1E
je SHORT G_M39925_IG24 call CORINFO_HELP_FAIL_FAST ; gcrRegs -[eax] @@ -359,6 +356,6 @@ RWD00 dd G_M39925_IG14 - G_M39925_IG02 dd G_M39925_IG13 - G_M39925_IG02
-Total bytes of code 523, prolog size 27, PerfScore 552.25, instruction count 169, allocated bytes for code 523 (MethodHash=3e34640a) for method System.Text.RegularExpressions.RegexParser:EscapeImpl(System.ReadOnlySpan`1[ushort],int):System.String (FullOpts)
+Total bytes of code 518, prolog size 27, PerfScore 545.75, instruction count 167, allocated bytes for code 518 (MethodHash=3e34640a) for method System.Text.RegularExpressions.RegexParser:EscapeImpl(System.ReadOnlySpan`1[ushort],int):System.String (FullOpts)
; ============================================================

+9 (+2.37%) : 34130.dasm - System.Management.Automation.CommandPathSearch:CheckAgainstAcceptableCommandNames(System.String[]):System.Collections.Generic.IEnumerable`1[System.String]:this (FullOpts)

@@ -77,14 +77,14 @@ G_M55093_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 mov edx, dword ptr [ebx+0x04] mov dword ptr [ebp-0x28], edx test edx, edx
- je G_M55093_IG16
+ je G_M55093_IG18
;; size=81 bbWeight=1 PerfScore 18.50 G_M55093_IG03: ; bbWeight=0.50, gcVars=00000020 {V03}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[eax] mov ecx, gword ptr [edi+0x28] ; gcrRegs +[ecx] test ecx, ecx
- je G_M55093_IG16
+ je G_M55093_IG18
mov ecx, gword ptr [ecx+0x04] call [<unknown method>] ; gcrRegs -[ecx edi] +[eax] @@ -97,9 +97,9 @@ G_M55093_IG04: ; bbWeight=0.50, gcVars=00000220 {V03 V04}, gcrefRegs=0000 call [<unknown method>] ; gcrRegs -[eax ecx] test eax, eax
- je G_M55093_IG13
+ je G_M55093_IG15
;; size=16 bbWeight=0.50 PerfScore 2.25
-G_M55093_IG05: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M55093_IG05: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [ebp-0x30] ; gcrRegs +[ecx] call [<unknown method>] @@ -109,9 +109,9 @@ G_M55093_IG05: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000 xor eax, eax ; gcrRegs -[eax] cmp dword ptr [ebp-0x28], 0
- jle SHORT G_M55093_IG07 - ;; size=19 bbWeight=4 PerfScore 30.00 -G_M55093_IG06: ; bbWeight=16, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ jle G_M55093_IG09 + ;; size=23 bbWeight=4 PerfScore 30.00 +G_M55093_IG06: ; bbWeight=16, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x24], eax mov edx, gword ptr [ebx+4*eax+0x08] ; gcrRegs +[edx] @@ -122,47 +122,20 @@ G_M55093_IG06: ; bbWeight=16, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs call [<unknown method>] ; gcrRegs -[ecx edx] test eax, eax
- jne SHORT G_M55093_IG11 - mov eax, dword ptr [ebp-0x24] - inc eax - mov dword ptr [ebp-0x24], eax - cmp dword ptr [ebp-0x28], eax - mov eax, dword ptr [ebp-0x24] - jg SHORT G_M55093_IG06 - ;; size=38 bbWeight=16 PerfScore 284.00 -G_M55093_IG07: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ je G_M55093_IG13 + ;; size=27 bbWeight=16 PerfScore 184.00 +G_M55093_IG07: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edi]
- mov ecx, gword ptr [ebp-0x30] - ; gcrRegs +[ecx] - call [<unknown method>] - ; gcrRegs -[ecx]
+ mov eax, gword ptr [ebp-0x2C] + ; gcrRegs +[eax]
test eax, eax
- jne SHORT G_M55093_IG05 - ;; size=13 bbWeight=4 PerfScore 21.00 -G_M55093_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ebx esi] - jmp SHORT G_M55093_IG13 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M55093_IG09: ; bbWeight=0, gcVars=00000200 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; GC ptr vars -{V03} - mov ecx, 8 - call [System.ThrowHelper:ThrowNotSupportedException(int)] - int3 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M55093_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - call CORINFO_HELP_RNGCHKFAIL - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M55093_IG11: ; bbWeight=2, gcVars=00000220 {V03 V04}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[ebx esi] - ; GC ptr vars +{V03 V05} - mov edi, gword ptr [ebp-0x2C]
+ mov edi, eax
; gcrRegs +[edi]
- test edi, edi - jne SHORT G_M55093_IG12
+ jne SHORT G_M55093_IG08
mov ecx, 0xD1FFAB1E ; <unknown class>
- ; GC ptr vars -{V03 V05}
+ ; GC ptr vars -{V03}
call CORINFO_HELP_NEWSFAST
- ; gcrRegs -[edi] +[eax]
+ ; gcrRegs -[edi]
mov edi, eax ; gcrRegs +[edi] mov ecx, 0xD1FFAB1E ; <unknown class> @@ -173,12 +146,12 @@ G_M55093_IG11: ; bbWeight=2, gcVars=00000220 {V03 V04}, gcrefRegs=0000004 call CORINFO_HELP_ASSIGN_REF_EAX ; gcrRegs -[eax] ; byrRegs -[edx]
- ;; size=44 bbWeight=2 PerfScore 15.00 -G_M55093_IG12: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - mov eax, dword ptr [ebp-0x24] - cmp eax, dword ptr [esi+0x04] - jae SHORT G_M55093_IG10 - mov eax, gword ptr [esi+4*eax+0x08]
+ ;; size=46 bbWeight=2 PerfScore 15.50 +G_M55093_IG08: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + mov ecx, dword ptr [ebp-0x24] + cmp ecx, dword ptr [esi+0x04] + jae SHORT G_M55093_IG12 + mov eax, gword ptr [esi+4*ecx+0x08]
; gcrRegs +[eax] mov gword ptr [ebp-0x34], eax ; GC ptr vars +{V12} @@ -187,7 +160,7 @@ G_M55093_IG12: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= call [<unknown method>] ; gcrRegs -[eax ecx] test eax, eax
- jne SHORT G_M55093_IG09
+ jne SHORT G_M55093_IG11
mov ecx, gword ptr [edi+0x04] ; gcrRegs +[ecx] call [<unknown method>] @@ -203,37 +176,70 @@ G_M55093_IG12: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= ; gcrRegs -[ecx] mov gword ptr [ebp-0x2C], edi ; GC ptr vars +{V03}
- jmp G_M55093_IG07 - ;; size=60 bbWeight=2 PerfScore 61.50 -G_M55093_IG13: ; bbWeight=0.50, gcVars=00000220 {V03 V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[ebx esi edi]
+ ;; size=55 bbWeight=2 PerfScore 57.50 +G_M55093_IG09: ; bbWeight=4, gcVars=00000220 {V03 V04}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[edi]
mov ecx, gword ptr [ebp-0x30] ; gcrRegs +[ecx]
- ; GC ptr vars -{V04}
call [<unknown method>] ; gcrRegs -[ecx]
- jmp SHORT G_M55093_IG16
+ test eax, eax + jne G_M55093_IG05 + ;; size=17 bbWeight=4 PerfScore 21.00 +G_M55093_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ebx esi] + jmp SHORT G_M55093_IG15 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M55093_IG11: ; bbWeight=0, gcVars=00000200 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; GC ptr vars -{V03} + mov ecx, 8 + call [System.ThrowHelper:ThrowNotSupportedException(int)] + int3 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M55093_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + call CORINFO_HELP_RNGCHKFAIL + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M55093_IG13: ; bbWeight=16, gcVars=00000220 {V03 V04}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs +[ebx esi edi] + ; GC ptr vars +{V03 V05} + mov eax, dword ptr [ebp-0x24] + inc eax + cmp dword ptr [ebp-0x28], eax + jg G_M55093_IG06 + ;; size=13 bbWeight=16 PerfScore 68.00 +G_M55093_IG14: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[edi] + jmp SHORT G_M55093_IG09 + ;; size=2 bbWeight=4 PerfScore 8.00 +G_M55093_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ebx esi] + mov ecx, gword ptr [ebp-0x30] + ; gcrRegs +[ecx] + ; GC ptr vars -{V04 V05} + call [<unknown method>] + ; gcrRegs -[ecx] + jmp SHORT G_M55093_IG18
;; size=11 bbWeight=0.50 PerfScore 3.00
-G_M55093_IG14: ; bbWeight=0, gcVars=00000200 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M55093_IG16: ; bbWeight=0, gcVars=00000200 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03} +{V04} cmp gword ptr [ebp-0x30], 0
- je SHORT G_M55093_IG15
+ je SHORT G_M55093_IG17
mov ecx, gword ptr [ebp-0x30] ; gcrRegs +[ecx] ; GC ptr vars -{V04} call [<unknown method>] ; gcrRegs -[ecx] ;; size=15 bbWeight=0 PerfScore 0.00
-G_M55093_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M55093_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
pop eax jmp eax ;; size=3 bbWeight=0 PerfScore 0.00
-G_M55093_IG16: ; bbWeight=1, gcVars=00000020 {V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M55093_IG18: ; bbWeight=1, gcVars=00000020 {V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars +{V03 V05} mov eax, gword ptr [ebp-0x2C] ; gcrRegs +[eax] ;; size=3 bbWeight=1 PerfScore 1.00
-G_M55093_IG17: ; bbWeight=1, epilog, nogc, extend
+G_M55093_IG19: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -242,9 +248,9 @@ G_M55093_IG17: ; bbWeight=1, epilog, nogc, extend ret ;; size=8 bbWeight=1 PerfScore 3.50
-Total bytes of code 380, prolog size 23, PerfScore 454.62, instruction count 118, allocated bytes for code 380 (MethodHash=c6d028ca) for method System.Management.Automation.CommandPathSearch:CheckAgainstAcceptableCommandNames(System.String[]):System.Collections.Generic.IEnumerable`1[System.String]:this (FullOpts)
+Total bytes of code 389, prolog size 23, PerfScore 427.12, instruction count 117, allocated bytes for code 389 (MethodHash=c6d028ca) for method System.Management.Automation.CommandPathSearch:CheckAgainstAcceptableCommandNames(System.String[]):System.Collections.Generic.IEnumerable`1[System.String]:this (FullOpts)
; ============================================================ *************** EH table for System.Management.Automation.CommandPathSearch:CheckAgainstAcceptableCommandNames(System.String[]):System.Collections.Generic.IEnumerable`1[System.String]:this 1 EH table entries, 1 total EH entries reported to VM
-EH#0: try [G_M55093_IG04..G_M55093_IG13) handled by [G_M55093_IG14..G_M55093_IG16) (fault)
+EH#0: try [G_M55093_IG04..G_M55093_IG15) handled by [G_M55093_IG16..G_M55093_IG18) (fault)
+12 (+3.70%) : 27417.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndex[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,int]):System.Nullable`1[int] (FullOpts)
@@ -10,7 +10,7 @@ ; ; V00 RetBuf [V00,T11] ( 7, 4.50) byref -> [ebp-0x20] single-def ;* V01 arg0 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V02 arg1 [V02,T01] ( 6, 14 ) ref -> esi class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
+; V02 arg1 [V02,T02] ( 6, 14 ) ref -> esi class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
; V03 arg2 [V03,T07] ( 4, 8 ) ref -> [ebp+0x0C] class-hnd single-def <System.Func`3[System.__Canon,System.__Canon,int]> ;* V04 TypeCtx [V04 ] ( 0, 0 ) int -> zero-ref single-def ;* V05 loc0 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]> @@ -19,7 +19,7 @@ ; V08 loc3 [V08,T00] ( 6, 18.50) int -> [ebp-0x10] ; V09 loc4 [V09,T03] ( 4, 12 ) ref -> edi class-hnd <System.__Canon> ; V10 loc5 [V10,T08] ( 4, 8 ) int -> eax
-; V11 loc6 [V11,T02] ( 6, 12.50) int -> edi
+; V11 loc6 [V11,T01] ( 7, 17 ) int -> edi
; V12 loc7 [V12,T12] ( 3, 6 ) ref -> [ebp-0x24] class-hnd spill-single-def <System.__Canon> ; V13 loc8 [V13,T13] ( 3, 6 ) int -> eax ;* V14 loc9 [V14 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" @@ -28,7 +28,7 @@ ;* V17 tmp3 [V17 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V18 tmp4 [V18,T10] ( 3, 7 ) ref -> [ebp+0x10] single-def "field V01.array (fldOffset=0x0)" P-INDEP ; V19 tmp5 [V19,T09] ( 6, 7.50) ubyte -> [ebp-0x14] "field V05.hasValue (fldOffset=0x0)" P-INDEP
-; V20 tmp6 [V20,T04] ( 5, 9 ) int -> [ebp-0x18] "field V05.value (fldOffset=0x4)" P-INDEP
+; V20 tmp6 [V20,T04] ( 6, 9.50) int -> [ebp-0x18] "field V05.value (fldOffset=0x4)" P-INDEP
;* V21 tmp7 [V21 ] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP ;* V22 tmp8 [V22 ] ( 0, 0 ) int -> zero-ref "field V07.value (fldOffset=0x4)" P-INDEP ; V23 cse0 [V23,T06] ( 5, 8.50) int -> [ebp-0x1C] spill-single-def "CSE - moderate" @@ -180,11 +180,12 @@ G_M52223_IG15: ; bbWeight=2, gcVars=00000800 {V00}, gcrefRegs=00000048 {e ;; size=7 bbWeight=2 PerfScore 4.50 G_M52223_IG16: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz xor edi, edi
- jmp SHORT G_M52223_IG19 - ;; size=4 bbWeight=0.50 PerfScore 1.12
+ cmp edi, dword ptr [ebp-0x18] + jge SHORT G_M52223_IG22 + ;; size=7 bbWeight=0.50 PerfScore 1.62
G_M52223_IG17: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz cmp edi, edx
- jae SHORT G_M52223_IG24
+ jae SHORT G_M52223_IG25
mov edx, gword ptr [ebp+0x10] ; gcrRegs +[edx] mov edx, gword ptr [edx+4*edi+0x08] @@ -210,26 +211,24 @@ G_M52223_IG17: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000 test eax, eax je SHORT G_M52223_IG18 cmp eax, 3
- jne SHORT G_M52223_IG22
+ jne SHORT G_M52223_IG23
;; size=50 bbWeight=2 PerfScore 44.50
-G_M52223_IG18: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+G_M52223_IG18: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
inc edi
+ mov eax, dword ptr [ebp-0x18] + cmp edi, eax
mov edx, dword ptr [ebp-0x1C]
- ;; size=4 bbWeight=2 PerfScore 2.50 -G_M52223_IG19: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - cmp edi, dword ptr [ebp-0x18] - jl SHORT G_M52223_IG17 - ;; size=5 bbWeight=4 PerfScore 12.00 -G_M52223_IG20: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jl SHORT G_M52223_IG21 + ;; size=11 bbWeight=4 PerfScore 14.00 +G_M52223_IG19: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx esi] mov edi, bword ptr [ebp-0x20] ; byrRegs +[edi]
- movzx ecx, byte ptr [ebp-0x14] - mov byte ptr [edi], cl - mov eax, dword ptr [ebp-0x18]
+ movzx ebx, byte ptr [ebp-0x14] + mov byte ptr [edi], bl
mov dword ptr [edi+0x04], eax
- ;; size=15 bbWeight=0.50 PerfScore 2.50 -G_M52223_IG21: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M52223_IG20: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -237,15 +236,25 @@ G_M52223_IG21: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 12 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M52223_IG22: ; bbWeight=0.50, gcVars=00000800 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M52223_IG21: ; bbWeight=2, gcVars=00000800 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[ebx esi]
; byrRegs -[edi]
+ mov dword ptr [ebp-0x18], eax + jmp SHORT G_M52223_IG17 + ;; size=5 bbWeight=2 PerfScore 6.00 +G_M52223_IG22: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ebx esi] + mov eax, dword ptr [ebp-0x18] + jmp SHORT G_M52223_IG19 + ;; size=5 bbWeight=0.25 PerfScore 0.75 +G_M52223_IG23: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor eax, eax mov edi, bword ptr [ebp-0x20] ; byrRegs +[edi] mov dword ptr [edi], eax mov dword ptr [edi+0x04], eax ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M52223_IG23: ; bbWeight=0.50, epilog, nogc, extend
+G_M52223_IG24: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -253,13 +262,13 @@ G_M52223_IG23: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 12 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M52223_IG24: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M52223_IG25: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[edi] ; GC ptr vars -{V00} call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 324, prolog size 9, PerfScore 202.00, instruction count 136, allocated bytes for code 324 (MethodHash=aba93400) for method Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndex[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,int]):System.Nullable`1[int] (FullOpts)
+Total bytes of code 336, prolog size 9, PerfScore 208.25, instruction count 141, allocated bytes for code 336 (MethodHash=aba93400) for method Microsoft.CodeAnalysis.CSharp.ConversionsBase:UniqueBestValidIndex[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,int]):System.Nullable`1[int] (FullOpts)
; ============================================================

+49 (+10.68%) : 607.dasm - System.Collections.Generic.ArraySortHelper1[int]:IntroSort(System.Span1[int],int,System.Comparison`1[int]) (FullOpts)

@@ -11,7 +11,7 @@ ; V00 arg0 [V00,T13] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[int]> ; V01 arg1 [V01,T03] ( 7, 19 ) int -> esi ; V02 arg2 [V02,T05] ( 15, 16 ) ref -> edi class-hnd single-def <System.Comparison`1[int]>
-; V03 loc0 [V03,T01] ( 14, 28.50) int -> [ebp-0x10]
+; V03 loc0 [V03,T00] ( 16, 33 ) int -> [ebp-0x10]
; V04 loc1 [V04,T08] ( 3, 12 ) int -> [ebp-0x14] spill-single-def ; V05 loc2 [V05,T04] ( 5, 20 ) int -> ecx ;* V06 tmp0 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[int]> @@ -43,7 +43,7 @@ ;* V32 tmp26 [V32 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V33 tmp27 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp28 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V35 tmp29 [V35,T00] ( 4, 32 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
+; V35 tmp29 [V35,T01] ( 4, 32 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
;* V36 tmp30 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ; V37 tmp31 [V37,T07] ( 2, 16 ) byref -> [ebp-0x20] spill-single-def "Inlining Arg" ;* V38 tmp32 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -136,17 +136,30 @@ G_M15629_IG08: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000008 mov eax, dword ptr [ebp-0x1C] mov edx, eax cmp eax, 1
- jle G_M15629_IG21
+ jle G_M15629_IG24
;; size=14 bbWeight=1 PerfScore 2.50 G_M15629_IG09: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz cmp edx, 16
- jle G_M15629_IG14
+ jle G_M15629_IG16
test esi, esi
- je G_M15629_IG20
+ je G_M15629_IG22
dec esi cmp edx, eax
- ja G_M15629_IG23
+ ja G_M15629_IG26
mov dword ptr [ebp-0x10], edx
+ test edx, edx + jge SHORT G_M15629_IG11 + ;; size=33 bbWeight=4 PerfScore 25.00 +G_M15629_IG10: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=16 bbWeight=2 PerfScore 7.00 +G_M15629_IG11: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz + mov edx, dword ptr [ebp-0x10]
mov ecx, edx push ecx push ebx @@ -161,18 +174,18 @@ G_M15629_IG09: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 mov dword ptr [ebp-0x18], edx mov eax, dword ptr [ebp-0x1C] cmp ecx, eax
- ja G_M15629_IG23
+ ja G_M15629_IG26
sub eax, ecx cmp eax, edx
- jb G_M15629_IG23
+ jb G_M15629_IG26
lea eax, bword ptr [ebx+4*ecx] ; byrRegs +[eax] mov bword ptr [ebp-0x20], eax ; GC ptr vars +{V37} test edx, edx
- jge SHORT G_M15629_IG11 - ;; size=86 bbWeight=4 PerfScore 83.00 -G_M15629_IG10: ; bbWeight=2, gcVars=00000080 {V37}, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, gcvars, byref
+ jge SHORT G_M15629_IG13 + ;; size=60 bbWeight=4 PerfScore 67.00 +G_M15629_IG12: ; bbWeight=2, gcVars=00000080 {V37}, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, gcvars, byref
; byrRegs -[eax] mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] @@ -181,7 +194,7 @@ G_M15629_IG10: ; bbWeight=2, gcVars=00000080 {V37}, gcrefRegs=00000080 {e call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=16 bbWeight=2 PerfScore 7.00
-G_M15629_IG11: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG13: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
mov eax, bword ptr [ebp-0x20] ; byrRegs +[eax] mov edx, dword ptr [ebp-0x18] @@ -198,22 +211,22 @@ G_M15629_IG11: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000008 mov eax, edx cmp eax, 1 mov edx, eax
- jg SHORT G_M15629_IG13
+ jg SHORT G_M15629_IG15
;; size=30 bbWeight=4 PerfScore 41.00
-G_M15629_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M15629_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[edi] ; byrRegs -[ebx]
- jmp G_M15629_IG21
+ jmp G_M15629_IG24
;; size=5 bbWeight=1 PerfScore 2.00
-G_M15629_IG13: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref
+G_M15629_IG15: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref
; gcrRegs +[edi] ; byrRegs +[ebx] mov eax, dword ptr [ebp-0x1C] jmp G_M15629_IG09 ;; size=8 bbWeight=2 PerfScore 6.00
-G_M15629_IG14: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
cmp edx, 2
- jne SHORT G_M15629_IG15
+ jne SHORT G_M15629_IG17
mov edx, dword ptr [ebx] push dword ptr [ebx+0x04] mov ecx, gword ptr [edi+0x04] @@ -221,17 +234,17 @@ G_M15629_IG14: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [edi+0x0C]<unknown method> ; gcrRegs -[ecx edi] test eax, eax
- jle G_M15629_IG21
+ jle G_M15629_IG24
mov edx, dword ptr [ebx] mov ecx, dword ptr [ebx+0x04] mov dword ptr [ebx], ecx mov dword ptr [ebx+0x04], edx
- jmp G_M15629_IG21
+ jmp G_M15629_IG24
;; size=39 bbWeight=0.50 PerfScore 9.75
-G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[edi] cmp edx, 3
- jne SHORT G_M15629_IG18
+ jne SHORT G_M15629_IG20
mov edx, dword ptr [ebx] push dword ptr [ebx+0x04] mov ecx, gword ptr [edi+0x04] @@ -239,29 +252,29 @@ G_M15629_IG15: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [edi+0x0C]<unknown method> ; gcrRegs -[ecx] test eax, eax
- jle SHORT G_M15629_IG16
+ jle SHORT G_M15629_IG18
mov edx, dword ptr [ebx] mov ecx, dword ptr [ebx+0x04] mov dword ptr [ebx], ecx mov dword ptr [ebx+0x04], edx ;; size=30 bbWeight=0.50 PerfScore 8.75
-G_M15629_IG16: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
mov edx, dword ptr [ebx] cmp dword ptr [ebp-0x1C], 2
- jbe G_M15629_IG22
+ jbe G_M15629_IG25
push dword ptr [ebx+0x08] mov ecx, gword ptr [edi+0x04] ; gcrRegs +[ecx] call [edi+0x0C]<unknown method> ; gcrRegs -[ecx] test eax, eax
- jle SHORT G_M15629_IG17
+ jle SHORT G_M15629_IG19
mov edx, dword ptr [ebx] mov ecx, dword ptr [ebx+0x08] mov dword ptr [ebx], ecx mov dword ptr [ebx+0x08], edx ;; size=35 bbWeight=0.50 PerfScore 9.62
-G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
mov edx, dword ptr [ebx+0x04] push dword ptr [ebx+0x08] mov ecx, gword ptr [edi+0x04] @@ -269,20 +282,20 @@ G_M15629_IG17: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [edi+0x0C]<unknown method> ; gcrRegs -[ecx edi] test eax, eax
- jle SHORT G_M15629_IG21
+ jle SHORT G_M15629_IG24
mov ecx, dword ptr [ebx+0x04] mov edx, dword ptr [ebx+0x08] mov dword ptr [ebx+0x04], edx mov dword ptr [ebx+0x08], ecx
- jmp SHORT G_M15629_IG21
+ jmp SHORT G_M15629_IG24
;; size=30 bbWeight=0.50 PerfScore 9.12
-G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG20: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[edi] cmp edx, eax
- ja SHORT G_M15629_IG23
+ ja SHORT G_M15629_IG26
mov dword ptr [ebp-0x10], edx test edx, edx
- jge SHORT G_M15629_IG19
+ jge SHORT G_M15629_IG21
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -290,7 +303,7 @@ G_M15629_IG18: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=27 bbWeight=0.50 PerfScore 3.50
-G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG21: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
mov edx, dword ptr [ebp-0x10] mov ecx, edx push ecx @@ -300,15 +313,27 @@ G_M15629_IG19: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [System.Collections.Generic.ArraySortHelper`1[int]:InsertionSort(System.Span`1[int],System.Comparison`1[int])] ; gcrRegs -[ecx edi] ; byrRegs -[ebx]
- jmp SHORT G_M15629_IG21
+ jmp SHORT G_M15629_IG24
;; size=17 bbWeight=0.50 PerfScore 4.25
-G_M15629_IG20: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M15629_IG22: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref, isz
; gcrRegs +[edi] ; byrRegs +[ebx] cmp edx, eax
- ja SHORT G_M15629_IG23
+ ja SHORT G_M15629_IG26 + mov dword ptr [ebp-0x10], edx + test edx, edx + jge SHORT G_M15629_IG23 + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + ;; size=27 bbWeight=0.50 PerfScore 3.50 +G_M15629_IG23: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref
mov ecx, ebx ; byrRegs +[ecx]
+ mov edx, dword ptr [ebp-0x10]
mov eax, edx push eax push ecx @@ -318,8 +343,8 @@ G_M15629_IG20: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 call [System.Collections.Generic.ArraySortHelper`1[int]:HeapSort(System.Span`1[int],System.Comparison`1[int])] ; gcrRegs -[ecx edi] ; byrRegs -[ebx]
- ;; size=18 bbWeight=0.50 PerfScore 3.50 -G_M15629_IG21: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=17 bbWeight=0.50 PerfScore 3.38 +G_M15629_IG24: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C] pop ebx pop esi @@ -327,14 +352,14 @@ G_M15629_IG21: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.x86.checked.mch 18 7 6 5 -229 +392
benchmarks.run_pgo.windows.x86.checked.mch 530 503 12 15 -11,721 +557
benchmarks.run_tiered.windows.x86.checked.mch 15 4 6 5 -216 +388
coreclr_tests.run.windows.x86.checked.mch 450 112 123 215 -1,662 +1,226
libraries.crossgen2.windows.x86.checked.mch 83 39 35 9 -617 +402
libraries.pmi.windows.x86.checked.mch 174 47 92 35 -740 +1,579
libraries_tests.run.windows.x86.Release.mch 502 264 106 132 -3,789 +835
librariestestsnotieredcompilation.run.windows.x86.Release.mch 247 61 73 113 -490 +783
realworld.run.windows.x86.checked.mch 22 7 11 4 -112 +315
2,041 1,044 464 533 -19,576 +6,477

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x86.checked.mch 24,487 4 24,483 3 (0.01%) 3 (0.01%)
benchmarks.run_pgo.windows.x86.checked.mch 118,207 42,036 76,171 35 (0.03%) 36 (0.03%)
benchmarks.run_tiered.windows.x86.checked.mch 48,026 28,739 19,287 3 (0.01%) 3 (0.01%)
coreclr_tests.run.windows.x86.checked.mch 574,588 319,944 254,644 76 (0.01%) 87 (0.02%)
libraries.crossgen2.windows.x86.checked.mch 242,540 15 242,525 47 (0.02%) 46 (0.02%)
libraries.pmi.windows.x86.checked.mch 305,642 6 305,636 72 (0.02%) 76 (0.02%)
libraries_tests.run.windows.x86.Release.mch 624,874 425,508 199,366 481 (0.08%) 482 (0.08%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch 316,406 21,910 294,496 64 (0.02%) 66 (0.02%)
realworld.run.windows.x86.checked.mch 35,963 3 35,960 27 (0.08%) 27 (0.08%)
2,290,733 838,165 1,452,568 808 (0.04%) 826 (0.04%)

jit-analyze output

benchmarks.run.windows.x86.checked.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 7121149 (overridden on cmd)
Total bytes of diff: 7121312 (overridden on cmd)
Total bytes of delta: 163 (0.00 % of base)
    relative diff is a regression.

Detail diffs



0 total files with Code Size differences (0 improved, 0 regressed), 18 unchanged.

0 total methods with Code Size differences (0 improved, 0 regressed).


benchmarks.run_pgo.windows.x86.checked.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 45137639 (overridden on cmd)
Total bytes of diff: 45126475 (overridden on cmd)
Total bytes of delta: -11164 (-0.02 % of base)
    relative diff is a regression.

Detail diffs



0 total files with Code Size differences (0 improved, 0 regressed), 63 unchanged.


benchmarks.run_tiered.windows.x86.checked.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 9473362 (overridden on cmd)
Total bytes of diff: 9473534 (overridden on cmd)
Total bytes of delta: 172 (0.00 % of base)
    relative diff is a regression.

Detail diffs



0 total files with Code Size differences (0 improved, 0 regressed), 15 unchanged.

0 total methods with Code Size differences (0 improved, 0 regressed).


coreclr_tests.run.windows.x86.checked.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 309359021 (overridden on cmd)
Total bytes of diff: 309358585 (overridden on cmd)
Total bytes of delta: -436 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



0 total files with Code Size differences (0 improved, 0 regressed), 89 unchanged.


libraries.crossgen2.windows.x86.checked.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 31674254 (overridden on cmd)
Total bytes of diff: 31674039 (overridden on cmd)
Total bytes of delta: -215 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



0 total files with Code Size differences (0 improved, 0 regressed), 61 unchanged.


libraries.pmi.windows.x86.checked.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 49133274 (overridden on cmd)
Total bytes of diff: 49134113 (overridden on cmd)
Total bytes of delta: 839 (0.00 % of base)
    relative diff is a regression.

Detail diffs



0 total files with Code Size differences (0 improved, 0 regressed), 75 unchanged.


libraries_tests.run.windows.x86.Release.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 184746965 (overridden on cmd)
Total bytes of diff: 184744011 (overridden on cmd)
Total bytes of delta: -2954 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



0 total files with Code Size differences (0 improved, 0 regressed), 81 unchanged.


librariestestsnotieredcompilation.run.windows.x86.Release.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 103724167 (overridden on cmd)
Total bytes of diff: 103724460 (overridden on cmd)
Total bytes of delta: 293 (0.00 % of base)
    relative diff is a regression.

Detail diffs



0 total files with Code Size differences (0 improved, 0 regressed), 81 unchanged.


realworld.run.windows.x86.checked.mch

To reproduce these diffs on Windows x86: superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 11283258 (overridden on cmd)
Total bytes of diff: 11283461 (overridden on cmd)
Total bytes of delta: 203 (0.00 % of base)
    relative diff is a regression.

Detail diffs



0 total files with Code Size differences (0 improved, 0 regressed), 22 unchanged.

0 total methods with Code Size differences (0 improved, 0 regressed).