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.Span
1[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.Span
1[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.Span
1[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.ValueTuple
2[ushort,ushort]]:IntroSort(System.Span1[System.ValueTuple
2[ushort,ushort]],int,System.Comparison1[System.ValueTuple
2[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.Span
1[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.Nullable
1[int]]:IntroSort(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment1[ubyte],System.Span
1[System.Nullable1[int]],int,System.Collections.Generic.IComparer
1[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.Vector
1[float]]:IntroSort(System.Span1[System.Numerics.Vector
1[float]],int,System.Comparison1[System.Numerics.Vector
1[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.Span
1[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.ValueTuple
2[ushort,ushort]]:IntroSort(System.Span1[System.ValueTuple
2[ushort,ushort]],int,System.Comparison1[System.ValueTuple
2[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.Span
1[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.SymbolicRegexBuilder
1[System.Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode
1[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.Span
1[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).