Assembly Diffs
linux arm64
Diffs are based on 2,501,157 contexts (1,003,806 MinOpts, 1,497,351 FullOpts).
MISSED contexts: 4,060 (0.16%)
Overall (-1,372 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.arm64.checked.mch |
15,577,120 |
+0 |
benchmarks.run_pgo.linux.arm64.checked.mch |
81,135,316 |
+8 |
coreclr_tests.run.linux.arm64.checked.mch |
509,824,836 |
-60 |
libraries.crossgen2.linux.arm64.checked.mch |
55,738,036 |
-108 |
libraries.pmi.linux.arm64.checked.mch |
76,022,852 |
-376 |
libraries_tests.run.linux.arm64.Release.mch |
381,450,404 |
-508 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
162,656,488 |
-264 |
realworld.run.linux.arm64.checked.mch |
15,906,904 |
-64 |
FullOpts (-1,372 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.arm64.checked.mch |
15,274,112 |
+0 |
benchmarks.run_pgo.linux.arm64.checked.mch |
56,198,856 |
+8 |
coreclr_tests.run.linux.arm64.checked.mch |
160,599,780 |
-60 |
libraries.crossgen2.linux.arm64.checked.mch |
55,736,400 |
-108 |
libraries.pmi.linux.arm64.checked.mch |
75,902,868 |
-376 |
libraries_tests.run.linux.arm64.Release.mch |
166,153,264 |
-508 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
149,175,276 |
-264 |
realworld.run.linux.arm64.checked.mch |
15,321,536 |
-64 |
Example diffs
benchmarks.run.linux.arm64.checked.mch
+0 (0.00%) : 18653.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)
@@ -23,11 +23,11 @@
; V12 loc9 [V12,T14] ( 4, 14 ) byref -> x27
; V13 loc10 [V13,T17] ( 6, 13.50) int -> x26
; V14 loc11 [V14,T15] ( 4, 14 ) byref -> x27
-; V15 loc12 [V15,T66] ( 3, 1.50) int -> x22 single-def
+; V15 loc12 [V15,T62] ( 3, 1.50) int -> x22 single-def
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp2 [V18,T31] ( 4, 3 ) long -> x11 "VirtualCall with runtime lookup"
-; V19 tmp3 [V19,T67] ( 3, 1.50) int -> x24
+; V19 tmp3 [V19,T63] ( 3, 1.50) int -> x24
;* V20 tmp4 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -35,8 +35,8 @@
;* V24 tmp8 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp10 [V26,T28] ( 4, 4 ) byref -> x0 single-def "dup spill"
-; V27 tmp11 [V27,T61] ( 3, 2 ) long -> x1 "spilling helperCall"
-; V28 tmp12 [V28,T68] ( 3, 1.50) int -> x24
+; V27 tmp11 [V27,T57] ( 3, 2 ) long -> x1 "spilling helperCall"
+; V28 tmp12 [V28,T64] ( 3, 1.50) int -> x24
;* V29 tmp13 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp14 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -48,9 +48,9 @@
; V37 tmp21 [V37,T32] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V38 tmp22 [V38,T33] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp24 [V40,T81] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp24 [V40,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp26 [V42,T82] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp26 [V42,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V43 tmp27 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -58,9 +58,9 @@
; V47 tmp31 [V47,T34] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V48 tmp32 [V48,T35] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V50 tmp34 [V50,T83] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V50 tmp34 [V50,T77] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V52 tmp36 [V52,T84] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V52 tmp36 [V52,T78] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -68,63 +68,57 @@
; V57 tmp41 [V57,T36] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V58 tmp42 [V58,T37] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V60 tmp44 [V60,T85] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V60 tmp44 [V60,T79] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V62 tmp46 [V62,T86] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V62 tmp46 [V62,T80] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V63 tmp47 [V63 ] ( 6, 10.50) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64 ] ( 9, 19 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V65 tmp49 [V65,T72] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
-; V66 tmp50 [V66,T75] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V67 tmp51 [V67,T73] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
-; V68 tmp52 [V68,T76] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T74] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
-; V70 tmp54 [V70,T77] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
+; V65 tmp49 [V65,T68] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
+; V66 tmp50 [V66,T71] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V67 tmp51 [V67,T69] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
+; V68 tmp52 [V68,T72] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T70] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
+; V70 tmp54 [V70,T73] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
; V71 tmp55 [V71,T41] ( 3, 3 ) int -> x2 "index expr"
; V72 tmp56 [V72,T42] ( 3, 3 ) int -> x1 "index expr"
; V73 tmp57 [V73,T43] ( 3, 3 ) int -> x2 "index expr"
; V74 tmp58 [V74,T44] ( 3, 3 ) int -> x1 "index expr"
; V75 tmp59 [V75,T12] ( 2, 16 ) long -> x1 "argument with side effect"
; V76 tmp60 [V76,T13] ( 2, 16 ) long -> x1 "argument with side effect"
-; V77 tmp61 [V77,T64] ( 2, 2 ) int -> x1 "argument with side effect"
+; V77 tmp61 [V77,T60] ( 2, 2 ) int -> x1 "argument with side effect"
; V78 tmp62 [V78,T45] ( 3, 3 ) int -> x2 "index expr"
; V79 tmp63 [V79,T46] ( 3, 3 ) int -> x1 "index expr"
-; V80 tmp64 [V80,T65] ( 2, 2 ) long -> x1 "argument with side effect"
-; V81 cse0 [V81,T69] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V82 cse1 [V82,T70] ( 3, 1.50) int -> x26 "CSE - moderate"
-; V83 cse2 [V83,T71] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V84 rat0 [V84,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V85 rat1 [V85,T62] ( 3, 2 ) long -> x1 "runtime lookup"
+; V80 tmp64 [V80,T61] ( 2, 2 ) long -> x1 "argument with side effect"
+; V81 cse0 [V81,T65] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V82 cse1 [V82,T66] ( 3, 1.50) int -> x26 "CSE - moderate"
+; V83 cse2 [V83,T67] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V84 rat0 [V84,T52] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V85 rat1 [V85,T58] ( 3, 2 ) long -> x1 "runtime lookup"
; V86 rat2 [V86,T47] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V87 rat3 [V87,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V88 rat4 [V88,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V89 rat5 [V89,T48] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V90 rat6 [V90,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V91 rat7 [V91,T10] ( 3, 16 ) long -> x1 "runtime lookup"
-; V92 rat8 [V92,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V93 rat9 [V93,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V94 rat10 [V94,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V95 rat11 [V95,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V96 rat12 [V96,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V97 rat13 [V97,T49] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V98 rat14 [V98,T57] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V99 rat15 [V99,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V100 rat16 [V100,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V101 rat17 [V101,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V102 rat18 [V102,T11] ( 3, 16 ) long -> x1 "runtime lookup"
-; V103 rat19 [V103,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-; V104 rat20 [V104,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
-; V105 rat21 [V105,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V106 rat22 [V106,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V107 rat23 [V107,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V108 rat24 [V108,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V109 rat25 [V109,T58] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V87 rat3 [V87,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V88 rat4 [V88,T10] ( 3, 16 ) long -> x1 "runtime lookup"
+; V89 rat5 [V89,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V90 rat6 [V90,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V91 rat7 [V91,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V92 rat8 [V92,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V93 rat9 [V93,T53] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V94 rat10 [V94,T48] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
+; V95 rat11 [V95,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V96 rat12 [V96,T11] ( 3, 16 ) long -> x1 "runtime lookup"
+; V97 rat13 [V97,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+; V98 rat14 [V98,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
+; V99 rat15 [V99,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+;* V100 rat16 [V100,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V101 rat17 [V101,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V102 rat18 [V102,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V103 rat19 [V103,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V104 rat20 [V104,T49] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V105 rat21 [V105,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V106 rat22 [V106,T74] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V107 rat23 [V107,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V108 rat24 [V108,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V109 rat25 [V109,T59] ( 3, 2 ) long -> x1 "runtime lookup"
; V110 rat26 [V110,T51] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V111 rat27 [V111,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V112 rat28 [V112,T80] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V113 rat29 [V113,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V114 rat30 [V114,T60] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V115 rat31 [V115,T63] ( 3, 2 ) long -> x1 "runtime lookup"
-; V116 rat32 [V116,T53] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 24
benchmarks.run_pgo.linux.arm64.checked.mch
+8 (+0.66%) : 85059.dasm - System.Linq.Enumerable:TryGetSingleSystem.__Canon:System.__Canon (Tier1)
@@ -13,9 +13,9 @@
; V01 arg0 [V01,T07] ( 4, 4 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 arg1 [V02,T09] ( 13, 3.83) ref -> x21 class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
; V03 arg2 [V03,T10] ( 4, 3.70) byref -> x22 single-def
-; V04 loc0 [V04,T01] ( 34, 30.15) ref -> [fp+0x28] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
+; V04 loc0 [V04,T01] ( 34, 30.15) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
; V05 loc1 [V05,T23] ( 5, 0.87) ref -> x25 class-hnd <System.__Canon>
-; V06 loc2 [V06,T25] ( 2, 0.78) ref -> [fp+0x20] do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon>
+; V06 loc2 [V06,T25] ( 2, 0.78) ref -> [fp+0x10] do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon>
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -40,7 +40,7 @@
; V28 tmp20 [V28,T30] ( 2, 0.17) ref -> x0 "argument with side effect"
; V29 tmp21 [V29,T00] ( 6, 35.48) ref -> x27 "argument with side effect"
; V30 tmp22 [V30,T17] ( 4, 2.78) ref -> x0 "argument with side effect"
-; V31 PSPSym [V31,T22] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+; V31 PSPSym [V31,T22] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
; V32 cse0 [V32,T24] ( 4, 0.78) long -> x24 "CSE - conservative"
; V33 cse1 [V33,T05] ( 3, 7.32) int -> x1 "CSE - aggressive"
; V34 cse2 [V34,T16] ( 3, 2.85) int -> x23 "CSE - aggressive"
@@ -53,21 +53,20 @@
; V41 rat1 [V41,T29] ( 3, 0.17) long -> x24 "runtime lookup"
; V42 rat2 [V42,T27] ( 3, 0.24) long -> x1 "spilling expr"
; V43 rat3 [V43,T28] ( 3, 0.19) long -> x24 "fgMakeTemp is creating a new local variable"
-; TEMP_01 byref -> [fp+0x18]
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M35688_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
- stp x19, x20, [sp, #0x40]
- stp x21, x22, [sp, #0x50]
- stp x23, x24, [sp, #0x60]
- stp x25, x26, [sp, #0x70]
- stp x27, x28, [sp, #0x80]
+ stp fp, lr, [sp, #-0x80]!
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
+ stp x25, x26, [sp, #0x60]
+ stp x27, x28, [sp, #0x70]
mov fp, sp
- stp xzr, xzr, [fp, #0x18] // [V06 loc2]
- add x4, sp, #144
- stp x0, x4, [fp, #0x30] // [V31 PSPSym]
+ str xzr, [fp, #0x10] // [V06 loc2]
+ add x4, sp, #128
+ stp x0, x4, [fp, #0x20] // [V31 PSPSym]
mov x19, x0
mov x20, x1
; gcrRegs +[x20]
@@ -91,7 +90,7 @@ G_M35688_IG03: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=400000
blr x1
; gcrRegs -[x20]
; gcr arg pop 0
- str x0, [fp, #0x28] // [V04 loc0]
+ str x0, [fp, #0x18] // [V04 loc0]
; GC ptr vars +{V04}
;; size=16 bbWeight=1 PerfScore 5.50
G_M35688_IG04: ; bbWeight=1, gcVars=0000000002000002 {V04 V06}, gcrefRegs=200001 {x0 x21}, byrefRegs=400000 {x22}, gcvars, byref
@@ -103,7 +102,7 @@ G_M35688_IG04: ; bbWeight=1, gcVars=0000000002000002 {V04 V06}, gcrefRegs
;; size=16 bbWeight=1 PerfScore 4.50
G_M35688_IG05: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x0]
- ldr x0, [fp, #0x28] // [V04 loc0]
+ ldr x0, [fp, #0x18] // [V04 loc0]
; gcrRegs +[x0]
ldr x1, [x0]
cmp x1, x20
@@ -142,7 +141,7 @@ G_M35688_IG10: ; bbWeight=0.02, gcrefRegs=200000 {x21}, byrefRegs=400000
;; size=24 bbWeight=0.02 PerfScore 0.05
G_M35688_IG11: ; bbWeight=0.04, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref, isz
mov x11, x24
- ldr x0, [fp, #0x28] // [V04 loc0]
+ ldr x0, [fp, #0x18] // [V04 loc0]
; gcrRegs +[x0]
ldr x1, [x11]
blr x1
@@ -179,7 +178,7 @@ G_M35688_IG11: ; bbWeight=0.04, gcrefRegs=200000 {x21}, byrefRegs=400000
;; size=100 bbWeight=0.04 PerfScore 1.67
G_M35688_IG12: ; bbWeight=0.04, gcrefRegs=2200000 {x21 x25}, byrefRegs=400000 {x22}, byref, isz
cbz w0, G_M35688_IG05
- ldr x0, [fp, #0x28] // [V04 loc0]
+ ldr x0, [fp, #0x18] // [V04 loc0]
; gcrRegs +[x0]
ldr x1, [x21, #0x18]
cmp x1, x26
@@ -190,10 +189,10 @@ G_M35688_IG13: ; bbWeight=0.03, gcrefRegs=200000 {x21}, byrefRegs=400000
; gcrRegs -[x0 x25]
b G_M35688_IG11
;; size=4 bbWeight=0.03 PerfScore 0.03
-G_M35688_IG14: ; bbWeight=0.69, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs +[x19 x25]
+G_M35688_IG14: ; bbWeight=0.69, gcrefRegs=A200000 {x21 x25 x27}, byrefRegs=400000 {x22}, byref, isz
+ ; gcrRegs +[x25 x27]
mov x11, x24
- mov x0, x19
+ mov x0, x27
; gcrRegs +[x0]
ldr x1, [x11]
blr x1
@@ -219,8 +218,8 @@ G_M35688_IG14: ; bbWeight=0.69, gcrefRegs=2280000 {x19 x21 x25}, byrefReg
cbnz w0, G_M35688_IG27
;; size=72 bbWeight=0.69 PerfScore 21.35
G_M35688_IG15: ; bbWeight=0.73, gcrefRegs=2200000 {x21 x25}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs -[x19]
- ldr x0, [fp, #0x28] // [V04 loc0]
+ ; gcrRegs -[x27]
+ ldr x0, [fp, #0x18] // [V04 loc0]
; gcrRegs +[x0]
ldr x1, [x0]
movz x2, #0xD1FFAB1E
@@ -251,9 +250,9 @@ G_M35688_IG16: ; bbWeight=5.85, gcrefRegs=2280001 {x0 x19 x21 x25}, byref
blr x2
; gcrRegs -[x1 x19 x27]
; gcr arg pop 0
- ldr x19, [fp, #0x28] // [V04 loc0]
- ; gcrRegs +[x19]
- add x14, x19, #8
+ ldr x27, [fp, #0x18] // [V04 loc0]
+ ; gcrRegs +[x27]
+ add x14, x27, #8
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
@@ -263,7 +262,7 @@ G_M35688_IG16: ; bbWeight=5.85, gcrefRegs=2280001 {x0 x19 x21 x25}, byref
b G_M35688_IG14
;; size=52 bbWeight=5.85 PerfScore 117.08
G_M35688_IG17: ; bbWeight=0, gcrefRegs=2200000 {x21 x25}, byrefRegs=400000 {x22}, byref
- ; gcrRegs -[x19]
+ ; gcrRegs -[x27]
mov x1, x25
; gcrRegs +[x1]
ldr x0, [x21, #0x08]
@@ -294,16 +293,18 @@ G_M35688_IG20: ; bbWeight=0.73, gcrefRegs=2000001 {x0 x25}, byrefRegs=400
str xzr, [x0, #0x08]
movn w11, #0
str w11, [x0, #0x14]
- ;; size=12 bbWeight=0.73 PerfScore 1.83
-G_M35688_IG21: ; bbWeight=0.74, gcrefRegs=2000000 {x25}, byrefRegs=400000 {x22}, byref
+ mov x27, x0
+ ; gcrRegs +[x27]
+ ;; size=16 bbWeight=0.73 PerfScore 2.20
+G_M35688_IG21: ; bbWeight=0.74, gcrefRegs=A000000 {x25 x27}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x0]
mov w0, #1
strb w0, [x22]
- str x25, [fp, #0x20] // [V06 loc2]
+ str x25, [fp, #0x10] // [V06 loc2]
b G_M35688_IG39
;; size=16 bbWeight=0.74 PerfScore 2.59
G_M35688_IG22: ; bbWeight=0.73, gcrefRegs=2200001 {x0 x21 x25}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs +[x0 x21]
+ ; gcrRegs -[x27] +[x0 x21]
movz x11, #0xD1FFAB1E // code for <unknown method>
movk x11, #0xD1FFAB1E LSL #16
movk x11, #0xD1FFAB1E LSL #32
@@ -311,18 +312,18 @@ G_M35688_IG22: ; bbWeight=0.73, gcrefRegs=2200001 {x0 x21 x25}, byrefRegs
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- ldr x19, [fp, #0x28] // [V04 loc0]
- ; gcrRegs +[x19]
+ ldr x27, [fp, #0x18] // [V04 loc0]
+ ; gcrRegs +[x27]
cbnz w0, G_M35688_IG14
;; size=28 bbWeight=0.73 PerfScore 6.22
-G_M35688_IG23: ; bbWeight=0.04, gcrefRegs=2080000 {x19 x25}, byrefRegs=400000 {x22}, byref
+G_M35688_IG23: ; bbWeight=0.04, gcrefRegs=A000000 {x25 x27}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x21]
b G_M35688_IG21
;; size=4 bbWeight=0.04 PerfScore 0.04
-G_M35688_IG24: ; bbWeight=0.01, gcrefRegs=2200000 {x21 x25}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs -[x19] +[x21]
+G_M35688_IG24: ; bbWeight=0.01, gcrefRegs=A200000 {x21 x25 x27}, byrefRegs=400000 {x22}, byref, isz
+ ; gcrRegs +[x21]
mov x11, x24
- ldr x0, [fp, #0x28] // [V04 loc0]
+ mov x0, x27
; gcrRegs +[x0]
ldr x1, [x11]
blr x1
@@ -330,8 +331,8 @@ G_M35688_IG24: ; bbWeight=0.01, gcrefRegs=2200000 {x21 x25}, byrefRegs=40
ldr x1, [x21, #0x18]
cmp x1, x26
beq G_M35688_IG32
- ;; size=28 bbWeight=0.01 PerfScore 0.08
-G_M35688_IG25: ; bbWeight=0, gcrefRegs=2200001 {x0 x21 x25}, byrefRegs=400000 {x22}, byref
+ ;; size=28 bbWeight=0.01 PerfScore 0.07
+G_M35688_IG25: ; bbWeight=0, gcrefRegs=A200001 {x0 x21 x25 x27}, byrefRegs=400000 {x22}, byref
mov x1, x0
; gcrRegs +[x1]
ldr x0, [x21, #0x08]
@@ -340,14 +341,12 @@ G_M35688_IG25: ; bbWeight=0, gcrefRegs=2200001 {x0 x21 x25}, byrefRegs=40
; gcrRegs -[x0-x1]
; gcr arg pop 0
;; size=16 bbWeight=0 PerfScore 0.00
-G_M35688_IG26: ; bbWeight=0.01, gcrefRegs=2200000 {x21 x25}, byrefRegs=400000 {x22}, byref, isz
+G_M35688_IG26: ; bbWeight=0.01, gcrefRegs=A200000 {x21 x25 x27}, byrefRegs=400000 {x22}, byref, isz
cbz w0, G_M35688_IG28
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M35688_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35688_IG27: ; bbWeight=0, gcrefRegs=8000000 {x27}, byrefRegs=0000 {}, byref
; gcrRegs -[x21 x25]
; byrRegs -[x22]
- ldr x19, [fp, #0x28] // [V04 loc0]
- ; gcrRegs +[x19]
movz x0, #0xD1FFAB1E // code for System.Linq.ThrowHelper:ThrowMoreThanOneMatchException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -355,11 +354,11 @@ G_M35688_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
; gcr arg pop 0
brk_unix #0
- ;; size=28 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
G_M35688_IG28: ; bbWeight=0.01, gcrefRegs=2200000 {x21 x25}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs -[x19] +[x21 x25]
+ ; gcrRegs -[x27] +[x21 x25]
; byrRegs +[x22]
- ldr x0, [fp, #0x28] // [V04 loc0]
+ ldr x0, [fp, #0x18] // [V04 loc0]
; gcrRegs +[x0]
ldr x1, [x0]
movz x2, #0xD1FFAB1E
@@ -374,14 +373,16 @@ G_M35688_IG28: ; bbWeight=0.01, gcrefRegs=2200000 {x21 x25}, byrefRegs=40
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
+ ldr x27, [fp, #0x18] // [V04 loc0]
+ ; gcrRegs +[x27]
cbnz w0, G_M35688_IG24
- ;; size=52 bbWeight=0.01 PerfScore 0.11
-G_M35688_IG29: ; bbWeight=0.04, gcrefRegs=2000000 {x25}, byrefRegs=400000 {x22}, byref
+ ;; size=56 bbWeight=0.01 PerfScore 0.12
+G_M35688_IG29: ; bbWeight=0.04, gcrefRegs=A000000 {x25 x27}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x21]
b G_M35688_IG21
;; size=4 bbWeight=0.04 PerfScore 0.04
G_M35688_IG30: ; bbWeight=0.01, gcrefRegs=2200001 {x0 x21 x25}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs +[x0 x21]
+ ; gcrRegs -[x27] +[x0 x21]
ldr x19, [x0, #0x18]
; gcrRegs +[x19]
ldr w1, [x0, #0x14]
@@ -393,9 +394,6 @@ G_M35688_IG30: ; bbWeight=0.01, gcrefRegs=2200001 {x0 x21 x25}, byrefRegs
G_M35688_IG31: ; bbWeight=0.06, gcrefRegs=2280001 {x0 x19 x21 x25}, byrefRegs=400000 {x22}, byref
add w1, w1, #1
...
coreclr_tests.run.linux.arm64.checked.mch
-24 (-5.04%) : 626233.dasm - Microsoft.Build.Collections.RetrievableEntryHashSet1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet
1[System.__Canon]):ubyte:this (FullOpts)
@@ -8,12 +8,12 @@
; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 9, 19 ) ref -> [fp+0x10] this class-hnd EH-live single-def <Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]>
+; V00 this [V00,T04] ( 8, 18 ) ref -> [fp+0x10] this class-hnd EH-live single-def <Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]>
; V01 arg1 [V01,T08] ( 5, 5 ) ref -> x1 class-hnd single-def <Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]>
; V02 loc0 [V02 ] ( 2, 8 ) ref -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
; V03 loc1 [V03 ] ( 8, 18 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.Build.Collections.RetrievableEntryHashSet`1+Enumerator[System.__Canon]>
; V04 loc2 [V04,T06] ( 3, 12 ) ref -> x19 class-hnd <System.__Canon>
-;* V05 loc3 [V05,T22] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[Z] EH-live
+;* V05 loc3 [V05,T19] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[Z] EH-live
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -26,27 +26,24 @@
; V15 tmp9 [V15 ] ( 5, 15 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x8)" P-DEP
; V16 tmp10 [V16 ] ( 4, 11 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V03._index (fldOffset=0x10)" P-DEP
; V17 tmp11 [V17 ] ( 4, 11 ) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V03._version (fldOffset=0x14)" P-DEP
-; V18 tmp12 [V18,T18] ( 3, 3 ) ref -> x1 single-def "field V12._set (fldOffset=0x0)" P-INDEP
-;* V19 tmp13 [V19,T21] ( 0, 0 ) ref -> zero-ref single-def "field V12._current (fldOffset=0x8)" P-INDEP
-;* V20 tmp14 [V20,T23] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x10)" P-INDEP
-; V21 tmp15 [V21,T19] ( 2, 2 ) int -> x2 single-def "field V12._version (fldOffset=0x14)" P-INDEP
+; V18 tmp12 [V18,T16] ( 3, 3 ) ref -> x1 single-def "field V12._set (fldOffset=0x0)" P-INDEP
+;* V19 tmp13 [V19,T18] ( 0, 0 ) ref -> zero-ref single-def "field V12._current (fldOffset=0x8)" P-INDEP
+;* V20 tmp14 [V20,T20] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x10)" P-INDEP
+; V21 tmp15 [V21,T17] ( 2, 2 ) int -> x2 single-def "field V12._version (fldOffset=0x14)" P-INDEP
; V22 tmp16 [V22,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V23 tmp17 [V23,T05] ( 2, 16 ) ref -> x1 "argument with side effect"
-; V24 PSPSym [V24,T24] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
-;* V25 cse0 [V25,T25] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-;* V26 rat0 [V26,T13] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V27 rat1 [V27,T17] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V24 PSPSym [V24,T21] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
+;* V25 cse0 [V25,T22] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+;* V26 rat0 [V26,T12] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V27 rat1 [V27,T15] ( 0, 0 ) long -> zero-ref "runtime lookup"
;* V28 rat2 [V28,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V29 rat3 [V29,T14] ( 2, 4 ) long -> x1 "Spilling to split statement for tree"
-;* V30 rat4 [V30,T20] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V31 rat5 [V31,T10] ( 2, 4 ) long -> x1 "fgMakeTemp is creating a new local variable"
-; V32 rat6 [V32,T01] ( 3, 35.20) long -> x1 "Spilling to split statement for tree"
-; V33 rat7 [V33,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V34 rat8 [V34,T00] ( 3, 44.80) long -> x2 "fgMakeTemp is creating a new local variable"
-; V35 rat9 [V35,T15] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V36 rat10 [V36,T11] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
-; V37 rat11 [V37,T16] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V38 rat12 [V38,T12] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V29 rat3 [V29,T01] ( 3, 35.20) long -> x1 "Spilling to split statement for tree"
+; V30 rat4 [V30,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V31 rat5 [V31,T00] ( 3, 44.80) long -> x2 "fgMakeTemp is creating a new local variable"
+; V32 rat6 [V32,T13] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
+; V33 rat7 [V33,T10] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V34 rat8 [V34,T14] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
+; V35 rat9 [V35,T11] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 56
@@ -97,19 +94,11 @@ G_M28904_IG07: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=000
stp x1, xzr, [fp, #0x18] // [V14 tmp8], [V15 tmp9]
stp wzr, w2, [fp, #0x28] // [V16 tmp10], [V17 tmp11]
;; size=12 bbWeight=1 PerfScore 5.00
-G_M28904_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M28904_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- ldr x0, [fp, #0x10] // [V00 this]
- ; gcrRegs +[x0]
- ldr x1, [x0]
- ldr x1, [x1, #0x38]
- ldr x1, [x1]
- ldr x1, [x1, #0x18]
- cbnz x1, G_M28904_IG10
b G_M28904_IG10
- ;; size=28 bbWeight=1 PerfScore 16.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M28904_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
ldr x19, [fp, #0x20] // [V15 tmp9]
; gcrRegs +[x19]
mov x0, x19
@@ -253,7 +242,7 @@ G_M28904_IG27: ; bbWeight=1, funclet epilog, nogc, extend
ret lr
;; size=12 bbWeight=1 PerfScore 6.00
-; Total bytes of code 476, prolog size 36, PerfScore 378.70, instruction count 119, allocated bytes for code 476 (MethodHash=9d278f17) for method Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]):ubyte:this (FullOpts)
+; Total bytes of code 452, prolog size 36, PerfScore 363.70, instruction count 113, allocated bytes for code 452 (MethodHash=9d278f17) for method Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -264,7 +253,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 91 (0x0005b) Actual length = 364 (0x00016c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-36 (-3.45%) : 612648.dasm - ILCompiler.LazyGenericsSupport+Graph1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph
1+Vertex[System.__Canon]):this (FullOpts)
@@ -8,78 +8,74 @@
; 4 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 14,1267 ) ref -> x19 this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
-; V01 arg1 [V01,T08] ( 18,1118 ) ref -> x20 class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
+; V00 this [V00,T09] ( 13,1139 ) ref -> x20 this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
+; V01 arg1 [V01,T07] ( 18,1118 ) ref -> x19 class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
; V02 loc0 [V02,T04] ( 8,1328 ) ref -> x23 class-hnd <<unknown class>>
;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-; V06 loc4 [V06,T09] ( 9,1216 ) ref -> x23 class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
+; V06 loc4 [V06,T08] ( 9,1216 ) ref -> x23 class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
; V07 loc5 [V07,T10] ( 5, 896 ) ref -> x25 class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp2 [V10,T34] ( 3, 48 ) long -> x11 "VirtualCall with runtime lookup"
+; V10 tmp2 [V10,T30] ( 3, 48 ) long -> x11 "VirtualCall with runtime lookup"
;* V11 tmp3 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V12 tmp4 [V12,T00] ( 4,3072 ) long -> x11 "VirtualCall with runtime lookup"
;* V13 tmp5 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-; V14 tmp6 [V14,T22] ( 3, 192 ) ref -> x23 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
+; V14 tmp6 [V14,T18] ( 3, 192 ) ref -> x23 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
;* V15 tmp7 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp8 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V17 tmp9 [V17,T31] ( 4, 48 ) long -> x11 "VirtualCall with runtime lookup"
+; V17 tmp9 [V17,T27] ( 4, 48 ) long -> x11 "VirtualCall with runtime lookup"
;* V18 tmp10 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-; V19 tmp11 [V19,T36] ( 3, 44.41) int -> x24 "impAppendStmt"
-; V20 tmp12 [V20,T30] ( 7, 64 ) ref -> x23 class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
-; V21 tmp13 [V21,T43] ( 4, 20 ) int -> x24 "Inline stloc first use temp"
-; V22 tmp14 [V22,T44] ( 3, 18 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V23 tmp15 [V23,T45] ( 3, 16 ) int -> x0 "Inline return value spill temp"
-; V24 tmp16 [V24,T39] ( 3, 35.59) int -> x0 "Inlining Arg"
-; V25 tmp17 [V25,T24] ( 7, 160 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-; V26 tmp18 [V26,T32] ( 4, 48 ) int -> x3 "Inline stloc first use temp"
-; V27 tmp19 [V27,T37] ( 3, 40 ) ref -> x14 class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V19 tmp11 [V19,T32] ( 3, 44.41) int -> x24 "impAppendStmt"
+; V20 tmp12 [V20,T26] ( 7, 64 ) ref -> x23 class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
+; V21 tmp13 [V21,T39] ( 4, 20 ) int -> x24 "Inline stloc first use temp"
+; V22 tmp14 [V22,T40] ( 3, 18 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V23 tmp15 [V23,T41] ( 3, 16 ) int -> x0 "Inline return value spill temp"
+; V24 tmp16 [V24,T35] ( 3, 35.59) int -> x0 "Inlining Arg"
+; V25 tmp17 [V25,T20] ( 7, 160 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
+; V26 tmp18 [V26,T28] ( 4, 48 ) int -> x3 "Inline stloc first use temp"
+; V27 tmp19 [V27,T33] ( 3, 40 ) ref -> x14 class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V28 tmp20 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-; V29 tmp21 [V29,T20] ( 3, 256 ) int -> x11 "Inline return value spill temp"
-; V30 tmp22 [V30,T13] ( 3, 710.54) int -> x0 "Inlining Arg"
-; V31 tmp23 [V31,T17] ( 3, 569.46) int -> x11 "Inlining Arg"
-; V32 tmp24 [V32,T14] ( 3, 629.97) ref -> x2 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V29 tmp21 [V29,T17] ( 3, 256 ) int -> x11 "Inline return value spill temp"
+; V30 tmp22 [V30,T12] ( 3, 710.54) int -> x0 "Inlining Arg"
+; V31 tmp23 [V31,T14] ( 3, 569.46) int -> x11 "Inlining Arg"
+; V32 tmp24 [V32,T13] ( 3, 629.97) ref -> x2 class-hnd "Inline stloc first use temp" <<unknown class>>
; V33 tmp25 [V33,T11] ( 4, 747.94) int -> x0 "Inline stloc first use temp"
-; V34 tmp26 [V34,T19] ( 7, 384 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-; V35 tmp27 [V35,T29] ( 3, 93.49) ref -> x3 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V36 tmp28 [V36,T28] ( 4, 122.99) int -> x2 "Inline stloc first use temp"
+; V34 tmp26 [V34,T16] ( 7, 384 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+; V35 tmp27 [V35,T25] ( 3, 93.49) ref -> x3 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V36 tmp28 [V36,T24] ( 4, 122.99) int -> x2 "Inline stloc first use temp"
;* V37 tmp29 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-; V38 tmp30 [V38,T46] ( 2, 16 ) ref -> x20 "field V03.Vertex (fldOffset=0x0)" P-INDEP
-; V39 tmp31 [V39,T47] ( 2, 16 ) ref -> x23 "field V03.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
+; V38 tmp30 [V38,T42] ( 2, 16 ) ref -> x19 "field V03.Vertex (fldOffset=0x0)" P-INDEP
+; V39 tmp31 [V39,T43] ( 2, 16 ) ref -> x23 "field V03.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
; V40 tmp32 [V40,T05] ( 5,1424 ) ref -> x25 "field V04.Destination (fldOffset=0x0)" P-INDEP
-; V41 tmp33 [V41,T18] ( 1, 512 ) ubyte -> x1 "field V04.Flagged (fldOffset=0x8)" P-INDEP
-; V42 tmp34 [V42,T41] ( 3, 32 ) ref -> x1 "field V05.Vertex (fldOffset=0x0)" P-INDEP
-; V43 tmp35 [V43,T42] ( 3, 32 ) ref -> x2 "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
+; V41 tmp33 [V41,T15] ( 1, 512 ) ubyte -> x1 "field V04.Flagged (fldOffset=0x8)" P-INDEP
+; V42 tmp34 [V42,T37] ( 3, 32 ) ref -> x1 "field V05.Vertex (fldOffset=0x0)" P-INDEP
+; V43 tmp35 [V43,T38] ( 3, 32 ) ref -> x2 "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
;* V44 tmp36 [V44 ] ( 0, 0 ) ref -> zero-ref "field V13.Destination (fldOffset=0x0)" P-DEP
;* V45 tmp37 [V45 ] ( 0, 0 ) ubyte -> zero-ref "field V13.Flagged (fldOffset=0x8)" P-DEP
-; V46 tmp38 [V46,T48] ( 2, 16 ) ref -> x0 "field V18.Destination (fldOffset=0x0)" P-INDEP
-; V47 tmp39 [V47,T51] ( 1, 8 ) ubyte -> x1 "field V18.Flagged (fldOffset=0x8)" P-INDEP
+; V46 tmp38 [V46,T44] ( 2, 16 ) ref -> x0 "field V18.Destination (fldOffset=0x0)" P-INDEP
+; V47 tmp39 [V47,T47] ( 1, 8 ) ubyte -> x1 "field V18.Flagged (fldOffset=0x8)" P-INDEP
;* V48 tmp40 [V48 ] ( 0, 0 ) ref -> zero-ref "field V28.Vertex (fldOffset=0x0)" P-INDEP
;* V49 tmp41 [V49 ] ( 0, 0 ) ref -> zero-ref "field V28.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
-; V50 tmp42 [V50,T33] ( 3, 48 ) byref -> x4 "BlockOp address local"
-; V51 cse0 [V51,T50] ( 2, 9 ) long -> x22 hoist "CSE - moderate"
-; V52 cse1 [V52,T40] ( 4, 32 ) int -> x1 "CSE - moderate"
+; V50 tmp42 [V50,T29] ( 3, 48 ) byref -> x4 "BlockOp address local"
+; V51 cse0 [V51,T46] ( 2, 9 ) long -> x22 hoist "CSE - moderate"
+; V52 cse1 [V52,T36] ( 4, 32 ) int -> x1 "CSE - moderate"
; V53 cse2 [V53,T06] ( 3,1280 ) long -> x24 "CSE - aggressive"
-; V54 cse3 [V54,T49] ( 4, 12.88) long -> x21 hoist "CSE - moderate"
-; V55 rat0 [V55,T53] ( 3, 4.72) long -> x0 "Spilling to split statement for tree"
-; V56 rat1 [V56,T55] ( 3, 4 ) long -> x22 "runtime lookup"
-; V57 rat2 [V57,T52] ( 3, 5.60) long -> x1 "spilling expr"
-; V58 rat3 [V58,T54] ( 3, 4.48) long -> x22 "fgMakeTemp is creating a new local variable"
-; V59 rat4 [V59,T35] ( 3, 44.80) long -> x0 "spilling expr"
-; V60 rat5 [V60,T38] ( 3, 35.84) long -> x11 "fgMakeTemp is creating a new local variable"
-; V61 rat6 [V61,T15] ( 2, 512 ) long -> x0 "Spilling to split statement for tree"
-;* V62 rat7 [V62,T21] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V63 rat8 [V63,T12] ( 3, 716.80) long -> x0 "spilling expr"
-; V64 rat9 [V64,T16] ( 2, 409.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V65 rat10 [V65,T02] ( 3,2416.64) long -> x0 "Spilling to split statement for tree"
-; V66 rat11 [V66,T01] ( 3,2867.20) long -> x1 "spilling expr"
-; V67 rat12 [V67,T03] ( 3,2293.76) long -> x11 "fgMakeTemp is creating a new local variable"
-; V68 rat13 [V68,T25] ( 3, 151.04) long -> x0 "Spilling to split statement for tree"
-; V69 rat14 [V69,T27] ( 3, 128 ) long -> x1 "runtime lookup"
-; V70 rat15 [V70,T23] ( 3, 179.20) long -> x1 "spilling expr"
-; V71 rat16 [V71,T26] ( 3, 143.36) long -> x1 "fgMakeTemp is creating a new local variable"
+; V54 cse3 [V54,T45] ( 4, 12.88) long -> x21 "CSE - moderate"
+; V55 rat0 [V55,T49] ( 3, 4.72) long -> x0 "Spilling to split statement for tree"
+; V56 rat1 [V56,T51] ( 3, 4 ) long -> x22 "runtime lookup"
+; V57 rat2 [V57,T48] ( 3, 5.60) long -> x1 "spilling expr"
+; V58 rat3 [V58,T50] ( 3, 4.48) long -> x22 "fgMakeTemp is creating a new local variable"
+; V59 rat4 [V59,T31] ( 3, 44.80) long -> x0 "spilling expr"
+; V60 rat5 [V60,T34] ( 3, 35.84) long -> x11 "fgMakeTemp is creating a new local variable"
+; V61 rat6 [V61,T02] ( 3,2416.64) long -> x0 "Spilling to split statement for tree"
+; V62 rat7 [V62,T01] ( 3,2867.20) long -> x1 "spilling expr"
+; V63 rat8 [V63,T03] ( 3,2293.76) long -> x11 "fgMakeTemp is creating a new local variable"
+; V64 rat9 [V64,T21] ( 3, 151.04) long -> x0 "Spilling to split statement for tree"
+; V65 rat10 [V65,T23] ( 3, 128 ) long -> x1 "runtime lookup"
+; V66 rat11 [V66,T19] ( 3, 179.20) long -> x1 "spilling expr"
+; V67 rat12 [V67,T22] ( 3, 143.36) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -91,13 +87,13 @@ G_M1799_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x25, [sp, #0x48]
mov fp, sp
str x0, [fp, #0x10]
- mov x19, x0
- ; gcrRegs +[x19]
- mov x20, x1
+ mov x20, x0
; gcrRegs +[x20]
+ mov x19, x1
+ ; gcrRegs +[x19]
;; size=36 bbWeight=1 PerfScore 7.50
G_M1799_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x21, [x19]
+ ldr x21, [x20]
mov x0, x21
ldr x1, [x0, #0x38]
ldr x1, [x1]
@@ -121,11 +117,11 @@ G_M1799_IG05: ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
mov x22, x0
;; size=20 bbWeight=0.36 PerfScore 1.08
G_M1799_IG06: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w1, [x19, #0x28]
- stp w1, w1, [x20, #0x18]
+ ldr w1, [x20, #0x28]
+ stp w1, w1, [x19, #0x18]
add w1, w1, #1
- str w1, [x19, #0x28]
- ldr x23, [x19, #0x08]
+ str w1, [x20, #0x28]
+ ldr x23, [x20, #0x08]
; gcrRegs +[x23]
ldr w24, [x23, #0x10]
ldr x0, [x23, #0x08]
@@ -136,7 +132,7 @@ G_M1799_IG06: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
;; size=40 bbWeight=8 PerfScore 152.00
G_M1799_IG07: ; bbWeight=2, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref
sxtw x1, w24
- mov x2, x20
+ mov x2, x19
; gcrRegs +[x2]
bl CORINFO_HELP_ARRADDR_ST
; gcrRegs -[x0 x2]
@@ -151,7 +147,7 @@ G_M1799_IG07: ; bbWeight=2, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=
G_M1799_IG08: ; bbWeight=2, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref
mov x0, x23
; gcrRegs +[x0]
- mov x1, x20
+ mov x1, x19
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -163,9 +159,9 @@ G_M1799_IG08: ; bbWeight=2, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
;; size=28 bbWeight=2 PerfScore 13.00
G_M1799_IG09: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov w0, #1
- strb w0, [x20, #0x22]
+ strb w0, [x19, #0x22]
mov x11, x22
- ldr x0, [x20, #0x10]
+ ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr x1, [x11]
blr x1
@@ -174,9 +170,9 @@ G_M1799_IG09: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
; gcrRegs +[x23]
cbnz x23, G_M1799_IG15
;; size=32 bbWeight=8 PerfScore 84.00
-G_M1799_IG10: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0 x20 x23]
- ldr x0, [x19, #0x20]
+G_M1799_IG10: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x19 x23]
+ ldr x0, [x20, #0x20]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]:Pop():ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]:this
movk x1, #0xD1FFAB1E LSL #16
@@ -186,8 +182,8 @@ G_M1799_IG10: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
blr x1
; gcrRegs +[x1]
; gcr arg pop 0
- mov x20, x0
- ; gcrRegs +[x20]
+ mov x19, x0
+ ; gcrRegs +[x19]
mov x23, x1
; gcrRegs +[x23]
ldr x0, [x21, #0x38]
@@ -203,7 +199,7 @@ G_M1799_IG11: ; bbWeight=6.40, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=
cbz x11, G_M1799_IG20
;; size=8 bbWeight=6.40 PerfScore 25.60
G_M1799_IG12: ; bbWeight=8, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
- ldr w24, [x20, #0x1C]
+ ldr w24, [x19, #0x1C]
mov x0, x23
; gcrRegs +[x0]
ldr x1, [x11]
@@ -218,7 +214,7 @@ G_M1799_IG13: ; bbWeight=6.20, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=
sxtw w0, w24
;; size=4 bbWeight=6.20 PerfScore 3.10
G_M1799_IG14: ; bbWeight=8, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref
- str w0, [x20, #0x1C]
+ str w0, [x19, #0x1C]
;; size=4 bbWeight=8 PerfScore 8.00
G_M1799_IG15: ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
mov x0, x23
@@ -231,23 +227,23 @@ G_M1799_IG15: ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M1799_IG31
+ cbz w0, G_M1799_IG28
;; size=32 bbWeight=512 PerfScore 3840.00
-G_M1799_IG16: ; bbWeight=128, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x1, [x0, #0x08]
- cmp x1, #48
+G_M1799_IG16: ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x20]
+ ldr x1, [x0, #0x38]
+ ldr x1, [x1]
+ ldr x2, [x1, #0x08]
+ cmp x2, #48
...
+0 (0.00%) : 532835.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)
@@ -23,11 +23,11 @@
; V12 loc9 [V12,T14] ( 4, 14 ) byref -> x27
; V13 loc10 [V13,T17] ( 6, 13.50) int -> x26
; V14 loc11 [V14,T15] ( 4, 14 ) byref -> x27
-; V15 loc12 [V15,T66] ( 3, 1.50) int -> x22 single-def
+; V15 loc12 [V15,T62] ( 3, 1.50) int -> x22 single-def
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp2 [V18,T31] ( 4, 3 ) long -> x11 "VirtualCall with runtime lookup"
-; V19 tmp3 [V19,T67] ( 3, 1.50) int -> x24
+; V19 tmp3 [V19,T63] ( 3, 1.50) int -> x24
;* V20 tmp4 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -35,8 +35,8 @@
;* V24 tmp8 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp10 [V26,T28] ( 4, 4 ) byref -> x0 single-def "dup spill"
-; V27 tmp11 [V27,T61] ( 3, 2 ) long -> x1 "spilling helperCall"
-; V28 tmp12 [V28,T68] ( 3, 1.50) int -> x24
+; V27 tmp11 [V27,T57] ( 3, 2 ) long -> x1 "spilling helperCall"
+; V28 tmp12 [V28,T64] ( 3, 1.50) int -> x24
;* V29 tmp13 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp14 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -48,9 +48,9 @@
; V37 tmp21 [V37,T32] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V38 tmp22 [V38,T33] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp24 [V40,T81] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp24 [V40,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp26 [V42,T82] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp26 [V42,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V43 tmp27 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -58,9 +58,9 @@
; V47 tmp31 [V47,T34] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V48 tmp32 [V48,T35] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V50 tmp34 [V50,T83] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V50 tmp34 [V50,T77] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V52 tmp36 [V52,T84] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V52 tmp36 [V52,T78] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -68,63 +68,57 @@
; V57 tmp41 [V57,T36] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V58 tmp42 [V58,T37] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V60 tmp44 [V60,T85] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V60 tmp44 [V60,T79] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V62 tmp46 [V62,T86] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V62 tmp46 [V62,T80] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V63 tmp47 [V63 ] ( 6, 10.50) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64 ] ( 9, 19 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V65 tmp49 [V65,T72] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
-; V66 tmp50 [V66,T75] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V67 tmp51 [V67,T73] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
-; V68 tmp52 [V68,T76] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T74] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
-; V70 tmp54 [V70,T77] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
+; V65 tmp49 [V65,T68] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
+; V66 tmp50 [V66,T71] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V67 tmp51 [V67,T69] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
+; V68 tmp52 [V68,T72] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T70] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
+; V70 tmp54 [V70,T73] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
; V71 tmp55 [V71,T41] ( 3, 3 ) int -> x2 "index expr"
; V72 tmp56 [V72,T42] ( 3, 3 ) int -> x1 "index expr"
; V73 tmp57 [V73,T43] ( 3, 3 ) int -> x2 "index expr"
; V74 tmp58 [V74,T44] ( 3, 3 ) int -> x1 "index expr"
; V75 tmp59 [V75,T12] ( 2, 16 ) long -> x1 "argument with side effect"
; V76 tmp60 [V76,T13] ( 2, 16 ) long -> x1 "argument with side effect"
-; V77 tmp61 [V77,T64] ( 2, 2 ) int -> x1 "argument with side effect"
+; V77 tmp61 [V77,T60] ( 2, 2 ) int -> x1 "argument with side effect"
; V78 tmp62 [V78,T45] ( 3, 3 ) int -> x2 "index expr"
; V79 tmp63 [V79,T46] ( 3, 3 ) int -> x1 "index expr"
-; V80 tmp64 [V80,T65] ( 2, 2 ) long -> x1 "argument with side effect"
-; V81 cse0 [V81,T69] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V82 cse1 [V82,T70] ( 3, 1.50) int -> x26 "CSE - moderate"
-; V83 cse2 [V83,T71] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V84 rat0 [V84,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V85 rat1 [V85,T62] ( 3, 2 ) long -> x1 "runtime lookup"
+; V80 tmp64 [V80,T61] ( 2, 2 ) long -> x1 "argument with side effect"
+; V81 cse0 [V81,T65] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V82 cse1 [V82,T66] ( 3, 1.50) int -> x26 "CSE - moderate"
+; V83 cse2 [V83,T67] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V84 rat0 [V84,T52] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V85 rat1 [V85,T58] ( 3, 2 ) long -> x1 "runtime lookup"
; V86 rat2 [V86,T47] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V87 rat3 [V87,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V88 rat4 [V88,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V89 rat5 [V89,T48] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V90 rat6 [V90,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V91 rat7 [V91,T10] ( 3, 16 ) long -> x1 "runtime lookup"
-; V92 rat8 [V92,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V93 rat9 [V93,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V94 rat10 [V94,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V95 rat11 [V95,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V96 rat12 [V96,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V97 rat13 [V97,T49] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V98 rat14 [V98,T57] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V99 rat15 [V99,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V100 rat16 [V100,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V101 rat17 [V101,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V102 rat18 [V102,T11] ( 3, 16 ) long -> x1 "runtime lookup"
-; V103 rat19 [V103,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-; V104 rat20 [V104,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
-; V105 rat21 [V105,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V106 rat22 [V106,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V107 rat23 [V107,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V108 rat24 [V108,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V109 rat25 [V109,T58] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V87 rat3 [V87,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V88 rat4 [V88,T10] ( 3, 16 ) long -> x1 "runtime lookup"
+; V89 rat5 [V89,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V90 rat6 [V90,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V91 rat7 [V91,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V92 rat8 [V92,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V93 rat9 [V93,T53] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V94 rat10 [V94,T48] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
+; V95 rat11 [V95,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V96 rat12 [V96,T11] ( 3, 16 ) long -> x1 "runtime lookup"
+; V97 rat13 [V97,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+; V98 rat14 [V98,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
+; V99 rat15 [V99,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+;* V100 rat16 [V100,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V101 rat17 [V101,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V102 rat18 [V102,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V103 rat19 [V103,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V104 rat20 [V104,T49] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V105 rat21 [V105,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V106 rat22 [V106,T74] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V107 rat23 [V107,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V108 rat24 [V108,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V109 rat25 [V109,T59] ( 3, 2 ) long -> x1 "runtime lookup"
; V110 rat26 [V110,T51] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V111 rat27 [V111,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V112 rat28 [V112,T80] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V113 rat29 [V113,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V114 rat30 [V114,T60] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V115 rat31 [V115,T63] ( 3, 2 ) long -> x1 "runtime lookup"
-; V116 rat32 [V116,T53] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 24
libraries.crossgen2.linux.arm64.checked.mch
-8 (-1.82%) : 165127.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)
@@ -17,7 +17,7 @@
; V06 tmp1 [V06,T00] ( 6, 20 ) byref -> x25 "impAppendStmt"
; V07 tmp2 [V07,T05] ( 6, 8 ) byref -> x26
; V08 tmp3 [V08,T02] ( 6, 12 ) long -> x11 "VirtualCall with runtime lookup"
-; V09 tmp4 [V09,T11] ( 4, 4 ) int -> registers
+; V09 tmp4 [V09,T11] ( 2, 3.96) int -> x0
; V10 tmp5 [V10,T06] ( 4, 8 ) ref -> x0 "argument with side effect"
; V11 cse0 [V11,T03] ( 4, 11.88) long -> x21 "CSE - aggressive"
; V12 cse1 [V12,T08] ( 5, 7 ) int -> x23 "CSE - aggressive"
@@ -109,8 +109,8 @@ G_M22994_IG06: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=5000000
; byrRegs -[x26]
; gcr arg pop 0
cmp w0, #0
- cset x21, eq
- cbnz w21, G_M22994_IG16
+ cset x0, eq
+ cbnz w0, G_M22994_IG16
;; size=56 bbWeight=1.98 PerfScore 36.63
G_M22994_IG07: ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz
add w22, w22, #1
@@ -187,10 +187,8 @@ G_M22994_IG12: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=400
; gcrRegs -[x0-x1]
; byrRegs -[x26]
; gcr arg pop 0
- cmp w0, #0
- cset x0, eq
- cbnz w0, G_M22994_IG16
- ;; size=68 bbWeight=0.02 PerfScore 0.46
+ cbz w0, G_M22994_IG16
+ ;; size=60 bbWeight=0.02 PerfScore 0.44
G_M22994_IG13: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
add w22, w22, #1
cmp w23, w22
@@ -228,7 +226,7 @@ G_M22994_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 440, prolog size 40, PerfScore 120.21, instruction count 110, allocated bytes for code 440 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 432, prolog size 40, PerfScore 120.19, instruction count 108, allocated bytes for code 432 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -239,7 +237,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 110 (0x0006e) Actual length = 440 (0x0001b8)
+ Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-0.73%) : 101054.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport
@@ -68,7 +68,6 @@
; V56 cse0 [V56,T04] ( 17, 12.50) byref -> x23 "CSE - aggressive"
; V57 cse1 [V57,T26] ( 4, 5 ) long -> x26 "CSE - moderate"
; V58 cse2 [V58,T13] ( 8, 8 ) long -> [fp+0x70] multi-def "CSE - moderate"
-; TEMP_01 byref -> [fp+0x10]
;
; Lcl frame size = 160
@@ -80,19 +79,17 @@ G_M28747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x25, x26, [sp, #0xE0]
stp x27, x28, [sp, #0xF0]
mov fp, sp
- add x9, fp, #16
+ add x9, fp, #120
movi v16.16b, #0
stp q16, q16, [x9]
- stp q16, q16, [x9, #0x20]
- stp q16, q16, [x9, #0x40]
- stp q16, q16, [x9, #0x60]
- stp q16, q16, [x9, #0x80]
+ stp xzr, xzr, [x9, #0x20]
+ str xzr, [x9, #0x30]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
; gcrRegs +[x20]
mov x21, xzr
- ;; size=68 bbWeight=1 PerfScore 14.00
+ ;; size=60 bbWeight=1 PerfScore 12.00
G_M28747_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -880,8 +877,8 @@ G_M28747_IG19: ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
ldr x1, [x11]
blr x1
; gcrRegs +[x0]
- mov x1, x0
- ; gcrRegs +[x1]
+ str x0, [fp, #0x50] // [V32 tmp17]
+ ; GC ptr vars +{V32}
ldr w0, [x22, #0x08]
; gcrRegs -[x0]
cmp w28, w0
@@ -892,11 +889,6 @@ G_M28747_IG19: ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
; gcrRegs +[x15]
str x15, [fp, #0x18] // [V45 tmp30]
; GC ptr vars +{V45}
- str x1, [fp, #0x50] // [V32 tmp17]
- ; GC ptr vars +{V32}
- add x14, x1, #8
- ; byrRegs +[x14]
- str x14, [fp, #0x10] // [TEMP_01]
ldr x0, [fp, #0x68] // [V12 loc10]
; gcrRegs +[x0]
; byrRegs -[x0]
@@ -904,8 +896,7 @@ G_M28747_IG19: ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x11]
blr x3
- ; gcrRegs -[x1 x15]
- ; byrRegs -[x14]
+ ; gcrRegs -[x15]
ldr x1, [fp, #0x68] // [V12 loc10]
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
@@ -915,18 +906,19 @@ G_M28747_IG19: ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
; GC ptr vars -{V12}
blr x2
; gcrRegs -[x1]
- ldr x14, [fp, #0x10] // [TEMP_01]
+ ldr x11, [fp, #0x50] // [V32 tmp17]
+ ; gcrRegs +[x11]
+ add x14, x11, #8
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_ASSIGN_REF
add x12, x12, [LOW RELOC #0xD1FFAB1E]
ldr x12, [x12]
+ ; GC ptr vars -{V32}
blr x12
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ldr x11, [fp, #0x50] // [V32 tmp17]
- ; gcrRegs +[x11]
add x14, x11, #16
; byrRegs +[x14]
ldr x15, [fp, #0x18] // [V45 tmp30]
@@ -934,7 +926,7 @@ G_M28747_IG19: ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_ASSIGN_REF
add x12, x12, [LOW RELOC #0xD1FFAB1E]
ldr x12, [x12]
- ; GC ptr vars -{V32 V45}
+ ; GC ptr vars -{V45}
blr x12
; gcrRegs -[x15]
; byrRegs -[x14]
@@ -997,7 +989,7 @@ G_M28747_IG19: ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
ldr x2, [x23, #0xD1FFAB1E]
; gcrRegs +[x2]
b G_M28747_IG21
- ;; size=312 bbWeight=0.02 PerfScore 2.02
+ ;; size=300 bbWeight=0.02 PerfScore 1.95
G_M28747_IG20: ; bbWeight=0.02, gcrefRegs=3780000 {x19 x20 x21 x22 x24 x25}, byrefRegs=800000 {x23}, byref
; gcrRegs -[x2 x11]
ldr x1, [x23, #0xD1FFAB1E]
@@ -1107,7 +1099,7 @@ G_M28747_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2740, prolog size 56, PerfScore 783.17, instruction count 685, allocated bytes for code 2740 (MethodHash=f6968fb4) for method Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
+; Total bytes of code 2720, prolog size 48, PerfScore 781.10, instruction count 680, allocated bytes for code 2720 (MethodHash=f6968fb4) for method Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
; ============================================================
Unwind Info:
@@ -1118,7 +1110,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 685 (0x002ad) Actual length = 2740 (0x000ab4)
+ Function Length : 680 (0x002a8) Actual length = 2720 (0x000aa0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-0.68%) : 81351.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary
2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
@@ -12,7 +12,7 @@
; V00 arg0 [V00,T19] ( 5, 5 ) ref -> x0 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax>
; V01 arg1 [V01,T10] ( 6, 11 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]>
; V02 arg2 [V02,T13] ( 4, 6 ) ref -> x20 class-hnd single-def <System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]>
-; V03 loc0 [V03 ] ( 5, 7 ) struct (24) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
+; V03 loc0 [V03 ] ( 5, 7 ) struct (24) [fp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
; V04 loc1 [V04,T11] ( 7, 10.04) ref -> x22 class-hnd exact single-def <<unknown class>>
; V05 loc2 [V05,T20] ( 5, 7 ) int -> x23 single-def
; V06 loc3 [V06,T03] ( 16, 25.04) int -> x24
@@ -20,13 +20,13 @@
; V08 loc5 [V08,T08] ( 10, 16 ) ref -> x27 class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
;* V09 loc6 [V09 ] ( 0, 0 ) ushort -> zero-ref
; V10 loc7 [V10,T12] ( 8, 8 ) ref -> x26 class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax>
-; V11 loc8 [V11 ] ( 4, 4 ) struct (24) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
+; V11 loc8 [V11 ] ( 4, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
; V12 loc9 [V12,T22] ( 3, 6 ) int -> x20 single-def
; V13 loc10 [V13,T04] ( 7, 21 ) int -> x21
; V14 loc11 [V14,T01] ( 6, 72 ) ref -> x24 class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbol>
; V15 loc12 [V15,T00] ( 6, 86 ) int -> x0
; V16 loc13 [V16,T23] ( 2, 4 ) ref -> x24 class-hnd <<unknown class>>
-; V17 loc14 [V17 ] ( 4, 8 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]>
+; V17 loc14 [V17 ] ( 4, 8 ) struct ( 8) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]>
; V18 loc15 [V18,T24] ( 2, 4 ) ref -> x24 class-hnd <<unknown class>>
;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V20 tmp1 [V20,T05] ( 10, 20 ) ref -> x27 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
@@ -35,7 +35,7 @@
;* V23 tmp4 [V23 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
; V24 tmp5 [V24,T14] ( 4, 8 ) ref -> x0 class-hnd "Inlining Arg" <System.String>
;* V25 tmp6 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.Symbols.AliasSymbol>
-; V26 tmp7 [V26 ] ( 4, 8 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V17.array (fldOffset=0x0)" P-DEP
+; V26 tmp7 [V26 ] ( 4, 8 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V17.array (fldOffset=0x0)" P-DEP
; V27 tmp8 [V27,T25] ( 2, 4 ) ref -> x1 "field V22.array (fldOffset=0x0)" P-INDEP
; V28 tmp9 [V28,T26] ( 2, 4 ) ref -> x1 "field V23.array (fldOffset=0x0)" P-INDEP
; V29 tmp10 [V29,T27] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
@@ -47,27 +47,27 @@
; V35 tmp16 [V35,T18] ( 2, 8 ) ref -> x2 "argument with side effect"
; V36 cse0 [V36,T21] ( 5, 7 ) long -> x21 "CSE - moderate"
; V37 cse1 [V37,T02] ( 2, 33 ) long -> x23 hoist "CSE - aggressive"
-; TEMP_01 byref -> [fp+0x18]
;
-; Lcl frame size = 72
+; Lcl frame size = 56
G_M1087_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0xA0]!
- stp x19, x20, [sp, #0x58]
- stp x21, x22, [sp, #0x68]
- stp x23, x24, [sp, #0x78]
- stp x25, x26, [sp, #0x88]
- str x27, [sp, #0x98]
+ stp fp, lr, [sp, #-0x90]!
+ stp x19, x20, [sp, #0x48]
+ stp x21, x22, [sp, #0x58]
+ stp x23, x24, [sp, #0x68]
+ stp x25, x26, [sp, #0x78]
+ str x27, [sp, #0x88]
mov fp, sp
- add x9, fp, #24
+ add x9, fp, #16
movi v16.16b, #0
stp q16, q16, [x9]
- stp q16, q16, [x9, #0x20]
+ stp xzr, xzr, [x9, #0x20]
+ str xzr, [x9, #0x30]
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=52 bbWeight=1 PerfScore 10.50
+ ;; size=56 bbWeight=1 PerfScore 11.50
G_M1087_IG02: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldrsb wzr, [x0]
@@ -85,7 +85,7 @@ G_M1087_IG02: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
ldr x4, [x11]
blr x4
; byrRegs -[x2]
- add x8, fp, #64 // [V03 loc0]
+ add x8, fp, #48 // [V03 loc0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr wzr, [x0]
@@ -96,7 +96,7 @@ G_M1087_IG02: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
add x1, x1, [LOW RELOC #0xD1FFAB1E]
ldr x21, [x1]
mov x1, x21
- add x0, fp, #64 // [V03 loc0]
+ add x0, fp, #48 // [V03 loc0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
@@ -110,7 +110,7 @@ G_M1087_IG02: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
mov x22, x0
; gcrRegs +[x22]
mov x1, x21
- add x0, fp, #64 // [V03 loc0]
+ add x0, fp, #48 // [V03 loc0]
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -125,7 +125,7 @@ G_M1087_IG02: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
;; size=184 bbWeight=1 PerfScore 54.00
G_M1087_IG03: ; bbWeight=3.96, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
mov x1, x21
- add x0, fp, #64 // [V03 loc0]
+ add x0, fp, #48 // [V03 loc0]
mov w2, w24
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -160,7 +160,7 @@ G_M1087_IG04: ; bbWeight=1.98, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
; gcrRegs -[x25]
mov x26, x0
; gcrRegs +[x26]
- add x8, fp, #40 // [V11 loc8]
+ add x8, fp, #24 // [V11 loc8]
mov x0, x26
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -175,7 +175,7 @@ G_M1087_IG04: ; bbWeight=1.98, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
; gcrRegs +[x0]
mov x27, x0
; gcrRegs +[x27]
- add x0, fp, #40 // [V11 loc8]
+ add x0, fp, #24 // [V11 loc8]
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -302,7 +302,7 @@ G_M1087_IG07: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}
G_M1087_IG08: ; bbWeight=0.04, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
mov x1, x21
- add x0, fp, #64 // [V03 loc0]
+ add x0, fp, #48 // [V03 loc0]
mov w2, w24
adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -337,7 +337,7 @@ G_M1087_IG09: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
; gcrRegs -[x25]
mov x26, x0
; gcrRegs +[x26]
- add x8, fp, #40 // [V11 loc8]
+ add x8, fp, #24 // [V11 loc8]
mov x0, x26
adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -352,7 +352,7 @@ G_M1087_IG09: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
; gcrRegs +[x0]
mov x27, x0
; gcrRegs +[x27]
- add x0, fp, #40 // [V11 loc8]
+ add x0, fp, #24 // [V11 loc8]
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -370,16 +370,12 @@ G_M1087_IG09: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
blr x12
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- add x14, x27, #48
- ; byrRegs +[x14]
- str x14, [fp, #0x18] // [TEMP_01]
mov x0, x26
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
- ; byrRegs -[x14]
mov x1, x26
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
@@ -388,7 +384,7 @@ G_M1087_IG09: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
ldr x2, [x11]
blr x2
; gcrRegs -[x1 x26]
- ldr x14, [fp, #0x18] // [TEMP_01]
+ add x14, x27, #48
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
@@ -399,7 +395,7 @@ G_M1087_IG09: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
; gcrRegs -[x0 x15]
; byrRegs -[x14]
b G_M1087_IG11
- ;; size=200 bbWeight=0.02 PerfScore 1.14
+ ;; size=192 bbWeight=0.02 PerfScore 1.08
G_M1087_IG10: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byrefRegs=0000 {}, byref
; gcrRegs -[x27] +[x25]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
@@ -423,16 +419,12 @@ G_M1087_IG10: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
blr x12
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- add x14, x27, #48
- ; byrRegs +[x14]
- str x14, [fp, #0x18] // [TEMP_01]
mov x0, x25
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
- ; byrRegs -[x14]
mov x1, x25
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
@@ -441,7 +433,7 @@ G_M1087_IG10: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
ldr x2, [x11]
blr x2
; gcrRegs -[x1 x25]
- ldr x14, [fp, #0x18] // [TEMP_01]
+ add x14, x27, #48
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
@@ -451,7 +443,7 @@ G_M1087_IG10: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
blr x12
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ;; size=136 bbWeight=0.02 PerfScore 0.84
+ ;; size=128 bbWeight=0.02 PerfScore 0.78
G_M1087_IG11: ; bbWeight=0.04, gcrefRegs=8580000 {x19 x20 x22 x27}, byrefRegs=0000 {}, byref, isz
ldr w14, [x22, #0x08]
cmp w24, w14
@@ -569,11 +561,11 @@ G_M1087_IG18: ; bbWeight=2, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=00
ldr x2, [x11]
blr x2
; gcrRegs -[x1] +[x0]
- str x0, [fp, #0x20] // [V17 loc14]
+ str x0, [fp, #0x10] // [V17 loc14]
adrp x1, [HIGH RELOC #0xD1FFAB1E] // <unknown method>
add x1, x1, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x1]
- add x0, fp, #32 // [V17 loc14]
+ add x0, fp, #16 // [V17 loc14]
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -622,11 +614,11 @@ G_M1087_IG19: ; bbWeight=2, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=00
ldr x2, [x11]
blr x2
; gcrRegs -[x1] +[x0]
- str x0, [fp, #0x20] // [V17 loc14]
+ str x0, [fp, #0x10] // [V17 loc14]
adrp x1, [HIGH RELOC #0xD1FFAB1E] // <unknown method>
add x1, x1, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x1]
- add x0, fp, #32 // [V17 loc14]
+ add x0, fp, #16 // [V17 loc14]
; gcrRegs -[x0]
...
-4 (-0.15%) : 165507.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
@@ -35,13 +35,13 @@
; V23 tmp2 [V23,T55] ( 2, 0 ) ref -> x19 class-hnd single-def "finalizable newobj spill" <<unknown class>>
; V24 tmp3 [V24,T46] ( 3, 2 ) int -> x26
; V25 tmp4 [V25,T22] ( 4, 16 ) int -> x25 "impSpillLclRefs"
-; V26 tmp5 [V26,T33] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
+; V26 tmp5 [V26,T32] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
;* V27 tmp6 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V28 tmp7 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V29 tmp8 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V30 tmp9 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>>
; V31 tmp10 [V31,T54] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V32 tmp11 [V32,T29] ( 2, 0.16) ubyte -> x0 "Inline return value spill temp"
+;* V32 tmp11 [V32,T40] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp12 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
; V34 tmp13 [V34,T14] ( 6, 24 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
;* V35 tmp14 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -57,18 +57,18 @@
; V45 tmp24 [V45,T09] ( 4, 32 ) ref -> x0 "argument with side effect"
; V46 tmp25 [V46,T10] ( 4, 32 ) ref -> x0 "argument with side effect"
; V47 tmp26 [V47,T11] ( 4, 32 ) ref -> [fp+0x30] "argument with side effect"
-; V48 tmp27 [V48,T34] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V49 tmp28 [V49,T35] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V50 tmp29 [V50,T36] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V51 tmp30 [V51,T37] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V52 tmp31 [V52,T38] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V53 tmp32 [V53,T39] ( 2, 8 ) ref -> x1 "argument with side effect"
-; V54 tmp33 [V54,T40] ( 2, 8 ) ref -> [fp+0x28] spill-single-def "argument with side effect"
+; V48 tmp27 [V48,T33] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V49 tmp28 [V49,T34] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V50 tmp29 [V50,T35] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V51 tmp30 [V51,T36] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V52 tmp31 [V52,T37] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V53 tmp32 [V53,T38] ( 2, 8 ) ref -> x1 "argument with side effect"
+; V54 tmp33 [V54,T39] ( 2, 8 ) ref -> [fp+0x28] spill-single-def "argument with side effect"
; V55 tmp34 [V55,T20] ( 4, 16 ) ref -> [fp+0x20] "argument with side effect"
; V56 tmp35 [V56,T21] ( 4, 16 ) ref -> x1 "argument with side effect"
-; V57 tmp36 [V57,T30] ( 4, 8 ) ref -> [fp+0x18] "argument with side effect"
-; V58 tmp37 [V58,T31] ( 4, 8 ) ref -> x3 "argument with side effect"
-; V59 tmp38 [V59,T32] ( 4, 8 ) ref -> x0 "argument with side effect"
+; V57 tmp36 [V57,T29] ( 4, 8 ) ref -> [fp+0x18] "argument with side effect"
+; V58 tmp37 [V58,T30] ( 4, 8 ) ref -> x3 "argument with side effect"
+; V59 tmp38 [V59,T31] ( 4, 8 ) ref -> x0 "argument with side effect"
; V60 cse0 [V60,T13] ( 8, 28 ) long -> [fp+0x78] multi-def "CSE - aggressive"
; V61 cse1 [V61,T00] ( 6, 71.28) long -> [fp+0x70] spill-single-def "CSE - aggressive"
; V62 cse2 [V62,T26] ( 4, 11.88) long -> [fp+0x68] spill-single-def "CSE - moderate"
@@ -478,14 +478,11 @@ G_M58711_IG18: ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
ldr x11, [x20, x1]
; gcrRegs +[x11]
cmp x0, x11
- cset x0, eq
- ; gcrRegs -[x0]
- cbz w0, G_M58711_IG21
+ bne G_M58711_IG21
ldr x1, [fp, #0x10] // [V67 cse7]
; byrRegs +[x1]
ldr x2, [fp, #0x58] // [V64 cse4]
ldr x0, [x1, x2]
- ; gcrRegs +[x0]
ldr x11, [fp, #0x40] // [V71 cse11]
; gcrRegs -[x11]
ldr wzr, [x0]
@@ -513,7 +510,7 @@ G_M58711_IG18: ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
; gcr arg pop 0
cbnz w0, G_M58711_IG20
b G_M58711_IG21
- ;; size=296 bbWeight=0.08 PerfScore 8.96
+ ;; size=292 bbWeight=0.08 PerfScore 8.92
G_M58711_IG19: ; bbWeight=0.08, gcVars=0000000000000014 {V19 V67}, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V02 V04 V19 V67}
ldr x1, [fp, #0x10] // [V67 cse7]
@@ -1134,7 +1131,7 @@ G_M58711_IG55: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
brk_unix #0
;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2628, prolog size 40, PerfScore 2218.63, instruction count 657, allocated bytes for code 2628 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
+; Total bytes of code 2624, prolog size 40, PerfScore 2218.59, instruction count 656, allocated bytes for code 2624 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
; ============================================================
Unwind Info:
@@ -1145,7 +1142,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 657 (0x00291) Actual length = 2628 (0x000a44)
+ Function Length : 656 (0x00290) Actual length = 2624 (0x000a40)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.15%) : 177787.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
@@ -34,7 +34,7 @@
; V22 tmp2 [V22,T55] ( 2, 0 ) ref -> x19 class-hnd single-def "finalizable newobj spill" <<unknown class>>
; V23 tmp3 [V23,T46] ( 3, 2 ) int -> x26
; V24 tmp4 [V24,T22] ( 4, 16 ) int -> x25 "impSpillLclRefs"
-; V25 tmp5 [V25,T33] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
+; V25 tmp5 [V25,T32] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
;* V26 tmp6 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V27 tmp7 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V28 tmp8 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
@@ -42,7 +42,7 @@
; V30 tmp10 [V30,T53] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V31 tmp11 [V31,T56] ( 2, 0 ) ref -> x19 class-hnd single-def "finalizable newobj spill" <<unknown class>>
; V32 tmp12 [V32,T54] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V33 tmp13 [V33,T29] ( 2, 0.16) ubyte -> x0 "Inline return value spill temp"
+;* V33 tmp13 [V33,T40] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V34 tmp14 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
; V35 tmp15 [V35,T14] ( 6, 24 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
;* V36 tmp16 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -58,18 +58,18 @@
; V46 tmp26 [V46,T09] ( 4, 32 ) ref -> x0 "argument with side effect"
; V47 tmp27 [V47,T10] ( 4, 32 ) ref -> x0 "argument with side effect"
; V48 tmp28 [V48,T11] ( 4, 32 ) ref -> [fp+0x30] "argument with side effect"
-; V49 tmp29 [V49,T34] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V50 tmp30 [V50,T35] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V51 tmp31 [V51,T36] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V52 tmp32 [V52,T37] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V53 tmp33 [V53,T38] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V54 tmp34 [V54,T39] ( 2, 8 ) ref -> x1 "argument with side effect"
-; V55 tmp35 [V55,T40] ( 2, 8 ) ref -> [fp+0x28] spill-single-def "argument with side effect"
+; V49 tmp29 [V49,T33] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V50 tmp30 [V50,T34] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V51 tmp31 [V51,T35] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V52 tmp32 [V52,T36] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V53 tmp33 [V53,T37] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V54 tmp34 [V54,T38] ( 2, 8 ) ref -> x1 "argument with side effect"
+; V55 tmp35 [V55,T39] ( 2, 8 ) ref -> [fp+0x28] spill-single-def "argument with side effect"
; V56 tmp36 [V56,T20] ( 4, 16 ) ref -> [fp+0x20] "argument with side effect"
; V57 tmp37 [V57,T21] ( 4, 16 ) ref -> x1 "argument with side effect"
-; V58 tmp38 [V58,T30] ( 4, 8 ) ref -> [fp+0x18] "argument with side effect"
-; V59 tmp39 [V59,T31] ( 4, 8 ) ref -> x3 "argument with side effect"
-; V60 tmp40 [V60,T32] ( 4, 8 ) ref -> x0 "argument with side effect"
+; V58 tmp38 [V58,T29] ( 4, 8 ) ref -> [fp+0x18] "argument with side effect"
+; V59 tmp39 [V59,T30] ( 4, 8 ) ref -> x3 "argument with side effect"
+; V60 tmp40 [V60,T31] ( 4, 8 ) ref -> x0 "argument with side effect"
; V61 cse0 [V61,T13] ( 8, 28 ) long -> [fp+0x78] multi-def "CSE - aggressive"
; V62 cse1 [V62,T00] ( 6, 71.28) long -> [fp+0x70] spill-single-def "CSE - aggressive"
; V63 cse2 [V63,T26] ( 4, 11.88) long -> [fp+0x68] spill-single-def "CSE - moderate"
@@ -479,14 +479,11 @@ G_M58711_IG18: ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
ldr x11, [x20, x1]
; gcrRegs +[x11]
cmp x0, x11
- cset x0, eq
- ; gcrRegs -[x0]
- cbz w0, G_M58711_IG21
+ bne G_M58711_IG21
ldr x1, [fp, #0x10] // [V68 cse7]
; byrRegs +[x1]
ldr x2, [fp, #0x58] // [V65 cse4]
ldr x0, [x1, x2]
- ; gcrRegs +[x0]
ldr x11, [fp, #0x40] // [V72 cse11]
; gcrRegs -[x11]
ldr wzr, [x0]
@@ -514,7 +511,7 @@ G_M58711_IG18: ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
; gcr arg pop 0
cbnz w0, G_M58711_IG20
b G_M58711_IG21
- ;; size=296 bbWeight=0.08 PerfScore 8.96
+ ;; size=292 bbWeight=0.08 PerfScore 8.92
G_M58711_IG19: ; bbWeight=0.08, gcVars=0000000000000014 {V18 V68}, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V02 V04 V18 V68}
ldr x1, [fp, #0x10] // [V68 cse7]
@@ -1156,7 +1153,7 @@ G_M58711_IG55: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=84 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2676, prolog size 40, PerfScore 2218.63, instruction count 669, allocated bytes for code 2676 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
+; Total bytes of code 2672, prolog size 40, PerfScore 2218.59, instruction count 668, allocated bytes for code 2672 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
; ============================================================
Unwind Info:
@@ -1167,7 +1164,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 669 (0x0029d) Actual length = 2676 (0x000a74)
+ Function Length : 668 (0x0029c) Actual length = 2672 (0x000a70)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.10%) : 101327.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray
1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
@@ -54,7 +54,7 @@
; V42 tmp8 [V42,T10] ( 6, 48 ) ref -> [fp+0x38] class-hnd "non-inline candidate call" <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol>
;* V43 tmp9 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V44 tmp10 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
-; V45 tmp11 [V45,T41] ( 2, 0.16) ubyte -> x1 "Inline return value spill temp"
+;* V45 tmp11 [V45,T42] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V46 tmp12 [V46,T16] ( 4, 32 ) ref -> [fp+0x30] class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol>
;* V47 tmp13 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
; V48 tmp14 [V48,T30] ( 4, 16 ) ubyte -> x2 "Inline return value spill temp"
@@ -100,7 +100,7 @@
;* V88 tmp54 [V88,T57] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; V89 tmp55 [V89,T45] ( 2, 8 ) int -> x1 "argument with side effect"
; V90 cse0 [V90,T04] ( 14, 72 ) long -> [fp+0x78] multi-def "CSE - aggressive"
-; V91 cse1 [V91,T42] ( 4, 8 ) int -> [fp+0x74] spill-single-def "CSE - moderate"
+; V91 cse1 [V91,T41] ( 4, 8 ) int -> [fp+0x74] spill-single-def "CSE - moderate"
; V92 cse2 [V92,T15] ( 9, 38 ) long -> x27 "CSE - aggressive"
; V93 cse3 [V93,T09] ( 10, 56 ) long -> [fp+0x68] multi-def "CSE - aggressive"
; V94 cse4 [V94,T02] ( 18, 72 ) long -> [fp+0x60] multi-def "CSE - aggressive"
@@ -805,10 +805,9 @@ G_M30062_IG27: ; bbWeight=0.08, gcrefRegs=D80000 {x19 x20 x22 x23}, byref
blr x1
; gcrRegs -[x0]
cmp w0, #32
- cset x1, ne
- cbz w1, G_M30062_IG34
+ beq G_M30062_IG34
b G_M30062_IG38
- ;; size=260 bbWeight=0.08 PerfScore 7.72
+ ;; size=256 bbWeight=0.08 PerfScore 7.68
G_M30062_IG28: ; bbWeight=0.08, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=2200000 {x21 x25}, byref, isz
ldr x1, [fp, #0x78] // [V90 cse0]
add x0, fp, #0xD1FFAB1E // [V19 loc12]
@@ -1420,7 +1419,7 @@ G_M30062_IG71: ; bbWeight=0, gcVars=00000000000000000000000000000000 {},
brk_unix #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 3844, prolog size 64, PerfScore 3960.13, instruction count 961, allocated bytes for code 3844 (MethodHash=40c98a91) for method Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
+; Total bytes of code 3840, prolog size 64, PerfScore 3960.09, instruction count 960, allocated bytes for code 3840 (MethodHash=40c98a91) for method Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
; ============================================================
Unwind Info:
@@ -1431,7 +1430,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 961 (0x003c1) Actual length = 3844 (0x000f04)
+ Function Length : 960 (0x003c0) Actual length = 3840 (0x000f00)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries.pmi.linux.arm64.checked.mch
-20 (-4.63%) : 179326.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,System.Nullable
1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,System.Nullable
1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 17 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
+; V00 this [V00,T04] ( 7, 16 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
; V01 arg1 [V01,T17] ( 4, 4 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
-; V02 arg2 [V02,T20] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V02 arg2 [V02,T19] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V03 loc0 [V03 ] ( 3, 11 ) struct (24) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SmallDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
; V04 loc1 [V04,T10] ( 4, 8 ) struct (16) [fp+0x30] do-not-enreg[SFR] multireg-ret must-init ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,33 +27,30 @@
; V16 tmp11 [V16 ] ( 3, 11 ) ref -> [fp+0x40] do-not-enreg[X] addr-exposed "field V03._stack (fldOffset=0x0)" P-DEP
; V17 tmp12 [V17 ] ( 3, 11 ) ref -> [fp+0x48] do-not-enreg[X] addr-exposed "field V03._next (fldOffset=0x8)" P-DEP
; V18 tmp13 [V18 ] ( 3, 11 ) ref -> [fp+0x50] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x10)" P-DEP
-; V19 tmp14 [V19,T25] ( 2, 4 ) ubyte -> x23 "field V11.hasValue (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T26] ( 2, 4 ) int -> x24 "field V11.value (fldOffset=0x4)" P-INDEP
+; V19 tmp14 [V19,T23] ( 2, 4 ) ubyte -> x23 "field V11.hasValue (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T24] ( 2, 4 ) int -> x24 "field V11.value (fldOffset=0x4)" P-INDEP
; V21 tmp16 [V21 ] ( 2, 4 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V12._stack (fldOffset=0x0)" P-DEP
; V22 tmp17 [V22 ] ( 2, 4 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V12._next (fldOffset=0x8)" P-DEP
; V23 tmp18 [V23 ] ( 2, 4 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V12._current (fldOffset=0x10)" P-DEP
-; V24 tmp19 [V24,T27] ( 2, 4 ) long -> x1 "argument with side effect"
+; V24 tmp19 [V24,T25] ( 2, 4 ) long -> x1 "argument with side effect"
; V25 tmp20 [V25,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V26 tmp21 [V26,T14] ( 2, 8 ) long -> x1 "argument with side effect"
; V27 tmp22 [V27,T07] ( 3, 12 ) struct ( 8) [fp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
; V28 tmp23 [V28,T15] ( 2, 8 ) int -> x1 "argument with side effect"
; V29 tmp24 [V29,T12] ( 2, 8 ) ref -> x0 "argument with side effect"
; V30 tmp25 [V30,T13] ( 2, 8 ) ref -> x2 "argument with side effect"
-; V31 cse0 [V31,T23] ( 3, 4 ) long -> x22 "CSE - aggressive"
-;* V32 cse1 [V32,T29] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V31 cse0 [V31,T21] ( 3, 4 ) long -> x22 "CSE - aggressive"
+;* V32 cse1 [V32,T26] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; V33 cse2 [V33,T16] ( 4, 4.40) long -> x21 "CSE - aggressive"
-; V34 rat0 [V34,T21] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V35 rat1 [V35,T24] ( 3, 4 ) long -> x22 "runtime lookup"
+; V34 rat0 [V34,T20] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V35 rat1 [V35,T22] ( 3, 4 ) long -> x22 "runtime lookup"
; V36 rat2 [V36,T18] ( 3, 5.60) long -> x22 "fgMakeTemp is creating a new local variable"
-; V37 rat3 [V37,T22] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V38 rat4 [V38,T28] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V39 rat5 [V39,T19] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V40 rat6 [V40,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V41 rat7 [V41,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V42 rat8 [V42,T09] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-; V43 rat9 [V43,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V44 rat10 [V44,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V45 rat11 [V45,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V37 rat3 [V37,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V38 rat4 [V38,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V39 rat5 [V39,T09] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+; V40 rat6 [V40,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V41 rat7 [V41,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V42 rat8 [V42,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 80
@@ -118,14 +115,9 @@ G_M14191_IG06: ; bbWeight=1, nogc, extend
ldr x0, [fp, #0x28]
str x0, [fp, #0x50]
;; size=16 bbWeight=1 PerfScore 7.00
-G_M14191_IG07: ; bbWeight=1, isz, extend
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x58]
- cbnz x0, G_M14191_IG12
+G_M14191_IG07: ; bbWeight=1, extend
b G_M14191_IG12
- ;; size=24 bbWeight=1 PerfScore 14.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M14191_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x22
add x0, fp, #64 // [V03 loc0]
@@ -216,7 +208,7 @@ G_M14191_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ret lr
;; size=20 bbWeight=1 PerfScore 5.00
-; Total bytes of code 432, prolog size 40, PerfScore 322.60, instruction count 108, allocated bytes for code 432 (MethodHash=ea3fc890) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 412, prolog size 40, PerfScore 309.60, instruction count 103, allocated bytes for code 412 (MethodHash=ea3fc890) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -227,7 +219,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
+ Function Length : 103 (0x00067) Actual length = 412 (0x00019c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-4.63%) : 221011.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,System.Nullable
1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,System.Nullable
1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 17 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
+; V00 this [V00,T04] ( 7, 16 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
; V01 arg1 [V01,T17] ( 4, 4 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
-; V02 arg2 [V02,T20] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V02 arg2 [V02,T19] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V03 loc0 [V03 ] ( 3, 11 ) struct (24) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SmallDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
; V04 loc1 [V04,T10] ( 4, 8 ) struct (16) [fp+0x30] do-not-enreg[SFR] multireg-ret must-init ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,33 +27,30 @@
; V16 tmp11 [V16 ] ( 3, 11 ) ref -> [fp+0x40] do-not-enreg[X] addr-exposed "field V03._stack (fldOffset=0x0)" P-DEP
; V17 tmp12 [V17 ] ( 3, 11 ) ref -> [fp+0x48] do-not-enreg[X] addr-exposed "field V03._next (fldOffset=0x8)" P-DEP
; V18 tmp13 [V18 ] ( 3, 11 ) ref -> [fp+0x50] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x10)" P-DEP
-; V19 tmp14 [V19,T25] ( 2, 4 ) ubyte -> x23 "field V11.hasValue (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T26] ( 2, 4 ) int -> x24 "field V11.value (fldOffset=0x4)" P-INDEP
+; V19 tmp14 [V19,T23] ( 2, 4 ) ubyte -> x23 "field V11.hasValue (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T24] ( 2, 4 ) int -> x24 "field V11.value (fldOffset=0x4)" P-INDEP
; V21 tmp16 [V21 ] ( 2, 4 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V12._stack (fldOffset=0x0)" P-DEP
; V22 tmp17 [V22 ] ( 2, 4 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V12._next (fldOffset=0x8)" P-DEP
; V23 tmp18 [V23 ] ( 2, 4 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V12._current (fldOffset=0x10)" P-DEP
-; V24 tmp19 [V24,T27] ( 2, 4 ) long -> x1 "argument with side effect"
+; V24 tmp19 [V24,T25] ( 2, 4 ) long -> x1 "argument with side effect"
; V25 tmp20 [V25,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V26 tmp21 [V26,T14] ( 2, 8 ) long -> x1 "argument with side effect"
; V27 tmp22 [V27,T07] ( 3, 12 ) struct ( 8) [fp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
; V28 tmp23 [V28,T15] ( 2, 8 ) int -> x1 "argument with side effect"
; V29 tmp24 [V29,T12] ( 2, 8 ) ref -> x0 "argument with side effect"
; V30 tmp25 [V30,T13] ( 2, 8 ) ref -> x2 "argument with side effect"
-; V31 cse0 [V31,T23] ( 3, 4 ) long -> x22 "CSE - aggressive"
-;* V32 cse1 [V32,T29] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V31 cse0 [V31,T21] ( 3, 4 ) long -> x22 "CSE - aggressive"
+;* V32 cse1 [V32,T26] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; V33 cse2 [V33,T16] ( 4, 4.40) long -> x21 "CSE - aggressive"
-; V34 rat0 [V34,T21] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V35 rat1 [V35,T24] ( 3, 4 ) long -> x22 "runtime lookup"
+; V34 rat0 [V34,T20] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V35 rat1 [V35,T22] ( 3, 4 ) long -> x22 "runtime lookup"
; V36 rat2 [V36,T18] ( 3, 5.60) long -> x22 "fgMakeTemp is creating a new local variable"
-; V37 rat3 [V37,T22] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V38 rat4 [V38,T28] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V39 rat5 [V39,T19] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V40 rat6 [V40,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V41 rat7 [V41,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V42 rat8 [V42,T09] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-; V43 rat9 [V43,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V44 rat10 [V44,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V45 rat11 [V45,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V37 rat3 [V37,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V38 rat4 [V38,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V39 rat5 [V39,T09] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+; V40 rat6 [V40,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V41 rat7 [V41,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V42 rat8 [V42,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 80
@@ -118,14 +115,9 @@ G_M14191_IG06: ; bbWeight=1, nogc, extend
ldr x0, [fp, #0x28]
str x0, [fp, #0x50]
;; size=16 bbWeight=1 PerfScore 7.00
-G_M14191_IG07: ; bbWeight=1, isz, extend
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x58]
- cbnz x0, G_M14191_IG12
+G_M14191_IG07: ; bbWeight=1, extend
b G_M14191_IG12
- ;; size=24 bbWeight=1 PerfScore 14.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M14191_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x22
add x0, fp, #64 // [V03 loc0]
@@ -216,7 +208,7 @@ G_M14191_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ret lr
;; size=20 bbWeight=1 PerfScore 5.00
-; Total bytes of code 432, prolog size 40, PerfScore 322.60, instruction count 108, allocated bytes for code 432 (MethodHash=ea3fc890) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 412, prolog size 40, PerfScore 309.60, instruction count 103, allocated bytes for code 412 (MethodHash=ea3fc890) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -227,7 +219,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
+ Function Length : 103 (0x00067) Actual length = 412 (0x00019c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-3.00%) : 159267.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
@@ -8,18 +8,18 @@
; 2 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 14 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]>
+; V00 this [V00,T04] ( 7, 13 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]>
; V01 arg1 [V01,T05] ( 8, 12 ) ref -> x19 class-hnd single-def <System.Array>
; V02 arg2 [V02,T08] ( 6, 8 ) int -> registers
; V03 loc0 [V03 ] ( 5, 12 ) struct (48) [fp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableSortedSet`1+Enumerator[System.__Canon]>
-; V04 loc1 [V04,T22] ( 2, 4 ) ref -> x23 class-hnd <System.__Canon>
+; V04 loc1 [V04,T20] ( 2, 4 ) ref -> x23 class-hnd <System.__Canon>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V09 tmp4 [V09,T07] ( 3, 12 ) int -> x20 "impSpillLclRefs"
;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V11 tmp6 [V11,T19] ( 6, 4 ) long -> x2 "Indirect call through function pointer"
+; V11 tmp6 [V11,T17] ( 6, 4 ) long -> x2 "Indirect call through function pointer"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V14 tmp9 [V14 ] ( 2, 4 ) struct (48) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableSortedSet`1+Enumerator[System.__Canon]>
@@ -29,27 +29,24 @@
; V18 tmp13 [V18,T13] ( 3, 6 ) int -> x0 "Inline stloc first use temp"
; V19 tmp14 [V19,T06] ( 3, 12 ) byref -> x25 "Inlining Arg"
;* V20 tmp15 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp16 [V21,T29] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V22 tmp17 [V22,T23] ( 2, 4 ) long -> x1 "argument with side effect"
+; V21 tmp16 [V21,T26] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V22 tmp17 [V22,T21] ( 2, 4 ) long -> x1 "argument with side effect"
; V23 tmp18 [V23,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V24 tmp19 [V24,T09] ( 2, 8 ) long -> x1 "argument with side effect"
; V25 tmp20 [V25,T10] ( 2, 8 ) long -> x2 "argument with side effect"
-; V26 PSPSym [V26,T26] ( 1, 1 ) long -> [fp+0x80] do-not-enreg[V] "PSPSym"
-; V27 cse0 [V27,T20] ( 3, 4 ) long -> x22 "CSE - aggressive"
-; V28 cse1 [V28,T24] ( 6, 3.20) long -> x21 multi-def "CSE - aggressive"
+; V26 PSPSym [V26,T23] ( 1, 1 ) long -> [fp+0x80] do-not-enreg[V] "PSPSym"
+; V27 cse0 [V27,T18] ( 3, 4 ) long -> x22 "CSE - aggressive"
+; V28 cse1 [V28,T22] ( 6, 3.20) long -> x21 multi-def "CSE - aggressive"
; V29 cse2 [V29,T11] ( 3, 6 ) ref -> x1 "CSE - aggressive"
-; V30 rat0 [V30,T17] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V31 rat1 [V31,T21] ( 3, 4 ) long -> x22 "runtime lookup"
+; V30 rat0 [V30,T16] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
+; V31 rat1 [V31,T19] ( 3, 4 ) long -> x22 "runtime lookup"
; V32 rat2 [V32,T14] ( 3, 5.60) long -> x22 "fgMakeTemp is creating a new local variable"
-; V33 rat3 [V33,T18] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V34 rat4 [V34,T25] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V35 rat5 [V35,T15] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V36 rat6 [V36,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V37 rat7 [V37,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V38 rat8 [V38,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
-; V39 rat9 [V39,T16] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
-; V40 rat10 [V40,T27] ( 3, 0 ) long -> x21 "Spilling to split statement for tree"
-; V41 rat11 [V41,T28] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V33 rat3 [V33,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V34 rat4 [V34,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V35 rat5 [V35,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+; V36 rat6 [V36,T15] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V37 rat7 [V37,T24] ( 3, 0 ) long -> x21 "Spilling to split statement for tree"
+; V38 rat8 [V38,T25] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 120
@@ -127,18 +124,10 @@ G_M52227_IG06: ; bbWeight=1, nogc, extend
ldp x0, x1, [fp, #0x38]
stp x0, x1, [fp, #0x68]
;; size=24 bbWeight=1 PerfScore 12.00
-G_M52227_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x10] // [V00 this]
- ; gcrRegs +[x2]
- ldr x0, [x2]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x10]
- cbnz x0, G_M52227_IG11
+G_M52227_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
b G_M52227_IG11
- ;; size=28 bbWeight=1 PerfScore 16.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M52227_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
mov x1, x22
add x0, fp, #72 // [V03 loc0]
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableSortedSet`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this
@@ -200,16 +189,16 @@ G_M52227_IG10: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {
; gcrRegs -[x0-x1 x23]
; gcr arg pop 0
mov w20, w24
+ ;; size=48 bbWeight=2 PerfScore 19.00
+G_M52227_IG11: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x2, [fp, #0x10] // [V00 this]
; gcrRegs +[x2]
- ;; size=52 bbWeight=2 PerfScore 23.00
-G_M52227_IG11: ; bbWeight=8, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x2]
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x10]
cbz x1, G_M52227_IG13
- ;; size=20 bbWeight=8 PerfScore 104.00
+ ;; size=24 bbWeight=8 PerfScore 120.00
G_M52227_IG12: ; bbWeight=6.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
b G_M52227_IG14
@@ -359,7 +348,7 @@ G_M52227_IG29: ; bbWeight=0, funclet epilog, nogc, extend
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 800, prolog size 64, PerfScore 352.20, instruction count 200, allocated bytes for code 800 (MethodHash=24b133fc) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
+; Total bytes of code 776, prolog size 64, PerfScore 349.20, instruction count 194, allocated bytes for code 776 (MethodHash=24b133fc) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
; ============================================================
Unwind Info:
@@ -370,7 +359,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 172 (0x000ac) Actual length = 688 (0x0002b0)
+ Function Length : 166 (0x000a6) Actual length = 664 (0x000298)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 214376.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary2[System.__Canon,System.Nullable
1[int]]:TrimExcess(int):this (FullOpts)
@@ -10,9 +10,9 @@
;
; V00 this [V00,T02] ( 17, 19.50) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.Nullable`1[int]]>
; V01 arg1 [V01,T16] ( 4, 4 ) int -> x1 single-def
-; V02 loc0 [V02,T28] ( 3, 2.50) int -> x20 single-def
+; V02 loc0 [V02,T27] ( 3, 2.50) int -> x20 single-def
; V03 loc1 [V03 ] ( 5, 12 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.Nullable`1[int]]]>
-; V04 loc2 [V04,T30] ( 2, 2 ) int -> x0 single-def
+; V04 loc2 [V04,T28] ( 2, 2 ) int -> x0 single-def
; V05 loc3 [V05,T23] ( 3, 5 ) int -> x22 single-def
; V06 loc4 [V06 ] ( 2, 2.50) struct (16) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.Nullable`1[int]]]>
; V07 loc5 [V07,T15] ( 5, 7 ) int -> x20
@@ -48,18 +48,15 @@
; V37 tmp26 [V37,T10] ( 3, 12 ) int -> x0 "index expr"
; V38 tmp27 [V38,T11] ( 3, 12 ) int -> x1 "index expr"
; V39 cse0 [V39,T12] ( 4, 9 ) long -> x21 "CSE - aggressive"
-;* V40 cse1 [V40,T31] ( 0, 0 ) long -> zero-ref "CSE - moderate"
+;* V40 cse1 [V40,T29] ( 0, 0 ) long -> zero-ref "CSE - moderate"
; V41 cse2 [V41,T19] ( 3, 6 ) long -> x0 "CSE - moderate"
; V42 cse3 [V42,T20] ( 3, 6 ) int -> x20 "CSE - moderate"
; V43 rat0 [V43,T24] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
; V44 rat1 [V44,T25] ( 3, 4 ) long -> x21 "runtime lookup"
; V45 rat2 [V45,T22] ( 3, 5.60) long -> x21 "fgMakeTemp is creating a new local variable"
-;* V46 rat3 [V46,T29] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V47 rat4 [V47,T32] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V48 rat5 [V48,T27] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V49 rat6 [V49,T03] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V50 rat7 [V50,T04] ( 3, 16 ) long -> x1 "runtime lookup"
-; V51 rat8 [V51,T01] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+; V46 rat3 [V46,T03] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V47 rat4 [V47,T04] ( 3, 16 ) long -> x1 "runtime lookup"
+; V48 rat5 [V48,T01] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 48
+0 (0.00%) : 230844.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary2[System.__Canon,System.Nullable
1[int]]:TrimExcess(int):this (FullOpts)
@@ -10,9 +10,9 @@
;
; V00 this [V00,T02] ( 17, 19.50) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.Nullable`1[int]]>
; V01 arg1 [V01,T17] ( 4, 4 ) int -> x1 single-def
-; V02 loc0 [V02,T28] ( 3, 2.50) int -> x20 single-def
+; V02 loc0 [V02,T27] ( 3, 2.50) int -> x20 single-def
; V03 loc1 [V03 ] ( 5, 12 ) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.Nullable`1[int]]]>
-; V04 loc2 [V04,T30] ( 2, 2 ) int -> x0 single-def
+; V04 loc2 [V04,T28] ( 2, 2 ) int -> x0 single-def
; V05 loc3 [V05,T22] ( 3, 5 ) int -> x22 single-def
; V06 loc4 [V06 ] ( 2, 2.50) struct (16) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.Nullable`1[int]]]>
; V07 loc5 [V07,T16] ( 5, 7 ) int -> x20
@@ -33,9 +33,9 @@
; V22 tmp11 [V22,T08] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
; V23 tmp12 [V23,T09] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
;* V24 tmp13 [V24 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V25 tmp14 [V25,T31] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V25 tmp14 [V25,T29] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V26 tmp15 [V26 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V27 tmp16 [V27,T32] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V27 tmp16 [V27,T30] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V28 tmp17 [V28 ] ( 4, 11 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V29 tmp18 [V29 ] ( 5, 12 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
; V30 tmp19 [V30 ] ( 2, 2.50) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V06._items (fldOffset=0x0)" P-DEP
@@ -53,12 +53,9 @@
; V42 rat0 [V42,T23] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
; V43 rat1 [V43,T24] ( 3, 4 ) long -> x21 "runtime lookup"
; V44 rat2 [V44,T21] ( 3, 5.60) long -> x21 "fgMakeTemp is creating a new local variable"
-;* V45 rat3 [V45,T29] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V46 rat4 [V46,T33] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V47 rat5 [V47,T27] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V48 rat6 [V48,T03] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V49 rat7 [V49,T04] ( 3, 16 ) long -> x1 "runtime lookup"
-; V50 rat8 [V50,T01] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+; V45 rat3 [V45,T03] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V46 rat4 [V46,T04] ( 3, 16 ) long -> x1 "runtime lookup"
+; V47 rat5 [V47,T01] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 40
+0 (0.00%) : 230992.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)
@@ -23,11 +23,11 @@
; V12 loc9 [V12,T14] ( 4, 14 ) byref -> x27
; V13 loc10 [V13,T17] ( 6, 13.50) int -> x26
; V14 loc11 [V14,T15] ( 4, 14 ) byref -> x27
-; V15 loc12 [V15,T66] ( 3, 1.50) int -> x22 single-def
+; V15 loc12 [V15,T62] ( 3, 1.50) int -> x22 single-def
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp2 [V18,T31] ( 4, 3 ) long -> x11 "VirtualCall with runtime lookup"
-; V19 tmp3 [V19,T67] ( 3, 1.50) int -> x24
+; V19 tmp3 [V19,T63] ( 3, 1.50) int -> x24
;* V20 tmp4 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -35,8 +35,8 @@
;* V24 tmp8 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp10 [V26,T28] ( 4, 4 ) byref -> x0 single-def "dup spill"
-; V27 tmp11 [V27,T61] ( 3, 2 ) long -> x1 "spilling helperCall"
-; V28 tmp12 [V28,T68] ( 3, 1.50) int -> x24
+; V27 tmp11 [V27,T57] ( 3, 2 ) long -> x1 "spilling helperCall"
+; V28 tmp12 [V28,T64] ( 3, 1.50) int -> x24
;* V29 tmp13 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp14 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -48,9 +48,9 @@
; V37 tmp21 [V37,T32] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V38 tmp22 [V38,T33] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp24 [V40,T81] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp24 [V40,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp26 [V42,T82] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp26 [V42,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V43 tmp27 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -58,9 +58,9 @@
; V47 tmp31 [V47,T34] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V48 tmp32 [V48,T35] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V50 tmp34 [V50,T83] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V50 tmp34 [V50,T77] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V52 tmp36 [V52,T84] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V52 tmp36 [V52,T78] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -68,63 +68,57 @@
; V57 tmp41 [V57,T36] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V58 tmp42 [V58,T37] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V60 tmp44 [V60,T85] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V60 tmp44 [V60,T79] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V62 tmp46 [V62,T86] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V62 tmp46 [V62,T80] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V63 tmp47 [V63 ] ( 6, 10.50) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64 ] ( 9, 19 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V65 tmp49 [V65,T72] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
-; V66 tmp50 [V66,T75] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V67 tmp51 [V67,T73] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
-; V68 tmp52 [V68,T76] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T74] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
-; V70 tmp54 [V70,T77] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
+; V65 tmp49 [V65,T68] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
+; V66 tmp50 [V66,T71] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V67 tmp51 [V67,T69] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
+; V68 tmp52 [V68,T72] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T70] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
+; V70 tmp54 [V70,T73] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
; V71 tmp55 [V71,T41] ( 3, 3 ) int -> x2 "index expr"
; V72 tmp56 [V72,T42] ( 3, 3 ) int -> x1 "index expr"
; V73 tmp57 [V73,T43] ( 3, 3 ) int -> x2 "index expr"
; V74 tmp58 [V74,T44] ( 3, 3 ) int -> x1 "index expr"
; V75 tmp59 [V75,T12] ( 2, 16 ) long -> x1 "argument with side effect"
; V76 tmp60 [V76,T13] ( 2, 16 ) long -> x1 "argument with side effect"
-; V77 tmp61 [V77,T64] ( 2, 2 ) int -> x1 "argument with side effect"
+; V77 tmp61 [V77,T60] ( 2, 2 ) int -> x1 "argument with side effect"
; V78 tmp62 [V78,T45] ( 3, 3 ) int -> x2 "index expr"
; V79 tmp63 [V79,T46] ( 3, 3 ) int -> x1 "index expr"
-; V80 tmp64 [V80,T65] ( 2, 2 ) long -> x1 "argument with side effect"
-; V81 cse0 [V81,T69] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V82 cse1 [V82,T70] ( 3, 1.50) int -> x26 "CSE - moderate"
-; V83 cse2 [V83,T71] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V84 rat0 [V84,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V85 rat1 [V85,T62] ( 3, 2 ) long -> x1 "runtime lookup"
+; V80 tmp64 [V80,T61] ( 2, 2 ) long -> x1 "argument with side effect"
+; V81 cse0 [V81,T65] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V82 cse1 [V82,T66] ( 3, 1.50) int -> x26 "CSE - moderate"
+; V83 cse2 [V83,T67] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V84 rat0 [V84,T52] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V85 rat1 [V85,T58] ( 3, 2 ) long -> x1 "runtime lookup"
; V86 rat2 [V86,T47] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V87 rat3 [V87,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V88 rat4 [V88,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V89 rat5 [V89,T48] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V90 rat6 [V90,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V91 rat7 [V91,T10] ( 3, 16 ) long -> x1 "runtime lookup"
-; V92 rat8 [V92,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V93 rat9 [V93,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V94 rat10 [V94,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V95 rat11 [V95,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V96 rat12 [V96,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V97 rat13 [V97,T49] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V98 rat14 [V98,T57] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V99 rat15 [V99,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V100 rat16 [V100,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V101 rat17 [V101,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V102 rat18 [V102,T11] ( 3, 16 ) long -> x1 "runtime lookup"
-; V103 rat19 [V103,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-; V104 rat20 [V104,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
-; V105 rat21 [V105,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V106 rat22 [V106,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V107 rat23 [V107,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V108 rat24 [V108,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V109 rat25 [V109,T58] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V87 rat3 [V87,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V88 rat4 [V88,T10] ( 3, 16 ) long -> x1 "runtime lookup"
+; V89 rat5 [V89,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V90 rat6 [V90,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V91 rat7 [V91,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V92 rat8 [V92,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V93 rat9 [V93,T53] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V94 rat10 [V94,T48] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
+; V95 rat11 [V95,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V96 rat12 [V96,T11] ( 3, 16 ) long -> x1 "runtime lookup"
+; V97 rat13 [V97,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+; V98 rat14 [V98,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
+; V99 rat15 [V99,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+;* V100 rat16 [V100,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V101 rat17 [V101,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V102 rat18 [V102,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V103 rat19 [V103,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V104 rat20 [V104,T49] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V105 rat21 [V105,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V106 rat22 [V106,T74] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V107 rat23 [V107,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V108 rat24 [V108,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V109 rat25 [V109,T59] ( 3, 2 ) long -> x1 "runtime lookup"
; V110 rat26 [V110,T51] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V111 rat27 [V111,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V112 rat28 [V112,T80] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V113 rat29 [V113,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V114 rat30 [V114,T60] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V115 rat31 [V115,T63] ( 3, 2 ) long -> x1 "runtime lookup"
-; V116 rat32 [V116,T53] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 24
libraries_tests.run.linux.arm64.Release.mch
-28 (-3.32%) : 234143.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,int]:Heapify():this (Tier1)
@@ -9,62 +9,59 @@
; 4 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 11, 7.01) ref -> x19 this class-hnd single-def <System.Collections.Generic.PriorityQueue`2[System.__Canon,int]>
-; V01 loc0 [V01,T19] ( 8, 3.01) ref -> x20 class-hnd exact single-def <<unknown class>>
-; V02 loc1 [V02,T26] ( 3, 2 ) int -> x1
+; V00 this [V00,T00] ( 10, 7 ) ref -> x19 this class-hnd single-def <System.Collections.Generic.PriorityQueue`2[System.__Canon,int]>
+; V01 loc0 [V01,T17] ( 8, 3.01) ref -> x20 class-hnd exact single-def <<unknown class>>
+; V02 loc1 [V02,T24] ( 3, 2 ) int -> x1
; V03 loc2 [V03,T04] ( 14, 7.51) int -> x1
-; V04 loc3 [V04,T40] ( 7, 0 ) int -> x21
+; V04 loc3 [V04,T37] ( 7, 0 ) int -> x21
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V08 tmp3 [V08,T11] ( 14, 5.12) ref -> x5 class-hnd exact "Inline stloc first use temp" <<unknown class>>
-; V09 tmp4 [V09,T18] ( 8, 3.68) int -> x6 "Inline stloc first use temp"
+; V08 tmp3 [V08,T10] ( 14, 5.12) ref -> x5 class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V09 tmp4 [V09,T16] ( 8, 3.68) int -> x6 "Inline stloc first use temp"
; V10 tmp5 [V10,T02] ( 14, 8.41) int -> x4 "Inlining Arg"
;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V12 tmp7 [V12,T12] ( 4, 4.82) int -> x7 "dup spill"
+; V12 tmp7 [V12,T11] ( 4, 4.82) int -> x7 "dup spill"
; V13 tmp8 [V13,T01] ( 22, 8.76) int -> x7 "Inline stloc first use temp"
;* V14 tmp9 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.ValueTuple`2[System.__Canon,int]>
-; V15 tmp10 [V15,T29] ( 8, 1.47) int -> x11 "Inline stloc first use temp"
-; V16 tmp11 [V16,T24] ( 6, 2.12) int -> x21 "Inline stloc first use temp"
+; V15 tmp10 [V15,T26] ( 8, 1.47) int -> x11 "Inline stloc first use temp"
+; V16 tmp11 [V16,T22] ( 6, 2.12) int -> x21 "Inline stloc first use temp"
; V17 tmp12 [V17,T03] ( 14, 8.12) int -> x22 "dup spill"
;* V18 tmp13 [V18 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.ValueTuple`2[System.__Canon,int]>
;* V19 tmp14 [V19 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ValueTuple`2[System.__Canon,int]>
-; V20 tmp15 [V20,T30] ( 6, 1.47) int -> x21 "Inline return value spill temp"
-; V21 tmp16 [V21,T20] ( 6, 2.94) int -> x13 "Inlining Arg"
+; V20 tmp15 [V20,T27] ( 6, 1.47) int -> x21 "Inline return value spill temp"
+; V21 tmp16 [V21,T18] ( 6, 2.94) int -> x13 "Inlining Arg"
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V25 tmp20 [V25,T34] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V25 tmp20 [V25,T31] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V28 tmp23 [V28 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V29 tmp24 [V29,T33] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V30 tmp25 [V30,T32] ( 6, 0.74) ref -> x15 "field V14.Item1 (fldOffset=0x0)" P-INDEP
-; V31 tmp26 [V31,T23] ( 12, 2.12) int -> x10 "field V14.Item2 (fldOffset=0x8)" P-INDEP
-; V32 tmp27 [V32,T35] ( 4, 0.65) ref -> x24 "field V18.Item1 (fldOffset=0x0)" P-INDEP
-; V33 tmp28 [V33,T31] ( 6, 1.29) int -> x25 "field V18.Item2 (fldOffset=0x8)" P-INDEP
-; V34 tmp29 [V34,T25] ( 4, 2 ) ref -> x0 "field V19.Item1 (fldOffset=0x0)" P-INDEP
-; V35 tmp30 [V35,T21] ( 8, 2.74) int -> x3 "field V19.Item2 (fldOffset=0x8)" P-INDEP
-; V36 tmp31 [V36,T42] ( 3, 0 ) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ValueTuple`2[System.__Canon,int]>
+;* V29 tmp24 [V29,T30] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V30 tmp25 [V30,T29] ( 6, 0.74) ref -> x15 "field V14.Item1 (fldOffset=0x0)" P-INDEP
+; V31 tmp26 [V31,T21] ( 12, 2.12) int -> x10 "field V14.Item2 (fldOffset=0x8)" P-INDEP
+; V32 tmp27 [V32,T32] ( 4, 0.65) ref -> x24 "field V18.Item1 (fldOffset=0x0)" P-INDEP
+; V33 tmp28 [V33,T28] ( 6, 1.29) int -> x25 "field V18.Item2 (fldOffset=0x8)" P-INDEP
+; V34 tmp29 [V34,T23] ( 4, 2.00) ref -> x0 "field V19.Item1 (fldOffset=0x0)" P-INDEP
+; V35 tmp30 [V35,T19] ( 8, 2.74) int -> x3 "field V19.Item2 (fldOffset=0x8)" P-INDEP
+; V36 tmp31 [V36,T39] ( 3, 0 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ValueTuple`2[System.__Canon,int]>
; V37 tmp32 [V37,T06] ( 6, 6.00) byref -> x2 "BlockOp address local"
-; V38 tmp33 [V38,T13] ( 6, 4.41) byref -> x9 "BlockOp address local"
-; V39 tmp34 [V39,T17] ( 6, 3.88) byref -> x23 "BlockOp address local"
-; V40 tmp35 [V40,T41] ( 6, 0 ) byref -> x8 "BlockOp address local"
+; V38 tmp33 [V38,T12] ( 6, 4.41) byref -> x9 "BlockOp address local"
+; V39 tmp34 [V39,T15] ( 6, 3.88) byref -> x23 "BlockOp address local"
+; V40 tmp35 [V40,T38] ( 6, 0 ) byref -> x8 "BlockOp address local"
; V41 tmp36 [V41,T07] ( 6, 6.00) byref -> x8 "BlockOp address local"
-; V42 cse0 [V42,T16] ( 6, 4.08) int -> x8 multi-def "CSE - aggressive"
-; V43 cse1 [V43,T38] ( 6, 0.04) int -> x2 multi-def "CSE - conservative"
-;* V44 rat0 [V44,T14] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V45 rat1 [V45,T27] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V42 cse0 [V42,T14] ( 6, 4.08) int -> x8 multi-def "CSE - aggressive"
+; V43 cse1 [V43,T35] ( 6, 0.04) int -> x2 multi-def "CSE - conservative"
+;* V44 rat0 [V44,T13] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V45 rat1 [V45,T25] ( 0, 0 ) long -> zero-ref "runtime lookup"
;* V46 rat2 [V46,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V47 rat3 [V47,T15] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V48 rat4 [V48,T28] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V49 rat5 [V49,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V50 rat6 [V50,T10] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V51 rat7 [V51,T22] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V52 rat8 [V52,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V53 rat9 [V53,T37] ( 2, 0.05) long -> x7 "Spilling to split statement for tree"
-;* V54 rat10 [V54,T39] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V55 rat11 [V55,T36] ( 2, 0.05) long -> x11 "fgMakeTemp is creating a new local variable"
+;* V47 rat3 [V47,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V48 rat4 [V48,T20] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V49 rat5 [V49,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V50 rat6 [V50,T34] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V51 rat7 [V51,T36] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V52 rat8 [V52,T33] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 24
@@ -75,11 +72,10 @@ G_M29926_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x23, x24, [sp, #0x48]
str x25, [sp, #0x58]
mov fp, sp
- str xzr, [fp, #0x10] // [V36 tmp31]
- str x0, [fp, #0x20]
+ str xzr, [fp, #0x18] // [V36 tmp31]
mov x19, x0
; gcrRegs +[x19]
- ;; size=36 bbWeight=1 PerfScore 8.00
+ ;; size=32 bbWeight=1 PerfScore 7.00
G_M29926_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x08]
; gcrRegs +[x20]
@@ -88,15 +84,15 @@ G_M29926_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
asr w1, w14, #2
ldr x14, [x19, #0x10]
; gcrRegs +[x14]
- cbnz x14, G_M29926_IG31
- tbnz w1, #31, G_M29926_IG19
+ cbnz x14, G_M29926_IG32
+ tbnz w1, #31, G_M29926_IG17
;; size=28 bbWeight=1 PerfScore 12.50
G_M29926_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x14]
- cbz x20, G_M29926_IG20
+ cbz x20, G_M29926_IG18
ldr w14, [x20, #0x08]
cmp w14, w1
- ble G_M29926_IG20
+ ble G_M29926_IG18
;; size=16 bbWeight=0.50 PerfScore 2.75
G_M29926_IG04: ; bbWeight=0.99, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
ubfiz x14, x1, #4, #32
@@ -110,18 +106,18 @@ G_M29926_IG04: ; bbWeight=0.99, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x5, [x19, #0x08]
; gcrRegs +[x5]
ldr w6, [x19, #0x20]
- ;; size=32 bbWeight=0.99 PerfScore 14.36
+ ;; size=32 bbWeight=0.99 PerfScore 14.35
G_M29926_IG05: ; bbWeight=1.19, gcrefRegs=180021 {x0 x5 x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x2]
lsl w14, w4, #2
add w7, w14, #1
cmp w7, w6
- blt G_M29926_IG10
+ blt G_M29926_IG08
;; size=16 bbWeight=1.19 PerfScore 3.58
G_M29926_IG06: ; bbWeight=0.99, gcrefRegs=180021 {x0 x5 x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w8, [x5, #0x08]
cmp w4, w8
- bhs G_M29926_IG36
+ bhs G_M29926_IG25
ubfiz x14, x4, #4, #32
add x14, x14, #16
add x8, x5, x14
@@ -140,23 +136,13 @@ G_M29926_IG06: ; bbWeight=0.99, gcrefRegs=180021 {x0 x5 x19 x20}, byrefRe
G_M29926_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20]
; byrRegs -[x8]
- b G_M29926_IG19
+ b G_M29926_IG17
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M29926_IG08: ; bbWeight=0.01, gcrefRegs=180021 {x0 x5 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M29926_IG08: ; bbWeight=0.73, gcrefRegs=180021 {x0 x5 x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0 x5 x20]
- ldr x7, [x19]
- ldr x9, [x7, #0x38]
- ldr x10, [x9]
- ldr x11, [x10, #0x20]
- cbz x11, G_M29926_IG16
- ;; size=20 bbWeight=0.01 PerfScore 0.16
-G_M29926_IG09: ; bbWeight=0.01, gcrefRegs=180021 {x0 x5 x19 x20}, byrefRegs=0000 {}, byref
- b G_M29926_IG16
- ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M29926_IG10: ; bbWeight=0.73, gcrefRegs=180021 {x0 x5 x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w8, [x5, #0x08]
cmp w7, w8
- bhs G_M29926_IG36
+ bhs G_M29926_IG25
ubfiz x14, x7, #4, #32
add x14, x14, #16
add x9, x5, x14
@@ -167,19 +153,19 @@ G_M29926_IG10: ; bbWeight=0.73, gcrefRegs=180021 {x0 x5 x19 x20}, byrefRe
sxtw w11, w7
add w13, w7, #4
cmp w13, w6
- ble G_M29926_IG37
+ ble G_M29926_IG26
sxtw w21, w6
;; size=52 bbWeight=0.73 PerfScore 11.28
-G_M29926_IG11: ; bbWeight=0.73, gcrefRegs=188021 {x0 x5 x15 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M29926_IG09: ; bbWeight=0.73, gcrefRegs=188021 {x0 x5 x15 x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x9]
add w22, w11, #1
sxtw w7, w22
cmp w7, w21
- bge G_M29926_IG14
+ bge G_M29926_IG12
;; size=16 bbWeight=0.73 PerfScore 1.82
-G_M29926_IG12: ; bbWeight=0.64, gcrefRegs=188021 {x0 x5 x15 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M29926_IG10: ; bbWeight=0.64, gcrefRegs=188021 {x0 x5 x15 x19 x20}, byrefRegs=0000 {}, byref, isz
cmp w22, w8
- bhs G_M29926_IG36
+ bhs G_M29926_IG25
ubfiz x14, x22, #4, #32
add x14, x14, #16
add x23, x5, x14
@@ -188,39 +174,39 @@ G_M29926_IG12: ; bbWeight=0.64, gcrefRegs=188021 {x0 x5 x15 x19 x20}, byr
; gcrRegs +[x24]
ldr w25, [x23, #0x08]
cmp w25, w10
- blt G_M29926_IG38
+ blt G_M29926_IG27
;; size=36 bbWeight=0.64 PerfScore 7.05
-G_M29926_IG13: ; bbWeight=0.64, gcrefRegs=188021 {x0 x5 x15 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M29926_IG11: ; bbWeight=0.64, gcrefRegs=188021 {x0 x5 x15 x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x24]
; byrRegs -[x23]
add w22, w7, #1
sxtw w7, w22
cmp w7, w21
- blt G_M29926_IG12
+ blt G_M29926_IG10
;; size=16 bbWeight=0.64 PerfScore 1.60
-G_M29926_IG14: ; bbWeight=0.73, gcrefRegs=188021 {x0 x5 x15 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M29926_IG12: ; bbWeight=0.73, gcrefRegs=188021 {x0 x5 x15 x19 x20}, byrefRegs=0000 {}, byref, isz
cmp w3, w10
blt G_M29926_IG06
;; size=8 bbWeight=0.73 PerfScore 1.09
-G_M29926_IG15: ; bbWeight=0.00, gcrefRegs=188021 {x0 x5 x15 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M29926_IG13: ; bbWeight=0.00, gcrefRegs=188021 {x0 x5 x15 x19 x20}, byrefRegs=0000 {}, byref, isz
cmp w3, w10
- bgt G_M29926_IG27
+ bgt G_M29926_IG28
b G_M29926_IG06
;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M29926_IG16: ; bbWeight=0.01, gcrefRegs=180021 {x0 x5 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M29926_IG14: ; bbWeight=0.01, gcrefRegs=180021 {x0 x5 x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x15]
- lsl w13, w4, #2
- add w7, w13, #1
+ lsl w7, w4, #2
+ add w7, w7, #1
cmp w7, w6
- bge G_M29926_IG18
+ bge G_M29926_IG16
;; size=16 bbWeight=0.01 PerfScore 0.04
-G_M29926_IG17: ; bbWeight=0.01, gcrefRegs=180021 {x0 x5 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M29926_IG15: ; bbWeight=0.01, gcrefRegs=180021 {x0 x5 x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w2, [x5, #0x08]
cmp w7, w2
- bhs G_M29926_IG36
- ubfiz x8, x7, #4, #32
...
-24 (-2.87%) : 215525.dasm - System.Collections.Immutable.ImmutableList1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer
1[System.__Canon]):int:this (Tier1)
@@ -9,7 +9,7 @@
; 4 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T09] ( 9, 10.07) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
+; V00 this [V00,T09] ( 8, 9.07) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
; V01 arg1 [V01,T13] ( 3, 5.29) ref -> x22 class-hnd single-def <System.__Canon>
; V02 arg2 [V02,T08] ( 8, 10.98) int -> x19
; V03 arg3 [V03,T11] ( 6, 6 ) int -> x21 single-def
@@ -23,37 +23,34 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V12 tmp5 [V12,T01] ( 4, 19.77) long -> x25 "VirtualCall with runtime lookup"
;* V13 tmp6 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V14 tmp7 [V14,T19] ( 6, 4 ) long -> registers "Indirect call through function pointer"
+; V14 tmp7 [V14,T17] ( 6, 4 ) long -> registers "Indirect call through function pointer"
;* V15 tmp8 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp10 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp13 [V20,T31] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V21 tmp14 [V21,T32] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V22 tmp15 [V22,T21] ( 2, 4 ) long -> x1 "argument with side effect"
+; V20 tmp13 [V20,T28] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V21 tmp14 [V21,T29] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V22 tmp15 [V22,T19] ( 2, 4 ) long -> x1 "argument with side effect"
; V23 tmp16 [V23,T05] ( 2, 14.74) long -> x1 "argument with side effect"
; V24 tmp17 [V24,T06] ( 2, 13.18) ref -> x2 "argument with side effect"
-; V25 PSPSym [V25,T27] ( 1, 1 ) long -> [fp+0x60] do-not-enreg[V] "PSPSym"
-; V26 cse0 [V26,T16] ( 3, 5.29) long -> x24 "CSE - aggressive"
-; V27 cse1 [V27,T23] ( 3, 3 ) int -> x1 "CSE - aggressive"
+; V25 PSPSym [V25,T24] ( 1, 1 ) long -> [fp+0x60] do-not-enreg[V] "PSPSym"
+; V26 cse0 [V26,T15] ( 3, 5.29) long -> x24 "CSE - aggressive"
+; V27 cse1 [V27,T21] ( 3, 3 ) int -> x1 "CSE - aggressive"
; V28 cse2 [V28,T12] ( 10, 7.47) long -> x23 multi-def "CSE - aggressive"
-; V29 rat0 [V29,T28] ( 3, 0 ) long -> x1 "Spilling to split statement for tree"
-; V30 rat1 [V30,T29] ( 3, 0 ) long -> x2 "runtime lookup"
-; V31 rat2 [V31,T30] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
-; V32 rat3 [V32,T17] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V33 rat4 [V33,T20] ( 3, 4 ) long -> x24 "runtime lookup"
+; V29 rat0 [V29,T25] ( 3, 0 ) long -> x1 "Spilling to split statement for tree"
+; V30 rat1 [V30,T26] ( 3, 0 ) long -> x2 "runtime lookup"
+; V31 rat2 [V31,T27] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V32 rat3 [V32,T16] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
+; V33 rat4 [V33,T18] ( 3, 4 ) long -> x24 "runtime lookup"
; V34 rat5 [V34,T14] ( 3, 5.60) long -> x24 "fgMakeTemp is creating a new local variable"
-; V35 rat6 [V35,T18] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V36 rat7 [V36,T25] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V37 rat8 [V37,T15] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V38 rat9 [V38,T02] ( 3, 18.45) long -> x25 "fgMakeTemp is creating a new local variable"
-; V39 rat10 [V39,T03] ( 3, 16.21) long -> x0 "Spilling to split statement for tree"
-; V40 rat11 [V40,T04] ( 3, 14.74) long -> x1 "runtime lookup"
-; V41 rat12 [V41,T00] ( 3, 20.63) long -> x1 "fgMakeTemp is creating a new local variable"
-; V42 rat13 [V42,T22] ( 3, 3.42) long -> x2 "fgMakeTemp is creating a new local variable"
-; V43 rat14 [V43,T26] ( 3, 1.71) long -> x0 "Spilling to split statement for tree"
-; V44 rat15 [V44,T24] ( 3, 2.18) long -> x1 "fgMakeTemp is creating a new local variable"
+; V35 rat6 [V35,T02] ( 3, 18.45) long -> x25 "fgMakeTemp is creating a new local variable"
+; V36 rat7 [V36,T03] ( 3, 16.21) long -> x0 "Spilling to split statement for tree"
+; V37 rat8 [V37,T04] ( 3, 14.74) long -> x1 "runtime lookup"
+; V38 rat9 [V38,T00] ( 3, 20.63) long -> x1 "fgMakeTemp is creating a new local variable"
+; V39 rat10 [V39,T20] ( 3, 3.42) long -> x2 "fgMakeTemp is creating a new local variable"
+; V40 rat11 [V40,T23] ( 3, 1.71) long -> x0 "Spilling to split statement for tree"
+; V41 rat12 [V41,T22] ( 3, 2.18) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 88
@@ -82,15 +79,15 @@ G_M57893_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=72 bbWeight=1 PerfScore 14.00
G_M57893_IG02: ; bbWeight=1, gcVars=0000000000000200 {V00}, gcrefRegs=500001 {x0 x20 x22}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0]
- tbnz w19, #31, G_M57893_IG27
- tbnz w21, #31, G_M57893_IG28
+ tbnz w19, #31, G_M57893_IG26
+ tbnz w21, #31, G_M57893_IG27
ldr w1, [x0, #0x20]
cmp w21, w1
- bgt G_M57893_IG28
+ bgt G_M57893_IG27
add w2, w19, w21
cmp w2, w1
- bgt G_M57893_IG28
- cbz x20, G_M57893_IG29
+ bgt G_M57893_IG27
+ cbz x20, G_M57893_IG28
;; size=36 bbWeight=1 PerfScore 9.50
G_M57893_IG03: ; bbWeight=1, gcrefRegs=500001 {x0 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x23, [x0]
@@ -130,30 +127,20 @@ G_M57893_IG06: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {
; gcrRegs -[x2]
; gcr arg pop 0
;; size=48 bbWeight=1 PerfScore 10.50
-G_M57893_IG07: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x2]
- ldr x0, [x2]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x18]
- cbnz x0, G_M57893_IG14
- ;; size=24 bbWeight=1 PerfScore 15.00
-G_M57893_IG08: ; bbWeight=0.50, gcrefRegs=500004 {x2 x20 x22}, byrefRegs=0000 {}, byref
- b G_M57893_IG14
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M57893_IG09: ; bbWeight=3.29, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
+G_M57893_IG07: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
+ b G_M57893_IG13
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M57893_IG08: ; bbWeight=3.29, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
mov x21, x24
ldr x0, [x23, #0x38]
ldr x0, [x0]
ldr x25, [x0, #0x20]
- cbz x25, G_M57893_IG11
+ cbz x25, G_M57893_IG10
;; size=20 bbWeight=3.29 PerfScore 34.59
-G_M57893_IG10: ; bbWeight=2.64, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
- b G_M57893_IG12
+G_M57893_IG09: ; bbWeight=2.64, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
+ b G_M57893_IG11
;; size=4 bbWeight=2.64 PerfScore 2.64
-G_M57893_IG11: ; bbWeight=0.66, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
+G_M57893_IG10: ; bbWeight=0.66, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
mov x0, x23
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -162,7 +149,7 @@ G_M57893_IG11: ; bbWeight=0.66, gcrefRegs=500000 {x20 x22}, byrefRegs=000
; gcr arg pop 0
mov x25, x0
;; size=24 bbWeight=0.66 PerfScore 2.31
-G_M57893_IG12: ; bbWeight=3.29, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M57893_IG11: ; bbWeight=3.29, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
add x0, fp, #32 // [V05 loc0]
mov x1, x21
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this
@@ -182,25 +169,25 @@ G_M57893_IG12: ; bbWeight=3.29, gcrefRegs=500000 {x20 x22}, byrefRegs=000
blr x3
; gcrRegs -[x0-x2]
; gcr arg pop 0
- cbnz w0, G_M57893_IG20
+ cbnz w0, G_M57893_IG19
;; size=56 bbWeight=3.29 PerfScore 44.48
-G_M57893_IG13: ; bbWeight=2.68, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
+G_M57893_IG12: ; bbWeight=2.68, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
add w19, w19, #1
+ ;; size=4 bbWeight=2.68 PerfScore 1.34
+G_M57893_IG13: ; bbWeight=3.68, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x2, [fp, #0x18] // [V00 this]
; gcrRegs +[x2]
- ;; size=8 bbWeight=2.68 PerfScore 6.71
-G_M57893_IG14: ; bbWeight=3.68, gcrefRegs=500004 {x2 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x0, [x2]
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x18]
- cbz x1, G_M57893_IG16
- ;; size=20 bbWeight=3.68 PerfScore 47.89
-G_M57893_IG15: ; bbWeight=2.95, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
+ cbz x1, G_M57893_IG15
+ ;; size=24 bbWeight=3.68 PerfScore 55.26
+G_M57893_IG14: ; bbWeight=2.95, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
- b G_M57893_IG17
+ b G_M57893_IG16
;; size=4 bbWeight=2.95 PerfScore 2.95
-G_M57893_IG16: ; bbWeight=0.74, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
+G_M57893_IG15: ; bbWeight=0.74, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -208,7 +195,7 @@ G_M57893_IG16: ; bbWeight=0.74, gcrefRegs=500000 {x20 x22}, byrefRegs=000
; gcr arg pop 0
mov x1, x0
;; size=20 bbWeight=0.74 PerfScore 2.21
-G_M57893_IG17: ; bbWeight=3.68, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M57893_IG16: ; bbWeight=3.68, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
add x0, fp, #32 // [V05 loc0]
movz x3, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:MoveNext():ubyte:this
movk x3, #0xD1FFAB1E LSL #16
@@ -216,26 +203,26 @@ G_M57893_IG17: ; bbWeight=3.68, gcrefRegs=500000 {x20 x22}, byrefRegs=000
ldr x3, [x3]
blr x3
; gcr arg pop 0
- cbnz w0, G_M57893_IG09
+ cbnz w0, G_M57893_IG08
;; size=28 bbWeight=3.68 PerfScore 25.79
-G_M57893_IG18: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57893_IG17: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x20 x22]
ldr x0, [fp, #0x60] // [V25 PSPSym]
- bl G_M57893_IG32
+ bl G_M57893_IG31
;; size=8 bbWeight=0.39 PerfScore 1.17
-G_M57893_IG19: ; bbWeight=0.39, nogc, extend
- b G_M57893_IG25
+G_M57893_IG18: ; bbWeight=0.39, nogc, extend
+ b G_M57893_IG24
;; size=4 bbWeight=0.39 PerfScore 0.39
-G_M57893_IG20: ; bbWeight=0.61, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M57893_IG19: ; bbWeight=0.61, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x0, [x23, #0x38]
ldr x0, [x0]
ldr x2, [x0, #0x28]
- cbz x2, G_M57893_IG22
+ cbz x2, G_M57893_IG21
;; size=16 bbWeight=0.61 PerfScore 6.11
-G_M57893_IG21: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M57893_IG23
+G_M57893_IG20: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M57893_IG22
;; size=4 bbWeight=0.49 PerfScore 0.49
-G_M57893_IG22: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57893_IG21: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x0, x23
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -244,13 +231,13 @@ G_M57893_IG22: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcr arg pop 0
mov x2, x0
;; size=24 bbWeight=0.12 PerfScore 0.43
-G_M57893_IG23: ; bbWeight=0.61, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57893_IG22: ; bbWeight=0.61, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x0, fp, #32 // [V05 loc0]
blr x2
; gcr arg pop 0
mov w0, w19
;; size=12 bbWeight=0.61 PerfScore 1.22
-G_M57893_IG24: ; bbWeight=0.61, epilog, nogc, extend
+G_M57893_IG23: ; bbWeight=0.61, epilog, nogc, extend
ldr x25, [sp, #0x98]
ldp x23, x24, [sp, #0x88]
ldp x21, x22, [sp, #0x78]
@@ -258,10 +245,10 @@ G_M57893_IG24: ; bbWeight=0.61, epilog, nogc, extend
ldp fp, lr, [sp], #0xA0
ret lr
;; size=24 bbWeight=0.61 PerfScore 4.27
-G_M57893_IG25: ; bbWeight=0.39, gcVars=0000000000000200 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M57893_IG24: ; bbWeight=0.39, gcVars=0000000000000200 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movn w0, #0
;; size=4 bbWeight=0.39 PerfScore 0.19
-G_M57893_IG26: ; bbWeight=0.39, epilog, nogc, extend
+G_M57893_IG25: ; bbWeight=0.39, epilog, nogc, extend
ldr x25, [sp, #0x98]
ldp x23, x24, [sp, #0x88]
ldp x21, x22, [sp, #0x78]
@@ -269,7 +256,7 @@ G_M57893_IG26: ; bbWeight=0.39, epilog, nogc, extend
ldp fp, lr, [sp], #0xA0
ret lr
;; size=24 bbWeight=0.39 PerfScore 2.73
-G_M57893_IG27: ; bbWeight=0, gcVars=0000000000000200 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
...
-28 (-2.42%) : 66233.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Canon,int]:FindValue(System.Canon):byref:this (Tier1)
@@ -9,37 +9,37 @@
; 5 inlinees with PGO data; 22 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 20, 10.57) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]>
+; V00 this [V00,T00] ( 19, 9.75) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]>
; V01 arg1 [V01,T01] ( 12, 5.51) ref -> x20 ld-addr-op class-hnd single-def <System.__Canon>
-; V02 loc0 [V02,T15] ( 14, 4.10) byref -> x25
-; V03 loc1 [V03,T25] ( 3, 2 ) byref -> x0
-; V04 loc2 [V04,T31] ( 4, 1.64) ref -> x21 class-hnd single-def <<unknown class>>
-; V05 loc3 [V05,T24] ( 4, 2.46) int -> x21 single-def
-; V06 loc4 [V06,T14] ( 9, 4.12) int -> x22
+; V02 loc0 [V02,T14] ( 14, 4.10) byref -> x25
+; V03 loc1 [V03,T23] ( 3, 2 ) byref -> x0
+; V04 loc2 [V04,T28] ( 4, 1.64) ref -> x21 class-hnd single-def <<unknown class>>
+; V05 loc3 [V05,T22] ( 4, 2.46) int -> x21 single-def
+; V06 loc4 [V06,T13] ( 9, 4.12) int -> x22
; V07 loc5 [V07 ] ( 7, 2.47) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,int]]>
-; V08 loc6 [V08,T33] ( 7, 0.82) int -> x23
-; V09 loc7 [V09,T23] ( 6, 2.47) ref -> x24 class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
-; V10 loc8 [V10,T49] ( 3, 0 ) int -> x22 single-def
-; V11 loc9 [V11,T42] ( 6, 0 ) int -> x23
+; V08 loc6 [V08,T30] ( 7, 0.82) int -> x23
+; V09 loc7 [V09,T21] ( 6, 2.47) ref -> x24 class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+; V10 loc8 [V10,T46] ( 3, 0 ) int -> x22 single-def
+; V11 loc9 [V11,T39] ( 6, 0 ) int -> x23
; V12 loc10 [V12 ] ( 4, 0 ) struct (16) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,int]]>
-; V13 loc11 [V13,T43] ( 4, 0 ) int -> x24
+; V13 loc11 [V13,T40] ( 4, 0 ) int -> x24
;# V14 OutArgs [V14 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V15 tmp1 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp2 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V17 tmp3 [V17,T44] ( 4, 0 ) long -> x11 "VirtualCall with runtime lookup"
+; V17 tmp3 [V17,T41] ( 4, 0 ) long -> x11 "VirtualCall with runtime lookup"
;* V18 tmp4 [V18 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V19 tmp5 [V19 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V20 tmp6 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp7 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V22 tmp8 [V22,T45] ( 4, 0 ) long -> x11 "VirtualCall with runtime lookup"
+; V22 tmp8 [V22,T42] ( 4, 0 ) long -> x11 "VirtualCall with runtime lookup"
;* V23 tmp9 [V23 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V24 tmp10 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp11 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V26 tmp12 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V27 tmp13 [V27,T30] ( 3, 1.64) int -> x21 "guarded devirt return temp"
+; V27 tmp13 [V27,T27] ( 3, 1.64) int -> x21 "guarded devirt return temp"
;* V28 tmp14 [V28 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp"
;* V29 tmp15 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.Interop.Analyzers.ConvertComImportToGeneratedComInterfaceAnalyzer>
-; V30 tmp16 [V30,T46] ( 2, 0 ) int -> x0 "guarded devirt return temp"
+; V30 tmp16 [V30,T43] ( 2, 0 ) int -> x0 "guarded devirt return temp"
; V31 tmp17 [V31,T08] ( 7, 4.92) ref -> x1 "guarded devirt arg temp"
;* V32 tmp18 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.ObjectEqualityComparer`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]>
;* V33 tmp19 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -50,76 +50,73 @@
; V38 tmp24 [V38,T03] ( 3, 4.93) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V39 tmp25 [V39,T04] ( 3, 4.93) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V40 tmp26 [V40 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V41 tmp27 [V41,T34] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V41 tmp27 [V41,T31] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V42 tmp28 [V42 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V43 tmp29 [V43,T35] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V43 tmp29 [V43,T32] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V44 tmp30 [V44 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer>
;* V45 tmp31 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
;* V46 tmp32 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer>
;* V47 tmp33 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V48 tmp34 [V48 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V49 tmp35 [V49 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V50 tmp36 [V50,T50] ( 3, 0 ) int -> x1 "Inlining Arg"
-; V51 tmp37 [V51,T47] ( 3, 0 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V52 tmp38 [V52,T48] ( 3, 0 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V50 tmp36 [V50,T47] ( 3, 0 ) int -> x1 "Inlining Arg"
+; V51 tmp37 [V51,T44] ( 3, 0 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V52 tmp38 [V52,T45] ( 3, 0 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V53 tmp39 [V53 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V54 tmp40 [V54,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V54 tmp40 [V54,T72] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V55 tmp41 [V55 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V56 tmp42 [V56,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V56 tmp42 [V56,T73] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V57 tmp43 [V57 ] ( 3, 1.64) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V07._items (fldOffset=0x0)" P-DEP
; V58 tmp44 [V58 ] ( 7, 2.47) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP
; V59 tmp45 [V59 ] ( 2, 0 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V12._items (fldOffset=0x0)" P-DEP
; V60 tmp46 [V60 ] ( 4, 0 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V12._length (fldOffset=0x8)" P-DEP
-; V61 tmp47 [V61,T27] ( 2, 1.64) ref -> x0 single-def "field V34._items (fldOffset=0x0)" P-INDEP
-; V62 tmp48 [V62,T28] ( 2, 1.64) int -> x1 single-def "field V34._length (fldOffset=0x8)" P-INDEP
-; V63 tmp49 [V63,T68] ( 2, 0 ) ref -> x0 single-def "field V47._items (fldOffset=0x0)" P-INDEP
-; V64 tmp50 [V64,T69] ( 2, 0 ) int -> x1 single-def "field V47._length (fldOffset=0x8)" P-INDEP
-; V65 tmp51 [V65,T51] ( 3, 0 ) int -> x2 "index expr"
-; V66 tmp52 [V66,T52] ( 3, 0 ) int -> x1 "index expr"
-; V67 tmp53 [V67,T70] ( 2, 0 ) long -> x1 "argument with side effect"
+; V61 tmp47 [V61,T25] ( 2, 1.64) ref -> x0 single-def "field V34._items (fldOffset=0x0)" P-INDEP
+; V62 tmp48 [V62,T26] ( 2, 1.64) int -> x1 single-def "field V34._length (fldOffset=0x8)" P-INDEP
+; V63 tmp49 [V63,T65] ( 2, 0 ) ref -> x0 single-def "field V47._items (fldOffset=0x0)" P-INDEP
+; V64 tmp50 [V64,T66] ( 2, 0 ) int -> x1 single-def "field V47._length (fldOffset=0x8)" P-INDEP
+; V65 tmp51 [V65,T48] ( 3, 0 ) int -> x2 "index expr"
+; V66 tmp52 [V66,T49] ( 3, 0 ) int -> x1 "index expr"
+; V67 tmp53 [V67,T67] ( 2, 0 ) long -> x1 "argument with side effect"
; V68 tmp54 [V68,T06] ( 3, 4.93) int -> x2 "index expr"
; V69 tmp55 [V69,T07] ( 3, 4.93) int -> x1 "index expr"
-; V70 tmp56 [V70,T21] ( 4, 3.28) long -> x1 "argument with side effect"
-;* V71 rat0 [V71,T13] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V72 rat1 [V72,T26] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V70 tmp56 [V70,T19] ( 4, 3.28) long -> x1 "argument with side effect"
+;* V71 rat0 [V71,T12] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V72 rat1 [V72,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
;* V73 rat2 [V73,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V74 rat3 [V74,T16] ( 3, 3.62) long -> x0 "Spilling to split statement for tree"
-; V75 rat4 [V75,T20] ( 3, 3.29) long -> x1 "runtime lookup"
+; V74 rat3 [V74,T15] ( 3, 3.62) long -> x0 "Spilling to split statement for tree"
+; V75 rat4 [V75,T18] ( 3, 3.29) long -> x1 "runtime lookup"
; V76 rat5 [V76,T09] ( 3, 4.60) long -> x1 "fgMakeTemp is creating a new local variable"
-; V77 rat6 [V77,T17] ( 2, 3.29) long -> x0 "Spilling to split statement for tree"
+;* V77 rat6 [V77,T16] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V78 rat7 [V78,T29] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V79 rat8 [V79,T10] ( 2, 3.29) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V80 rat9 [V80,T18] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V81 rat10 [V81,T32] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V82 rat11 [V82,T11] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V83 rat12 [V83,T19] ( 3, 3.57) long -> x0 "Spilling to split statement for tree"
-; V84 rat13 [V84,T22] ( 3, 3.24) long -> x1 "runtime lookup"
-; V85 rat14 [V85,T12] ( 3, 4.54) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V86 rat15 [V86,T53] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V87 rat16 [V87,T71] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V88 rat17 [V88,T54] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V89 rat18 [V89,T38] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V90 rat19 [V90,T41] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V91 rat20 [V91,T36] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V92 rat21 [V92,T39] ( 3, 0.04) long -> x0 "Spilling to split statement for tree"
-; V93 rat22 [V93,T40] ( 3, 0.03) long -> x1 "runtime lookup"
-; V94 rat23 [V94,T37] ( 3, 0.05) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V95 rat24 [V95,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V96 rat25 [V96,T72] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V97 rat26 [V97,T56] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V98 rat27 [V98,T57] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
-; V99 rat28 [V99,T58] ( 3, 0 ) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V100 rat29 [V100,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V101 rat30 [V101,T73] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V102 rat31 [V102,T60] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V79 rat8 [V79,T10] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V80 rat9 [V80,T17] ( 3, 3.57) long -> x0 "Spilling to split statement for tree"
+; V81 rat10 [V81,T20] ( 3, 3.24) long -> x1 "runtime lookup"
+; V82 rat11 [V82,T11] ( 3, 4.54) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V83 rat12 [V83,T50] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V84 rat13 [V84,T68] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V85 rat14 [V85,T51] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V86 rat15 [V86,T35] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V87 rat16 [V87,T38] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V88 rat17 [V88,T33] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V89 rat18 [V89,T36] ( 3, 0.04) long -> x0 "Spilling to split statement for tree"
+; V90 rat19 [V90,T37] ( 3, 0.03) long -> x1 "runtime lookup"
+; V91 rat20 [V91,T34] ( 3, 0.05) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V92 rat21 [V92,T52] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V93 rat22 [V93,T69] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V94 rat23 [V94,T53] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V95 rat24 [V95,T54] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
+; V96 rat25 [V96,T55] ( 3, 0 ) long -> x11 "fgMakeTemp is creating a new local variable"
+;* V97 rat26 [V97,T56] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V98 rat27 [V98,T70] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V99 rat28 [V99,T57] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V100 rat29 [V100,T58] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
+; V101 rat30 [V101,T59] ( 3, 0 ) long -> x1 "runtime lookup"
+; V102 rat31 [V102,T60] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
; V103 rat32 [V103,T61] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
-; V104 rat33 [V104,T62] ( 3, 0 ) long -> x1 "runtime lookup"
-; V105 rat34 [V105,T63] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-; V106 rat35 [V106,T64] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
-; V107 rat36 [V107,T65] ( 3, 0 ) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V108 rat37 [V108,T66] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V109 rat38 [V109,T74] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V110 rat39 [V110,T67] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V104 rat33 [V104,T62] ( 3, 0 ) long -> x11 "fgMakeTemp is creating a new local variable"
+;* V105 rat34 [V105,T63] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V106 rat35 [V106,T71] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V107 rat36 [V107,T64] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 40
@@ -139,22 +136,22 @@ G_M50578_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x20]
;; size=44 bbWeight=1 PerfScore 9.50
G_M50578_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M50578_IG39
+ cbz x20, G_M50578_IG38
ldr xzr, [x19]
ldr w0, [x19, #0x40]
cmp w0, #0
- ble G_M50578_IG17
+ ble G_M50578_IG15
;; size=20 bbWeight=1 PerfScore 8.50
G_M50578_IG03: ; bbWeight=0.82, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x21, [x19, #0x08]
; gcrRegs +[x21]
- cbnz x21, G_M50578_IG26
+ cbnz x21, G_M50578_IG25
ldr x0, [x20]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M50578_IG16
+ bne G_M50578_IG18
;; size=32 bbWeight=0.82 PerfScore 8.19
G_M50578_IG04: ; bbWeight=0.77, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
@@ -179,7 +176,7 @@ G_M50578_IG05: ; bbWeight=0.82, gcrefRegs=180000 {x19 x20}, byrefRegs=000
asr w2, w1, #14
ldr w3, [x0, #0x08]
cmp w2, w3
- bhs G_M50578_IG38
+ bhs G_M50578_IG37
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -189,7 +186,7 @@ G_M50578_IG05: ; bbWeight=0.82, gcrefRegs=180000 {x19 x20}, byrefRegs=000
and w1, w1, #0xD1FFAB1E
ldr w2, [x0, #0x08]
cmp w1, w2
- bhs G_M50578_IG38
+ bhs G_M50578_IG37
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -206,7 +203,7 @@ G_M50578_IG07: ; bbWeight=0.82, isz, extend
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x18]
- cbz x1, G_M50578_IG18
+ cbz x1, G_M50578_IG16
;; size=24 bbWeight=0.82 PerfScore 11.10
G_M50578_IG08: ; bbWeight=0.82, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x1
@@ -219,55 +216,29 @@ G_M50578_IG08: ; bbWeight=0.82, gcrefRegs=180000 {x19 x20}, byrefRegs=000
mov x24, x0
; gcrRegs +[x24]
sub w22, w22, #1
- cbz x24, G_M50578_IG20
+ cbz x24, G_M50578_IG19
ldr x0, [x24]
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M50578_IG20
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x30]
- cbnz x0, G_M50578_IG12
...
+0 (0.00%) : 10308.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable
1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (Tier0-FullOpts)
@@ -16,7 +16,7 @@
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
; V06 loc3 [V06,T14] ( 4, 5 ) int -> x21
; V07 loc4 [V07,T15] ( 4, 5 ) int -> x24
-; V08 loc5 [V08,T37] ( 3, 1.50) int -> x19
+; V08 loc5 [V08,T35] ( 3, 1.50) int -> x19
; V09 loc6 [V09,T07] ( 13, 11.50) ref -> [fp-0x68] do-not-enreg[M] class-hnd EH-live <<unknown class>>
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
; V11 loc8 [V11,T05] ( 5, 14 ) int -> x0
@@ -39,7 +39,7 @@
; V28 tmp16 [V28 ] ( 3, 3 ) struct ( 8) [fp-0x50] do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
; V29 tmp17 [V29,T18] ( 8, 4 ) int -> x22 "Inline return value spill temp"
; V30 tmp18 [V30,T24] ( 3, 3 ) int -> x1 "Inlining Arg"
-; V31 tmp19 [V31,T34] ( 2, 2 ) long -> x21 "Inlining Arg"
+; V31 tmp19 [V31,T32] ( 2, 2 ) long -> x21 "Inlining Arg"
; V32 tmp20 [V32,T23] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <int[]>
;* V33 tmp21 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V34 tmp22 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -49,24 +49,24 @@
; V38 tmp26 [V38,T19] ( 5, 4.00) long -> [fp-0x58] spill-single-def "Inlining Arg"
;* V39 tmp27 [V39 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V40 tmp28 [V40 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V41 tmp29 [V41,T35] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V41 tmp29 [V41,T33] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V42 tmp30 [V42,T11] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
; V43 tmp31 [V43,T12] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
; V44 tmp32 [V44,T06] ( 3, 12 ) byref -> x1 "dup spill"
;* V45 tmp33 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp34 [V46 ] ( 0, 0 ) int -> zero-ref single-def "field V04._length (fldOffset=0x8)" P-INDEP
-; V47 tmp35 [V47,T43] ( 4, 1.50) byref -> x21 single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+; V47 tmp35 [V47,T41] ( 4, 1.50) byref -> x21 single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp36 [V48 ] ( 0, 0 ) int -> zero-ref single-def "field V13._length (fldOffset=0x8)" P-INDEP
;* V49 tmp37 [V49 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp38 [V50 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
-; V51 tmp39 [V51,T39] ( 2, 1.50) int -> [fp-0x48] do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
-; V52 tmp40 [V52,T40] ( 2, 1.50) int -> [fp-0x44] do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
+; V51 tmp39 [V51,T37] ( 2, 1.50) int -> [fp-0x48] do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
+; V52 tmp40 [V52,T38] ( 2, 1.50) int -> [fp-0x44] do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
;* V53 tmp41 [V53 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V54 tmp42 [V54 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
-; V55 tmp43 [V55,T41] ( 2, 1.50) int -> [fp-0x50] do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
-; V56 tmp44 [V56,T42] ( 2, 1.50) int -> [fp-0x4C] do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
-; V57 tmp45 [V57,T44] ( 2, 1 ) byref -> x23 "field V33._reference (fldOffset=0x0)" P-INDEP
-; V58 tmp46 [V58,T45] ( 2, 1 ) int -> x22 "field V33._length (fldOffset=0x8)" P-INDEP
+; V55 tmp43 [V55,T39] ( 2, 1.50) int -> [fp-0x50] do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
+; V56 tmp44 [V56,T40] ( 2, 1.50) int -> [fp-0x4C] do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
+; V57 tmp45 [V57,T42] ( 2, 1 ) byref -> x23 "field V33._reference (fldOffset=0x0)" P-INDEP
+; V58 tmp46 [V58,T43] ( 2, 1 ) int -> x22 "field V33._length (fldOffset=0x8)" P-INDEP
;* V59 tmp47 [V59 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V60 tmp48 [V60 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V61 tmp49 [V61 ] ( 0, 0 ) byref -> zero-ref single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -75,25 +75,22 @@
;* V64 tmp52 [V64 ] ( 0, 0 ) int -> zero-ref single-def "field V37._length (fldOffset=0x8)" P-INDEP
; V65 tmp53 [V65,T16] ( 3, 4.50) byref -> x23 single-def "V05.[000..008)"
; V66 tmp54 [V66,T17] ( 3, 4.50) int -> x22 single-def "V05.[008..012)"
-; V67 tmp55 [V67,T36] ( 3, 1.50) byref -> x23 "V16.[000..008)"
-; V68 tmp56 [V68,T38] ( 3, 1.50) int -> x22 "V16.[008..012)"
+; V67 tmp55 [V67,T34] ( 3, 1.50) byref -> x23 "V16.[000..008)"
+; V68 tmp56 [V68,T36] ( 3, 1.50) int -> x22 "V16.[008..012)"
; V69 tmp57 [V69,T03] ( 2, 16 ) ref -> x1 "argument with side effect"
; V70 GsCookie [V70 ] ( 1, 1 ) long -> [fp-0x70] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V71 PSPSym [V71,T47] ( 1, 1 ) long -> [fp-0x38] do-not-enreg[V] "PSPSym"
+; V71 PSPSym [V71,T44] ( 1, 1 ) long -> [fp-0x38] do-not-enreg[V] "PSPSym"
; V72 cse0 [V72,T08] ( 5, 10 ) int -> x11 "CSE - aggressive"
; V73 cse1 [V73,T09] ( 11, 7 ) long -> registers multi-def "CSE - aggressive"
-; V74 rat0 [V74,T30] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V74 rat0 [V74,T29] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V75 rat1 [V75,T26] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-; V76 rat2 [V76,T31] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V76 rat2 [V76,T30] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V77 rat3 [V77,T27] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-; V78 rat4 [V78,T32] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V78 rat4 [V78,T31] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V79 rat5 [V79,T28] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V80 rat6 [V80,T33] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V81 rat7 [V81,T46] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V82 rat8 [V82,T29] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V83 rat9 [V83,T02] ( 3, 17.60) long -> x1 "Spilling to split statement for tree"
-; V84 rat10 [V84,T01] ( 3, 22.40) long -> x11 "fgMakeTemp is creating a new local variable"
-; V85 rat11 [V85,T25] ( 3, 3 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V80 rat6 [V80,T02] ( 3, 17.60) long -> x1 "Spilling to split statement for tree"
+; V81 rat7 [V81,T01] ( 3, 22.40) long -> x11 "fgMakeTemp is creating a new local variable"
+; V82 rat8 [V82,T25] ( 3, 3 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 64
+4 (+0.24%) : 702619.dasm - Roslyn.Utilities.AsyncLazy1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task
1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
@@ -14,7 +14,7 @@
; V02 arg2 [V02 ] ( 7, 6 ) struct ( 8) [fp+0x38] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
; V04 loc1 [V04 ] ( 3, 2 ) struct ( 8) [fp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Roslyn.Utilities.AsyncLazy`1+WaitThatValidatesInvariants[System.__Canon]>
-; V05 loc2 [V05,T32] ( 2, 2 ) ref -> x20 class-hnd single-def <<unknown class>>
+; V05 loc2 [V05,T30] ( 2, 2 ) ref -> x20 class-hnd single-def <<unknown class>>
; V06 loc3 [V06,T16] ( 9, 4.18) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T22] ( 4, 3 ) ref -> x20
@@ -26,56 +26,53 @@
;* V14 tmp7 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V15 tmp8 [V15,T17] ( 6, 4 ) long -> x2 "Indirect call through function pointer"
;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.HashSet`1+Enumerator[Roslyn.Utilities.AsyncLazy`1+Request[Microsoft.CodeAnalysis.TreeAndVersion]]>
-;* V17 tmp10 [V17,T35] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V17 tmp10 [V17,T32] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V18 tmp11 [V18,T19] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
-; V19 tmp12 [V19,T28] ( 3, 2 ) ref -> x21 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.__Canon]>
+; V19 tmp12 [V19,T26] ( 3, 2 ) ref -> x21 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.__Canon]>
; V20 tmp13 [V20,T02] ( 10, 10 ) ref -> x20 class-hnd "Inlining Arg" <Roslyn.Utilities.AsyncLazy`1+Request[System.__Canon]>
-;* V21 tmp14 [V21,T36] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V21 tmp14 [V21,T33] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V22 tmp15 [V22,T20] ( 2, 4 ) byref -> x15 "Inlining Arg"
;* V23 tmp16 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
;* V24 tmp17 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Exception]>
-; V25 tmp18 [V25,T29] ( 3, 2 ) ref -> x21 class-hnd "Inline return value spill temp" <System.__Canon>
+; V25 tmp18 [V25,T27] ( 3, 2 ) ref -> x21 class-hnd "Inline return value spill temp" <System.__Canon>
;* V26 tmp19 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V27 tmp20 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V28 tmp21 [V28,T31] ( 2, 1 ) ubyte -> x23 "Inline stloc first use temp"
+; V28 tmp21 [V28,T29] ( 2, 1 ) ubyte -> x23 "Inline stloc first use temp"
; V29 tmp22 [V29,T01] ( 9, 12.68) ref -> x22 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
-; V30 tmp23 [V30,T30] ( 3, 2 ) ref -> x23 class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V31 tmp24 [V31,T33] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V30 tmp23 [V30,T28] ( 3, 2 ) ref -> x23 class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
+; V31 tmp24 [V31,T31] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
; V32 tmp25 [V32,T12] ( 5, 5 ) int -> x14 "Inline stloc first use temp"
-; V33 tmp26 [V33,T38] ( 3, 0 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T25] ( 3, 2.34) ref -> x1 class-hnd "Inline stloc first use temp" <System.Object>
+; V33 tmp26 [V33,T35] ( 3, 0 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V34 tmp27 [V34,T24] ( 3, 2.34) ref -> x1 class-hnd "Inline stloc first use temp" <System.Object>
; V35 tmp28 [V35,T07] ( 3, 6 ) byref -> x0 "Inlining Arg"
; V36 tmp29 [V36,T21] ( 2, 4 ) ref -> x1 class-hnd exact "Inlining Arg" <System.Object>
; V37 tmp30 [V37 ] ( 2, 0 ) struct ( 8) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.SpinWait>
-; V38 tmp31 [V38,T39] ( 3, 0 ) ref -> x24 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
+; V38 tmp31 [V38,T36] ( 3, 0 ) ref -> x24 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
;* V39 tmp32 [V39 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V40 tmp33 [V40,T15] ( 4, 4.20) byref -> x21 "Inlining Arg"
-; V41 tmp34 [V41,T27] ( 5, 2.20) ref -> x24 class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
+; V41 tmp34 [V41,T25] ( 5, 2.20) ref -> x24 class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
;* V42 tmp35 [V42 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V43 tmp36 [V43 ] ( 7, 6 ) ref -> [fp+0x38] do-not-enreg[X] addr-exposed single-def "field V02._source (fldOffset=0x0)" P-DEP
; V44 tmp37 [V44 ] ( 3, 2 ) ref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V04.<asyncLazy>P (fldOffset=0x0)" P-DEP
; V45 tmp38 [V45 ] ( 2, 0 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V37._count (fldOffset=0x0)" P-DEP
-; V46 tmp39 [V46,T45] ( 2, 0 ) ref -> x0 "argument with side effect"
-; V47 tmp40 [V47,T46] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V48 tmp41 [V48,T47] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V49 PSPSym [V49,T37] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
+; V46 tmp39 [V46,T42] ( 2, 0 ) ref -> x0 "argument with side effect"
+; V47 tmp40 [V47,T43] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V48 tmp41 [V48,T44] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V49 PSPSym [V49,T34] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
; V50 cse0 [V50,T18] ( 4, 4 ) byref -> x14 "CSE - moderate"
; V51 cse1 [V51,T04] ( 6, 6 ) byref -> x0 multi-def "CSE - aggressive"
; V52 cse2 [V52,T23] ( 3, 3 ) ref -> x15 "CSE - moderate"
; V53 cse3 [V53,T11] ( 10, 5.20) long -> x21 multi-def "CSE - aggressive"
-; V54 rat0 [V54,T40] ( 3, 0 ) long -> x1 "Spilling to split statement for tree"
-; V55 rat1 [V55,T41] ( 3, 0 ) long -> x2 "runtime lookup"
-; V56 rat2 [V56,T42] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V54 rat0 [V54,T37] ( 3, 0 ) long -> x1 "Spilling to split statement for tree"
+; V55 rat1 [V55,T38] ( 3, 0 ) long -> x2 "runtime lookup"
+; V56 rat2 [V56,T39] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
; V57 rat3 [V57,T13] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
; V58 rat4 [V58,T08] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
; V59 rat5 [V59,T09] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V60 rat6 [V60,T26] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V61 rat7 [V61,T34] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V62 rat8 [V62,T24] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V63 rat9 [V63,T14] ( 3, 4.40) long -> x21 "Spilling to split statement for tree"
-; V64 rat10 [V64,T10] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"
-; V65 rat11 [V65,T43] ( 3, 0 ) long -> x1 "Spilling to split statement for tree"
-; V66 rat12 [V66,T44] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V60 rat6 [V60,T14] ( 3, 4.40) long -> x21 "Spilling to split statement for tree"
+; V61 rat7 [V61,T10] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"
+; V62 rat8 [V62,T40] ( 3, 0 ) long -> x1 "Spilling to split statement for tree"
+; V63 rat9 [V63,T41] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 64
@@ -269,7 +266,7 @@ G_M38013_IG18: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x1, [x21, #0x38]
ldr x1, [x1]
ldr x11, [x1, #0x60]
- cbz x11, G_M38013_IG40
+ cbz x11, G_M38013_IG20
;; size=24 bbWeight=1 PerfScore 15.00
G_M38013_IG19: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
@@ -286,126 +283,50 @@ G_M38013_IG19: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldapr w15, [x14]
and w15, w15, #0xD1FFAB1E
cmp w15, #0xD1FFAB1E, LSL #12
- beq G_M38013_IG41
+ beq G_M38013_IG21
add x15, x20, #16
; byrRegs +[x15]
ldr x15, [x15]
; gcrRegs +[x15]
; byrRegs -[x15]
- cbz x15, G_M38013_IG20
+ cbz x15, G_M38013_IG34
add x15, x15, #32
; gcrRegs -[x15]
; byrRegs +[x15]
ldapr w15, [x15]
; byrRegs -[x15]
- cbnz w15, G_M38013_IG41
- ;; size=64 bbWeight=1 PerfScore 24.00
-G_M38013_IG20: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=4000 {x14}, byref, isz
- ; gcrRegs -[x0]
- ldapr w15, [x14]
- tbnz w15, #21, G_M38013_IG31
- ldapr w14, [x14]
+ cbz w15, G_M38013_IG34
+ b G_M38013_IG21
+ ;; size=68 bbWeight=1 PerfScore 25.00
+G_M38013_IG20: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x20]
; byrRegs -[x14]
- mov w15, #0xD1FFAB1E
- and w14, w14, w15
- mov w15, #0xD1FFAB1E
- cmp w14, w15
- bne G_M38013_IG33
- ldr x21, [x19, #0x38]
- ; gcrRegs +[x21]
- ;; size=36 bbWeight=1 PerfScore 13.00
-G_M38013_IG21: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ldr x22, [x20, #0x08]
- ; gcrRegs +[x22]
- mov w23, wzr
- add x0, x22, #52
- ; byrRegs +[x0]
- ldapr w14, [x0]
- mov w15, #0xD1FFAB1E
- tst w14, w15
- bne G_M38013_IG35
- orr w15, w14, #0xD1FFAB1E
- mov w12, w14
- casal w12, w15, [x0]
- cmp w12, w14
- bne G_M38013_IG30
- ;; size=48 bbWeight=1 PerfScore 14.50
-G_M38013_IG22: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x0]
- add x14, x22, #56
- ; byrRegs +[x14]
- mov x15, x21
- ; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x21]
- ; byrRegs -[x14]
- add x0, x22, #52
- ; byrRegs +[x0]
- ldapr w1, [x0]
- orr w1, w1, #0xD1FFAB1E
- swpal w1, w0, [x0]
- ; byrRegs -[x0]
- ldr x23, [x22, #0x28]
- ; gcrRegs +[x23]
- cbnz x23, G_M38013_IG29
- ;; size=36 bbWeight=1 PerfScore 13.00
-G_M38013_IG23: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x23]
- add x0, x22, #32
- ; byrRegs +[x0]
+ mov x0, x21
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- ; gcrRegs +[x1]
- cbz x0, G_M38013_IG42
- bl <unknown method>
- ; gcrRegs -[x1] +[x0]
- ; byrRegs -[x0]
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
- mov x1, x0
+ mov x11, x0
+ b G_M38013_IG19
+ ;; size=28 bbWeight=0.20 PerfScore 0.90
+G_M38013_IG21: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x20]
+ ldr x1, [x20, #0x10]
; gcrRegs +[x1]
- cbz x1, G_M38013_IG25
- ;; size=36 bbWeight=1 PerfScore 8.50
-G_M38013_IG24: ; bbWeight=0.34, gcrefRegs=580002 {x1 x19 x20 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x22
+ mov x0, x20
; gcrRegs +[x0]
- movz x2, #0xD1FFAB1E // code for <unknown method>
+ movz x2, #0xD1FFAB1E // code for System.Threading.Tasks.TaskCompletionSource`1[System.__Canon]:TrySetCanceled(System.Threading.CancellationToken):ubyte:this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- ; gcrRegs -[x0-x1 x22]
+ ; gcrRegs -[x0-x1]
; gcr arg pop 0
- ;; size=24 bbWeight=0.34 PerfScore 2.03
-G_M38013_IG25: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- add x21, x20, #24
- ; byrRegs +[x21]
- ldr x24, [x21]
- ; gcrRegs +[x24]
- cbnz x24, G_M38013_IG39
- ;; size=12 bbWeight=1 PerfScore 4.50
-G_M38013_IG26: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x20 x24]
- ; byrRegs -[x21]
- ldr x0, [fp, #0x18] // [V06 loc3]
- ; gcrRegs +[x0]
- movz x11, #0xD1FFAB1E // code for <unknown method>
- movk x11, #0xD1FFAB1E LSL #16
- movk x11, #0xD1FFAB1E LSL #32
- ldr x1, [x11]
- blr x1
- ; gcrRegs -[x0]
- ; gcr arg pop 0
- cbnz w0, G_M38013_IG18
- ;; size=28 bbWeight=1 PerfScore 8.50
-G_M38013_IG27: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- b G_M38013_IG45
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M38013_IG28: ; bbWeight=0, gcrefRegs=1080000 {x19 x24}, byrefRegs=200000 {x21}, byref
- ; gcrRegs +[x19 x24]
+ b G_M38013_IG39
+ ;; size=32 bbWeight=0 PerfScore 0.00
+G_M38013_IG22: ; bbWeight=0, gcrefRegs=1080000 {x19 x24}, byrefRegs=200000 {x21}, byref
+ ; gcrRegs -[x20] +[x24]
; byrRegs +[x21]
ldr x0, [x21, #0x08]
mov x1, x24
@@ -418,10 +339,31 @@ G_M38013_IG28: ; bbWeight=0, gcrefRegs=1080000 {x19 x24}, byrefRegs=20000
; gcrRegs -[x1 x24]
; byrRegs -[x21]
; gcr arg pop 0
...
+24 (+1.06%) : 52405.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Canon,System.Canon]:TryInsert(System.Canon,System.Canon,ubyte):ubyte:this (Tier1)
@@ -9,32 +9,32 @@
; 7 inlinees with PGO data; 20 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 29, 13.15) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 30, 14.67) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 15, 6.18) ref -> x20 ld-addr-op class-hnd single-def <System.__Canon>
-; V02 arg2 [V02,T14] ( 5, 3 ) ref -> x21 class-hnd single-def <System.__Canon>
-; V03 arg3 [V03,T16] ( 6, 2.50) ubyte -> x22 single-def
+; V02 arg2 [V02,T13] ( 5, 3 ) ref -> x21 class-hnd single-def <System.__Canon>
+; V03 arg3 [V03,T15] ( 6, 2.50) ubyte -> x22 single-def
; V04 loc0 [V04 ] ( 17, 7.10) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.__Canon]]>
-; V05 loc1 [V05,T26] ( 5, 3.02) ref -> x23 class-hnd single-def <<unknown class>>
-; V06 loc2 [V06,T23] ( 6, 3.55) int -> x25 single-def
-; V07 loc3 [V07,T33] ( 7, 2.57) int -> x26
-; V08 loc4 [V08,T25] ( 5, 3.03) byref -> x27
-; V09 loc5 [V09,T13] ( 13, 5.60) int -> x28
-; V10 loc6 [V10,T46] ( 5, 2.00) int -> x23
-; V11 loc7 [V11,T52] ( 4, 1.51) ref -> x23 class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
-; V12 loc8 [V12,T53] ( 3, 1.50) int -> x23 single-def
+; V05 loc1 [V05,T24] ( 5, 3.02) ref -> x23 class-hnd single-def <<unknown class>>
+; V06 loc2 [V06,T21] ( 6, 3.55) int -> x25 single-def
+; V07 loc3 [V07,T31] ( 7, 2.57) int -> x26
+; V08 loc4 [V08,T23] ( 5, 3.03) byref -> x27
+; V09 loc5 [V09,T12] ( 13, 5.60) int -> x28
+; V10 loc6 [V10,T43] ( 5, 2.00) int -> x23
+; V11 loc7 [V11,T49] ( 4, 1.51) ref -> x23 class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+; V12 loc8 [V12,T50] ( 3, 1.50) int -> x23 single-def
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T40] ( 3, 2.01) int -> x25
+; V14 tmp1 [V14,T38] ( 3, 2.01) int -> x25
;* V15 tmp2 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp3 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V17 tmp4 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V18 tmp5 [V18,T15] ( 5, 4.99) byref -> x0 single-def "dup spill"
-; V19 tmp6 [V19,T77] ( 3, 0.00) long -> x1 "spilling helperCall"
+; V18 tmp5 [V18,T14] ( 5, 4.99) byref -> x0 single-def "dup spill"
+; V19 tmp6 [V19,T74] ( 3, 0.00) long -> x1 "spilling helperCall"
;* V20 tmp7 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp8 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp9 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V23 tmp10 [V23,T81] ( 3, 0 ) long -> [fp+0x20] "spilling helperCall"
+; V23 tmp10 [V23,T78] ( 3, 0 ) long -> [fp+0x20] "spilling helperCall"
;* V24 tmp11 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V25 tmp12 [V25,T80] ( 4, 0 ) long -> [fp+0x18] "VirtualCall with runtime lookup"
+; V25 tmp12 [V25,T77] ( 4, 0 ) long -> [fp+0x18] "VirtualCall with runtime lookup"
;* V26 tmp13 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V27 tmp14 [V27 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V28 tmp15 [V28 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -47,12 +47,12 @@
;* V35 tmp22 [V35 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V36 tmp23 [V36 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V37 tmp24 [V37 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V38 tmp25 [V38,T67] ( 4, 0.05) long -> x11 "VirtualCall with runtime lookup"
-; V39 tmp26 [V39,T49] ( 3, 1.99) int -> x25 "guarded devirt return temp"
+; V38 tmp25 [V38,T64] ( 4, 0.05) long -> x11 "VirtualCall with runtime lookup"
+; V39 tmp26 [V39,T46] ( 3, 1.99) int -> x25 "guarded devirt return temp"
;* V40 tmp27 [V40 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp"
;* V41 tmp28 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.TransformNode`2[Microsoft.Interop.DiagnosticInfo,Microsoft.Interop.DiagnosticInfo]>
-; V42 tmp29 [V42,T58] ( 3, 1.00) int -> x3 "guarded devirt return temp"
-; V43 tmp30 [V43,T19] ( 7, 4.14) ref -> x24 "guarded devirt arg temp"
+; V42 tmp29 [V42,T55] ( 3, 1.00) int -> x3 "guarded devirt return temp"
+; V43 tmp30 [V43,T17] ( 7, 4.14) ref -> x24 "guarded devirt arg temp"
;* V44 tmp31 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.ObjectEqualityComparer`1[System.Object]>
;* V45 tmp32 [V45 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V46 tmp33 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
@@ -62,98 +62,95 @@
; V50 tmp37 [V50,T05] ( 3, 6.04) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V51 tmp38 [V51,T06] ( 3, 6.04) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V52 tmp39 [V52 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V53 tmp40 [V53,T56] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V53 tmp40 [V53,T53] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V54 tmp41 [V54 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V55 tmp42 [V55,T57] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V55 tmp42 [V55,T54] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V56 tmp43 [V56 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inlining Arg" <System.Object>
;* V57 tmp44 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
-; V58 tmp45 [V58,T59] ( 3, 1.00) int -> x3 "guarded devirt return temp"
+; V58 tmp45 [V58,T56] ( 3, 1.00) int -> x3 "guarded devirt return temp"
;* V59 tmp46 [V59 ] ( 0, 0 ) ref -> zero-ref "guarded devirt arg temp"
;* V60 tmp47 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolGeneric>
-; V61 tmp48 [V61,T50] ( 2, 1.74) ref -> x1 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V61 tmp48 [V61,T47] ( 2, 1.74) ref -> x1 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbol>
;* V62 tmp49 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.SymbolEqualityComparer>
-; V63 tmp50 [V63,T61] ( 3, 0.87) ubyte -> x3 "Inline return value spill temp"
-; V64 tmp51 [V64,T54] ( 3, 1.31) ref -> x1 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-; V65 tmp52 [V65,T51] ( 2, 1.74) int -> [fp+0x14] spill-single-def "Inlining Arg"
+; V63 tmp50 [V63,T58] ( 3, 0.87) ubyte -> x3 "Inline return value spill temp"
+; V64 tmp51 [V64,T51] ( 3, 1.31) ref -> x1 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V65 tmp52 [V65,T48] ( 2, 1.74) int -> [fp+0x14] spill-single-def "Inlining Arg"
;* V66 tmp53 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V67 tmp54 [V67 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V68 tmp55 [V68 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V69 tmp56 [V69,T64] ( 3, 0.10) int -> x1 "Inlining Arg"
-; V70 tmp57 [V70,T62] ( 3, 0.10) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V71 tmp58 [V71,T63] ( 3, 0.10) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V69 tmp56 [V69,T61] ( 3, 0.10) int -> x1 "Inlining Arg"
+; V70 tmp57 [V70,T59] ( 3, 0.10) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V71 tmp58 [V71,T60] ( 3, 0.10) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V72 tmp59 [V72 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V73 tmp60 [V73,T72] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V73 tmp60 [V73,T69] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V74 tmp61 [V74 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V75 tmp62 [V75,T73] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V75 tmp62 [V75,T70] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V76 tmp63 [V76 ] ( 12, 4.55) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V04._items (fldOffset=0x0)" P-DEP
; V77 tmp64 [V77 ] ( 17, 7.10) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V04._length (fldOffset=0x8)" P-DEP
-; V78 tmp65 [V78,T38] ( 2, 2.01) ref -> x0 single-def "field V46._items (fldOffset=0x0)" P-INDEP
-; V79 tmp66 [V79,T39] ( 2, 2.01) int -> x1 single-def "field V46._length (fldOffset=0x8)" P-INDEP
-; V80 tmp67 [V80,T70] ( 2, 0.03) ref -> x0 single-def "field V66._items (fldOffset=0x0)" P-INDEP
-; V81 tmp68 [V81,T71] ( 2, 0.03) int -> x1 single-def "field V66._length (fldOffset=0x8)" P-INDEP
+; V78 tmp65 [V78,T36] ( 2, 2.01) ref -> x0 single-def "field V46._items (fldOffset=0x0)" P-INDEP
+; V79 tmp66 [V79,T37] ( 2, 2.01) int -> x1 single-def "field V46._length (fldOffset=0x8)" P-INDEP
+; V80 tmp67 [V80,T67] ( 2, 0.03) ref -> x0 single-def "field V66._items (fldOffset=0x0)" P-INDEP
+; V81 tmp68 [V81,T68] ( 2, 0.03) int -> x1 single-def "field V66._length (fldOffset=0x8)" P-INDEP
; V82 tmp69 [V82,T08] ( 3, 6.04) int -> x2 "index expr"
; V83 tmp70 [V83,T09] ( 3, 6.04) int -> x1 "index expr"
-; V84 tmp71 [V84,T21] ( 2, 4.09) long -> x1 "argument with side effect"
-; V85 tmp72 [V85,T44] ( 2, 2.00) long -> x1 "argument with side effect"
-; V86 tmp73 [V86,T37] ( 2, 2.08) long -> x1 "argument with side effect"
-; V87 tmp74 [V87,T65] ( 3, 0.10) int -> x2 "index expr"
-; V88 tmp75 [V88,T66] ( 3, 0.10) int -> x1 "index expr"
-; V89 tmp76 [V89,T48] ( 2, 2.00) long -> x1 "argument with side effect"
-; V90 tmp77 [V90,T97] ( 2, 0 ) long -> x1 "argument with side effect"
-; V91 tmp78 [V91,T96] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V92 tmp79 [V92,T98] ( 2, 0 ) long -> x1 "argument with side effect"
-; V93 tmp80 [V93,T99] ( 2, 0 ) long -> x0 "argument with side effect"
-; V94 tmp81 [V94,T100] ( 2, 0 ) long -> x1 "argument with side effect"
-; V95 tmp82 [V95,T101] ( 2, 0 ) long -> x0 "argument with side effect"
-; V96 tmp83 [V96,T45] ( 2, 2.00) long -> x1 "argument with side effect"
-; V97 cse0 [V97,T78] ( 3, 0.00) int -> x22 "CSE - conservative"
+; V84 tmp71 [V84,T19] ( 2, 4.09) long -> x1 "argument with side effect"
+; V85 tmp72 [V85,T41] ( 2, 2.00) long -> x1 "argument with side effect"
+; V86 tmp73 [V86,T35] ( 2, 2.08) long -> x1 "argument with side effect"
+; V87 tmp74 [V87,T62] ( 3, 0.10) int -> x2 "index expr"
+; V88 tmp75 [V88,T63] ( 3, 0.10) int -> x1 "index expr"
+; V89 tmp76 [V89,T45] ( 2, 2.00) long -> x1 "argument with side effect"
+; V90 tmp77 [V90,T94] ( 2, 0 ) long -> x1 "argument with side effect"
+; V91 tmp78 [V91,T93] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V92 tmp79 [V92,T95] ( 2, 0 ) long -> x1 "argument with side effect"
+; V93 tmp80 [V93,T96] ( 2, 0 ) long -> x0 "argument with side effect"
+; V94 tmp81 [V94,T97] ( 2, 0 ) long -> x1 "argument with side effect"
+; V95 tmp82 [V95,T98] ( 2, 0 ) long -> x0 "argument with side effect"
+; V96 tmp83 [V96,T42] ( 2, 2.00) long -> x1 "argument with side effect"
+; V97 cse0 [V97,T75] ( 3, 0.00) int -> x22 "CSE - conservative"
; V98 cse1 [V98,T03] ( 34, 7.52) long -> x24 multi-def "CSE - aggressive"
-; V99 rat0 [V99,T69] ( 3, 0.03) long -> x0 "Spilling to split statement for tree"
-; V100 rat1 [V100,T68] ( 3, 0.04) long -> x11 "fgMakeTemp is creating a new local variable"
-; V101 rat2 [V101,T17] ( 3, 4.42) long -> x0 "Spilling to split statement for tree"
-; V102 rat3 [V102,T22] ( 3, 4.02) long -> x1 "runtime lookup"
+; V99 rat0 [V99,T66] ( 3, 0.03) long -> x0 "Spilling to split statement for tree"
+; V100 rat1 [V100,T65] ( 3, 0.04) long -> x11 "fgMakeTemp is creating a new local variable"
+; V101 rat2 [V101,T16] ( 3, 4.42) long -> x0 "Spilling to split statement for tree"
+; V102 rat3 [V102,T20] ( 3, 4.02) long -> x1 "runtime lookup"
; V103 rat4 [V103,T11] ( 3, 5.62) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V104 rat5 [V104,T18] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V105 rat6 [V105,T41] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V106 rat7 [V106,T12] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V107 rat8 [V107,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V108 rat9 [V108,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V109 rat10 [V109,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V110 rat11 [V110,T20] ( 3, 4.09) long -> x1 "runtime lookup"
-; V111 rat12 [V111,T10] ( 3, 5.72) long -> x1 "fgMakeTemp is creating a new local variable"
-; V112 rat13 [V112,T42] ( 3, 2.00) long -> x1 "runtime lookup"
-; V113 rat14 [V113,T29] ( 3, 2.81) long -> x1 "fgMakeTemp is creating a new local variable"
-; V114 rat15 [V114,T34] ( 3, 2.29) long -> x0 "Spilling to split statement for tree"
-; V115 rat16 [V115,T36] ( 3, 2.08) long -> x1 "runtime lookup"
-; V116 rat17 [V116,T27] ( 3, 2.92) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V117 rat18 [V117,T55] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V118 rat19 [V118,T28] ( 2, 2.08) long -> x0 "fgMakeTemp is creating a new local variable"
-; V119 rat20 [V119,T35] ( 3, 2.21) long -> x0 "Spilling to split statement for tree"
-; V120 rat21 [V120,T43] ( 3, 2.00) long -> x1 "runtime lookup"
-; V121 rat22 [V121,T30] ( 3, 2.81) long -> x1 "fgMakeTemp is creating a new local variable"
-; V122 rat23 [V122,T82] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
-; V123 rat24 [V123,T83] ( 3, 0 ) long -> x0 "runtime lookup"
-; V124 rat25 [V124,T84] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
-; V125 rat26 [V125,T76] ( 2, 0.00) long -> x0 "Spilling to split statement for tree"
-;* V126 rat27 [V126,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V127 rat28 [V127,T74] ( 2, 0.00) long -> x0 "fgMakeTemp is creating a new local variable"
-; V128 rat29 [V128,T85] ( 3, 0 ) long -> x1 "runtime lookup"
-; V129 rat30 [V129,T86] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-; V130 rat31 [V130,T87] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
-; V131 rat32 [V131,T88] ( 3, 0 ) long -> x3 "fgMakeTemp is creating a new local variable"
-; V132 rat33 [V132,T89] ( 3, 0 ) long -> x1 "runtime lookup"
-; V133 rat34 [V133,T90] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V134 rat35 [V134,T102] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V135 rat36 [V135,T91] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V136 rat37 [V136,T92] ( 3, 0 ) long -> x1 "runtime lookup"
-; V137 rat38 [V137,T93] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-; V138 rat39 [V138,T94] ( 3, 0 ) long -> x0 "runtime lookup"
-; V139 rat40 [V139,T95] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V140 rat41 [V140,T75] ( 3, 0.00) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V141 rat42 [V141,T60] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V142 rat43 [V142,T31] ( 2, 2.00) long -> x0 "fgMakeTemp is creating a new local variable"
-; V143 rat44 [V143,T47] ( 3, 2.00) long -> x1 "runtime lookup"
-; V144 rat45 [V144,T32] ( 3, 2.79) long -> x1 "fgMakeTemp is creating a new local variable"
+; V104 rat5 [V104,T04] ( 2, 6.10) long -> x0 "Spilling to split statement for tree"
+;* V105 rat6 [V105,T22] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V106 rat7 [V106,T01] ( 2, 6.10) long -> x0 "fgMakeTemp is creating a new local variable"
+; V107 rat8 [V107,T18] ( 3, 4.09) long -> x1 "runtime lookup"
+; V108 rat9 [V108,T10] ( 3, 5.72) long -> x1 "fgMakeTemp is creating a new local variable"
+; V109 rat10 [V109,T39] ( 3, 2.00) long -> x1 "runtime lookup"
+; V110 rat11 [V110,T27] ( 3, 2.81) long -> x1 "fgMakeTemp is creating a new local variable"
+; V111 rat12 [V111,T32] ( 3, 2.29) long -> x0 "Spilling to split statement for tree"
+; V112 rat13 [V112,T34] ( 3, 2.08) long -> x1 "runtime lookup"
+; V113 rat14 [V113,T25] ( 3, 2.92) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V114 rat15 [V114,T52] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V115 rat16 [V115,T26] ( 2, 2.08) long -> x0 "fgMakeTemp is creating a new local variable"
+; V116 rat17 [V116,T33] ( 3, 2.21) long -> x0 "Spilling to split statement for tree"
+; V117 rat18 [V117,T40] ( 3, 2.00) long -> x1 "runtime lookup"
+; V118 rat19 [V118,T28] ( 3, 2.81) long -> x1 "fgMakeTemp is creating a new local variable"
+; V119 rat20 [V119,T79] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
+; V120 rat21 [V120,T80] ( 3, 0 ) long -> x0 "runtime lookup"
+; V121 rat22 [V121,T81] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V122 rat23 [V122,T73] ( 2, 0.00) long -> x0 "Spilling to split statement for tree"
+;* V123 rat24 [V123,T76] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V124 rat25 [V124,T71] ( 2, 0.00) long -> x0 "fgMakeTemp is creating a new local variable"
+; V125 rat26 [V125,T82] ( 3, 0 ) long -> x1 "runtime lookup"
+; V126 rat27 [V126,T83] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
+; V127 rat28 [V127,T84] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V128 rat29 [V128,T85] ( 3, 0 ) long -> x3 "fgMakeTemp is creating a new local variable"
+; V129 rat30 [V129,T86] ( 3, 0 ) long -> x1 "runtime lookup"
+; V130 rat31 [V130,T87] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V131 rat32 [V131,T99] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V132 rat33 [V132,T88] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V133 rat34 [V133,T89] ( 3, 0 ) long -> x1 "runtime lookup"
+; V134 rat35 [V134,T90] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
+; V135 rat36 [V135,T91] ( 3, 0 ) long -> x0 "runtime lookup"
+; V136 rat37 [V136,T92] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
+; V137 rat38 [V137,T72] ( 3, 0.00) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V138 rat39 [V138,T57] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V139 rat40 [V139,T29] ( 2, 2.00) long -> x0 "fgMakeTemp is creating a new local variable"
+; V140 rat41 [V140,T44] ( 3, 2.00) long -> x1 "runtime lookup"
+; V141 rat42 [V141,T30] ( 3, 2.79) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 48
@@ -176,7 +173,7 @@ G_M33517_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w22, w3
;; size=52 bbWeight=1 PerfScore 10.50
G_M33517_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M33517_IG63
+ cbz x20, G_M33517_IG65
;; size=4 bbWeight=1 PerfScore 1.00
G_M33517_IG03: ; bbWeight=1.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x40]
@@ -197,7 +194,7 @@ G_M33517_IG06: ; bbWeight=1.00, gcrefRegs=B80000 {x19 x20 x21 x23}, byref
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
...
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
-20 (-4.46%) : 23858.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary
2[System.Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.Canon]):this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 17 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
+; V00 this [V00,T04] ( 7, 16 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V01 arg1 [V01,T15] ( 4, 4 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
-; V02 arg2 [V02,T18] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V02 arg2 [V02,T17] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V03 loc0 [V03 ] ( 3, 11 ) struct (24) [fp+0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SmallDictionary`2+Enumerator[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V04 loc1 [V04 ] ( 5, 10 ) struct (32) [fp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,34 +27,31 @@
; V16 tmp11 [V16 ] ( 3, 11 ) ref -> [fp+0x68] do-not-enreg[X] addr-exposed "field V03._stack (fldOffset=0x0)" P-DEP
; V17 tmp12 [V17 ] ( 3, 11 ) ref -> [fp+0x70] do-not-enreg[X] addr-exposed "field V03._next (fldOffset=0x8)" P-DEP
; V18 tmp13 [V18 ] ( 3, 11 ) ref -> [fp+0x78] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x10)" P-DEP
-; V19 tmp14 [V19,T23] ( 2, 4 ) ref -> x23 "field V11.DefaultType (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T24] ( 2, 4 ) ref -> x24 "field V11._extensions (fldOffset=0x8)" P-INDEP
-; V21 tmp16 [V21,T25] ( 2, 4 ) ubyte -> x25 "field V11.DefaultNullableAnnotation (fldOffset=0x10)" P-INDEP
+; V19 tmp14 [V19,T21] ( 2, 4 ) ref -> x23 "field V11.DefaultType (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T22] ( 2, 4 ) ref -> x24 "field V11._extensions (fldOffset=0x8)" P-INDEP
+; V21 tmp16 [V21,T23] ( 2, 4 ) ubyte -> x25 "field V11.DefaultNullableAnnotation (fldOffset=0x10)" P-INDEP
; V22 tmp17 [V22 ] ( 2, 4 ) ref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V12._stack (fldOffset=0x0)" P-DEP
; V23 tmp18 [V23 ] ( 2, 4 ) ref -> [fp+0x38] do-not-enreg[X] addr-exposed "field V12._next (fldOffset=0x8)" P-DEP
; V24 tmp19 [V24 ] ( 2, 4 ) ref -> [fp+0x40] do-not-enreg[X] addr-exposed "field V12._current (fldOffset=0x10)" P-DEP
-; V25 tmp20 [V25,T26] ( 2, 4 ) long -> x1 "argument with side effect"
+; V25 tmp20 [V25,T24] ( 2, 4 ) long -> x1 "argument with side effect"
; V26 tmp21 [V26,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V27 tmp22 [V27,T12] ( 2, 8 ) long -> x1 "argument with side effect"
; V28 tmp23 [V28 ] ( 4, 16 ) struct (24) [fp+0x18] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
; V29 tmp24 [V29,T13] ( 2, 8 ) int -> x1 "argument with side effect"
; V30 tmp25 [V30,T10] ( 2, 8 ) ref -> x0 "argument with side effect"
; V31 tmp26 [V31,T11] ( 2, 8 ) ref -> x2 "argument with side effect"
-; V32 cse0 [V32,T21] ( 3, 4 ) long -> x22 "CSE - aggressive"
-;* V33 cse1 [V33,T28] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V32 cse0 [V32,T19] ( 3, 4 ) long -> x22 "CSE - aggressive"
+;* V33 cse1 [V33,T25] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; V34 cse2 [V34,T14] ( 4, 4.40) long -> x21 "CSE - aggressive"
-; V35 rat0 [V35,T19] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V36 rat1 [V36,T22] ( 3, 4 ) long -> x22 "runtime lookup"
+; V35 rat0 [V35,T18] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V36 rat1 [V36,T20] ( 3, 4 ) long -> x22 "runtime lookup"
; V37 rat2 [V37,T16] ( 3, 5.60) long -> x22 "fgMakeTemp is creating a new local variable"
-; V38 rat3 [V38,T20] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V39 rat4 [V39,T27] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V40 rat5 [V40,T17] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V41 rat6 [V41,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V42 rat7 [V42,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V43 rat8 [V43,T08] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-; V44 rat9 [V44,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V45 rat10 [V45,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V46 rat11 [V46,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V38 rat3 [V38,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V39 rat4 [V39,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V40 rat5 [V40,T08] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+; V41 rat6 [V41,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V42 rat7 [V42,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V43 rat8 [V43,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 120
@@ -122,14 +119,9 @@ G_M40847_IG06: ; bbWeight=1, nogc, extend
ldr x0, [fp, #0x40]
str x0, [fp, #0x78]
;; size=16 bbWeight=1 PerfScore 7.00
-G_M40847_IG07: ; bbWeight=1, isz, extend
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x28]
- cbnz x0, G_M40847_IG12
+G_M40847_IG07: ; bbWeight=1, extend
b G_M40847_IG12
- ;; size=24 bbWeight=1 PerfScore 14.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M40847_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x22
add x8, fp, #72 // [V04 loc1]
@@ -220,7 +212,7 @@ G_M40847_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ret lr
;; size=24 bbWeight=1 PerfScore 7.00
-; Total bytes of code 448, prolog size 52, PerfScore 325.60, instruction count 112, allocated bytes for code 448 (MethodHash=69926070) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 428, prolog size 52, PerfScore 312.60, instruction count 107, allocated bytes for code 428 (MethodHash=69926070) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -231,7 +223,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 112 (0x00070) Actual length = 448 (0x0001c0)
+ Function Length : 107 (0x0006b) Actual length = 428 (0x0001ac)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-3.03%) : 67354.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
@@ -8,18 +8,18 @@
; 2 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 14 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]>
+; V00 this [V00,T04] ( 7, 13 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]>
; V01 arg1 [V01,T05] ( 8, 12 ) ref -> x19 class-hnd single-def <System.Array>
; V02 arg2 [V02,T08] ( 6, 8 ) int -> registers
; V03 loc0 [V03 ] ( 5, 12 ) struct (48) [fp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableSortedSet`1+Enumerator[System.__Canon]>
-; V04 loc1 [V04,T22] ( 2, 4 ) ref -> x23 class-hnd <System.__Canon>
+; V04 loc1 [V04,T20] ( 2, 4 ) ref -> x23 class-hnd <System.__Canon>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V09 tmp4 [V09,T07] ( 3, 12 ) int -> x20 "impSpillLclRefs"
;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V11 tmp6 [V11,T19] ( 6, 4 ) long -> x2 "Indirect call through function pointer"
+; V11 tmp6 [V11,T17] ( 6, 4 ) long -> x2 "Indirect call through function pointer"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V14 tmp9 [V14 ] ( 2, 4 ) struct (48) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableSortedSet`1+Enumerator[System.__Canon]>
@@ -29,27 +29,24 @@
; V18 tmp13 [V18,T13] ( 3, 6 ) int -> x0 "Inline stloc first use temp"
; V19 tmp14 [V19,T06] ( 3, 12 ) byref -> x25 "Inlining Arg"
;* V20 tmp15 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp16 [V21,T29] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V22 tmp17 [V22,T23] ( 2, 4 ) long -> x1 "argument with side effect"
+; V21 tmp16 [V21,T26] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V22 tmp17 [V22,T21] ( 2, 4 ) long -> x1 "argument with side effect"
; V23 tmp18 [V23,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V24 tmp19 [V24,T09] ( 2, 8 ) long -> x1 "argument with side effect"
; V25 tmp20 [V25,T10] ( 2, 8 ) long -> x2 "argument with side effect"
-; V26 PSPSym [V26,T26] ( 1, 1 ) long -> [fp+0x80] do-not-enreg[V] "PSPSym"
-; V27 cse0 [V27,T20] ( 3, 4 ) long -> x22 "CSE - aggressive"
-; V28 cse1 [V28,T24] ( 6, 3.20) long -> x21 multi-def "CSE - aggressive"
+; V26 PSPSym [V26,T23] ( 1, 1 ) long -> [fp+0x80] do-not-enreg[V] "PSPSym"
+; V27 cse0 [V27,T18] ( 3, 4 ) long -> x22 "CSE - aggressive"
+; V28 cse1 [V28,T22] ( 6, 3.20) long -> x21 multi-def "CSE - aggressive"
; V29 cse2 [V29,T11] ( 3, 6 ) ref -> x1 "CSE - aggressive"
-; V30 rat0 [V30,T17] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V31 rat1 [V31,T21] ( 3, 4 ) long -> x22 "runtime lookup"
+; V30 rat0 [V30,T16] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
+; V31 rat1 [V31,T19] ( 3, 4 ) long -> x22 "runtime lookup"
; V32 rat2 [V32,T14] ( 3, 5.60) long -> x22 "fgMakeTemp is creating a new local variable"
-; V33 rat3 [V33,T18] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V34 rat4 [V34,T25] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V35 rat5 [V35,T15] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V36 rat6 [V36,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V37 rat7 [V37,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V38 rat8 [V38,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
-; V39 rat9 [V39,T16] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
-; V40 rat10 [V40,T27] ( 3, 0 ) long -> x21 "Spilling to split statement for tree"
-; V41 rat11 [V41,T28] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V33 rat3 [V33,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V34 rat4 [V34,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V35 rat5 [V35,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+; V36 rat6 [V36,T15] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V37 rat7 [V37,T24] ( 3, 0 ) long -> x21 "Spilling to split statement for tree"
+; V38 rat8 [V38,T25] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 120
@@ -127,18 +124,10 @@ G_M52227_IG06: ; bbWeight=1, nogc, extend
ldp x0, x1, [fp, #0x38]
stp x0, x1, [fp, #0x68]
;; size=24 bbWeight=1 PerfScore 12.00
-G_M52227_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x10] // [V00 this]
- ; gcrRegs +[x2]
- ldr x0, [x2]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x30]
- cbnz x0, G_M52227_IG11
+G_M52227_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
b G_M52227_IG11
- ;; size=28 bbWeight=1 PerfScore 16.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M52227_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
mov x1, x22
add x0, fp, #72 // [V03 loc0]
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableSortedSet`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this
@@ -200,16 +189,16 @@ G_M52227_IG10: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {
; gcrRegs -[x0-x1 x23]
; gcr arg pop 0
mov w20, w24
+ ;; size=48 bbWeight=2 PerfScore 19.00
+G_M52227_IG11: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x2, [fp, #0x10] // [V00 this]
; gcrRegs +[x2]
- ;; size=52 bbWeight=2 PerfScore 23.00
-G_M52227_IG11: ; bbWeight=8, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x2]
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x30]
cbz x1, G_M52227_IG13
- ;; size=20 bbWeight=8 PerfScore 104.00
+ ;; size=24 bbWeight=8 PerfScore 120.00
G_M52227_IG12: ; bbWeight=6.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
b G_M52227_IG14
@@ -357,7 +346,7 @@ G_M52227_IG29: ; bbWeight=0, funclet epilog, nogc, extend
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 792, prolog size 64, PerfScore 352.20, instruction count 198, allocated bytes for code 792 (MethodHash=24b133fc) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
+; Total bytes of code 768, prolog size 64, PerfScore 349.20, instruction count 192, allocated bytes for code 768 (MethodHash=24b133fc) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
; ============================================================
Unwind Info:
@@ -368,7 +357,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 170 (0x000aa) Actual length = 680 (0x0002a8)
+ Function Length : 164 (0x000a4) Actual length = 656 (0x000290)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-2.87%) : 68102.dasm - System.Collections.Immutable.ImmutableList1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer
1[System.__Canon]):int:this (FullOpts)
@@ -8,13 +8,13 @@
; 0 inlinees with PGO data; 2 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 9, 16 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
+; V00 this [V00,T06] ( 8, 15 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
; V01 arg1 [V01,T14] ( 3, 6 ) ref -> x22 class-hnd single-def <System.__Canon>
; V02 arg2 [V02,T07] ( 8, 14 ) int -> x19
; V03 arg3 [V03,T12] ( 6, 6 ) int -> x21 single-def
; V04 arg4 [V04,T11] ( 5, 8 ) ref -> x20 class-hnd <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V05 loc0 [V05 ] ( 5, 15 ) struct (56) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]>
-; V06 loc1 [V06,T29] ( 2, 2 ) int -> [fp+0x1C] do-not-enreg[Z] EH-live
+; V06 loc1 [V06,T27] ( 2, 2 ) int -> [fp+0x1C] do-not-enreg[Z] EH-live
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -28,31 +28,28 @@
;* V17 tmp10 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp13 [V20,T32] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V21 tmp14 [V21,T33] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V22 tmp15 [V22,T27] ( 2, 4 ) long -> x1 "argument with side effect"
+; V20 tmp13 [V20,T29] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V21 tmp14 [V21,T30] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V22 tmp15 [V22,T25] ( 2, 4 ) long -> x1 "argument with side effect"
; V23 tmp16 [V23,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V24 tmp17 [V24,T08] ( 2, 16 ) ref -> x2 "argument with side effect"
-; V25 PSPSym [V25,T31] ( 1, 1 ) long -> [fp+0x60] do-not-enreg[V] "PSPSym"
+; V25 PSPSym [V25,T28] ( 1, 1 ) long -> [fp+0x60] do-not-enreg[V] "PSPSym"
; V26 cse0 [V26,T15] ( 3, 6 ) long -> x24 "CSE - aggressive"
-; V27 cse1 [V27,T28] ( 3, 3 ) int -> x1 "CSE - aggressive"
+; V27 cse1 [V27,T26] ( 3, 3 ) int -> x1 "CSE - aggressive"
; V28 cse2 [V28,T10] ( 10, 12 ) long -> x23 multi-def "CSE - aggressive"
-; V29 rat0 [V29,T21] ( 3, 4.40) long -> x23 "Spilling to split statement for tree"
-; V30 rat1 [V30,T25] ( 3, 4 ) long -> x1 "runtime lookup"
+; V29 rat0 [V29,T20] ( 3, 4.40) long -> x23 "Spilling to split statement for tree"
+; V30 rat1 [V30,T23] ( 3, 4 ) long -> x1 "runtime lookup"
; V31 rat2 [V31,T16] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
-; V32 rat3 [V32,T22] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V33 rat4 [V33,T26] ( 3, 4 ) long -> x24 "runtime lookup"
+; V32 rat3 [V32,T21] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
+; V33 rat4 [V33,T24] ( 3, 4 ) long -> x24 "runtime lookup"
; V34 rat5 [V34,T17] ( 3, 5.60) long -> x24 "fgMakeTemp is creating a new local variable"
-; V35 rat6 [V35,T23] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V36 rat7 [V36,T30] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V37 rat8 [V37,T18] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V38 rat9 [V38,T05] ( 3, 22.40) long -> x25 "fgMakeTemp is creating a new local variable"
-; V39 rat10 [V39,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V40 rat11 [V40,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V41 rat12 [V41,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
-; V42 rat13 [V42,T19] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
-; V43 rat14 [V43,T24] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V44 rat15 [V44,T20] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
+; V35 rat6 [V35,T05] ( 3, 22.40) long -> x25 "fgMakeTemp is creating a new local variable"
+; V36 rat7 [V36,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V37 rat8 [V37,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V38 rat9 [V38,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+; V39 rat10 [V39,T18] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V40 rat11 [V40,T22] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V41 rat12 [V41,T19] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 88
@@ -160,18 +157,10 @@ G_M57893_IG09: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {
; gcrRegs -[x2]
; gcr arg pop 0
;; size=48 bbWeight=1 PerfScore 10.50
-G_M57893_IG10: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x10] // [V00 this]
- ; gcrRegs +[x2]
- ldr x0, [x2]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x18]
- cbnz x0, G_M57893_IG15
+G_M57893_IG10: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
b G_M57893_IG15
- ;; size=28 bbWeight=1 PerfScore 16.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M57893_IG11: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
mov x21, x24
ldr x0, [x23, #0x38]
ldr x0, [x0]
@@ -212,16 +201,16 @@ G_M57893_IG14: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {
; gcr arg pop 0
cbnz w0, G_M57893_IG20
add w19, w19, #1
+ ;; size=60 bbWeight=4 PerfScore 56.00
+G_M57893_IG15: ; bbWeight=8, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x2, [fp, #0x10] // [V00 this]
; gcrRegs +[x2]
- ;; size=64 bbWeight=4 PerfScore 64.00
-G_M57893_IG15: ; bbWeight=8, gcrefRegs=500004 {x2 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x0, [x2]
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x18]
cbz x1, G_M57893_IG17
- ;; size=20 bbWeight=8 PerfScore 104.00
+ ;; size=24 bbWeight=8 PerfScore 120.00
G_M57893_IG16: ; bbWeight=6.40, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
b G_M57893_IG18
@@ -384,7 +373,7 @@ G_M57893_IG38: ; bbWeight=1, funclet epilog, nogc, extend
ret lr
;; size=24 bbWeight=1 PerfScore 15.00
-; Total bytes of code 836, prolog size 72, PerfScore 448.10, instruction count 209, allocated bytes for code 836 (MethodHash=b3341dda) for method System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
+; Total bytes of code 812, prolog size 72, PerfScore 441.10, instruction count 203, allocated bytes for code 812 (MethodHash=b3341dda) for method System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -395,7 +384,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 181 (0x000b5) Actual length = 724 (0x0002d4)
+ Function Length : 175 (0x000af) Actual length = 700 (0x0002bc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 6027.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable
1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)
@@ -16,7 +16,7 @@
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
; V06 loc3 [V06,T14] ( 4, 5 ) int -> x21
; V07 loc4 [V07,T15] ( 4, 5 ) int -> x24
-; V08 loc5 [V08,T38] ( 3, 1.50) int -> x19
+; V08 loc5 [V08,T36] ( 3, 1.50) int -> x19
; V09 loc6 [V09,T07] ( 13, 11.50) ref -> [fp-0x68] do-not-enreg[M] class-hnd EH-live <<unknown class>>
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
; V11 loc8 [V11,T05] ( 5, 14 ) int -> x0
@@ -39,7 +39,7 @@
; V28 tmp16 [V28 ] ( 3, 3 ) struct ( 8) [fp-0x50] do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
; V29 tmp17 [V29,T18] ( 8, 4 ) int -> x22 "Inline return value spill temp"
; V30 tmp18 [V30,T24] ( 3, 3 ) int -> x1 "Inlining Arg"
-; V31 tmp19 [V31,T34] ( 2, 2 ) long -> x21 "Inlining Arg"
+; V31 tmp19 [V31,T32] ( 2, 2 ) long -> x21 "Inlining Arg"
; V32 tmp20 [V32,T23] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <int[]>
;* V33 tmp21 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V34 tmp22 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -51,24 +51,24 @@
; V40 tmp28 [V40,T19] ( 5, 4.00) long -> [fp-0x58] spill-single-def "Inlining Arg"
;* V41 tmp29 [V41 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V42 tmp30 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V43 tmp31 [V43,T35] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V43 tmp31 [V43,T33] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V44 tmp32 [V44,T11] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
; V45 tmp33 [V45,T12] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
; V46 tmp34 [V46,T06] ( 3, 12 ) byref -> x1 "dup spill"
;* V47 tmp35 [V47 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp36 [V48 ] ( 0, 0 ) int -> zero-ref single-def "field V04._length (fldOffset=0x8)" P-INDEP
-; V49 tmp37 [V49,T44] ( 4, 1.50) byref -> x21 single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+; V49 tmp37 [V49,T42] ( 4, 1.50) byref -> x21 single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp38 [V50 ] ( 0, 0 ) int -> zero-ref single-def "field V13._length (fldOffset=0x8)" P-INDEP
;* V51 tmp39 [V51 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V52 tmp40 [V52 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
-; V53 tmp41 [V53,T40] ( 2, 1.50) int -> [fp-0x48] do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
-; V54 tmp42 [V54,T41] ( 2, 1.50) int -> [fp-0x44] do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
+; V53 tmp41 [V53,T38] ( 2, 1.50) int -> [fp-0x48] do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
+; V54 tmp42 [V54,T39] ( 2, 1.50) int -> [fp-0x44] do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
;* V55 tmp43 [V55 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V56 tmp44 [V56 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
-; V57 tmp45 [V57,T42] ( 2, 1.50) int -> [fp-0x50] do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
-; V58 tmp46 [V58,T43] ( 2, 1.50) int -> [fp-0x4C] do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
-; V59 tmp47 [V59,T45] ( 2, 1 ) byref -> x23 "field V33._reference (fldOffset=0x0)" P-INDEP
-; V60 tmp48 [V60,T46] ( 2, 1 ) int -> x22 "field V33._length (fldOffset=0x8)" P-INDEP
+; V57 tmp45 [V57,T40] ( 2, 1.50) int -> [fp-0x50] do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
+; V58 tmp46 [V58,T41] ( 2, 1.50) int -> [fp-0x4C] do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
+; V59 tmp47 [V59,T43] ( 2, 1 ) byref -> x23 "field V33._reference (fldOffset=0x0)" P-INDEP
+; V60 tmp48 [V60,T44] ( 2, 1 ) int -> x22 "field V33._length (fldOffset=0x8)" P-INDEP
;* V61 tmp49 [V61 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V62 tmp50 [V62 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V63 tmp51 [V63 ] ( 0, 0 ) byref -> zero-ref single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -77,26 +77,23 @@
;* V66 tmp54 [V66 ] ( 0, 0 ) int -> zero-ref single-def "field V39._length (fldOffset=0x8)" P-INDEP
; V67 tmp55 [V67,T16] ( 3, 4.50) byref -> x23 single-def "V05.[000..008)"
; V68 tmp56 [V68,T17] ( 3, 4.50) int -> x22 single-def "V05.[008..012)"
-; V69 tmp57 [V69,T36] ( 3, 1.50) byref -> x23 "V16.[000..008)"
-; V70 tmp58 [V70,T39] ( 3, 1.50) int -> x22 "V16.[008..012)"
+; V69 tmp57 [V69,T34] ( 3, 1.50) byref -> x23 "V16.[000..008)"
+; V70 tmp58 [V70,T37] ( 3, 1.50) int -> x22 "V16.[008..012)"
; V71 tmp59 [V71,T03] ( 2, 16 ) ref -> x1 "argument with side effect"
; V72 GsCookie [V72 ] ( 1, 1 ) long -> [fp-0x70] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V73 PSPSym [V73,T48] ( 1, 1 ) long -> [fp-0x38] do-not-enreg[V] "PSPSym"
+; V73 PSPSym [V73,T45] ( 1, 1 ) long -> [fp-0x38] do-not-enreg[V] "PSPSym"
; V74 cse0 [V74,T08] ( 5, 10 ) int -> x11 "CSE - aggressive"
; V75 cse1 [V75,T09] ( 11, 7 ) long -> registers multi-def "CSE - aggressive"
-; V76 cse2 [V76,T37] ( 3, 1.50) ref -> x1 "CSE - moderate"
-; V77 rat0 [V77,T30] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V76 cse2 [V76,T35] ( 3, 1.50) ref -> x1 "CSE - moderate"
+; V77 rat0 [V77,T29] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V78 rat1 [V78,T26] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-; V79 rat2 [V79,T31] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V79 rat2 [V79,T30] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V80 rat3 [V80,T27] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-; V81 rat4 [V81,T32] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V81 rat4 [V81,T31] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V82 rat5 [V82,T28] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V83 rat6 [V83,T33] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V84 rat7 [V84,T47] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V85 rat8 [V85,T29] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V86 rat9 [V86,T02] ( 3, 17.60) long -> x1 "Spilling to split statement for tree"
-; V87 rat10 [V87,T01] ( 3, 22.40) long -> x11 "fgMakeTemp is creating a new local variable"
-; V88 rat11 [V88,T25] ( 3, 3 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V83 rat6 [V83,T02] ( 3, 17.60) long -> x1 "Spilling to split statement for tree"
+; V84 rat7 [V84,T01] ( 3, 22.40) long -> x11 "fgMakeTemp is creating a new local variable"
+; V85 rat8 [V85,T25] ( 3, 3 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 64
+0 (0.00%) : 3328.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)
@@ -23,11 +23,11 @@
; V12 loc9 [V12,T14] ( 4, 14 ) byref -> x27
; V13 loc10 [V13,T17] ( 6, 13.50) int -> x26
; V14 loc11 [V14,T15] ( 4, 14 ) byref -> x27
-; V15 loc12 [V15,T66] ( 3, 1.50) int -> x22 single-def
+; V15 loc12 [V15,T62] ( 3, 1.50) int -> x22 single-def
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp2 [V18,T31] ( 4, 3 ) long -> x11 "VirtualCall with runtime lookup"
-; V19 tmp3 [V19,T67] ( 3, 1.50) int -> x24
+; V19 tmp3 [V19,T63] ( 3, 1.50) int -> x24
;* V20 tmp4 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -35,8 +35,8 @@
;* V24 tmp8 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp10 [V26,T28] ( 4, 4 ) byref -> x0 single-def "dup spill"
-; V27 tmp11 [V27,T61] ( 3, 2 ) long -> x1 "spilling helperCall"
-; V28 tmp12 [V28,T68] ( 3, 1.50) int -> x24
+; V27 tmp11 [V27,T57] ( 3, 2 ) long -> x1 "spilling helperCall"
+; V28 tmp12 [V28,T64] ( 3, 1.50) int -> x24
;* V29 tmp13 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp14 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -48,9 +48,9 @@
; V37 tmp21 [V37,T32] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V38 tmp22 [V38,T33] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp24 [V40,T81] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp24 [V40,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp26 [V42,T82] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp26 [V42,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V43 tmp27 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -58,9 +58,9 @@
; V47 tmp31 [V47,T34] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V48 tmp32 [V48,T35] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V50 tmp34 [V50,T83] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V50 tmp34 [V50,T77] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V52 tmp36 [V52,T84] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V52 tmp36 [V52,T78] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -68,63 +68,57 @@
; V57 tmp41 [V57,T36] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V58 tmp42 [V58,T37] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V60 tmp44 [V60,T85] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V60 tmp44 [V60,T79] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V62 tmp46 [V62,T86] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V62 tmp46 [V62,T80] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V63 tmp47 [V63 ] ( 6, 10.50) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64 ] ( 9, 19 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V65 tmp49 [V65,T72] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
-; V66 tmp50 [V66,T75] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V67 tmp51 [V67,T73] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
-; V68 tmp52 [V68,T76] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T74] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
-; V70 tmp54 [V70,T77] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
+; V65 tmp49 [V65,T68] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
+; V66 tmp50 [V66,T71] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V67 tmp51 [V67,T69] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
+; V68 tmp52 [V68,T72] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T70] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
+; V70 tmp54 [V70,T73] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
; V71 tmp55 [V71,T41] ( 3, 3 ) int -> x2 "index expr"
; V72 tmp56 [V72,T42] ( 3, 3 ) int -> x1 "index expr"
; V73 tmp57 [V73,T43] ( 3, 3 ) int -> x2 "index expr"
; V74 tmp58 [V74,T44] ( 3, 3 ) int -> x1 "index expr"
; V75 tmp59 [V75,T12] ( 2, 16 ) long -> x1 "argument with side effect"
; V76 tmp60 [V76,T13] ( 2, 16 ) long -> x1 "argument with side effect"
-; V77 tmp61 [V77,T64] ( 2, 2 ) int -> x1 "argument with side effect"
+; V77 tmp61 [V77,T60] ( 2, 2 ) int -> x1 "argument with side effect"
; V78 tmp62 [V78,T45] ( 3, 3 ) int -> x2 "index expr"
; V79 tmp63 [V79,T46] ( 3, 3 ) int -> x1 "index expr"
-; V80 tmp64 [V80,T65] ( 2, 2 ) long -> x1 "argument with side effect"
-; V81 cse0 [V81,T69] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V82 cse1 [V82,T70] ( 3, 1.50) int -> x26 "CSE - moderate"
-; V83 cse2 [V83,T71] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V84 rat0 [V84,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V85 rat1 [V85,T62] ( 3, 2 ) long -> x1 "runtime lookup"
+; V80 tmp64 [V80,T61] ( 2, 2 ) long -> x1 "argument with side effect"
+; V81 cse0 [V81,T65] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V82 cse1 [V82,T66] ( 3, 1.50) int -> x26 "CSE - moderate"
+; V83 cse2 [V83,T67] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V84 rat0 [V84,T52] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V85 rat1 [V85,T58] ( 3, 2 ) long -> x1 "runtime lookup"
; V86 rat2 [V86,T47] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V87 rat3 [V87,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V88 rat4 [V88,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V89 rat5 [V89,T48] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V90 rat6 [V90,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V91 rat7 [V91,T10] ( 3, 16 ) long -> x1 "runtime lookup"
-; V92 rat8 [V92,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V93 rat9 [V93,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V94 rat10 [V94,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V95 rat11 [V95,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V96 rat12 [V96,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V97 rat13 [V97,T49] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V98 rat14 [V98,T57] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V99 rat15 [V99,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V100 rat16 [V100,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V101 rat17 [V101,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V102 rat18 [V102,T11] ( 3, 16 ) long -> x1 "runtime lookup"
-; V103 rat19 [V103,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-; V104 rat20 [V104,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
-; V105 rat21 [V105,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V106 rat22 [V106,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V107 rat23 [V107,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V108 rat24 [V108,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V109 rat25 [V109,T58] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V87 rat3 [V87,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V88 rat4 [V88,T10] ( 3, 16 ) long -> x1 "runtime lookup"
+; V89 rat5 [V89,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V90 rat6 [V90,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V91 rat7 [V91,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V92 rat8 [V92,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V93 rat9 [V93,T53] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V94 rat10 [V94,T48] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
+; V95 rat11 [V95,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V96 rat12 [V96,T11] ( 3, 16 ) long -> x1 "runtime lookup"
+; V97 rat13 [V97,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+; V98 rat14 [V98,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
+; V99 rat15 [V99,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+;* V100 rat16 [V100,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V101 rat17 [V101,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V102 rat18 [V102,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V103 rat19 [V103,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V104 rat20 [V104,T49] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V105 rat21 [V105,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V106 rat22 [V106,T74] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V107 rat23 [V107,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V108 rat24 [V108,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V109 rat25 [V109,T59] ( 3, 2 ) long -> x1 "runtime lookup"
; V110 rat26 [V110,T51] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V111 rat27 [V111,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V112 rat28 [V112,T80] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V113 rat29 [V113,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V114 rat30 [V114,T60] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V115 rat31 [V115,T63] ( 3, 2 ) long -> x1 "runtime lookup"
-; V116 rat32 [V116,T53] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 24
+0 (0.00%) : 64480.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Canon,System.Canon]:CopyToObjects(System.Object[],int):this (FullOpts)
@@ -11,7 +11,7 @@
; V00 this [V00,T10] ( 4, 4 ) ref -> x20 this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T11] ( 3, 18 ) ref -> x21 class-hnd single-def <System.Object[]>
; V02 arg2 [V02,T06] ( 5, 50 ) int -> x19
-; V03 loc0 [V03,T17] ( 3, 6 ) ref -> x22 class-hnd exact single-def <<unknown class>>
+; V03 loc0 [V03,T15] ( 3, 6 ) ref -> x22 class-hnd exact single-def <<unknown class>>
; V04 loc1 [V04,T12] ( 5, 17 ) int -> x23
;* V05 loc2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Concurrent.ConcurrentDictionary`2+VolatileNode[System.__Canon,System.__Canon]>
; V06 loc3 [V06,T02] ( 7, 88 ) ref -> x26 class-hnd <<unknown class>>
@@ -22,20 +22,17 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V12 tmp5 [V12,T04] ( 2, 64 ) ref -> x27 class-hnd "Inlining Arg" <System.__Canon>
; V13 tmp6 [V13,T05] ( 2, 64 ) ref -> x28 class-hnd "Inlining Arg" <System.__Canon>
-; V14 tmp7 [V14,T16] ( 2, 8 ) ref -> x26 "field V05._node (fldOffset=0x0)" P-INDEP
+; V14 tmp7 [V14,T14] ( 2, 8 ) ref -> x26 "field V05._node (fldOffset=0x0)" P-INDEP
; V15 tmp8 [V15,T07] ( 2, 32 ) ref -> x27 "field V08.key (fldOffset=0x0)" P-INDEP
; V16 tmp9 [V16,T08] ( 2, 32 ) ref -> x28 "field V08.value (fldOffset=0x8)" P-INDEP
; V17 cse0 [V17,T13] ( 2, 17 ) long -> x25 hoist "CSE - aggressive"
-; V18 cse1 [V18,T18] ( 3, 6 ) int -> x24 "CSE - aggressive"
-; V19 rat0 [V19,T20] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V20 rat1 [V20,T21] ( 3, 4 ) long -> x25 "runtime lookup"
-; V21 rat2 [V21,T19] ( 3, 5.60) long -> x25 "fgMakeTemp is creating a new local variable"
-;* V22 rat3 [V22,T15] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V23 rat4 [V23,T22] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V24 rat5 [V24,T14] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V25 rat6 [V25,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V26 rat7 [V26,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V27 rat8 [V27,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V18 cse1 [V18,T16] ( 3, 6 ) int -> x24 "CSE - aggressive"
+; V19 rat0 [V19,T18] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V20 rat1 [V20,T19] ( 3, 4 ) long -> x25 "runtime lookup"
+; V21 rat2 [V21,T17] ( 3, 5.60) long -> x25 "fgMakeTemp is creating a new local variable"
+;* V22 rat3 [V22,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V23 rat4 [V23,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V24 rat5 [V24,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
realworld.run.linux.arm64.checked.mch
-20 (-4.46%) : 24994.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary
2[System.Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.Canon]):this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 17 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
+; V00 this [V00,T04] ( 7, 16 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V01 arg1 [V01,T15] ( 4, 4 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
-; V02 arg2 [V02,T18] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V02 arg2 [V02,T17] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V03 loc0 [V03 ] ( 3, 11 ) struct (24) [fp+0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SmallDictionary`2+Enumerator[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V04 loc1 [V04 ] ( 5, 10 ) struct (32) [fp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,34 +27,31 @@
; V16 tmp11 [V16 ] ( 3, 11 ) ref -> [fp+0x68] do-not-enreg[X] addr-exposed "field V03._stack (fldOffset=0x0)" P-DEP
; V17 tmp12 [V17 ] ( 3, 11 ) ref -> [fp+0x70] do-not-enreg[X] addr-exposed "field V03._next (fldOffset=0x8)" P-DEP
; V18 tmp13 [V18 ] ( 3, 11 ) ref -> [fp+0x78] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x10)" P-DEP
-; V19 tmp14 [V19,T23] ( 2, 4 ) ref -> x23 "field V11.DefaultType (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T24] ( 2, 4 ) ref -> x24 "field V11._extensions (fldOffset=0x8)" P-INDEP
-; V21 tmp16 [V21,T25] ( 2, 4 ) ubyte -> x25 "field V11.NullableAnnotation (fldOffset=0x10)" P-INDEP
+; V19 tmp14 [V19,T21] ( 2, 4 ) ref -> x23 "field V11.DefaultType (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T22] ( 2, 4 ) ref -> x24 "field V11._extensions (fldOffset=0x8)" P-INDEP
+; V21 tmp16 [V21,T23] ( 2, 4 ) ubyte -> x25 "field V11.NullableAnnotation (fldOffset=0x10)" P-INDEP
; V22 tmp17 [V22 ] ( 2, 4 ) ref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V12._stack (fldOffset=0x0)" P-DEP
; V23 tmp18 [V23 ] ( 2, 4 ) ref -> [fp+0x38] do-not-enreg[X] addr-exposed "field V12._next (fldOffset=0x8)" P-DEP
; V24 tmp19 [V24 ] ( 2, 4 ) ref -> [fp+0x40] do-not-enreg[X] addr-exposed "field V12._current (fldOffset=0x10)" P-DEP
-; V25 tmp20 [V25,T26] ( 2, 4 ) long -> x1 "argument with side effect"
+; V25 tmp20 [V25,T24] ( 2, 4 ) long -> x1 "argument with side effect"
; V26 tmp21 [V26,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V27 tmp22 [V27,T12] ( 2, 8 ) long -> x1 "argument with side effect"
; V28 tmp23 [V28 ] ( 4, 16 ) struct (24) [fp+0x18] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
; V29 tmp24 [V29,T13] ( 2, 8 ) int -> x1 "argument with side effect"
; V30 tmp25 [V30,T10] ( 2, 8 ) ref -> x0 "argument with side effect"
; V31 tmp26 [V31,T11] ( 2, 8 ) ref -> x2 "argument with side effect"
-; V32 cse0 [V32,T21] ( 3, 4 ) long -> x22 "CSE - aggressive"
-;* V33 cse1 [V33,T28] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V32 cse0 [V32,T19] ( 3, 4 ) long -> x22 "CSE - aggressive"
+;* V33 cse1 [V33,T25] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; V34 cse2 [V34,T14] ( 4, 4.40) long -> x21 "CSE - aggressive"
-; V35 rat0 [V35,T19] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V36 rat1 [V36,T22] ( 3, 4 ) long -> x22 "runtime lookup"
+; V35 rat0 [V35,T18] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V36 rat1 [V36,T20] ( 3, 4 ) long -> x22 "runtime lookup"
; V37 rat2 [V37,T16] ( 3, 5.60) long -> x22 "fgMakeTemp is creating a new local variable"
-; V38 rat3 [V38,T20] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V39 rat4 [V39,T27] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V40 rat5 [V40,T17] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V41 rat6 [V41,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V42 rat7 [V42,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V43 rat8 [V43,T08] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-; V44 rat9 [V44,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V45 rat10 [V45,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V46 rat11 [V46,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V38 rat3 [V38,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V39 rat4 [V39,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V40 rat5 [V40,T08] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+; V41 rat6 [V41,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V42 rat7 [V42,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V43 rat8 [V43,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 120
@@ -122,14 +119,9 @@ G_M40847_IG06: ; bbWeight=1, nogc, extend
ldr x0, [fp, #0x40]
str x0, [fp, #0x78]
;; size=16 bbWeight=1 PerfScore 7.00
-G_M40847_IG07: ; bbWeight=1, isz, extend
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x28]
- cbnz x0, G_M40847_IG12
+G_M40847_IG07: ; bbWeight=1, extend
b G_M40847_IG12
- ;; size=24 bbWeight=1 PerfScore 14.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M40847_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x22
add x8, fp, #72 // [V04 loc1]
@@ -220,7 +212,7 @@ G_M40847_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ret lr
;; size=24 bbWeight=1 PerfScore 7.00
-; Total bytes of code 448, prolog size 52, PerfScore 325.60, instruction count 112, allocated bytes for code 448 (MethodHash=69926070) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 428, prolog size 52, PerfScore 312.60, instruction count 107, allocated bytes for code 428 (MethodHash=69926070) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -231,7 +223,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 112 (0x00070) Actual length = 448 (0x0001c0)
+ Function Length : 107 (0x0006b) Actual length = 428 (0x0001ac)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-2.80%) : 25342.dasm - System.Collections.Immutable.ImmutableList1+Node[System.Collections.Generic.KeyValuePair
2[System.Canon,System.Canon]]:IndexOf(System.Collections.Generic.KeyValuePair2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer
1[System.Collections.Generic.KeyValuePair`2[System.Canon,System.Canon]]):int:this (FullOpts)
@@ -8,13 +8,13 @@
; 0 inlinees with PGO data; 2 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 9, 16 ) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
+; V00 this [V00,T06] ( 8, 15 ) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]>
; V02 arg2 [V02,T07] ( 8, 14 ) int -> x19
; V03 arg3 [V03,T11] ( 6, 6 ) int -> x21 single-def
; V04 arg4 [V04,T10] ( 5, 8 ) ref -> x20 class-hnd <System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
; V05 loc0 [V05 ] ( 5, 15 ) struct (56) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
-; V06 loc1 [V06,T31] ( 2, 2 ) int -> [fp+0x24] do-not-enreg[Z] EH-live
+; V06 loc1 [V06,T29] ( 2, 2 ) int -> [fp+0x24] do-not-enreg[Z] EH-live
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -33,30 +33,27 @@
; V22 tmp15 [V22,T16] ( 2, 5 ) ref -> x23 single-def "field V01.value (fldOffset=0x8)" P-INDEP
; V23 tmp16 [V23,T13] ( 2, 8 ) ref -> x3 "field V13.key (fldOffset=0x0)" P-INDEP
; V24 tmp17 [V24,T14] ( 2, 8 ) ref -> x4 "field V13.value (fldOffset=0x8)" P-INDEP
-; V25 tmp18 [V25,T34] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V26 tmp19 [V26,T35] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V27 tmp20 [V27,T29] ( 2, 4 ) long -> x1 "argument with side effect"
+; V25 tmp18 [V25,T31] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V26 tmp19 [V26,T32] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V27 tmp20 [V27,T27] ( 2, 4 ) long -> x1 "argument with side effect"
; V28 tmp21 [V28,T03] ( 2, 32 ) long -> x1 "argument with side effect"
-; V29 PSPSym [V29,T33] ( 1, 1 ) long -> [fp+0x68] do-not-enreg[V] "PSPSym"
+; V29 PSPSym [V29,T30] ( 1, 1 ) long -> [fp+0x68] do-not-enreg[V] "PSPSym"
; V30 cse0 [V30,T17] ( 3, 6 ) long -> x25 "CSE - aggressive"
-; V31 cse1 [V31,T30] ( 3, 3 ) int -> x1 "CSE - aggressive"
+; V31 cse1 [V31,T28] ( 3, 3 ) int -> x1 "CSE - aggressive"
; V32 cse2 [V32,T09] ( 10, 12 ) long -> x24 multi-def "CSE - aggressive"
-; V33 rat0 [V33,T23] ( 3, 4.40) long -> x24 "Spilling to split statement for tree"
-; V34 rat1 [V34,T27] ( 3, 4 ) long -> x1 "runtime lookup"
+; V33 rat0 [V33,T22] ( 3, 4.40) long -> x24 "Spilling to split statement for tree"
+; V34 rat1 [V34,T25] ( 3, 4 ) long -> x1 "runtime lookup"
; V35 rat2 [V35,T18] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
-; V36 rat3 [V36,T24] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V37 rat4 [V37,T28] ( 3, 4 ) long -> x25 "runtime lookup"
+; V36 rat3 [V36,T23] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
+; V37 rat4 [V37,T26] ( 3, 4 ) long -> x25 "runtime lookup"
; V38 rat5 [V38,T19] ( 3, 5.60) long -> x25 "fgMakeTemp is creating a new local variable"
-; V39 rat6 [V39,T25] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V40 rat7 [V40,T32] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V41 rat8 [V41,T20] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V42 rat9 [V42,T05] ( 3, 22.40) long -> x26 "fgMakeTemp is creating a new local variable"
-; V43 rat10 [V43,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V44 rat11 [V44,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V45 rat12 [V45,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
-; V46 rat13 [V46,T21] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
-; V47 rat14 [V47,T26] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V48 rat15 [V48,T22] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
+; V39 rat6 [V39,T05] ( 3, 22.40) long -> x26 "fgMakeTemp is creating a new local variable"
+; V40 rat7 [V40,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V41 rat8 [V41,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V42 rat9 [V42,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+; V43 rat10 [V43,T20] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V44 rat11 [V44,T24] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V45 rat12 [V45,T21] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 96
@@ -166,18 +163,10 @@ G_M34258_IG09: ; bbWeight=1, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=00
; gcrRegs -[x2]
; gcr arg pop 0
;; size=48 bbWeight=1 PerfScore 10.50
-G_M34258_IG10: ; bbWeight=1, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x2]
- ldr x0, [x2]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x10]
- cbnz x0, G_M34258_IG15
+G_M34258_IG10: ; bbWeight=1, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref
b G_M34258_IG15
- ;; size=28 bbWeight=1 PerfScore 16.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M34258_IG11: ; bbWeight=4, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
mov x21, x25
ldr x0, [x24, #0x38]
ldr x0, [x0]
@@ -221,16 +210,16 @@ G_M34258_IG14: ; bbWeight=4, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=00
; gcr arg pop 0
cbnz w0, G_M34258_IG20
add w19, w19, #1
+ ;; size=68 bbWeight=4 PerfScore 60.00
+G_M34258_IG15: ; bbWeight=8, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
ldr x2, [fp, #0x18] // [V00 this]
; gcrRegs +[x2]
- ;; size=72 bbWeight=4 PerfScore 68.00
-G_M34258_IG15: ; bbWeight=8, gcrefRegs=D00004 {x2 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
ldr x0, [x2]
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x10]
cbz x1, G_M34258_IG17
- ;; size=20 bbWeight=8 PerfScore 104.00
+ ;; size=24 bbWeight=8 PerfScore 120.00
G_M34258_IG16: ; bbWeight=6.40, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
b G_M34258_IG18
@@ -395,7 +384,7 @@ G_M34258_IG38: ; bbWeight=1, funclet epilog, nogc, extend
ret lr
;; size=24 bbWeight=1 PerfScore 16.00
-; Total bytes of code 856, prolog size 76, PerfScore 451.60, instruction count 214, allocated bytes for code 856 (MethodHash=62fd7a2d) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
+; Total bytes of code 832, prolog size 76, PerfScore 444.60, instruction count 208, allocated bytes for code 832 (MethodHash=62fd7a2d) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -406,7 +395,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 186 (0x000ba) Actual length = 744 (0x0002e8)
+ Function Length : 180 (0x000b4) Actual length = 720 (0x0002d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-0.14%) : 14476.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
@@ -288,7 +288,6 @@
; V277 cse13 [V277,T204] ( 3, 0.12) ref -> x1 "CSE - conservative"
; V278 cse14 [V278,T205] ( 3, 0.12) ref -> x1 "CSE - conservative"
; V279 cse15 [V279,T19] ( 8, 16 ) byref -> [fp+0x18] multi-def "CSE - moderate"
-; TEMP_01 byref -> [fp+0x10]
;
; Lcl frame size = 352
@@ -300,12 +299,11 @@ G_M30044_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x25, x26, [sp, #0xD1FFAB1E]
stp x27, x28, [sp, #0xD1FFAB1E]
mov fp, sp
- str xzr, [fp, #0x10] // [TEMP_01]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
; gcrRegs +[x20]
- ;; size=40 bbWeight=1 PerfScore 8.50
+ ;; size=36 bbWeight=1 PerfScore 7.50
G_M30044_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x21, [x19, #0x40]
; gcrRegs +[x21]
@@ -1784,11 +1782,6 @@ G_M30044_IG50: ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
ldr x1, [x1, x4]
; gcrRegs +[x1]
; byrRegs -[x1]
- ldr x5, [fp, #0xE8] // [V22 loc20]
- ; gcrRegs +[x5]
- add x14, x5, #8
- ; byrRegs +[x14]
- str x14, [fp, #0x10] // [TEMP_01]
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
@@ -1796,13 +1789,12 @@ G_M30044_IG50: ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
- movz x6, #0xD1FFAB1E // code for <unknown method>
- movk x6, #0xD1FFAB1E LSL #16
- movk x6, #0xD1FFAB1E LSL #32
- ldr x6, [x6]
- blr x6
- ; gcrRegs -[x1 x5] +[x0]
- ; byrRegs -[x14]
+ movz x5, #0xD1FFAB1E // code for <unknown method>
+ movk x5, #0xD1FFAB1E LSL #16
+ movk x5, #0xD1FFAB1E LSL #32
+ ldr x5, [x5]
+ blr x5
+ ; gcrRegs -[x1] +[x0]
mov x1, x0
; gcrRegs +[x1]
ldr x0, [fp, #0x40] // [V131 tmp97]
@@ -1813,15 +1805,18 @@ G_M30044_IG50: ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
; GC ptr vars -{V131}
blr x2
; gcrRegs -[x1]
- ldr x14, [fp, #0x10] // [TEMP_01]
+ ldr x2, [fp, #0xE8] // [V22 loc20]
+ ; gcrRegs +[x2]
+ add x14, x2, #8
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
+ ; GC ptr vars -{V22}
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ldr x2, [fp, #0xE8] // [V22 loc20]
- ; gcrRegs +[x2]
+ str x2, [fp, #0xE8] // [V22 loc20]
+ ; GC ptr vars +{V22}
ldr x1, [x2, #0x08]
; gcrRegs +[x1]
mov x15, x1
@@ -1847,7 +1842,7 @@ G_M30044_IG50: ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
ldr w14, [x6, #0x08]
cmp w14, w15
bls G_M30044_IG52
- ;; size=264 bbWeight=0.04 PerfScore 3.16
+ ;; size=256 bbWeight=0.04 PerfScore 3.00
G_M30044_IG51: ; bbWeight=0.02, gcrefRegs=1FF80042 {x1 x6 x19 x20 x21 x22 x23 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, byref
add w14, w15, #1
str w14, [x27, #0x10]
@@ -3725,7 +3720,7 @@ G_M30044_IG114: ; bbWeight=0, gcrefRegs=1BF80000 {x19 x20 x21 x22 x23 x24
b G_M30044_IG100
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 8856, prolog size 32, PerfScore 2225.47, instruction count 2214, allocated bytes for code 8856 (MethodHash=2a788aa3) for method Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
+; Total bytes of code 8844, prolog size 28, PerfScore 2224.31, instruction count 2211, allocated bytes for code 8844 (MethodHash=2a788aa3) for method Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
; ============================================================
Unwind Info:
@@ -3736,7 +3731,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 2214 (0x008a6) Actual length = 8856 (0x002298)
+ Function Length : 2211 (0x008a3) Actual length = 8844 (0x00228c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-0.10%) : 32226.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
@@ -1681,38 +1681,36 @@ G_M4474_IG49: ; bbWeight=0.04, gcVars=00000000000000000000000000000000000
; byrRegs -[x4]
str x0, [fp, #0x90] // [V18 loc13]
; GC ptr vars +{V18}
- ldr x2, [fp, #0x98] // [V17 loc12]
+ ldr x2, [fp, #0xA8] // [V10 loc5]
; gcrRegs +[x2]
- add x14, x2, #8
- ; byrRegs +[x14]
- str x14, [fp, #0x18] // [TEMP_01]
- ldr x3, [fp, #0xA8] // [V10 loc5]
- ; gcrRegs +[x3]
- ldr w0, [x3, #0x08]
+ ldr w0, [x2, #0x08]
; gcrRegs -[x0]
- ldr w4, [fp, #0xEC] // [V16 loc11]
- cmp w4, w0
+ ldr w3, [fp, #0xEC] // [V16 loc11]
+ cmp w3, w0
bhs G_M4474_IG100
- ldr x5, [fp, #0x20] // [V229 cse10]
- ; byrRegs +[x5]
- ldr x6, [fp, #0xB0] // [V226 cse7]
- ldr x0, [x5, x6]
+ ldr x4, [fp, #0x20] // [V229 cse10]
+ ; byrRegs +[x4]
+ ldr x5, [fp, #0xB0] // [V226 cse7]
+ ldr x0, [x4, x5]
; gcrRegs +[x0]
- ldr x7, [x0]
- ldr x7, [x7, #0x48]
- ldr x7, [x7, #0x30]
- blr x7
- ; gcrRegs -[x2-x3]
- ; byrRegs -[x5 x14]
- ldr x14, [fp, #0x18] // [TEMP_01]
+ ldr x6, [x0]
+ ldr x6, [x6, #0x48]
+ ldr x6, [x6, #0x30]
+ blr x6
+ ; gcrRegs -[x2]
+ ; byrRegs -[x4]
+ ldr x1, [fp, #0x98] // [V17 loc12]
+ ; gcrRegs +[x1]
+ add x14, x1, #8
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
+ ; GC ptr vars -{V17}
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ldr x1, [fp, #0x98] // [V17 loc12]
- ; gcrRegs +[x1]
+ str x1, [fp, #0x98] // [V17 loc12]
+ ; GC ptr vars +{V17}
ldr x0, [x1, #0x08]
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for System.String:IsNullOrWhiteSpace(System.String):ubyte
@@ -1722,7 +1720,7 @@ G_M4474_IG49: ; bbWeight=0.04, gcVars=00000000000000000000000000000000000
blr x2
; gcrRegs -[x0-x1]
cbz w0, G_M4474_IG56
- ;; size=200 bbWeight=0.04 PerfScore 3.06
+ ;; size=192 bbWeight=0.04 PerfScore 2.90
G_M4474_IG50: ; bbWeight=0.02, gcrefRegs=EA80000 {x19 x21 x23 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E // code for <unknown method>
movk x0, #0xD1FFAB1E LSL #16
@@ -3235,7 +3233,7 @@ G_M4474_IG100: ; bbWeight=0, gcVars=0000000000000000000000000000000000000
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 7784, prolog size 32, PerfScore 2093.60, instruction count 1946, allocated bytes for code 7784 (MethodHash=ac86ee85) for method System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
+; Total bytes of code 7776, prolog size 32, PerfScore 2093.44, instruction count 1944, allocated bytes for code 7776 (MethodHash=ac86ee85) for method System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
; ============================================================
Unwind Info:
@@ -3246,7 +3244,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 1946 (0x0079a) Actual length = 7784 (0x001e68)
+ Function Length : 1944 (0x00798) Actual length = 7776 (0x001e60)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 18229.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)
@@ -23,11 +23,11 @@
; V12 loc9 [V12,T14] ( 4, 14 ) byref -> x27
; V13 loc10 [V13,T17] ( 6, 13.50) int -> x26
; V14 loc11 [V14,T15] ( 4, 14 ) byref -> x27
-; V15 loc12 [V15,T66] ( 3, 1.50) int -> x22 single-def
+; V15 loc12 [V15,T62] ( 3, 1.50) int -> x22 single-def
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp2 [V18,T31] ( 4, 3 ) long -> x11 "VirtualCall with runtime lookup"
-; V19 tmp3 [V19,T67] ( 3, 1.50) int -> x24
+; V19 tmp3 [V19,T63] ( 3, 1.50) int -> x24
;* V20 tmp4 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -35,8 +35,8 @@
;* V24 tmp8 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp10 [V26,T28] ( 4, 4 ) byref -> x0 single-def "dup spill"
-; V27 tmp11 [V27,T61] ( 3, 2 ) long -> x1 "spilling helperCall"
-; V28 tmp12 [V28,T68] ( 3, 1.50) int -> x24
+; V27 tmp11 [V27,T57] ( 3, 2 ) long -> x1 "spilling helperCall"
+; V28 tmp12 [V28,T64] ( 3, 1.50) int -> x24
;* V29 tmp13 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp14 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -48,9 +48,9 @@
; V37 tmp21 [V37,T32] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V38 tmp22 [V38,T33] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp24 [V40,T81] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp24 [V40,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp26 [V42,T82] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp26 [V42,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V43 tmp27 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -58,9 +58,9 @@
; V47 tmp31 [V47,T34] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V48 tmp32 [V48,T35] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V50 tmp34 [V50,T83] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V50 tmp34 [V50,T77] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V52 tmp36 [V52,T84] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V52 tmp36 [V52,T78] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -68,63 +68,57 @@
; V57 tmp41 [V57,T36] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V58 tmp42 [V58,T37] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V60 tmp44 [V60,T85] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V60 tmp44 [V60,T79] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V62 tmp46 [V62,T86] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V62 tmp46 [V62,T80] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V63 tmp47 [V63 ] ( 6, 10.50) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64 ] ( 9, 19 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V65 tmp49 [V65,T72] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
-; V66 tmp50 [V66,T75] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V67 tmp51 [V67,T73] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
-; V68 tmp52 [V68,T76] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T74] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
-; V70 tmp54 [V70,T77] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
+; V65 tmp49 [V65,T68] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
+; V66 tmp50 [V66,T71] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V67 tmp51 [V67,T69] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
+; V68 tmp52 [V68,T72] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T70] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
+; V70 tmp54 [V70,T73] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
; V71 tmp55 [V71,T41] ( 3, 3 ) int -> x2 "index expr"
; V72 tmp56 [V72,T42] ( 3, 3 ) int -> x1 "index expr"
; V73 tmp57 [V73,T43] ( 3, 3 ) int -> x2 "index expr"
; V74 tmp58 [V74,T44] ( 3, 3 ) int -> x1 "index expr"
; V75 tmp59 [V75,T12] ( 2, 16 ) long -> x1 "argument with side effect"
; V76 tmp60 [V76,T13] ( 2, 16 ) long -> x1 "argument with side effect"
-; V77 tmp61 [V77,T64] ( 2, 2 ) int -> x1 "argument with side effect"
+; V77 tmp61 [V77,T60] ( 2, 2 ) int -> x1 "argument with side effect"
; V78 tmp62 [V78,T45] ( 3, 3 ) int -> x2 "index expr"
; V79 tmp63 [V79,T46] ( 3, 3 ) int -> x1 "index expr"
-; V80 tmp64 [V80,T65] ( 2, 2 ) long -> x1 "argument with side effect"
-; V81 cse0 [V81,T69] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V82 cse1 [V82,T70] ( 3, 1.50) int -> x26 "CSE - moderate"
-; V83 cse2 [V83,T71] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V84 rat0 [V84,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V85 rat1 [V85,T62] ( 3, 2 ) long -> x1 "runtime lookup"
+; V80 tmp64 [V80,T61] ( 2, 2 ) long -> x1 "argument with side effect"
+; V81 cse0 [V81,T65] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V82 cse1 [V82,T66] ( 3, 1.50) int -> x26 "CSE - moderate"
+; V83 cse2 [V83,T67] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V84 rat0 [V84,T52] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V85 rat1 [V85,T58] ( 3, 2 ) long -> x1 "runtime lookup"
; V86 rat2 [V86,T47] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V87 rat3 [V87,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V88 rat4 [V88,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V89 rat5 [V89,T48] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V90 rat6 [V90,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V91 rat7 [V91,T10] ( 3, 16 ) long -> x1 "runtime lookup"
-; V92 rat8 [V92,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V93 rat9 [V93,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V94 rat10 [V94,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V95 rat11 [V95,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V96 rat12 [V96,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V97 rat13 [V97,T49] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V98 rat14 [V98,T57] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V99 rat15 [V99,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V100 rat16 [V100,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V101 rat17 [V101,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V102 rat18 [V102,T11] ( 3, 16 ) long -> x1 "runtime lookup"
-; V103 rat19 [V103,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-; V104 rat20 [V104,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
-; V105 rat21 [V105,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V106 rat22 [V106,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V107 rat23 [V107,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V108 rat24 [V108,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V109 rat25 [V109,T58] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V87 rat3 [V87,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V88 rat4 [V88,T10] ( 3, 16 ) long -> x1 "runtime lookup"
+; V89 rat5 [V89,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V90 rat6 [V90,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V91 rat7 [V91,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V92 rat8 [V92,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V93 rat9 [V93,T53] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V94 rat10 [V94,T48] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
+; V95 rat11 [V95,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V96 rat12 [V96,T11] ( 3, 16 ) long -> x1 "runtime lookup"
+; V97 rat13 [V97,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+; V98 rat14 [V98,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
+; V99 rat15 [V99,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+;* V100 rat16 [V100,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V101 rat17 [V101,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V102 rat18 [V102,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V103 rat19 [V103,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V104 rat20 [V104,T49] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V105 rat21 [V105,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V106 rat22 [V106,T74] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V107 rat23 [V107,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V108 rat24 [V108,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V109 rat25 [V109,T59] ( 3, 2 ) long -> x1 "runtime lookup"
; V110 rat26 [V110,T51] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V111 rat27 [V111,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V112 rat28 [V112,T80] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V113 rat29 [V113,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V114 rat30 [V114,T60] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V115 rat31 [V115,T63] ( 3, 2 ) long -> x1 "runtime lookup"
-; V116 rat32 [V116,T53] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 24
+0 (0.00%) : 18389.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable
1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)
@@ -16,7 +16,7 @@
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
; V06 loc3 [V06,T15] ( 4, 5 ) int -> x21
; V07 loc4 [V07,T16] ( 4, 5 ) int -> x24
-; V08 loc5 [V08,T38] ( 3, 1.50) int -> x19
+; V08 loc5 [V08,T36] ( 3, 1.50) int -> x19
; V09 loc6 [V09,T07] ( 13, 11.50) ref -> [fp-0x68] do-not-enreg[M] class-hnd EH-live <<unknown class>>
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
; V11 loc8 [V11,T05] ( 5, 14 ) int -> x0
@@ -39,7 +39,7 @@
; V28 tmp16 [V28 ] ( 3, 3 ) struct ( 8) [fp-0x50] do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
; V29 tmp17 [V29,T19] ( 8, 4 ) int -> x22 "Inline return value spill temp"
; V30 tmp18 [V30,T24] ( 3, 3 ) int -> x1 "Inlining Arg"
-; V31 tmp19 [V31,T35] ( 2, 2 ) long -> x21 "Inlining Arg"
+; V31 tmp19 [V31,T33] ( 2, 2 ) long -> x21 "Inlining Arg"
; V32 tmp20 [V32,T23] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <int[]>
;* V33 tmp21 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V34 tmp22 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -49,24 +49,24 @@
; V38 tmp26 [V38,T13] ( 5, 5 ) long -> [fp-0x58] spill-single-def "Inlining Arg"
;* V39 tmp27 [V39 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V40 tmp28 [V40 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V41 tmp29 [V41,T36] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V41 tmp29 [V41,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V42 tmp30 [V42,T11] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
; V43 tmp31 [V43,T12] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
; V44 tmp32 [V44,T06] ( 3, 12 ) byref -> x1 "dup spill"
;* V45 tmp33 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp34 [V46 ] ( 0, 0 ) int -> zero-ref single-def "field V04._length (fldOffset=0x8)" P-INDEP
-; V47 tmp35 [V47,T34] ( 4, 2 ) byref -> x21 single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+; V47 tmp35 [V47,T32] ( 4, 2 ) byref -> x21 single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp36 [V48 ] ( 0, 0 ) int -> zero-ref single-def "field V13._length (fldOffset=0x8)" P-INDEP
;* V49 tmp37 [V49 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp38 [V50 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
-; V51 tmp39 [V51,T40] ( 2, 1.50) int -> [fp-0x48] do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
-; V52 tmp40 [V52,T41] ( 2, 1.50) int -> [fp-0x44] do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
+; V51 tmp39 [V51,T38] ( 2, 1.50) int -> [fp-0x48] do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
+; V52 tmp40 [V52,T39] ( 2, 1.50) int -> [fp-0x44] do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
;* V53 tmp41 [V53 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V54 tmp42 [V54 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
-; V55 tmp43 [V55,T42] ( 2, 1.50) int -> [fp-0x50] do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
-; V56 tmp44 [V56,T43] ( 2, 1.50) int -> [fp-0x4C] do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
-; V57 tmp45 [V57,T44] ( 2, 1 ) byref -> x23 "field V33._reference (fldOffset=0x0)" P-INDEP
-; V58 tmp46 [V58,T45] ( 2, 1 ) int -> x22 "field V33._length (fldOffset=0x8)" P-INDEP
+; V55 tmp43 [V55,T40] ( 2, 1.50) int -> [fp-0x50] do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
+; V56 tmp44 [V56,T41] ( 2, 1.50) int -> [fp-0x4C] do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
+; V57 tmp45 [V57,T42] ( 2, 1 ) byref -> x23 "field V33._reference (fldOffset=0x0)" P-INDEP
+; V58 tmp46 [V58,T43] ( 2, 1 ) int -> x22 "field V33._length (fldOffset=0x8)" P-INDEP
;* V59 tmp47 [V59 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V60 tmp48 [V60 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V61 tmp49 [V61 ] ( 0, 0 ) byref -> zero-ref single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -75,25 +75,22 @@
;* V64 tmp52 [V64 ] ( 0, 0 ) int -> zero-ref single-def "field V37._length (fldOffset=0x8)" P-INDEP
; V65 tmp53 [V65,T17] ( 3, 4.50) byref -> x23 single-def "V05.[000..008)"
; V66 tmp54 [V66,T18] ( 3, 4.50) int -> x22 single-def "V05.[008..012)"
-; V67 tmp55 [V67,T37] ( 3, 1.50) byref -> x23 "V16.[000..008)"
-; V68 tmp56 [V68,T39] ( 3, 1.50) int -> x22 "V16.[008..012)"
+; V67 tmp55 [V67,T35] ( 3, 1.50) byref -> x23 "V16.[000..008)"
+; V68 tmp56 [V68,T37] ( 3, 1.50) int -> x22 "V16.[008..012)"
; V69 tmp57 [V69,T03] ( 2, 16 ) ref -> x1 "argument with side effect"
; V70 GsCookie [V70 ] ( 1, 1 ) long -> [fp-0x70] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V71 PSPSym [V71,T47] ( 1, 1 ) long -> [fp-0x38] do-not-enreg[V] "PSPSym"
+; V71 PSPSym [V71,T44] ( 1, 1 ) long -> [fp-0x38] do-not-enreg[V] "PSPSym"
; V72 cse0 [V72,T08] ( 5, 10 ) int -> x11 "CSE - aggressive"
; V73 cse1 [V73,T09] ( 11, 7 ) long -> registers multi-def "CSE - aggressive"
-; V74 rat0 [V74,T30] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V74 rat0 [V74,T29] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V75 rat1 [V75,T26] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-; V76 rat2 [V76,T31] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V76 rat2 [V76,T30] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V77 rat3 [V77,T27] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-; V78 rat4 [V78,T32] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V78 rat4 [V78,T31] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V79 rat5 [V79,T28] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V80 rat6 [V80,T33] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V81 rat7 [V81,T46] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V82 rat8 [V82,T29] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V83 rat9 [V83,T02] ( 3, 17.60) long -> x1 "Spilling to split statement for tree"
-; V84 rat10 [V84,T01] ( 3, 22.40) long -> x11 "fgMakeTemp is creating a new local variable"
-; V85 rat11 [V85,T25] ( 3, 3 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V80 rat6 [V80,T02] ( 3, 17.60) long -> x1 "Spilling to split statement for tree"
+; V81 rat7 [V81,T01] ( 3, 22.40) long -> x11 "fgMakeTemp is creating a new local variable"
+; V82 rat8 [V82,T25] ( 3, 3 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 64
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.linux.arm64.checked.mch |
1 |
0 |
0 |
1 |
-0 |
+0 |
benchmarks.run_pgo.linux.arm64.checked.mch |
1 |
0 |
1 |
0 |
-0 |
+8 |
benchmarks.run_tiered.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
coreclr_tests.run.linux.arm64.checked.mch |
3 |
2 |
0 |
1 |
-60 |
+0 |
libraries.crossgen2.linux.arm64.checked.mch |
11 |
11 |
0 |
0 |
-108 |
+0 |
libraries.pmi.linux.arm64.checked.mch |
34 |
23 |
0 |
11 |
-376 |
+0 |
libraries_tests.run.linux.arm64.Release.mch |
43 |
32 |
2 |
9 |
-536 |
+28 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
19 |
15 |
0 |
4 |
-264 |
+0 |
realworld.run.linux.arm64.checked.mch |
6 |
4 |
0 |
2 |
-64 |
+0 |
smoke_tests.nativeaot.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
118 |
87 |
3 |
28 |
-1,408 |
+36 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.linux.arm64.checked.mch |
33,632 |
2,755 |
30,877 |
4 (0.01%) |
4 (0.01%) |
benchmarks.run_pgo.linux.arm64.checked.mch |
153,694 |
60,106 |
93,588 |
162 (0.11%) |
162 (0.11%) |
benchmarks.run_tiered.linux.arm64.checked.mch |
63,981 |
47,942 |
16,039 |
2 (0.00%) |
2 (0.00%) |
coreclr_tests.run.linux.arm64.checked.mch |
628,056 |
383,770 |
244,286 |
415 (0.07%) |
415 (0.07%) |
libraries.crossgen2.linux.arm64.checked.mch |
233,777 |
15 |
233,762 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.linux.arm64.checked.mch |
294,232 |
6 |
294,226 |
8 (0.00%) |
8 (0.00%) |
libraries_tests.run.linux.arm64.Release.mch |
737,382 |
487,495 |
249,887 |
3,456 (0.47%) |
3,456 (0.47%) |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
304,061 |
21,560 |
282,501 |
10 (0.00%) |
10 (0.00%) |
realworld.run.linux.arm64.checked.mch |
33,301 |
151 |
33,150 |
3 (0.01%) |
3 (0.01%) |
smoke_tests.nativeaot.linux.arm64.checked.mch |
19,041 |
6 |
19,035 |
0 (0.00%) |
0 (0.00%) |
|
2,501,157 |
1,003,806 |
1,497,351 |
4,060 (0.16%) |
4,060 (0.16%) |
jit-analyze output
benchmarks.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15577120 (overridden on cmd)
Total bytes of diff: 15577120 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 1 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
benchmarks.run_pgo.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 81135316 (overridden on cmd)
Total bytes of diff: 81135324 (overridden on cmd)
Total bytes of delta: 8 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
8 : 85059.dasm (0.66 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
8 (0.66 % of base) : 85059.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
Top method regressions (percentages):
8 (0.66 % of base) : 85059.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
1 total methods with Code Size differences (0 improved, 1 regressed).
coreclr_tests.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 509824836 (overridden on cmd)
Total bytes of diff: 509824776 (overridden on cmd)
Total bytes of delta: -60 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-36 : 612648.dasm (-3.45 % of base)
-24 : 626233.dasm (-5.04 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 1 unchanged.
Top method improvements (bytes):
-36 (-3.45 % of base) : 612648.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
-24 (-5.04 % of base) : 626233.dasm - Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]):ubyte:this (FullOpts)
Top method improvements (percentages):
-24 (-5.04 % of base) : 626233.dasm - Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]):ubyte:this (FullOpts)
-36 (-3.45 % of base) : 612648.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
2 total methods with Code Size differences (2 improved, 0 regressed).
libraries.crossgen2.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 55738036 (overridden on cmd)
Total bytes of diff: 55737928 (overridden on cmd)
Total bytes of delta: -108 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-24 : 164633.dasm (-0.36 % of base)
-20 : 101054.dasm (-0.73 % of base)
-12 : 81351.dasm (-0.68 % of base)
-12 : 10298.dasm (-0.56 % of base)
-12 : 8200.dasm (-0.53 % of base)
-8 : 165127.dasm (-1.82 % of base)
-4 : 177787.dasm (-0.15 % of base)
-4 : 101327.dasm (-0.10 % of base)
-4 : 165506.dasm (-0.19 % of base)
-4 : 165507.dasm (-0.15 % of base)
-4 : 177786.dasm (-0.19 % of base)
11 total files with Code Size differences (11 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-24 (-0.36 % of base) : 164633.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-20 (-0.73 % of base) : 101054.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
-12 (-0.68 % of base) : 81351.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
-12 (-0.56 % of base) : 10298.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-12 (-0.53 % of base) : 8200.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
-8 (-1.82 % of base) : 165127.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
-4 (-0.10 % of base) : 101327.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
-4 (-0.19 % of base) : 165506.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-4 (-0.19 % of base) : 177786.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-4 (-0.15 % of base) : 177787.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-4 (-0.15 % of base) : 165507.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
Top method improvements (percentages):
-8 (-1.82 % of base) : 165127.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
-20 (-0.73 % of base) : 101054.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
-12 (-0.68 % of base) : 81351.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
-12 (-0.56 % of base) : 10298.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-12 (-0.53 % of base) : 8200.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
-24 (-0.36 % of base) : 164633.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-4 (-0.19 % of base) : 165506.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-4 (-0.19 % of base) : 177786.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-4 (-0.15 % of base) : 165507.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-4 (-0.15 % of base) : 177787.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-4 (-0.10 % of base) : 101327.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
11 total methods with Code Size differences (11 improved, 0 regressed).
libraries.pmi.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 76022852 (overridden on cmd)
Total bytes of diff: 76022476 (overridden on cmd)
Total bytes of delta: -376 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-32 : 109400.dasm (-0.78 % of base)
-24 : 158115.dasm (-2.84 % of base)
-24 : 85675.dasm (-2.44 % of base)
-24 : 155612.dasm (-2.79 % of base)
-24 : 158120.dasm (-2.94 % of base)
-24 : 156764.dasm (-2.48 % of base)
-24 : 159267.dasm (-3.00 % of base)
-24 : 156943.dasm (-2.50 % of base)
-20 : 191465.dasm (-2.19 % of base)
-20 : 179326.dasm (-4.63 % of base)
-20 : 233068.dasm (-2.19 % of base)
-20 : 143677.dasm (-0.25 % of base)
-20 : 221011.dasm (-4.63 % of base)
-20 : 87058.dasm (-1.06 % of base)
-12 : 26655.dasm (-0.68 % of base)
-8 : 93649.dasm (-0.15 % of base)
-8 : 266853.dasm (-0.72 % of base)
-8 : 93646.dasm (-0.18 % of base)
-4 : 109680.dasm (-0.10 % of base)
-4 : 198327.dasm (-0.16 % of base)
23 total files with Code Size differences (23 improved, 0 regressed), 11 unchanged.
Top method improvements (bytes):
-32 (-0.78 % of base) : 109400.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
-24 (-2.44 % of base) : 85675.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
-24 (-2.48 % of base) : 156764.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.50 % of base) : 156943.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.79 % of base) : 155612.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.94 % of base) : 158120.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-24 (-2.84 % of base) : 158115.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
-24 (-3.00 % of base) : 159267.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-20 (-2.19 % of base) : 191465.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-20 (-2.19 % of base) : 233068.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-20 (-4.63 % of base) : 179326.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-20 (-4.63 % of base) : 221011.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-20 (-1.06 % of base) : 87058.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
-20 (-0.25 % of base) : 143677.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-12 (-0.68 % of base) : 26655.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-8 (-0.15 % of base) : 93649.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitAllElementInitializersRecursive(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator+IndexDesc],ubyte):this (FullOpts)
-8 (-0.18 % of base) : 93646.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
-8 (-0.72 % of base) : 266853.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-4 (-0.10 % of base) : 109680.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
-4 (-0.21 % of base) : 247055.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
Top method improvements (percentages):
-20 (-4.63 % of base) : 179326.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-20 (-4.63 % of base) : 221011.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-24 (-3.00 % of base) : 159267.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-24 (-2.94 % of base) : 158120.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-24 (-2.84 % of base) : 158115.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
-24 (-2.79 % of base) : 155612.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.50 % of base) : 156943.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.48 % of base) : 156764.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.44 % of base) : 85675.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
-20 (-2.19 % of base) : 191465.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-20 (-2.19 % of base) : 233068.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-20 (-1.06 % of base) : 87058.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
-32 (-0.78 % of base) : 109400.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
-8 (-0.72 % of base) : 266853.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-12 (-0.68 % of base) : 26655.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-20 (-0.25 % of base) : 143677.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-4 (-0.21 % of base) : 247055.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-4 (-0.20 % of base) : 198326.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-8 (-0.18 % of base) : 93646.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
-4 (-0.16 % of base) : 247056.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
23 total methods with Code Size differences (23 improved, 0 regressed).
libraries_tests.run.linux.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 381450404 (overridden on cmd)
Total bytes of diff: 381449896 (overridden on cmd)
Total bytes of delta: -508 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
24 : 52405.dasm (1.06 % of base)
4 : 702619.dasm (0.24 % of base)
Top file improvements (bytes):
-48 : 175765.dasm (-2.16 % of base)
-36 : 228232.dasm (-1.78 % of base)
-28 : 229551.dasm (-0.51 % of base)
-28 : 66233.dasm (-2.42 % of base)
-28 : 234143.dasm (-3.32 % of base)
-28 : 702251.dasm (-2.36 % of base)
-28 : 90757.dasm (-2.42 % of base)
-24 : 669519.dasm (-1.10 % of base)
-24 : 215525.dasm (-2.87 % of base)
-20 : 170023.dasm (-0.60 % of base)
-20 : 229613.dasm (-1.47 % of base)
-12 : 379278.dasm (-0.35 % of base)
-12 : 446391.dasm (-0.35 % of base)
-12 : 584429.dasm (-0.35 % of base)
-12 : 96994.dasm (-0.35 % of base)
-12 : 134066.dasm (-0.37 % of base)
-12 : 334811.dasm (-0.35 % of base)
-12 : 713368.dasm (-0.35 % of base)
-12 : 281903.dasm (-0.35 % of base)
-12 : 367256.dasm (-0.35 % of base)
32 total files with Code Size differences (30 improved, 2 regressed), 9 unchanged.
Top method regressions (bytes):
24 (1.06 % of base) : 52405.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
4 (0.24 % of base) : 702619.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
Top method improvements (bytes):
-48 (-2.16 % of base) : 175765.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-36 (-1.78 % of base) : 228232.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:IsSupersetOf(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this (Tier1)
-28 (-2.42 % of base) : 66233.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this (Tier1)
-28 (-2.36 % of base) : 702251.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this (Tier1)
-28 (-2.42 % of base) : 90757.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this (Tier1)
-28 (-3.32 % of base) : 234143.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,int]:Heapify():this (Tier1)
-28 (-0.51 % of base) : 229551.dasm - System.Collections.Tests.IGenericSharedAPI_Tests`1[System.ValueTuple`2[System.__Canon,System.__Canon]]:AddToCollection(System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]],int):this (Tier1)
-24 (-1.10 % of base) : 669519.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-24 (-2.87 % of base) : 215525.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (Tier1)
-20 (-1.47 % of base) : 229613.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:Heapify():this (Tier1)
-20 (-0.60 % of base) : 170023.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 379278.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 584429.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 96994.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.37 % of base) : 134066.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 334811.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 713368.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 281903.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 367256.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 438287.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
Top method regressions (percentages):
24 (1.06 % of base) : 52405.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
4 (0.24 % of base) : 702619.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
Top method improvements (percentages):
-28 (-3.32 % of base) : 234143.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,int]:Heapify():this (Tier1)
-24 (-2.87 % of base) : 215525.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (Tier1)
-28 (-2.42 % of base) : 66233.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this (Tier1)
-28 (-2.42 % of base) : 90757.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this (Tier1)
-28 (-2.36 % of base) : 702251.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this (Tier1)
-48 (-2.16 % of base) : 175765.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-36 (-1.78 % of base) : 228232.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:IsSupersetOf(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this (Tier1)
-20 (-1.47 % of base) : 229613.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:Heapify():this (Tier1)
-24 (-1.10 % of base) : 669519.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-20 (-0.60 % of base) : 170023.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-28 (-0.51 % of base) : 229551.dasm - System.Collections.Tests.IGenericSharedAPI_Tests`1[System.ValueTuple`2[System.__Canon,System.__Canon]]:AddToCollection(System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]],int):this (Tier1)
-4 (-0.41 % of base) : 325885.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-12 (-0.37 % of base) : 134066.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 446391.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (Tier1)
-12 (-0.35 % of base) : 334811.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 281903.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 367256.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 584429.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 515234.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 96994.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 162656488 (overridden on cmd)
Total bytes of diff: 162656224 (overridden on cmd)
Total bytes of delta: -264 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-24 : 67006.dasm (-2.53 % of base)
-24 : 67354.dasm (-3.03 % of base)
-24 : 68102.dasm (-2.87 % of base)
-24 : 68846.dasm (-2.82 % of base)
-24 : 69373.dasm (-2.51 % of base)
-24 : 19710.dasm (-2.80 % of base)
-20 : 8004.dasm (-2.19 % of base)
-20 : 96157.dasm (-0.25 % of base)
-20 : 299819.dasm (-0.49 % of base)
-20 : 23858.dasm (-4.46 % of base)
-12 : 163424.dasm (-0.67 % of base)
-8 : 148202.dasm (-0.78 % of base)
-8 : 96241.dasm (-1.74 % of base)
-8 : 151282.dasm (-0.78 % of base)
-4 : 179187.dasm (-0.21 % of base)
15 total files with Code Size differences (15 improved, 0 regressed), 4 unchanged.
Top method improvements (bytes):
-24 (-2.51 % of base) : 69373.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.53 % of base) : 67006.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.82 % of base) : 68846.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.87 % of base) : 68102.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
-24 (-2.80 % of base) : 19710.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
-24 (-3.03 % of base) : 67354.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-20 (-2.19 % of base) : 8004.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-20 (-4.46 % of base) : 23858.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-20 (-0.25 % of base) : 96157.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-20 (-0.49 % of base) : 299819.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
-12 (-0.67 % of base) : 163424.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-8 (-1.74 % of base) : 96241.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
-8 (-0.78 % of base) : 148202.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-8 (-0.78 % of base) : 151282.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-4 (-0.21 % of base) : 179187.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
Top method improvements (percentages):
-20 (-4.46 % of base) : 23858.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-24 (-3.03 % of base) : 67354.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-24 (-2.87 % of base) : 68102.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
-24 (-2.82 % of base) : 68846.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.80 % of base) : 19710.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
-24 (-2.53 % of base) : 67006.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.51 % of base) : 69373.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-20 (-2.19 % of base) : 8004.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-8 (-1.74 % of base) : 96241.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
-8 (-0.78 % of base) : 148202.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-8 (-0.78 % of base) : 151282.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-12 (-0.67 % of base) : 163424.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-20 (-0.49 % of base) : 299819.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
-20 (-0.25 % of base) : 96157.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-4 (-0.21 % of base) : 179187.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
15 total methods with Code Size differences (15 improved, 0 regressed).
realworld.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15906904 (overridden on cmd)
Total bytes of diff: 15906840 (overridden on cmd)
Total bytes of delta: -64 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-24 : 25342.dasm (-2.80 % of base)
-20 : 24994.dasm (-4.46 % of base)
-12 : 14476.dasm (-0.14 % of base)
-8 : 32226.dasm (-0.10 % of base)
4 total files with Code Size differences (4 improved, 0 regressed), 2 unchanged.
Top method improvements (bytes):
-24 (-2.80 % of base) : 25342.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
-20 (-4.46 % of base) : 24994.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-12 (-0.14 % of base) : 14476.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
-8 (-0.10 % of base) : 32226.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
Top method improvements (percentages):
-20 (-4.46 % of base) : 24994.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-24 (-2.80 % of base) : 25342.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
-12 (-0.14 % of base) : 14476.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
-8 (-0.10 % of base) : 32226.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
4 total methods with Code Size differences (4 improved, 0 regressed).
linux x64
Diffs are based on 2,595,007 contexts (1,052,329 MinOpts, 1,542,678 FullOpts).
MISSED contexts: 3,628 (0.14%)
Overall (-2,033 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.x64.checked.mch |
13,735,124 |
+0 |
benchmarks.run_pgo.linux.x64.checked.mch |
68,635,056 |
-16 |
coreclr_tests.run.linux.x64.checked.mch |
459,551,078 |
-50 |
libraries.crossgen2.linux.x64.checked.mch |
38,670,232 |
-218 |
libraries.pmi.linux.x64.checked.mch |
60,144,132 |
-460 |
libraries_tests.run.linux.x64.Release.mch |
333,558,929 |
-757 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
130,468,363 |
-440 |
realworld.run.linux.x64.checked.mch |
13,194,603 |
-92 |
FullOpts (-2,033 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.x64.checked.mch |
13,468,331 |
+0 |
benchmarks.run_pgo.linux.x64.checked.mch |
48,805,299 |
-16 |
coreclr_tests.run.linux.x64.checked.mch |
132,992,943 |
-50 |
libraries.crossgen2.linux.x64.checked.mch |
38,669,030 |
-218 |
libraries.pmi.linux.x64.checked.mch |
60,031,262 |
-460 |
libraries_tests.run.linux.x64.Release.mch |
149,169,408 |
-757 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
119,809,892 |
-440 |
realworld.run.linux.x64.checked.mch |
12,805,497 |
-92 |
Example diffs
benchmarks.run.linux.x64.checked.mch
+0 (0.00%) : 20427.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)
@@ -23,11 +23,11 @@
; V12 loc9 [V12,T14] ( 4, 14 ) byref -> [rbp-0x68] spill-single-def
; V13 loc10 [V13,T17] ( 6, 13.50) int -> [rbp-0x4C]
; V14 loc11 [V14,T15] ( 4, 14 ) byref -> [rbp-0x70] spill-single-def
-; V15 loc12 [V15,T66] ( 3, 1.50) int -> r12 single-def
+; V15 loc12 [V15,T62] ( 3, 1.50) int -> r12 single-def
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp2 [V18,T31] ( 4, 3 ) long -> r11 "VirtualCall with runtime lookup"
-; V19 tmp3 [V19,T67] ( 3, 1.50) int -> rax
+; V19 tmp3 [V19,T63] ( 3, 1.50) int -> rax
;* V20 tmp4 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -35,8 +35,8 @@
;* V24 tmp8 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp10 [V26,T28] ( 4, 4 ) byref -> rax single-def "dup spill"
-; V27 tmp11 [V27,T61] ( 3, 2 ) long -> rsi "spilling helperCall"
-; V28 tmp12 [V28,T68] ( 3, 1.50) int -> r13
+; V27 tmp11 [V27,T57] ( 3, 2 ) long -> rsi "spilling helperCall"
+; V28 tmp12 [V28,T64] ( 3, 1.50) int -> r13
;* V29 tmp13 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp14 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -48,9 +48,9 @@
; V37 tmp21 [V37,T32] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
; V38 tmp22 [V38,T33] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp24 [V40,T80] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp24 [V40,T74] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp26 [V42,T81] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp26 [V42,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V43 tmp27 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -58,9 +58,9 @@
; V47 tmp31 [V47,T34] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
; V48 tmp32 [V48,T35] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V50 tmp34 [V50,T82] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V50 tmp34 [V50,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V52 tmp36 [V52,T83] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V52 tmp36 [V52,T77] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -68,62 +68,56 @@
; V57 tmp41 [V57,T36] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
; V58 tmp42 [V58,T37] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V60 tmp44 [V60,T84] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V60 tmp44 [V60,T78] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V62 tmp46 [V62,T85] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V62 tmp46 [V62,T79] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V63 tmp47 [V63 ] ( 6, 10.50) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64 ] ( 9, 19 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V65 tmp49 [V65,T71] ( 2, 1 ) ref -> rdi single-def "field V33._items (fldOffset=0x0)" P-INDEP
-; V66 tmp50 [V66,T74] ( 2, 1 ) int -> rsi single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V67 tmp51 [V67,T72] ( 2, 1 ) ref -> rdi single-def "field V43._items (fldOffset=0x0)" P-INDEP
-; V68 tmp52 [V68,T75] ( 2, 1 ) int -> rsi single-def "field V43._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T73] ( 2, 1 ) ref -> rdi single-def "field V53._items (fldOffset=0x0)" P-INDEP
-; V70 tmp54 [V70,T76] ( 2, 1 ) int -> rsi single-def "field V53._length (fldOffset=0x8)" P-INDEP
+; V65 tmp49 [V65,T67] ( 2, 1 ) ref -> rdi single-def "field V33._items (fldOffset=0x0)" P-INDEP
+; V66 tmp50 [V66,T70] ( 2, 1 ) int -> rsi single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V67 tmp51 [V67,T68] ( 2, 1 ) ref -> rdi single-def "field V43._items (fldOffset=0x0)" P-INDEP
+; V68 tmp52 [V68,T71] ( 2, 1 ) int -> rsi single-def "field V43._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T69] ( 2, 1 ) ref -> rdi single-def "field V53._items (fldOffset=0x0)" P-INDEP
+; V70 tmp54 [V70,T72] ( 2, 1 ) int -> rsi single-def "field V53._length (fldOffset=0x8)" P-INDEP
; V71 tmp55 [V71,T41] ( 3, 3 ) int -> rcx "index expr"
; V72 tmp56 [V72,T42] ( 3, 3 ) int -> rsi "index expr"
; V73 tmp57 [V73,T43] ( 3, 3 ) int -> rax "index expr"
; V74 tmp58 [V74,T44] ( 3, 3 ) int -> rsi "index expr"
; V75 tmp59 [V75,T12] ( 2, 16 ) long -> rsi "argument with side effect"
; V76 tmp60 [V76,T13] ( 2, 16 ) long -> rsi "argument with side effect"
-; V77 tmp61 [V77,T64] ( 2, 2 ) int -> rsi "argument with side effect"
+; V77 tmp61 [V77,T60] ( 2, 2 ) int -> rsi "argument with side effect"
; V78 tmp62 [V78,T45] ( 3, 3 ) int -> rax "index expr"
; V79 tmp63 [V79,T46] ( 3, 3 ) int -> rsi "index expr"
-; V80 tmp64 [V80,T65] ( 2, 2 ) long -> rsi "argument with side effect"
-; V81 cse0 [V81,T69] ( 3, 1.50) int -> rdi "CSE - conservative"
-; V82 cse1 [V82,T70] ( 3, 1.50) int -> r13 "CSE - conservative"
-; V83 rat0 [V83,T54] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
-; V84 rat1 [V84,T62] ( 3, 2 ) long -> rsi "runtime lookup"
+; V80 tmp64 [V80,T61] ( 2, 2 ) long -> rsi "argument with side effect"
+; V81 cse0 [V81,T65] ( 3, 1.50) int -> rdi "CSE - conservative"
+; V82 cse1 [V82,T66] ( 3, 1.50) int -> r13 "CSE - conservative"
+; V83 rat0 [V83,T52] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V84 rat1 [V84,T58] ( 3, 2 ) long -> rsi "runtime lookup"
; V85 rat2 [V85,T47] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
-;* V86 rat3 [V86,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V87 rat4 [V87,T77] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V88 rat5 [V88,T48] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V89 rat6 [V89,T06] ( 3, 17.60) long -> rdi "Spilling to split statement for tree"
-; V90 rat7 [V90,T10] ( 3, 16 ) long -> rsi "runtime lookup"
-; V91 rat8 [V91,T02] ( 3, 22.40) long -> rsi "fgMakeTemp is creating a new local variable"
-;* V92 rat9 [V92,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V93 rat10 [V93,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V94 rat11 [V94,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V95 rat12 [V95,T56] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
-; V96 rat13 [V96,T49] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V97 rat14 [V97,T57] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V98 rat15 [V98,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V99 rat16 [V99,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V100 rat17 [V100,T08] ( 3, 17.60) long -> rdi "Spilling to split statement for tree"
-; V101 rat18 [V101,T11] ( 3, 16 ) long -> rsi "runtime lookup"
-; V102 rat19 [V102,T04] ( 3, 22.40) long -> rsi "fgMakeTemp is creating a new local variable"
-; V103 rat20 [V103,T22] ( 3, 8.80) long -> rdi "Spilling to split statement for tree"
-; V104 rat21 [V104,T19] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V105 rat22 [V105,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V106 rat23 [V106,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V107 rat24 [V107,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V108 rat25 [V108,T58] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V86 rat3 [V86,T06] ( 3, 17.60) long -> rdi "Spilling to split statement for tree"
+; V87 rat4 [V87,T10] ( 3, 16 ) long -> rsi "runtime lookup"
+; V88 rat5 [V88,T02] ( 3, 22.40) long -> rsi "fgMakeTemp is creating a new local variable"
+;* V89 rat6 [V89,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V90 rat7 [V90,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V91 rat8 [V91,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V92 rat9 [V92,T53] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V93 rat10 [V93,T48] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
+; V94 rat11 [V94,T08] ( 3, 17.60) long -> rdi "Spilling to split statement for tree"
+; V95 rat12 [V95,T11] ( 3, 16 ) long -> rsi "runtime lookup"
+; V96 rat13 [V96,T04] ( 3, 22.40) long -> rsi "fgMakeTemp is creating a new local variable"
+; V97 rat14 [V97,T22] ( 3, 8.80) long -> rdi "Spilling to split statement for tree"
+; V98 rat15 [V98,T19] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
+;* V99 rat16 [V99,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V100 rat17 [V100,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V101 rat18 [V101,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V102 rat19 [V102,T54] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V103 rat20 [V103,T49] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
+;* V104 rat21 [V104,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V105 rat22 [V105,T73] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V106 rat23 [V106,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V107 rat24 [V107,T56] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V108 rat25 [V108,T59] ( 3, 2 ) long -> rsi "runtime lookup"
; V109 rat26 [V109,T51] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
-;* V110 rat27 [V110,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V111 rat28 [V111,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V112 rat29 [V112,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V113 rat30 [V113,T60] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
-; V114 rat31 [V114,T63] ( 3, 2 ) long -> rsi "runtime lookup"
-; V115 rat32 [V115,T53] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 72
@@ -235,8 +229,8 @@ G_M18379_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=4000
mov gword ptr [rbp-0x60], rax
; GC ptr vars +{V11}
cmp dword ptr [rbp-0x48], 0
- jl SHORT G_M18379_IG14
mov ecx, dword ptr [rbp-0x48]
+ jl SHORT G_M18379_IG14
;; size=22 bbWeight=0.50 PerfScore 4.12
G_M18379_IG12: ; bbWeight=4, gcVars=00000000000000000000000028000000 {V07 V11}, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, gcvars, byref, isz
; gcrRegs -[rax]
benchmarks.run_pgo.linux.x64.checked.mch
-16 (-1.62%) : 92706.dasm - System.Linq.Enumerable:TryGetSingleSystem.__Canon:System.__Canon (Tier1)
@@ -40,7 +40,7 @@
; V28 tmp20 [V28,T29] ( 2, 0.27) ref -> rdi "argument with side effect"
; V29 tmp21 [V29,T00] ( 6, 54.40) ref -> rdx "argument with side effect"
; V30 tmp22 [V30,T14] ( 4, 4.27) ref -> rax "argument with side effect"
-; V31 PSPSym [V31,T24] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
+; V31 PSPSym [V31,T24] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
; V32 cse0 [V32,T22] ( 4, 1.20) long -> registers "CSE - moderate"
; V33 cse1 [V33,T05] ( 3, 11.22) int -> rsi "CSE - aggressive"
; V34 cse2 [V34,T16] ( 3, 2.79) int -> r12 "CSE - moderate"
@@ -51,9 +51,8 @@
; V39 rat1 [V39,T28] ( 3, 0.27) long -> r12 "runtime lookup"
; V40 rat2 [V40,T26] ( 3, 0.37) long -> rdi "spilling expr"
; V41 rat3 [V41,T27] ( 3, 0.30) long -> r12 "fgMakeTemp is creating a new local variable"
-; TEMP_01 byref -> [rbp-0x60]
;
-; Lcl frame size = 72
+; Lcl frame size = 56
G_M35688_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -62,12 +61,11 @@ G_M35688_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push r13
push r12
push rbx
- sub rsp, 72
- lea rbp, [rsp+0x70]
+ sub rsp, 56
+ lea rbp, [rsp+0x60]
xor eax, eax
mov qword ptr [rbp-0x48], rax
- mov qword ptr [rbp-0x60], rax
- mov qword ptr [rbp-0x70], rsp
+ mov qword ptr [rbp-0x60], rsp
mov qword ptr [rbp-0x30], rdi
mov rbx, rdi
mov r13, rsi
@@ -76,7 +74,7 @@ G_M35688_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[r15]
mov r14, rcx
; byrRegs +[r14]
- ;; size=49 bbWeight=1 PerfScore 12.00
+ ;; size=45 bbWeight=1 PerfScore 11.00
G_M35688_IG02: ; bbWeight=1, gcVars=0000000000800000 {V06}, gcrefRegs=A000 {r13 r15}, byrefRegs=4000 {r14}, gcvars, byref
; GC ptr vars +{V06}
test r13, r13
@@ -308,7 +306,7 @@ G_M35688_IG22: ; bbWeight=0.07, gcrefRegs=3000 {r12 r13}, byrefRegs=4000
; gcrRegs -[r15]
jmp SHORT G_M35688_IG20
;; size=2 bbWeight=0.07 PerfScore 0.13
-G_M35688_IG23: ; bbWeight=0.01, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=4000 {r14}, byref
+G_M35688_IG23: ; bbWeight=0.01, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=4000 {r14}, byref, isz
; gcrRegs +[r15]
mov r11, rbx
mov rdi, r13
@@ -320,8 +318,8 @@ G_M35688_IG23: ; bbWeight=0.01, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=4
; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; function address
cmp qword ptr [r15+0x18], rdi
- je G_M35688_IG31
- ;; size=32 bbWeight=0.01 PerfScore 0.09
+ je SHORT G_M35688_IG31
+ ;; size=28 bbWeight=0.01 PerfScore 0.09
G_M35688_IG24: ; bbWeight=0, gcrefRegs=B040 {rsi r12 r13 r15}, byrefRegs=4000 {r14}, byref
; gcrRegs -[rax]
mov rdi, gword ptr [r15+0x08]
@@ -373,9 +371,6 @@ G_M35688_IG29: ; bbWeight=0.01, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=4
G_M35688_IG30: ; bbWeight=0.09, gcrefRegs=B001 {rax r12 r13 r15}, byrefRegs=4000 {r14}, byref
inc esi
mov dword ptr [r13+0x14], esi
- lea rdi, bword ptr [r13+0x08]
- ; byrRegs +[rdi]
- mov bword ptr [rbp-0x60], rdi
mov rdx, gword ptr [r13+0x20]
; gcrRegs +[rdx]
mov esi, ecx
@@ -383,11 +378,10 @@ G_M35688_IG30: ; bbWeight=0.09, gcrefRegs=B001 {rax r12 r13 r15}, byrefRe
; gcrRegs +[rsi]
mov rdi, gword ptr [rdx+0x08]
; gcrRegs +[rdi]
- ; byrRegs -[rdi]
call [rdx+0x18]<unknown method>
; gcrRegs -[rdx rsi rdi]
; gcr arg pop 0
- mov rdi, bword ptr [rbp-0x60]
+ lea rdi, bword ptr [r13+0x08]
; byrRegs +[rdi]
mov rsi, rax
; gcrRegs +[rsi]
@@ -395,7 +389,7 @@ G_M35688_IG30: ; bbWeight=0.09, gcrefRegs=B001 {rax r12 r13 r15}, byrefRe
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
jmp G_M35688_IG23
- ;; size=49 bbWeight=0.09 PerfScore 1.47
+ ;; size=41 bbWeight=0.09 PerfScore 1.29
G_M35688_IG31: ; bbWeight=0.01, gcrefRegs=B040 {rsi r12 r13 r15}, byrefRegs=4000 {r14}, byref
; gcrRegs +[rsi]
mov rax, gword ptr [r15+0x08]
@@ -455,7 +449,7 @@ G_M35688_IG35: ; bbWeight=0.93, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[rax]
;; size=6 bbWeight=0.93 PerfScore 1.17
G_M35688_IG36: ; bbWeight=0.93, epilog, nogc, extend
- add rsp, 72
+ add rsp, 56
pop rbx
pop r12
pop r13
@@ -481,7 +475,7 @@ G_M35688_IG39: ; bbWeight=0.07, gcVars=0000000000800000 {V06}, gcrefRegs=
; gcrRegs +[rax]
;; size=4 bbWeight=0.07 PerfScore 0.07
G_M35688_IG40: ; bbWeight=0.07, epilog, nogc, extend
- add rsp, 72
+ add rsp, 56
pop rbx
pop r12
pop r13
@@ -527,7 +521,7 @@ G_M35688_IG44: ; bbWeight=0.07, gcVars=0000000000800002 {V04 V06}, gcrefR
push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x70]
+ lea rbp, [rbp+0x60]
;; size=22 bbWeight=0.07 PerfScore 0.70
G_M35688_IG45: ; bbWeight=0.07, gcVars=0000000000800002 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
mov r13, gword ptr [rbp-0x38]
@@ -561,7 +555,7 @@ G_M35688_IG48: ; bbWeight=0.07, funclet epilog, nogc, extend
ret
;; size=15 bbWeight=0.07 PerfScore 0.28
-; Total bytes of code 987, prolog size 49, PerfScore 240.55, instruction count 264, allocated bytes for code 987 (MethodHash=6ebb7497) for method System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
+; Total bytes of code 971, prolog size 45, PerfScore 239.37, instruction count 261, allocated bytes for code 971 (MethodHash=6ebb7497) for method System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -574,7 +568,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
+ CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
coreclr_tests.run.linux.x64.checked.mch
-19 (-4.94%) : 692116.dasm - Microsoft.Build.Collections.RetrievableEntryHashSet1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet
1[System.__Canon]):ubyte:this (FullOpts)
@@ -8,12 +8,12 @@
; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 9, 19 ) ref -> [rbp-0x40] this class-hnd EH-live single-def <Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]>
+; V00 this [V00,T04] ( 8, 18 ) ref -> [rbp-0x40] this class-hnd EH-live single-def <Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]>
; V01 arg1 [V01,T08] ( 5, 5 ) ref -> rsi class-hnd single-def <Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]>
; V02 loc0 [V02 ] ( 2, 8 ) ref -> [rbp-0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
; V03 loc1 [V03 ] ( 8, 18 ) struct (24) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.Build.Collections.RetrievableEntryHashSet`1+Enumerator[System.__Canon]>
; V04 loc2 [V04,T06] ( 3, 12 ) ref -> r15 class-hnd <System.__Canon>
-;* V05 loc3 [V05,T22] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[Z] EH-live
+;* V05 loc3 [V05,T19] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[Z] EH-live
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -26,27 +26,24 @@
; V15 tmp9 [V15 ] ( 5, 15 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x8)" P-DEP
; V16 tmp10 [V16 ] ( 4, 11 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V03._index (fldOffset=0x10)" P-DEP
; V17 tmp11 [V17 ] ( 4, 11 ) int -> [rbp-0x24] do-not-enreg[X] addr-exposed "field V03._version (fldOffset=0x14)" P-DEP
-; V18 tmp12 [V18,T18] ( 3, 3 ) ref -> rsi single-def "field V12._set (fldOffset=0x0)" P-INDEP
-;* V19 tmp13 [V19,T21] ( 0, 0 ) ref -> zero-ref single-def "field V12._current (fldOffset=0x8)" P-INDEP
-;* V20 tmp14 [V20,T23] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x10)" P-INDEP
-; V21 tmp15 [V21,T19] ( 2, 2 ) int -> rax single-def "field V12._version (fldOffset=0x14)" P-INDEP
+; V18 tmp12 [V18,T16] ( 3, 3 ) ref -> rsi single-def "field V12._set (fldOffset=0x0)" P-INDEP
+;* V19 tmp13 [V19,T18] ( 0, 0 ) ref -> zero-ref single-def "field V12._current (fldOffset=0x8)" P-INDEP
+;* V20 tmp14 [V20,T20] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x10)" P-INDEP
+; V21 tmp15 [V21,T17] ( 2, 2 ) int -> rax single-def "field V12._version (fldOffset=0x14)" P-INDEP
; V22 tmp16 [V22,T03] ( 2, 32 ) long -> rsi "argument with side effect"
; V23 tmp17 [V23,T05] ( 2, 16 ) ref -> rsi "argument with side effect"
-; V24 PSPSym [V24,T24] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
-;* V25 cse0 [V25,T25] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-; V26 cse1 [V26,T13] ( 5, 4.20) long -> rbx multi-def "CSE - aggressive"
-;* V27 rat0 [V27,T14] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V28 rat1 [V28,T17] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V24 PSPSym [V24,T21] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
+;* V25 cse0 [V25,T22] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V26 cse1 [V26,T12] ( 5, 4.20) long -> rbx multi-def "CSE - aggressive"
+;* V27 rat0 [V27,T13] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V28 rat1 [V28,T15] ( 0, 0 ) long -> zero-ref "runtime lookup"
;* V29 rat2 [V29,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V30 rat3 [V30,T15] ( 2, 4 ) long -> rsi "Spilling to split statement for tree"
-;* V31 rat4 [V31,T20] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V32 rat5 [V32,T10] ( 2, 4 ) long -> rsi "fgMakeTemp is creating a new local variable"
-; V33 rat6 [V33,T01] ( 3, 35.20) long -> rsi "Spilling to split statement for tree"
-; V34 rat7 [V34,T02] ( 3, 32 ) long -> rsi "runtime lookup"
-; V35 rat8 [V35,T00] ( 3, 44.80) long -> rax "fgMakeTemp is creating a new local variable"
-; V36 rat9 [V36,T11] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V37 rat10 [V37,T16] ( 3, 4.40) long -> rbx "Spilling to split statement for tree"
-; V38 rat11 [V38,T12] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V30 rat3 [V30,T01] ( 3, 35.20) long -> rsi "Spilling to split statement for tree"
+; V31 rat4 [V31,T02] ( 3, 32 ) long -> rsi "runtime lookup"
+; V32 rat5 [V32,T00] ( 3, 44.80) long -> rax "fgMakeTemp is creating a new local variable"
+; V33 rat6 [V33,T10] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V34 rat7 [V34,T14] ( 3, 4.40) long -> rbx "Spilling to split statement for tree"
+; V35 rat8 [V35,T11] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 64
@@ -109,14 +106,8 @@ G_M28904_IG08: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
mov dword ptr [rbp-0x24], eax
;; size=6 bbWeight=1 PerfScore 2.00
G_M28904_IG09: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov rsi, qword ptr [rdi]
- mov rsi, qword ptr [rsi+0x38]
- mov rsi, qword ptr [rsi]
- mov rsi, qword ptr [rsi+0x18]
- test rsi, rsi
- jne SHORT G_M28904_IG11
jmp SHORT G_M28904_IG11
- ;; size=21 bbWeight=1 PerfScore 11.25
+ ;; size=2 bbWeight=1 PerfScore 2.00
G_M28904_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
mov r15, gword ptr [rbp-0x30]
@@ -255,7 +246,7 @@ G_M28904_IG28: ; bbWeight=1, funclet epilog, nogc, extend
ret
;; size=9 bbWeight=1 PerfScore 2.75
-; Total bytes of code 385, prolog size 45, PerfScore 280.83, instruction count 121, allocated bytes for code 385 (MethodHash=9d278f17) for method Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]):ubyte:this (FullOpts)
+; Total bytes of code 366, prolog size 45, PerfScore 271.58, instruction count 115, allocated bytes for code 366 (MethodHash=9d278f17) for method Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
-31 (-4.07%) : 677717.dasm - ILCompiler.LazyGenericsSupport+Graph1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph
1+Vertex[System.__Canon]):this (FullOpts)
@@ -8,77 +8,73 @@
; 4 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 15,1275 ) ref -> rbx this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
-; V01 arg1 [V01,T07] ( 18,1118 ) ref -> registers class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
+; V00 this [V00,T08] ( 14,1147 ) ref -> r15 this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
+; V01 arg1 [V01,T06] ( 18,1118 ) ref -> registers class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
; V02 loc0 [V02,T04] ( 8,1328 ) ref -> r13 class-hnd <<unknown class>>
;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-; V06 loc4 [V06,T08] ( 9,1216 ) ref -> r13 class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
+; V06 loc4 [V06,T07] ( 9,1216 ) ref -> r13 class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
; V07 loc5 [V07,T09] ( 5, 896 ) ref -> r12 class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp2 [V10,T33] ( 3, 48 ) long -> r11 "VirtualCall with runtime lookup"
+; V10 tmp2 [V10,T29] ( 3, 48 ) long -> r11 "VirtualCall with runtime lookup"
;* V11 tmp3 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V12 tmp4 [V12,T00] ( 4,3072 ) long -> r11 "VirtualCall with runtime lookup"
;* V13 tmp5 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-; V14 tmp6 [V14,T21] ( 3, 192 ) ref -> r13 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
+; V14 tmp6 [V14,T17] ( 3, 192 ) ref -> r13 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
;* V15 tmp7 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp8 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V17 tmp9 [V17,T30] ( 4, 48 ) long -> r11 "VirtualCall with runtime lookup"
+; V17 tmp9 [V17,T26] ( 4, 48 ) long -> r11 "VirtualCall with runtime lookup"
;* V18 tmp10 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-; V19 tmp11 [V19,T35] ( 3, 43.88) int -> r12 "impAppendStmt"
-; V20 tmp12 [V20,T29] ( 7, 64 ) ref -> r13 class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
-; V21 tmp13 [V21,T43] ( 4, 20 ) int -> r12 "Inline stloc first use temp"
-; V22 tmp14 [V22,T44] ( 3, 18 ) ref -> rdi class-hnd "Inline stloc first use temp" <<unknown class>>
-; V23 tmp15 [V23,T45] ( 3, 16 ) int -> rdi "Inline return value spill temp"
-; V24 tmp16 [V24,T38] ( 3, 36.12) int -> rdi "Inlining Arg"
-; V25 tmp17 [V25,T23] ( 7, 160 ) ref -> r15 class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-; V26 tmp18 [V26,T31] ( 4, 48 ) int -> [rbp-0x34] spill-single-def "Inline stloc first use temp"
-; V27 tmp19 [V27,T36] ( 3, 40 ) ref -> rdi class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V19 tmp11 [V19,T31] ( 3, 43.88) int -> r12 "impAppendStmt"
+; V20 tmp12 [V20,T25] ( 7, 64 ) ref -> r13 class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
+; V21 tmp13 [V21,T39] ( 4, 20 ) int -> r12 "Inline stloc first use temp"
+; V22 tmp14 [V22,T40] ( 3, 18 ) ref -> rdi class-hnd "Inline stloc first use temp" <<unknown class>>
+; V23 tmp15 [V23,T41] ( 3, 16 ) int -> rdi "Inline return value spill temp"
+; V24 tmp16 [V24,T34] ( 3, 36.12) int -> rdi "Inlining Arg"
+; V25 tmp17 [V25,T19] ( 7, 160 ) ref -> rbx class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
+; V26 tmp18 [V26,T27] ( 4, 48 ) int -> [rbp-0x34] spill-single-def "Inline stloc first use temp"
+; V27 tmp19 [V27,T32] ( 3, 40 ) ref -> rdi class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V28 tmp20 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-; V29 tmp21 [V29,T19] ( 3, 256 ) int -> r11 "Inline return value spill temp"
-; V30 tmp22 [V30,T12] ( 3, 702.09) int -> rdi "Inlining Arg"
-; V31 tmp23 [V31,T15] ( 3, 577.91) int -> r11 "Inlining Arg"
-; V32 tmp24 [V32,T13] ( 3, 628.79) ref -> rdi class-hnd "Inline stloc first use temp" <<unknown class>>
+; V29 tmp21 [V29,T16] ( 3, 256 ) int -> r11 "Inline return value spill temp"
+; V30 tmp22 [V30,T11] ( 3, 702.09) int -> rdi "Inlining Arg"
+; V31 tmp23 [V31,T13] ( 3, 577.91) int -> r11 "Inlining Arg"
+; V32 tmp24 [V32,T12] ( 3, 628.79) ref -> rdi class-hnd "Inline stloc first use temp" <<unknown class>>
; V33 tmp25 [V33,T10] ( 4, 745.57) int -> rsi "Inline stloc first use temp"
-; V34 tmp26 [V34,T18] ( 7, 384 ) ref -> rdi class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-; V35 tmp27 [V35,T28] ( 3, 93.20) ref -> rdx class-hnd "Inline stloc first use temp" <<unknown class>>
-; V36 tmp28 [V36,T27] ( 4, 122.39) int -> rsi "Inline stloc first use temp"
+; V34 tmp26 [V34,T15] ( 7, 384 ) ref -> rdi class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+; V35 tmp27 [V35,T24] ( 3, 93.20) ref -> rdx class-hnd "Inline stloc first use temp" <<unknown class>>
+; V36 tmp28 [V36,T23] ( 4, 122.39) int -> rsi "Inline stloc first use temp"
;* V37 tmp29 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-; V38 tmp30 [V38,T46] ( 2, 16 ) ref -> r15 "field V03.Vertex (fldOffset=0x0)" P-INDEP
-; V39 tmp31 [V39,T47] ( 2, 16 ) ref -> r13 "field V03.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
+; V38 tmp30 [V38,T42] ( 2, 16 ) ref -> rbx "field V03.Vertex (fldOffset=0x0)" P-INDEP
+; V39 tmp31 [V39,T43] ( 2, 16 ) ref -> r13 "field V03.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
; V40 tmp32 [V40,T05] ( 5,1424 ) ref -> r12 "field V04.Destination (fldOffset=0x0)" P-INDEP
-; V41 tmp33 [V41,T17] ( 1, 512 ) ubyte -> rdx "field V04.Flagged (fldOffset=0x8)" P-INDEP
-; V42 tmp34 [V42,T41] ( 3, 32 ) ref -> rsi "field V05.Vertex (fldOffset=0x0)" P-INDEP
-; V43 tmp35 [V43,T42] ( 3, 32 ) ref -> r13 "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
+; V41 tmp33 [V41,T14] ( 1, 512 ) ubyte -> rdx "field V04.Flagged (fldOffset=0x8)" P-INDEP
+; V42 tmp34 [V42,T37] ( 3, 32 ) ref -> rsi "field V05.Vertex (fldOffset=0x0)" P-INDEP
+; V43 tmp35 [V43,T38] ( 3, 32 ) ref -> r13 "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
;* V44 tmp36 [V44 ] ( 0, 0 ) ref -> zero-ref "field V13.Destination (fldOffset=0x0)" P-DEP
;* V45 tmp37 [V45 ] ( 0, 0 ) ubyte -> zero-ref "field V13.Flagged (fldOffset=0x8)" P-DEP
-; V46 tmp38 [V46,T48] ( 2, 16 ) ref -> rax "field V18.Destination (fldOffset=0x0)" P-INDEP
-; V47 tmp39 [V47,T50] ( 1, 8 ) ubyte -> rdx "field V18.Flagged (fldOffset=0x8)" P-INDEP
+; V46 tmp38 [V46,T44] ( 2, 16 ) ref -> rax "field V18.Destination (fldOffset=0x0)" P-INDEP
+; V47 tmp39 [V47,T46] ( 1, 8 ) ubyte -> rdx "field V18.Flagged (fldOffset=0x8)" P-INDEP
;* V48 tmp40 [V48 ] ( 0, 0 ) ref -> zero-ref "field V28.Vertex (fldOffset=0x0)" P-INDEP
;* V49 tmp41 [V49 ] ( 0, 0 ) ref -> zero-ref "field V28.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
-; V50 tmp42 [V50,T32] ( 3, 48 ) byref -> [rbp-0x40] spill-single-def "BlockOp address local"
-; V51 cse0 [V51,T49] ( 2, 9 ) long -> r14 hoist "CSE - conservative"
-; V52 cse1 [V52,T40] ( 4, 32 ) int -> rsi "CSE - moderate"
-; V53 rat0 [V53,T52] ( 3, 4.72) long -> rdi "Spilling to split statement for tree"
-; V54 rat1 [V54,T54] ( 3, 4 ) long -> r14 "runtime lookup"
-; V55 rat2 [V55,T51] ( 3, 5.60) long -> rsi "spilling expr"
-; V56 rat3 [V56,T53] ( 3, 4.48) long -> r14 "fgMakeTemp is creating a new local variable"
-; V57 rat4 [V57,T37] ( 3, 37.76) long -> rdi "Spilling to split statement for tree"
-; V58 rat5 [V58,T34] ( 3, 44.80) long -> rsi "spilling expr"
-; V59 rat6 [V59,T39] ( 3, 35.84) long -> r11 "fgMakeTemp is creating a new local variable"
-; V60 rat7 [V60,T14] ( 2, 512 ) long -> rdi "Spilling to split statement for tree"
-;* V61 rat8 [V61,T20] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V62 rat9 [V62,T11] ( 3, 716.80) long -> rdi "spilling expr"
-; V63 rat10 [V63,T16] ( 2, 409.60) long -> rdi "fgMakeTemp is creating a new local variable"
-; V64 rat11 [V64,T02] ( 3,2416.64) long -> rdi "Spilling to split statement for tree"
-; V65 rat12 [V65,T01] ( 3,2867.20) long -> rsi "spilling expr"
-; V66 rat13 [V66,T03] ( 3,2293.76) long -> r11 "fgMakeTemp is creating a new local variable"
-; V67 rat14 [V67,T24] ( 3, 151.04) long -> rdi "Spilling to split statement for tree"
-; V68 rat15 [V68,T26] ( 3, 128 ) long -> rsi "runtime lookup"
-; V69 rat16 [V69,T22] ( 3, 179.20) long -> rsi "spilling expr"
-; V70 rat17 [V70,T25] ( 3, 143.36) long -> rsi "fgMakeTemp is creating a new local variable"
+; V50 tmp42 [V50,T28] ( 3, 48 ) byref -> [rbp-0x40] spill-single-def "BlockOp address local"
+; V51 cse0 [V51,T45] ( 2, 9 ) long -> r14 hoist "CSE - conservative"
+; V52 cse1 [V52,T36] ( 4, 32 ) int -> rsi "CSE - moderate"
+; V53 rat0 [V53,T48] ( 3, 4.72) long -> rdi "Spilling to split statement for tree"
+; V54 rat1 [V54,T50] ( 3, 4 ) long -> r14 "runtime lookup"
+; V55 rat2 [V55,T47] ( 3, 5.60) long -> rsi "spilling expr"
+; V56 rat3 [V56,T49] ( 3, 4.48) long -> r14 "fgMakeTemp is creating a new local variable"
+; V57 rat4 [V57,T33] ( 3, 37.76) long -> rdi "Spilling to split statement for tree"
+; V58 rat5 [V58,T30] ( 3, 44.80) long -> rsi "spilling expr"
+; V59 rat6 [V59,T35] ( 3, 35.84) long -> r11 "fgMakeTemp is creating a new local variable"
+; V60 rat7 [V60,T02] ( 3,2416.64) long -> rdi "Spilling to split statement for tree"
+; V61 rat8 [V61,T01] ( 3,2867.20) long -> rsi "spilling expr"
+; V62 rat9 [V62,T03] ( 3,2293.76) long -> r11 "fgMakeTemp is creating a new local variable"
+; V63 rat10 [V63,T20] ( 3, 151.04) long -> rdi "Spilling to split statement for tree"
+; V64 rat11 [V64,T22] ( 3, 128 ) long -> rsi "runtime lookup"
+; V65 rat12 [V65,T18] ( 3, 179.20) long -> rsi "spilling expr"
+; V66 rat13 [V66,T21] ( 3, 143.36) long -> rsi "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 24
@@ -92,13 +88,13 @@ G_M1799_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 24
lea rbp, [rsp+0x40]
mov qword ptr [rbp-0x30], rdi
- mov rbx, rdi
- ; gcrRegs +[rbx]
- mov r15, rsi
+ mov r15, rdi
; gcrRegs +[r15]
+ mov rbx, rsi
+ ; gcrRegs +[rbx]
;; size=29 bbWeight=1 PerfScore 8.25
G_M1799_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx]
+ mov rdi, qword ptr [r15]
mov rsi, qword ptr [rdi+0x38]
mov rsi, qword ptr [rsi]
cmp qword ptr [rsi+0x08], 40
@@ -119,12 +115,12 @@ G_M1799_IG05: ; bbWeight=0.36, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {
mov r14, rax
;; size=18 bbWeight=0.36 PerfScore 0.54
G_M1799_IG06: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov esi, dword ptr [rbx+0x28]
- mov dword ptr [r15+0x18], esi
- mov dword ptr [r15+0x1C], esi
+ mov esi, dword ptr [r15+0x28]
+ mov dword ptr [rbx+0x18], esi
+ mov dword ptr [rbx+0x1C], esi
inc esi
- mov dword ptr [rbx+0x28], esi
- mov r13, gword ptr [rbx+0x08]
+ mov dword ptr [r15+0x28], esi
+ mov r13, gword ptr [r15+0x08]
; gcrRegs +[r13]
mov r12d, dword ptr [r13+0x10]
mov rdi, gword ptr [r13+0x08]
@@ -134,7 +130,7 @@ G_M1799_IG06: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
;; size=34 bbWeight=8 PerfScore 122.00
G_M1799_IG07: ; bbWeight=2, gcrefRegs=A088 {rbx rdi r13 r15}, byrefRegs=0000 {}, byref, isz
movsxd rsi, r12d
- mov rdx, r15
+ mov rdx, rbx
; gcrRegs +[rdx]
call CORINFO_HELP_ARRADDR_ST
; gcrRegs -[rdx rdi]
@@ -147,16 +143,16 @@ G_M1799_IG07: ; bbWeight=2, gcrefRegs=A088 {rbx rdi r13 r15}, byrefRegs=0
G_M1799_IG08: ; bbWeight=2, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
mov rdi, r13
; gcrRegs +[rdi]
- mov rsi, r15
+ mov rsi, rbx
; gcrRegs +[rsi]
call [<unknown method>]
; gcrRegs -[rsi rdi r13]
; gcr arg pop 0
;; size=12 bbWeight=2 PerfScore 7.00
G_M1799_IG09: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov byte ptr [r15+0x22], 1
+ mov byte ptr [rbx+0x22], 1
mov r11, r14
- mov rdi, gword ptr [r15+0x10]
+ mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
call [r11]
; gcrRegs -[rdi] +[rax]
@@ -165,20 +161,20 @@ G_M1799_IG09: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
; gcrRegs +[r13]
test r13, r13
jne SHORT G_M1799_IG15
- ;; size=23 bbWeight=8 PerfScore 62.00
-G_M1799_IG10: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax r13 r15]
- mov rdi, gword ptr [rbx+0x20]
+ ;; size=22 bbWeight=8 PerfScore 62.00
+G_M1799_IG10: ; bbWeight=8, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax rbx r13]
+ mov rdi, gword ptr [r15+0x20]
; gcrRegs +[rdi]
cmp dword ptr [rdi], edi
call [System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]:Pop():ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]:this]
; gcrRegs -[rdi] +[rax rdx]
; gcr arg pop 0
- mov r15, rax
- ; gcrRegs +[r15]
+ mov rbx, rax
+ ; gcrRegs +[rbx]
mov r13, rdx
; gcrRegs +[r13]
- mov rdi, qword ptr [rbx]
+ mov rdi, qword ptr [r15]
mov rsi, qword ptr [rdi+0x38]
mov rsi, qword ptr [rsi]
cmp qword ptr [rsi+0x08], 48
@@ -191,7 +187,7 @@ G_M1799_IG11: ; bbWeight=6.40, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=00
je SHORT G_M1799_IG20
;; size=9 bbWeight=6.40 PerfScore 20.80
G_M1799_IG12: ; bbWeight=8, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
- mov r12d, dword ptr [r15+0x1C]
+ mov r12d, dword ptr [rbx+0x1C]
mov rdi, r13
; gcrRegs +[rdi]
call [r11]
@@ -206,8 +202,8 @@ G_M1799_IG13: ; bbWeight=5.94, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=00
mov edi, r12d
;; size=3 bbWeight=5.94 PerfScore 1.49
G_M1799_IG14: ; bbWeight=8, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
- mov dword ptr [r15+0x1C], edi
- ;; size=4 bbWeight=8 PerfScore 8.00
+ mov dword ptr [rbx+0x1C], edi
+ ;; size=3 bbWeight=8 PerfScore 8.00
G_M1799_IG15: ; bbWeight=512, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
mov rdi, r13
; gcrRegs +[rdi]
@@ -216,23 +212,23 @@ G_M1799_IG15: ; bbWeight=512, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=000
; gcrRegs -[rdi]
; gcr arg pop 0
test eax, eax
- je G_M1799_IG31
+ je G_M1799_IG28
;; size=24 bbWeight=512 PerfScore 2432.00
-G_M1799_IG16: ; bbWeight=128, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx]
- mov rdi, qword ptr [rdi+0x38]
- mov rdi, qword ptr [rdi]
- cmp qword ptr [rdi+0x08], 48
+G_M1799_IG16: ; bbWeight=512, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
...
+0 (0.00%) : 593072.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)
@@ -23,11 +23,11 @@
; V12 loc9 [V12,T14] ( 4, 14 ) byref -> [rbp-0x68] spill-single-def
; V13 loc10 [V13,T17] ( 6, 13.50) int -> [rbp-0x4C]
; V14 loc11 [V14,T15] ( 4, 14 ) byref -> [rbp-0x70] spill-single-def
-; V15 loc12 [V15,T66] ( 3, 1.50) int -> r12 single-def
+; V15 loc12 [V15,T62] ( 3, 1.50) int -> r12 single-def
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp2 [V18,T31] ( 4, 3 ) long -> r11 "VirtualCall with runtime lookup"
-; V19 tmp3 [V19,T67] ( 3, 1.50) int -> rax
+; V19 tmp3 [V19,T63] ( 3, 1.50) int -> rax
;* V20 tmp4 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -35,8 +35,8 @@
;* V24 tmp8 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp10 [V26,T28] ( 4, 4 ) byref -> rax single-def "dup spill"
-; V27 tmp11 [V27,T61] ( 3, 2 ) long -> rsi "spilling helperCall"
-; V28 tmp12 [V28,T68] ( 3, 1.50) int -> r13
+; V27 tmp11 [V27,T57] ( 3, 2 ) long -> rsi "spilling helperCall"
+; V28 tmp12 [V28,T64] ( 3, 1.50) int -> r13
;* V29 tmp13 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp14 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -48,9 +48,9 @@
; V37 tmp21 [V37,T32] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
; V38 tmp22 [V38,T33] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp24 [V40,T80] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp24 [V40,T74] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp26 [V42,T81] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp26 [V42,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V43 tmp27 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -58,9 +58,9 @@
; V47 tmp31 [V47,T34] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
; V48 tmp32 [V48,T35] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V50 tmp34 [V50,T82] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V50 tmp34 [V50,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V52 tmp36 [V52,T83] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V52 tmp36 [V52,T77] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -68,62 +68,56 @@
; V57 tmp41 [V57,T36] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
; V58 tmp42 [V58,T37] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V60 tmp44 [V60,T84] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V60 tmp44 [V60,T78] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V62 tmp46 [V62,T85] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V62 tmp46 [V62,T79] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V63 tmp47 [V63 ] ( 6, 10.50) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64 ] ( 9, 19 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V65 tmp49 [V65,T71] ( 2, 1 ) ref -> rdi single-def "field V33._items (fldOffset=0x0)" P-INDEP
-; V66 tmp50 [V66,T74] ( 2, 1 ) int -> rsi single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V67 tmp51 [V67,T72] ( 2, 1 ) ref -> rdi single-def "field V43._items (fldOffset=0x0)" P-INDEP
-; V68 tmp52 [V68,T75] ( 2, 1 ) int -> rsi single-def "field V43._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T73] ( 2, 1 ) ref -> rdi single-def "field V53._items (fldOffset=0x0)" P-INDEP
-; V70 tmp54 [V70,T76] ( 2, 1 ) int -> rsi single-def "field V53._length (fldOffset=0x8)" P-INDEP
+; V65 tmp49 [V65,T67] ( 2, 1 ) ref -> rdi single-def "field V33._items (fldOffset=0x0)" P-INDEP
+; V66 tmp50 [V66,T70] ( 2, 1 ) int -> rsi single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V67 tmp51 [V67,T68] ( 2, 1 ) ref -> rdi single-def "field V43._items (fldOffset=0x0)" P-INDEP
+; V68 tmp52 [V68,T71] ( 2, 1 ) int -> rsi single-def "field V43._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T69] ( 2, 1 ) ref -> rdi single-def "field V53._items (fldOffset=0x0)" P-INDEP
+; V70 tmp54 [V70,T72] ( 2, 1 ) int -> rsi single-def "field V53._length (fldOffset=0x8)" P-INDEP
; V71 tmp55 [V71,T41] ( 3, 3 ) int -> rcx "index expr"
; V72 tmp56 [V72,T42] ( 3, 3 ) int -> rsi "index expr"
; V73 tmp57 [V73,T43] ( 3, 3 ) int -> rax "index expr"
; V74 tmp58 [V74,T44] ( 3, 3 ) int -> rsi "index expr"
; V75 tmp59 [V75,T12] ( 2, 16 ) long -> rsi "argument with side effect"
; V76 tmp60 [V76,T13] ( 2, 16 ) long -> rsi "argument with side effect"
-; V77 tmp61 [V77,T64] ( 2, 2 ) int -> rsi "argument with side effect"
+; V77 tmp61 [V77,T60] ( 2, 2 ) int -> rsi "argument with side effect"
; V78 tmp62 [V78,T45] ( 3, 3 ) int -> rax "index expr"
; V79 tmp63 [V79,T46] ( 3, 3 ) int -> rsi "index expr"
-; V80 tmp64 [V80,T65] ( 2, 2 ) long -> rsi "argument with side effect"
-; V81 cse0 [V81,T69] ( 3, 1.50) int -> rdi "CSE - conservative"
-; V82 cse1 [V82,T70] ( 3, 1.50) int -> r13 "CSE - conservative"
-; V83 rat0 [V83,T54] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
-; V84 rat1 [V84,T62] ( 3, 2 ) long -> rsi "runtime lookup"
+; V80 tmp64 [V80,T61] ( 2, 2 ) long -> rsi "argument with side effect"
+; V81 cse0 [V81,T65] ( 3, 1.50) int -> rdi "CSE - conservative"
+; V82 cse1 [V82,T66] ( 3, 1.50) int -> r13 "CSE - conservative"
+; V83 rat0 [V83,T52] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V84 rat1 [V84,T58] ( 3, 2 ) long -> rsi "runtime lookup"
; V85 rat2 [V85,T47] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
-;* V86 rat3 [V86,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V87 rat4 [V87,T77] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V88 rat5 [V88,T48] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V89 rat6 [V89,T06] ( 3, 17.60) long -> rdi "Spilling to split statement for tree"
-; V90 rat7 [V90,T10] ( 3, 16 ) long -> rsi "runtime lookup"
-; V91 rat8 [V91,T02] ( 3, 22.40) long -> rsi "fgMakeTemp is creating a new local variable"
-;* V92 rat9 [V92,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V93 rat10 [V93,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V94 rat11 [V94,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V95 rat12 [V95,T56] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
-; V96 rat13 [V96,T49] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V97 rat14 [V97,T57] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V98 rat15 [V98,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V99 rat16 [V99,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V100 rat17 [V100,T08] ( 3, 17.60) long -> rdi "Spilling to split statement for tree"
-; V101 rat18 [V101,T11] ( 3, 16 ) long -> rsi "runtime lookup"
-; V102 rat19 [V102,T04] ( 3, 22.40) long -> rsi "fgMakeTemp is creating a new local variable"
-; V103 rat20 [V103,T22] ( 3, 8.80) long -> rdi "Spilling to split statement for tree"
-; V104 rat21 [V104,T19] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V105 rat22 [V105,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V106 rat23 [V106,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V107 rat24 [V107,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V108 rat25 [V108,T58] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V86 rat3 [V86,T06] ( 3, 17.60) long -> rdi "Spilling to split statement for tree"
+; V87 rat4 [V87,T10] ( 3, 16 ) long -> rsi "runtime lookup"
+; V88 rat5 [V88,T02] ( 3, 22.40) long -> rsi "fgMakeTemp is creating a new local variable"
+;* V89 rat6 [V89,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V90 rat7 [V90,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V91 rat8 [V91,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V92 rat9 [V92,T53] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V93 rat10 [V93,T48] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
+; V94 rat11 [V94,T08] ( 3, 17.60) long -> rdi "Spilling to split statement for tree"
+; V95 rat12 [V95,T11] ( 3, 16 ) long -> rsi "runtime lookup"
+; V96 rat13 [V96,T04] ( 3, 22.40) long -> rsi "fgMakeTemp is creating a new local variable"
+; V97 rat14 [V97,T22] ( 3, 8.80) long -> rdi "Spilling to split statement for tree"
+; V98 rat15 [V98,T19] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
+;* V99 rat16 [V99,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V100 rat17 [V100,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V101 rat18 [V101,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V102 rat19 [V102,T54] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V103 rat20 [V103,T49] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
+;* V104 rat21 [V104,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V105 rat22 [V105,T73] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V106 rat23 [V106,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V107 rat24 [V107,T56] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V108 rat25 [V108,T59] ( 3, 2 ) long -> rsi "runtime lookup"
; V109 rat26 [V109,T51] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
-;* V110 rat27 [V110,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V111 rat28 [V111,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V112 rat29 [V112,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V113 rat30 [V113,T60] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
-; V114 rat31 [V114,T63] ( 3, 2 ) long -> rsi "runtime lookup"
-; V115 rat32 [V115,T53] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 72
@@ -235,8 +229,8 @@ G_M18379_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=4000
mov gword ptr [rbp-0x60], rax
; GC ptr vars +{V11}
cmp dword ptr [rbp-0x48], 0
- jl SHORT G_M18379_IG14
mov ecx, dword ptr [rbp-0x48]
+ jl SHORT G_M18379_IG14
;; size=22 bbWeight=0.50 PerfScore 4.12
G_M18379_IG12: ; bbWeight=4, gcVars=00000000000000000000000028000000 {V07 V11}, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, gcvars, byref, isz
; gcrRegs -[rax]
libraries.crossgen2.linux.x64.checked.mch
-8 (-2.22%) : 122495.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)
@@ -17,7 +17,7 @@
; V06 tmp1 [V06,T00] ( 6, 20 ) byref -> rcx "impAppendStmt"
; V07 tmp2 [V07,T06] ( 6, 8 ) byref -> [rbp-0x48]
; V08 tmp3 [V08,T02] ( 6, 12 ) long -> rax "VirtualCall with runtime lookup"
-; V09 tmp4 [V09,T10] ( 4, 4 ) int -> rax
+; V09 tmp4 [V09,T10] ( 2, 3.96) int -> rdi
; V10 tmp5 [V10,T07] ( 4, 8 ) ref -> rdi "argument with side effect"
; V11 cse0 [V11,T09] ( 5, 7 ) int -> r12 "CSE - moderate"
; V12 cse1 [V12,T03] ( 4, 11.88) long -> [rbp-0x40] spill-single-def "CSE - aggressive"
@@ -111,10 +111,10 @@ G_M22994_IG07: ; bbWeight=1.98, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; gcrRegs -[rsi rdi]
; byrRegs -[rcx]
; gcr arg pop 0
+ xor edi, edi
test eax, eax
- sete al
- movzx rax, al
- test eax, eax
+ sete dil
+ test edi, edi
jne G_M22994_IG17
;; size=46 bbWeight=1.98 PerfScore 30.20
G_M22994_IG08: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
@@ -189,11 +189,8 @@ G_M22994_IG13: ; bbWeight=0.02, gcVars=0000000000000040 {V07}, gcrefRegs=
; gcrRegs -[rsi rdi]
; gcr arg pop 0
test eax, eax
- sete al
- movzx rax, al
- test eax, eax
- jne SHORT G_M22994_IG17
- ;; size=47 bbWeight=0.02 PerfScore 0.37
+ je SHORT G_M22994_IG17
+ ;; size=39 bbWeight=0.02 PerfScore 0.34
G_M22994_IG14: ; bbWeight=0.04, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
inc r13d
cmp r12d, r13d
@@ -232,7 +229,7 @@ G_M22994_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 360, prolog size 38, PerfScore 116.62, instruction count 116, allocated bytes for code 360 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 352, prolog size 38, PerfScore 116.59, instruction count 113, allocated bytes for code 352 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
; ============================================================
Unwind Info:
-23 (-1.49%) : 204659.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
@@ -55,7 +55,6 @@
; V43 cse3 [V43,T23] ( 3, 7.92) ref -> rcx "CSE - moderate"
; V44 cse4 [V44,T28] ( 4, 3 ) ref -> rdi "CSE - moderate"
; V45 cse5 [V45,T25] ( 6, 6 ) int -> r13 "CSE - moderate"
-; TEMP_01 byref -> [rbp-0xB0]
;
; Lcl frame size = 152
@@ -68,13 +67,11 @@ G_M44608_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 152
lea rbp, [rsp+0xC0]
- xor eax, eax
- mov qword ptr [rbp-0xB0], rax
mov rbx, rdi
; gcrRegs +[rbx]
mov r15, rsi
; gcrRegs +[r15]
- ;; size=40 bbWeight=1 PerfScore 8.50
+ ;; size=31 bbWeight=1 PerfScore 7.25
G_M44608_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
call [CORINFO_HELP_READYTORUN_NEW]
; gcrRegs +[rax]
@@ -498,22 +495,15 @@ G_M44608_IG17: ; bbWeight=0.02, gcVars=0000000080000004 {V08 V42}, gcrefR
; byrRegs -[rdi]
mov rax, gword ptr [rbp-0x48]
; gcrRegs +[rax]
- lea rdi, bword ptr [rax+0x08]
- ; byrRegs +[rdi]
- mov bword ptr [rbp-0xB0], rdi
- mov gword ptr [rbp-0x48], rax
- mov r11, gword ptr [rax+0x10]
- ; gcrRegs +[r11]
- mov r11, gword ptr [r11+0x10]
- mov r11, gword ptr [r11+0x10]
- mov gword ptr [rbp-0x90], r11
- ; GC ptr vars +{V39}
- mov r11, gword ptr [rbp-0xA8]
- mov rdi, gword ptr [r11+0x50]
+ mov rdi, gword ptr [rax+0x10]
; gcrRegs +[rdi]
- ; byrRegs -[rdi]
+ mov rdi, gword ptr [rdi+0x10]
+ mov rdi, gword ptr [rdi+0x10]
+ mov gword ptr [rbp-0x90], rdi
+ ; GC ptr vars +{V39}
+ mov rdi, gword ptr [rbp-0xA8]
+ mov rdi, gword ptr [rdi+0x50]
lea r11, [(reloc)]
- ; gcrRegs -[r11]
cmp dword ptr [rdi], edi
; GC ptr vars -{V42}
call [r11]<unknown method>
@@ -527,12 +517,14 @@ G_M44608_IG17: ; bbWeight=0.02, gcVars=0000000080000004 {V08 V42}, gcrefR
call [<unknown method>]
; gcrRegs -[rsi rdi]
; gcr arg pop 0
- mov rdi, bword ptr [rbp-0xB0]
+ mov rcx, gword ptr [rbp-0x48]
+ ; gcrRegs +[rcx]
+ lea rdi, bword ptr [rcx+0x08]
; byrRegs +[rdi]
mov rsi, rax
; gcrRegs +[rsi]
call [CORINFO_HELP_ASSIGN_REF]
- ; gcrRegs -[rax rsi]
+ ; gcrRegs -[rax rcx rsi]
; byrRegs -[rdi]
mov rax, gword ptr [rbp-0x48]
; gcrRegs +[rax]
@@ -566,7 +558,7 @@ G_M44608_IG17: ; bbWeight=0.02, gcVars=0000000080000004 {V08 V42}, gcrefR
; gcrRegs -[rsi]
; byrRegs -[rdi]
jmp SHORT G_M44608_IG20
- ;; size=186 bbWeight=0.02 PerfScore 1.26
+ ;; size=172 bbWeight=0.02 PerfScore 1.22
G_M44608_IG18: ; bbWeight=0.02, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rbp-0x38]
; gcrRegs +[rax]
@@ -848,7 +840,7 @@ G_M44608_IG29: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
int3
;; size=27 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1540, prolog size 40, PerfScore 643.62, instruction count 369, allocated bytes for code 1540 (MethodHash=bd8b51bf) for method System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
+; Total bytes of code 1517, prolog size 31, PerfScore 642.33, instruction count 365, allocated bytes for code 1517 (MethodHash=bd8b51bf) for method System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
; ============================================================
Unwind Info:
-23 (-1.47%) : 202570.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
@@ -66,7 +66,6 @@
; V54 tmp37 [V54,T37] ( 2, 16 ) ref -> rdx "argument with side effect"
; V55 tmp38 [V55,T38] ( 2, 16 ) ref -> [rbp-0xB8] spill-single-def "argument with side effect"
; V56 tmp39 [V56,T30] ( 4, 16 ) ref -> rsi "argument with side effect"
-; TEMP_01 byref -> [rbp-0xC0]
;
; Lcl frame size = 152
@@ -79,15 +78,13 @@ G_M15781_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 152
lea rbp, [rsp+0xC0]
- xor eax, eax
- mov qword ptr [rbp-0xC0], rax
mov rbx, rdi
; gcrRegs +[rbx]
mov r14, rsi
; gcrRegs +[r14]
mov r15, rdx
; gcrRegs +[r15]
- ;; size=43 bbWeight=1 PerfScore 8.75
+ ;; size=34 bbWeight=1 PerfScore 7.50
G_M15781_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
call [CORINFO_HELP_READYTORUN_NEW]
; gcrRegs +[rax]
@@ -697,14 +694,8 @@ G_M15781_IG29: ; bbWeight=0.04, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
call [CORINFO_HELP_ASSIGN_REF]
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- mov rax, gword ptr [rbp-0x48]
- ; gcrRegs +[rax]
- lea rdi, bword ptr [rax+0x10]
- ; byrRegs +[rdi]
- mov bword ptr [rbp-0xC0], rdi
call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE]
- ; gcrRegs -[rax]
- ; byrRegs -[rdi] +[rax]
+ ; byrRegs +[rax]
mov rsi, gword ptr [rax]
; gcrRegs +[rsi]
mov rdi, gword ptr [rbp-0x90]
@@ -715,12 +706,14 @@ G_M15781_IG29: ; bbWeight=0.04, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
call [r11]<unknown method>
; gcrRegs -[rsi rdi] +[rax]
; byrRegs -[rax]
- mov rdi, bword ptr [rbp-0xC0]
+ mov rcx, gword ptr [rbp-0x48]
+ ; gcrRegs +[rcx]
+ lea rdi, bword ptr [rcx+0x10]
; byrRegs +[rdi]
mov rsi, rax
; gcrRegs +[rsi]
call [CORINFO_HELP_ASSIGN_REF]
- ; gcrRegs -[rax rsi]
+ ; gcrRegs -[rax rcx rsi]
; byrRegs -[rdi]
mov rdi, gword ptr [rbp-0x40]
; gcrRegs +[rdi]
@@ -739,7 +732,7 @@ G_M15781_IG29: ; bbWeight=0.04, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
inc r12d
cmp r12d, r13d
jl G_M15781_IG29
- ;; size=189 bbWeight=0.04 PerfScore 2.35
+ ;; size=175 bbWeight=0.04 PerfScore 2.27
G_M15781_IG30: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r15]
mov rdi, r14
@@ -777,7 +770,7 @@ G_M15781_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1567, prolog size 34, PerfScore 1499.61, instruction count 383, allocated bytes for code 1567 (MethodHash=127bc25a) for method System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
+; Total bytes of code 1544, prolog size 25, PerfScore 1498.28, instruction count 379, allocated bytes for code 1544 (MethodHash=127bc25a) for method System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
; ============================================================
Unwind Info:
-10 (-0.49%) : 135209.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
@@ -35,13 +35,13 @@
; V23 tmp2 [V23,T43] ( 2, 0 ) ref -> rbx class-hnd single-def "finalizable newobj spill" <<unknown class>>
; V24 tmp3 [V24,T37] ( 3, 2 ) int -> rcx
; V25 tmp4 [V25,T18] ( 4, 16 ) int -> rdi "impSpillLclRefs"
-; V26 tmp5 [V26,T27] ( 2, 8 ) ref -> rsi class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
+; V26 tmp5 [V26,T26] ( 2, 8 ) ref -> rsi class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
;* V27 tmp6 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V28 tmp7 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V29 tmp8 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V30 tmp9 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>>
; V31 tmp10 [V31,T42] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V32 tmp11 [V32,T23] ( 2, 0.16) ubyte -> rdi "Inline return value spill temp"
+;* V32 tmp11 [V32,T33] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp12 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
; V34 tmp13 [V34,T10] ( 6, 24 ) ref -> rax class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
;* V35 tmp14 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -56,17 +56,17 @@
; V44 tmp23 [V44,T05] ( 4, 32 ) ref -> rax "argument with side effect"
; V45 tmp24 [V45,T06] ( 4, 32 ) ref -> [rbp-0x68] "argument with side effect"
; V46 tmp25 [V46,T07] ( 4, 32 ) ref -> rax "argument with side effect"
-; V47 tmp26 [V47,T28] ( 2, 8 ) ref -> rdi "argument with side effect"
-; V48 tmp27 [V48,T29] ( 2, 8 ) ref -> rdi "argument with side effect"
-; V49 tmp28 [V49,T30] ( 2, 8 ) ref -> rdi "argument with side effect"
-; V50 tmp29 [V50,T31] ( 2, 8 ) ref -> rdi "argument with side effect"
-; V51 tmp30 [V51,T32] ( 2, 8 ) ref -> [rbp-0x70] spill-single-def "argument with side effect"
-; V52 tmp31 [V52,T33] ( 2, 8 ) ref -> rsi "argument with side effect"
+; V47 tmp26 [V47,T27] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V48 tmp27 [V48,T28] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V49 tmp28 [V49,T29] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V50 tmp29 [V50,T30] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V51 tmp30 [V51,T31] ( 2, 8 ) ref -> [rbp-0x70] spill-single-def "argument with side effect"
+; V52 tmp31 [V52,T32] ( 2, 8 ) ref -> rsi "argument with side effect"
; V53 tmp32 [V53,T16] ( 4, 16 ) ref -> [rbp-0x78] "argument with side effect"
; V54 tmp33 [V54,T17] ( 4, 16 ) ref -> rax "argument with side effect"
-; V55 tmp34 [V55,T24] ( 4, 8 ) ref -> [rbp-0x80] "argument with side effect"
-; V56 tmp35 [V56,T25] ( 4, 8 ) ref -> rax "argument with side effect"
-; V57 tmp36 [V57,T26] ( 4, 8 ) ref -> rdi "argument with side effect"
+; V55 tmp34 [V55,T23] ( 4, 8 ) ref -> [rbp-0x80] "argument with side effect"
+; V56 tmp35 [V56,T24] ( 4, 8 ) ref -> rax "argument with side effect"
+; V57 tmp36 [V57,T25] ( 4, 8 ) ref -> rdi "argument with side effect"
; V58 cse0 [V58,T20] ( 10, 13.54) int -> [rbp-0x3C] spill-single-def "CSE - moderate"
; V59 cse1 [V59,T00] ( 6, 71.28) long -> [rbp-0x48] spill-single-def "CSE - aggressive"
;
@@ -400,12 +400,9 @@ G_M58711_IG22: ; bbWeight=0.08, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRe
; gcrRegs +[rdi]
mov r11, qword ptr [(reloc)]
cmp rdi, gword ptr [r15+r11]
- sete dil
- ; gcrRegs -[rdi]
- movzx rdi, dil
- test edi, edi
- je SHORT G_M58711_IG26
+ jne SHORT G_M58711_IG26
mov edi, r12d
+ ; gcrRegs -[rdi]
mov rdi, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[rdi]
lea r11, [(reloc)]
@@ -417,9 +414,9 @@ G_M58711_IG22: ; bbWeight=0.08, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRe
; GC ptr vars +{V45}
mov rdi, gword ptr [rbp-0x60]
; gcrRegs +[rdi]
- ;; size=183 bbWeight=0.08 PerfScore 5.12
-G_M58711_IG23: ; bbWeight=0.08, isz, extend
lea r11, [(reloc)]
+ ;; size=180 bbWeight=0.08 PerfScore 5.04
+G_M58711_IG23: ; bbWeight=0.08, isz, extend
; GC ptr vars -{V19}
call [r11]<unknown method>
; gcrRegs -[rdi]
@@ -435,7 +432,7 @@ G_M58711_IG23: ; bbWeight=0.08, isz, extend
test eax, eax
jne SHORT G_M58711_IG25
jmp SHORT G_M58711_IG26
- ;; size=29 bbWeight=0.08 PerfScore 0.88
+ ;; size=22 bbWeight=0.08 PerfScore 0.84
G_M58711_IG24: ; bbWeight=0.08, gcVars=0000000000002010 {V18 V19}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V04 V19}
mov esi, r12d
@@ -1045,7 +1042,7 @@ G_M58711_IG68: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
int3
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2042, prolog size 31, PerfScore 1669.33, instruction count 550, allocated bytes for code 2042 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
+; Total bytes of code 2032, prolog size 31, PerfScore 1669.21, instruction count 547, allocated bytes for code 2032 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
; ============================================================
Unwind Info:
-10 (-0.48%) : 127543.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
@@ -34,7 +34,7 @@
; V22 tmp2 [V22,T43] ( 2, 0 ) ref -> rbx class-hnd single-def "finalizable newobj spill" <<unknown class>>
; V23 tmp3 [V23,T37] ( 3, 2 ) int -> rcx
; V24 tmp4 [V24,T18] ( 4, 16 ) int -> rdi "impSpillLclRefs"
-; V25 tmp5 [V25,T27] ( 2, 8 ) ref -> rsi class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
+; V25 tmp5 [V25,T26] ( 2, 8 ) ref -> rsi class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
;* V26 tmp6 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V27 tmp7 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V28 tmp8 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
@@ -42,7 +42,7 @@
; V30 tmp10 [V30,T41] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V31 tmp11 [V31,T44] ( 2, 0 ) ref -> rbx class-hnd single-def "finalizable newobj spill" <<unknown class>>
; V32 tmp12 [V32,T42] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V33 tmp13 [V33,T23] ( 2, 0.16) ubyte -> rdi "Inline return value spill temp"
+;* V33 tmp13 [V33,T33] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V34 tmp14 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
; V35 tmp15 [V35,T10] ( 6, 24 ) ref -> rax class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
;* V36 tmp16 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -57,17 +57,17 @@
; V45 tmp25 [V45,T05] ( 4, 32 ) ref -> rax "argument with side effect"
; V46 tmp26 [V46,T06] ( 4, 32 ) ref -> [rbp-0x68] "argument with side effect"
; V47 tmp27 [V47,T07] ( 4, 32 ) ref -> rax "argument with side effect"
-; V48 tmp28 [V48,T28] ( 2, 8 ) ref -> rdi "argument with side effect"
-; V49 tmp29 [V49,T29] ( 2, 8 ) ref -> rdi "argument with side effect"
-; V50 tmp30 [V50,T30] ( 2, 8 ) ref -> rdi "argument with side effect"
-; V51 tmp31 [V51,T31] ( 2, 8 ) ref -> rdi "argument with side effect"
-; V52 tmp32 [V52,T32] ( 2, 8 ) ref -> [rbp-0x70] spill-single-def "argument with side effect"
-; V53 tmp33 [V53,T33] ( 2, 8 ) ref -> rsi "argument with side effect"
+; V48 tmp28 [V48,T27] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V49 tmp29 [V49,T28] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V50 tmp30 [V50,T29] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V51 tmp31 [V51,T30] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V52 tmp32 [V52,T31] ( 2, 8 ) ref -> [rbp-0x70] spill-single-def "argument with side effect"
+; V53 tmp33 [V53,T32] ( 2, 8 ) ref -> rsi "argument with side effect"
; V54 tmp34 [V54,T16] ( 4, 16 ) ref -> [rbp-0x78] "argument with side effect"
; V55 tmp35 [V55,T17] ( 4, 16 ) ref -> rax "argument with side effect"
-; V56 tmp36 [V56,T24] ( 4, 8 ) ref -> [rbp-0x80] "argument with side effect"
-; V57 tmp37 [V57,T25] ( 4, 8 ) ref -> rax "argument with side effect"
-; V58 tmp38 [V58,T26] ( 4, 8 ) ref -> rdi "argument with side effect"
+; V56 tmp36 [V56,T23] ( 4, 8 ) ref -> [rbp-0x80] "argument with side effect"
+; V57 tmp37 [V57,T24] ( 4, 8 ) ref -> rax "argument with side effect"
+; V58 tmp38 [V58,T25] ( 4, 8 ) ref -> rdi "argument with side effect"
; V59 cse0 [V59,T20] ( 10, 13.54) int -> [rbp-0x3C] spill-single-def "CSE - moderate"
; V60 cse1 [V60,T00] ( 6, 71.28) long -> [rbp-0x48] spill-single-def "CSE - aggressive"
;
@@ -401,12 +401,9 @@ G_M58711_IG22: ; bbWeight=0.08, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRe
; gcrRegs +[rdi]
mov r11, qword ptr [(reloc)]
cmp rdi, gword ptr [r15+r11]
- sete dil
- ; gcrRegs -[rdi]
- movzx rdi, dil
- test edi, edi
- je SHORT G_M58711_IG26
+ jne SHORT G_M58711_IG26
mov edi, r12d
+ ; gcrRegs -[rdi]
mov rdi, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[rdi]
lea r11, [(reloc)]
@@ -418,9 +415,9 @@ G_M58711_IG22: ; bbWeight=0.08, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRe
; GC ptr vars +{V46}
mov rdi, gword ptr [rbp-0x60]
; gcrRegs +[rdi]
- ;; size=183 bbWeight=0.08 PerfScore 5.12
-G_M58711_IG23: ; bbWeight=0.08, isz, extend
lea r11, [(reloc)]
+ ;; size=180 bbWeight=0.08 PerfScore 5.04
+G_M58711_IG23: ; bbWeight=0.08, isz, extend
; GC ptr vars -{V18}
call [r11]<unknown method>
; gcrRegs -[rdi]
@@ -436,7 +433,7 @@ G_M58711_IG23: ; bbWeight=0.08, isz, extend
test eax, eax
jne SHORT G_M58711_IG25
jmp SHORT G_M58711_IG26
- ;; size=29 bbWeight=0.08 PerfScore 0.88
+ ;; size=22 bbWeight=0.08 PerfScore 0.84
G_M58711_IG24: ; bbWeight=0.08, gcVars=0000000000002010 {V17 V18}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V04 V18}
mov esi, r12d
@@ -1056,7 +1053,7 @@ G_M58711_IG68: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=40 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2063, prolog size 31, PerfScore 1669.21, instruction count 555, allocated bytes for code 2063 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
+; Total bytes of code 2053, prolog size 31, PerfScore 1669.09, instruction count 552, allocated bytes for code 2053 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
; ============================================================
Unwind Info:
-8 (-0.19%) : 44551.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray
1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
@@ -54,7 +54,7 @@
; V42 tmp8 [V42,T07] ( 6, 48 ) ref -> [rbp-0x3A0] class-hnd "non-inline candidate call" <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol>
;* V43 tmp9 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V44 tmp10 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
-; V45 tmp11 [V45,T36] ( 2, 0.16) ubyte -> rdi "Inline return value spill temp"
+;* V45 tmp11 [V45,T36] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V46 tmp12 [V46,T11] ( 4, 32 ) ref -> [rbp-0x3A8] class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol>
;* V47 tmp13 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
; V48 tmp14 [V48,T25] ( 4, 16 ) ubyte -> rax "Inline return value spill temp"
@@ -708,13 +708,10 @@ G_M30062_IG32: ; bbWeight=0.08, extend
cmp dword ptr [rdi], edi
call [r11]<unknown method>
; gcrRegs -[rax rdi]
- xor edi, edi
cmp eax, 32
- setne dil
- test edi, edi
je G_M30062_IG41
jmp G_M30062_IG44
- ;; size=37 bbWeight=0.08 PerfScore 0.92
+ ;; size=29 bbWeight=0.08 PerfScore 0.80
G_M30062_IG33: ; bbWeight=0.08, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=4000 {r14}, byref, isz
lea rdi, [rbp-0x1D8]
mov rsi, qword ptr [rbp-0x380]
@@ -1495,7 +1492,7 @@ G_M30062_IG73: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 4277, prolog size 83, PerfScore 3137.91, instruction count 998, allocated bytes for code 4277 (MethodHash=40c98a91) for method Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
+; Total bytes of code 4269, prolog size 83, PerfScore 3137.79, instruction count 995, allocated bytes for code 4269 (MethodHash=40c98a91) for method Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
; ============================================================
Unwind Info:
libraries.pmi.linux.x64.checked.mch
-23 (-6.35%) : 201770.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,System.Nullable
1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,System.Nullable
1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 17 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
+; V00 this [V00,T04] ( 7, 16 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
; V01 arg1 [V01,T17] ( 4, 4 ) ref -> r15 class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
-; V02 arg2 [V02,T20] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V02 arg2 [V02,T19] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V03 loc0 [V03 ] ( 3, 11 ) struct (24) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SmallDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
; V04 loc1 [V04,T10] ( 4, 8 ) struct (16) [rbp-0x58] do-not-enreg[SFR] multireg-ret must-init ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,33 +27,30 @@
; V16 tmp11 [V16 ] ( 3, 11 ) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V03._stack (fldOffset=0x0)" P-DEP
; V17 tmp12 [V17 ] ( 3, 11 ) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V03._next (fldOffset=0x8)" P-DEP
; V18 tmp13 [V18 ] ( 3, 11 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x10)" P-DEP
-; V19 tmp14 [V19,T25] ( 2, 4 ) ubyte -> r12 "field V11.hasValue (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T26] ( 2, 4 ) int -> [rbp-0x74] spill-single-def "field V11.value (fldOffset=0x4)" P-INDEP
+; V19 tmp14 [V19,T23] ( 2, 4 ) ubyte -> r12 "field V11.hasValue (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T24] ( 2, 4 ) int -> [rbp-0x74] spill-single-def "field V11.value (fldOffset=0x4)" P-INDEP
; V21 tmp16 [V21 ] ( 2, 4 ) ref -> [rbp-0x70] do-not-enreg[X] addr-exposed "field V12._stack (fldOffset=0x0)" P-DEP
; V22 tmp17 [V22 ] ( 2, 4 ) ref -> [rbp-0x68] do-not-enreg[X] addr-exposed "field V12._next (fldOffset=0x8)" P-DEP
; V23 tmp18 [V23 ] ( 2, 4 ) ref -> [rbp-0x60] do-not-enreg[X] addr-exposed "field V12._current (fldOffset=0x10)" P-DEP
-; V24 tmp19 [V24,T27] ( 2, 4 ) long -> rsi "argument with side effect"
+; V24 tmp19 [V24,T25] ( 2, 4 ) long -> rsi "argument with side effect"
; V25 tmp20 [V25,T03] ( 2, 32 ) long -> rsi "argument with side effect"
; V26 tmp21 [V26,T14] ( 2, 8 ) long -> rsi "argument with side effect"
; V27 tmp22 [V27,T07] ( 3, 12 ) struct ( 8) [rbp-0x80] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
; V28 tmp23 [V28,T15] ( 2, 8 ) int -> rsi "argument with side effect"
; V29 tmp24 [V29,T12] ( 2, 8 ) ref -> rdi "argument with side effect"
; V30 tmp25 [V30,T13] ( 2, 8 ) ref -> rdx "argument with side effect"
-; V31 cse0 [V31,T23] ( 3, 4 ) long -> r13 "CSE - moderate"
-;* V32 cse1 [V32,T29] ( 0, 0 ) long -> zero-ref "CSE - moderate"
+; V31 cse0 [V31,T21] ( 3, 4 ) long -> r13 "CSE - moderate"
+;* V32 cse1 [V32,T26] ( 0, 0 ) long -> zero-ref "CSE - moderate"
; V33 cse2 [V33,T16] ( 4, 4.40) long -> r14 "CSE - moderate"
-; V34 rat0 [V34,T21] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V35 rat1 [V35,T24] ( 3, 4 ) long -> r13 "runtime lookup"
+; V34 rat0 [V34,T20] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V35 rat1 [V35,T22] ( 3, 4 ) long -> r13 "runtime lookup"
; V36 rat2 [V36,T18] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
-; V37 rat3 [V37,T22] ( 2, 4 ) long -> rdi "Spilling to split statement for tree"
-;* V38 rat4 [V38,T28] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V39 rat5 [V39,T19] ( 2, 4 ) long -> rdi "fgMakeTemp is creating a new local variable"
-;* V40 rat6 [V40,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V41 rat7 [V41,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V42 rat8 [V42,T09] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
-; V43 rat9 [V43,T01] ( 3, 35.20) long -> rdi "Spilling to split statement for tree"
-; V44 rat10 [V44,T02] ( 3, 32 ) long -> rsi "runtime lookup"
-; V45 rat11 [V45,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
+;* V37 rat3 [V37,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V38 rat4 [V38,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V39 rat5 [V39,T09] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
+; V40 rat6 [V40,T01] ( 3, 35.20) long -> rdi "Spilling to split statement for tree"
+; V41 rat7 [V41,T02] ( 3, 32 ) long -> rsi "runtime lookup"
+; V42 rat8 [V42,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 88
@@ -117,14 +114,8 @@ G_M14191_IG06: ; bbWeight=1, nogc, extend
mov qword ptr [rbp-0x38], rdi
;; size=18 bbWeight=1 PerfScore 6.00
G_M14191_IG07: ; bbWeight=1, isz, extend
- mov rdi, qword ptr [rbx]
- mov rdi, qword ptr [rdi+0x38]
- mov rdi, qword ptr [rdi]
- mov rdi, qword ptr [rdi+0x58]
- test rdi, rdi
- jne G_M14191_IG12
jmp SHORT G_M14191_IG12
- ;; size=25 bbWeight=1 PerfScore 11.25
+ ;; size=2 bbWeight=1 PerfScore 2.00
G_M14191_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, r13
lea rdi, [rbp-0x48]
@@ -208,7 +199,7 @@ G_M14191_IG16: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 362, prolog size 44, PerfScore 247.33, instruction count 99, allocated bytes for code 362 (MethodHash=ea3fc890) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 339, prolog size 44, PerfScore 238.08, instruction count 93, allocated bytes for code 339 (MethodHash=ea3fc890) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
-23 (-6.35%) : 219384.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,System.Nullable
1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,System.Nullable
1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 17 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
+; V00 this [V00,T04] ( 7, 16 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
; V01 arg1 [V01,T17] ( 4, 4 ) ref -> r15 class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
-; V02 arg2 [V02,T20] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V02 arg2 [V02,T19] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V03 loc0 [V03 ] ( 3, 11 ) struct (24) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SmallDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
; V04 loc1 [V04,T10] ( 4, 8 ) struct (16) [rbp-0x58] do-not-enreg[SFR] multireg-ret must-init ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,33 +27,30 @@
; V16 tmp11 [V16 ] ( 3, 11 ) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V03._stack (fldOffset=0x0)" P-DEP
; V17 tmp12 [V17 ] ( 3, 11 ) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V03._next (fldOffset=0x8)" P-DEP
; V18 tmp13 [V18 ] ( 3, 11 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x10)" P-DEP
-; V19 tmp14 [V19,T25] ( 2, 4 ) ubyte -> r12 "field V11.hasValue (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T26] ( 2, 4 ) int -> [rbp-0x74] spill-single-def "field V11.value (fldOffset=0x4)" P-INDEP
+; V19 tmp14 [V19,T23] ( 2, 4 ) ubyte -> r12 "field V11.hasValue (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T24] ( 2, 4 ) int -> [rbp-0x74] spill-single-def "field V11.value (fldOffset=0x4)" P-INDEP
; V21 tmp16 [V21 ] ( 2, 4 ) ref -> [rbp-0x70] do-not-enreg[X] addr-exposed "field V12._stack (fldOffset=0x0)" P-DEP
; V22 tmp17 [V22 ] ( 2, 4 ) ref -> [rbp-0x68] do-not-enreg[X] addr-exposed "field V12._next (fldOffset=0x8)" P-DEP
; V23 tmp18 [V23 ] ( 2, 4 ) ref -> [rbp-0x60] do-not-enreg[X] addr-exposed "field V12._current (fldOffset=0x10)" P-DEP
-; V24 tmp19 [V24,T27] ( 2, 4 ) long -> rsi "argument with side effect"
+; V24 tmp19 [V24,T25] ( 2, 4 ) long -> rsi "argument with side effect"
; V25 tmp20 [V25,T03] ( 2, 32 ) long -> rsi "argument with side effect"
; V26 tmp21 [V26,T14] ( 2, 8 ) long -> rsi "argument with side effect"
; V27 tmp22 [V27,T07] ( 3, 12 ) struct ( 8) [rbp-0x80] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
; V28 tmp23 [V28,T15] ( 2, 8 ) int -> rsi "argument with side effect"
; V29 tmp24 [V29,T12] ( 2, 8 ) ref -> rdi "argument with side effect"
; V30 tmp25 [V30,T13] ( 2, 8 ) ref -> rdx "argument with side effect"
-; V31 cse0 [V31,T23] ( 3, 4 ) long -> r13 "CSE - moderate"
-;* V32 cse1 [V32,T29] ( 0, 0 ) long -> zero-ref "CSE - moderate"
+; V31 cse0 [V31,T21] ( 3, 4 ) long -> r13 "CSE - moderate"
+;* V32 cse1 [V32,T26] ( 0, 0 ) long -> zero-ref "CSE - moderate"
; V33 cse2 [V33,T16] ( 4, 4.40) long -> r14 "CSE - moderate"
-; V34 rat0 [V34,T21] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V35 rat1 [V35,T24] ( 3, 4 ) long -> r13 "runtime lookup"
+; V34 rat0 [V34,T20] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V35 rat1 [V35,T22] ( 3, 4 ) long -> r13 "runtime lookup"
; V36 rat2 [V36,T18] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
-; V37 rat3 [V37,T22] ( 2, 4 ) long -> rdi "Spilling to split statement for tree"
-;* V38 rat4 [V38,T28] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V39 rat5 [V39,T19] ( 2, 4 ) long -> rdi "fgMakeTemp is creating a new local variable"
-;* V40 rat6 [V40,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V41 rat7 [V41,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V42 rat8 [V42,T09] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
-; V43 rat9 [V43,T01] ( 3, 35.20) long -> rdi "Spilling to split statement for tree"
-; V44 rat10 [V44,T02] ( 3, 32 ) long -> rsi "runtime lookup"
-; V45 rat11 [V45,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
+;* V37 rat3 [V37,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V38 rat4 [V38,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V39 rat5 [V39,T09] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
+; V40 rat6 [V40,T01] ( 3, 35.20) long -> rdi "Spilling to split statement for tree"
+; V41 rat7 [V41,T02] ( 3, 32 ) long -> rsi "runtime lookup"
+; V42 rat8 [V42,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 88
@@ -117,14 +114,8 @@ G_M14191_IG06: ; bbWeight=1, nogc, extend
mov qword ptr [rbp-0x38], rdi
;; size=18 bbWeight=1 PerfScore 6.00
G_M14191_IG07: ; bbWeight=1, isz, extend
- mov rdi, qword ptr [rbx]
- mov rdi, qword ptr [rdi+0x38]
- mov rdi, qword ptr [rdi]
- mov rdi, qword ptr [rdi+0x58]
- test rdi, rdi
- jne G_M14191_IG12
jmp SHORT G_M14191_IG12
- ;; size=25 bbWeight=1 PerfScore 11.25
+ ;; size=2 bbWeight=1 PerfScore 2.00
G_M14191_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, r13
lea rdi, [rbp-0x48]
@@ -208,7 +199,7 @@ G_M14191_IG16: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 362, prolog size 44, PerfScore 247.33, instruction count 99, allocated bytes for code 362 (MethodHash=ea3fc890) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 339, prolog size 44, PerfScore 238.08, instruction count 93, allocated bytes for code 339 (MethodHash=ea3fc890) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
-30 (-4.27%) : 240804.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
@@ -8,18 +8,18 @@
; 2 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 9, 15 ) ref -> [rbp-0x138] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]>
+; V00 this [V00,T04] ( 8, 14 ) ref -> [rbp-0x138] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]>
; V01 arg1 [V01,T05] ( 8, 12 ) ref -> rbx class-hnd single-def <System.Array>
; V02 arg2 [V02,T08] ( 6, 8 ) int -> registers
; V03 loc0 [V03 ] ( 5, 12 ) struct (128) [rbp-0xB0] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
-; V04 loc1 [V04,T23] ( 2, 4 ) ref -> r13 class-hnd <System.__Canon>
+; V04 loc1 [V04,T21] ( 2, 4 ) ref -> r13 class-hnd <System.__Canon>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V09 tmp4 [V09,T07] ( 3, 12 ) int -> r15 "impSpillLclRefs"
;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V11 tmp6 [V11,T20] ( 6, 4 ) long -> rax "Indirect call through function pointer"
+; V11 tmp6 [V11,T18] ( 6, 4 ) long -> rax "Indirect call through function pointer"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V14 tmp9 [V14 ] ( 2, 4 ) struct (128) [rbp-0x130] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
@@ -29,27 +29,24 @@
; V18 tmp13 [V18,T13] ( 3, 6 ) int -> rdi "Inline stloc first use temp"
; V19 tmp14 [V19,T06] ( 3, 12 ) byref -> [rbp-0x140] spill-single-def "Inlining Arg"
;* V20 tmp15 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp16 [V21,T29] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V22 tmp17 [V22,T24] ( 2, 4 ) long -> rsi "argument with side effect"
+; V21 tmp16 [V21,T26] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V22 tmp17 [V22,T22] ( 2, 4 ) long -> rsi "argument with side effect"
; V23 tmp18 [V23,T03] ( 2, 32 ) long -> rsi "argument with side effect"
; V24 tmp19 [V24,T09] ( 2, 8 ) long -> rsi "argument with side effect"
; V25 tmp20 [V25,T10] ( 2, 8 ) long -> rdx "argument with side effect"
-; V26 PSPSym [V26,T26] ( 1, 1 ) long -> [rbp-0x150] do-not-enreg[V] "PSPSym"
-; V27 cse0 [V27,T21] ( 3, 4 ) long -> r14 "CSE - moderate"
+; V26 PSPSym [V26,T23] ( 1, 1 ) long -> [rbp-0x150] do-not-enreg[V] "PSPSym"
+; V27 cse0 [V27,T19] ( 3, 4 ) long -> r14 "CSE - moderate"
; V28 cse1 [V28,T11] ( 3, 6 ) ref -> rsi "CSE - moderate"
-; V29 rat0 [V29,T17] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
-; V30 rat1 [V30,T22] ( 3, 4 ) long -> r14 "runtime lookup"
+; V29 rat0 [V29,T16] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
+; V30 rat1 [V30,T20] ( 3, 4 ) long -> r14 "runtime lookup"
; V31 rat2 [V31,T14] ( 3, 5.60) long -> r14 "fgMakeTemp is creating a new local variable"
-; V32 rat3 [V32,T18] ( 2, 4 ) long -> rsi "Spilling to split statement for tree"
-;* V33 rat4 [V33,T25] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V34 rat5 [V34,T15] ( 2, 4 ) long -> rsi "fgMakeTemp is creating a new local variable"
-; V35 rat6 [V35,T01] ( 3, 35.20) long -> rsi "Spilling to split statement for tree"
-; V36 rat7 [V36,T02] ( 3, 32 ) long -> rsi "runtime lookup"
-; V37 rat8 [V37,T00] ( 3, 44.80) long -> rax "fgMakeTemp is creating a new local variable"
-; V38 rat9 [V38,T19] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
-; V39 rat10 [V39,T16] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V40 rat11 [V40,T27] ( 3, 0 ) long -> rsi "Spilling to split statement for tree"
-; V41 rat12 [V41,T28] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V32 rat3 [V32,T01] ( 3, 35.20) long -> rsi "Spilling to split statement for tree"
+; V33 rat4 [V33,T02] ( 3, 32 ) long -> rsi "runtime lookup"
+; V34 rat5 [V34,T00] ( 3, 44.80) long -> rax "fgMakeTemp is creating a new local variable"
+; V35 rat6 [V35,T17] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
+; V36 rat7 [V36,T15] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V37 rat8 [V37,T24] ( 3, 0 ) long -> rsi "Spilling to split statement for tree"
+; V38 rat9 [V38,T25] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 296
@@ -131,18 +128,9 @@ G_M30256_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=51 bbWeight=1 PerfScore 33.25
G_M30256_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rsi rdi]
- mov rdi, gword ptr [rbp-0x138]
- ; gcrRegs +[rdi]
- mov rsi, qword ptr [rdi]
- mov rsi, qword ptr [rsi+0x38]
- mov rsi, qword ptr [rsi]
- mov rsi, qword ptr [rsi+0x50]
- test rsi, rsi
- jne G_M30256_IG10
jmp SHORT G_M30256_IG10
- ;; size=32 bbWeight=1 PerfScore 12.25
+ ;; size=2 bbWeight=1 PerfScore 2.00
G_M30256_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
mov rsi, r14
lea rdi, [rbp-0xB0]
call [System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this]
@@ -194,17 +182,17 @@ G_M30256_IG09: ; bbWeight=2, gcVars=0000000000000010 {V00}, gcrefRegs=200
; gcrRegs -[rsi rdi r13]
; gcr arg pop 0
mov r15d, r12d
+ ;; size=29 bbWeight=2 PerfScore 11.00
+G_M30256_IG10: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbp-0x138]
; gcrRegs +[rdi]
- ;; size=36 bbWeight=2 PerfScore 13.00
-G_M30256_IG10: ; bbWeight=8, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
mov rsi, qword ptr [rdi]
mov rax, qword ptr [rsi+0x38]
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x50]
test rax, rax
je SHORT G_M30256_IG12
- ;; size=19 bbWeight=8 PerfScore 74.00
+ ;; size=26 bbWeight=8 PerfScore 82.00
G_M30256_IG11: ; bbWeight=6.40, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
mov rsi, rax
@@ -349,7 +337,7 @@ G_M30256_IG28: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 703, prolog size 96, PerfScore 293.88, instruction count 178, allocated bytes for code 703 (MethodHash=c83889cf) for method System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
+; Total bytes of code 673, prolog size 96, PerfScore 289.63, instruction count 171, allocated bytes for code 673 (MethodHash=c83889cf) for method System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 237399.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary2[System.__Canon,System.Nullable
1[int]]:TrimExcess(int):this (FullOpts)
@@ -10,9 +10,9 @@
;
; V00 this [V00,T02] ( 17, 19.50) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.Nullable`1[int]]>
; V01 arg1 [V01,T16] ( 4, 4 ) int -> rsi single-def
-; V02 loc0 [V02,T27] ( 3, 2.50) int -> r15 single-def
+; V02 loc0 [V02,T26] ( 3, 2.50) int -> r15 single-def
; V03 loc1 [V03 ] ( 5, 12 ) struct (16) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.Nullable`1[int]]]>
-; V04 loc2 [V04,T29] ( 2, 2 ) int -> rdi single-def
+; V04 loc2 [V04,T27] ( 2, 2 ) int -> rdi single-def
; V05 loc3 [V05,T22] ( 3, 5 ) int -> r13 single-def
; V06 loc4 [V06 ] ( 2, 2.50) struct (16) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.Nullable`1[int]]]>
; V07 loc5 [V07,T15] ( 5, 7 ) int -> r15
@@ -48,17 +48,14 @@
; V37 tmp26 [V37,T10] ( 3, 12 ) int -> rcx "index expr"
; V38 tmp27 [V38,T11] ( 3, 12 ) int -> rdi "index expr"
; V39 cse0 [V39,T12] ( 4, 9 ) long -> r14 "CSE - moderate"
-;* V40 cse1 [V40,T30] ( 0, 0 ) long -> zero-ref "CSE - moderate"
+;* V40 cse1 [V40,T28] ( 0, 0 ) long -> zero-ref "CSE - moderate"
; V41 cse2 [V41,T19] ( 3, 6 ) int -> r15 "CSE - moderate"
; V42 rat0 [V42,T23] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
; V43 rat1 [V43,T24] ( 3, 4 ) long -> r14 "runtime lookup"
; V44 rat2 [V44,T21] ( 3, 5.60) long -> r14 "fgMakeTemp is creating a new local variable"
-;* V45 rat3 [V45,T28] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V46 rat4 [V46,T31] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V47 rat5 [V47,T26] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V48 rat6 [V48,T03] ( 3, 17.60) long -> rdi "Spilling to split statement for tree"
-; V49 rat7 [V49,T04] ( 3, 16 ) long -> rsi "runtime lookup"
-; V50 rat8 [V50,T01] ( 3, 22.40) long -> rsi "fgMakeTemp is creating a new local variable"
+; V45 rat3 [V45,T03] ( 3, 17.60) long -> rdi "Spilling to split statement for tree"
+; V46 rat4 [V46,T04] ( 3, 16 ) long -> rsi "runtime lookup"
+; V47 rat5 [V47,T01] ( 3, 22.40) long -> rsi "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 72
+0 (0.00%) : 211824.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:TrimExcess():this (FullOpts)
@@ -9,10 +9,10 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 17, 19.50) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]>
-; V01 loc0 [V01,T27] ( 3, 2.50) int -> r15 single-def
-; V02 loc1 [V02,T28] ( 3, 2.50) int -> r14 single-def
+; V01 loc0 [V01,T26] ( 3, 2.50) int -> r15 single-def
+; V02 loc1 [V02,T27] ( 3, 2.50) int -> r14 single-def
; V03 loc2 [V03 ] ( 5, 12 ) struct (16) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1+Entry[System.__Canon]]>
-; V04 loc3 [V04,T30] ( 2, 2 ) int -> rdi single-def
+; V04 loc3 [V04,T28] ( 2, 2 ) int -> rdi single-def
; V05 loc4 [V05,T21] ( 3, 5 ) int -> r12 single-def
; V06 loc5 [V06 ] ( 2, 2.50) struct (16) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1+Entry[System.__Canon]]>
; V07 loc6 [V07,T16] ( 4, 6.50) int -> r14
@@ -33,9 +33,9 @@
; V22 tmp11 [V22,T08] ( 3, 12 ) ref -> rax class-hnd "impAppendStmt" <<unknown class>>
; V23 tmp12 [V23,T09] ( 3, 12 ) ref -> rax class-hnd "impAppendStmt" <<unknown class>>
;* V24 tmp13 [V24 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V25 tmp14 [V25,T31] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V25 tmp14 [V25,T29] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V26 tmp15 [V26 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V27 tmp16 [V27,T32] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V27 tmp16 [V27,T30] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V28 tmp17 [V28 ] ( 4, 11 ) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V29 tmp18 [V29 ] ( 5, 12 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
; V30 tmp19 [V30 ] ( 2, 2.50) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V06._items (fldOffset=0x0)" P-DEP
@@ -53,12 +53,9 @@
; V42 rat0 [V42,T22] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
; V43 rat1 [V43,T23] ( 3, 4 ) long -> r13 "runtime lookup"
; V44 rat2 [V44,T20] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
-;* V45 rat3 [V45,T29] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V46 rat4 [V46,T33] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V47 rat5 [V47,T26] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V48 rat6 [V48,T03] ( 3, 17.60) long -> rdi "Spilling to split statement for tree"
-; V49 rat7 [V49,T04] ( 3, 16 ) long -> rsi "runtime lookup"
-; V50 rat8 [V50,T01] ( 3, 22.40) long -> rsi "fgMakeTemp is creating a new local variable"
+; V45 rat3 [V45,T03] ( 3, 17.60) long -> rdi "Spilling to split statement for tree"
+; V46 rat4 [V46,T04] ( 3, 16 ) long -> rsi "runtime lookup"
+; V47 rat5 [V47,T01] ( 3, 22.40) long -> rsi "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 56
@@ -138,8 +135,8 @@ G_M32039_IG11: ; bbWeight=0.50, extend
xor eax, eax
mov dword ptr [rbp-0x54], eax
test r12d, r12d
- jle G_M32039_IG18
mov eax, dword ptr [rbp-0x54]
+ jle G_M32039_IG18
;; size=20 bbWeight=0.50 PerfScore 1.88
G_M32039_IG12: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rbx]
+0 (0.00%) : 292892.dasm - System.Collections.Concurrent.ConcurrentDictionary2[System.__Canon,System.Nullable
1[int]]:CopyToObjects(System.Object[],int):this (FullOpts)
@@ -11,7 +11,7 @@
; V00 this [V00,T10] ( 4, 4 ) ref -> r15 this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.Nullable`1[int]]>
; V01 arg1 [V01,T11] ( 3, 18 ) ref -> r14 class-hnd single-def <System.Object[]>
; V02 arg2 [V02,T05] ( 5, 50 ) int -> rbx
-; V03 loc0 [V03,T17] ( 3, 6 ) ref -> r13 class-hnd exact single-def <<unknown class>>
+; V03 loc0 [V03,T15] ( 3, 6 ) ref -> r13 class-hnd exact single-def <<unknown class>>
; V04 loc1 [V04,T12] ( 5, 17 ) int -> r12
;* V05 loc2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Concurrent.ConcurrentDictionary`2+VolatileNode[System.__Canon,System.Nullable`1[int]]>
; V06 loc3 [V06,T01] ( 8,104 ) ref -> [rbp-0x50] class-hnd <<unknown class>>
@@ -22,23 +22,20 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V12 tmp5 [V12,T04] ( 2, 64 ) ref -> [rbp-0x60] class-hnd spill-single-def "Inlining Arg" <System.__Canon>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Nullable`1[int]>
-; V14 tmp7 [V14,T16] ( 2, 8 ) ref -> rdx "field V05._node (fldOffset=0x0)" P-INDEP
+; V14 tmp7 [V14,T14] ( 2, 8 ) ref -> rdx "field V05._node (fldOffset=0x0)" P-INDEP
; V15 tmp8 [V15,T06] ( 2, 32 ) ubyte -> r8 "field V13.hasValue (fldOffset=0x0)" P-INDEP
; V16 tmp9 [V16,T07] ( 2, 32 ) int -> [rbp-0x34] spill-single-def "field V13.value (fldOffset=0x4)" P-INDEP
;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref "V08.[000..008)"
; V18 tmp11 [V18,T08] ( 2, 32 ) ubyte -> [rbp-0x38] spill-single-def "V08.[008..009)"
;* V19 tmp12 [V19 ] ( 0, 0 ) int -> zero-ref "V08.[012..016)"
; V20 cse0 [V20,T13] ( 2, 17 ) long -> [rbp-0x40] spill-single-def hoist "CSE - moderate"
-; V21 cse1 [V21,T18] ( 3, 6 ) int -> [rbp-0x44] spill-single-def "CSE - moderate"
-; V22 rat0 [V22,T20] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V23 rat1 [V23,T21] ( 3, 4 ) long -> registers "runtime lookup"
-; V24 rat2 [V24,T19] ( 3, 5.60) long -> rcx "fgMakeTemp is creating a new local variable"
-;* V25 rat3 [V25,T15] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V26 rat4 [V26,T22] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V27 rat5 [V27,T14] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V28 rat6 [V28,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V29 rat7 [V29,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V30 rat8 [V30,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V21 cse1 [V21,T16] ( 3, 6 ) int -> [rbp-0x44] spill-single-def "CSE - moderate"
+; V22 rat0 [V22,T18] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V23 rat1 [V23,T19] ( 3, 4 ) long -> registers "runtime lookup"
+; V24 rat2 [V24,T17] ( 3, 5.60) long -> rcx "fgMakeTemp is creating a new local variable"
+;* V25 rat3 [V25,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V26 rat4 [V26,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V27 rat5 [V27,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 56
libraries_tests.run.linux.x64.Release.mch
-26 (-3.67%) : 228820.dasm - System.Collections.Immutable.ImmutableList1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer
1[System.__Canon]):int:this (Tier1)
@@ -9,7 +9,7 @@
; 4 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T09] ( 9, 10.07) ref -> [rbp-0x88] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
+; V00 this [V00,T09] ( 8, 9.07) ref -> [rbp-0x88] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
; V01 arg1 [V01,T13] ( 3, 5.29) ref -> r13 class-hnd single-def <System.__Canon>
; V02 arg2 [V02,T08] ( 8, 10.98) int -> rbx
; V03 arg3 [V03,T11] ( 6, 6 ) int -> r14 single-def
@@ -23,37 +23,34 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V12 tmp5 [V12,T01] ( 4, 19.77) long -> [rbp-0x78] "VirtualCall with runtime lookup"
;* V13 tmp6 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V14 tmp7 [V14,T19] ( 6, 4 ) long -> rax "Indirect call through function pointer"
+; V14 tmp7 [V14,T17] ( 6, 4 ) long -> rax "Indirect call through function pointer"
;* V15 tmp8 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp10 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp13 [V20,T31] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V21 tmp14 [V21,T32] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V22 tmp15 [V22,T21] ( 2, 4 ) long -> rsi "argument with side effect"
+; V20 tmp13 [V20,T28] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V21 tmp14 [V21,T29] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V22 tmp15 [V22,T19] ( 2, 4 ) long -> rsi "argument with side effect"
; V23 tmp16 [V23,T05] ( 2, 14.74) long -> rsi "argument with side effect"
; V24 tmp17 [V24,T06] ( 2, 13.18) ref -> rdx "argument with side effect"
-; V25 PSPSym [V25,T27] ( 1, 1 ) long -> [rbp-0x98] do-not-enreg[V] "PSPSym"
-; V26 cse0 [V26,T16] ( 3, 5.29) long -> [rbp-0x80] spill-single-def "CSE - moderate"
-; V27 cse1 [V27,T23] ( 3, 3 ) int -> rsi "CSE - moderate"
+; V25 PSPSym [V25,T24] ( 1, 1 ) long -> [rbp-0x98] do-not-enreg[V] "PSPSym"
+; V26 cse0 [V26,T15] ( 3, 5.29) long -> [rbp-0x80] spill-single-def "CSE - moderate"
+; V27 cse1 [V27,T21] ( 3, 3 ) int -> rsi "CSE - moderate"
; V28 cse2 [V28,T12] ( 10, 7.47) long -> r12 multi-def "CSE - moderate"
-; V29 rat0 [V29,T28] ( 3, 0 ) long -> rsi "Spilling to split statement for tree"
-; V30 rat1 [V30,T29] ( 3, 0 ) long -> rax "runtime lookup"
-; V31 rat2 [V31,T30] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
-; V32 rat3 [V32,T17] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
-; V33 rat4 [V33,T20] ( 3, 4 ) long -> rax "runtime lookup"
+; V29 rat0 [V29,T25] ( 3, 0 ) long -> rsi "Spilling to split statement for tree"
+; V30 rat1 [V30,T26] ( 3, 0 ) long -> rax "runtime lookup"
+; V31 rat2 [V31,T27] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V32 rat3 [V32,T16] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
+; V33 rat4 [V33,T18] ( 3, 4 ) long -> rax "runtime lookup"
; V34 rat5 [V34,T14] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V35 rat6 [V35,T18] ( 2, 4 ) long -> rdi "Spilling to split statement for tree"
-;* V36 rat7 [V36,T25] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V37 rat8 [V37,T15] ( 2, 4 ) long -> rdi "fgMakeTemp is creating a new local variable"
-; V38 rat9 [V38,T02] ( 3, 18.45) long -> rcx "fgMakeTemp is creating a new local variable"
-; V39 rat10 [V39,T03] ( 3, 16.21) long -> rdi "Spilling to split statement for tree"
-; V40 rat11 [V40,T04] ( 3, 14.74) long -> rsi "runtime lookup"
-; V41 rat12 [V41,T00] ( 3, 20.63) long -> rsi "fgMakeTemp is creating a new local variable"
-; V42 rat13 [V42,T22] ( 3, 3.42) long -> rax "fgMakeTemp is creating a new local variable"
-; V43 rat14 [V43,T26] ( 3, 1.71) long -> rdi "Spilling to split statement for tree"
-; V44 rat15 [V44,T24] ( 3, 2.18) long -> rax "fgMakeTemp is creating a new local variable"
+; V35 rat6 [V35,T02] ( 3, 18.45) long -> rcx "fgMakeTemp is creating a new local variable"
+; V36 rat7 [V36,T03] ( 3, 16.21) long -> rdi "Spilling to split statement for tree"
+; V37 rat8 [V37,T04] ( 3, 14.74) long -> rsi "runtime lookup"
+; V38 rat9 [V38,T00] ( 3, 20.63) long -> rsi "fgMakeTemp is creating a new local variable"
+; V39 rat10 [V39,T20] ( 3, 3.42) long -> rax "fgMakeTemp is creating a new local variable"
+; V40 rat11 [V40,T23] ( 3, 1.71) long -> rdi "Spilling to split statement for tree"
+; V41 rat12 [V41,T22] ( 3, 2.18) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 120
@@ -85,17 +82,17 @@ G_M57893_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M57893_IG02: ; bbWeight=1, gcVars=0000000000000200 {V00}, gcrefRegs=A080 {rdi r13 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi]
test ebx, ebx
- jl G_M57893_IG27
+ jl G_M57893_IG26
test r14d, r14d
- jl G_M57893_IG28
+ jl G_M57893_IG27
mov esi, dword ptr [rdi+0x20]
cmp r14d, esi
- jg G_M57893_IG28
+ jg G_M57893_IG27
lea eax, [rbx+r14]
cmp eax, esi
- jg G_M57893_IG28
+ jg G_M57893_IG27
test r15, r15
- je G_M57893_IG29
+ je G_M57893_IG28
;; size=50 bbWeight=1 PerfScore 8.75
G_M57893_IG03: ; bbWeight=1, gcrefRegs=A080 {rdi r13 r15}, byrefRegs=0000 {}, byref, isz
mov r12, qword ptr [rdi]
@@ -134,34 +131,23 @@ G_M57893_IG06: ; bbWeight=1, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {},
nop
;; size=38 bbWeight=1 PerfScore 8.00
G_M57893_IG07: ; bbWeight=1, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref, isz
- mov rdx, gword ptr [rbp-0x88]
- ; gcrRegs +[rdx]
- mov rdi, qword ptr [rdx]
- mov rdi, qword ptr [rdi+0x38]
- mov rdi, qword ptr [rdi]
- mov rdi, qword ptr [rdi+0x10]
- test rdi, rdi
- jne SHORT G_M57893_IG14
- ;; size=26 bbWeight=1 PerfScore 10.25
-G_M57893_IG08: ; bbWeight=0.50, gcrefRegs=A004 {rdx r13 r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M57893_IG14
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M57893_IG09: ; bbWeight=3.29, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdx]
+ jmp SHORT G_M57893_IG13
+ ;; size=2 bbWeight=1 PerfScore 2.00
+G_M57893_IG08: ; bbWeight=3.29, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref, isz
mov r14, qword ptr [rbp-0x80]
mov qword ptr [rbp-0x70], r14
mov rdi, qword ptr [r12+0x38]
mov rdi, qword ptr [rdi]
mov rcx, qword ptr [rdi+0x18]
test rcx, rcx
- je SHORT G_M57893_IG11
+ je SHORT G_M57893_IG10
;; size=25 bbWeight=3.29 PerfScore 30.48
-G_M57893_IG10: ; bbWeight=2.64, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M57893_IG09: ; bbWeight=2.64, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref, isz
mov rax, qword ptr [rbp-0x70]
mov qword ptr [rbp-0x78], rcx
- jmp SHORT G_M57893_IG12
+ jmp SHORT G_M57893_IG11
;; size=10 bbWeight=2.64 PerfScore 10.54
-G_M57893_IG11: ; bbWeight=0.66, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref
+G_M57893_IG10: ; bbWeight=0.66, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref
mov rdi, r12
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
@@ -169,7 +155,7 @@ G_M57893_IG11: ; bbWeight=0.66, gcrefRegs=A000 {r13 r15}, byrefRegs=0000
mov qword ptr [rbp-0x78], rax
mov rax, qword ptr [rbp-0x70]
;; size=26 bbWeight=0.66 PerfScore 2.31
-G_M57893_IG12: ; bbWeight=3.29, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M57893_IG11: ; bbWeight=3.29, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref, isz
lea rdi, [rbp-0x68]
mov rsi, rax
call [System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this]
@@ -186,69 +172,69 @@ G_M57893_IG12: ; bbWeight=3.29, gcrefRegs=A000 {r13 r15}, byrefRegs=0000
; gcrRegs -[rax rdx rsi rdi]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M57893_IG20
+ jne SHORT G_M57893_IG19
;; size=33 bbWeight=3.29 PerfScore 32.12
-G_M57893_IG13: ; bbWeight=2.68, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref
+G_M57893_IG12: ; bbWeight=2.68, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref
inc ebx
+ ;; size=2 bbWeight=2.68 PerfScore 0.67
+G_M57893_IG13: ; bbWeight=3.68, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rbp-0x88]
; gcrRegs +[rdx]
- ;; size=9 bbWeight=2.68 PerfScore 3.36
-G_M57893_IG14: ; bbWeight=3.68, gcrefRegs=A004 {rdx r13 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rdx]
mov rsi, qword ptr [rdi+0x38]
mov rsi, qword ptr [rsi]
mov rsi, qword ptr [rsi+0x10]
test rsi, rsi
- je SHORT G_M57893_IG16
- ;; size=19 bbWeight=3.68 PerfScore 34.08
-G_M57893_IG15: ; bbWeight=2.95, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M57893_IG15
+ ;; size=26 bbWeight=3.68 PerfScore 37.76
+G_M57893_IG14: ; bbWeight=2.95, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
- jmp SHORT G_M57893_IG17
+ jmp SHORT G_M57893_IG16
;; size=2 bbWeight=2.95 PerfScore 5.89
-G_M57893_IG16: ; bbWeight=0.74, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref
+G_M57893_IG15: ; bbWeight=0.74, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov rsi, rax
;; size=18 bbWeight=0.74 PerfScore 1.11
-G_M57893_IG17: ; bbWeight=3.68, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref
+G_M57893_IG16: ; bbWeight=3.68, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref
lea rdi, [rbp-0x68]
call [System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:MoveNext():ubyte:this]
; gcr arg pop 0
test eax, eax
- jne G_M57893_IG09
+ jne G_M57893_IG08
;; size=18 bbWeight=3.68 PerfScore 17.50
-G_M57893_IG18: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57893_IG17: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r13 r15]
mov rdi, rsp
- call G_M57893_IG32
+ call G_M57893_IG31
;; size=8 bbWeight=0.39 PerfScore 0.49
-G_M57893_IG19: ; bbWeight=0.39, nogc, isz, extend
- jmp SHORT G_M57893_IG25
+G_M57893_IG18: ; bbWeight=0.39, nogc, isz, extend
+ jmp SHORT G_M57893_IG24
;; size=2 bbWeight=0.39 PerfScore 0.78
-G_M57893_IG20: ; bbWeight=0.61, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M57893_IG19: ; bbWeight=0.61, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [r12+0x38]
mov rdi, qword ptr [rdi]
mov rax, qword ptr [rdi+0x20]
test rax, rax
- je SHORT G_M57893_IG22
+ je SHORT G_M57893_IG21
;; size=17 bbWeight=0.61 PerfScore 4.43
-G_M57893_IG21: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M57893_IG23
+G_M57893_IG20: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M57893_IG22
;; size=2 bbWeight=0.49 PerfScore 0.98
-G_M57893_IG22: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57893_IG21: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, r12
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
;; size=18 bbWeight=0.12 PerfScore 0.18
-G_M57893_IG23: ; bbWeight=0.61, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57893_IG22: ; bbWeight=0.61, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rdi, [rbp-0x68]
call rax
; gcr arg pop 0
mov eax, ebx
;; size=8 bbWeight=0.61 PerfScore 2.29
-G_M57893_IG24: ; bbWeight=0.61, epilog, nogc, extend
+G_M57893_IG23: ; bbWeight=0.61, epilog, nogc, extend
add rsp, 120
pop rbx
pop r12
@@ -258,10 +244,10 @@ G_M57893_IG24: ; bbWeight=0.61, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.61 PerfScore 2.59
-G_M57893_IG25: ; bbWeight=0.39, gcVars=0000000000000200 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M57893_IG24: ; bbWeight=0.39, gcVars=0000000000000200 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1
;; size=5 bbWeight=0.39 PerfScore 0.10
-G_M57893_IG26: ; bbWeight=0.39, epilog, nogc, extend
+G_M57893_IG25: ; bbWeight=0.39, epilog, nogc, extend
add rsp, 120
pop rbx
pop r12
@@ -271,7 +257,7 @@ G_M57893_IG26: ; bbWeight=0.39, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.39 PerfScore 1.66
-G_M57893_IG27: ; bbWeight=0, gcVars=0000000000000200 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
...
-24 (-3.05%) : 726572.dasm - System.Collections.Immutable.ImmutableList1+Node[System.Collections.Generic.KeyValuePair
2[System.Canon,System.ValueTuple2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]]:IndexOf(System.Collections.Generic.KeyValuePair
2[System.Canon,System.ValueTuple2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]],int,int,System.Collections.Generic.IEqualityComparer
1[System.Collections.Generic.KeyValuePair2[System.__Canon,System.ValueTuple
2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]]):int:this (Tier1)
@@ -9,8 +9,8 @@
; 4 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 11, 8.92) ref -> [rbp-0x88] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]]>
-; V01 arg1 [V01,T26] ( 1, 0.92) struct (24) [rbp+0x10] do-not-enreg[S] single-def <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]>
+; V00 this [V00,T00] ( 10, 7.92) ref -> [rbp-0x88] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]]>
+; V01 arg1 [V01,T23] ( 1, 0.92) struct (24) [rbp+0x10] do-not-enreg[S] single-def <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]>
; V02 arg2 [V02,T02] ( 8, 5.92) int -> r15
; V03 arg3 [V03,T01] ( 6, 6 ) int -> rbx single-def
; V04 arg4 [V04,T03] ( 5, 3.92) ref -> r14 class-hnd <System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]]>
@@ -19,42 +19,39 @@
; V07 OutArgs [V07 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp3 [V10,T20] ( 2, 3.67) long -> rbx "spilling helperCall"
+; V10 tmp3 [V10,T18] ( 2, 3.67) long -> rbx "spilling helperCall"
;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V12 tmp5 [V12,T07] ( 4, 5.50) long -> r12 "VirtualCall with runtime lookup"
-; V13 tmp6 [V13,T21] ( 2, 3.67) struct (24) [rbp-0x80] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]>
+; V12 tmp5 [V12,T06] ( 4, 5.50) long -> r12 "VirtualCall with runtime lookup"
+; V13 tmp6 [V13,T19] ( 2, 3.67) struct (24) [rbp-0x80] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]>
;* V14 tmp7 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V15 tmp8 [V15,T15] ( 6, 4.00) long -> rax "Indirect call through function pointer"
+; V15 tmp8 [V15,T13] ( 6, 4.00) long -> rax "Indirect call through function pointer"
;* V16 tmp9 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V17 tmp10 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp14 [V21,T32] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V22 tmp15 [V22,T33] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V23 tmp16 [V23,T18] ( 2, 4 ) long -> rsi "argument with side effect"
-; V24 tmp17 [V24,T19] ( 2, 4 ) long -> rsi "argument with side effect"
-; V25 PSPSym [V25,T25] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym"
-; V26 cse0 [V26,T23] ( 3, 2.92) long -> r13 "CSE - moderate"
-; V27 cse1 [V27,T22] ( 3, 3 ) int -> rsi "CSE - moderate"
-; V28 rat0 [V28,T29] ( 3, 0 ) long -> rsi "Spilling to split statement for tree"
-; V29 rat1 [V29,T30] ( 3, 0 ) long -> rax "runtime lookup"
-; V30 rat2 [V30,T31] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
-; V31 rat3 [V31,T10] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
-; V32 rat4 [V32,T16] ( 3, 4 ) long -> r13 "runtime lookup"
+; V21 tmp14 [V21,T29] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V22 tmp15 [V22,T30] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V23 tmp16 [V23,T16] ( 2, 4 ) long -> rsi "argument with side effect"
+; V24 tmp17 [V24,T17] ( 2, 4 ) long -> rsi "argument with side effect"
+; V25 PSPSym [V25,T22] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym"
+; V26 cse0 [V26,T21] ( 3, 2.92) long -> r13 "CSE - moderate"
+; V27 cse1 [V27,T20] ( 3, 3 ) int -> rsi "CSE - moderate"
+; V28 rat0 [V28,T26] ( 3, 0 ) long -> rsi "Spilling to split statement for tree"
+; V29 rat1 [V29,T27] ( 3, 0 ) long -> rax "runtime lookup"
+; V30 rat2 [V30,T28] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V31 rat3 [V31,T09] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
+; V32 rat4 [V32,T14] ( 3, 4 ) long -> r13 "runtime lookup"
; V33 rat5 [V33,T04] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
-; V34 rat6 [V34,T11] ( 2, 4 ) long -> rdi "Spilling to split statement for tree"
-;* V35 rat7 [V35,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V36 rat8 [V36,T05] ( 2, 4 ) long -> rdi "fgMakeTemp is creating a new local variable"
-; V37 rat9 [V37,T13] ( 3, 4.04) long -> rdi "Spilling to split statement for tree"
-; V38 rat10 [V38,T08] ( 3, 5.14) long -> r12 "fgMakeTemp is creating a new local variable"
-; V39 rat11 [V39,T12] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V40 rat12 [V40,T17] ( 3, 4 ) long -> rsi "runtime lookup"
-; V41 rat13 [V41,T06] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
-; V42 rat14 [V42,T14] ( 3, 4.04) long -> rdi "Spilling to split statement for tree"
-; V43 rat15 [V43,T09] ( 3, 5.14) long -> rax "fgMakeTemp is creating a new local variable"
-; V44 rat16 [V44,T28] ( 3, 0.36) long -> rdi "Spilling to split statement for tree"
-; V45 rat17 [V45,T27] ( 3, 0.46) long -> rax "fgMakeTemp is creating a new local variable"
+; V34 rat6 [V34,T11] ( 3, 4.04) long -> rdi "Spilling to split statement for tree"
+; V35 rat7 [V35,T07] ( 3, 5.14) long -> r12 "fgMakeTemp is creating a new local variable"
+; V36 rat8 [V36,T10] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V37 rat9 [V37,T15] ( 3, 4 ) long -> rsi "runtime lookup"
+; V38 rat10 [V38,T05] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
+; V39 rat11 [V39,T12] ( 3, 4.04) long -> rdi "Spilling to split statement for tree"
+; V40 rat12 [V40,T08] ( 3, 5.14) long -> rax "fgMakeTemp is creating a new local variable"
+; V41 rat13 [V41,T25] ( 3, 0.36) long -> rdi "Spilling to split statement for tree"
+; V42 rat14 [V42,T24] ( 3, 0.46) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 152
@@ -83,17 +80,17 @@ G_M34862_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M34862_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi]
test r15d, r15d
- jl G_M34862_IG26
+ jl G_M34862_IG25
test ebx, ebx
- jl G_M34862_IG27
+ jl G_M34862_IG26
mov esi, dword ptr [rdi+0x18]
cmp ebx, esi
- jg G_M34862_IG27
+ jg G_M34862_IG26
lea eax, [r15+rbx]
cmp eax, esi
- jg G_M34862_IG27
+ jg G_M34862_IG26
test r14, r14
- je G_M34862_IG28
+ je G_M34862_IG27
;; size=49 bbWeight=1 PerfScore 8.75
G_M34862_IG03: ; bbWeight=1, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
mov rsi, qword ptr [rdi]
@@ -133,25 +130,18 @@ G_M34862_IG06: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byr
G_M34862_IG07: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
mov rdx, gword ptr [rbp-0x88]
; gcrRegs +[rdx]
- mov rdi, qword ptr [rdx]
- mov rdi, qword ptr [rdi+0x38]
- mov rdi, qword ptr [rdi]
- mov rdi, qword ptr [rdi+0x10]
- test rdi, rdi
- ;; size=24 bbWeight=1 PerfScore 9.25
-G_M34862_IG08: ; bbWeight=1, gcrefRegs=4004 {rdx r14}, byrefRegs=0000 {}, byref
mov rdi, qword ptr [rdx]
mov rsi, qword ptr [rdi+0x38]
mov rsi, qword ptr [rsi]
mov rsi, qword ptr [rsi+0x10]
test rsi, rsi
- je G_M34862_IG15
- ;; size=23 bbWeight=1 PerfScore 9.25
-G_M34862_IG09: ; bbWeight=0.80, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+ je G_M34862_IG14
+ ;; size=30 bbWeight=1 PerfScore 10.25
+G_M34862_IG08: ; bbWeight=0.80, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
- jmp G_M34862_IG16
+ jmp G_M34862_IG15
;; size=5 bbWeight=0.80 PerfScore 1.60
-G_M34862_IG10: ; bbWeight=0.92, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+G_M34862_IG09: ; bbWeight=0.92, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
mov rbx, r13
mov rdx, gword ptr [rbp-0x88]
; gcrRegs +[rdx]
@@ -160,19 +150,19 @@ G_M34862_IG10: ; bbWeight=0.92, gcrefRegs=4000 {r14}, byrefRegs=0000 {},
mov rsi, qword ptr [rsi]
mov r12, qword ptr [rsi+0x18]
test r12, r12
- je SHORT G_M34862_IG12
+ je SHORT G_M34862_IG11
;; size=29 bbWeight=0.92 PerfScore 9.63
-G_M34862_IG11: ; bbWeight=0.73, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+G_M34862_IG10: ; bbWeight=0.73, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
- jmp SHORT G_M34862_IG13
+ jmp SHORT G_M34862_IG12
;; size=2 bbWeight=0.73 PerfScore 1.47
-G_M34862_IG12: ; bbWeight=0.18, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M34862_IG11: ; bbWeight=0.18, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov r12, rax
;; size=18 bbWeight=0.18 PerfScore 0.28
-G_M34862_IG13: ; bbWeight=0.92, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+G_M34862_IG12: ; bbWeight=0.92, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
lea rdi, [rbp-0x68]
lea rsi, [rbp-0x80]
mov rdx, rbx
@@ -212,37 +202,34 @@ G_M34862_IG13: ; bbWeight=0.92, gcrefRegs=4000 {r14}, byrefRegs=0000 {},
; gcrRegs -[rcx rdi]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M34862_IG19
+ jne SHORT G_M34862_IG18
;; size=115 bbWeight=0.92 PerfScore 24.76
-G_M34862_IG14: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M34862_IG13: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
inc r15d
- mov rdx, gword ptr [rbp-0x88]
- ; gcrRegs +[rdx]
- jmp G_M34862_IG08
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M34862_IG15: ; bbWeight=0.20, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdx]
+ jmp G_M34862_IG07
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M34862_IG14: ; bbWeight=0.20, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov rsi, rax
;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M34862_IG16: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M34862_IG15: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
lea rdi, [rbp-0x68]
call [System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]]:MoveNext():ubyte:this]
; gcr arg pop 0
test eax, eax
- jne G_M34862_IG10
+ jne G_M34862_IG09
;; size=18 bbWeight=1 PerfScore 4.75
-G_M34862_IG17: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34862_IG16: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r14]
mov rdi, rsp
- call G_M34862_IG31
+ call G_M34862_IG30
;; size=8 bbWeight=0.08 PerfScore 0.10
-G_M34862_IG18: ; bbWeight=0.08, nogc, isz, extend
- jmp SHORT G_M34862_IG24
+G_M34862_IG17: ; bbWeight=0.08, nogc, isz, extend
+ jmp SHORT G_M34862_IG23
;; size=2 bbWeight=0.08 PerfScore 0.17
-G_M34862_IG19: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M34862_IG18: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rbp-0x88]
; gcrRegs +[rdx]
mov rdi, qword ptr [rdx]
@@ -250,24 +237,24 @@ G_M34862_IG19: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov rsi, qword ptr [rsi]
mov rax, qword ptr [rsi+0x20]
test rax, rax
- je SHORT G_M34862_IG21
+ je SHORT G_M34862_IG20
;; size=26 bbWeight=0.92 PerfScore 9.40
-G_M34862_IG20: ; bbWeight=0.73, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M34862_IG19: ; bbWeight=0.73, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
- jmp SHORT G_M34862_IG22
+ jmp SHORT G_M34862_IG21
;; size=2 bbWeight=0.73 PerfScore 1.47
-G_M34862_IG21: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34862_IG20: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
;; size=15 bbWeight=0.18 PerfScore 0.23
-G_M34862_IG22: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34862_IG21: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rdi, [rbp-0x68]
call rax
; gcr arg pop 0
mov eax, r15d
;; size=9 bbWeight=0.92 PerfScore 3.44
-G_M34862_IG23: ; bbWeight=0.92, epilog, nogc, extend
+G_M34862_IG22: ; bbWeight=0.92, epilog, nogc, extend
add rsp, 152
pop rbx
pop r12
@@ -277,10 +264,10 @@ G_M34862_IG23: ; bbWeight=0.92, epilog, nogc, extend
pop rbp
ret
;; size=18 bbWeight=0.92 PerfScore 3.90
-G_M34862_IG24: ; bbWeight=0.08, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M34862_IG23: ; bbWeight=0.08, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -1
;; size=5 bbWeight=0.08 PerfScore 0.02
-G_M34862_IG25: ; bbWeight=0.08, epilog, nogc, extend
+G_M34862_IG24: ; bbWeight=0.08, epilog, nogc, extend
add rsp, 152
...
-21 (-2.85%) : 666577.dasm - System.Collections.Immutable.ImmutableList1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer
1[System.__Canon]):int:this (Tier1)
@@ -9,53 +9,50 @@
; 4 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 12, 8 ) ref -> [rbp-0x78] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
-; V01 arg1 [V01,T13] ( 3, 2 ) ref -> r13 class-hnd single-def <System.__Canon>
+; V00 this [V00,T00] ( 11, 7 ) ref -> [rbp-0x78] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
+; V01 arg1 [V01,T11] ( 3, 2 ) ref -> r13 class-hnd single-def <System.__Canon>
; V02 arg2 [V02,T02] ( 8, 5 ) int -> r15
; V03 arg3 [V03,T01] ( 6, 6 ) int -> rbx single-def
-; V04 arg4 [V04,T07] ( 5, 3 ) ref -> r14 class-hnd <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V04 arg4 [V04,T06] ( 5, 3 ) ref -> r14 class-hnd <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V05 loc0 [V05 ] ( 5, 3 ) struct (56) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]>
-; V06 loc1 [V06,T35] ( 2, 0 ) int -> [rbp-0x6C] do-not-enreg[Z] EH-live
+; V06 loc1 [V06,T32] ( 2, 0 ) int -> [rbp-0x6C] do-not-enreg[Z] EH-live
; V07 OutArgs [V07 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp3 [V10,T22] ( 3, 0 ) long -> rbx "spilling helperCall"
+; V10 tmp3 [V10,T19] ( 3, 0 ) long -> rbx "spilling helperCall"
;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V12 tmp5 [V12,T21] ( 4, 0 ) long -> r12 "VirtualCall with runtime lookup"
+; V12 tmp5 [V12,T18] ( 4, 0 ) long -> r12 "VirtualCall with runtime lookup"
;* V13 tmp6 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V14 tmp7 [V14,T12] ( 6, 4 ) long -> rax "Indirect call through function pointer"
+; V14 tmp7 [V14,T10] ( 6, 4 ) long -> rax "Indirect call through function pointer"
;* V15 tmp8 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp10 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp13 [V20,T32] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V21 tmp14 [V21,T33] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V22 tmp15 [V22,T16] ( 2, 4 ) long -> rsi "argument with side effect"
-; V23 tmp16 [V23,T17] ( 2, 4 ) long -> rsi "argument with side effect"
-; V24 tmp17 [V24,T34] ( 2, 0 ) ref -> rdx "argument with side effect"
-; V25 PSPSym [V25,T20] ( 1, 1 ) long -> [rbp-0x88] do-not-enreg[V] "PSPSym"
-; V26 cse0 [V26,T18] ( 3, 3 ) int -> rsi "CSE - moderate"
-; V27 rat0 [V27,T23] ( 3, 0 ) long -> rsi "Spilling to split statement for tree"
-; V28 rat1 [V28,T24] ( 3, 0 ) long -> rax "runtime lookup"
-; V29 rat2 [V29,T25] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
-; V30 rat3 [V30,T08] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
-; V31 rat4 [V31,T14] ( 3, 4 ) long -> rsi "runtime lookup"
+; V20 tmp13 [V20,T29] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V21 tmp14 [V21,T30] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V22 tmp15 [V22,T14] ( 2, 4 ) long -> rsi "argument with side effect"
+; V23 tmp16 [V23,T15] ( 2, 4 ) long -> rsi "argument with side effect"
+; V24 tmp17 [V24,T31] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V25 PSPSym [V25,T17] ( 1, 1 ) long -> [rbp-0x88] do-not-enreg[V] "PSPSym"
+; V26 cse0 [V26,T16] ( 3, 3 ) int -> rsi "CSE - moderate"
+; V27 rat0 [V27,T20] ( 3, 0 ) long -> rsi "Spilling to split statement for tree"
+; V28 rat1 [V28,T21] ( 3, 0 ) long -> rax "runtime lookup"
+; V29 rat2 [V29,T22] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V30 rat3 [V30,T07] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
+; V31 rat4 [V31,T12] ( 3, 4 ) long -> rsi "runtime lookup"
; V32 rat5 [V32,T03] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V33 rat6 [V33,T09] ( 2, 4 ) long -> rdi "Spilling to split statement for tree"
-;* V34 rat7 [V34,T19] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V35 rat8 [V35,T04] ( 2, 4 ) long -> rdi "fgMakeTemp is creating a new local variable"
-; V36 rat9 [V36,T26] ( 3, 0 ) long -> rsi "Spilling to split statement for tree"
-; V37 rat10 [V37,T27] ( 3, 0 ) long -> rbx "fgMakeTemp is creating a new local variable"
-; V38 rat11 [V38,T28] ( 3, 0 ) long -> rsi "Spilling to split statement for tree"
-; V39 rat12 [V39,T29] ( 3, 0 ) long -> r12 "fgMakeTemp is creating a new local variable"
-; V40 rat13 [V40,T10] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V41 rat14 [V41,T15] ( 3, 4 ) long -> rsi "runtime lookup"
-; V42 rat15 [V42,T05] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
-; V43 rat16 [V43,T11] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V44 rat17 [V44,T06] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V45 rat18 [V45,T30] ( 3, 0 ) long -> rsi "Spilling to split statement for tree"
-; V46 rat19 [V46,T31] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V33 rat6 [V33,T23] ( 3, 0 ) long -> rsi "Spilling to split statement for tree"
+; V34 rat7 [V34,T24] ( 3, 0 ) long -> rbx "fgMakeTemp is creating a new local variable"
+; V35 rat8 [V35,T25] ( 3, 0 ) long -> rsi "Spilling to split statement for tree"
+; V36 rat9 [V36,T26] ( 3, 0 ) long -> r12 "fgMakeTemp is creating a new local variable"
+; V37 rat10 [V37,T08] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V38 rat11 [V38,T13] ( 3, 4 ) long -> rsi "runtime lookup"
+; V39 rat12 [V39,T04] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
+; V40 rat13 [V40,T09] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V41 rat14 [V41,T05] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V42 rat15 [V42,T27] ( 3, 0 ) long -> rsi "Spilling to split statement for tree"
+; V43 rat16 [V43,T28] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 104
@@ -87,17 +84,17 @@ G_M57893_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M57893_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=6080 {rdi r13 r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi]
test r15d, r15d
- jl G_M57893_IG25
+ jl G_M57893_IG24
test ebx, ebx
- jl G_M57893_IG26
+ jl G_M57893_IG25
mov esi, dword ptr [rdi+0x20]
cmp ebx, esi
- jg G_M57893_IG26
+ jg G_M57893_IG25
lea eax, [r15+rbx]
cmp eax, esi
- jg G_M57893_IG26
+ jg G_M57893_IG25
test r14, r14
- je G_M57893_IG27
+ je G_M57893_IG26
;; size=49 bbWeight=1 PerfScore 8.75
G_M57893_IG03: ; bbWeight=1, gcrefRegs=6080 {rdi r13 r14}, byrefRegs=0000 {}, byref, isz
mov rsi, qword ptr [rdi]
@@ -137,25 +134,18 @@ G_M57893_IG06: ; bbWeight=1, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {},
G_M57893_IG07: ; bbWeight=1, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
mov rdx, gword ptr [rbp-0x78]
; gcrRegs +[rdx]
- mov rdi, qword ptr [rdx]
- mov rdi, qword ptr [rdi+0x38]
- mov rdi, qword ptr [rdi]
- mov rdi, qword ptr [rdi+0x28]
- test rdi, rdi
- ;; size=21 bbWeight=1 PerfScore 9.25
-G_M57893_IG08: ; bbWeight=1, gcrefRegs=6004 {rdx r13 r14}, byrefRegs=0000 {}, byref
mov rdi, qword ptr [rdx]
mov rsi, qword ptr [rdi+0x38]
mov rsi, qword ptr [rsi]
mov rsi, qword ptr [rsi+0x28]
test rsi, rsi
- je G_M57893_IG16
- ;; size=23 bbWeight=1 PerfScore 9.25
-G_M57893_IG09: ; bbWeight=0.80, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
+ je G_M57893_IG15
+ ;; size=27 bbWeight=1 PerfScore 10.25
+G_M57893_IG08: ; bbWeight=0.80, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
- jmp G_M57893_IG17
+ jmp G_M57893_IG16
;; size=5 bbWeight=0.80 PerfScore 1.60
-G_M57893_IG10: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+G_M57893_IG09: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbp-0x78]
; gcrRegs +[rdi]
mov rsi, qword ptr [rdi]
@@ -163,10 +153,10 @@ G_M57893_IG10: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {},
mov rax, qword ptr [rax]
mov rbx, qword ptr [rax+0x28]
test rbx, rbx
- je SHORT G_M57893_IG11
- jmp SHORT G_M57893_IG12
+ je SHORT G_M57893_IG10
+ jmp SHORT G_M57893_IG11
;; size=25 bbWeight=0 PerfScore 0.00
-G_M57893_IG11: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
+G_M57893_IG10: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
mov rdi, rsi
mov rsi, 0xD1FFAB1E ; global ptr
@@ -174,7 +164,7 @@ G_M57893_IG11: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {},
; gcr arg pop 0
mov rbx, rax
;; size=21 bbWeight=0 PerfScore 0.00
-G_M57893_IG12: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+G_M57893_IG11: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbp-0x78]
; gcrRegs +[rdi]
mov rsi, qword ptr [rdi]
@@ -182,10 +172,10 @@ G_M57893_IG12: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {},
mov rax, qword ptr [rax]
mov r12, qword ptr [rax+0x30]
test r12, r12
- je SHORT G_M57893_IG13
- jmp SHORT G_M57893_IG14
+ je SHORT G_M57893_IG12
+ jmp SHORT G_M57893_IG13
;; size=25 bbWeight=0 PerfScore 0.00
-G_M57893_IG13: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
+G_M57893_IG12: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
mov rdi, rsi
mov rsi, 0xD1FFAB1E ; global ptr
@@ -193,7 +183,7 @@ G_M57893_IG13: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {},
; gcr arg pop 0
mov r12, rax
;; size=21 bbWeight=0 PerfScore 0.00
-G_M57893_IG14: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+G_M57893_IG13: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
lea rdi, [rbp-0x68]
mov rsi, rbx
call [System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this]
@@ -210,32 +200,30 @@ G_M57893_IG14: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {},
; gcrRegs -[rax rdx rsi rdi]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M57893_IG15
+ jne SHORT G_M57893_IG14
inc r15d
- mov rdx, gword ptr [rbp-0x78]
- ; gcrRegs +[rdx]
- jmp G_M57893_IG08
- ;; size=45 bbWeight=0 PerfScore 0.00
-G_M57893_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdx r13-r14]
+ jmp G_M57893_IG07
+ ;; size=41 bbWeight=0 PerfScore 0.00
+G_M57893_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r13-r14]
mov dword ptr [rbp-0x6C], r15d
- jmp G_M57893_IG30
+ jmp G_M57893_IG29
;; size=9 bbWeight=0 PerfScore 0.00
-G_M57893_IG16: ; bbWeight=0.20, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
+G_M57893_IG15: ; bbWeight=0.20, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
; gcrRegs +[r13-r14]
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov rsi, rax
;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M57893_IG17: ; bbWeight=1, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
+G_M57893_IG16: ; bbWeight=1, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
lea rdi, [rbp-0x68]
call [System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:MoveNext():ubyte:this]
; gcr arg pop 0
test eax, eax
- jne G_M57893_IG10
+ jne G_M57893_IG09
;; size=18 bbWeight=1 PerfScore 4.75
-G_M57893_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M57893_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13-r14]
mov rdx, gword ptr [rbp-0x78]
; gcrRegs +[rdx]
@@ -244,24 +232,24 @@ G_M57893_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rsi, qword ptr [rsi]
mov rax, qword ptr [rsi+0x38]
test rax, rax
- je SHORT G_M57893_IG20
+ je SHORT G_M57893_IG19
;; size=23 bbWeight=1 PerfScore 10.25
-G_M57893_IG19: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M57893_IG18: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
- jmp SHORT G_M57893_IG21
+ jmp SHORT G_M57893_IG20
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M57893_IG20: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57893_IG19: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
;; size=15 bbWeight=0.20 PerfScore 0.25
-G_M57893_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57893_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rdi, [rbp-0x68]
call rax
...
+1 (+0.13%) : 375790.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
@@ -18,11 +18,11 @@
; V06 tmp2 [V06,T13] ( 4, 1.35) long -> r11 "VirtualCall with runtime lookup"
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V08 tmp4 [V08,T14] ( 4, 1.35) long -> r11 "VirtualCall with runtime lookup"
-; V09 tmp5 [V09,T29] ( 3, 0.45) ref -> r14 "guarded devirt return temp"
+; V09 tmp5 [V09,T27] ( 3, 0.45) ref -> r14 "guarded devirt return temp"
;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Linq.Enumerable+UnionIterator2`1[System.String]>
-; V11 tmp7 [V11,T30] ( 3, 0.45) int -> rax "guarded devirt return temp"
+; V11 tmp7 [V11,T28] ( 3, 0.45) int -> rax "guarded devirt return temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.SZGenericArrayEnumerator`1[System.String]>
-; V13 tmp9 [V13,T20] ( 4, 1.13) ref -> r14 "guarded devirt return temp"
+; V13 tmp9 [V13,T20] ( 4, 1.13) ref -> r15 "guarded devirt return temp"
; V14 tmp10 [V14,T07] ( 4, 3.51) int -> rsi "guarded devirt arg temp"
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+UnionIterator2`1[System.String]>
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
@@ -30,33 +30,30 @@
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref
;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.SZGenericArrayEnumerator`1[System.String]>
;* V20 tmp16 [V20,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V21 tmp17 [V21,T09] ( 3, 2.68) ref -> r15 class-hnd "Inline stloc first use temp" <System.Collections.Generic.HashSet`1[System.__Canon]>
+; V21 tmp17 [V21,T09] ( 3, 2.68) ref -> r14 class-hnd "Inline stloc first use temp" <System.Collections.Generic.HashSet`1[System.__Canon]>
;* V22 tmp18 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V23 tmp19 [V23,T04] ( 4, 5.03) long -> registers "VirtualCall with runtime lookup"
+; V23 tmp19 [V23,T04] ( 4, 5.03) long -> r11 "VirtualCall with runtime lookup"
; V24 tmp20 [V24,T10] ( 3, 2.23) ref -> r13 class-hnd "Inline stloc first use temp" <System.__Canon>
; V25 tmp21 [V25,T02] ( 2, 2.58) int -> rax "guarded devirt return temp"
; V26 tmp22 [V26,T00] ( 7, 33.56) ref -> rdi "guarded devirt arg temp"
;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.SZGenericArrayEnumerator`1[System.String]>
; V28 tmp24 [V28 ] ( 1, 0.84) int -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V29 tmp25 [V29,T11] ( 3, 1.76) int -> rsi "Inline stloc first use temp"
-; V30 tmp26 [V30,T24] ( 4, 0.90) ref -> r14 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V30 tmp26 [V30,T24] ( 4, 0.90) ref -> r15 class-hnd "Inline stloc first use temp" <<unknown class>>
; V31 tmp27 [V31,T18] ( 4, 1.23) ref -> rdi class-hnd "dup spill" <System.Collections.Generic.IEnumerator`1[System.__Canon]>
;* V32 tmp28 [V32 ] ( 0, 0 ) ref -> zero-ref
; V33 tmp29 [V33,T25] ( 2, 0.90) ref -> r15 class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerator`1[System.__Canon]>
;* V34 tmp30 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.SZGenericArrayEnumerator`1[System.String]>
-; V35 tmp31 [V35,T27] ( 3, 0.55) ref -> rdi single-def "guarded devirt arg temp"
+; V35 tmp31 [V35,T26] ( 3, 0.55) ref -> rdi single-def "guarded devirt arg temp"
;* V36 tmp32 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.SZGenericArrayEnumerator`1[System.String]>
; V37 cse0 [V37,T08] ( 3, 2.77) int -> r15 "CSE - moderate"
-; V38 cse1 [V38,T03] ( 3, 12.54) int -> r14 "CSE - moderate"
-;* V39 rat0 [V39,T28] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V40 rat1 [V40,T31] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V41 rat2 [V41,T26] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V42 rat3 [V42,T21] ( 3, 0.99) long -> rdi "Spilling to split statement for tree"
-; V43 rat4 [V43,T15] ( 3, 1.26) long -> r11 "fgMakeTemp is creating a new local variable"
-; V44 rat5 [V44,T06] ( 3, 3.69) long -> rdi "Spilling to split statement for tree"
-; V45 rat6 [V45,T05] ( 3, 4.70) long -> r11 "fgMakeTemp is creating a new local variable"
-; V46 rat7 [V46,T22] ( 3, 0.99) long -> rdi "Spilling to split statement for tree"
-; V47 rat8 [V47,T16] ( 3, 1.26) long -> r11 "fgMakeTemp is creating a new local variable"
+; V38 cse1 [V38,T03] ( 3, 12.54) int -> r15 "CSE - moderate"
+; V39 rat0 [V39,T21] ( 3, 0.99) long -> rdi "Spilling to split statement for tree"
+; V40 rat1 [V40,T15] ( 3, 1.26) long -> r11 "fgMakeTemp is creating a new local variable"
+; V41 rat2 [V41,T06] ( 3, 3.69) long -> rdi "Spilling to split statement for tree"
+; V42 rat3 [V42,T05] ( 3, 4.70) long -> r11 "fgMakeTemp is creating a new local variable"
+; V43 rat4 [V43,T22] ( 3, 0.99) long -> rdi "Spilling to split statement for tree"
+; V44 rat5 [V44,T16] ( 3, 1.26) long -> r11 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
@@ -79,41 +76,41 @@ G_M26324_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=10 bbWeight=1 PerfScore 3.25
G_M26324_IG03: ; bbWeight=0.77, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
test r15d, r15d
- jle G_M26324_IG47
+ jle G_M26324_IG41
;; size=9 bbWeight=0.77 PerfScore 0.97
G_M26324_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov r15, gword ptr [rbx+0x28]
- ; gcrRegs +[r15]
+ mov r14, gword ptr [rbx+0x28]
+ ; gcrRegs +[r14]
;; size=4 bbWeight=1 PerfScore 2.00
-G_M26324_IG05: ; bbWeight=1.29, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M26324_IG05: ; bbWeight=1.29, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x20]
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[System.String]
cmp qword ptr [rdi], rsi
- jne G_M26324_IG21
+ jne G_M26324_IG22
;; size=23 bbWeight=1.29 PerfScore 8.06
-G_M26324_IG06: ; bbWeight=0.70, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref
+G_M26324_IG06: ; bbWeight=0.70, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref
mov esi, dword ptr [rdi+0x08]
inc esi
- mov r14d, dword ptr [rdi+0x0C]
- cmp esi, r14d
- jae G_M26324_IG17
+ mov r15d, dword ptr [rdi+0x0C]
+ cmp esi, r15d
+ jae G_M26324_IG18
;; size=18 bbWeight=0.70 PerfScore 3.83
-G_M26324_IG07: ; bbWeight=0.36, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref
+G_M26324_IG07: ; bbWeight=0.36, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref
mov dword ptr [rdi+0x08], esi
- jmp G_M26324_IG24
+ jmp G_M26324_IG26
;; size=8 bbWeight=0.36 PerfScore 1.09
G_M26324_IG08: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi r15]
+ ; gcrRegs -[rdi r14]
mov rdi, 0xD1FFAB1E ; System.Linq.Enumerable+UnionIterator2`1[System.String]
cmp qword ptr [rbx], rdi
- jne G_M26324_IG56
+ jne G_M26324_IG53
mov r14, gword ptr [rbx+0x30]
; gcrRegs +[r14]
;; size=23 bbWeight=0.23 PerfScore 1.41
G_M26324_IG09: ; bbWeight=0.23, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
test r14, r14
- je G_M26324_IG47
+ je G_M26324_IG41
;; size=9 bbWeight=0.23 PerfScore 0.28
G_M26324_IG10: ; bbWeight=0.23, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov rdi, qword ptr [rbx]
@@ -121,7 +118,7 @@ G_M26324_IG10: ; bbWeight=0.23, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
mov rsi, qword ptr [rsi+0x08]
mov r11, qword ptr [rsi+0x20]
test r11, r11
- je G_M26324_IG20
+ je G_M26324_IG17
;; size=24 bbWeight=0.23 PerfScore 2.09
G_M26324_IG11: ; bbWeight=0.23, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rdi, r14
@@ -146,7 +143,7 @@ G_M26324_IG13: ; bbWeight=0.05, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0
call [r11]<unknown method>
; gcrRegs -[rdi]
;; size=13 bbWeight=0.05 PerfScore 0.17
-G_M26324_IG14: ; bbWeight=0.23, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M26324_IG14: ; bbWeight=0.23, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
lea rdi, bword ptr [rbx+0x20]
; byrRegs +[rdi]
mov rsi, r15
@@ -157,8 +154,8 @@ G_M26324_IG14: ; bbWeight=0.23, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
inc dword ptr [rbx+0x14]
mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[System.String]
cmp qword ptr [r15], rdi
- jne G_M26324_IG23
- ;; size=34 bbWeight=0.23 PerfScore 2.03
+ jne SHORT G_M26324_IG21
+ ;; size=30 bbWeight=0.23 PerfScore 2.03
G_M26324_IG15: ; bbWeight=0.13, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rdi, r15
; gcrRegs +[rdi]
@@ -167,7 +164,7 @@ G_M26324_IG15: ; bbWeight=0.13, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
;; size=9 bbWeight=0.13 PerfScore 0.43
G_M26324_IG16: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
test eax, eax
- jne G_M26324_IG28
+ jne G_M26324_IG24
mov esi, dword ptr [rbx+0x14]
dec esi
mov rdi, rbx
@@ -179,75 +176,87 @@ G_M26324_IG16: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov r14, rax
; gcrRegs +[r14]
test r14, r14
- je G_M26324_IG47
+ je G_M26324_IG41
jmp G_M26324_IG10
;; size=43 bbWeight=0.23 PerfScore 3.22
-G_M26324_IG17: ; bbWeight=11.15, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax r14] +[rdi]
- mov dword ptr [rdi+0x08], r14d
- ;; size=4 bbWeight=11.15 PerfScore 11.15
-G_M26324_IG18: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov esi, dword ptr [rbx+0x14]
- dec esi
- mov rax, 0xD1FFAB1E ; System.Linq.Enumerable+UnionIterator2`1[System.String]
- cmp qword ptr [rbx], rax
- jne G_M26324_IG57
- ;; size=24 bbWeight=1 PerfScore 6.50
-G_M26324_IG19: ; bbWeight=0.45, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- jmp G_M26324_IG32
- ;; size=5 bbWeight=0.45 PerfScore 0.90
-G_M26324_IG20: ; bbWeight=0.05, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r14]
+G_M26324_IG17: ; bbWeight=0.05, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r11, rax
jmp G_M26324_IG11
;; size=23 bbWeight=0.05 PerfScore 0.16
-G_M26324_IG21: ; bbWeight=1.29, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r14] +[rdi r15]
- mov r11, 0xD1FFAB1E ; code for <unknown method>
- call [r11]<unknown method>
+G_M26324_IG18: ; bbWeight=11.15, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14] +[rdi]
+ mov dword ptr [rdi+0x08], r15d
+ ;; size=4 bbWeight=11.15 PerfScore 11.15
+G_M26324_IG19: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
- test eax, eax
- jne SHORT G_M26324_IG24
- ;; size=17 bbWeight=1.29 PerfScore 5.81
-G_M26324_IG22: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r15]
- jmp SHORT G_M26324_IG18
- ;; size=2 bbWeight=4 PerfScore 8.00
-G_M26324_IG23: ; bbWeight=0.09, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ mov esi, dword ptr [rbx+0x14]
+ dec esi
+ mov rax, 0xD1FFAB1E ; System.Linq.Enumerable+UnionIterator2`1[System.String]
+ cmp qword ptr [rbx], rax
+ jne G_M26324_IG54
+ ;; size=24 bbWeight=1 PerfScore 6.50
+G_M26324_IG20: ; bbWeight=0.45, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jmp G_M26324_IG32
+ ;; size=5 bbWeight=0.45 PerfScore 0.90
+G_M26324_IG21: ; bbWeight=0.09, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r15]
mov rdi, r15
; gcrRegs +[rdi]
mov r11, 0xD1FFAB1E ; code for <unknown method>
call [r11]<unknown method>
; gcrRegs -[rdi r15]
- jmp G_M26324_IG16
- ;; size=21 bbWeight=0.09 PerfScore 0.52
-G_M26324_IG24: ; bbWeight=0.84, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r15]
+ jmp SHORT G_M26324_IG16
+ ;; size=18 bbWeight=0.09 PerfScore 0.52
+G_M26324_IG22: ; bbWeight=1.29, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rdi r14]
+ mov r11, 0xD1FFAB1E ; code for <unknown method>
+ call [r11]<unknown method>
+ ; gcrRegs -[rdi]
+ test eax, eax
+ jne SHORT G_M26324_IG26
+ ;; size=17 bbWeight=1.29 PerfScore 5.81
+G_M26324_IG23: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r14]
+ jmp SHORT G_M26324_IG19
+ ;; size=2 bbWeight=4 PerfScore 8.00
+G_M26324_IG24: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rdi, rbx
+ ; gcrRegs +[rdi]
+ call [System.Linq.Enumerable+UnionIterator`1[System.__Canon]:StoreFirst():this]
+ ; gcrRegs -[rdi]
+ mov eax, 1
+ ;; size=14 bbWeight=0.23 PerfScore 0.79
+G_M26324_IG25: ; bbWeight=0.23, epilog, nogc, extend
+ add rsp, 16
+ pop rbx
+ pop r13
+ pop r14
...
+5 (+0.63%) : 338153.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
@@ -10,51 +10,48 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 38, 13.17) ref -> rbx this class-hnd single-def <System.Linq.Enumerable+UnionIterator`1[System.__Canon]>
-; V01 loc0 [V01,T16] ( 5, 1 ) ref -> r14 class-hnd <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-; V02 loc1 [V02,T23] ( 5, 0.80) ref -> r14 class-hnd <System.Collections.Generic.IEnumerator`1[System.__Canon]>
+; V01 loc0 [V01,T15] ( 5, 1 ) ref -> r14 class-hnd <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V02 loc1 [V02,T21] ( 5, 0.80) ref -> r14 class-hnd <System.Collections.Generic.IEnumerator`1[System.__Canon]>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Generic.IEnumerable`1[System.__Canon]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V06 tmp2 [V06,T11] ( 4, 1.20) long -> r11 "VirtualCall with runtime lookup"
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V08 tmp4 [V08,T12] ( 4, 1.20) long -> r11 "VirtualCall with runtime lookup"
-; V09 tmp5 [V09,T26] ( 3, 0.40) ref -> r14 "guarded devirt return temp"
+; V09 tmp5 [V09,T24] ( 3, 0.40) ref -> r14 "guarded devirt return temp"
;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Linq.Enumerable+UnionIterator2`1[System.String]>
-; V11 tmp7 [V11,T28] ( 3, 0.40) int -> rax "guarded devirt return temp"
+; V11 tmp7 [V11,T26] ( 3, 0.40) int -> rax "guarded devirt return temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetData>d__13>
-; V13 tmp9 [V13,T17] ( 4, 1 ) ref -> r14 "guarded devirt return temp"
+; V13 tmp9 [V13,T16] ( 4, 1 ) ref -> r15 "guarded devirt return temp"
; V14 tmp10 [V14,T04] ( 4, 3.33) int -> rsi "guarded devirt arg temp"
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+UnionIterator2`1[System.String]>
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V17 tmp13 [V17,T18] ( 4, 1 ) ref -> rdi class-hnd "dup spill" <System.Collections.Generic.IEnumerator`1[System.__Canon]>
+; V17 tmp13 [V17,T17] ( 4, 1 ) ref -> rdi class-hnd "dup spill" <System.Collections.Generic.IEnumerator`1[System.__Canon]>
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref
;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetData>d__13>
;* V20 tmp16 [V20,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V21 tmp17 [V21,T07] ( 3, 2.20) ref -> r15 class-hnd "Inline stloc first use temp" <System.Collections.Generic.HashSet`1[System.__Canon]>
+; V21 tmp17 [V21,T07] ( 3, 2.20) ref -> r14 class-hnd "Inline stloc first use temp" <System.Collections.Generic.HashSet`1[System.__Canon]>
;* V22 tmp18 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V23 tmp19 [V23,T02] ( 4, 3.60) long -> registers "VirtualCall with runtime lookup"
-; V24 tmp20 [V24,T09] ( 3, 1.80) ref -> r14 class-hnd "Inline stloc first use temp" <System.__Canon>
+; V23 tmp19 [V23,T02] ( 4, 3.60) long -> r11 "VirtualCall with runtime lookup"
+; V24 tmp20 [V24,T09] ( 3, 1.80) ref -> r15 class-hnd "Inline stloc first use temp" <System.__Canon>
; V25 tmp21 [V25,T08] ( 3, 2 ) int -> rax "guarded devirt return temp"
; V26 tmp22 [V26,T01] ( 4, 6 ) ref -> rdi "guarded devirt arg temp"
;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetData>d__13>
; V28 tmp24 [V28 ] ( 1, 0.60) int -> [rbp-0x28] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V29 tmp25 [V29,T24] ( 4, 0.80) ref -> r14 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V30 tmp26 [V30,T19] ( 4, 1 ) ref -> rdi class-hnd "dup spill" <System.Collections.Generic.IEnumerator`1[System.__Canon]>
+; V29 tmp25 [V29,T22] ( 4, 0.80) ref -> r15 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V30 tmp26 [V30,T18] ( 4, 1 ) ref -> rdi class-hnd "dup spill" <System.Collections.Generic.IEnumerator`1[System.__Canon]>
;* V31 tmp27 [V31 ] ( 0, 0 ) ref -> zero-ref
-; V32 tmp28 [V32,T25] ( 2, 0.80) ref -> r14 class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerator`1[System.__Canon]>
+; V32 tmp28 [V32,T23] ( 2, 0.80) ref -> r15 class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerator`1[System.__Canon]>
;* V33 tmp29 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetData>d__13>
-; V34 tmp30 [V34,T27] ( 3, 0.40) ref -> rdi single-def "guarded devirt arg temp"
+; V34 tmp30 [V34,T25] ( 3, 0.40) ref -> rdi single-def "guarded devirt arg temp"
;* V35 tmp31 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetUncData>d__15>
; V36 cse0 [V36,T05] ( 3, 2.80) int -> r15 "CSE - aggressive"
-;* V37 rat0 [V37,T20] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V38 rat1 [V38,T29] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V39 rat2 [V39,T13] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V40 rat3 [V40,T21] ( 3, 0.88) long -> rdi "Spilling to split statement for tree"
-; V41 rat4 [V41,T14] ( 3, 1.12) long -> r11 "fgMakeTemp is creating a new local variable"
-; V42 rat5 [V42,T06] ( 3, 2.64) long -> rdi "Spilling to split statement for tree"
-; V43 rat6 [V43,T03] ( 3, 3.36) long -> r11 "fgMakeTemp is creating a new local variable"
-; V44 rat7 [V44,T22] ( 3, 0.88) long -> rdi "Spilling to split statement for tree"
-; V45 rat8 [V45,T15] ( 3, 1.12) long -> r11 "fgMakeTemp is creating a new local variable"
+; V37 rat0 [V37,T19] ( 3, 0.88) long -> rdi "Spilling to split statement for tree"
+; V38 rat1 [V38,T13] ( 3, 1.12) long -> r11 "fgMakeTemp is creating a new local variable"
+; V39 rat2 [V39,T06] ( 3, 2.64) long -> rdi "Spilling to split statement for tree"
+; V40 rat3 [V40,T03] ( 3, 3.36) long -> r11 "fgMakeTemp is creating a new local variable"
+; V41 rat4 [V41,T20] ( 3, 0.88) long -> rdi "Spilling to split statement for tree"
+; V42 rat5 [V42,T14] ( 3, 1.12) long -> r11 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 24
@@ -76,59 +73,59 @@ G_M26324_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=10 bbWeight=1 PerfScore 3.25
G_M26324_IG03: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
test r15d, r15d
- jle G_M26324_IG36
+ jle G_M26324_IG34
;; size=9 bbWeight=0.80 PerfScore 1.00
G_M26324_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov r15, gword ptr [rbx+0x28]
- ; gcrRegs +[r15]
+ mov r14, gword ptr [rbx+0x28]
+ ; gcrRegs +[r14]
;; size=4 bbWeight=1 PerfScore 2.00
-G_M26324_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M26324_IG05: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x20]
; gcrRegs +[rdi]
mov rax, 0xD1FFAB1E ; System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetData>d__13
cmp qword ptr [rdi], rax
jne G_M26324_IG32
;; size=23 bbWeight=1 PerfScore 6.25
-G_M26324_IG06: ; bbWeight=0.80, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref
+G_M26324_IG06: ; bbWeight=0.80, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref
call [System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetData>d__13:MoveNext():ubyte:this]
; gcrRegs -[rdi]
;; size=6 bbWeight=0.80 PerfScore 2.40
-G_M26324_IG07: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M26324_IG07: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
test eax, eax
- jne G_M26324_IG17
+ jne G_M26324_IG18
mov esi, dword ptr [rbx+0x14]
dec esi
mov rdi, 0xD1FFAB1E ; System.Linq.Enumerable+UnionIterator2`1[System.String]
cmp qword ptr [rbx], rdi
- jne G_M26324_IG51
+ jne G_M26324_IG49
;; size=32 bbWeight=1 PerfScore 7.75
G_M26324_IG08: ; bbWeight=0.40, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r15]
+ ; gcrRegs -[r14]
test esi, esi
- je G_M26324_IG38
+ je G_M26324_IG40
;; size=8 bbWeight=0.40 PerfScore 0.50
G_M26324_IG09: ; bbWeight=0.27, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- jmp G_M26324_IG33
+ jmp G_M26324_IG30
;; size=5 bbWeight=0.27 PerfScore 0.53
G_M26324_IG10: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; System.Linq.Enumerable+UnionIterator2`1[System.String]
cmp qword ptr [rbx], rdi
- jne G_M26324_IG48
+ jne G_M26324_IG46
mov r14, gword ptr [rbx+0x30]
; gcrRegs +[r14]
;; size=23 bbWeight=0.20 PerfScore 1.25
G_M26324_IG11: ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
test r14, r14
- je G_M26324_IG36
+ je G_M26324_IG34
;; size=9 bbWeight=0.20 PerfScore 0.25
-G_M26324_IG12: ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+G_M26324_IG12: ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rbx]
mov rsi, qword ptr [rdi+0x38]
mov rsi, qword ptr [rsi+0x08]
mov r11, qword ptr [rsi+0x20]
test r11, r11
- je G_M26324_IG19
- ;; size=24 bbWeight=0.20 PerfScore 1.85
+ je SHORT G_M26324_IG17
+ ;; size=20 bbWeight=0.20 PerfScore 1.85
G_M26324_IG13: ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rdi, r14
; gcrRegs +[rdi]
@@ -153,7 +150,7 @@ G_M26324_IG14: ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
inc dword ptr [rbx+0x14]
mov rdi, 0xD1FFAB1E ; System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetData>d__13
cmp qword ptr [r14], rdi
- jne G_M26324_IG50
+ jne G_M26324_IG48
mov rdi, r14
; gcrRegs +[rdi]
call [System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetData>d__13:MoveNext():ubyte:this]
@@ -161,7 +158,7 @@ G_M26324_IG14: ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
;; size=43 bbWeight=0.20 PerfScore 2.45
G_M26324_IG15: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test eax, eax
- jne G_M26324_IG22
+ jne G_M26324_IG20
mov esi, dword ptr [rbx+0x14]
dec esi
mov rdi, rbx
@@ -173,53 +170,43 @@ G_M26324_IG15: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov r14, rax
; gcrRegs +[r14]
test r14, r14
- je G_M26324_IG36
+ je G_M26324_IG34
jmp SHORT G_M26324_IG12
;; size=40 bbWeight=0.20 PerfScore 2.85
G_M26324_IG16: ; bbWeight=0.10, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[rdi]
mov rsi, 0xD1FFAB1E ; System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetData>d__13
cmp qword ptr [rdi], rsi
- jne G_M26324_IG49
+ jne G_M26324_IG47
jmp SHORT G_M26324_IG14
;; size=21 bbWeight=0.10 PerfScore 0.62
-G_M26324_IG17: ; bbWeight=0.60, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi r14] +[r15]
- mov rdi, qword ptr [rbx]
- mov rsi, qword ptr [rdi+0x38]
- mov rsi, qword ptr [rsi+0x08]
- mov r11, qword ptr [rsi+0x28]
- test r11, r11
- je SHORT G_M26324_IG20
- ;; size=20 bbWeight=0.60 PerfScore 5.55
-G_M26324_IG18: ; bbWeight=0.48, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- jmp G_M26324_IG26
- ;; size=5 bbWeight=0.48 PerfScore 0.96
-G_M26324_IG19: ; bbWeight=0.04, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r15] +[r14]
+G_M26324_IG17: ; bbWeight=0.04, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi]
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r11, rax
jmp G_M26324_IG13
;; size=23 bbWeight=0.04 PerfScore 0.14
-G_M26324_IG20: ; bbWeight=0.12, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14] +[r15]
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=15 bbWeight=0.12 PerfScore 0.15
-G_M26324_IG21: ; bbWeight=0.60, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M26324_IG18: ; bbWeight=0.60, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+ mov rdi, qword ptr [rbx]
+ mov rsi, qword ptr [rdi+0x38]
+ mov rsi, qword ptr [rsi+0x08]
+ mov r11, qword ptr [rsi+0x28]
+ test r11, r11
+ je G_M26324_IG29
+ ;; size=24 bbWeight=0.60 PerfScore 5.55
+G_M26324_IG19: ; bbWeight=0.60, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x20]
; gcrRegs +[rdi]
- mov r11, rax
- call [rax]
+ call [r11]
; gcrRegs -[rdi] +[rax]
- mov r14, rax
- ; gcrRegs +[r14]
- cmp byte ptr [r15], r15b
+ mov r15, rax
+ ; gcrRegs +[r15]
+ cmp byte ptr [r14], r14b
lea rdx, [rbp-0x28]
- mov rdi, r15
+ mov rdi, r14
; gcrRegs +[rdi]
- mov rsi, r14
+ mov rsi, r15
; gcrRegs +[rsi]
call [<unknown method>]
; gcrRegs -[rax rsi rdi]
@@ -227,21 +214,21 @@ G_M26324_IG21: ; bbWeight=0.60, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
je G_M26324_IG05
lea rdi, bword ptr [rbx+0x08]
; byrRegs +[rdi]
- mov rsi, r14
+ mov rsi, r15
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rsi r14-r15]
; byrRegs -[rdi]
- jmp SHORT G_M26324_IG24
- ;; size=53 bbWeight=0.60 PerfScore 10.50
...
+26 (+1.51%) : 86236.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Canon,System.Canon]:TryInsert(System.Canon,System.Canon,ubyte):ubyte:this (Tier1)
@@ -9,32 +9,32 @@
; 5 inlinees with PGO data; 21 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 41, 17.25) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 42, 17.72) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 15, 6.25) ref -> r15 ld-addr-op class-hnd single-def <System.__Canon>
-; V02 arg2 [V02,T14] ( 5, 3 ) ref -> r14 class-hnd single-def <System.__Canon>
-; V03 arg3 [V03,T15] ( 6, 2.49) ubyte -> r13 single-def
+; V02 arg2 [V02,T13] ( 5, 3 ) ref -> r14 class-hnd single-def <System.__Canon>
+; V03 arg3 [V03,T14] ( 6, 2.49) ubyte -> r13 single-def
; V04 loc0 [V04 ] ( 17, 6.90) struct (16) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.__Canon]]>
-; V05 loc1 [V05,T25] ( 5, 3.04) ref -> r12 class-hnd single-def <<unknown class>>
-; V06 loc2 [V06,T23] ( 6, 3.54) int -> [rbp-0x44] spill-single-def
-; V07 loc3 [V07,T33] ( 7, 2.43) int -> [rbp-0x48]
-; V08 loc4 [V08,T24] ( 5, 3.10) byref -> [rbp-0x68]
-; V09 loc5 [V09,T11] ( 13, 5.36) int -> [rbp-0x4C]
-; V10 loc6 [V10,T40] ( 5, 2.06) int -> r13
-; V11 loc7 [V11,T55] ( 4, 1.49) ref -> r12 class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
-; V12 loc8 [V12,T54] ( 3, 1.55) int -> r13 single-def
+; V05 loc1 [V05,T23] ( 5, 3.04) ref -> r12 class-hnd single-def <<unknown class>>
+; V06 loc2 [V06,T21] ( 6, 3.54) int -> [rbp-0x44] spill-single-def
+; V07 loc3 [V07,T31] ( 7, 2.43) int -> [rbp-0x48]
+; V08 loc4 [V08,T22] ( 5, 3.10) byref -> [rbp-0x68]
+; V09 loc5 [V09,T10] ( 13, 5.36) int -> [rbp-0x4C]
+; V10 loc6 [V10,T38] ( 5, 2.06) int -> r12
+; V11 loc7 [V11,T52] ( 4, 1.49) ref -> r12 class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+; V12 loc8 [V12,T51] ( 3, 1.55) int -> r12 single-def
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T45] ( 3, 2.03) int -> rax
+; V14 tmp1 [V14,T43] ( 3, 2.03) int -> rax
;* V15 tmp2 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp3 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V17 tmp4 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V18 tmp5 [V18,T13] ( 5, 5.13) byref -> r12 single-def "dup spill"
-; V19 tmp6 [V19,T79] ( 3, 0.00) long -> rsi "spilling helperCall"
+; V18 tmp5 [V18,T12] ( 5, 5.13) byref -> r13 single-def "dup spill"
+; V19 tmp6 [V19,T76] ( 3, 0.00) long -> rsi "spilling helperCall"
;* V20 tmp7 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp8 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp9 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V23 tmp10 [V23,T83] ( 3, 0 ) long -> [rbp-0x58] "spilling helperCall"
+; V23 tmp10 [V23,T80] ( 3, 0 ) long -> [rbp-0x58] "spilling helperCall"
;* V24 tmp11 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V25 tmp12 [V25,T82] ( 4, 0 ) long -> [rbp-0x60] "VirtualCall with runtime lookup"
+; V25 tmp12 [V25,T79] ( 4, 0 ) long -> [rbp-0x60] "VirtualCall with runtime lookup"
;* V26 tmp13 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V27 tmp14 [V27 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V28 tmp15 [V28 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -47,12 +47,12 @@
;* V35 tmp22 [V35 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V36 tmp23 [V36 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V37 tmp24 [V37 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V38 tmp25 [V38,T70] ( 4, 0.03) long -> r11 "VirtualCall with runtime lookup"
-; V39 tmp26 [V39,T47] ( 3, 2.00) int -> rax "guarded devirt return temp"
+; V38 tmp25 [V38,T67] ( 4, 0.03) long -> r11 "VirtualCall with runtime lookup"
+; V39 tmp26 [V39,T44] ( 3, 2.00) int -> rax "guarded devirt return temp"
;* V40 tmp27 [V40 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp"
;* V41 tmp28 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CombineNode`2[Microsoft.CodeAnalysis.SourceGeneration.GlobalAliases,Microsoft.CodeAnalysis.SourceGeneration.GlobalAliases]>
-; V42 tmp29 [V42,T59] ( 3, 0.97) int -> rcx "guarded devirt return temp"
-; V43 tmp30 [V43,T19] ( 7, 4.19) ref -> rax "guarded devirt arg temp"
+; V42 tmp29 [V42,T56] ( 3, 0.97) int -> rcx "guarded devirt return temp"
+; V43 tmp30 [V43,T17] ( 7, 4.19) ref -> rax "guarded devirt arg temp"
;* V44 tmp31 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.ObjectEqualityComparer`1[System.Object]>
;* V45 tmp32 [V45 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V46 tmp33 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
@@ -62,106 +62,103 @@
; V50 tmp37 [V50,T04] ( 3, 6.13) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
; V51 tmp38 [V51,T05] ( 3, 6.13) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
;* V52 tmp39 [V52 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V53 tmp40 [V53,T57] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V53 tmp40 [V53,T54] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V54 tmp41 [V54 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V55 tmp42 [V55,T58] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V55 tmp42 [V55,T55] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V56 tmp43 [V56 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inlining Arg" <System.Object>
;* V57 tmp44 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
-; V58 tmp45 [V58,T60] ( 3, 0.97) int -> rcx "guarded devirt return temp"
+; V58 tmp45 [V58,T57] ( 3, 0.97) int -> rcx "guarded devirt return temp"
;* V59 tmp46 [V59 ] ( 0, 0 ) ref -> zero-ref "guarded devirt arg temp"
;* V60 tmp47 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.MetadataImageReference>
;* V61 tmp48 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V62 tmp49 [V62 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V63 tmp50 [V63 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V64 tmp51 [V64,T64] ( 3, 0.16) int -> rax "Inlining Arg"
-; V65 tmp52 [V65,T62] ( 3, 0.16) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
-; V66 tmp53 [V66,T63] ( 3, 0.16) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
+; V64 tmp51 [V64,T61] ( 3, 0.16) int -> rsi "Inlining Arg"
+; V65 tmp52 [V65,T59] ( 3, 0.16) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
+; V66 tmp53 [V66,T60] ( 3, 0.16) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
;* V67 tmp54 [V67 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V68 tmp55 [V68,T71] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V68 tmp55 [V68,T68] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V69 tmp56 [V69 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V70 tmp57 [V70,T72] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V70 tmp57 [V70,T69] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V71 tmp58 [V71 ] ( 12, 4.44) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V04._items (fldOffset=0x0)" P-DEP
; V72 tmp59 [V72 ] ( 17, 6.90) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V04._length (fldOffset=0x8)" P-DEP
-; V73 tmp60 [V73,T43] ( 2, 2.04) ref -> rdi single-def "field V46._items (fldOffset=0x0)" P-INDEP
-; V74 tmp61 [V74,T44] ( 2, 2.04) int -> rsi single-def "field V46._length (fldOffset=0x8)" P-INDEP
-; V75 tmp62 [V75,T68] ( 2, 0.05) ref -> rdi single-def "field V61._items (fldOffset=0x0)" P-INDEP
-; V76 tmp63 [V76,T69] ( 2, 0.05) int -> rax single-def "field V61._length (fldOffset=0x8)" P-INDEP
+; V73 tmp60 [V73,T41] ( 2, 2.04) ref -> rdi single-def "field V46._items (fldOffset=0x0)" P-INDEP
+; V74 tmp61 [V74,T42] ( 2, 2.04) int -> rsi single-def "field V46._length (fldOffset=0x8)" P-INDEP
+; V75 tmp62 [V75,T65] ( 2, 0.05) ref -> rdi single-def "field V61._items (fldOffset=0x0)" P-INDEP
+; V76 tmp63 [V76,T66] ( 2, 0.05) int -> rsi single-def "field V61._length (fldOffset=0x8)" P-INDEP
; V77 tmp64 [V77,T07] ( 3, 6.13) int -> rdx "index expr"
; V78 tmp65 [V78,T08] ( 3, 6.13) int -> rsi "index expr"
-; V79 tmp66 [V79,T22] ( 2, 3.82) long -> rsi "argument with side effect"
-; V80 tmp67 [V80,T50] ( 2, 1.95) long -> rsi "argument with side effect"
-; V81 tmp68 [V81,T53] ( 2, 1.87) long -> rsi "argument with side effect"
-; V82 tmp69 [V82,T67] ( 2, 0.11) int -> rsi "argument with side effect"
-; V83 tmp70 [V83,T65] ( 3, 0.16) int -> rcx "index expr"
-; V84 tmp71 [V84,T66] ( 3, 0.16) int -> rax "index expr"
-; V85 tmp72 [V85,T42] ( 2, 2.05) long -> rsi "argument with side effect"
-; V86 tmp73 [V86,T106] ( 2, 0 ) long -> rsi "argument with side effect"
-; V87 tmp74 [V87,T105] ( 2, 0 ) ref -> rsi "argument with side effect"
-; V88 tmp75 [V88,T107] ( 2, 0 ) long -> rsi "argument with side effect"
-; V89 tmp76 [V89,T108] ( 2, 0 ) long -> rdi "argument with side effect"
-; V90 tmp77 [V90,T109] ( 2, 0 ) long -> rsi "argument with side effect"
-; V91 tmp78 [V91,T110] ( 2, 0 ) long -> rdi "argument with side effect"
-; V92 tmp79 [V92,T51] ( 2, 1.95) long -> rsi "argument with side effect"
-; V93 cse0 [V93,T80] ( 3, 0.00) int -> r12 "CSE - conservative"
-; V94 rat0 [V94,T74] ( 3, 0.02) long -> rdi "Spilling to split statement for tree"
-; V95 rat1 [V95,T73] ( 3, 0.03) long -> r11 "fgMakeTemp is creating a new local variable"
-; V96 rat2 [V96,T16] ( 3, 4.43) long -> rdi "Spilling to split statement for tree"
-; V97 rat3 [V97,T20] ( 3, 4.02) long -> rsi "runtime lookup"
+; V79 tmp66 [V79,T20] ( 2, 3.82) long -> rsi "argument with side effect"
+; V80 tmp67 [V80,T47] ( 2, 1.95) long -> rsi "argument with side effect"
+; V81 tmp68 [V81,T50] ( 2, 1.87) long -> rsi "argument with side effect"
+; V82 tmp69 [V82,T64] ( 2, 0.11) int -> rsi "argument with side effect"
+; V83 tmp70 [V83,T62] ( 3, 0.16) int -> rax "index expr"
+; V84 tmp71 [V84,T63] ( 3, 0.16) int -> rsi "index expr"
+; V85 tmp72 [V85,T40] ( 2, 2.05) long -> rsi "argument with side effect"
+; V86 tmp73 [V86,T103] ( 2, 0 ) long -> rsi "argument with side effect"
+; V87 tmp74 [V87,T102] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V88 tmp75 [V88,T104] ( 2, 0 ) long -> rsi "argument with side effect"
+; V89 tmp76 [V89,T105] ( 2, 0 ) long -> rdi "argument with side effect"
+; V90 tmp77 [V90,T106] ( 2, 0 ) long -> rsi "argument with side effect"
+; V91 tmp78 [V91,T107] ( 2, 0 ) long -> rdi "argument with side effect"
+; V92 tmp79 [V92,T48] ( 2, 1.95) long -> rsi "argument with side effect"
+; V93 cse0 [V93,T77] ( 3, 0.00) int -> r13 "CSE - conservative"
+; V94 rat0 [V94,T71] ( 3, 0.02) long -> rdi "Spilling to split statement for tree"
+; V95 rat1 [V95,T70] ( 3, 0.03) long -> r11 "fgMakeTemp is creating a new local variable"
+; V96 rat2 [V96,T15] ( 3, 4.43) long -> rdi "Spilling to split statement for tree"
+; V97 rat3 [V97,T18] ( 3, 4.02) long -> rsi "runtime lookup"
; V98 rat4 [V98,T09] ( 3, 5.63) long -> rsi "fgMakeTemp is creating a new local variable"
-;* V99 rat5 [V99,T17] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V100 rat6 [V100,T46] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V101 rat7 [V101,T10] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V102 rat8 [V102,T03] ( 2, 5.90) long -> rdi "Spilling to split statement for tree"
-;* V103 rat9 [V103,T26] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V104 rat10 [V104,T01] ( 2, 5.90) long -> rdi "fgMakeTemp is creating a new local variable"
-; V105 rat11 [V105,T18] ( 3, 4.21) long -> rdi "Spilling to split statement for tree"
-; V106 rat12 [V106,T21] ( 3, 3.82) long -> rsi "runtime lookup"
-; V107 rat13 [V107,T12] ( 3, 5.35) long -> rsi "fgMakeTemp is creating a new local variable"
-; V108 rat14 [V108,T36] ( 3, 2.14) long -> rdi "Spilling to split statement for tree"
-; V109 rat15 [V109,T48] ( 3, 1.95) long -> rsi "runtime lookup"
-; V110 rat16 [V110,T29] ( 3, 2.73) long -> rsi "fgMakeTemp is creating a new local variable"
-; V111 rat17 [V111,T38] ( 3, 2.06) long -> rdi "Spilling to split statement for tree"
-; V112 rat18 [V112,T52] ( 3, 1.87) long -> rsi "runtime lookup"
-; V113 rat19 [V113,T31] ( 3, 2.62) long -> rsi "fgMakeTemp is creating a new local variable"
-;* V114 rat20 [V114,T39] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V115 rat21 [V115,T61] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V116 rat22 [V116,T32] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V117 rat23 [V117,T37] ( 3, 2.14) long -> rdi "Spilling to split statement for tree"
-; V118 rat24 [V118,T49] ( 3, 1.95) long -> rsi "runtime lookup"
-; V119 rat25 [V119,T30] ( 3, 2.73) long -> rsi "fgMakeTemp is creating a new local variable"
-; V120 rat26 [V120,T84] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
-; V121 rat27 [V121,T85] ( 3, 0 ) long -> rdi "runtime lookup"
-; V122 rat28 [V122,T86] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
-;* V123 rat29 [V123,T77] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V124 rat30 [V124,T81] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V125 rat31 [V125,T75] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V99 rat5 [V99,T03] ( 2, 5.90) long -> rdi "Spilling to split statement for tree"
+;* V100 rat6 [V100,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V101 rat7 [V101,T01] ( 2, 5.90) long -> rdi "fgMakeTemp is creating a new local variable"
+; V102 rat8 [V102,T16] ( 3, 4.21) long -> rdi "Spilling to split statement for tree"
+; V103 rat9 [V103,T19] ( 3, 3.82) long -> rsi "runtime lookup"
+; V104 rat10 [V104,T11] ( 3, 5.35) long -> rsi "fgMakeTemp is creating a new local variable"
+; V105 rat11 [V105,T34] ( 3, 2.14) long -> rdi "Spilling to split statement for tree"
+; V106 rat12 [V106,T45] ( 3, 1.95) long -> rsi "runtime lookup"
+; V107 rat13 [V107,T27] ( 3, 2.73) long -> rsi "fgMakeTemp is creating a new local variable"
+; V108 rat14 [V108,T36] ( 3, 2.06) long -> rdi "Spilling to split statement for tree"
+; V109 rat15 [V109,T49] ( 3, 1.87) long -> rsi "runtime lookup"
+; V110 rat16 [V110,T29] ( 3, 2.62) long -> rsi "fgMakeTemp is creating a new local variable"
+; V111 rat17 [V111,T37] ( 2, 1.87) long -> rdi "Spilling to split statement for tree"
+;* V112 rat18 [V112,T58] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V113 rat19 [V113,T30] ( 2, 1.87) long -> rdi "fgMakeTemp is creating a new local variable"
+; V114 rat20 [V114,T35] ( 3, 2.14) long -> rdi "Spilling to split statement for tree"
+; V115 rat21 [V115,T46] ( 3, 1.95) long -> rsi "runtime lookup"
+; V116 rat22 [V116,T28] ( 3, 2.73) long -> rsi "fgMakeTemp is creating a new local variable"
+; V117 rat23 [V117,T81] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
+; V118 rat24 [V118,T82] ( 3, 0 ) long -> rdi "runtime lookup"
+; V119 rat25 [V119,T83] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+;* V120 rat26 [V120,T74] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V121 rat27 [V121,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V122 rat28 [V122,T72] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V123 rat29 [V123,T84] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
+; V124 rat30 [V124,T85] ( 3, 0 ) long -> rsi "runtime lookup"
+; V125 rat31 [V125,T86] ( 3, 0 ) long -> rsi "fgMakeTemp is creating a new local variable"
; V126 rat32 [V126,T87] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
-; V127 rat33 [V127,T88] ( 3, 0 ) long -> rsi "runtime lookup"
-; V128 rat34 [V128,T89] ( 3, 0 ) long -> rsi "fgMakeTemp is creating a new local variable"
-; V129 rat35 [V129,T90] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
-; V130 rat36 [V130,T91] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
-; V131 rat37 [V131,T92] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
-; V132 rat38 [V132,T93] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
-; V133 rat39 [V133,T94] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
-; V134 rat40 [V134,T95] ( 3, 0 ) long -> rsi "runtime lookup"
-; V135 rat41 [V135,T96] ( 3, 0 ) long -> rsi "fgMakeTemp is creating a new local variable"
-;* V136 rat42 [V136,T97] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V137 rat43 [V137,T111] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V138 rat44 [V138,T98] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V127 rat33 [V127,T88] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V128 rat34 [V128,T89] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
+; V129 rat35 [V129,T90] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
+; V130 rat36 [V130,T91] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
+; V131 rat37 [V131,T92] ( 3, 0 ) long -> rsi "runtime lookup"
+; V132 rat38 [V132,T93] ( 3, 0 ) long -> rsi "fgMakeTemp is creating a new local variable"
+;* V133 rat39 [V133,T94] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V134 rat40 [V134,T108] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V135 rat41 [V135,T95] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V136 rat42 [V136,T96] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
+; V137 rat43 [V137,T97] ( 3, 0 ) long -> rsi "runtime lookup"
+; V138 rat44 [V138,T98] ( 3, 0 ) long -> rsi "fgMakeTemp is creating a new local variable"
; V139 rat45 [V139,T99] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
-; V140 rat46 [V140,T100] ( 3, 0 ) long -> rsi "runtime lookup"
-; V141 rat47 [V141,T101] ( 3, 0 ) long -> rsi "fgMakeTemp is creating a new local variable"
-; V142 rat48 [V142,T102] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
-; V143 rat49 [V143,T103] ( 3, 0 ) long -> rdi "runtime lookup"
-; V144 rat50 [V144,T104] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
-; V145 rat51 [V145,T78] ( 3, 0.00) long -> rdi "Spilling to split statement for tree"
-; V146 rat52 [V146,T76] ( 3, 0.00) long -> rsi "fgMakeTemp is creating a new local variable"
-; V147 rat53 [V147,T34] ( 2, 2.07) long -> rdi "Spilling to split statement for tree"
-;* V148 rat54 [V148,T56] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V149 rat55 [V149,T27] ( 2, 2.07) long -> rdi "fgMakeTemp is creating a new local variable"
-; V150 rat56 [V150,T35] ( 3, 2.26) long -> rdi "Spilling to split statement for tree"
-; V151 rat57 [V151,T41] ( 3, 2.05) long -> rsi "runtime lookup"
-; V152 rat58 [V152,T28] ( 3, 2.87) long -> rsi "fgMakeTemp is creating a new local variable"
+; V140 rat46 [V140,T100] ( 3, 0 ) long -> rdi "runtime lookup"
+; V141 rat47 [V141,T101] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V142 rat48 [V142,T75] ( 3, 0.00) long -> rdi "Spilling to split statement for tree"
+; V143 rat49 [V143,T73] ( 3, 0.00) long -> rsi "fgMakeTemp is creating a new local variable"
+; V144 rat50 [V144,T32] ( 2, 2.07) long -> rdi "Spilling to split statement for tree"
+;* V145 rat51 [V145,T53] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V146 rat52 [V146,T25] ( 2, 2.07) long -> rdi "fgMakeTemp is creating a new local variable"
+; V147 rat53 [V147,T33] ( 3, 2.26) long -> rdi "Spilling to split statement for tree"
+; V148 rat54 [V148,T39] ( 3, 2.05) long -> rsi "runtime lookup"
+; V149 rat55 [V149,T26] ( 3, 2.87) long -> rsi "fgMakeTemp is creating a new local variable"
...
librariestestsnotieredcompilation.run.linux.x64.Release.mch
-23 (-5.85%) : 23882.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary
2[System.Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.Canon]):this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 17 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
+; V00 this [V00,T04] ( 7, 16 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V01 arg1 [V01,T13] ( 4, 4 ) ref -> r15 class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
-; V02 arg2 [V02,T16] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V02 arg2 [V02,T15] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V03 loc0 [V03 ] ( 3, 11 ) struct (24) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SmallDictionary`2+Enumerator[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V04 loc1 [V04 ] ( 5, 10 ) struct (32) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (24) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,31 +27,28 @@
; V16 tmp11 [V16 ] ( 3, 11 ) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V03._stack (fldOffset=0x0)" P-DEP
; V17 tmp12 [V17 ] ( 3, 11 ) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V03._next (fldOffset=0x8)" P-DEP
; V18 tmp13 [V18 ] ( 3, 11 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x10)" P-DEP
-; V19 tmp14 [V19,T21] ( 2, 4 ) ref -> r12 "field V11.DefaultType (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T22] ( 2, 4 ) ref -> [rbp-0x90] spill-single-def "field V11._extensions (fldOffset=0x8)" P-INDEP
-; V21 tmp16 [V21,T23] ( 2, 4 ) ubyte -> [rbp-0x84] spill-single-def "field V11.DefaultNullableAnnotation (fldOffset=0x10)" P-INDEP
+; V19 tmp14 [V19,T19] ( 2, 4 ) ref -> r12 "field V11.DefaultType (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T20] ( 2, 4 ) ref -> [rbp-0x90] spill-single-def "field V11._extensions (fldOffset=0x8)" P-INDEP
+; V21 tmp16 [V21,T21] ( 2, 4 ) ubyte -> [rbp-0x84] spill-single-def "field V11.DefaultNullableAnnotation (fldOffset=0x10)" P-INDEP
; V22 tmp17 [V22 ] ( 2, 4 ) ref -> [rbp-0x80] do-not-enreg[X] addr-exposed "field V12._stack (fldOffset=0x0)" P-DEP
; V23 tmp18 [V23 ] ( 2, 4 ) ref -> [rbp-0x78] do-not-enreg[X] addr-exposed "field V12._next (fldOffset=0x8)" P-DEP
; V24 tmp19 [V24 ] ( 2, 4 ) ref -> [rbp-0x70] do-not-enreg[X] addr-exposed "field V12._current (fldOffset=0x10)" P-DEP
-; V25 tmp20 [V25,T24] ( 2, 4 ) long -> rsi "argument with side effect"
+; V25 tmp20 [V25,T22] ( 2, 4 ) long -> rsi "argument with side effect"
; V26 tmp21 [V26,T03] ( 2, 32 ) long -> rsi "argument with side effect"
; V27 tmp22 [V27,T10] ( 2, 8 ) long -> rdx "argument with side effect"
; V28 tmp23 [V28,T11] ( 2, 8 ) int -> rsi "argument with side effect"
-; V29 cse0 [V29,T19] ( 3, 4 ) long -> r13 "CSE - aggressive"
-;* V30 cse1 [V30,T26] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V29 cse0 [V29,T17] ( 3, 4 ) long -> r13 "CSE - aggressive"
+;* V30 cse1 [V30,T23] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; V31 cse2 [V31,T12] ( 4, 4.40) long -> r14 "CSE - aggressive"
-; V32 rat0 [V32,T17] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V33 rat1 [V33,T20] ( 3, 4 ) long -> r13 "runtime lookup"
+; V32 rat0 [V32,T16] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V33 rat1 [V33,T18] ( 3, 4 ) long -> r13 "runtime lookup"
; V34 rat2 [V34,T14] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
-; V35 rat3 [V35,T18] ( 2, 4 ) long -> rdi "Spilling to split statement for tree"
-;* V36 rat4 [V36,T25] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V37 rat5 [V37,T15] ( 2, 4 ) long -> rdi "fgMakeTemp is creating a new local variable"
-;* V38 rat6 [V38,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V39 rat7 [V39,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V40 rat8 [V40,T08] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
-; V41 rat9 [V41,T01] ( 3, 35.20) long -> rdi "Spilling to split statement for tree"
-; V42 rat10 [V42,T02] ( 3, 32 ) long -> rsi "runtime lookup"
-; V43 rat11 [V43,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
+;* V35 rat3 [V35,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V36 rat4 [V36,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V37 rat5 [V37,T08] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
+; V38 rat6 [V38,T01] ( 3, 35.20) long -> rdi "Spilling to split statement for tree"
+; V39 rat7 [V39,T02] ( 3, 32 ) long -> rsi "runtime lookup"
+; V40 rat8 [V40,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 136
@@ -116,14 +113,8 @@ G_M40847_IG06: ; bbWeight=1, nogc, extend
mov qword ptr [rbp-0x38], rdi
;; size=18 bbWeight=1 PerfScore 6.00
G_M40847_IG07: ; bbWeight=1, extend
- mov rdi, qword ptr [rbx]
- mov rdi, qword ptr [rdi+0x38]
- mov rdi, qword ptr [rdi]
- mov rdi, qword ptr [rdi+0x28]
- test rdi, rdi
- jne G_M40847_IG12
jmp G_M40847_IG12
- ;; size=28 bbWeight=1 PerfScore 11.25
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M40847_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, r13
lea rsi, [rbp-0x68]
@@ -145,7 +136,7 @@ G_M40847_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
test r11, r11
je SHORT G_M40847_IG10
;; size=62 bbWeight=2 PerfScore 35.00
-G_M40847_IG09: ; bbWeight=1.60, gcVars=0000000000400000 {V20}, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M40847_IG09: ; bbWeight=1.60, gcVars=0000000000100000 {V20}, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
jmp SHORT G_M40847_IG11
;; size=2 bbWeight=1.60 PerfScore 3.20
@@ -210,7 +201,7 @@ G_M40847_IG16: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
ret
;; size=18 bbWeight=1 PerfScore 4.25
-; Total bytes of code 393, prolog size 52, PerfScore 251.83, instruction count 101, allocated bytes for code 393 (MethodHash=69926070) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 370, prolog size 52, PerfScore 242.58, instruction count 95, allocated bytes for code 370 (MethodHash=69926070) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
-33 (-4.60%) : 68844.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
@@ -8,18 +8,18 @@
; 2 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 9, 15 ) ref -> [rbp-0x138] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]>
+; V00 this [V00,T04] ( 8, 14 ) ref -> [rbp-0x138] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]>
; V01 arg1 [V01,T05] ( 8, 12 ) ref -> rbx class-hnd single-def <System.Array>
; V02 arg2 [V02,T08] ( 6, 8 ) int -> registers
; V03 loc0 [V03 ] ( 5, 12 ) struct (128) [rbp-0xB0] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
-; V04 loc1 [V04,T23] ( 2, 4 ) ref -> r13 class-hnd <System.__Canon>
+; V04 loc1 [V04,T21] ( 2, 4 ) ref -> r13 class-hnd <System.__Canon>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V09 tmp4 [V09,T07] ( 3, 12 ) int -> r15 "impSpillLclRefs"
;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V11 tmp6 [V11,T20] ( 6, 4 ) long -> rax "Indirect call through function pointer"
+; V11 tmp6 [V11,T18] ( 6, 4 ) long -> rax "Indirect call through function pointer"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V14 tmp9 [V14 ] ( 2, 4 ) struct (128) [rbp-0x130] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]>
@@ -29,27 +29,24 @@
; V18 tmp13 [V18,T13] ( 3, 6 ) int -> rdi "Inline stloc first use temp"
; V19 tmp14 [V19,T06] ( 3, 12 ) byref -> [rbp-0x140] spill-single-def "Inlining Arg"
;* V20 tmp15 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp16 [V21,T29] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V22 tmp17 [V22,T24] ( 2, 4 ) long -> rsi "argument with side effect"
+; V21 tmp16 [V21,T26] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V22 tmp17 [V22,T22] ( 2, 4 ) long -> rsi "argument with side effect"
; V23 tmp18 [V23,T03] ( 2, 32 ) long -> rsi "argument with side effect"
; V24 tmp19 [V24,T09] ( 2, 8 ) long -> rsi "argument with side effect"
; V25 tmp20 [V25,T10] ( 2, 8 ) long -> rdx "argument with side effect"
-; V26 PSPSym [V26,T26] ( 1, 1 ) long -> [rbp-0x150] do-not-enreg[V] "PSPSym"
-; V27 cse0 [V27,T21] ( 3, 4 ) long -> r14 "CSE - moderate"
+; V26 PSPSym [V26,T23] ( 1, 1 ) long -> [rbp-0x150] do-not-enreg[V] "PSPSym"
+; V27 cse0 [V27,T19] ( 3, 4 ) long -> r14 "CSE - moderate"
; V28 cse1 [V28,T11] ( 3, 6 ) ref -> rsi "CSE - moderate"
-; V29 rat0 [V29,T17] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
-; V30 rat1 [V30,T22] ( 3, 4 ) long -> r14 "runtime lookup"
+; V29 rat0 [V29,T16] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
+; V30 rat1 [V30,T20] ( 3, 4 ) long -> r14 "runtime lookup"
; V31 rat2 [V31,T14] ( 3, 5.60) long -> r14 "fgMakeTemp is creating a new local variable"
-; V32 rat3 [V32,T18] ( 2, 4 ) long -> rsi "Spilling to split statement for tree"
-;* V33 rat4 [V33,T25] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V34 rat5 [V34,T15] ( 2, 4 ) long -> rsi "fgMakeTemp is creating a new local variable"
-; V35 rat6 [V35,T01] ( 3, 35.20) long -> rsi "Spilling to split statement for tree"
-; V36 rat7 [V36,T02] ( 3, 32 ) long -> rsi "runtime lookup"
-; V37 rat8 [V37,T00] ( 3, 44.80) long -> rax "fgMakeTemp is creating a new local variable"
-; V38 rat9 [V38,T19] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
-; V39 rat10 [V39,T16] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V40 rat11 [V40,T27] ( 3, 0 ) long -> rsi "Spilling to split statement for tree"
-; V41 rat12 [V41,T28] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V32 rat3 [V32,T01] ( 3, 35.20) long -> rsi "Spilling to split statement for tree"
+; V33 rat4 [V33,T02] ( 3, 32 ) long -> rsi "runtime lookup"
+; V34 rat5 [V34,T00] ( 3, 44.80) long -> rax "fgMakeTemp is creating a new local variable"
+; V35 rat6 [V35,T17] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
+; V36 rat7 [V36,T15] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V37 rat8 [V37,T24] ( 3, 0 ) long -> rsi "Spilling to split statement for tree"
+; V38 rat9 [V38,T25] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 296
@@ -131,18 +128,9 @@ G_M30256_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=51 bbWeight=1 PerfScore 33.25
G_M30256_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rsi rdi]
- mov rdi, gword ptr [rbp-0x138]
- ; gcrRegs +[rdi]
- mov rsi, qword ptr [rdi]
- mov rsi, qword ptr [rsi+0x38]
- mov rsi, qword ptr [rsi]
- mov rsi, qword ptr [rsi+0x98]
- test rsi, rsi
- jne G_M30256_IG10
jmp SHORT G_M30256_IG10
- ;; size=35 bbWeight=1 PerfScore 12.25
+ ;; size=2 bbWeight=1 PerfScore 2.00
G_M30256_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
mov rsi, r14
lea rdi, [rbp-0xB0]
call [System.Collections.Immutable.ImmutableHashSet`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this]
@@ -194,17 +182,17 @@ G_M30256_IG09: ; bbWeight=2, gcVars=0000000000000010 {V00}, gcrefRegs=200
; gcrRegs -[rsi rdi r13]
; gcr arg pop 0
mov r15d, r12d
+ ;; size=29 bbWeight=2 PerfScore 11.00
+G_M30256_IG10: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbp-0x138]
; gcrRegs +[rdi]
- ;; size=36 bbWeight=2 PerfScore 13.00
-G_M30256_IG10: ; bbWeight=8, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
mov rsi, qword ptr [rdi]
mov rax, qword ptr [rsi+0x38]
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x98]
test rax, rax
je SHORT G_M30256_IG12
- ;; size=22 bbWeight=8 PerfScore 74.00
+ ;; size=29 bbWeight=8 PerfScore 82.00
G_M30256_IG11: ; bbWeight=6.40, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
mov rsi, rax
@@ -349,7 +337,7 @@ G_M30256_IG28: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 718, prolog size 96, PerfScore 293.88, instruction count 178, allocated bytes for code 718 (MethodHash=c83889cf) for method System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
+; Total bytes of code 685, prolog size 96, PerfScore 289.63, instruction count 171, allocated bytes for code 685 (MethodHash=c83889cf) for method System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
; ============================================================
Unwind Info:
-33 (-3.98%) : 71250.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
@@ -8,7 +8,7 @@
; 2 inlinees with PGO data; 11 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 14 ) ref -> [rbp-0x158] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]>
+; V00 this [V00,T05] ( 7, 13 ) ref -> [rbp-0x158] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]>
; V01 arg1 [V01,T06] ( 8, 12 ) ref -> rbx class-hnd single-def <System.Array>
; V02 arg2 [V02,T11] ( 6, 8 ) int -> [rbp-0x34]
; V03 loc0 [V03 ] ( 5, 12 ) struct (136) [rbp-0xC0] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,int]>
@@ -22,10 +22,10 @@
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.__Canon>
; V12 tmp7 [V12,T07] ( 3, 12 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.Int32>
;* V13 tmp8 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.DictionaryEntry>
-; V14 tmp9 [V14,T05] ( 4, 16 ) ref -> [rbp-0x160] class-hnd exact spill-single-def "Single-def Box Helper" <System.Collections.DictionaryEntry>
+; V14 tmp9 [V14,T04] ( 4, 16 ) ref -> [rbp-0x160] class-hnd exact spill-single-def "Single-def Box Helper" <System.Collections.DictionaryEntry>
; V15 tmp10 [V15,T09] ( 3, 12 ) int -> r15 "impSpillLclRefs"
;* V16 tmp11 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V17 tmp12 [V17,T24] ( 6, 4 ) long -> rcx "Indirect call through function pointer"
+; V17 tmp12 [V17,T22] ( 6, 4 ) long -> rcx "Indirect call through function pointer"
;* V18 tmp13 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp14 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V20 tmp15 [V20 ] ( 2, 4 ) struct (136) [rbp-0x148] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,int]>
@@ -37,34 +37,31 @@
; V26 tmp21 [V26,T17] ( 3, 6 ) int -> rdi "Inline stloc first use temp"
; V27 tmp22 [V27,T08] ( 3, 12 ) byref -> [rbp-0x168] spill-single-def "Inlining Arg"
;* V28 tmp23 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V29 tmp24 [V29,T27] ( 2, 4 ) ref -> r12 "field V04.key (fldOffset=0x0)" P-INDEP
-; V30 tmp25 [V30,T30] ( 2, 4 ) int -> [rbp-0x14C] spill-single-def "field V04.value (fldOffset=0x8)" P-INDEP
-; V31 tmp26 [V31,T28] ( 2, 4 ) ref -> r12 "field V13._key (fldOffset=0x0)" P-INDEP
-; V32 tmp27 [V32,T29] ( 2, 4 ) ref -> [rbp-0x170] spill-single-def "field V13._value (fldOffset=0x8)" P-INDEP
-; V33 tmp28 [V33,T37] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V34 tmp29 [V34,T31] ( 2, 4 ) long -> rsi "argument with side effect"
+; V29 tmp24 [V29,T25] ( 2, 4 ) ref -> r12 "field V04.key (fldOffset=0x0)" P-INDEP
+; V30 tmp25 [V30,T28] ( 2, 4 ) int -> [rbp-0x14C] spill-single-def "field V04.value (fldOffset=0x8)" P-INDEP
+; V31 tmp26 [V31,T26] ( 2, 4 ) ref -> r12 "field V13._key (fldOffset=0x0)" P-INDEP
+; V32 tmp27 [V32,T27] ( 2, 4 ) ref -> [rbp-0x170] spill-single-def "field V13._value (fldOffset=0x8)" P-INDEP
+; V33 tmp28 [V33,T34] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V34 tmp29 [V34,T29] ( 2, 4 ) long -> rsi "argument with side effect"
; V35 tmp30 [V35,T03] ( 2, 32 ) long -> rsi "argument with side effect"
; V36 tmp31 [V36,T13] ( 2, 8 ) long -> rsi "argument with side effect"
; V37 tmp32 [V37,T14] ( 2, 8 ) long -> rdx "argument with side effect"
-; V38 PSPSym [V38,T34] ( 1, 1 ) long -> [rbp-0x180] do-not-enreg[V] "PSPSym"
-; V39 cse0 [V39,T25] ( 3, 4 ) long -> r13 "CSE - moderate"
-;* V40 cse1 [V40,T33] ( 0, 0 ) long -> zero-ref "CSE - moderate"
+; V38 PSPSym [V38,T31] ( 1, 1 ) long -> [rbp-0x180] do-not-enreg[V] "PSPSym"
+; V39 cse0 [V39,T23] ( 3, 4 ) long -> r13 "CSE - moderate"
+;* V40 cse1 [V40,T30] ( 0, 0 ) long -> zero-ref "CSE - moderate"
; V41 cse2 [V41,T18] ( 6, 3.20) long -> r14 multi-def "CSE - moderate"
; V42 cse3 [V42,T15] ( 3, 6 ) ref -> rsi "CSE - moderate"
-; V43 rat0 [V43,T22] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
-; V44 rat1 [V44,T26] ( 3, 4 ) long -> r13 "runtime lookup"
+; V43 rat0 [V43,T21] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
+; V44 rat1 [V44,T24] ( 3, 4 ) long -> r13 "runtime lookup"
; V45 rat2 [V45,T19] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
-; V46 rat3 [V46,T23] ( 2, 4 ) long -> rsi "Spilling to split statement for tree"
-;* V47 rat4 [V47,T32] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V48 rat5 [V48,T20] ( 2, 4 ) long -> rsi "fgMakeTemp is creating a new local variable"
-;* V49 rat6 [V49,T12] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V50 rat7 [V50,T10] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V51 rat8 [V51,T01] ( 3, 35.20) long -> rsi "Spilling to split statement for tree"
-; V52 rat9 [V52,T02] ( 3, 32 ) long -> rsi "runtime lookup"
-; V53 rat10 [V53,T00] ( 3, 44.80) long -> rax "fgMakeTemp is creating a new local variable"
-; V54 rat11 [V54,T21] ( 3, 5.60) long -> rcx "fgMakeTemp is creating a new local variable"
-; V55 rat12 [V55,T35] ( 3, 0 ) long -> r14 "Spilling to split statement for tree"
-; V56 rat13 [V56,T36] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable"
+;* V46 rat3 [V46,T12] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V47 rat4 [V47,T10] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V48 rat5 [V48,T01] ( 3, 35.20) long -> rsi "Spilling to split statement for tree"
+; V49 rat6 [V49,T02] ( 3, 32 ) long -> rsi "runtime lookup"
+; V50 rat7 [V50,T00] ( 3, 44.80) long -> rax "fgMakeTemp is creating a new local variable"
+; V51 rat8 [V51,T20] ( 3, 5.60) long -> rcx "fgMakeTemp is creating a new local variable"
+; V52 rat9 [V52,T32] ( 3, 0 ) long -> r14 "Spilling to split statement for tree"
+; V53 rat10 [V53,T33] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 344
@@ -96,7 +93,7 @@ G_M43108_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
mov r15d, edx
;; size=109 bbWeight=1 PerfScore 22.33
-G_M43108_IG02: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43108_IG02: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rdi]
test rbx, rbx
je G_M43108_IG22
@@ -150,18 +147,9 @@ G_M43108_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=51 bbWeight=1 PerfScore 33.25
G_M43108_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; byrRegs -[rsi rdi]
- mov rdi, gword ptr [rbp-0x158]
- ; gcrRegs +[rdi]
- mov rsi, qword ptr [rdi]
- mov rsi, qword ptr [rsi+0x38]
- mov rsi, qword ptr [rsi]
- mov rsi, qword ptr [rsi+0xA8]
- test rsi, rsi
- jne G_M43108_IG10
jmp G_M43108_IG10
- ;; size=38 bbWeight=1 PerfScore 12.25
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M43108_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
mov rsi, r13
lea rdi, [rbp-0xC0]
call [System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,int]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,int]:this]
@@ -242,18 +230,18 @@ G_M43108_IG09: ; bbWeight=2, gcVars=0000000000000030 {V00 V14}, gcrefRegs
call <unknown method>
; gcrRegs -[rsi rdi r12]
; gcr arg pop 0
+ mov r15d, dword ptr [rbp-0x34]
+ ;; size=30 bbWeight=2 PerfScore 12.50
+G_M43108_IG10: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbp-0x158]
; gcrRegs +[rdi]
- mov r15d, dword ptr [rbp-0x34]
- ;; size=37 bbWeight=2 PerfScore 14.50
-G_M43108_IG10: ; bbWeight=8, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
mov rsi, qword ptr [rdi]
mov rax, qword ptr [rsi+0x38]
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0xA8]
test rax, rax
je SHORT G_M43108_IG12
- ;; size=22 bbWeight=8 PerfScore 74.00
+ ;; size=29 bbWeight=8 PerfScore 82.00
G_M43108_IG11: ; bbWeight=6.40, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
mov rsi, rax
@@ -316,7 +304,7 @@ G_M43108_IG20: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 4.25
-G_M43108_IG21: ; bbWeight=0, gcVars=0000000000000010 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M43108_IG21: ; bbWeight=0, gcVars=0000000000000020 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_OVERFLOW
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
@@ -360,7 +348,7 @@ G_M43108_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x180]
;; size=25 bbWeight=0 PerfScore 0.00
-G_M43108_IG25: ; bbWeight=0, gcVars=0000000000000010 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43108_IG25: ; bbWeight=0, gcVars=0000000000000020 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
mov rdi, gword ptr [rbp-0x158]
; gcrRegs +[rdi]
mov r14, qword ptr [rdi]
@@ -396,7 +384,7 @@ G_M43108_IG28: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 829, prolog size 109, PerfScore 321.93, instruction count 198, allocated bytes for code 829 (MethodHash=0ff5579b) for method System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
+; Total bytes of code 796, prolog size 109, PerfScore 317.68, instruction count 191, allocated bytes for code 796 (MethodHash=0ff5579b) for method System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 9834.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable
1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)
@@ -16,7 +16,7 @@
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
; V06 loc3 [V06,T13] ( 4, 5 ) int -> r14
; V07 loc4 [V07,T14] ( 4, 5 ) int -> [rbp-0x34]
-; V08 loc5 [V08,T38] ( 3, 1.50) int -> rbx
+; V08 loc5 [V08,T36] ( 3, 1.50) int -> rbx
; V09 loc6 [V09,T07] ( 13, 11.50) ref -> [rbp-0x68] do-not-enreg[M] class-hnd EH-live <<unknown class>>
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
; V11 loc8 [V11,T05] ( 5, 14 ) int -> rax
@@ -39,7 +39,7 @@
; V28 tmp16 [V28 ] ( 3, 3 ) struct ( 8) [rbp-0x48] do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
; V29 tmp17 [V29,T17] ( 8, 4 ) int -> r13 "Inline return value spill temp"
; V30 tmp18 [V30,T23] ( 3, 3 ) int -> r14 "Inlining Arg"
-; V31 tmp19 [V31,T34] ( 2, 2 ) long -> r14 "Inlining Arg"
+; V31 tmp19 [V31,T32] ( 2, 2 ) long -> r14 "Inlining Arg"
; V32 tmp20 [V32,T22] ( 3, 3 ) ref -> rax class-hnd exact single-def "Inlining Arg" <int[]>
;* V33 tmp21 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V34 tmp22 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -51,24 +51,24 @@
; V40 tmp28 [V40,T18] ( 5, 4.00) long -> [rbp-0x50] spill-single-def "Inlining Arg"
;* V41 tmp29 [V41 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V42 tmp30 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V43 tmp31 [V43,T35] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V43 tmp31 [V43,T33] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V44 tmp32 [V44,T09] ( 3, 6 ) int -> r11 "Inline stloc first use temp"
; V45 tmp33 [V45,T10] ( 3, 6 ) int -> rdi "Inline stloc first use temp"
; V46 tmp34 [V46,T06] ( 3, 12 ) byref -> rdi "dup spill"
;* V47 tmp35 [V47 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp36 [V48 ] ( 0, 0 ) int -> zero-ref single-def "field V04._length (fldOffset=0x8)" P-INDEP
-; V49 tmp37 [V49,T44] ( 4, 1.50) byref -> r14 single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+; V49 tmp37 [V49,T42] ( 4, 1.50) byref -> r14 single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp38 [V50 ] ( 0, 0 ) int -> zero-ref single-def "field V13._length (fldOffset=0x8)" P-INDEP
;* V51 tmp39 [V51 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V52 tmp40 [V52 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
-; V53 tmp41 [V53,T40] ( 2, 1.50) int -> [rbp-0x40] do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
-; V54 tmp42 [V54,T41] ( 2, 1.50) int -> [rbp-0x3C] do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
+; V53 tmp41 [V53,T38] ( 2, 1.50) int -> [rbp-0x40] do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
+; V54 tmp42 [V54,T39] ( 2, 1.50) int -> [rbp-0x3C] do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
;* V55 tmp43 [V55 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V56 tmp44 [V56 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
-; V57 tmp45 [V57,T42] ( 2, 1.50) int -> [rbp-0x48] do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
-; V58 tmp46 [V58,T43] ( 2, 1.50) int -> [rbp-0x44] do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
-; V59 tmp47 [V59,T45] ( 2, 1 ) byref -> r12 "field V33._reference (fldOffset=0x0)" P-INDEP
-; V60 tmp48 [V60,T46] ( 2, 1 ) int -> r13 "field V33._length (fldOffset=0x8)" P-INDEP
+; V57 tmp45 [V57,T40] ( 2, 1.50) int -> [rbp-0x48] do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
+; V58 tmp46 [V58,T41] ( 2, 1.50) int -> [rbp-0x44] do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
+; V59 tmp47 [V59,T43] ( 2, 1 ) byref -> r12 "field V33._reference (fldOffset=0x0)" P-INDEP
+; V60 tmp48 [V60,T44] ( 2, 1 ) int -> r13 "field V33._length (fldOffset=0x8)" P-INDEP
;* V61 tmp49 [V61 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V62 tmp50 [V62 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V63 tmp51 [V63 ] ( 0, 0 ) byref -> zero-ref single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -77,26 +77,23 @@
;* V66 tmp54 [V66 ] ( 0, 0 ) int -> zero-ref single-def "field V39._length (fldOffset=0x8)" P-INDEP
; V67 tmp55 [V67,T15] ( 3, 4.50) byref -> r12 single-def "V05.[000..008)"
; V68 tmp56 [V68,T16] ( 3, 4.50) int -> r13 single-def "V05.[008..012)"
-; V69 tmp57 [V69,T36] ( 3, 1.50) byref -> r12 "V16.[000..008)"
-; V70 tmp58 [V70,T39] ( 3, 1.50) int -> r13 "V16.[008..012)"
+; V69 tmp57 [V69,T34] ( 3, 1.50) byref -> r12 "V16.[000..008)"
+; V70 tmp58 [V70,T37] ( 3, 1.50) int -> r13 "V16.[008..012)"
; V71 tmp59 [V71,T03] ( 2, 16 ) ref -> rsi "argument with side effect"
; V72 GsCookie [V72 ] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V73 PSPSym [V73,T48] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[V] "PSPSym"
+; V73 PSPSym [V73,T45] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[V] "PSPSym"
; V74 cse0 [V74,T11] ( 3, 6 ) int -> rdi "CSE - moderate"
-; V75 cse1 [V75,T37] ( 3, 1.50) ref -> rsi "CSE - moderate"
-; V76 rat0 [V76,T30] ( 3, 2.20) long -> rsi "Spilling to split statement for tree"
+; V75 cse1 [V75,T35] ( 3, 1.50) ref -> rsi "CSE - moderate"
+; V76 rat0 [V76,T29] ( 3, 2.20) long -> rsi "Spilling to split statement for tree"
; V77 rat1 [V77,T26] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-; V78 rat2 [V78,T31] ( 3, 2.20) long -> rsi "Spilling to split statement for tree"
+; V78 rat2 [V78,T30] ( 3, 2.20) long -> rsi "Spilling to split statement for tree"
; V79 rat3 [V79,T27] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-; V80 rat4 [V80,T32] ( 3, 2.20) long -> rsi "Spilling to split statement for tree"
+; V80 rat4 [V80,T31] ( 3, 2.20) long -> rsi "Spilling to split statement for tree"
; V81 rat5 [V81,T28] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V82 rat6 [V82,T33] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V83 rat7 [V83,T47] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V84 rat8 [V84,T29] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V85 rat9 [V85,T02] ( 3, 17.60) long -> rsi "Spilling to split statement for tree"
-; V86 rat10 [V86,T01] ( 3, 22.40) long -> r11 "fgMakeTemp is creating a new local variable"
-; V87 rat11 [V87,T24] ( 3, 3 ) int -> r14 "ReplaceWithLclVar is creating a new local variable"
-; V88 rat12 [V88,T25] ( 3, 3 ) long -> [rbp-0x58] spill-single-def "ReplaceWithLclVar is creating a new local variable"
+; V82 rat6 [V82,T02] ( 3, 17.60) long -> rsi "Spilling to split statement for tree"
+; V83 rat7 [V83,T01] ( 3, 22.40) long -> r11 "fgMakeTemp is creating a new local variable"
+; V84 rat8 [V84,T24] ( 3, 3 ) int -> r14 "ReplaceWithLclVar is creating a new local variable"
+; V85 rat9 [V85,T25] ( 3, 3 ) long -> [rbp-0x58] spill-single-def "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 88
+0 (0.00%) : 67335.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Canon,System.Canon]:CopyToObjects(System.Object[],int):this (FullOpts)
@@ -11,7 +11,7 @@
; V00 this [V00,T10] ( 4, 4 ) ref -> r15 this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T11] ( 3, 18 ) ref -> r14 class-hnd single-def <System.Object[]>
; V02 arg2 [V02,T06] ( 5, 50 ) int -> rbx
-; V03 loc0 [V03,T17] ( 3, 6 ) ref -> r13 class-hnd exact single-def <<unknown class>>
+; V03 loc0 [V03,T15] ( 3, 6 ) ref -> r13 class-hnd exact single-def <<unknown class>>
; V04 loc1 [V04,T12] ( 5, 17 ) int -> r12
;* V05 loc2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Concurrent.ConcurrentDictionary`2+VolatileNode[System.__Canon,System.__Canon]>
; V06 loc3 [V06,T02] ( 7, 88 ) ref -> [rbp-0x48] class-hnd <<unknown class>>
@@ -22,20 +22,17 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V12 tmp5 [V12,T04] ( 2, 64 ) ref -> rsi class-hnd "Inlining Arg" <System.__Canon>
; V13 tmp6 [V13,T05] ( 2, 64 ) ref -> r8 class-hnd "Inlining Arg" <System.__Canon>
-; V14 tmp7 [V14,T16] ( 2, 8 ) ref -> rdx "field V05._node (fldOffset=0x0)" P-INDEP
+; V14 tmp7 [V14,T14] ( 2, 8 ) ref -> rdx "field V05._node (fldOffset=0x0)" P-INDEP
; V15 tmp8 [V15,T07] ( 2, 32 ) ref -> [rbp-0x58] spill-single-def "field V08.key (fldOffset=0x0)" P-INDEP
; V16 tmp9 [V16,T08] ( 2, 32 ) ref -> [rbp-0x60] spill-single-def "field V08.value (fldOffset=0x8)" P-INDEP
; V17 cse0 [V17,T13] ( 2, 17 ) long -> [rbp-0x38] spill-single-def hoist "CSE - moderate"
-; V18 cse1 [V18,T18] ( 3, 6 ) int -> [rbp-0x3C] spill-single-def "CSE - moderate"
-; V19 rat0 [V19,T20] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V20 rat1 [V20,T21] ( 3, 4 ) long -> registers "runtime lookup"
-; V21 rat2 [V21,T19] ( 3, 5.60) long -> rcx "fgMakeTemp is creating a new local variable"
-;* V22 rat3 [V22,T15] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V23 rat4 [V23,T22] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V24 rat5 [V24,T14] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V25 rat6 [V25,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V26 rat7 [V26,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V27 rat8 [V27,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V18 cse1 [V18,T16] ( 3, 6 ) int -> [rbp-0x3C] spill-single-def "CSE - moderate"
+; V19 rat0 [V19,T18] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V20 rat1 [V20,T19] ( 3, 4 ) long -> registers "runtime lookup"
+; V21 rat2 [V21,T17] ( 3, 5.60) long -> rcx "fgMakeTemp is creating a new local variable"
+;* V22 rat3 [V22,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V23 rat4 [V23,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V24 rat5 [V24,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 56
+0 (0.00%) : 4860.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)
@@ -23,11 +23,11 @@
; V12 loc9 [V12,T14] ( 4, 14 ) byref -> [rbp-0x68] spill-single-def
; V13 loc10 [V13,T17] ( 6, 13.50) int -> [rbp-0x4C]
; V14 loc11 [V14,T15] ( 4, 14 ) byref -> [rbp-0x70] spill-single-def
-; V15 loc12 [V15,T66] ( 3, 1.50) int -> r12 single-def
+; V15 loc12 [V15,T62] ( 3, 1.50) int -> r12 single-def
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp2 [V18,T31] ( 4, 3 ) long -> r11 "VirtualCall with runtime lookup"
-; V19 tmp3 [V19,T67] ( 3, 1.50) int -> rax
+; V19 tmp3 [V19,T63] ( 3, 1.50) int -> rax
;* V20 tmp4 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -35,8 +35,8 @@
;* V24 tmp8 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp10 [V26,T28] ( 4, 4 ) byref -> rax single-def "dup spill"
-; V27 tmp11 [V27,T61] ( 3, 2 ) long -> rsi "spilling helperCall"
-; V28 tmp12 [V28,T68] ( 3, 1.50) int -> r13
+; V27 tmp11 [V27,T57] ( 3, 2 ) long -> rsi "spilling helperCall"
+; V28 tmp12 [V28,T64] ( 3, 1.50) int -> r13
;* V29 tmp13 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp14 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -48,9 +48,9 @@
; V37 tmp21 [V37,T32] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
; V38 tmp22 [V38,T33] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp24 [V40,T80] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp24 [V40,T74] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp26 [V42,T81] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp26 [V42,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V43 tmp27 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -58,9 +58,9 @@
; V47 tmp31 [V47,T34] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
; V48 tmp32 [V48,T35] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V50 tmp34 [V50,T82] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V50 tmp34 [V50,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V52 tmp36 [V52,T83] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V52 tmp36 [V52,T77] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -68,62 +68,56 @@
; V57 tmp41 [V57,T36] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
; V58 tmp42 [V58,T37] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V60 tmp44 [V60,T84] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V60 tmp44 [V60,T78] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V62 tmp46 [V62,T85] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V62 tmp46 [V62,T79] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V63 tmp47 [V63 ] ( 6, 10.50) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64 ] ( 9, 19 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V65 tmp49 [V65,T71] ( 2, 1 ) ref -> rdi single-def "field V33._items (fldOffset=0x0)" P-INDEP
-; V66 tmp50 [V66,T74] ( 2, 1 ) int -> rsi single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V67 tmp51 [V67,T72] ( 2, 1 ) ref -> rdi single-def "field V43._items (fldOffset=0x0)" P-INDEP
-; V68 tmp52 [V68,T75] ( 2, 1 ) int -> rsi single-def "field V43._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T73] ( 2, 1 ) ref -> rdi single-def "field V53._items (fldOffset=0x0)" P-INDEP
-; V70 tmp54 [V70,T76] ( 2, 1 ) int -> rsi single-def "field V53._length (fldOffset=0x8)" P-INDEP
+; V65 tmp49 [V65,T67] ( 2, 1 ) ref -> rdi single-def "field V33._items (fldOffset=0x0)" P-INDEP
+; V66 tmp50 [V66,T70] ( 2, 1 ) int -> rsi single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V67 tmp51 [V67,T68] ( 2, 1 ) ref -> rdi single-def "field V43._items (fldOffset=0x0)" P-INDEP
+; V68 tmp52 [V68,T71] ( 2, 1 ) int -> rsi single-def "field V43._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T69] ( 2, 1 ) ref -> rdi single-def "field V53._items (fldOffset=0x0)" P-INDEP
+; V70 tmp54 [V70,T72] ( 2, 1 ) int -> rsi single-def "field V53._length (fldOffset=0x8)" P-INDEP
; V71 tmp55 [V71,T41] ( 3, 3 ) int -> rcx "index expr"
; V72 tmp56 [V72,T42] ( 3, 3 ) int -> rsi "index expr"
; V73 tmp57 [V73,T43] ( 3, 3 ) int -> rax "index expr"
; V74 tmp58 [V74,T44] ( 3, 3 ) int -> rsi "index expr"
; V75 tmp59 [V75,T12] ( 2, 16 ) long -> rsi "argument with side effect"
; V76 tmp60 [V76,T13] ( 2, 16 ) long -> rsi "argument with side effect"
-; V77 tmp61 [V77,T64] ( 2, 2 ) int -> rsi "argument with side effect"
+; V77 tmp61 [V77,T60] ( 2, 2 ) int -> rsi "argument with side effect"
; V78 tmp62 [V78,T45] ( 3, 3 ) int -> rax "index expr"
; V79 tmp63 [V79,T46] ( 3, 3 ) int -> rsi "index expr"
-; V80 tmp64 [V80,T65] ( 2, 2 ) long -> rsi "argument with side effect"
-; V81 cse0 [V81,T69] ( 3, 1.50) int -> rdi "CSE - conservative"
-; V82 cse1 [V82,T70] ( 3, 1.50) int -> r13 "CSE - conservative"
-; V83 rat0 [V83,T54] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
-; V84 rat1 [V84,T62] ( 3, 2 ) long -> rsi "runtime lookup"
+; V80 tmp64 [V80,T61] ( 2, 2 ) long -> rsi "argument with side effect"
+; V81 cse0 [V81,T65] ( 3, 1.50) int -> rdi "CSE - conservative"
+; V82 cse1 [V82,T66] ( 3, 1.50) int -> r13 "CSE - conservative"
+; V83 rat0 [V83,T52] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V84 rat1 [V84,T58] ( 3, 2 ) long -> rsi "runtime lookup"
; V85 rat2 [V85,T47] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
-;* V86 rat3 [V86,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V87 rat4 [V87,T77] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V88 rat5 [V88,T48] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V89 rat6 [V89,T06] ( 3, 17.60) long -> rdi "Spilling to split statement for tree"
-; V90 rat7 [V90,T10] ( 3, 16 ) long -> rsi "runtime lookup"
-; V91 rat8 [V91,T02] ( 3, 22.40) long -> rsi "fgMakeTemp is creating a new local variable"
-;* V92 rat9 [V92,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V93 rat10 [V93,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V94 rat11 [V94,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V95 rat12 [V95,T56] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
-; V96 rat13 [V96,T49] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V97 rat14 [V97,T57] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V98 rat15 [V98,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V99 rat16 [V99,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V100 rat17 [V100,T08] ( 3, 17.60) long -> rdi "Spilling to split statement for tree"
-; V101 rat18 [V101,T11] ( 3, 16 ) long -> rsi "runtime lookup"
-; V102 rat19 [V102,T04] ( 3, 22.40) long -> rsi "fgMakeTemp is creating a new local variable"
-; V103 rat20 [V103,T22] ( 3, 8.80) long -> rdi "Spilling to split statement for tree"
-; V104 rat21 [V104,T19] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V105 rat22 [V105,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V106 rat23 [V106,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V107 rat24 [V107,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V108 rat25 [V108,T58] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V86 rat3 [V86,T06] ( 3, 17.60) long -> rdi "Spilling to split statement for tree"
+; V87 rat4 [V87,T10] ( 3, 16 ) long -> rsi "runtime lookup"
+; V88 rat5 [V88,T02] ( 3, 22.40) long -> rsi "fgMakeTemp is creating a new local variable"
+;* V89 rat6 [V89,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V90 rat7 [V90,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V91 rat8 [V91,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V92 rat9 [V92,T53] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V93 rat10 [V93,T48] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
+; V94 rat11 [V94,T08] ( 3, 17.60) long -> rdi "Spilling to split statement for tree"
+; V95 rat12 [V95,T11] ( 3, 16 ) long -> rsi "runtime lookup"
+; V96 rat13 [V96,T04] ( 3, 22.40) long -> rsi "fgMakeTemp is creating a new local variable"
+; V97 rat14 [V97,T22] ( 3, 8.80) long -> rdi "Spilling to split statement for tree"
+; V98 rat15 [V98,T19] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
+;* V99 rat16 [V99,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V100 rat17 [V100,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V101 rat18 [V101,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V102 rat19 [V102,T54] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V103 rat20 [V103,T49] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
+;* V104 rat21 [V104,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V105 rat22 [V105,T73] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V106 rat23 [V106,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V107 rat24 [V107,T56] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V108 rat25 [V108,T59] ( 3, 2 ) long -> rsi "runtime lookup"
; V109 rat26 [V109,T51] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
-;* V110 rat27 [V110,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V111 rat28 [V111,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V112 rat29 [V112,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V113 rat30 [V113,T60] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
-; V114 rat31 [V114,T63] ( 3, 2 ) long -> rsi "runtime lookup"
-; V115 rat32 [V115,T53] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 72
@@ -235,8 +229,8 @@ G_M18379_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=4000
mov gword ptr [rbp-0x60], rax
; GC ptr vars +{V11}
cmp dword ptr [rbp-0x48], 0
- jl SHORT G_M18379_IG14
mov ecx, dword ptr [rbp-0x48]
+ jl SHORT G_M18379_IG14
;; size=22 bbWeight=0.50 PerfScore 4.12
G_M18379_IG12: ; bbWeight=4, gcVars=00000000000000000000000028000000 {V07 V11}, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, gcvars, byref, isz
; gcrRegs -[rax]
realworld.run.linux.x64.checked.mch
-23 (-5.85%) : 24479.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary
2[System.Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.Canon]):this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 17 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
+; V00 this [V00,T04] ( 7, 16 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V01 arg1 [V01,T13] ( 4, 4 ) ref -> r15 class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
-; V02 arg2 [V02,T16] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V02 arg2 [V02,T15] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V03 loc0 [V03 ] ( 3, 11 ) struct (24) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SmallDictionary`2+Enumerator[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V04 loc1 [V04 ] ( 5, 10 ) struct (32) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (24) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,31 +27,28 @@
; V16 tmp11 [V16 ] ( 3, 11 ) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V03._stack (fldOffset=0x0)" P-DEP
; V17 tmp12 [V17 ] ( 3, 11 ) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V03._next (fldOffset=0x8)" P-DEP
; V18 tmp13 [V18 ] ( 3, 11 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x10)" P-DEP
-; V19 tmp14 [V19,T21] ( 2, 4 ) ref -> r12 "field V11.DefaultType (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T22] ( 2, 4 ) ref -> [rbp-0x90] spill-single-def "field V11._extensions (fldOffset=0x8)" P-INDEP
-; V21 tmp16 [V21,T23] ( 2, 4 ) ubyte -> [rbp-0x84] spill-single-def "field V11.NullableAnnotation (fldOffset=0x10)" P-INDEP
+; V19 tmp14 [V19,T19] ( 2, 4 ) ref -> r12 "field V11.DefaultType (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T20] ( 2, 4 ) ref -> [rbp-0x90] spill-single-def "field V11._extensions (fldOffset=0x8)" P-INDEP
+; V21 tmp16 [V21,T21] ( 2, 4 ) ubyte -> [rbp-0x84] spill-single-def "field V11.NullableAnnotation (fldOffset=0x10)" P-INDEP
; V22 tmp17 [V22 ] ( 2, 4 ) ref -> [rbp-0x80] do-not-enreg[X] addr-exposed "field V12._stack (fldOffset=0x0)" P-DEP
; V23 tmp18 [V23 ] ( 2, 4 ) ref -> [rbp-0x78] do-not-enreg[X] addr-exposed "field V12._next (fldOffset=0x8)" P-DEP
; V24 tmp19 [V24 ] ( 2, 4 ) ref -> [rbp-0x70] do-not-enreg[X] addr-exposed "field V12._current (fldOffset=0x10)" P-DEP
-; V25 tmp20 [V25,T24] ( 2, 4 ) long -> rsi "argument with side effect"
+; V25 tmp20 [V25,T22] ( 2, 4 ) long -> rsi "argument with side effect"
; V26 tmp21 [V26,T03] ( 2, 32 ) long -> rsi "argument with side effect"
; V27 tmp22 [V27,T10] ( 2, 8 ) long -> rdx "argument with side effect"
; V28 tmp23 [V28,T11] ( 2, 8 ) int -> rsi "argument with side effect"
-; V29 cse0 [V29,T19] ( 3, 4 ) long -> r13 "CSE - aggressive"
-;* V30 cse1 [V30,T26] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V29 cse0 [V29,T17] ( 3, 4 ) long -> r13 "CSE - aggressive"
+;* V30 cse1 [V30,T23] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; V31 cse2 [V31,T12] ( 4, 4.40) long -> r14 "CSE - aggressive"
-; V32 rat0 [V32,T17] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V33 rat1 [V33,T20] ( 3, 4 ) long -> r13 "runtime lookup"
+; V32 rat0 [V32,T16] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V33 rat1 [V33,T18] ( 3, 4 ) long -> r13 "runtime lookup"
; V34 rat2 [V34,T14] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
-; V35 rat3 [V35,T18] ( 2, 4 ) long -> rdi "Spilling to split statement for tree"
-;* V36 rat4 [V36,T25] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V37 rat5 [V37,T15] ( 2, 4 ) long -> rdi "fgMakeTemp is creating a new local variable"
-;* V38 rat6 [V38,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V39 rat7 [V39,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V40 rat8 [V40,T08] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
-; V41 rat9 [V41,T01] ( 3, 35.20) long -> rdi "Spilling to split statement for tree"
-; V42 rat10 [V42,T02] ( 3, 32 ) long -> rsi "runtime lookup"
-; V43 rat11 [V43,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
+;* V35 rat3 [V35,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V36 rat4 [V36,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V37 rat5 [V37,T08] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
+; V38 rat6 [V38,T01] ( 3, 35.20) long -> rdi "Spilling to split statement for tree"
+; V39 rat7 [V39,T02] ( 3, 32 ) long -> rsi "runtime lookup"
+; V40 rat8 [V40,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 136
@@ -116,14 +113,8 @@ G_M40847_IG06: ; bbWeight=1, nogc, extend
mov qword ptr [rbp-0x38], rdi
;; size=18 bbWeight=1 PerfScore 6.00
G_M40847_IG07: ; bbWeight=1, extend
- mov rdi, qword ptr [rbx]
- mov rdi, qword ptr [rdi+0x38]
- mov rdi, qword ptr [rdi]
- mov rdi, qword ptr [rdi+0x28]
- test rdi, rdi
- jne G_M40847_IG12
jmp G_M40847_IG12
- ;; size=28 bbWeight=1 PerfScore 11.25
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M40847_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, r13
lea rsi, [rbp-0x68]
@@ -145,7 +136,7 @@ G_M40847_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
test r11, r11
je SHORT G_M40847_IG10
;; size=62 bbWeight=2 PerfScore 35.00
-G_M40847_IG09: ; bbWeight=1.60, gcVars=0000000000400000 {V20}, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M40847_IG09: ; bbWeight=1.60, gcVars=0000000000100000 {V20}, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
jmp SHORT G_M40847_IG11
;; size=2 bbWeight=1.60 PerfScore 3.20
@@ -210,7 +201,7 @@ G_M40847_IG16: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
ret
;; size=18 bbWeight=1 PerfScore 4.25
-; Total bytes of code 393, prolog size 52, PerfScore 251.83, instruction count 101, allocated bytes for code 393 (MethodHash=69926070) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 370, prolog size 52, PerfScore 242.58, instruction count 95, allocated bytes for code 370 (MethodHash=69926070) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
-30 (-3.84%) : 25270.dasm - System.Collections.Immutable.ImmutableList1+Node[System.Collections.Generic.KeyValuePair
2[System.Canon,System.Canon]]:IndexOf(System.Collections.Generic.KeyValuePair2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer
1[System.Collections.Generic.KeyValuePair`2[System.Canon,System.Canon]]):int:this (FullOpts)
@@ -8,13 +8,13 @@
; 0 inlinees with PGO data; 2 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 9, 16 ) ref -> [rbp-0x98] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
+; V00 this [V00,T06] ( 8, 15 ) ref -> [rbp-0x98] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]>
; V02 arg2 [V02,T07] ( 8, 14 ) int -> rbx
; V03 arg3 [V03,T11] ( 6, 6 ) int -> r14 single-def
; V04 arg4 [V04,T10] ( 5, 8 ) ref -> r15 class-hnd <System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
; V05 loc0 [V05 ] ( 5, 15 ) struct (56) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
-; V06 loc1 [V06,T31] ( 2, 2 ) int -> [rbp-0x6C] do-not-enreg[Z] EH-live
+; V06 loc1 [V06,T29] ( 2, 2 ) int -> [rbp-0x6C] do-not-enreg[Z] EH-live
; V07 OutArgs [V07 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -33,30 +33,27 @@
; V22 tmp15 [V22,T16] ( 2, 5 ) ref -> r12 single-def "field V01.value (fldOffset=0x8)" P-INDEP
; V23 tmp16 [V23,T13] ( 2, 8 ) ref -> rcx "field V13.key (fldOffset=0x0)" P-INDEP
; V24 tmp17 [V24,T14] ( 2, 8 ) ref -> r8 "field V13.value (fldOffset=0x8)" P-INDEP
-; V25 tmp18 [V25,T34] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V26 tmp19 [V26,T35] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V27 tmp20 [V27,T29] ( 2, 4 ) long -> rsi "argument with side effect"
+; V25 tmp18 [V25,T31] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V26 tmp19 [V26,T32] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V27 tmp20 [V27,T27] ( 2, 4 ) long -> rsi "argument with side effect"
; V28 tmp21 [V28,T03] ( 2, 32 ) long -> rsi "argument with side effect"
-; V29 PSPSym [V29,T33] ( 1, 1 ) long -> [rbp-0xA8] do-not-enreg[V] "PSPSym"
+; V29 PSPSym [V29,T30] ( 1, 1 ) long -> [rbp-0xA8] do-not-enreg[V] "PSPSym"
; V30 cse0 [V30,T17] ( 3, 6 ) long -> [rbp-0x88] spill-single-def "CSE - moderate"
-; V31 cse1 [V31,T30] ( 3, 3 ) int -> rsi "CSE - moderate"
+; V31 cse1 [V31,T28] ( 3, 3 ) int -> rsi "CSE - moderate"
; V32 cse2 [V32,T09] ( 10, 12 ) long -> [rbp-0x90] multi-def "CSE - aggressive"
-; V33 rat0 [V33,T23] ( 3, 4.40) long -> r15 "Spilling to split statement for tree"
-; V34 rat1 [V34,T27] ( 3, 4 ) long -> rsi "runtime lookup"
+; V33 rat0 [V33,T22] ( 3, 4.40) long -> r15 "Spilling to split statement for tree"
+; V34 rat1 [V34,T25] ( 3, 4 ) long -> rsi "runtime lookup"
; V35 rat2 [V35,T18] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
-; V36 rat3 [V36,T24] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
-; V37 rat4 [V37,T28] ( 3, 4 ) long -> registers "runtime lookup"
+; V36 rat3 [V36,T23] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
+; V37 rat4 [V37,T26] ( 3, 4 ) long -> registers "runtime lookup"
; V38 rat5 [V38,T19] ( 3, 5.60) long -> rcx "fgMakeTemp is creating a new local variable"
-; V39 rat6 [V39,T25] ( 2, 4 ) long -> rdi "Spilling to split statement for tree"
-;* V40 rat7 [V40,T32] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V41 rat8 [V41,T20] ( 2, 4 ) long -> rdi "fgMakeTemp is creating a new local variable"
-; V42 rat9 [V42,T05] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
-; V43 rat10 [V43,T01] ( 3, 35.20) long -> rdi "Spilling to split statement for tree"
-; V44 rat11 [V44,T02] ( 3, 32 ) long -> rsi "runtime lookup"
-; V45 rat12 [V45,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
-; V46 rat13 [V46,T21] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V47 rat14 [V47,T26] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V48 rat15 [V48,T22] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V39 rat6 [V39,T05] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
+; V40 rat7 [V40,T01] ( 3, 35.20) long -> rdi "Spilling to split statement for tree"
+; V41 rat8 [V41,T02] ( 3, 32 ) long -> rsi "runtime lookup"
+; V42 rat9 [V42,T00] ( 3, 44.80) long -> rsi "fgMakeTemp is creating a new local variable"
+; V43 rat10 [V43,T20] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V44 rat11 [V44,T24] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V45 rat12 [V45,T21] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 136
@@ -172,18 +169,9 @@ G_M34258_IG09: ; bbWeight=1, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0000
nop
;; size=44 bbWeight=1 PerfScore 8.25
G_M34258_IG10: ; bbWeight=1, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0000 {}, byref
- mov rdx, gword ptr [rbp-0x98]
- ; gcrRegs +[rdx]
- mov rdi, qword ptr [rdx]
- mov rdi, qword ptr [rdi+0x38]
- mov rdi, qword ptr [rdi]
- mov rdi, qword ptr [rdi+0x10]
- test rdi, rdi
- jne G_M34258_IG15
jmp G_M34258_IG15
- ;; size=35 bbWeight=1 PerfScore 12.25
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M34258_IG11: ; bbWeight=4, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdx]
mov r14, qword ptr [rbp-0x88]
mov qword ptr [rbp-0x78], r14
mov rcx, qword ptr [rbp-0x90]
@@ -230,17 +218,17 @@ G_M34258_IG14: ; bbWeight=4, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0000
test eax, eax
jne SHORT G_M34258_IG20
inc ebx
+ ;; size=41 bbWeight=4 PerfScore 42.00
+G_M34258_IG15: ; bbWeight=8, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rbp-0x98]
; gcrRegs +[rdx]
- ;; size=48 bbWeight=4 PerfScore 46.00
-G_M34258_IG15: ; bbWeight=8, gcrefRegs=B004 {rdx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rdx]
mov rsi, qword ptr [rdi+0x38]
mov rsi, qword ptr [rsi]
mov rsi, qword ptr [rsi+0x10]
test rsi, rsi
je SHORT G_M34258_IG17
- ;; size=19 bbWeight=8 PerfScore 74.00
+ ;; size=26 bbWeight=8 PerfScore 82.00
G_M34258_IG16: ; bbWeight=6.40, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
jmp SHORT G_M34258_IG18
@@ -401,7 +389,7 @@ G_M34258_IG38: ; bbWeight=1, funclet epilog, nogc, extend
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 781, prolog size 78, PerfScore 370.03, instruction count 211, allocated bytes for code 781 (MethodHash=62fd7a2d) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
+; Total bytes of code 751, prolog size 78, PerfScore 363.78, instruction count 204, allocated bytes for code 751 (MethodHash=62fd7a2d) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
; ============================================================
Unwind Info:
-23 (-0.30%) : 13016.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
@@ -288,9 +288,8 @@
; V277 cse13 [V277,T203] ( 4, 0.16) long -> [rbp-0x70] spill-single-def "CSE - conservative"
; V278 cse14 [V278,T204] ( 3, 0.12) ref -> [rbp-0x2A0] spill-single-def "CSE - conservative"
; V279 cse15 [V279,T205] ( 3, 0.12) ref -> [rbp-0x2A8] spill-single-def "CSE - conservative"
-; TEMP_01 byref -> [rbp-0x2B0]
;
-; Lcl frame size = 664
+; Lcl frame size = 648
G_M30044_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -299,15 +298,13 @@ G_M30044_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push r13
push r12
push rbx
- sub rsp, 664
- lea rbp, [rsp+0x2C0]
- xor eax, eax
- mov qword ptr [rbp-0x2B0], rax
+ sub rsp, 648
+ lea rbp, [rsp+0x2B0]
mov rbx, rdi
; gcrRegs +[rbx]
mov r15, rsi
; gcrRegs +[r15]
- ;; size=40 bbWeight=1 PerfScore 8.50
+ ;; size=31 bbWeight=1 PerfScore 7.25
G_M30044_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov r14, gword ptr [rbx+0x40]
; gcrRegs +[r14]
@@ -1596,18 +1593,12 @@ G_M30044_IG55: ; bbWeight=0.04, gcVars=0000000000000000000000000000000000
; gcrRegs +[r8]
mov rsi, gword ptr [r8+8*rsi+0x10]
; gcrRegs +[rsi]
- mov r9, gword ptr [rbp-0xE0]
- ; gcrRegs +[r9]
- lea rdi, bword ptr [r9+0x08]
- ; byrRegs +[rdi]
- mov bword ptr [rbp-0x2B0], rdi
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
- ; byrRegs -[rdi]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rdx rsi rdi r8-r9]
+ ; gcrRegs -[rdx rsi rdi r8]
mov rsi, rax
; gcrRegs +[rsi]
mov rdi, gword ptr [rbp-0x1F8]
@@ -1615,12 +1606,14 @@ G_M30044_IG55: ; bbWeight=0.04, gcVars=0000000000000000000000000000000000
; GC ptr vars -{V131}
call [Microsoft.ML.Data.DataViewUtils:GetTempColumnName(Microsoft.ML.DataViewSchema,System.String):System.String]
; gcrRegs -[rsi rdi]
- mov rdi, bword ptr [rbp-0x2B0]
+ mov rcx, gword ptr [rbp-0xE0]
+ ; gcrRegs +[rcx]
+ lea rdi, bword ptr [rcx+0x08]
; byrRegs +[rdi]
mov rsi, rax
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rsi]
+ ; gcrRegs -[rax rcx rsi]
; byrRegs -[rdi]
mov rax, gword ptr [rbp-0xE0]
; gcrRegs +[rax]
@@ -1653,7 +1646,7 @@ G_M30044_IG55: ; bbWeight=0.04, gcVars=0000000000000000000000000000000000
; gcrRegs +[rcx]
mov edx, dword ptr [rax+0x10]
cmp dword ptr [rcx+0x08], edx
- ;; size=242 bbWeight=0.04 PerfScore 2.19
+ ;; size=228 bbWeight=0.04 PerfScore 2.11
G_M30044_IG56: ; bbWeight=0.04, isz, extend
jbe SHORT G_M30044_IG58
;; size=2 bbWeight=0.04 PerfScore 0.04
@@ -3146,7 +3139,7 @@ G_M30044_IG108: ; bbWeight=1, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs
; gcrRegs +[rax]
;; size=135 bbWeight=1 PerfScore 28.00
G_M30044_IG109: ; bbWeight=1, epilog, nogc, extend
- add rsp, 664
+ add rsp, 648
pop rbx
pop r12
pop r13
@@ -3256,7 +3249,7 @@ G_M30044_IG117: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=38 bbWeight=0 PerfScore 0.00
-; Total bytes of code 7734, prolog size 34, PerfScore 1697.74, instruction count 1564, allocated bytes for code 7734 (MethodHash=2a788aa3) for method Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
+; Total bytes of code 7711, prolog size 25, PerfScore 1696.41, instruction count 1560, allocated bytes for code 7711 (MethodHash=2a788aa3) for method Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
; ============================================================
Unwind Info:
@@ -3270,7 +3263,7 @@ Unwind Info:
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
CodeOffset: 0x11 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
- Size: 83 * 8 = 664 = 0x00298
+ Size: 81 * 8 = 648 = 0x00288
CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
-16 (-0.25%) : 32808.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
@@ -1468,34 +1468,29 @@ G_M4474_IG52: ; bbWeight=0.04, gcVars=00000000000000000000000000000000100
; gcrRegs -[rcx rdi] +[rax]
mov gword ptr [rbp-0xB0], rax
; GC ptr vars +{V18}
+ mov ecx, dword ptr [rbp-0x30]
+ mov rdx, gword ptr [rbp-0x88]
+ ; gcrRegs +[rdx]
+ cmp ecx, dword ptr [rdx+0x08]
+ jae G_M4474_IG106
+ mov dword ptr [rbp-0x30], ecx
+ mov edi, ecx
+ mov r8, gword ptr [rdx+8*rdi+0x10]
+ ; gcrRegs +[r8]
+ mov rdi, r8
+ ; gcrRegs +[rdi]
+ mov rsi, qword ptr [r8]
+ mov rsi, qword ptr [rsi+0x48]
+ call [rsi+0x30]<unknown method>
+ ; gcrRegs -[rdx rdi r8]
mov rcx, gword ptr [rbp-0xA8]
; gcrRegs +[rcx]
lea rdi, bword ptr [rcx+0x08]
; byrRegs +[rdi]
- mov bword ptr [rbp-0x140], rdi
- mov edx, dword ptr [rbp-0x30]
- mov rsi, gword ptr [rbp-0x88]
- ; gcrRegs +[rsi]
- cmp edx, dword ptr [rsi+0x08]
- jae G_M4474_IG106
- mov dword ptr [rbp-0x30], edx
- mov r8d, edx
- mov r8, gword ptr [rsi+8*r8+0x10]
- ; gcrRegs +[r8]
- mov rdi, r8
- ; gcrRegs +[rdi]
- ; byrRegs -[rdi]
- mov r8, qword ptr [r8]
- ; gcrRegs -[r8]
- mov r8, qword ptr [r8+0x48]
- call [r8+0x30]<unknown method>
- ; gcrRegs -[rcx rsi rdi]
- mov rdi, bword ptr [rbp-0x140]
- ; byrRegs +[rdi]
mov rsi, rax
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rsi]
+ ; gcrRegs -[rax rcx rsi]
; byrRegs -[rdi]
mov rax, gword ptr [rbp-0xA8]
; gcrRegs +[rax]
@@ -1505,7 +1500,7 @@ G_M4474_IG52: ; bbWeight=0.04, gcVars=00000000000000000000000000000000100
; gcrRegs -[rax rdi]
test eax, eax
je SHORT G_M4474_IG59
- ;; size=178 bbWeight=0.04 PerfScore 1.99
+ ;; size=162 bbWeight=0.04 PerfScore 1.91
G_M4474_IG53: ; bbWeight=0.02, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0000 {}, byref, isz
call [<unknown method>]
; gcrRegs +[rax]
@@ -2761,7 +2756,7 @@ G_M4474_IG106: ; bbWeight=0, gcVars=0000000000000000000000000000000000000
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 6351, prolog size 34, PerfScore 1464.70, instruction count 1383, allocated bytes for code 6351 (MethodHash=ac86ee85) for method System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
+; Total bytes of code 6335, prolog size 34, PerfScore 1464.62, instruction count 1381, allocated bytes for code 6335 (MethodHash=ac86ee85) for method System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 18117.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)
@@ -23,11 +23,11 @@
; V12 loc9 [V12,T14] ( 4, 14 ) byref -> [rbp-0x68] spill-single-def
; V13 loc10 [V13,T17] ( 6, 13.50) int -> [rbp-0x4C]
; V14 loc11 [V14,T15] ( 4, 14 ) byref -> [rbp-0x70] spill-single-def
-; V15 loc12 [V15,T66] ( 3, 1.50) int -> r12 single-def
+; V15 loc12 [V15,T62] ( 3, 1.50) int -> r12 single-def
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp2 [V18,T31] ( 4, 3 ) long -> r11 "VirtualCall with runtime lookup"
-; V19 tmp3 [V19,T67] ( 3, 1.50) int -> rax
+; V19 tmp3 [V19,T63] ( 3, 1.50) int -> rax
;* V20 tmp4 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -35,8 +35,8 @@
;* V24 tmp8 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp10 [V26,T28] ( 4, 4 ) byref -> rax single-def "dup spill"
-; V27 tmp11 [V27,T61] ( 3, 2 ) long -> rsi "spilling helperCall"
-; V28 tmp12 [V28,T68] ( 3, 1.50) int -> r13
+; V27 tmp11 [V27,T57] ( 3, 2 ) long -> rsi "spilling helperCall"
+; V28 tmp12 [V28,T64] ( 3, 1.50) int -> r13
;* V29 tmp13 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp14 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -48,9 +48,9 @@
; V37 tmp21 [V37,T32] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
; V38 tmp22 [V38,T33] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp24 [V40,T80] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp24 [V40,T74] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp26 [V42,T81] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp26 [V42,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V43 tmp27 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -58,9 +58,9 @@
; V47 tmp31 [V47,T34] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
; V48 tmp32 [V48,T35] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V50 tmp34 [V50,T82] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V50 tmp34 [V50,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V52 tmp36 [V52,T83] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V52 tmp36 [V52,T77] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -68,62 +68,56 @@
; V57 tmp41 [V57,T36] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
; V58 tmp42 [V58,T37] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V60 tmp44 [V60,T84] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V60 tmp44 [V60,T78] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V62 tmp46 [V62,T85] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V62 tmp46 [V62,T79] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V63 tmp47 [V63 ] ( 6, 10.50) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64 ] ( 9, 19 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V65 tmp49 [V65,T71] ( 2, 1 ) ref -> rdi single-def "field V33._items (fldOffset=0x0)" P-INDEP
-; V66 tmp50 [V66,T74] ( 2, 1 ) int -> rsi single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V67 tmp51 [V67,T72] ( 2, 1 ) ref -> rdi single-def "field V43._items (fldOffset=0x0)" P-INDEP
-; V68 tmp52 [V68,T75] ( 2, 1 ) int -> rsi single-def "field V43._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T73] ( 2, 1 ) ref -> rdi single-def "field V53._items (fldOffset=0x0)" P-INDEP
-; V70 tmp54 [V70,T76] ( 2, 1 ) int -> rsi single-def "field V53._length (fldOffset=0x8)" P-INDEP
+; V65 tmp49 [V65,T67] ( 2, 1 ) ref -> rdi single-def "field V33._items (fldOffset=0x0)" P-INDEP
+; V66 tmp50 [V66,T70] ( 2, 1 ) int -> rsi single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V67 tmp51 [V67,T68] ( 2, 1 ) ref -> rdi single-def "field V43._items (fldOffset=0x0)" P-INDEP
+; V68 tmp52 [V68,T71] ( 2, 1 ) int -> rsi single-def "field V43._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T69] ( 2, 1 ) ref -> rdi single-def "field V53._items (fldOffset=0x0)" P-INDEP
+; V70 tmp54 [V70,T72] ( 2, 1 ) int -> rsi single-def "field V53._length (fldOffset=0x8)" P-INDEP
; V71 tmp55 [V71,T41] ( 3, 3 ) int -> rcx "index expr"
; V72 tmp56 [V72,T42] ( 3, 3 ) int -> rsi "index expr"
; V73 tmp57 [V73,T43] ( 3, 3 ) int -> rax "index expr"
; V74 tmp58 [V74,T44] ( 3, 3 ) int -> rsi "index expr"
; V75 tmp59 [V75,T12] ( 2, 16 ) long -> rsi "argument with side effect"
; V76 tmp60 [V76,T13] ( 2, 16 ) long -> rsi "argument with side effect"
-; V77 tmp61 [V77,T64] ( 2, 2 ) int -> rsi "argument with side effect"
+; V77 tmp61 [V77,T60] ( 2, 2 ) int -> rsi "argument with side effect"
; V78 tmp62 [V78,T45] ( 3, 3 ) int -> rax "index expr"
; V79 tmp63 [V79,T46] ( 3, 3 ) int -> rsi "index expr"
-; V80 tmp64 [V80,T65] ( 2, 2 ) long -> rsi "argument with side effect"
-; V81 cse0 [V81,T69] ( 3, 1.50) int -> rdi "CSE - conservative"
-; V82 cse1 [V82,T70] ( 3, 1.50) int -> r13 "CSE - conservative"
-; V83 rat0 [V83,T54] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
-; V84 rat1 [V84,T62] ( 3, 2 ) long -> rsi "runtime lookup"
+; V80 tmp64 [V80,T61] ( 2, 2 ) long -> rsi "argument with side effect"
+; V81 cse0 [V81,T65] ( 3, 1.50) int -> rdi "CSE - conservative"
+; V82 cse1 [V82,T66] ( 3, 1.50) int -> r13 "CSE - conservative"
+; V83 rat0 [V83,T52] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V84 rat1 [V84,T58] ( 3, 2 ) long -> rsi "runtime lookup"
; V85 rat2 [V85,T47] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
-;* V86 rat3 [V86,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V87 rat4 [V87,T77] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V88 rat5 [V88,T48] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V89 rat6 [V89,T06] ( 3, 17.60) long -> rdi "Spilling to split statement for tree"
-; V90 rat7 [V90,T10] ( 3, 16 ) long -> rsi "runtime lookup"
-; V91 rat8 [V91,T02] ( 3, 22.40) long -> rsi "fgMakeTemp is creating a new local variable"
-;* V92 rat9 [V92,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V93 rat10 [V93,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V94 rat11 [V94,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V95 rat12 [V95,T56] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
-; V96 rat13 [V96,T49] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V97 rat14 [V97,T57] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V98 rat15 [V98,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V99 rat16 [V99,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V100 rat17 [V100,T08] ( 3, 17.60) long -> rdi "Spilling to split statement for tree"
-; V101 rat18 [V101,T11] ( 3, 16 ) long -> rsi "runtime lookup"
-; V102 rat19 [V102,T04] ( 3, 22.40) long -> rsi "fgMakeTemp is creating a new local variable"
-; V103 rat20 [V103,T22] ( 3, 8.80) long -> rdi "Spilling to split statement for tree"
-; V104 rat21 [V104,T19] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V105 rat22 [V105,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V106 rat23 [V106,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V107 rat24 [V107,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V108 rat25 [V108,T58] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V86 rat3 [V86,T06] ( 3, 17.60) long -> rdi "Spilling to split statement for tree"
+; V87 rat4 [V87,T10] ( 3, 16 ) long -> rsi "runtime lookup"
+; V88 rat5 [V88,T02] ( 3, 22.40) long -> rsi "fgMakeTemp is creating a new local variable"
+;* V89 rat6 [V89,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V90 rat7 [V90,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V91 rat8 [V91,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V92 rat9 [V92,T53] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V93 rat10 [V93,T48] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
+; V94 rat11 [V94,T08] ( 3, 17.60) long -> rdi "Spilling to split statement for tree"
+; V95 rat12 [V95,T11] ( 3, 16 ) long -> rsi "runtime lookup"
+; V96 rat13 [V96,T04] ( 3, 22.40) long -> rsi "fgMakeTemp is creating a new local variable"
+; V97 rat14 [V97,T22] ( 3, 8.80) long -> rdi "Spilling to split statement for tree"
+; V98 rat15 [V98,T19] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
+;* V99 rat16 [V99,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V100 rat17 [V100,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V101 rat18 [V101,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V102 rat19 [V102,T54] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V103 rat20 [V103,T49] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
+;* V104 rat21 [V104,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V105 rat22 [V105,T73] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V106 rat23 [V106,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V107 rat24 [V107,T56] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V108 rat25 [V108,T59] ( 3, 2 ) long -> rsi "runtime lookup"
; V109 rat26 [V109,T51] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
-;* V110 rat27 [V110,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V111 rat28 [V111,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V112 rat29 [V112,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V113 rat30 [V113,T60] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
-; V114 rat31 [V114,T63] ( 3, 2 ) long -> rsi "runtime lookup"
-; V115 rat32 [V115,T53] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 72
@@ -235,8 +229,8 @@ G_M18379_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=4000
mov gword ptr [rbp-0x60], rax
; GC ptr vars +{V11}
cmp dword ptr [rbp-0x48], 0
- jl SHORT G_M18379_IG14
mov ecx, dword ptr [rbp-0x48]
+ jl SHORT G_M18379_IG14
;; size=22 bbWeight=0.50 PerfScore 4.12
G_M18379_IG12: ; bbWeight=4, gcVars=00000000000000000000000028000000 {V07 V11}, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, gcvars, byref, isz
; gcrRegs -[rax]
+0 (0.00%) : 18277.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable
1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)
@@ -16,7 +16,7 @@
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
; V06 loc3 [V06,T14] ( 4, 5 ) int -> r14
; V07 loc4 [V07,T15] ( 4, 5 ) int -> [rbp-0x34]
-; V08 loc5 [V08,T38] ( 3, 1.50) int -> rbx
+; V08 loc5 [V08,T36] ( 3, 1.50) int -> rbx
; V09 loc6 [V09,T07] ( 13, 11.50) ref -> [rbp-0x68] do-not-enreg[M] class-hnd EH-live <<unknown class>>
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
; V11 loc8 [V11,T05] ( 5, 14 ) int -> rax
@@ -39,7 +39,7 @@
; V28 tmp16 [V28 ] ( 3, 3 ) struct ( 8) [rbp-0x48] do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
; V29 tmp17 [V29,T18] ( 8, 4 ) int -> r13 "Inline return value spill temp"
; V30 tmp18 [V30,T23] ( 3, 3 ) int -> r14 "Inlining Arg"
-; V31 tmp19 [V31,T35] ( 2, 2 ) long -> r14 "Inlining Arg"
+; V31 tmp19 [V31,T33] ( 2, 2 ) long -> r14 "Inlining Arg"
; V32 tmp20 [V32,T22] ( 3, 3 ) ref -> rax class-hnd exact single-def "Inlining Arg" <int[]>
;* V33 tmp21 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V34 tmp22 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -49,24 +49,24 @@
; V38 tmp26 [V38,T12] ( 5, 5 ) long -> [rbp-0x50] spill-single-def "Inlining Arg"
;* V39 tmp27 [V39 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V40 tmp28 [V40 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V41 tmp29 [V41,T36] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V41 tmp29 [V41,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V42 tmp30 [V42,T09] ( 3, 6 ) int -> r11 "Inline stloc first use temp"
; V43 tmp31 [V43,T10] ( 3, 6 ) int -> rdi "Inline stloc first use temp"
; V44 tmp32 [V44,T06] ( 3, 12 ) byref -> rdi "dup spill"
;* V45 tmp33 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp34 [V46 ] ( 0, 0 ) int -> zero-ref single-def "field V04._length (fldOffset=0x8)" P-INDEP
-; V47 tmp35 [V47,T34] ( 4, 2 ) byref -> r14 single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+; V47 tmp35 [V47,T32] ( 4, 2 ) byref -> r14 single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp36 [V48 ] ( 0, 0 ) int -> zero-ref single-def "field V13._length (fldOffset=0x8)" P-INDEP
;* V49 tmp37 [V49 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp38 [V50 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
-; V51 tmp39 [V51,T40] ( 2, 1.50) int -> [rbp-0x40] do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
-; V52 tmp40 [V52,T41] ( 2, 1.50) int -> [rbp-0x3C] do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
+; V51 tmp39 [V51,T38] ( 2, 1.50) int -> [rbp-0x40] do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
+; V52 tmp40 [V52,T39] ( 2, 1.50) int -> [rbp-0x3C] do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
;* V53 tmp41 [V53 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V54 tmp42 [V54 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
-; V55 tmp43 [V55,T42] ( 2, 1.50) int -> [rbp-0x48] do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
-; V56 tmp44 [V56,T43] ( 2, 1.50) int -> [rbp-0x44] do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
-; V57 tmp45 [V57,T44] ( 2, 1 ) byref -> r12 "field V33._reference (fldOffset=0x0)" P-INDEP
-; V58 tmp46 [V58,T45] ( 2, 1 ) int -> r13 "field V33._length (fldOffset=0x8)" P-INDEP
+; V55 tmp43 [V55,T40] ( 2, 1.50) int -> [rbp-0x48] do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
+; V56 tmp44 [V56,T41] ( 2, 1.50) int -> [rbp-0x44] do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
+; V57 tmp45 [V57,T42] ( 2, 1 ) byref -> r12 "field V33._reference (fldOffset=0x0)" P-INDEP
+; V58 tmp46 [V58,T43] ( 2, 1 ) int -> r13 "field V33._length (fldOffset=0x8)" P-INDEP
;* V59 tmp47 [V59 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V60 tmp48 [V60 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V61 tmp49 [V61 ] ( 0, 0 ) byref -> zero-ref single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -75,25 +75,22 @@
;* V64 tmp52 [V64 ] ( 0, 0 ) int -> zero-ref single-def "field V37._length (fldOffset=0x8)" P-INDEP
; V65 tmp53 [V65,T16] ( 3, 4.50) byref -> r12 single-def "V05.[000..008)"
; V66 tmp54 [V66,T17] ( 3, 4.50) int -> r13 single-def "V05.[008..012)"
-; V67 tmp55 [V67,T37] ( 3, 1.50) byref -> r12 "V16.[000..008)"
-; V68 tmp56 [V68,T39] ( 3, 1.50) int -> r13 "V16.[008..012)"
+; V67 tmp55 [V67,T35] ( 3, 1.50) byref -> r12 "V16.[000..008)"
+; V68 tmp56 [V68,T37] ( 3, 1.50) int -> r13 "V16.[008..012)"
; V69 tmp57 [V69,T03] ( 2, 16 ) ref -> rsi "argument with side effect"
; V70 GsCookie [V70 ] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V71 PSPSym [V71,T47] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[V] "PSPSym"
+; V71 PSPSym [V71,T44] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[V] "PSPSym"
; V72 cse0 [V72,T11] ( 3, 6 ) int -> rdi "CSE - moderate"
-; V73 rat0 [V73,T30] ( 3, 2.20) long -> rsi "Spilling to split statement for tree"
+; V73 rat0 [V73,T29] ( 3, 2.20) long -> rsi "Spilling to split statement for tree"
; V74 rat1 [V74,T26] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-; V75 rat2 [V75,T31] ( 3, 2.20) long -> rsi "Spilling to split statement for tree"
+; V75 rat2 [V75,T30] ( 3, 2.20) long -> rsi "Spilling to split statement for tree"
; V76 rat3 [V76,T27] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-; V77 rat4 [V77,T32] ( 3, 2.20) long -> rsi "Spilling to split statement for tree"
+; V77 rat4 [V77,T31] ( 3, 2.20) long -> rsi "Spilling to split statement for tree"
; V78 rat5 [V78,T28] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V79 rat6 [V79,T33] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V80 rat7 [V80,T46] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V81 rat8 [V81,T29] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V82 rat9 [V82,T02] ( 3, 17.60) long -> rsi "Spilling to split statement for tree"
-; V83 rat10 [V83,T01] ( 3, 22.40) long -> r11 "fgMakeTemp is creating a new local variable"
-; V84 rat11 [V84,T24] ( 3, 3 ) int -> r14 "ReplaceWithLclVar is creating a new local variable"
-; V85 rat12 [V85,T25] ( 3, 3 ) long -> [rbp-0x58] spill-single-def "ReplaceWithLclVar is creating a new local variable"
+; V79 rat6 [V79,T02] ( 3, 17.60) long -> rsi "Spilling to split statement for tree"
+; V80 rat7 [V80,T01] ( 3, 22.40) long -> r11 "fgMakeTemp is creating a new local variable"
+; V81 rat8 [V81,T24] ( 3, 3 ) int -> r14 "ReplaceWithLclVar is creating a new local variable"
+; V82 rat9 [V82,T25] ( 3, 3 ) long -> [rbp-0x58] spill-single-def "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 88
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.linux.x64.checked.mch |
1 |
0 |
0 |
1 |
-0 |
+0 |
benchmarks.run_pgo.linux.x64.checked.mch |
1 |
1 |
0 |
0 |
-16 |
+0 |
benchmarks.run_tiered.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
coreclr_tests.run.linux.x64.checked.mch |
3 |
2 |
0 |
1 |
-50 |
+0 |
libraries.crossgen2.linux.x64.checked.mch |
11 |
11 |
0 |
0 |
-218 |
+0 |
libraries.pmi.linux.x64.checked.mch |
34 |
23 |
0 |
11 |
-460 |
+0 |
libraries_tests.run.linux.x64.Release.mch |
46 |
37 |
5 |
4 |
-989 |
+232 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
20 |
16 |
0 |
4 |
-440 |
+0 |
realworld.run.linux.x64.checked.mch |
6 |
4 |
0 |
2 |
-92 |
+0 |
smoke_tests.nativeaot.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
122 |
94 |
5 |
23 |
-2,265 |
+232 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.linux.x64.checked.mch |
34,995 |
3,164 |
31,831 |
4 (0.01%) |
4 (0.01%) |
benchmarks.run_pgo.linux.x64.checked.mch |
155,969 |
58,399 |
97,570 |
151 (0.10%) |
151 (0.10%) |
benchmarks.run_tiered.linux.x64.checked.mch |
58,888 |
44,312 |
14,576 |
2 (0.00%) |
2 (0.00%) |
coreclr_tests.run.linux.x64.checked.mch |
694,084 |
429,241 |
264,843 |
329 (0.05%) |
329 (0.05%) |
libraries.crossgen2.linux.x64.checked.mch |
233,626 |
15 |
233,611 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.linux.x64.checked.mch |
295,414 |
6 |
295,408 |
8 (0.00%) |
8 (0.00%) |
libraries_tests.run.linux.x64.Release.mch |
756,822 |
495,271 |
261,551 |
3,121 (0.41%) |
3,121 (0.41%) |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
304,605 |
21,873 |
282,732 |
10 (0.00%) |
10 (0.00%) |
realworld.run.linux.x64.checked.mch |
33,164 |
39 |
33,125 |
3 (0.01%) |
3 (0.01%) |
smoke_tests.nativeaot.linux.x64.checked.mch |
27,440 |
9 |
27,431 |
0 (0.00%) |
0 (0.00%) |
|
2,595,007 |
1,052,329 |
1,542,678 |
3,628 (0.14%) |
3,628 (0.14%) |
jit-analyze output
benchmarks.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13735124 (overridden on cmd)
Total bytes of diff: 13735124 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 1 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
benchmarks.run_pgo.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 68635056 (overridden on cmd)
Total bytes of diff: 68635040 (overridden on cmd)
Total bytes of delta: -16 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-16 : 92706.dasm (-1.62 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-16 (-1.62 % of base) : 92706.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
Top method improvements (percentages):
-16 (-1.62 % of base) : 92706.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
1 total methods with Code Size differences (1 improved, 0 regressed).
coreclr_tests.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 459551078 (overridden on cmd)
Total bytes of diff: 459551028 (overridden on cmd)
Total bytes of delta: -50 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-31 : 677717.dasm (-4.07 % of base)
-19 : 692116.dasm (-4.94 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 1 unchanged.
Top method improvements (bytes):
-31 (-4.07 % of base) : 677717.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
-19 (-4.94 % of base) : 692116.dasm - Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]):ubyte:this (FullOpts)
Top method improvements (percentages):
-19 (-4.94 % of base) : 692116.dasm - Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]):ubyte:this (FullOpts)
-31 (-4.07 % of base) : 677717.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
2 total methods with Code Size differences (2 improved, 0 regressed).
libraries.crossgen2.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 38670232 (overridden on cmd)
Total bytes of diff: 38670014 (overridden on cmd)
Total bytes of delta: -218 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-50 : 24209.dasm (-3.85 % of base)
-37 : 122000.dasm (-0.79 % of base)
-29 : 44278.dasm (-1.34 % of base)
-23 : 204659.dasm (-1.49 % of base)
-23 : 202570.dasm (-1.47 % of base)
-10 : 127543.dasm (-0.48 % of base)
-10 : 135209.dasm (-0.49 % of base)
-10 : 127542.dasm (-0.60 % of base)
-10 : 135208.dasm (-0.60 % of base)
-8 : 44551.dasm (-0.19 % of base)
-8 : 122495.dasm (-2.22 % of base)
11 total files with Code Size differences (11 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-50 (-3.85 % of base) : 24209.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
-37 (-0.79 % of base) : 122000.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-29 (-1.34 % of base) : 44278.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
-23 (-1.49 % of base) : 204659.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-23 (-1.47 % of base) : 202570.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
-10 (-0.60 % of base) : 127542.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-10 (-0.60 % of base) : 135208.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-10 (-0.48 % of base) : 127543.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-10 (-0.49 % of base) : 135209.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-8 (-0.19 % of base) : 44551.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
-8 (-2.22 % of base) : 122495.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
Top method improvements (percentages):
-50 (-3.85 % of base) : 24209.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
-8 (-2.22 % of base) : 122495.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
-23 (-1.49 % of base) : 204659.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-23 (-1.47 % of base) : 202570.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
-29 (-1.34 % of base) : 44278.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
-37 (-0.79 % of base) : 122000.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-10 (-0.60 % of base) : 135208.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-10 (-0.60 % of base) : 127542.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-10 (-0.49 % of base) : 135209.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-10 (-0.48 % of base) : 127543.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-8 (-0.19 % of base) : 44551.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
11 total methods with Code Size differences (11 improved, 0 regressed).
libraries.pmi.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 60144132 (overridden on cmd)
Total bytes of diff: 60143672 (overridden on cmd)
Total bytes of delta: -460 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-38 : 14177.dasm (-2.39 % of base)
-33 : 241954.dasm (-3.95 % of base)
-30 : 242133.dasm (-3.66 % of base)
-30 : 240804.dasm (-4.27 % of base)
-27 : 36963.dasm (-0.67 % of base)
-26 : 244452.dasm (-3.94 % of base)
-26 : 243304.dasm (-3.58 % of base)
-26 : 260701.dasm (-1.40 % of base)
-26 : 243309.dasm (-3.75 % of base)
-24 : 84554.dasm (-3.30 % of base)
-23 : 231460.dasm (-2.87 % of base)
-23 : 201770.dasm (-6.35 % of base)
-23 : 213896.dasm (-2.87 % of base)
-23 : 219384.dasm (-6.35 % of base)
-12 : 37243.dasm (-0.27 % of base)
-10 : 138591.dasm (-0.58 % of base)
-10 : 147196.dasm (-0.49 % of base)
-10 : 138592.dasm (-0.48 % of base)
-10 : 147195.dasm (-0.59 % of base)
-8 : 20946.dasm (-0.18 % of base)
23 total files with Code Size differences (23 improved, 0 regressed), 11 unchanged.
Top method improvements (bytes):
-38 (-2.39 % of base) : 14177.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
-33 (-3.95 % of base) : 241954.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-30 (-3.66 % of base) : 242133.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-30 (-4.27 % of base) : 240804.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-27 (-0.67 % of base) : 36963.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
-26 (-3.75 % of base) : 243309.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-26 (-3.58 % of base) : 243304.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
-26 (-3.94 % of base) : 244452.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-26 (-1.40 % of base) : 260701.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-24 (-3.30 % of base) : 84554.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
-23 (-2.87 % of base) : 231460.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-23 (-2.87 % of base) : 213896.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-23 (-6.35 % of base) : 201770.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-23 (-6.35 % of base) : 219384.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-12 (-0.27 % of base) : 37243.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
-10 (-0.58 % of base) : 138591.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-10 (-0.59 % of base) : 147195.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-10 (-0.49 % of base) : 147196.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-10 (-0.48 % of base) : 138592.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-8 (-0.15 % of base) : 20949.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitAllElementInitializersRecursive(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator+IndexDesc],ubyte):this (FullOpts)
Top method improvements (percentages):
-23 (-6.35 % of base) : 201770.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-23 (-6.35 % of base) : 219384.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-30 (-4.27 % of base) : 240804.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-33 (-3.95 % of base) : 241954.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-26 (-3.94 % of base) : 244452.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-26 (-3.75 % of base) : 243309.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-30 (-3.66 % of base) : 242133.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-26 (-3.58 % of base) : 243304.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
-24 (-3.30 % of base) : 84554.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
-23 (-2.87 % of base) : 231460.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-23 (-2.87 % of base) : 213896.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-38 (-2.39 % of base) : 14177.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
-26 (-1.40 % of base) : 260701.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-8 (-0.96 % of base) : 281851.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-27 (-0.67 % of base) : 36963.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
-10 (-0.59 % of base) : 147195.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-10 (-0.58 % of base) : 138591.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-10 (-0.49 % of base) : 147196.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-10 (-0.48 % of base) : 138592.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-12 (-0.27 % of base) : 37243.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
23 total methods with Code Size differences (23 improved, 0 regressed).
libraries_tests.run.linux.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 333558929 (overridden on cmd)
Total bytes of diff: 333558172 (overridden on cmd)
Total bytes of delta: -757 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
192 : 76909.dasm (2.00 % of base)
26 : 86236.dasm (1.51 % of base)
8 : 20855.dasm (0.08 % of base)
5 : 338153.dasm (0.63 % of base)
1 : 375790.dasm (0.13 % of base)
Top file improvements (bytes):
-53 : 183403.dasm (-2.98 % of base)
-53 : 690002.dasm (-2.98 % of base)
-51 : 290466.dasm (-1.87 % of base)
-50 : 177905.dasm (-2.86 % of base)
-46 : 242797.dasm (-2.69 % of base)
-45 : 242697.dasm (-0.80 % of base)
-43 : 243375.dasm (-2.78 % of base)
-34 : 98224.dasm (-1.26 % of base)
-34 : 369617.dasm (-1.28 % of base)
-34 : 407618.dasm (-1.27 % of base)
-34 : 451471.dasm (-1.26 % of base)
-34 : 454105.dasm (-1.26 % of base)
-34 : 733262.dasm (-1.27 % of base)
-33 : 38696.dasm (-0.32 % of base)
-30 : 347447.dasm (-1.11 % of base)
-27 : 381820.dasm (-1.02 % of base)
-27 : 602983.dasm (-0.99 % of base)
-27 : 242113.dasm (-1.02 % of base)
-27 : 247849.dasm (-0.99 % of base)
-26 : 228820.dasm (-3.67 % of base)
42 total files with Code Size differences (37 improved, 5 regressed), 4 unchanged.
Top method regressions (bytes):
192 (2.00 % of base) : 76909.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
26 (1.51 % of base) : 86236.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
8 (0.08 % of base) : 20855.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
5 (0.63 % of base) : 338153.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
1 (0.13 % of base) : 375790.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
Top method improvements (bytes):
-53 (-2.98 % of base) : 183403.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-53 (-2.98 % of base) : 690002.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-51 (-1.87 % of base) : 290466.dasm - Interop+procfs:ParseMapsModulesCore(System.Collections.Generic.IEnumerable`1[System.String]):System.Diagnostics.ProcessModuleCollection (Tier1)
-50 (-2.86 % of base) : 177905.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-46 (-2.69 % of base) : 242797.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:Heapify():this (Tier1)
-45 (-0.80 % of base) : 242697.dasm - System.Collections.Tests.IGenericSharedAPI_Tests`1[System.ValueTuple`2[System.__Canon,System.__Canon]]:AddToCollection(System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]],int):this (Tier1)
-43 (-2.78 % of base) : 243375.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:IsSupersetOf(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this (Tier1)
-34 (-1.26 % of base) : 98224.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-34 (-1.28 % of base) : 369617.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-34 (-1.27 % of base) : 407618.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-34 (-1.26 % of base) : 451471.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-34 (-1.26 % of base) : 454105.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-34 (-1.27 % of base) : 733262.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-33 (-0.32 % of base) : 38696.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
-30 (-1.11 % of base) : 347447.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-27 (-1.02 % of base) : 381820.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-27 (-0.99 % of base) : 602983.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-27 (-1.02 % of base) : 242113.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-27 (-0.99 % of base) : 247849.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-26 (-3.67 % of base) : 228820.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (Tier1)
Top method regressions (percentages):
192 (2.00 % of base) : 76909.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
26 (1.51 % of base) : 86236.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
5 (0.63 % of base) : 338153.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
1 (0.13 % of base) : 375790.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
8 (0.08 % of base) : 20855.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
Top method improvements (percentages):
-26 (-3.67 % of base) : 228820.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (Tier1)
-24 (-3.05 % of base) : 726572.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]]):int:this (Tier1)
-53 (-2.98 % of base) : 183403.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-53 (-2.98 % of base) : 690002.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-50 (-2.86 % of base) : 177905.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-21 (-2.85 % of base) : 666577.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (Tier1)
-43 (-2.78 % of base) : 243375.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:IsSupersetOf(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this (Tier1)
-46 (-2.69 % of base) : 242797.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:Heapify():this (Tier1)
-25 (-2.65 % of base) : 728139.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this (Tier1)
-20 (-2.28 % of base) : 117599.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
-22 (-2.25 % of base) : 92367.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this (Tier1)
-51 (-1.87 % of base) : 290466.dasm - Interop+procfs:ParseMapsModulesCore(System.Collections.Generic.IEnumerable`1[System.String]):System.Diagnostics.ProcessModuleCollection (Tier1)
-34 (-1.28 % of base) : 369617.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-34 (-1.27 % of base) : 407618.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-34 (-1.27 % of base) : 733262.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-34 (-1.26 % of base) : 451471.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-34 (-1.26 % of base) : 98224.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-34 (-1.26 % of base) : 454105.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-16 (-1.25 % of base) : 185770.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
-30 (-1.11 % of base) : 347447.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
42 total methods with Code Size differences (37 improved, 5 regressed).
librariestestsnotieredcompilation.run.linux.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 130468363 (overridden on cmd)
Total bytes of diff: 130467923 (overridden on cmd)
Total bytes of delta: -440 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-131 : 300445.dasm (-4.41 % of base)
-33 : 68844.dasm (-4.60 % of base)
-33 : 71250.dasm (-3.98 % of base)
-30 : 70580.dasm (-3.66 % of base)
-30 : 21902.dasm (-3.84 % of base)
-26 : 61464.dasm (-1.40 % of base)
-26 : 68510.dasm (-3.64 % of base)
-26 : 69746.dasm (-3.94 % of base)
-23 : 8151.dasm (-2.87 % of base)
-23 : 23882.dasm (-5.85 % of base)
-19 : 35165.dasm (-2.37 % of base)
-10 : 178586.dasm (-0.59 % of base)
-8 : 97920.dasm (-1.83 % of base)
-8 : 149488.dasm (-1.04 % of base)
-8 : 152537.dasm (-1.03 % of base)
-6 : 97771.dasm (-0.10 % of base)
16 total files with Code Size differences (16 improved, 0 regressed), 4 unchanged.
Top method improvements (bytes):
-131 (-4.41 % of base) : 300445.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
-33 (-3.98 % of base) : 71250.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-33 (-4.60 % of base) : 68844.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-30 (-3.66 % of base) : 70580.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-30 (-3.84 % of base) : 21902.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
-26 (-3.64 % of base) : 68510.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
-26 (-3.94 % of base) : 69746.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-26 (-1.40 % of base) : 61464.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-23 (-2.87 % of base) : 8151.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-23 (-5.85 % of base) : 23882.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-19 (-2.37 % of base) : 35165.dasm - Grace.DependencyInjection.Impl.ActivationStrategyCollection`1[System.__Canon]:AddStrategy(System.__Canon,System.Object):this (FullOpts)
-10 (-0.59 % of base) : 178586.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-8 (-1.83 % of base) : 97920.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
-8 (-1.04 % of base) : 149488.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-8 (-1.03 % of base) : 152537.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-6 (-0.10 % of base) : 97771.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
Top method improvements (percentages):
-23 (-5.85 % of base) : 23882.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-33 (-4.60 % of base) : 68844.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-131 (-4.41 % of base) : 300445.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
-33 (-3.98 % of base) : 71250.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-26 (-3.94 % of base) : 69746.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-30 (-3.84 % of base) : 21902.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
-30 (-3.66 % of base) : 70580.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-26 (-3.64 % of base) : 68510.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
-23 (-2.87 % of base) : 8151.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-19 (-2.37 % of base) : 35165.dasm - Grace.DependencyInjection.Impl.ActivationStrategyCollection`1[System.__Canon]:AddStrategy(System.__Canon,System.Object):this (FullOpts)
-8 (-1.83 % of base) : 97920.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
-26 (-1.40 % of base) : 61464.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-8 (-1.04 % of base) : 149488.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-8 (-1.03 % of base) : 152537.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-10 (-0.59 % of base) : 178586.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-6 (-0.10 % of base) : 97771.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
16 total methods with Code Size differences (16 improved, 0 regressed).
realworld.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13194603 (overridden on cmd)
Total bytes of diff: 13194511 (overridden on cmd)
Total bytes of delta: -92 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-30 : 25270.dasm (-3.84 % of base)
-23 : 13016.dasm (-0.30 % of base)
-23 : 24479.dasm (-5.85 % of base)
-16 : 32808.dasm (-0.25 % of base)
4 total files with Code Size differences (4 improved, 0 regressed), 2 unchanged.
Top method improvements (bytes):
-30 (-3.84 % of base) : 25270.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
-23 (-5.85 % of base) : 24479.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-23 (-0.30 % of base) : 13016.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
-16 (-0.25 % of base) : 32808.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
Top method improvements (percentages):
-23 (-5.85 % of base) : 24479.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-30 (-3.84 % of base) : 25270.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
-23 (-0.30 % of base) : 13016.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
-16 (-0.25 % of base) : 32808.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
4 total methods with Code Size differences (4 improved, 0 regressed).
osx arm64
Diffs are based on 2,262,709 contexts (930,876 MinOpts, 1,331,833 FullOpts).
MISSED contexts: 3,256 (0.14%)
Overall (-1,300 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.osx.arm64.checked.mch |
11,178,360 |
-24 |
coreclr_tests.run.osx.arm64.checked.mch |
485,381,240 |
-60 |
libraries.crossgen2.osx.arm64.checked.mch |
55,622,104 |
-108 |
libraries.pmi.osx.arm64.checked.mch |
79,955,476 |
-348 |
libraries_tests.run.osx.arm64.Release.mch |
312,903,680 |
-432 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
160,911,076 |
-264 |
realworld.run.osx.arm64.checked.mch |
15,072,368 |
-64 |
FullOpts (-1,300 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.osx.arm64.checked.mch |
11,177,824 |
-24 |
coreclr_tests.run.osx.arm64.checked.mch |
153,074,784 |
-60 |
libraries.crossgen2.osx.arm64.checked.mch |
55,620,476 |
-108 |
libraries.pmi.osx.arm64.checked.mch |
79,834,348 |
-348 |
libraries_tests.run.osx.arm64.Release.mch |
108,963,176 |
-432 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
147,773,548 |
-264 |
realworld.run.osx.arm64.checked.mch |
14,503,964 |
-64 |
Example diffs
benchmarks.run.osx.arm64.checked.mch
-24 (-2.80%) : 24097.dasm - System.Collections.Immutable.ImmutableList1+Node[System.Collections.Generic.KeyValuePair
2[System.Canon,System.Canon]]:IndexOf(System.Collections.Generic.KeyValuePair2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer
1[System.Collections.Generic.KeyValuePair`2[System.Canon,System.Canon]]):int:this (FullOpts)
@@ -8,13 +8,13 @@
; 0 inlinees with PGO data; 2 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 9, 16 ) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
+; V00 this [V00,T06] ( 8, 15 ) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]>
; V02 arg2 [V02,T07] ( 8, 14 ) int -> x19
; V03 arg3 [V03,T11] ( 6, 6 ) int -> x21 single-def
; V04 arg4 [V04,T10] ( 5, 8 ) ref -> x20 class-hnd <System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
; V05 loc0 [V05 ] ( 5, 15 ) struct (56) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
-; V06 loc1 [V06,T31] ( 2, 2 ) int -> [fp+0x24] do-not-enreg[Z] EH-live
+; V06 loc1 [V06,T29] ( 2, 2 ) int -> [fp+0x24] do-not-enreg[Z] EH-live
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -33,30 +33,27 @@
; V22 tmp15 [V22,T16] ( 2, 5 ) ref -> x23 single-def "field V01.value (fldOffset=0x8)" P-INDEP
; V23 tmp16 [V23,T13] ( 2, 8 ) ref -> x3 "field V13.key (fldOffset=0x0)" P-INDEP
; V24 tmp17 [V24,T14] ( 2, 8 ) ref -> x4 "field V13.value (fldOffset=0x8)" P-INDEP
-; V25 tmp18 [V25,T34] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V26 tmp19 [V26,T35] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V27 tmp20 [V27,T29] ( 2, 4 ) long -> x1 "argument with side effect"
+; V25 tmp18 [V25,T31] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V26 tmp19 [V26,T32] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V27 tmp20 [V27,T27] ( 2, 4 ) long -> x1 "argument with side effect"
; V28 tmp21 [V28,T03] ( 2, 32 ) long -> x1 "argument with side effect"
-; V29 PSPSym [V29,T33] ( 1, 1 ) long -> [fp+0x68] do-not-enreg[V] "PSPSym"
+; V29 PSPSym [V29,T30] ( 1, 1 ) long -> [fp+0x68] do-not-enreg[V] "PSPSym"
; V30 cse0 [V30,T17] ( 3, 6 ) long -> x25 "CSE - aggressive"
-; V31 cse1 [V31,T30] ( 3, 3 ) int -> x1 "CSE - aggressive"
+; V31 cse1 [V31,T28] ( 3, 3 ) int -> x1 "CSE - aggressive"
; V32 cse2 [V32,T09] ( 10, 12 ) long -> x24 multi-def "CSE - aggressive"
-; V33 rat0 [V33,T23] ( 3, 4.40) long -> x24 "Spilling to split statement for tree"
-; V34 rat1 [V34,T27] ( 3, 4 ) long -> x1 "runtime lookup"
+; V33 rat0 [V33,T22] ( 3, 4.40) long -> x24 "Spilling to split statement for tree"
+; V34 rat1 [V34,T25] ( 3, 4 ) long -> x1 "runtime lookup"
; V35 rat2 [V35,T18] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
-; V36 rat3 [V36,T24] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V37 rat4 [V37,T28] ( 3, 4 ) long -> x25 "runtime lookup"
+; V36 rat3 [V36,T23] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
+; V37 rat4 [V37,T26] ( 3, 4 ) long -> x25 "runtime lookup"
; V38 rat5 [V38,T19] ( 3, 5.60) long -> x25 "fgMakeTemp is creating a new local variable"
-; V39 rat6 [V39,T25] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V40 rat7 [V40,T32] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V41 rat8 [V41,T20] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V42 rat9 [V42,T05] ( 3, 22.40) long -> x26 "fgMakeTemp is creating a new local variable"
-; V43 rat10 [V43,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V44 rat11 [V44,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V45 rat12 [V45,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
-; V46 rat13 [V46,T21] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
-; V47 rat14 [V47,T26] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V48 rat15 [V48,T22] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
+; V39 rat6 [V39,T05] ( 3, 22.40) long -> x26 "fgMakeTemp is creating a new local variable"
+; V40 rat7 [V40,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V41 rat8 [V41,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V42 rat9 [V42,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+; V43 rat10 [V43,T20] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V44 rat11 [V44,T24] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V45 rat12 [V45,T21] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 96
@@ -166,18 +163,10 @@ G_M34258_IG09: ; bbWeight=1, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=00
; gcrRegs -[x2]
; gcr arg pop 0
;; size=48 bbWeight=1 PerfScore 10.50
-G_M34258_IG10: ; bbWeight=1, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x2]
- ldr x0, [x2]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x10]
- cbnz x0, G_M34258_IG15
+G_M34258_IG10: ; bbWeight=1, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref
b G_M34258_IG15
- ;; size=28 bbWeight=1 PerfScore 16.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M34258_IG11: ; bbWeight=4, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
mov x21, x25
ldr x0, [x24, #0x38]
ldr x0, [x0]
@@ -221,16 +210,16 @@ G_M34258_IG14: ; bbWeight=4, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=00
; gcr arg pop 0
cbnz w0, G_M34258_IG20
add w19, w19, #1
+ ;; size=68 bbWeight=4 PerfScore 60.00
+G_M34258_IG15: ; bbWeight=8, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
ldr x2, [fp, #0x18] // [V00 this]
; gcrRegs +[x2]
- ;; size=72 bbWeight=4 PerfScore 68.00
-G_M34258_IG15: ; bbWeight=8, gcrefRegs=D00004 {x2 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
ldr x0, [x2]
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x10]
cbz x1, G_M34258_IG17
- ;; size=20 bbWeight=8 PerfScore 104.00
+ ;; size=24 bbWeight=8 PerfScore 120.00
G_M34258_IG16: ; bbWeight=6.40, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
b G_M34258_IG18
@@ -395,7 +384,7 @@ G_M34258_IG38: ; bbWeight=1, funclet epilog, nogc, extend
ret lr
;; size=24 bbWeight=1 PerfScore 16.00
-; Total bytes of code 856, prolog size 76, PerfScore 451.60, instruction count 214, allocated bytes for code 856 (MethodHash=62fd7a2d) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
+; Total bytes of code 832, prolog size 76, PerfScore 444.60, instruction count 208, allocated bytes for code 832 (MethodHash=62fd7a2d) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -406,7 +395,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 186 (0x000ba) Actual length = 744 (0x0002e8)
+ Function Length : 180 (0x000b4) Actual length = 720 (0x0002d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 17518.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)
@@ -23,11 +23,11 @@
; V12 loc9 [V12,T14] ( 4, 14 ) byref -> x27
; V13 loc10 [V13,T17] ( 6, 13.50) int -> x26
; V14 loc11 [V14,T15] ( 4, 14 ) byref -> x27
-; V15 loc12 [V15,T66] ( 3, 1.50) int -> x22 single-def
+; V15 loc12 [V15,T62] ( 3, 1.50) int -> x22 single-def
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp2 [V18,T31] ( 4, 3 ) long -> x11 "VirtualCall with runtime lookup"
-; V19 tmp3 [V19,T67] ( 3, 1.50) int -> x24
+; V19 tmp3 [V19,T63] ( 3, 1.50) int -> x24
;* V20 tmp4 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -35,8 +35,8 @@
;* V24 tmp8 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp10 [V26,T28] ( 4, 4 ) byref -> x0 single-def "dup spill"
-; V27 tmp11 [V27,T61] ( 3, 2 ) long -> x1 "spilling helperCall"
-; V28 tmp12 [V28,T68] ( 3, 1.50) int -> x24
+; V27 tmp11 [V27,T57] ( 3, 2 ) long -> x1 "spilling helperCall"
+; V28 tmp12 [V28,T64] ( 3, 1.50) int -> x24
;* V29 tmp13 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp14 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -48,9 +48,9 @@
; V37 tmp21 [V37,T32] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V38 tmp22 [V38,T33] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp24 [V40,T81] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp24 [V40,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp26 [V42,T82] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp26 [V42,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V43 tmp27 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -58,9 +58,9 @@
; V47 tmp31 [V47,T34] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V48 tmp32 [V48,T35] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V50 tmp34 [V50,T83] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V50 tmp34 [V50,T77] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V52 tmp36 [V52,T84] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V52 tmp36 [V52,T78] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -68,63 +68,57 @@
; V57 tmp41 [V57,T36] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V58 tmp42 [V58,T37] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V60 tmp44 [V60,T85] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V60 tmp44 [V60,T79] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V62 tmp46 [V62,T86] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V62 tmp46 [V62,T80] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V63 tmp47 [V63 ] ( 6, 10.50) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64 ] ( 9, 19 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V65 tmp49 [V65,T72] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
-; V66 tmp50 [V66,T75] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V67 tmp51 [V67,T73] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
-; V68 tmp52 [V68,T76] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T74] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
-; V70 tmp54 [V70,T77] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
+; V65 tmp49 [V65,T68] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
+; V66 tmp50 [V66,T71] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V67 tmp51 [V67,T69] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
+; V68 tmp52 [V68,T72] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T70] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
+; V70 tmp54 [V70,T73] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
; V71 tmp55 [V71,T41] ( 3, 3 ) int -> x2 "index expr"
; V72 tmp56 [V72,T42] ( 3, 3 ) int -> x1 "index expr"
; V73 tmp57 [V73,T43] ( 3, 3 ) int -> x2 "index expr"
; V74 tmp58 [V74,T44] ( 3, 3 ) int -> x1 "index expr"
; V75 tmp59 [V75,T12] ( 2, 16 ) long -> x1 "argument with side effect"
; V76 tmp60 [V76,T13] ( 2, 16 ) long -> x1 "argument with side effect"
-; V77 tmp61 [V77,T64] ( 2, 2 ) int -> x1 "argument with side effect"
+; V77 tmp61 [V77,T60] ( 2, 2 ) int -> x1 "argument with side effect"
; V78 tmp62 [V78,T45] ( 3, 3 ) int -> x2 "index expr"
; V79 tmp63 [V79,T46] ( 3, 3 ) int -> x1 "index expr"
-; V80 tmp64 [V80,T65] ( 2, 2 ) long -> x1 "argument with side effect"
-; V81 cse0 [V81,T69] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V82 cse1 [V82,T70] ( 3, 1.50) int -> x26 "CSE - moderate"
-; V83 cse2 [V83,T71] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V84 rat0 [V84,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V85 rat1 [V85,T62] ( 3, 2 ) long -> x1 "runtime lookup"
+; V80 tmp64 [V80,T61] ( 2, 2 ) long -> x1 "argument with side effect"
+; V81 cse0 [V81,T65] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V82 cse1 [V82,T66] ( 3, 1.50) int -> x26 "CSE - moderate"
+; V83 cse2 [V83,T67] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V84 rat0 [V84,T52] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V85 rat1 [V85,T58] ( 3, 2 ) long -> x1 "runtime lookup"
; V86 rat2 [V86,T47] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V87 rat3 [V87,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V88 rat4 [V88,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V89 rat5 [V89,T48] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V90 rat6 [V90,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V91 rat7 [V91,T10] ( 3, 16 ) long -> x1 "runtime lookup"
-; V92 rat8 [V92,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V93 rat9 [V93,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V94 rat10 [V94,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V95 rat11 [V95,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V96 rat12 [V96,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V97 rat13 [V97,T49] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V98 rat14 [V98,T57] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V99 rat15 [V99,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V100 rat16 [V100,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V101 rat17 [V101,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V102 rat18 [V102,T11] ( 3, 16 ) long -> x1 "runtime lookup"
-; V103 rat19 [V103,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-; V104 rat20 [V104,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
-; V105 rat21 [V105,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V106 rat22 [V106,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V107 rat23 [V107,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V108 rat24 [V108,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V109 rat25 [V109,T58] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V87 rat3 [V87,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V88 rat4 [V88,T10] ( 3, 16 ) long -> x1 "runtime lookup"
+; V89 rat5 [V89,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V90 rat6 [V90,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V91 rat7 [V91,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V92 rat8 [V92,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V93 rat9 [V93,T53] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V94 rat10 [V94,T48] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
+; V95 rat11 [V95,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V96 rat12 [V96,T11] ( 3, 16 ) long -> x1 "runtime lookup"
+; V97 rat13 [V97,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+; V98 rat14 [V98,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
+; V99 rat15 [V99,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+;* V100 rat16 [V100,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V101 rat17 [V101,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V102 rat18 [V102,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V103 rat19 [V103,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V104 rat20 [V104,T49] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V105 rat21 [V105,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V106 rat22 [V106,T74] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V107 rat23 [V107,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V108 rat24 [V108,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V109 rat25 [V109,T59] ( 3, 2 ) long -> x1 "runtime lookup"
; V110 rat26 [V110,T51] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V111 rat27 [V111,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V112 rat28 [V112,T80] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V113 rat29 [V113,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V114 rat30 [V114,T60] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V115 rat31 [V115,T63] ( 3, 2 ) long -> x1 "runtime lookup"
-; V116 rat32 [V116,T53] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 24
coreclr_tests.run.osx.arm64.checked.mch
-24 (-5.04%) : 583970.dasm - Microsoft.Build.Collections.RetrievableEntryHashSet1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet
1[System.__Canon]):ubyte:this (FullOpts)
@@ -8,12 +8,12 @@
; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 9, 19 ) ref -> [fp+0x10] this class-hnd EH-live single-def <Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]>
+; V00 this [V00,T04] ( 8, 18 ) ref -> [fp+0x10] this class-hnd EH-live single-def <Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]>
; V01 arg1 [V01,T08] ( 5, 5 ) ref -> x1 class-hnd single-def <Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]>
; V02 loc0 [V02 ] ( 2, 8 ) ref -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
; V03 loc1 [V03 ] ( 8, 18 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.Build.Collections.RetrievableEntryHashSet`1+Enumerator[System.__Canon]>
; V04 loc2 [V04,T06] ( 3, 12 ) ref -> x19 class-hnd <System.__Canon>
-;* V05 loc3 [V05,T22] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[Z] EH-live
+;* V05 loc3 [V05,T19] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[Z] EH-live
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -26,27 +26,24 @@
; V15 tmp9 [V15 ] ( 5, 15 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x8)" P-DEP
; V16 tmp10 [V16 ] ( 4, 11 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V03._index (fldOffset=0x10)" P-DEP
; V17 tmp11 [V17 ] ( 4, 11 ) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V03._version (fldOffset=0x14)" P-DEP
-; V18 tmp12 [V18,T18] ( 3, 3 ) ref -> x1 single-def "field V12._set (fldOffset=0x0)" P-INDEP
-;* V19 tmp13 [V19,T21] ( 0, 0 ) ref -> zero-ref single-def "field V12._current (fldOffset=0x8)" P-INDEP
-;* V20 tmp14 [V20,T23] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x10)" P-INDEP
-; V21 tmp15 [V21,T19] ( 2, 2 ) int -> x2 single-def "field V12._version (fldOffset=0x14)" P-INDEP
+; V18 tmp12 [V18,T16] ( 3, 3 ) ref -> x1 single-def "field V12._set (fldOffset=0x0)" P-INDEP
+;* V19 tmp13 [V19,T18] ( 0, 0 ) ref -> zero-ref single-def "field V12._current (fldOffset=0x8)" P-INDEP
+;* V20 tmp14 [V20,T20] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x10)" P-INDEP
+; V21 tmp15 [V21,T17] ( 2, 2 ) int -> x2 single-def "field V12._version (fldOffset=0x14)" P-INDEP
; V22 tmp16 [V22,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V23 tmp17 [V23,T05] ( 2, 16 ) ref -> x1 "argument with side effect"
-; V24 PSPSym [V24,T24] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
-;* V25 cse0 [V25,T25] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-;* V26 rat0 [V26,T13] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V27 rat1 [V27,T17] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V24 PSPSym [V24,T21] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
+;* V25 cse0 [V25,T22] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+;* V26 rat0 [V26,T12] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V27 rat1 [V27,T15] ( 0, 0 ) long -> zero-ref "runtime lookup"
;* V28 rat2 [V28,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V29 rat3 [V29,T14] ( 2, 4 ) long -> x1 "Spilling to split statement for tree"
-;* V30 rat4 [V30,T20] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V31 rat5 [V31,T10] ( 2, 4 ) long -> x1 "fgMakeTemp is creating a new local variable"
-; V32 rat6 [V32,T01] ( 3, 35.20) long -> x1 "Spilling to split statement for tree"
-; V33 rat7 [V33,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V34 rat8 [V34,T00] ( 3, 44.80) long -> x2 "fgMakeTemp is creating a new local variable"
-; V35 rat9 [V35,T15] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V36 rat10 [V36,T11] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
-; V37 rat11 [V37,T16] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V38 rat12 [V38,T12] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V29 rat3 [V29,T01] ( 3, 35.20) long -> x1 "Spilling to split statement for tree"
+; V30 rat4 [V30,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V31 rat5 [V31,T00] ( 3, 44.80) long -> x2 "fgMakeTemp is creating a new local variable"
+; V32 rat6 [V32,T13] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
+; V33 rat7 [V33,T10] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V34 rat8 [V34,T14] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
+; V35 rat9 [V35,T11] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 56
@@ -97,19 +94,11 @@ G_M28904_IG07: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=000
stp x1, xzr, [fp, #0x18] // [V14 tmp8], [V15 tmp9]
stp wzr, w2, [fp, #0x28] // [V16 tmp10], [V17 tmp11]
;; size=12 bbWeight=1 PerfScore 5.00
-G_M28904_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M28904_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- ldr x0, [fp, #0x10] // [V00 this]
- ; gcrRegs +[x0]
- ldr x1, [x0]
- ldr x1, [x1, #0x38]
- ldr x1, [x1]
- ldr x1, [x1, #0x18]
- cbnz x1, G_M28904_IG10
b G_M28904_IG10
- ;; size=28 bbWeight=1 PerfScore 16.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M28904_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
ldr x19, [fp, #0x20] // [V15 tmp9]
; gcrRegs +[x19]
mov x0, x19
@@ -253,7 +242,7 @@ G_M28904_IG27: ; bbWeight=1, funclet epilog, nogc, extend
ret lr
;; size=12 bbWeight=1 PerfScore 6.00
-; Total bytes of code 476, prolog size 36, PerfScore 378.70, instruction count 119, allocated bytes for code 476 (MethodHash=9d278f17) for method Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]):ubyte:this (FullOpts)
+; Total bytes of code 452, prolog size 36, PerfScore 363.70, instruction count 113, allocated bytes for code 452 (MethodHash=9d278f17) for method Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -264,7 +253,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 91 (0x0005b) Actual length = 364 (0x00016c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-36 (-3.45%) : 570536.dasm - ILCompiler.LazyGenericsSupport+Graph1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph
1+Vertex[System.__Canon]):this (FullOpts)
@@ -8,78 +8,74 @@
; 4 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 14,1267 ) ref -> x19 this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
-; V01 arg1 [V01,T08] ( 18,1118 ) ref -> x20 class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
+; V00 this [V00,T09] ( 13,1139 ) ref -> x20 this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
+; V01 arg1 [V01,T07] ( 18,1118 ) ref -> x19 class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
; V02 loc0 [V02,T04] ( 8,1328 ) ref -> x23 class-hnd <<unknown class>>
;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-; V06 loc4 [V06,T09] ( 9,1216 ) ref -> x23 class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
+; V06 loc4 [V06,T08] ( 9,1216 ) ref -> x23 class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
; V07 loc5 [V07,T10] ( 5, 896 ) ref -> x25 class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp2 [V10,T34] ( 3, 48 ) long -> x11 "VirtualCall with runtime lookup"
+; V10 tmp2 [V10,T30] ( 3, 48 ) long -> x11 "VirtualCall with runtime lookup"
;* V11 tmp3 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V12 tmp4 [V12,T00] ( 4,3072 ) long -> x11 "VirtualCall with runtime lookup"
;* V13 tmp5 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-; V14 tmp6 [V14,T22] ( 3, 192 ) ref -> x23 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
+; V14 tmp6 [V14,T18] ( 3, 192 ) ref -> x23 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
;* V15 tmp7 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp8 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V17 tmp9 [V17,T31] ( 4, 48 ) long -> x11 "VirtualCall with runtime lookup"
+; V17 tmp9 [V17,T27] ( 4, 48 ) long -> x11 "VirtualCall with runtime lookup"
;* V18 tmp10 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-; V19 tmp11 [V19,T36] ( 3, 43.88) int -> x24 "impAppendStmt"
-; V20 tmp12 [V20,T30] ( 7, 64 ) ref -> x23 class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
-; V21 tmp13 [V21,T43] ( 4, 20 ) int -> x24 "Inline stloc first use temp"
-; V22 tmp14 [V22,T44] ( 3, 18 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V23 tmp15 [V23,T45] ( 3, 16 ) int -> x0 "Inline return value spill temp"
-; V24 tmp16 [V24,T38] ( 3, 36.12) int -> x0 "Inlining Arg"
-; V25 tmp17 [V25,T24] ( 7, 160 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-; V26 tmp18 [V26,T32] ( 4, 48 ) int -> x3 "Inline stloc first use temp"
-; V27 tmp19 [V27,T37] ( 3, 40 ) ref -> x14 class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V19 tmp11 [V19,T32] ( 3, 43.88) int -> x24 "impAppendStmt"
+; V20 tmp12 [V20,T26] ( 7, 64 ) ref -> x23 class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
+; V21 tmp13 [V21,T39] ( 4, 20 ) int -> x24 "Inline stloc first use temp"
+; V22 tmp14 [V22,T40] ( 3, 18 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V23 tmp15 [V23,T41] ( 3, 16 ) int -> x0 "Inline return value spill temp"
+; V24 tmp16 [V24,T34] ( 3, 36.12) int -> x0 "Inlining Arg"
+; V25 tmp17 [V25,T20] ( 7, 160 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
+; V26 tmp18 [V26,T28] ( 4, 48 ) int -> x3 "Inline stloc first use temp"
+; V27 tmp19 [V27,T33] ( 3, 40 ) ref -> x14 class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V28 tmp20 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-; V29 tmp21 [V29,T20] ( 3, 256 ) int -> x11 "Inline return value spill temp"
-; V30 tmp22 [V30,T13] ( 3, 702.09) int -> x0 "Inlining Arg"
-; V31 tmp23 [V31,T16] ( 3, 577.91) int -> x11 "Inlining Arg"
-; V32 tmp24 [V32,T14] ( 3, 628.79) ref -> x2 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V29 tmp21 [V29,T17] ( 3, 256 ) int -> x11 "Inline return value spill temp"
+; V30 tmp22 [V30,T12] ( 3, 702.09) int -> x0 "Inlining Arg"
+; V31 tmp23 [V31,T14] ( 3, 577.91) int -> x11 "Inlining Arg"
+; V32 tmp24 [V32,T13] ( 3, 628.79) ref -> x2 class-hnd "Inline stloc first use temp" <<unknown class>>
; V33 tmp25 [V33,T11] ( 4, 745.57) int -> x0 "Inline stloc first use temp"
-; V34 tmp26 [V34,T19] ( 7, 384 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-; V35 tmp27 [V35,T29] ( 3, 93.20) ref -> x3 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V36 tmp28 [V36,T28] ( 4, 122.39) int -> x2 "Inline stloc first use temp"
+; V34 tmp26 [V34,T16] ( 7, 384 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+; V35 tmp27 [V35,T25] ( 3, 93.20) ref -> x3 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V36 tmp28 [V36,T24] ( 4, 122.39) int -> x2 "Inline stloc first use temp"
;* V37 tmp29 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-; V38 tmp30 [V38,T46] ( 2, 16 ) ref -> x20 "field V03.Vertex (fldOffset=0x0)" P-INDEP
-; V39 tmp31 [V39,T47] ( 2, 16 ) ref -> x23 "field V03.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
+; V38 tmp30 [V38,T42] ( 2, 16 ) ref -> x19 "field V03.Vertex (fldOffset=0x0)" P-INDEP
+; V39 tmp31 [V39,T43] ( 2, 16 ) ref -> x23 "field V03.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
; V40 tmp32 [V40,T05] ( 5,1424 ) ref -> x25 "field V04.Destination (fldOffset=0x0)" P-INDEP
-; V41 tmp33 [V41,T18] ( 1, 512 ) ubyte -> x1 "field V04.Flagged (fldOffset=0x8)" P-INDEP
-; V42 tmp34 [V42,T41] ( 3, 32 ) ref -> x1 "field V05.Vertex (fldOffset=0x0)" P-INDEP
-; V43 tmp35 [V43,T42] ( 3, 32 ) ref -> x2 "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
+; V41 tmp33 [V41,T15] ( 1, 512 ) ubyte -> x1 "field V04.Flagged (fldOffset=0x8)" P-INDEP
+; V42 tmp34 [V42,T37] ( 3, 32 ) ref -> x1 "field V05.Vertex (fldOffset=0x0)" P-INDEP
+; V43 tmp35 [V43,T38] ( 3, 32 ) ref -> x2 "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
;* V44 tmp36 [V44 ] ( 0, 0 ) ref -> zero-ref "field V13.Destination (fldOffset=0x0)" P-DEP
;* V45 tmp37 [V45 ] ( 0, 0 ) ubyte -> zero-ref "field V13.Flagged (fldOffset=0x8)" P-DEP
-; V46 tmp38 [V46,T48] ( 2, 16 ) ref -> x0 "field V18.Destination (fldOffset=0x0)" P-INDEP
-; V47 tmp39 [V47,T51] ( 1, 8 ) ubyte -> x1 "field V18.Flagged (fldOffset=0x8)" P-INDEP
+; V46 tmp38 [V46,T44] ( 2, 16 ) ref -> x0 "field V18.Destination (fldOffset=0x0)" P-INDEP
+; V47 tmp39 [V47,T47] ( 1, 8 ) ubyte -> x1 "field V18.Flagged (fldOffset=0x8)" P-INDEP
;* V48 tmp40 [V48 ] ( 0, 0 ) ref -> zero-ref "field V28.Vertex (fldOffset=0x0)" P-INDEP
;* V49 tmp41 [V49 ] ( 0, 0 ) ref -> zero-ref "field V28.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
-; V50 tmp42 [V50,T33] ( 3, 48 ) byref -> x4 "BlockOp address local"
-; V51 cse0 [V51,T50] ( 2, 9 ) long -> x22 hoist "CSE - moderate"
-; V52 cse1 [V52,T40] ( 4, 32 ) int -> x1 "CSE - moderate"
+; V50 tmp42 [V50,T29] ( 3, 48 ) byref -> x4 "BlockOp address local"
+; V51 cse0 [V51,T46] ( 2, 9 ) long -> x22 hoist "CSE - moderate"
+; V52 cse1 [V52,T36] ( 4, 32 ) int -> x1 "CSE - moderate"
; V53 cse2 [V53,T06] ( 3,1280 ) long -> x24 "CSE - aggressive"
-; V54 cse3 [V54,T49] ( 4, 12.88) long -> x21 hoist "CSE - moderate"
-; V55 rat0 [V55,T53] ( 3, 4.72) long -> x0 "Spilling to split statement for tree"
-; V56 rat1 [V56,T55] ( 3, 4 ) long -> x22 "runtime lookup"
-; V57 rat2 [V57,T52] ( 3, 5.60) long -> x1 "spilling expr"
-; V58 rat3 [V58,T54] ( 3, 4.48) long -> x22 "fgMakeTemp is creating a new local variable"
-; V59 rat4 [V59,T35] ( 3, 44.80) long -> x0 "spilling expr"
-; V60 rat5 [V60,T39] ( 3, 35.84) long -> x11 "fgMakeTemp is creating a new local variable"
-; V61 rat6 [V61,T15] ( 2, 512 ) long -> x0 "Spilling to split statement for tree"
-;* V62 rat7 [V62,T21] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V63 rat8 [V63,T12] ( 3, 716.80) long -> x0 "spilling expr"
-; V64 rat9 [V64,T17] ( 2, 409.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V65 rat10 [V65,T02] ( 3,2416.64) long -> x0 "Spilling to split statement for tree"
-; V66 rat11 [V66,T01] ( 3,2867.20) long -> x1 "spilling expr"
-; V67 rat12 [V67,T03] ( 3,2293.76) long -> x11 "fgMakeTemp is creating a new local variable"
-; V68 rat13 [V68,T25] ( 3, 151.04) long -> x0 "Spilling to split statement for tree"
-; V69 rat14 [V69,T27] ( 3, 128 ) long -> x1 "runtime lookup"
-; V70 rat15 [V70,T23] ( 3, 179.20) long -> x1 "spilling expr"
-; V71 rat16 [V71,T26] ( 3, 143.36) long -> x1 "fgMakeTemp is creating a new local variable"
+; V54 cse3 [V54,T45] ( 4, 12.88) long -> x21 "CSE - moderate"
+; V55 rat0 [V55,T49] ( 3, 4.72) long -> x0 "Spilling to split statement for tree"
+; V56 rat1 [V56,T51] ( 3, 4 ) long -> x22 "runtime lookup"
+; V57 rat2 [V57,T48] ( 3, 5.60) long -> x1 "spilling expr"
+; V58 rat3 [V58,T50] ( 3, 4.48) long -> x22 "fgMakeTemp is creating a new local variable"
+; V59 rat4 [V59,T31] ( 3, 44.80) long -> x0 "spilling expr"
+; V60 rat5 [V60,T35] ( 3, 35.84) long -> x11 "fgMakeTemp is creating a new local variable"
+; V61 rat6 [V61,T02] ( 3,2416.64) long -> x0 "Spilling to split statement for tree"
+; V62 rat7 [V62,T01] ( 3,2867.20) long -> x1 "spilling expr"
+; V63 rat8 [V63,T03] ( 3,2293.76) long -> x11 "fgMakeTemp is creating a new local variable"
+; V64 rat9 [V64,T21] ( 3, 151.04) long -> x0 "Spilling to split statement for tree"
+; V65 rat10 [V65,T23] ( 3, 128 ) long -> x1 "runtime lookup"
+; V66 rat11 [V66,T19] ( 3, 179.20) long -> x1 "spilling expr"
+; V67 rat12 [V67,T22] ( 3, 143.36) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -91,13 +87,13 @@ G_M1799_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x25, [sp, #0x48]
mov fp, sp
str x0, [fp, #0x10]
- mov x19, x0
- ; gcrRegs +[x19]
- mov x20, x1
+ mov x20, x0
; gcrRegs +[x20]
+ mov x19, x1
+ ; gcrRegs +[x19]
;; size=36 bbWeight=1 PerfScore 7.50
G_M1799_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x21, [x19]
+ ldr x21, [x20]
mov x0, x21
ldr x1, [x0, #0x38]
ldr x1, [x1]
@@ -121,11 +117,11 @@ G_M1799_IG05: ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
mov x22, x0
;; size=20 bbWeight=0.36 PerfScore 1.08
G_M1799_IG06: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w1, [x19, #0x28]
- stp w1, w1, [x20, #0x18]
+ ldr w1, [x20, #0x28]
+ stp w1, w1, [x19, #0x18]
add w1, w1, #1
- str w1, [x19, #0x28]
- ldr x23, [x19, #0x08]
+ str w1, [x20, #0x28]
+ ldr x23, [x20, #0x08]
; gcrRegs +[x23]
ldr w24, [x23, #0x10]
ldr x0, [x23, #0x08]
@@ -136,7 +132,7 @@ G_M1799_IG06: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
;; size=40 bbWeight=8 PerfScore 152.00
G_M1799_IG07: ; bbWeight=2, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref
sxtw x1, w24
- mov x2, x20
+ mov x2, x19
; gcrRegs +[x2]
bl CORINFO_HELP_ARRADDR_ST
; gcrRegs -[x0 x2]
@@ -151,7 +147,7 @@ G_M1799_IG07: ; bbWeight=2, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=
G_M1799_IG08: ; bbWeight=2, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref
mov x0, x23
; gcrRegs +[x0]
- mov x1, x20
+ mov x1, x19
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -163,9 +159,9 @@ G_M1799_IG08: ; bbWeight=2, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
;; size=28 bbWeight=2 PerfScore 13.00
G_M1799_IG09: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov w0, #1
- strb w0, [x20, #0x22]
+ strb w0, [x19, #0x22]
mov x11, x22
- ldr x0, [x20, #0x10]
+ ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr x1, [x11]
blr x1
@@ -174,9 +170,9 @@ G_M1799_IG09: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
; gcrRegs +[x23]
cbnz x23, G_M1799_IG15
;; size=32 bbWeight=8 PerfScore 84.00
-G_M1799_IG10: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0 x20 x23]
- ldr x0, [x19, #0x20]
+G_M1799_IG10: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x19 x23]
+ ldr x0, [x20, #0x20]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]:Pop():ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]:this
movk x1, #0xD1FFAB1E LSL #16
@@ -186,8 +182,8 @@ G_M1799_IG10: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
blr x1
; gcrRegs +[x1]
; gcr arg pop 0
- mov x20, x0
- ; gcrRegs +[x20]
+ mov x19, x0
+ ; gcrRegs +[x19]
mov x23, x1
; gcrRegs +[x23]
ldr x0, [x21, #0x38]
@@ -203,7 +199,7 @@ G_M1799_IG11: ; bbWeight=6.40, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=
cbz x11, G_M1799_IG20
;; size=8 bbWeight=6.40 PerfScore 25.60
G_M1799_IG12: ; bbWeight=8, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
- ldr w24, [x20, #0x1C]
+ ldr w24, [x19, #0x1C]
mov x0, x23
; gcrRegs +[x0]
ldr x1, [x11]
@@ -218,7 +214,7 @@ G_M1799_IG13: ; bbWeight=5.94, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=
sxtw w0, w24
;; size=4 bbWeight=5.94 PerfScore 2.97
G_M1799_IG14: ; bbWeight=8, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref
- str w0, [x20, #0x1C]
+ str w0, [x19, #0x1C]
;; size=4 bbWeight=8 PerfScore 8.00
G_M1799_IG15: ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
mov x0, x23
@@ -231,23 +227,23 @@ G_M1799_IG15: ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M1799_IG31
+ cbz w0, G_M1799_IG28
;; size=32 bbWeight=512 PerfScore 3840.00
-G_M1799_IG16: ; bbWeight=128, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x1, [x0, #0x08]
- cmp x1, #48
+G_M1799_IG16: ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x20]
+ ldr x1, [x0, #0x38]
+ ldr x1, [x1]
+ ldr x2, [x1, #0x08]
+ cmp x2, #48
...
+0 (0.00%) : 490843.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)
@@ -23,11 +23,11 @@
; V12 loc9 [V12,T14] ( 4, 14 ) byref -> x27
; V13 loc10 [V13,T17] ( 6, 13.50) int -> x26
; V14 loc11 [V14,T15] ( 4, 14 ) byref -> x27
-; V15 loc12 [V15,T66] ( 3, 1.50) int -> x22 single-def
+; V15 loc12 [V15,T62] ( 3, 1.50) int -> x22 single-def
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp2 [V18,T31] ( 4, 3 ) long -> x11 "VirtualCall with runtime lookup"
-; V19 tmp3 [V19,T67] ( 3, 1.50) int -> x24
+; V19 tmp3 [V19,T63] ( 3, 1.50) int -> x24
;* V20 tmp4 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -35,8 +35,8 @@
;* V24 tmp8 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp10 [V26,T28] ( 4, 4 ) byref -> x0 single-def "dup spill"
-; V27 tmp11 [V27,T61] ( 3, 2 ) long -> x1 "spilling helperCall"
-; V28 tmp12 [V28,T68] ( 3, 1.50) int -> x24
+; V27 tmp11 [V27,T57] ( 3, 2 ) long -> x1 "spilling helperCall"
+; V28 tmp12 [V28,T64] ( 3, 1.50) int -> x24
;* V29 tmp13 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp14 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -48,9 +48,9 @@
; V37 tmp21 [V37,T32] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V38 tmp22 [V38,T33] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp24 [V40,T81] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp24 [V40,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp26 [V42,T82] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp26 [V42,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V43 tmp27 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -58,9 +58,9 @@
; V47 tmp31 [V47,T34] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V48 tmp32 [V48,T35] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V50 tmp34 [V50,T83] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V50 tmp34 [V50,T77] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V52 tmp36 [V52,T84] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V52 tmp36 [V52,T78] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -68,63 +68,57 @@
; V57 tmp41 [V57,T36] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V58 tmp42 [V58,T37] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V60 tmp44 [V60,T85] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V60 tmp44 [V60,T79] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V62 tmp46 [V62,T86] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V62 tmp46 [V62,T80] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V63 tmp47 [V63 ] ( 6, 10.50) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64 ] ( 9, 19 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V65 tmp49 [V65,T72] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
-; V66 tmp50 [V66,T75] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V67 tmp51 [V67,T73] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
-; V68 tmp52 [V68,T76] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T74] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
-; V70 tmp54 [V70,T77] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
+; V65 tmp49 [V65,T68] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
+; V66 tmp50 [V66,T71] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V67 tmp51 [V67,T69] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
+; V68 tmp52 [V68,T72] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T70] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
+; V70 tmp54 [V70,T73] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
; V71 tmp55 [V71,T41] ( 3, 3 ) int -> x2 "index expr"
; V72 tmp56 [V72,T42] ( 3, 3 ) int -> x1 "index expr"
; V73 tmp57 [V73,T43] ( 3, 3 ) int -> x2 "index expr"
; V74 tmp58 [V74,T44] ( 3, 3 ) int -> x1 "index expr"
; V75 tmp59 [V75,T12] ( 2, 16 ) long -> x1 "argument with side effect"
; V76 tmp60 [V76,T13] ( 2, 16 ) long -> x1 "argument with side effect"
-; V77 tmp61 [V77,T64] ( 2, 2 ) int -> x1 "argument with side effect"
+; V77 tmp61 [V77,T60] ( 2, 2 ) int -> x1 "argument with side effect"
; V78 tmp62 [V78,T45] ( 3, 3 ) int -> x2 "index expr"
; V79 tmp63 [V79,T46] ( 3, 3 ) int -> x1 "index expr"
-; V80 tmp64 [V80,T65] ( 2, 2 ) long -> x1 "argument with side effect"
-; V81 cse0 [V81,T69] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V82 cse1 [V82,T70] ( 3, 1.50) int -> x26 "CSE - moderate"
-; V83 cse2 [V83,T71] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V84 rat0 [V84,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V85 rat1 [V85,T62] ( 3, 2 ) long -> x1 "runtime lookup"
+; V80 tmp64 [V80,T61] ( 2, 2 ) long -> x1 "argument with side effect"
+; V81 cse0 [V81,T65] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V82 cse1 [V82,T66] ( 3, 1.50) int -> x26 "CSE - moderate"
+; V83 cse2 [V83,T67] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V84 rat0 [V84,T52] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V85 rat1 [V85,T58] ( 3, 2 ) long -> x1 "runtime lookup"
; V86 rat2 [V86,T47] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V87 rat3 [V87,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V88 rat4 [V88,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V89 rat5 [V89,T48] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V90 rat6 [V90,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V91 rat7 [V91,T10] ( 3, 16 ) long -> x1 "runtime lookup"
-; V92 rat8 [V92,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V93 rat9 [V93,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V94 rat10 [V94,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V95 rat11 [V95,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V96 rat12 [V96,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V97 rat13 [V97,T49] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V98 rat14 [V98,T57] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V99 rat15 [V99,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V100 rat16 [V100,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V101 rat17 [V101,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V102 rat18 [V102,T11] ( 3, 16 ) long -> x1 "runtime lookup"
-; V103 rat19 [V103,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-; V104 rat20 [V104,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
-; V105 rat21 [V105,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V106 rat22 [V106,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V107 rat23 [V107,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V108 rat24 [V108,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V109 rat25 [V109,T58] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V87 rat3 [V87,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V88 rat4 [V88,T10] ( 3, 16 ) long -> x1 "runtime lookup"
+; V89 rat5 [V89,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V90 rat6 [V90,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V91 rat7 [V91,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V92 rat8 [V92,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V93 rat9 [V93,T53] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V94 rat10 [V94,T48] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
+; V95 rat11 [V95,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V96 rat12 [V96,T11] ( 3, 16 ) long -> x1 "runtime lookup"
+; V97 rat13 [V97,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+; V98 rat14 [V98,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
+; V99 rat15 [V99,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+;* V100 rat16 [V100,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V101 rat17 [V101,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V102 rat18 [V102,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V103 rat19 [V103,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V104 rat20 [V104,T49] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V105 rat21 [V105,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V106 rat22 [V106,T74] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V107 rat23 [V107,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V108 rat24 [V108,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V109 rat25 [V109,T59] ( 3, 2 ) long -> x1 "runtime lookup"
; V110 rat26 [V110,T51] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V111 rat27 [V111,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V112 rat28 [V112,T80] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V113 rat29 [V113,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V114 rat30 [V114,T60] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V115 rat31 [V115,T63] ( 3, 2 ) long -> x1 "runtime lookup"
-; V116 rat32 [V116,T53] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 24
libraries.crossgen2.osx.arm64.checked.mch
-8 (-1.82%) : 165743.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)
@@ -17,7 +17,7 @@
; V06 tmp1 [V06,T00] ( 6, 20 ) byref -> x25 "impAppendStmt"
; V07 tmp2 [V07,T05] ( 6, 8 ) byref -> x26
; V08 tmp3 [V08,T02] ( 6, 12 ) long -> x11 "VirtualCall with runtime lookup"
-; V09 tmp4 [V09,T11] ( 4, 4 ) int -> registers
+; V09 tmp4 [V09,T11] ( 2, 3.96) int -> x0
; V10 tmp5 [V10,T06] ( 4, 8 ) ref -> x0 "argument with side effect"
; V11 cse0 [V11,T03] ( 4, 11.88) long -> x21 "CSE - aggressive"
; V12 cse1 [V12,T08] ( 5, 7 ) int -> x23 "CSE - aggressive"
@@ -109,8 +109,8 @@ G_M22994_IG06: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=5000000
; byrRegs -[x26]
; gcr arg pop 0
cmp w0, #0
- cset x21, eq
- cbnz w21, G_M22994_IG16
+ cset x0, eq
+ cbnz w0, G_M22994_IG16
;; size=56 bbWeight=1.98 PerfScore 36.63
G_M22994_IG07: ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz
add w22, w22, #1
@@ -187,10 +187,8 @@ G_M22994_IG12: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=400
; gcrRegs -[x0-x1]
; byrRegs -[x26]
; gcr arg pop 0
- cmp w0, #0
- cset x0, eq
- cbnz w0, G_M22994_IG16
- ;; size=68 bbWeight=0.02 PerfScore 0.46
+ cbz w0, G_M22994_IG16
+ ;; size=60 bbWeight=0.02 PerfScore 0.44
G_M22994_IG13: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
add w22, w22, #1
cmp w23, w22
@@ -228,7 +226,7 @@ G_M22994_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 440, prolog size 40, PerfScore 120.21, instruction count 110, allocated bytes for code 440 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 432, prolog size 40, PerfScore 120.19, instruction count 108, allocated bytes for code 432 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -239,7 +237,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 110 (0x0006e) Actual length = 440 (0x0001b8)
+ Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-0.73%) : 109526.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport
@@ -68,7 +68,6 @@
; V56 cse0 [V56,T04] ( 17, 12.50) byref -> x23 "CSE - aggressive"
; V57 cse1 [V57,T26] ( 4, 5 ) long -> x26 "CSE - moderate"
; V58 cse2 [V58,T13] ( 8, 8 ) long -> [fp+0x70] multi-def "CSE - moderate"
-; TEMP_01 byref -> [fp+0x10]
;
; Lcl frame size = 160
@@ -80,19 +79,17 @@ G_M28747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x25, x26, [sp, #0xE0]
stp x27, x28, [sp, #0xF0]
mov fp, sp
- add x9, fp, #16
+ add x9, fp, #120
movi v16.16b, #0
stp q16, q16, [x9]
- stp q16, q16, [x9, #0x20]
- stp q16, q16, [x9, #0x40]
- stp q16, q16, [x9, #0x60]
- stp q16, q16, [x9, #0x80]
+ stp xzr, xzr, [x9, #0x20]
+ str xzr, [x9, #0x30]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
; gcrRegs +[x20]
mov x21, xzr
- ;; size=68 bbWeight=1 PerfScore 14.00
+ ;; size=60 bbWeight=1 PerfScore 12.00
G_M28747_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -880,8 +877,8 @@ G_M28747_IG19: ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
ldr x1, [x11]
blr x1
; gcrRegs +[x0]
- mov x1, x0
- ; gcrRegs +[x1]
+ str x0, [fp, #0x50] // [V32 tmp17]
+ ; GC ptr vars +{V32}
ldr w0, [x22, #0x08]
; gcrRegs -[x0]
cmp w28, w0
@@ -892,11 +889,6 @@ G_M28747_IG19: ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
; gcrRegs +[x15]
str x15, [fp, #0x18] // [V45 tmp30]
; GC ptr vars +{V45}
- str x1, [fp, #0x50] // [V32 tmp17]
- ; GC ptr vars +{V32}
- add x14, x1, #8
- ; byrRegs +[x14]
- str x14, [fp, #0x10] // [TEMP_01]
ldr x0, [fp, #0x68] // [V12 loc10]
; gcrRegs +[x0]
; byrRegs -[x0]
@@ -904,8 +896,7 @@ G_M28747_IG19: ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x11]
blr x3
- ; gcrRegs -[x1 x15]
- ; byrRegs -[x14]
+ ; gcrRegs -[x15]
ldr x1, [fp, #0x68] // [V12 loc10]
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
@@ -915,18 +906,19 @@ G_M28747_IG19: ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
; GC ptr vars -{V12}
blr x2
; gcrRegs -[x1]
- ldr x14, [fp, #0x10] // [TEMP_01]
+ ldr x11, [fp, #0x50] // [V32 tmp17]
+ ; gcrRegs +[x11]
+ add x14, x11, #8
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_ASSIGN_REF
add x12, x12, [LOW RELOC #0xD1FFAB1E]
ldr x12, [x12]
+ ; GC ptr vars -{V32}
blr x12
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ldr x11, [fp, #0x50] // [V32 tmp17]
- ; gcrRegs +[x11]
add x14, x11, #16
; byrRegs +[x14]
ldr x15, [fp, #0x18] // [V45 tmp30]
@@ -934,7 +926,7 @@ G_M28747_IG19: ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_ASSIGN_REF
add x12, x12, [LOW RELOC #0xD1FFAB1E]
ldr x12, [x12]
- ; GC ptr vars -{V32 V45}
+ ; GC ptr vars -{V45}
blr x12
; gcrRegs -[x15]
; byrRegs -[x14]
@@ -997,7 +989,7 @@ G_M28747_IG19: ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
ldr x2, [x23, #0xD1FFAB1E]
; gcrRegs +[x2]
b G_M28747_IG21
- ;; size=312 bbWeight=0.02 PerfScore 2.02
+ ;; size=300 bbWeight=0.02 PerfScore 1.95
G_M28747_IG20: ; bbWeight=0.02, gcrefRegs=3780000 {x19 x20 x21 x22 x24 x25}, byrefRegs=800000 {x23}, byref
; gcrRegs -[x2 x11]
ldr x1, [x23, #0xD1FFAB1E]
@@ -1107,7 +1099,7 @@ G_M28747_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2740, prolog size 56, PerfScore 783.17, instruction count 685, allocated bytes for code 2740 (MethodHash=f6968fb4) for method Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
+; Total bytes of code 2720, prolog size 48, PerfScore 781.10, instruction count 680, allocated bytes for code 2720 (MethodHash=f6968fb4) for method Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
; ============================================================
Unwind Info:
@@ -1118,7 +1110,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 685 (0x002ad) Actual length = 2740 (0x000ab4)
+ Function Length : 680 (0x002a8) Actual length = 2720 (0x000aa0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-0.68%) : 89908.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary
2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
@@ -12,7 +12,7 @@
; V00 arg0 [V00,T19] ( 5, 5 ) ref -> x0 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax>
; V01 arg1 [V01,T10] ( 6, 11 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]>
; V02 arg2 [V02,T13] ( 4, 6 ) ref -> x20 class-hnd single-def <System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]>
-; V03 loc0 [V03 ] ( 5, 7 ) struct (24) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
+; V03 loc0 [V03 ] ( 5, 7 ) struct (24) [fp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
; V04 loc1 [V04,T11] ( 7, 10.04) ref -> x22 class-hnd exact single-def <<unknown class>>
; V05 loc2 [V05,T20] ( 5, 7 ) int -> x23 single-def
; V06 loc3 [V06,T03] ( 16, 25.04) int -> x24
@@ -20,13 +20,13 @@
; V08 loc5 [V08,T08] ( 10, 16 ) ref -> x27 class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
;* V09 loc6 [V09 ] ( 0, 0 ) ushort -> zero-ref
; V10 loc7 [V10,T12] ( 8, 8 ) ref -> x26 class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax>
-; V11 loc8 [V11 ] ( 4, 4 ) struct (24) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
+; V11 loc8 [V11 ] ( 4, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
; V12 loc9 [V12,T22] ( 3, 6 ) int -> x20 single-def
; V13 loc10 [V13,T04] ( 7, 21 ) int -> x21
; V14 loc11 [V14,T01] ( 6, 72 ) ref -> x24 class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbol>
; V15 loc12 [V15,T00] ( 6, 86 ) int -> x0
; V16 loc13 [V16,T23] ( 2, 4 ) ref -> x24 class-hnd <<unknown class>>
-; V17 loc14 [V17 ] ( 4, 8 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]>
+; V17 loc14 [V17 ] ( 4, 8 ) struct ( 8) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]>
; V18 loc15 [V18,T24] ( 2, 4 ) ref -> x24 class-hnd <<unknown class>>
;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V20 tmp1 [V20,T05] ( 10, 20 ) ref -> x27 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
@@ -35,7 +35,7 @@
;* V23 tmp4 [V23 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
; V24 tmp5 [V24,T14] ( 4, 8 ) ref -> x0 class-hnd "Inlining Arg" <System.String>
;* V25 tmp6 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.Symbols.AliasSymbol>
-; V26 tmp7 [V26 ] ( 4, 8 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V17.array (fldOffset=0x0)" P-DEP
+; V26 tmp7 [V26 ] ( 4, 8 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V17.array (fldOffset=0x0)" P-DEP
; V27 tmp8 [V27,T25] ( 2, 4 ) ref -> x1 "field V22.array (fldOffset=0x0)" P-INDEP
; V28 tmp9 [V28,T26] ( 2, 4 ) ref -> x1 "field V23.array (fldOffset=0x0)" P-INDEP
; V29 tmp10 [V29,T27] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
@@ -47,27 +47,27 @@
; V35 tmp16 [V35,T18] ( 2, 8 ) ref -> x2 "argument with side effect"
; V36 cse0 [V36,T21] ( 5, 7 ) long -> x21 "CSE - moderate"
; V37 cse1 [V37,T02] ( 2, 33 ) long -> x23 hoist "CSE - aggressive"
-; TEMP_01 byref -> [fp+0x18]
;
-; Lcl frame size = 72
+; Lcl frame size = 56
G_M1087_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0xA0]!
- stp x19, x20, [sp, #0x58]
- stp x21, x22, [sp, #0x68]
- stp x23, x24, [sp, #0x78]
- stp x25, x26, [sp, #0x88]
- str x27, [sp, #0x98]
+ stp fp, lr, [sp, #-0x90]!
+ stp x19, x20, [sp, #0x48]
+ stp x21, x22, [sp, #0x58]
+ stp x23, x24, [sp, #0x68]
+ stp x25, x26, [sp, #0x78]
+ str x27, [sp, #0x88]
mov fp, sp
- add x9, fp, #24
+ add x9, fp, #16
movi v16.16b, #0
stp q16, q16, [x9]
- stp q16, q16, [x9, #0x20]
+ stp xzr, xzr, [x9, #0x20]
+ str xzr, [x9, #0x30]
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=52 bbWeight=1 PerfScore 10.50
+ ;; size=56 bbWeight=1 PerfScore 11.50
G_M1087_IG02: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldrsb wzr, [x0]
@@ -85,7 +85,7 @@ G_M1087_IG02: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
ldr x4, [x11]
blr x4
; byrRegs -[x2]
- add x8, fp, #64 // [V03 loc0]
+ add x8, fp, #48 // [V03 loc0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr wzr, [x0]
@@ -96,7 +96,7 @@ G_M1087_IG02: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
add x1, x1, [LOW RELOC #0xD1FFAB1E]
ldr x21, [x1]
mov x1, x21
- add x0, fp, #64 // [V03 loc0]
+ add x0, fp, #48 // [V03 loc0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
@@ -110,7 +110,7 @@ G_M1087_IG02: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
mov x22, x0
; gcrRegs +[x22]
mov x1, x21
- add x0, fp, #64 // [V03 loc0]
+ add x0, fp, #48 // [V03 loc0]
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -125,7 +125,7 @@ G_M1087_IG02: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
;; size=184 bbWeight=1 PerfScore 54.00
G_M1087_IG03: ; bbWeight=3.96, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
mov x1, x21
- add x0, fp, #64 // [V03 loc0]
+ add x0, fp, #48 // [V03 loc0]
mov w2, w24
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -160,7 +160,7 @@ G_M1087_IG04: ; bbWeight=1.98, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
; gcrRegs -[x25]
mov x26, x0
; gcrRegs +[x26]
- add x8, fp, #40 // [V11 loc8]
+ add x8, fp, #24 // [V11 loc8]
mov x0, x26
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -175,7 +175,7 @@ G_M1087_IG04: ; bbWeight=1.98, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
; gcrRegs +[x0]
mov x27, x0
; gcrRegs +[x27]
- add x0, fp, #40 // [V11 loc8]
+ add x0, fp, #24 // [V11 loc8]
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -302,7 +302,7 @@ G_M1087_IG07: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}
G_M1087_IG08: ; bbWeight=0.04, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
mov x1, x21
- add x0, fp, #64 // [V03 loc0]
+ add x0, fp, #48 // [V03 loc0]
mov w2, w24
adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -337,7 +337,7 @@ G_M1087_IG09: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
; gcrRegs -[x25]
mov x26, x0
; gcrRegs +[x26]
- add x8, fp, #40 // [V11 loc8]
+ add x8, fp, #24 // [V11 loc8]
mov x0, x26
adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -352,7 +352,7 @@ G_M1087_IG09: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
; gcrRegs +[x0]
mov x27, x0
; gcrRegs +[x27]
- add x0, fp, #40 // [V11 loc8]
+ add x0, fp, #24 // [V11 loc8]
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -370,16 +370,12 @@ G_M1087_IG09: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
blr x12
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- add x14, x27, #48
- ; byrRegs +[x14]
- str x14, [fp, #0x18] // [TEMP_01]
mov x0, x26
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
- ; byrRegs -[x14]
mov x1, x26
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
@@ -388,7 +384,7 @@ G_M1087_IG09: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
ldr x2, [x11]
blr x2
; gcrRegs -[x1 x26]
- ldr x14, [fp, #0x18] // [TEMP_01]
+ add x14, x27, #48
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
@@ -399,7 +395,7 @@ G_M1087_IG09: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
; gcrRegs -[x0 x15]
; byrRegs -[x14]
b G_M1087_IG11
- ;; size=200 bbWeight=0.02 PerfScore 1.14
+ ;; size=192 bbWeight=0.02 PerfScore 1.08
G_M1087_IG10: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byrefRegs=0000 {}, byref
; gcrRegs -[x27] +[x25]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
@@ -423,16 +419,12 @@ G_M1087_IG10: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
blr x12
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- add x14, x27, #48
- ; byrRegs +[x14]
- str x14, [fp, #0x18] // [TEMP_01]
mov x0, x25
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
- ; byrRegs -[x14]
mov x1, x25
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
@@ -441,7 +433,7 @@ G_M1087_IG10: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
ldr x2, [x11]
blr x2
; gcrRegs -[x1 x25]
- ldr x14, [fp, #0x18] // [TEMP_01]
+ add x14, x27, #48
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
@@ -451,7 +443,7 @@ G_M1087_IG10: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
blr x12
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ;; size=136 bbWeight=0.02 PerfScore 0.84
+ ;; size=128 bbWeight=0.02 PerfScore 0.78
G_M1087_IG11: ; bbWeight=0.04, gcrefRegs=8580000 {x19 x20 x22 x27}, byrefRegs=0000 {}, byref, isz
ldr w14, [x22, #0x08]
cmp w24, w14
@@ -569,11 +561,11 @@ G_M1087_IG18: ; bbWeight=2, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=00
ldr x2, [x11]
blr x2
; gcrRegs -[x1] +[x0]
- str x0, [fp, #0x20] // [V17 loc14]
+ str x0, [fp, #0x10] // [V17 loc14]
adrp x1, [HIGH RELOC #0xD1FFAB1E] // <unknown method>
add x1, x1, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x1]
- add x0, fp, #32 // [V17 loc14]
+ add x0, fp, #16 // [V17 loc14]
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -622,11 +614,11 @@ G_M1087_IG19: ; bbWeight=2, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=00
ldr x2, [x11]
blr x2
; gcrRegs -[x1] +[x0]
- str x0, [fp, #0x20] // [V17 loc14]
+ str x0, [fp, #0x10] // [V17 loc14]
adrp x1, [HIGH RELOC #0xD1FFAB1E] // <unknown method>
add x1, x1, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x1]
- add x0, fp, #32 // [V17 loc14]
+ add x0, fp, #16 // [V17 loc14]
; gcrRegs -[x0]
...
-4 (-0.15%) : 183363.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
@@ -35,13 +35,13 @@
; V23 tmp2 [V23,T55] ( 2, 0 ) ref -> x19 class-hnd single-def "finalizable newobj spill" <<unknown class>>
; V24 tmp3 [V24,T46] ( 3, 2 ) int -> x26
; V25 tmp4 [V25,T22] ( 4, 16 ) int -> x25 "impSpillLclRefs"
-; V26 tmp5 [V26,T33] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
+; V26 tmp5 [V26,T32] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
;* V27 tmp6 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V28 tmp7 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V29 tmp8 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V30 tmp9 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>>
; V31 tmp10 [V31,T54] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V32 tmp11 [V32,T29] ( 2, 0.16) ubyte -> x0 "Inline return value spill temp"
+;* V32 tmp11 [V32,T40] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp12 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
; V34 tmp13 [V34,T14] ( 6, 24 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
;* V35 tmp14 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -57,18 +57,18 @@
; V45 tmp24 [V45,T09] ( 4, 32 ) ref -> x0 "argument with side effect"
; V46 tmp25 [V46,T10] ( 4, 32 ) ref -> x0 "argument with side effect"
; V47 tmp26 [V47,T11] ( 4, 32 ) ref -> [fp+0x30] "argument with side effect"
-; V48 tmp27 [V48,T34] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V49 tmp28 [V49,T35] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V50 tmp29 [V50,T36] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V51 tmp30 [V51,T37] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V52 tmp31 [V52,T38] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V53 tmp32 [V53,T39] ( 2, 8 ) ref -> x1 "argument with side effect"
-; V54 tmp33 [V54,T40] ( 2, 8 ) ref -> [fp+0x28] spill-single-def "argument with side effect"
+; V48 tmp27 [V48,T33] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V49 tmp28 [V49,T34] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V50 tmp29 [V50,T35] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V51 tmp30 [V51,T36] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V52 tmp31 [V52,T37] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V53 tmp32 [V53,T38] ( 2, 8 ) ref -> x1 "argument with side effect"
+; V54 tmp33 [V54,T39] ( 2, 8 ) ref -> [fp+0x28] spill-single-def "argument with side effect"
; V55 tmp34 [V55,T20] ( 4, 16 ) ref -> [fp+0x20] "argument with side effect"
; V56 tmp35 [V56,T21] ( 4, 16 ) ref -> x1 "argument with side effect"
-; V57 tmp36 [V57,T30] ( 4, 8 ) ref -> [fp+0x18] "argument with side effect"
-; V58 tmp37 [V58,T31] ( 4, 8 ) ref -> x3 "argument with side effect"
-; V59 tmp38 [V59,T32] ( 4, 8 ) ref -> x0 "argument with side effect"
+; V57 tmp36 [V57,T29] ( 4, 8 ) ref -> [fp+0x18] "argument with side effect"
+; V58 tmp37 [V58,T30] ( 4, 8 ) ref -> x3 "argument with side effect"
+; V59 tmp38 [V59,T31] ( 4, 8 ) ref -> x0 "argument with side effect"
; V60 cse0 [V60,T13] ( 8, 28 ) long -> [fp+0x78] multi-def "CSE - aggressive"
; V61 cse1 [V61,T00] ( 6, 71.28) long -> [fp+0x70] spill-single-def "CSE - aggressive"
; V62 cse2 [V62,T26] ( 4, 11.88) long -> [fp+0x68] spill-single-def "CSE - moderate"
@@ -478,14 +478,11 @@ G_M58711_IG18: ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
ldr x11, [x20, x1]
; gcrRegs +[x11]
cmp x0, x11
- cset x0, eq
- ; gcrRegs -[x0]
- cbz w0, G_M58711_IG21
+ bne G_M58711_IG21
ldr x1, [fp, #0x10] // [V67 cse7]
; byrRegs +[x1]
ldr x2, [fp, #0x58] // [V64 cse4]
ldr x0, [x1, x2]
- ; gcrRegs +[x0]
ldr x11, [fp, #0x40] // [V71 cse11]
; gcrRegs -[x11]
ldr wzr, [x0]
@@ -513,7 +510,7 @@ G_M58711_IG18: ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
; gcr arg pop 0
cbnz w0, G_M58711_IG20
b G_M58711_IG21
- ;; size=296 bbWeight=0.08 PerfScore 8.96
+ ;; size=292 bbWeight=0.08 PerfScore 8.92
G_M58711_IG19: ; bbWeight=0.08, gcVars=0000000000000014 {V19 V67}, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V02 V04 V19 V67}
ldr x1, [fp, #0x10] // [V67 cse7]
@@ -1134,7 +1131,7 @@ G_M58711_IG55: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
brk_unix #0
;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2628, prolog size 40, PerfScore 2218.63, instruction count 657, allocated bytes for code 2628 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
+; Total bytes of code 2624, prolog size 40, PerfScore 2218.59, instruction count 656, allocated bytes for code 2624 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
; ============================================================
Unwind Info:
@@ -1145,7 +1142,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 657 (0x00291) Actual length = 2628 (0x000a44)
+ Function Length : 656 (0x00290) Actual length = 2624 (0x000a40)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.15%) : 124600.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
@@ -34,7 +34,7 @@
; V22 tmp2 [V22,T55] ( 2, 0 ) ref -> x19 class-hnd single-def "finalizable newobj spill" <<unknown class>>
; V23 tmp3 [V23,T46] ( 3, 2 ) int -> x26
; V24 tmp4 [V24,T22] ( 4, 16 ) int -> x25 "impSpillLclRefs"
-; V25 tmp5 [V25,T33] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
+; V25 tmp5 [V25,T32] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
;* V26 tmp6 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V27 tmp7 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V28 tmp8 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
@@ -42,7 +42,7 @@
; V30 tmp10 [V30,T53] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V31 tmp11 [V31,T56] ( 2, 0 ) ref -> x19 class-hnd single-def "finalizable newobj spill" <<unknown class>>
; V32 tmp12 [V32,T54] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V33 tmp13 [V33,T29] ( 2, 0.16) ubyte -> x0 "Inline return value spill temp"
+;* V33 tmp13 [V33,T40] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V34 tmp14 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
; V35 tmp15 [V35,T14] ( 6, 24 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
;* V36 tmp16 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -58,18 +58,18 @@
; V46 tmp26 [V46,T09] ( 4, 32 ) ref -> x0 "argument with side effect"
; V47 tmp27 [V47,T10] ( 4, 32 ) ref -> x0 "argument with side effect"
; V48 tmp28 [V48,T11] ( 4, 32 ) ref -> [fp+0x30] "argument with side effect"
-; V49 tmp29 [V49,T34] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V50 tmp30 [V50,T35] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V51 tmp31 [V51,T36] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V52 tmp32 [V52,T37] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V53 tmp33 [V53,T38] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V54 tmp34 [V54,T39] ( 2, 8 ) ref -> x1 "argument with side effect"
-; V55 tmp35 [V55,T40] ( 2, 8 ) ref -> [fp+0x28] spill-single-def "argument with side effect"
+; V49 tmp29 [V49,T33] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V50 tmp30 [V50,T34] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V51 tmp31 [V51,T35] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V52 tmp32 [V52,T36] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V53 tmp33 [V53,T37] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V54 tmp34 [V54,T38] ( 2, 8 ) ref -> x1 "argument with side effect"
+; V55 tmp35 [V55,T39] ( 2, 8 ) ref -> [fp+0x28] spill-single-def "argument with side effect"
; V56 tmp36 [V56,T20] ( 4, 16 ) ref -> [fp+0x20] "argument with side effect"
; V57 tmp37 [V57,T21] ( 4, 16 ) ref -> x1 "argument with side effect"
-; V58 tmp38 [V58,T30] ( 4, 8 ) ref -> [fp+0x18] "argument with side effect"
-; V59 tmp39 [V59,T31] ( 4, 8 ) ref -> x3 "argument with side effect"
-; V60 tmp40 [V60,T32] ( 4, 8 ) ref -> x0 "argument with side effect"
+; V58 tmp38 [V58,T29] ( 4, 8 ) ref -> [fp+0x18] "argument with side effect"
+; V59 tmp39 [V59,T30] ( 4, 8 ) ref -> x3 "argument with side effect"
+; V60 tmp40 [V60,T31] ( 4, 8 ) ref -> x0 "argument with side effect"
; V61 cse0 [V61,T13] ( 8, 28 ) long -> [fp+0x78] multi-def "CSE - aggressive"
; V62 cse1 [V62,T00] ( 6, 71.28) long -> [fp+0x70] spill-single-def "CSE - aggressive"
; V63 cse2 [V63,T26] ( 4, 11.88) long -> [fp+0x68] spill-single-def "CSE - moderate"
@@ -479,14 +479,11 @@ G_M58711_IG18: ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
ldr x11, [x20, x1]
; gcrRegs +[x11]
cmp x0, x11
- cset x0, eq
- ; gcrRegs -[x0]
- cbz w0, G_M58711_IG21
+ bne G_M58711_IG21
ldr x1, [fp, #0x10] // [V68 cse7]
; byrRegs +[x1]
ldr x2, [fp, #0x58] // [V65 cse4]
ldr x0, [x1, x2]
- ; gcrRegs +[x0]
ldr x11, [fp, #0x40] // [V72 cse11]
; gcrRegs -[x11]
ldr wzr, [x0]
@@ -514,7 +511,7 @@ G_M58711_IG18: ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
; gcr arg pop 0
cbnz w0, G_M58711_IG20
b G_M58711_IG21
- ;; size=296 bbWeight=0.08 PerfScore 8.96
+ ;; size=292 bbWeight=0.08 PerfScore 8.92
G_M58711_IG19: ; bbWeight=0.08, gcVars=0000000000000014 {V18 V68}, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V02 V04 V18 V68}
ldr x1, [fp, #0x10] // [V68 cse7]
@@ -1156,7 +1153,7 @@ G_M58711_IG55: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=84 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2676, prolog size 40, PerfScore 2218.63, instruction count 669, allocated bytes for code 2676 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
+; Total bytes of code 2672, prolog size 40, PerfScore 2218.59, instruction count 668, allocated bytes for code 2672 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
; ============================================================
Unwind Info:
@@ -1167,7 +1164,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 669 (0x0029d) Actual length = 2676 (0x000a74)
+ Function Length : 668 (0x0029c) Actual length = 2672 (0x000a70)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.10%) : 109800.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray
1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
@@ -54,7 +54,7 @@
; V42 tmp8 [V42,T10] ( 6, 48 ) ref -> [fp+0x38] class-hnd "non-inline candidate call" <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol>
;* V43 tmp9 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V44 tmp10 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
-; V45 tmp11 [V45,T41] ( 2, 0.16) ubyte -> x1 "Inline return value spill temp"
+;* V45 tmp11 [V45,T42] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V46 tmp12 [V46,T16] ( 4, 32 ) ref -> [fp+0x30] class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol>
;* V47 tmp13 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
; V48 tmp14 [V48,T30] ( 4, 16 ) ubyte -> x2 "Inline return value spill temp"
@@ -100,7 +100,7 @@
;* V88 tmp54 [V88,T57] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; V89 tmp55 [V89,T45] ( 2, 8 ) int -> x1 "argument with side effect"
; V90 cse0 [V90,T04] ( 14, 72 ) long -> [fp+0x78] multi-def "CSE - aggressive"
-; V91 cse1 [V91,T42] ( 4, 8 ) int -> [fp+0x74] spill-single-def "CSE - moderate"
+; V91 cse1 [V91,T41] ( 4, 8 ) int -> [fp+0x74] spill-single-def "CSE - moderate"
; V92 cse2 [V92,T15] ( 9, 38 ) long -> x27 "CSE - aggressive"
; V93 cse3 [V93,T09] ( 10, 56 ) long -> [fp+0x68] multi-def "CSE - aggressive"
; V94 cse4 [V94,T02] ( 18, 72 ) long -> [fp+0x60] multi-def "CSE - aggressive"
@@ -805,10 +805,9 @@ G_M30062_IG27: ; bbWeight=0.08, gcrefRegs=D80000 {x19 x20 x22 x23}, byref
blr x1
; gcrRegs -[x0]
cmp w0, #32
- cset x1, ne
- cbz w1, G_M30062_IG34
+ beq G_M30062_IG34
b G_M30062_IG38
- ;; size=260 bbWeight=0.08 PerfScore 7.72
+ ;; size=256 bbWeight=0.08 PerfScore 7.68
G_M30062_IG28: ; bbWeight=0.08, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=2200000 {x21 x25}, byref, isz
ldr x1, [fp, #0x78] // [V90 cse0]
add x0, fp, #0xD1FFAB1E // [V19 loc12]
@@ -1420,7 +1419,7 @@ G_M30062_IG71: ; bbWeight=0, gcVars=00000000000000000000000000000000 {},
brk_unix #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 3844, prolog size 64, PerfScore 3960.13, instruction count 961, allocated bytes for code 3844 (MethodHash=40c98a91) for method Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
+; Total bytes of code 3840, prolog size 64, PerfScore 3960.09, instruction count 960, allocated bytes for code 3840 (MethodHash=40c98a91) for method Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
; ============================================================
Unwind Info:
@@ -1431,7 +1430,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 961 (0x003c1) Actual length = 3844 (0x000f04)
+ Function Length : 960 (0x003c0) Actual length = 3840 (0x000f00)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries.pmi.osx.arm64.checked.mch
-20 (-4.63%) : 237087.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,System.Nullable
1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,System.Nullable
1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 17 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
+; V00 this [V00,T04] ( 7, 16 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
; V01 arg1 [V01,T17] ( 4, 4 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
-; V02 arg2 [V02,T20] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V02 arg2 [V02,T19] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V03 loc0 [V03 ] ( 3, 11 ) struct (24) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SmallDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
; V04 loc1 [V04,T10] ( 4, 8 ) struct (16) [fp+0x30] do-not-enreg[SFR] multireg-ret must-init ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,33 +27,30 @@
; V16 tmp11 [V16 ] ( 3, 11 ) ref -> [fp+0x40] do-not-enreg[X] addr-exposed "field V03._stack (fldOffset=0x0)" P-DEP
; V17 tmp12 [V17 ] ( 3, 11 ) ref -> [fp+0x48] do-not-enreg[X] addr-exposed "field V03._next (fldOffset=0x8)" P-DEP
; V18 tmp13 [V18 ] ( 3, 11 ) ref -> [fp+0x50] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x10)" P-DEP
-; V19 tmp14 [V19,T25] ( 2, 4 ) ubyte -> x23 "field V11.hasValue (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T26] ( 2, 4 ) int -> x24 "field V11.value (fldOffset=0x4)" P-INDEP
+; V19 tmp14 [V19,T23] ( 2, 4 ) ubyte -> x23 "field V11.hasValue (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T24] ( 2, 4 ) int -> x24 "field V11.value (fldOffset=0x4)" P-INDEP
; V21 tmp16 [V21 ] ( 2, 4 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V12._stack (fldOffset=0x0)" P-DEP
; V22 tmp17 [V22 ] ( 2, 4 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V12._next (fldOffset=0x8)" P-DEP
; V23 tmp18 [V23 ] ( 2, 4 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V12._current (fldOffset=0x10)" P-DEP
-; V24 tmp19 [V24,T27] ( 2, 4 ) long -> x1 "argument with side effect"
+; V24 tmp19 [V24,T25] ( 2, 4 ) long -> x1 "argument with side effect"
; V25 tmp20 [V25,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V26 tmp21 [V26,T14] ( 2, 8 ) long -> x1 "argument with side effect"
; V27 tmp22 [V27,T07] ( 3, 12 ) struct ( 8) [fp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
; V28 tmp23 [V28,T15] ( 2, 8 ) int -> x1 "argument with side effect"
; V29 tmp24 [V29,T12] ( 2, 8 ) ref -> x0 "argument with side effect"
; V30 tmp25 [V30,T13] ( 2, 8 ) ref -> x2 "argument with side effect"
-; V31 cse0 [V31,T23] ( 3, 4 ) long -> x22 "CSE - aggressive"
-;* V32 cse1 [V32,T29] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V31 cse0 [V31,T21] ( 3, 4 ) long -> x22 "CSE - aggressive"
+;* V32 cse1 [V32,T26] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; V33 cse2 [V33,T16] ( 4, 4.40) long -> x21 "CSE - aggressive"
-; V34 rat0 [V34,T21] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V35 rat1 [V35,T24] ( 3, 4 ) long -> x22 "runtime lookup"
+; V34 rat0 [V34,T20] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V35 rat1 [V35,T22] ( 3, 4 ) long -> x22 "runtime lookup"
; V36 rat2 [V36,T18] ( 3, 5.60) long -> x22 "fgMakeTemp is creating a new local variable"
-; V37 rat3 [V37,T22] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V38 rat4 [V38,T28] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V39 rat5 [V39,T19] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V40 rat6 [V40,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V41 rat7 [V41,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V42 rat8 [V42,T09] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-; V43 rat9 [V43,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V44 rat10 [V44,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V45 rat11 [V45,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V37 rat3 [V37,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V38 rat4 [V38,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V39 rat5 [V39,T09] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+; V40 rat6 [V40,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V41 rat7 [V41,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V42 rat8 [V42,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 80
@@ -118,14 +115,9 @@ G_M14191_IG06: ; bbWeight=1, nogc, extend
ldr x0, [fp, #0x28]
str x0, [fp, #0x50]
;; size=16 bbWeight=1 PerfScore 7.00
-G_M14191_IG07: ; bbWeight=1, isz, extend
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x58]
- cbnz x0, G_M14191_IG12
+G_M14191_IG07: ; bbWeight=1, extend
b G_M14191_IG12
- ;; size=24 bbWeight=1 PerfScore 14.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M14191_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x22
add x0, fp, #64 // [V03 loc0]
@@ -216,7 +208,7 @@ G_M14191_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ret lr
;; size=20 bbWeight=1 PerfScore 5.00
-; Total bytes of code 432, prolog size 40, PerfScore 322.60, instruction count 108, allocated bytes for code 432 (MethodHash=ea3fc890) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 412, prolog size 40, PerfScore 309.60, instruction count 103, allocated bytes for code 412 (MethodHash=ea3fc890) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -227,7 +219,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
+ Function Length : 103 (0x00067) Actual length = 412 (0x00019c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-4.63%) : 257072.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,System.Nullable
1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,System.Nullable
1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 17 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
+; V00 this [V00,T04] ( 7, 16 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
; V01 arg1 [V01,T17] ( 4, 4 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
-; V02 arg2 [V02,T20] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V02 arg2 [V02,T19] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V03 loc0 [V03 ] ( 3, 11 ) struct (24) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SmallDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
; V04 loc1 [V04,T10] ( 4, 8 ) struct (16) [fp+0x30] do-not-enreg[SFR] multireg-ret must-init ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,33 +27,30 @@
; V16 tmp11 [V16 ] ( 3, 11 ) ref -> [fp+0x40] do-not-enreg[X] addr-exposed "field V03._stack (fldOffset=0x0)" P-DEP
; V17 tmp12 [V17 ] ( 3, 11 ) ref -> [fp+0x48] do-not-enreg[X] addr-exposed "field V03._next (fldOffset=0x8)" P-DEP
; V18 tmp13 [V18 ] ( 3, 11 ) ref -> [fp+0x50] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x10)" P-DEP
-; V19 tmp14 [V19,T25] ( 2, 4 ) ubyte -> x23 "field V11.hasValue (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T26] ( 2, 4 ) int -> x24 "field V11.value (fldOffset=0x4)" P-INDEP
+; V19 tmp14 [V19,T23] ( 2, 4 ) ubyte -> x23 "field V11.hasValue (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T24] ( 2, 4 ) int -> x24 "field V11.value (fldOffset=0x4)" P-INDEP
; V21 tmp16 [V21 ] ( 2, 4 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V12._stack (fldOffset=0x0)" P-DEP
; V22 tmp17 [V22 ] ( 2, 4 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V12._next (fldOffset=0x8)" P-DEP
; V23 tmp18 [V23 ] ( 2, 4 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V12._current (fldOffset=0x10)" P-DEP
-; V24 tmp19 [V24,T27] ( 2, 4 ) long -> x1 "argument with side effect"
+; V24 tmp19 [V24,T25] ( 2, 4 ) long -> x1 "argument with side effect"
; V25 tmp20 [V25,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V26 tmp21 [V26,T14] ( 2, 8 ) long -> x1 "argument with side effect"
; V27 tmp22 [V27,T07] ( 3, 12 ) struct ( 8) [fp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
; V28 tmp23 [V28,T15] ( 2, 8 ) int -> x1 "argument with side effect"
; V29 tmp24 [V29,T12] ( 2, 8 ) ref -> x0 "argument with side effect"
; V30 tmp25 [V30,T13] ( 2, 8 ) ref -> x2 "argument with side effect"
-; V31 cse0 [V31,T23] ( 3, 4 ) long -> x22 "CSE - aggressive"
-;* V32 cse1 [V32,T29] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V31 cse0 [V31,T21] ( 3, 4 ) long -> x22 "CSE - aggressive"
+;* V32 cse1 [V32,T26] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; V33 cse2 [V33,T16] ( 4, 4.40) long -> x21 "CSE - aggressive"
-; V34 rat0 [V34,T21] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V35 rat1 [V35,T24] ( 3, 4 ) long -> x22 "runtime lookup"
+; V34 rat0 [V34,T20] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V35 rat1 [V35,T22] ( 3, 4 ) long -> x22 "runtime lookup"
; V36 rat2 [V36,T18] ( 3, 5.60) long -> x22 "fgMakeTemp is creating a new local variable"
-; V37 rat3 [V37,T22] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V38 rat4 [V38,T28] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V39 rat5 [V39,T19] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V40 rat6 [V40,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V41 rat7 [V41,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V42 rat8 [V42,T09] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-; V43 rat9 [V43,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V44 rat10 [V44,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V45 rat11 [V45,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V37 rat3 [V37,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V38 rat4 [V38,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V39 rat5 [V39,T09] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+; V40 rat6 [V40,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V41 rat7 [V41,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V42 rat8 [V42,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 80
@@ -118,14 +115,9 @@ G_M14191_IG06: ; bbWeight=1, nogc, extend
ldr x0, [fp, #0x28]
str x0, [fp, #0x50]
;; size=16 bbWeight=1 PerfScore 7.00
-G_M14191_IG07: ; bbWeight=1, isz, extend
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x58]
- cbnz x0, G_M14191_IG12
+G_M14191_IG07: ; bbWeight=1, extend
b G_M14191_IG12
- ;; size=24 bbWeight=1 PerfScore 14.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M14191_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x22
add x0, fp, #64 // [V03 loc0]
@@ -216,7 +208,7 @@ G_M14191_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ret lr
;; size=20 bbWeight=1 PerfScore 5.00
-; Total bytes of code 432, prolog size 40, PerfScore 322.60, instruction count 108, allocated bytes for code 432 (MethodHash=ea3fc890) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 412, prolog size 40, PerfScore 309.60, instruction count 103, allocated bytes for code 412 (MethodHash=ea3fc890) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -227,7 +219,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
+ Function Length : 103 (0x00067) Actual length = 412 (0x00019c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-3.06%) : 164163.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
@@ -8,18 +8,18 @@
; 0 inlinees with PGO data; 7 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 14 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]>
+; V00 this [V00,T04] ( 7, 13 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]>
; V01 arg1 [V01,T05] ( 8, 12 ) ref -> x19 class-hnd single-def <System.Array>
; V02 arg2 [V02,T08] ( 6, 8 ) int -> registers
; V03 loc0 [V03 ] ( 5, 12 ) struct (48) [fp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableSortedSet`1+Enumerator[System.__Canon]>
-; V04 loc1 [V04,T21] ( 2, 4 ) ref -> x23 class-hnd <System.__Canon>
+; V04 loc1 [V04,T19] ( 2, 4 ) ref -> x23 class-hnd <System.__Canon>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V09 tmp4 [V09,T07] ( 3, 12 ) int -> x20 "impSpillLclRefs"
;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V11 tmp6 [V11,T18] ( 6, 4 ) long -> x2 "Indirect call through function pointer"
+; V11 tmp6 [V11,T16] ( 6, 4 ) long -> x2 "Indirect call through function pointer"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V14 tmp9 [V14 ] ( 2, 4 ) struct (48) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableSortedSet`1+Enumerator[System.__Canon]>
@@ -28,26 +28,23 @@
;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V18 tmp13 [V18,T12] ( 3, 6 ) int -> x0 "Inline stloc first use temp"
; V19 tmp14 [V19,T06] ( 3, 12 ) byref -> x25 "Inlining Arg"
-; V20 tmp15 [V20,T28] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V21 tmp16 [V21,T22] ( 2, 4 ) long -> x1 "argument with side effect"
+; V20 tmp15 [V20,T25] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V21 tmp16 [V21,T20] ( 2, 4 ) long -> x1 "argument with side effect"
; V22 tmp17 [V22,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V23 tmp18 [V23,T09] ( 2, 8 ) long -> x1 "argument with side effect"
; V24 tmp19 [V24,T10] ( 2, 8 ) long -> x2 "argument with side effect"
-; V25 PSPSym [V25,T25] ( 1, 1 ) long -> [fp+0x80] do-not-enreg[V] "PSPSym"
-; V26 cse0 [V26,T19] ( 3, 4 ) long -> x22 "CSE - aggressive"
-; V27 cse1 [V27,T23] ( 6, 3.20) long -> x21 multi-def "CSE - aggressive"
-; V28 rat0 [V28,T16] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V29 rat1 [V29,T20] ( 3, 4 ) long -> x22 "runtime lookup"
+; V25 PSPSym [V25,T22] ( 1, 1 ) long -> [fp+0x80] do-not-enreg[V] "PSPSym"
+; V26 cse0 [V26,T17] ( 3, 4 ) long -> x22 "CSE - aggressive"
+; V27 cse1 [V27,T21] ( 6, 3.20) long -> x21 multi-def "CSE - aggressive"
+; V28 rat0 [V28,T15] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
+; V29 rat1 [V29,T18] ( 3, 4 ) long -> x22 "runtime lookup"
; V30 rat2 [V30,T13] ( 3, 5.60) long -> x22 "fgMakeTemp is creating a new local variable"
-; V31 rat3 [V31,T17] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V32 rat4 [V32,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V33 rat5 [V33,T14] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V34 rat6 [V34,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V35 rat7 [V35,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V36 rat8 [V36,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
-; V37 rat9 [V37,T15] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
-; V38 rat10 [V38,T26] ( 3, 0 ) long -> x21 "Spilling to split statement for tree"
-; V39 rat11 [V39,T27] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V31 rat3 [V31,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V32 rat4 [V32,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V33 rat5 [V33,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+; V34 rat6 [V34,T14] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V35 rat7 [V35,T23] ( 3, 0 ) long -> x21 "Spilling to split statement for tree"
+; V36 rat8 [V36,T24] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 120
@@ -125,18 +122,10 @@ G_M52227_IG06: ; bbWeight=1, nogc, extend
ldp x0, x1, [fp, #0x38]
stp x0, x1, [fp, #0x68]
;; size=24 bbWeight=1 PerfScore 12.00
-G_M52227_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x10] // [V00 this]
- ; gcrRegs +[x2]
- ldr x0, [x2]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x10]
- cbnz x0, G_M52227_IG10
+G_M52227_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
b G_M52227_IG10
- ;; size=28 bbWeight=1 PerfScore 16.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M52227_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
mov x1, x22
add x0, fp, #72 // [V03 loc0]
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableSortedSet`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this
@@ -190,16 +179,16 @@ G_M52227_IG09: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {
; gcrRegs -[x0-x1 x23]
; gcr arg pop 0
mov w20, w24
+ ;; size=48 bbWeight=2 PerfScore 19.00
+G_M52227_IG10: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x2, [fp, #0x10] // [V00 this]
; gcrRegs +[x2]
- ;; size=52 bbWeight=2 PerfScore 23.00
-G_M52227_IG10: ; bbWeight=8, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x2]
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x10]
cbz x1, G_M52227_IG12
- ;; size=20 bbWeight=8 PerfScore 104.00
+ ;; size=24 bbWeight=8 PerfScore 120.00
G_M52227_IG11: ; bbWeight=6.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
b G_M52227_IG13
@@ -349,7 +338,7 @@ G_M52227_IG28: ; bbWeight=0, funclet epilog, nogc, extend
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 784, prolog size 64, PerfScore 347.20, instruction count 196, allocated bytes for code 784 (MethodHash=24b133fc) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
+; Total bytes of code 760, prolog size 64, PerfScore 344.20, instruction count 190, allocated bytes for code 760 (MethodHash=24b133fc) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
; ============================================================
Unwind Info:
@@ -360,7 +349,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 168 (0x000a8) Actual length = 672 (0x0002a0)
+ Function Length : 162 (0x000a2) Actual length = 648 (0x000288)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 247300.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable
1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)
@@ -16,7 +16,7 @@
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
; V06 loc3 [V06,T15] ( 4, 5 ) int -> x21
; V07 loc4 [V07,T16] ( 4, 5 ) int -> x24
-; V08 loc5 [V08,T38] ( 3, 1.50) int -> x19
+; V08 loc5 [V08,T36] ( 3, 1.50) int -> x19
; V09 loc6 [V09,T07] ( 13, 11.50) ref -> [fp-0x68] do-not-enreg[M] class-hnd EH-live <<unknown class>>
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
; V11 loc8 [V11,T05] ( 5, 14 ) int -> x0
@@ -39,7 +39,7 @@
; V28 tmp16 [V28 ] ( 3, 3 ) struct ( 8) [fp-0x50] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
; V29 tmp17 [V29,T19] ( 8, 4 ) int -> x22 "Inline return value spill temp"
; V30 tmp18 [V30,T24] ( 3, 3 ) int -> x1 "Inlining Arg"
-; V31 tmp19 [V31,T35] ( 2, 2 ) long -> x21 "Inlining Arg"
+; V31 tmp19 [V31,T33] ( 2, 2 ) long -> x21 "Inlining Arg"
; V32 tmp20 [V32,T23] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <int[]>
;* V33 tmp21 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V34 tmp22 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -49,13 +49,13 @@
; V38 tmp26 [V38,T13] ( 5, 5 ) long -> [fp-0x58] spill-single-def "Inlining Arg"
;* V39 tmp27 [V39 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V40 tmp28 [V40 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V41 tmp29 [V41,T36] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V41 tmp29 [V41,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V42 tmp30 [V42,T11] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
; V43 tmp31 [V43,T12] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
; V44 tmp32 [V44,T06] ( 3, 12 ) byref -> x1 "dup spill"
;* V45 tmp33 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp34 [V46 ] ( 0, 0 ) int -> zero-ref single-def "field V04._length (fldOffset=0x8)" P-INDEP
-; V47 tmp35 [V47,T34] ( 4, 2 ) byref -> x21 single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+; V47 tmp35 [V47,T32] ( 4, 2 ) byref -> x21 single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp36 [V48 ] ( 0, 0 ) int -> zero-ref single-def "field V13._length (fldOffset=0x8)" P-INDEP
;* V49 tmp37 [V49 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp38 [V50 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
@@ -65,8 +65,8 @@
;* V54 tmp42 [V54 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
; V55 tmp43 [V55 ] ( 3, 3 ) int -> [fp-0x50] do-not-enreg[X] addr-exposed "field V28.Item1 (fldOffset=0x0)" P-DEP
; V56 tmp44 [V56 ] ( 3, 3 ) int -> [fp-0x4C] do-not-enreg[X] addr-exposed "field V28.Item2 (fldOffset=0x4)" P-DEP
-; V57 tmp45 [V57,T40] ( 2, 1 ) byref -> x23 "field V33._reference (fldOffset=0x0)" P-INDEP
-; V58 tmp46 [V58,T41] ( 2, 1 ) int -> x22 "field V33._length (fldOffset=0x8)" P-INDEP
+; V57 tmp45 [V57,T38] ( 2, 1 ) byref -> x23 "field V33._reference (fldOffset=0x0)" P-INDEP
+; V58 tmp46 [V58,T39] ( 2, 1 ) int -> x22 "field V33._length (fldOffset=0x8)" P-INDEP
;* V59 tmp47 [V59 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V60 tmp48 [V60 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V61 tmp49 [V61 ] ( 0, 0 ) byref -> zero-ref single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -75,25 +75,22 @@
;* V64 tmp52 [V64 ] ( 0, 0 ) int -> zero-ref single-def "field V37._length (fldOffset=0x8)" P-INDEP
; V65 tmp53 [V65,T17] ( 3, 4.50) byref -> x23 single-def "V05.[000..008)"
; V66 tmp54 [V66,T18] ( 3, 4.50) int -> x22 single-def "V05.[008..012)"
-; V67 tmp55 [V67,T37] ( 3, 1.50) byref -> x23 "V16.[000..008)"
-; V68 tmp56 [V68,T39] ( 3, 1.50) int -> x22 "V16.[008..012)"
+; V67 tmp55 [V67,T35] ( 3, 1.50) byref -> x23 "V16.[000..008)"
+; V68 tmp56 [V68,T37] ( 3, 1.50) int -> x22 "V16.[008..012)"
; V69 tmp57 [V69,T03] ( 2, 16 ) ref -> x1 "argument with side effect"
; V70 GsCookie [V70 ] ( 1, 1 ) long -> [fp-0x70] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V71 PSPSym [V71,T43] ( 1, 1 ) long -> [fp-0x38] do-not-enreg[V] "PSPSym"
+; V71 PSPSym [V71,T40] ( 1, 1 ) long -> [fp-0x38] do-not-enreg[V] "PSPSym"
; V72 cse0 [V72,T08] ( 5, 10 ) int -> x11 "CSE - aggressive"
; V73 cse1 [V73,T09] ( 11, 7 ) long -> registers multi-def "CSE - aggressive"
-; V74 rat0 [V74,T30] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V74 rat0 [V74,T29] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V75 rat1 [V75,T26] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-; V76 rat2 [V76,T31] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V76 rat2 [V76,T30] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V77 rat3 [V77,T27] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-; V78 rat4 [V78,T32] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V78 rat4 [V78,T31] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V79 rat5 [V79,T28] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V80 rat6 [V80,T33] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V81 rat7 [V81,T42] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V82 rat8 [V82,T29] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V83 rat9 [V83,T02] ( 3, 17.60) long -> x1 "Spilling to split statement for tree"
-; V84 rat10 [V84,T01] ( 3, 22.40) long -> x11 "fgMakeTemp is creating a new local variable"
-; V85 rat11 [V85,T25] ( 3, 3 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V80 rat6 [V80,T02] ( 3, 17.60) long -> x1 "Spilling to split statement for tree"
+; V81 rat7 [V81,T01] ( 3, 22.40) long -> x11 "fgMakeTemp is creating a new local variable"
+; V82 rat8 [V82,T25] ( 3, 3 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 64
+0 (0.00%) : 266824.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable
1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)
@@ -16,7 +16,7 @@
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
; V06 loc3 [V06,T15] ( 4, 5 ) int -> x21
; V07 loc4 [V07,T16] ( 4, 5 ) int -> x24
-; V08 loc5 [V08,T38] ( 3, 1.50) int -> x19
+; V08 loc5 [V08,T36] ( 3, 1.50) int -> x19
; V09 loc6 [V09,T07] ( 13, 11.50) ref -> [fp-0x68] do-not-enreg[M] class-hnd EH-live <<unknown class>>
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
; V11 loc8 [V11,T05] ( 5, 14 ) int -> x0
@@ -39,7 +39,7 @@
; V28 tmp16 [V28 ] ( 3, 3 ) struct ( 8) [fp-0x50] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
; V29 tmp17 [V29,T19] ( 8, 4 ) int -> x22 "Inline return value spill temp"
; V30 tmp18 [V30,T24] ( 3, 3 ) int -> x1 "Inlining Arg"
-; V31 tmp19 [V31,T35] ( 2, 2 ) long -> x21 "Inlining Arg"
+; V31 tmp19 [V31,T33] ( 2, 2 ) long -> x21 "Inlining Arg"
; V32 tmp20 [V32,T23] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <int[]>
;* V33 tmp21 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V34 tmp22 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -49,13 +49,13 @@
; V38 tmp26 [V38,T13] ( 5, 5 ) long -> [fp-0x58] spill-single-def "Inlining Arg"
;* V39 tmp27 [V39 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V40 tmp28 [V40 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V41 tmp29 [V41,T36] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V41 tmp29 [V41,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V42 tmp30 [V42,T11] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
; V43 tmp31 [V43,T12] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
; V44 tmp32 [V44,T06] ( 3, 12 ) byref -> x1 "dup spill"
;* V45 tmp33 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp34 [V46 ] ( 0, 0 ) int -> zero-ref single-def "field V04._length (fldOffset=0x8)" P-INDEP
-; V47 tmp35 [V47,T34] ( 4, 2 ) byref -> x21 single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+; V47 tmp35 [V47,T32] ( 4, 2 ) byref -> x21 single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp36 [V48 ] ( 0, 0 ) int -> zero-ref single-def "field V13._length (fldOffset=0x8)" P-INDEP
;* V49 tmp37 [V49 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp38 [V50 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
@@ -65,8 +65,8 @@
;* V54 tmp42 [V54 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
; V55 tmp43 [V55 ] ( 3, 3 ) int -> [fp-0x50] do-not-enreg[X] addr-exposed "field V28.Item1 (fldOffset=0x0)" P-DEP
; V56 tmp44 [V56 ] ( 3, 3 ) int -> [fp-0x4C] do-not-enreg[X] addr-exposed "field V28.Item2 (fldOffset=0x4)" P-DEP
-; V57 tmp45 [V57,T40] ( 2, 1 ) byref -> x23 "field V33._reference (fldOffset=0x0)" P-INDEP
-; V58 tmp46 [V58,T41] ( 2, 1 ) int -> x22 "field V33._length (fldOffset=0x8)" P-INDEP
+; V57 tmp45 [V57,T38] ( 2, 1 ) byref -> x23 "field V33._reference (fldOffset=0x0)" P-INDEP
+; V58 tmp46 [V58,T39] ( 2, 1 ) int -> x22 "field V33._length (fldOffset=0x8)" P-INDEP
;* V59 tmp47 [V59 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V60 tmp48 [V60 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V61 tmp49 [V61 ] ( 0, 0 ) byref -> zero-ref single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -75,25 +75,22 @@
;* V64 tmp52 [V64 ] ( 0, 0 ) int -> zero-ref single-def "field V37._length (fldOffset=0x8)" P-INDEP
; V65 tmp53 [V65,T17] ( 3, 4.50) byref -> x23 single-def "V05.[000..008)"
; V66 tmp54 [V66,T18] ( 3, 4.50) int -> x22 single-def "V05.[008..012)"
-; V67 tmp55 [V67,T37] ( 3, 1.50) byref -> x23 "V16.[000..008)"
-; V68 tmp56 [V68,T39] ( 3, 1.50) int -> x22 "V16.[008..012)"
+; V67 tmp55 [V67,T35] ( 3, 1.50) byref -> x23 "V16.[000..008)"
+; V68 tmp56 [V68,T37] ( 3, 1.50) int -> x22 "V16.[008..012)"
; V69 tmp57 [V69,T03] ( 2, 16 ) ref -> x1 "argument with side effect"
; V70 GsCookie [V70 ] ( 1, 1 ) long -> [fp-0x70] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V71 PSPSym [V71,T43] ( 1, 1 ) long -> [fp-0x38] do-not-enreg[V] "PSPSym"
+; V71 PSPSym [V71,T40] ( 1, 1 ) long -> [fp-0x38] do-not-enreg[V] "PSPSym"
; V72 cse0 [V72,T08] ( 5, 10 ) int -> x11 "CSE - aggressive"
; V73 cse1 [V73,T09] ( 11, 7 ) long -> registers multi-def "CSE - aggressive"
-; V74 rat0 [V74,T30] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V74 rat0 [V74,T29] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V75 rat1 [V75,T26] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-; V76 rat2 [V76,T31] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V76 rat2 [V76,T30] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V77 rat3 [V77,T27] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-; V78 rat4 [V78,T32] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V78 rat4 [V78,T31] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V79 rat5 [V79,T28] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V80 rat6 [V80,T33] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V81 rat7 [V81,T42] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V82 rat8 [V82,T29] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V83 rat9 [V83,T02] ( 3, 17.60) long -> x1 "Spilling to split statement for tree"
-; V84 rat10 [V84,T01] ( 3, 22.40) long -> x11 "fgMakeTemp is creating a new local variable"
-; V85 rat11 [V85,T25] ( 3, 3 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V80 rat6 [V80,T02] ( 3, 17.60) long -> x1 "Spilling to split statement for tree"
+; V81 rat7 [V81,T01] ( 3, 22.40) long -> x11 "fgMakeTemp is creating a new local variable"
+; V82 rat8 [V82,T25] ( 3, 3 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 64
+0 (0.00%) : 314076.dasm - System.Collections.Concurrent.ConcurrentDictionary2[System.__Canon,System.Nullable
1[int]]:CopyToObjects(System.Object[],int):this (FullOpts)
@@ -11,7 +11,7 @@
; V00 this [V00,T10] ( 4, 4 ) ref -> x20 this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.Nullable`1[int]]>
; V01 arg1 [V01,T11] ( 3, 18 ) ref -> x21 class-hnd single-def <System.Object[]>
; V02 arg2 [V02,T05] ( 5, 50 ) int -> x19
-; V03 loc0 [V03,T17] ( 3, 6 ) ref -> x22 class-hnd exact single-def <<unknown class>>
+; V03 loc0 [V03,T15] ( 3, 6 ) ref -> x22 class-hnd exact single-def <<unknown class>>
; V04 loc1 [V04,T12] ( 5, 17 ) int -> x23
;* V05 loc2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Concurrent.ConcurrentDictionary`2+VolatileNode[System.__Canon,System.Nullable`1[int]]>
; V06 loc3 [V06,T01] ( 8,104 ) ref -> x26 class-hnd <<unknown class>>
@@ -22,23 +22,20 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V12 tmp5 [V12,T04] ( 2, 64 ) ref -> x27 class-hnd "Inlining Arg" <System.__Canon>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Nullable`1[int]>
-; V14 tmp7 [V14,T16] ( 2, 8 ) ref -> x26 "field V05._node (fldOffset=0x0)" P-INDEP
+; V14 tmp7 [V14,T14] ( 2, 8 ) ref -> x26 "field V05._node (fldOffset=0x0)" P-INDEP
; V15 tmp8 [V15,T06] ( 2, 32 ) ubyte -> x28 "field V13.hasValue (fldOffset=0x0)" P-INDEP
; V16 tmp9 [V16,T07] ( 2, 32 ) int -> [fp+0x14] spill-single-def "field V13.value (fldOffset=0x4)" P-INDEP
;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref "V08.[000..008)"
; V18 tmp11 [V18,T08] ( 2, 32 ) ubyte -> x28 "V08.[008..009)"
;* V19 tmp12 [V19 ] ( 0, 0 ) int -> zero-ref "V08.[012..016)"
; V20 cse0 [V20,T13] ( 2, 17 ) long -> x25 hoist "CSE - aggressive"
-; V21 cse1 [V21,T18] ( 3, 6 ) int -> x24 "CSE - aggressive"
-; V22 rat0 [V22,T20] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V23 rat1 [V23,T21] ( 3, 4 ) long -> x25 "runtime lookup"
-; V24 rat2 [V24,T19] ( 3, 5.60) long -> x25 "fgMakeTemp is creating a new local variable"
-;* V25 rat3 [V25,T15] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V26 rat4 [V26,T22] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V27 rat5 [V27,T14] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V28 rat6 [V28,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V29 rat7 [V29,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V30 rat8 [V30,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V21 cse1 [V21,T16] ( 3, 6 ) int -> x24 "CSE - aggressive"
+; V22 rat0 [V22,T18] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V23 rat1 [V23,T19] ( 3, 4 ) long -> x25 "runtime lookup"
+; V24 rat2 [V24,T17] ( 3, 5.60) long -> x25 "fgMakeTemp is creating a new local variable"
+;* V25 rat3 [V25,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V26 rat4 [V26,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V27 rat5 [V27,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
libraries_tests.run.osx.arm64.Release.mch
-20 (-2.58%) : 88943.dasm - Microsoft.CodeAnalysis.NodeStateTable1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray
1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
@@ -9,62 +9,59 @@
; 1 inlinees with PGO data; 16 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 10, 3.48) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]>
+; V00 this [V00,T00] ( 9, 3.42) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.TimeSpan>
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]]>
; V03 arg3 [V03,T01] ( 3, 2.06) int -> x20 single-def
; V04 loc0 [V04 ] ( 5, 0.35) struct (32) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.__Canon]>
-; V05 loc1 [V05,T32] ( 3, 0.18) ref -> x25 class-hnd exact single-def <<unknown class>>
+; V05 loc1 [V05,T30] ( 3, 0.18) ref -> x25 class-hnd exact single-def <<unknown class>>
; V06 loc2 [V06,T12] ( 7, 0.35) int -> x24
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T22] ( 2, 0.25) ref -> x1 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.__Canon]]>
+; V08 tmp1 [V08,T20] ( 2, 0.25) ref -> x1 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.__Canon]]>
;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V11 tmp4 [V11,T28] ( 2, 0.22) long -> x1 "spilling helperCall"
+; V11 tmp4 [V11,T26] ( 2, 0.22) long -> x1 "spilling helperCall"
;* V12 tmp5 [V12 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V13 tmp6 [V13,T27] ( 2, 0.22) ref -> x26 class-hnd "impAppendStmt" <System.__Canon>
+; V13 tmp6 [V13,T25] ( 2, 0.22) ref -> x26 class-hnd "impAppendStmt" <System.__Canon>
;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.Object,int]>
-; V15 tmp8 [V15,T23] ( 2, 0.25) ref -> x27 class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V16 tmp9 [V16,T24] ( 2, 0.25) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.String>
+; V15 tmp8 [V15,T21] ( 2, 0.25) ref -> x27 class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V16 tmp9 [V16,T22] ( 2, 0.25) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.String>
; V17 tmp10 [V17,T04] ( 6, 0.74) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.IncrementalGeneratorRunStep>
;* V18 tmp11 [V18 ] ( 0, 0 ) struct ( 8) zero-ref single-def "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.Object,int]]>
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.__Canon]]>
;* V20 tmp13 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V21 tmp14 [V21,T11] ( 3, 0.37) ref -> x25 class-hnd exact single-def "dup spill" <<unknown class>>
-; V22 tmp15 [V22,T25] ( 2, 0.25) int -> x24 "Inlining Arg"
-; V23 tmp16 [V23,T38] ( 3, 0.11) int -> x2 "Inline return value spill temp"
-; V24 tmp17 [V24,T29] ( 2, 0.22) int -> x27 "Inlining Arg"
+; V22 tmp15 [V22,T23] ( 2, 0.25) int -> x24 "Inlining Arg"
+; V23 tmp16 [V23,T35] ( 3, 0.11) int -> x2 "Inline return value spill temp"
+; V24 tmp17 [V24,T27] ( 2, 0.22) int -> x27 "Inlining Arg"
;* V25 tmp18 [V25 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ValueTuple`2[System.Object,int]>
; V26 tmp19 [V26,T06] ( 6, 0.67) ref -> x28 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`2[System.__Canon,int]]>
-; V27 tmp20 [V27,T35] ( 3, 0.17) int -> [fp+0x14] spill-single-def "Inline stloc first use temp"
+; V27 tmp20 [V27,T33] ( 3, 0.17) int -> [fp+0x14] spill-single-def "Inline stloc first use temp"
; V28 tmp21 [V28,T05] ( 6, 0.74) ref -> x25 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
-; V29 tmp22 [V29,T31] ( 3, 0.19) int -> x24 single-def "Inline stloc first use temp"
+; V29 tmp22 [V29,T29] ( 3, 0.19) int -> x24 single-def "Inline stloc first use temp"
; V30 tmp23 [V30,T03] ( 2, 1.06) long -> x22 single-def "field V01._ticks (fldOffset=0x0)" P-INDEP
; V31 tmp24 [V31,T02] ( 2, 1.06) ref -> x21 single-def "field V02.array (fldOffset=0x0)" P-INDEP
-; V32 tmp25 [V32,T39] ( 2, 0.11) ref -> x26 "field V14.Item1 (fldOffset=0x0)" P-INDEP
-; V33 tmp26 [V33,T40] ( 2, 0.11) int -> x27 "field V14.Item2 (fldOffset=0x8)" P-INDEP
-; V34 tmp27 [V34,T36] ( 2, 0.12) ref -> x0 "field V18.array (fldOffset=0x0)" P-INDEP
+; V32 tmp25 [V32,T36] ( 2, 0.11) ref -> x26 "field V14.Item1 (fldOffset=0x0)" P-INDEP
+; V33 tmp26 [V33,T37] ( 2, 0.11) int -> x27 "field V14.Item2 (fldOffset=0x8)" P-INDEP
+; V34 tmp27 [V34,T34] ( 2, 0.12) ref -> x0 "field V18.array (fldOffset=0x0)" P-INDEP
;* V35 tmp28 [V35 ] ( 0, 0 ) ref -> zero-ref "field V25.Item1 (fldOffset=0x0)" P-INDEP
;* V36 tmp29 [V36 ] ( 0, 0 ) int -> zero-ref "field V25.Item2 (fldOffset=0x8)" P-INDEP
-; V37 tmp30 [V37,T26] ( 2, 0.25) long -> x1 "argument with side effect"
+; V37 tmp30 [V37,T24] ( 2, 0.25) long -> x1 "argument with side effect"
; V38 tmp31 [V38,T10] ( 2, 0.47) long -> x1 "argument with side effect"
-; V39 tmp32 [V39,T15] ( 3, 0.34) ref -> x27 "arr expr"
-; V40 tmp33 [V40,T41] ( 3, 0 ) ref -> x0 "arr expr"
-; V41 tmp34 [V41,T16] ( 3, 0.34) ref -> x14 "arr expr"
-; V42 tmp35 [V42,T18] ( 3, 0.34) int -> x15 "index expr"
-; V43 tmp36 [V43,T17] ( 3, 0.34) byref -> x0 "BlockOp address local"
-; V44 cse0 [V44,T33] ( 3, 0.18) long -> x23 "CSE - conservative"
-; V45 cse1 [V45,T30] ( 3, 0.19) ref -> x0 "CSE - conservative"
-; V46 cse2 [V46,T34] ( 4, 0.17) ref -> x27 "CSE - conservative"
-; V47 rat0 [V47,T19] ( 3, 0.27) long -> x0 "Spilling to split statement for tree"
-; V48 rat1 [V48,T21] ( 3, 0.25) long -> x23 "runtime lookup"
+; V39 tmp32 [V39,T14] ( 3, 0.34) ref -> x27 "arr expr"
+; V40 tmp33 [V40,T38] ( 3, 0 ) ref -> x0 "arr expr"
+; V41 tmp34 [V41,T15] ( 3, 0.34) ref -> x14 "arr expr"
+; V42 tmp35 [V42,T17] ( 3, 0.34) int -> x15 "index expr"
+; V43 tmp36 [V43,T16] ( 3, 0.34) byref -> x0 "BlockOp address local"
+; V44 cse0 [V44,T31] ( 3, 0.18) long -> x23 "CSE - conservative"
+; V45 cse1 [V45,T28] ( 3, 0.19) ref -> x0 "CSE - conservative"
+; V46 cse2 [V46,T32] ( 4, 0.17) ref -> x27 "CSE - conservative"
+; V47 rat0 [V47,T18] ( 3, 0.27) long -> x0 "Spilling to split statement for tree"
+; V48 rat1 [V48,T19] ( 3, 0.25) long -> x23 "runtime lookup"
; V49 rat2 [V49,T13] ( 3, 0.35) long -> x23 "fgMakeTemp is creating a new local variable"
-; V50 rat3 [V50,T20] ( 2, 0.25) long -> x0 "Spilling to split statement for tree"
-;* V51 rat4 [V51,T37] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V52 rat5 [V52,T14] ( 2, 0.25) long -> x0 "fgMakeTemp is creating a new local variable"
-; V53 rat6 [V53,T08] ( 3, 0.52) long -> x0 "Spilling to split statement for tree"
-; V54 rat7 [V54,T09] ( 3, 0.47) long -> x1 "runtime lookup"
-; V55 rat8 [V55,T07] ( 3, 0.66) long -> x1 "fgMakeTemp is creating a new local variable"
+; V50 rat3 [V50,T08] ( 3, 0.52) long -> x0 "Spilling to split statement for tree"
+; V51 rat4 [V51,T09] ( 3, 0.47) long -> x1 "runtime lookup"
+; V52 rat5 [V52,T07] ( 3, 0.66) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 48
@@ -105,7 +102,7 @@ G_M31021_IG04: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=E28
; gcrRegs +[x21 x25-x27]
ldr w0, [x27, #0x08]
cmp w0, #0
- bls G_M31021_IG17
+ bls G_M31021_IG16
ldr w2, [x27, #0x10]
;; size=16 bbWeight=0.06 PerfScore 0.42
G_M31021_IG05: ; bbWeight=0.06, gcrefRegs=6280000 {x19 x21 x25 x26}, byrefRegs=0000 {}, byref, isz
@@ -137,7 +134,7 @@ G_M31021_IG05: ; bbWeight=0.06, gcrefRegs=6280000 {x19 x21 x25 x26}, byre
ldr w15, [x28, #0x10]
ldr w12, [x14, #0x08]
cmp w15, w12
- bhs G_M31021_IG17
+ bhs G_M31021_IG16
ubfiz x15, x15, #4, #32
add x15, x15, #16
add x0, x14, x15
@@ -162,10 +159,10 @@ G_M31021_IG06: ; bbWeight=0.12, gcrefRegs=2280000 {x19 x21 x25}, byrefReg
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x28]
- cbz x1, G_M31021_IG13
+ cbz x1, G_M31021_IG12
;; size=20 bbWeight=0.12 PerfScore 1.53
G_M31021_IG07: ; bbWeight=0.09, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref
- b G_M31021_IG14
+ b G_M31021_IG13
;; size=4 bbWeight=0.09 PerfScore 0.09
G_M31021_IG08: ; bbWeight=0.06, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
@@ -199,7 +196,7 @@ G_M31021_IG10: ; bbWeight=0.01, gcrefRegs=280000 {x19 x21}, byrefRegs=000
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov x23, x0
;; size=20 bbWeight=0.01 PerfScore 0.04
-G_M31021_IG11: ; bbWeight=0.06, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M31021_IG11: ; bbWeight=0.06, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
mov x1, x23
add x0, fp, #24 // [V04 loc0]
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.__Canon]:get_Count():int:this
@@ -229,23 +226,16 @@ G_M31021_IG11: ; bbWeight=0.06, gcrefRegs=280000 {x19 x21}, byrefRegs=000
blr x2
; gcrRegs -[x0]
mov w24, wzr
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x28]
- cbnz x0, G_M31021_IG06
- ;; size=124 bbWeight=0.06 PerfScore 2.47
-G_M31021_IG12: ; bbWeight=0.06, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref
b G_M31021_IG06
- ;; size=4 bbWeight=0.06 PerfScore 0.06
-G_M31021_IG13: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref
+ ;; size=108 bbWeight=0.06 PerfScore 1.73
+G_M31021_IG12: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov x1, x0
;; size=20 bbWeight=0.02 PerfScore 0.07
-G_M31021_IG14: ; bbWeight=0.12, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
+G_M31021_IG13: ; bbWeight=0.12, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
add x0, fp, #24 // [V04 loc0]
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.__Canon]:get_Count():int:this
movk x2, #0xD1FFAB1E LSL #16
@@ -253,9 +243,9 @@ G_M31021_IG14: ; bbWeight=0.12, gcrefRegs=2280000 {x19 x21 x25}, byrefReg
ldr x2, [x2]
blr x2
cmp w0, w24
- bgt G_M31021_IG16
+ bgt G_M31021_IG15
;; size=32 bbWeight=0.12 PerfScore 0.88
-G_M31021_IG15: ; bbWeight=0.06, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref
+G_M31021_IG14: ; bbWeight=0.06, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref
ldr x27, [x19, #0x28]
; gcrRegs +[x27]
ldr x20, [x19, #0x18]
@@ -319,7 +309,7 @@ G_M31021_IG15: ; bbWeight=0.06, gcrefRegs=2280000 {x19 x21 x25}, byrefReg
str w24, [x25, #0x10]
b G_M31021_IG03
;; size=156 bbWeight=0.06 PerfScore 2.74
-G_M31021_IG16: ; bbWeight=0.06, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
+G_M31021_IG15: ; bbWeight=0.06, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21]
mov x1, x23
add x0, fp, #24 // [V04 loc0]
@@ -337,20 +327,20 @@ G_M31021_IG16: ; bbWeight=0.06, gcrefRegs=2280000 {x19 x21 x25}, byrefReg
ldr w0, [x27, #0x08]
; gcrRegs -[x0]
cmp w0, #1
- bne G_M31021_IG18
+ bne G_M31021_IG17
b G_M31021_IG04
;; size=56 bbWeight=0.06 PerfScore 0.84
-G_M31021_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31021_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x21 x25-x27]
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M31021_IG18: ; bbWeight=0, gcrefRegs=E280000 {x19 x21 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M31021_IG17: ; bbWeight=0, gcrefRegs=E280000 {x19 x21 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21 x25-x27]
mov x0, x27
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w24, w1
- bhs G_M31021_IG17
+ bhs G_M31021_IG16
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -358,7 +348,7 @@ G_M31021_IG18: ; bbWeight=0, gcrefRegs=E280000 {x19 x21 x25 x26 x27}, byr
b G_M31021_IG05
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 776, prolog size 40, PerfScore 35.83, instruction count 194, allocated bytes for code 776 (MethodHash=ed5686d2) for method Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
+; Total bytes of code 756, prolog size 40, PerfScore 35.04, instruction count 189, allocated bytes for code 756 (MethodHash=ed5686d2) for method Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
; ============================================================
Unwind Info:
@@ -369,7 +359,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 194 (0x000c2) Actual length = 776 (0x000308)
+ Function Length : 189 (0x000bd) Actual length = 756 (0x0002f4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-2.46%) : 89105.dasm - Microsoft.CodeAnalysis.NodeStateTable1+Builder[System.Collections.Immutable.ImmutableArray
1[System.__Canon]]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray1[System.ValueTuple
2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
@@ -9,63 +9,60 @@
; 1 inlinees with PGO data; 16 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 11, 3.53) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]>
+; V00 this [V00,T00] ( 10, 3.47) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.TimeSpan>
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]]>
; V03 arg3 [V03,T01] ( 3, 2.06) int -> x20 single-def
; V04 loc0 [V04 ] ( 5, 0.35) struct (32) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]>
-; V05 loc1 [V05,T31] ( 3, 0.18) ref -> x25 class-hnd exact single-def <<unknown class>>
+; V05 loc1 [V05,T29] ( 3, 0.18) ref -> x25 class-hnd exact single-def <<unknown class>>
; V06 loc2 [V06,T11] ( 7, 0.35) int -> x24
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T23] ( 2, 0.24) ref -> x1 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]]>
+; V08 tmp1 [V08,T21] ( 2, 0.24) ref -> x1 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]]>
;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V11 tmp4 [V11,T26] ( 2, 0.24) long -> x26 "spilling helperCall"
+; V11 tmp4 [V11,T24] ( 2, 0.24) long -> x26 "spilling helperCall"
; V12 tmp5 [V12,T12] ( 3, 0.35) ref -> x27 class-hnd exact "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
;* V13 tmp6 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.Object,int]>
-; V15 tmp8 [V15,T24] ( 2, 0.24) ref -> x26 class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V16 tmp9 [V16,T25] ( 2, 0.24) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.String>
+; V15 tmp8 [V15,T22] ( 2, 0.24) ref -> x26 class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V16 tmp9 [V16,T23] ( 2, 0.24) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.String>
; V17 tmp10 [V17,T04] ( 6, 0.71) ref -> x27 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.IncrementalGeneratorRunStep>
;* V18 tmp11 [V18 ] ( 0, 0 ) struct ( 8) zero-ref single-def "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.Object,int]]>
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]]>
;* V20 tmp13 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V21 tmp14 [V21,T13] ( 3, 0.35) ref -> x25 class-hnd exact single-def "dup spill" <<unknown class>>
-; V22 tmp15 [V22,T27] ( 2, 0.24) int -> x24 "Inlining Arg"
-; V23 tmp16 [V23,T36] ( 3, 0.12) int -> x2 "Inline return value spill temp"
+; V22 tmp15 [V22,T25] ( 2, 0.24) int -> x24 "Inlining Arg"
+; V23 tmp16 [V23,T34] ( 3, 0.12) int -> x2 "Inline return value spill temp"
;* V24 tmp17 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V25 tmp18 [V25,T28] ( 2, 0.24) int -> x26 "Inlining Arg"
+; V25 tmp18 [V25,T26] ( 2, 0.24) int -> x26 "Inlining Arg"
;* V26 tmp19 [V26 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ValueTuple`2[System.Object,int]>
; V27 tmp20 [V27,T05] ( 6, 0.71) ref -> x28 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`2[System.__Canon,int]]>
-; V28 tmp21 [V28,T33] ( 3, 0.18) int -> [fp+0x14] spill-single-def "Inline stloc first use temp"
+; V28 tmp21 [V28,T31] ( 3, 0.18) int -> [fp+0x14] spill-single-def "Inline stloc first use temp"
; V29 tmp22 [V29,T06] ( 6, 0.71) ref -> x25 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
-; V30 tmp23 [V30,T34] ( 3, 0.18) int -> x24 single-def "Inline stloc first use temp"
+; V30 tmp23 [V30,T32] ( 3, 0.18) int -> x24 single-def "Inline stloc first use temp"
; V31 tmp24 [V31,T03] ( 2, 1.06) long -> x22 single-def "field V01._ticks (fldOffset=0x0)" P-INDEP
; V32 tmp25 [V32,T02] ( 2, 1.06) ref -> x21 single-def "field V02.array (fldOffset=0x0)" P-INDEP
-; V33 tmp26 [V33,T37] ( 2, 0.12) ref -> x27 "field V14.Item1 (fldOffset=0x0)" P-INDEP
-; V34 tmp27 [V34,T39] ( 2, 0.12) int -> x26 "field V14.Item2 (fldOffset=0x8)" P-INDEP
-; V35 tmp28 [V35,T38] ( 2, 0.12) ref -> x0 "field V18.array (fldOffset=0x0)" P-INDEP
+; V33 tmp26 [V33,T35] ( 2, 0.12) ref -> x27 "field V14.Item1 (fldOffset=0x0)" P-INDEP
+; V34 tmp27 [V34,T37] ( 2, 0.12) int -> x26 "field V14.Item2 (fldOffset=0x8)" P-INDEP
+; V35 tmp28 [V35,T36] ( 2, 0.12) ref -> x0 "field V18.array (fldOffset=0x0)" P-INDEP
;* V36 tmp29 [V36 ] ( 0, 0 ) ref -> zero-ref "field V26.Item1 (fldOffset=0x0)" P-INDEP
;* V37 tmp30 [V37 ] ( 0, 0 ) int -> zero-ref "field V26.Item2 (fldOffset=0x8)" P-INDEP
-; V38 tmp31 [V38,T29] ( 2, 0.24) long -> x1 "argument with side effect"
+; V38 tmp31 [V38,T27] ( 2, 0.24) long -> x1 "argument with side effect"
; V39 tmp32 [V39,T10] ( 2, 0.47) long -> x1 "argument with side effect"
; V40 tmp33 [V40,T14] ( 3, 0.35) ref -> x26 "arr expr"
-; V41 tmp34 [V41,T41] ( 3, 0 ) ref -> x0 "arr expr"
+; V41 tmp34 [V41,T38] ( 3, 0 ) ref -> x0 "arr expr"
; V42 tmp35 [V42,T15] ( 3, 0.35) ref -> x14 "arr expr"
; V43 tmp36 [V43,T17] ( 3, 0.35) int -> x15 "index expr"
; V44 tmp37 [V44,T16] ( 3, 0.35) byref -> x0 "BlockOp address local"
-; V45 cse0 [V45,T35] ( 3, 0.18) long -> x23 "CSE - conservative"
-; V46 cse1 [V46,T32] ( 3, 0.18) ref -> x0 "CSE - conservative"
-; V47 cse2 [V47,T30] ( 4, 0.18) ref -> x26 "CSE - conservative"
-; V48 rat0 [V48,T20] ( 3, 0.26) long -> x0 "Spilling to split statement for tree"
-; V49 rat1 [V49,T22] ( 3, 0.24) long -> x23 "runtime lookup"
+; V45 cse0 [V45,T33] ( 3, 0.18) long -> x23 "CSE - conservative"
+; V46 cse1 [V46,T30] ( 3, 0.18) ref -> x0 "CSE - conservative"
+; V47 cse2 [V47,T28] ( 4, 0.18) ref -> x26 "CSE - conservative"
+; V48 rat0 [V48,T19] ( 3, 0.26) long -> x0 "Spilling to split statement for tree"
+; V49 rat1 [V49,T20] ( 3, 0.24) long -> x23 "runtime lookup"
; V50 rat2 [V50,T18] ( 3, 0.33) long -> x23 "fgMakeTemp is creating a new local variable"
-; V51 rat3 [V51,T21] ( 2, 0.24) long -> x0 "Spilling to split statement for tree"
-;* V52 rat4 [V52,T40] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V53 rat5 [V53,T19] ( 2, 0.24) long -> x0 "fgMakeTemp is creating a new local variable"
-; V54 rat6 [V54,T08] ( 3, 0.52) long -> x0 "Spilling to split statement for tree"
-; V55 rat7 [V55,T09] ( 3, 0.47) long -> x1 "runtime lookup"
-; V56 rat8 [V56,T07] ( 3, 0.66) long -> x1 "fgMakeTemp is creating a new local variable"
+; V51 rat3 [V51,T08] ( 3, 0.52) long -> x0 "Spilling to split statement for tree"
+; V52 rat4 [V52,T09] ( 3, 0.47) long -> x1 "runtime lookup"
+; V53 rat5 [V53,T07] ( 3, 0.66) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 48
@@ -106,7 +103,7 @@ G_M62925_IG04: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=E28
; gcrRegs +[x21 x25-x27]
ldr w0, [x26, #0x08]
cmp w0, #0
- bls G_M62925_IG17
+ bls G_M62925_IG16
ldr w2, [x26, #0x10]
;; size=16 bbWeight=0.06 PerfScore 0.44
G_M62925_IG05: ; bbWeight=0.06, gcrefRegs=A280000 {x19 x21 x25 x27}, byrefRegs=0000 {}, byref, isz
@@ -138,7 +135,7 @@ G_M62925_IG05: ; bbWeight=0.06, gcrefRegs=A280000 {x19 x21 x25 x27}, byre
ldr w15, [x28, #0x10]
ldr w12, [x14, #0x08]
cmp w15, w12
- bhs G_M62925_IG17
+ bhs G_M62925_IG16
ubfiz x15, x15, #4, #32
add x15, x15, #16
add x0, x14, x15
@@ -163,10 +160,10 @@ G_M62925_IG06: ; bbWeight=0.12, gcrefRegs=2280000 {x19 x21 x25}, byrefReg
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x28]
- cbz x1, G_M62925_IG13
+ cbz x1, G_M62925_IG12
;; size=20 bbWeight=0.12 PerfScore 1.54
G_M62925_IG07: ; bbWeight=0.09, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref
- b G_M62925_IG14
+ b G_M62925_IG13
;; size=4 bbWeight=0.09 PerfScore 0.09
G_M62925_IG08: ; bbWeight=0.06, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
@@ -200,7 +197,7 @@ G_M62925_IG10: ; bbWeight=0.01, gcrefRegs=280000 {x19 x21}, byrefRegs=000
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov x23, x0
;; size=20 bbWeight=0.01 PerfScore 0.04
-G_M62925_IG11: ; bbWeight=0.06, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M62925_IG11: ; bbWeight=0.06, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
mov x1, x23
add x0, fp, #24 // [V04 loc0]
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:get_Count():int:this
@@ -230,23 +227,16 @@ G_M62925_IG11: ; bbWeight=0.06, gcrefRegs=280000 {x19 x21}, byrefRegs=000
blr x2
; gcrRegs -[x0]
mov w24, wzr
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x28]
- cbnz x0, G_M62925_IG06
- ;; size=124 bbWeight=0.06 PerfScore 2.36
-G_M62925_IG12: ; bbWeight=0.03, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref
b G_M62925_IG06
- ;; size=4 bbWeight=0.03 PerfScore 0.03
-G_M62925_IG13: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref
+ ;; size=108 bbWeight=0.06 PerfScore 1.65
+G_M62925_IG12: ; bbWeight=0.02, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov x1, x0
;; size=20 bbWeight=0.02 PerfScore 0.07
-G_M62925_IG14: ; bbWeight=0.12, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
+G_M62925_IG13: ; bbWeight=0.12, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
add x0, fp, #24 // [V04 loc0]
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:get_Count():int:this
movk x2, #0xD1FFAB1E LSL #16
@@ -254,9 +244,9 @@ G_M62925_IG14: ; bbWeight=0.12, gcrefRegs=2280000 {x19 x21 x25}, byrefReg
ldr x2, [x2]
blr x2
cmp w0, w24
- bgt G_M62925_IG16
+ bgt G_M62925_IG15
;; size=32 bbWeight=0.12 PerfScore 0.89
-G_M62925_IG15: ; bbWeight=0.06, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref
+G_M62925_IG14: ; bbWeight=0.06, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref
ldr x26, [x19, #0x28]
; gcrRegs +[x26]
ldr x20, [x19, #0x18]
@@ -320,7 +310,7 @@ G_M62925_IG15: ; bbWeight=0.06, gcrefRegs=2280000 {x19 x21 x25}, byrefReg
str w24, [x25, #0x10]
b G_M62925_IG03
;; size=156 bbWeight=0.06 PerfScore 2.63
-G_M62925_IG16: ; bbWeight=0.06, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
+G_M62925_IG15: ; bbWeight=0.06, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21]
mov x26, x23
ldr x0, [x19]
@@ -352,20 +342,20 @@ G_M62925_IG16: ; bbWeight=0.06, gcrefRegs=2280000 {x19 x21 x25}, byrefReg
; gcrRegs +[x26]
ldr w0, [x26, #0x08]
cmp w0, #1
- bne G_M62925_IG18
+ bne G_M62925_IG17
b G_M62925_IG04
;; size=92 bbWeight=0.06 PerfScore 1.80
-G_M62925_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M62925_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x21 x25-x27]
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M62925_IG18: ; bbWeight=0, gcrefRegs=E280000 {x19 x21 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M62925_IG17: ; bbWeight=0, gcrefRegs=E280000 {x19 x21 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21 x25-x27]
mov x0, x26
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w24, w1
- bhs G_M62925_IG17
+ bhs G_M62925_IG16
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -373,7 +363,7 @@ G_M62925_IG18: ; bbWeight=0, gcrefRegs=E280000 {x19 x21 x25 x26 x27}, byr
b G_M62925_IG05
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 812, prolog size 40, PerfScore 36.63, instruction count 203, allocated bytes for code 812 (MethodHash=7f6a0a32) for method Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
+; Total bytes of code 792, prolog size 40, PerfScore 35.89, instruction count 198, allocated bytes for code 792 (MethodHash=7f6a0a32) for method Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
; ============================================================
Unwind Info:
@@ -384,7 +374,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 203 (0x000cb) Actual length = 812 (0x00032c)
+ Function Length : 198 (0x000c6) Actual length = 792 (0x000318)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-2.46%) : 89159.dasm - Microsoft.CodeAnalysis.NodeStateTable1+Builder[System.ValueTuple
2[System.ValueTuple2[System.__Canon,int],System.__Canon]]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray
1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
@@ -9,63 +9,60 @@
; 1 inlinees with PGO data; 16 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 11, 3.60) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.ValueTuple`2[System.ValueTuple`2[System.__Canon,int],System.__Canon]]>
+; V00 this [V00,T00] ( 10, 3.53) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.ValueTuple`2[System.ValueTuple`2[System.__Canon,int],System.__Canon]]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.TimeSpan>
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]]>
; V03 arg3 [V03,T01] ( 3, 2.07) int -> x20 single-def
; V04 loc0 [V04 ] ( 5, 0.40) struct (48) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.ValueTuple`2[System.ValueTuple`2[System.__Canon,int],System.__Canon]]>
-; V05 loc1 [V05,T31] ( 3, 0.20) ref -> x25 class-hnd exact single-def <<unknown class>>
+; V05 loc1 [V05,T29] ( 3, 0.20) ref -> x25 class-hnd exact single-def <<unknown class>>
; V06 loc2 [V06,T11] ( 7, 0.40) int -> x24
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T23] ( 2, 0.27) ref -> x1 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.ValueTuple`2[System.ValueTuple`2[System.__Canon,int],System.__Canon]]]>
+; V08 tmp1 [V08,T21] ( 2, 0.27) ref -> x1 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.ValueTuple`2[System.ValueTuple`2[System.__Canon,int],System.__Canon]]]>
;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V11 tmp4 [V11,T26] ( 2, 0.27) long -> x26 "spilling helperCall"
+; V11 tmp4 [V11,T24] ( 2, 0.27) long -> x26 "spilling helperCall"
; V12 tmp5 [V12,T12] ( 3, 0.40) ref -> x27 class-hnd exact "Single-def Box Helper" <System.ValueTuple`2[System.ValueTuple`2[System.__Canon,int],System.__Canon]>
;* V13 tmp6 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.Object,int]>
-; V15 tmp8 [V15,T24] ( 2, 0.27) ref -> x26 class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V16 tmp9 [V16,T25] ( 2, 0.27) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.String>
+; V15 tmp8 [V15,T22] ( 2, 0.27) ref -> x26 class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V16 tmp9 [V16,T23] ( 2, 0.27) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.String>
; V17 tmp10 [V17,T04] ( 6, 0.80) ref -> x27 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.IncrementalGeneratorRunStep>
;* V18 tmp11 [V18 ] ( 0, 0 ) struct ( 8) zero-ref single-def "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.Object,int]]>
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.ValueTuple`2[System.ValueTuple`2[System.__Canon,int],System.__Canon]]]>
;* V20 tmp13 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V21 tmp14 [V21,T13] ( 3, 0.40) ref -> x25 class-hnd exact single-def "dup spill" <<unknown class>>
-; V22 tmp15 [V22,T27] ( 2, 0.27) int -> x24 "Inlining Arg"
-; V23 tmp16 [V23,T36] ( 3, 0.13) int -> x2 "Inline return value spill temp"
+; V22 tmp15 [V22,T25] ( 2, 0.27) int -> x24 "Inlining Arg"
+; V23 tmp16 [V23,T34] ( 3, 0.13) int -> x2 "Inline return value spill temp"
;* V24 tmp17 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.ValueTuple`2[System.ValueTuple`2[System.__Canon,int],System.__Canon]>
-; V25 tmp18 [V25,T28] ( 2, 0.27) int -> x26 "Inlining Arg"
+; V25 tmp18 [V25,T26] ( 2, 0.27) int -> x26 "Inlining Arg"
;* V26 tmp19 [V26 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ValueTuple`2[System.Object,int]>
; V27 tmp20 [V27,T05] ( 6, 0.80) ref -> x28 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`2[System.__Canon,int]]>
-; V28 tmp21 [V28,T33] ( 3, 0.20) int -> [fp+0x14] spill-single-def "Inline stloc first use temp"
+; V28 tmp21 [V28,T31] ( 3, 0.20) int -> [fp+0x14] spill-single-def "Inline stloc first use temp"
; V29 tmp22 [V29,T06] ( 6, 0.80) ref -> x25 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
-; V30 tmp23 [V30,T34] ( 3, 0.20) int -> x24 single-def "Inline stloc first use temp"
+; V30 tmp23 [V30,T32] ( 3, 0.20) int -> x24 single-def "Inline stloc first use temp"
; V31 tmp24 [V31,T03] ( 2, 1.07) long -> x22 single-def "field V01._ticks (fldOffset=0x0)" P-INDEP
; V32 tmp25 [V32,T02] ( 2, 1.07) ref -> x21 single-def "field V02.array (fldOffset=0x0)" P-INDEP
-; V33 tmp26 [V33,T37] ( 2, 0.13) ref -> x27 "field V14.Item1 (fldOffset=0x0)" P-INDEP
-; V34 tmp27 [V34,T39] ( 2, 0.13) int -> x26 "field V14.Item2 (fldOffset=0x8)" P-INDEP
-; V35 tmp28 [V35,T38] ( 2, 0.13) ref -> x0 "field V18.array (fldOffset=0x0)" P-INDEP
+; V33 tmp26 [V33,T35] ( 2, 0.13) ref -> x27 "field V14.Item1 (fldOffset=0x0)" P-INDEP
+; V34 tmp27 [V34,T37] ( 2, 0.13) int -> x26 "field V14.Item2 (fldOffset=0x8)" P-INDEP
+; V35 tmp28 [V35,T36] ( 2, 0.13) ref -> x0 "field V18.array (fldOffset=0x0)" P-INDEP
;* V36 tmp29 [V36 ] ( 0, 0 ) ref -> zero-ref "field V26.Item1 (fldOffset=0x0)" P-INDEP
;* V37 tmp30 [V37 ] ( 0, 0 ) int -> zero-ref "field V26.Item2 (fldOffset=0x8)" P-INDEP
-; V38 tmp31 [V38,T29] ( 2, 0.27) long -> x1 "argument with side effect"
+; V38 tmp31 [V38,T27] ( 2, 0.27) long -> x1 "argument with side effect"
; V39 tmp32 [V39,T10] ( 2, 0.53) long -> x1 "argument with side effect"
; V40 tmp33 [V40,T14] ( 3, 0.40) ref -> x26 "arr expr"
-; V41 tmp34 [V41,T41] ( 3, 0 ) ref -> x0 "arr expr"
+; V41 tmp34 [V41,T38] ( 3, 0 ) ref -> x0 "arr expr"
; V42 tmp35 [V42,T15] ( 3, 0.40) ref -> x14 "arr expr"
; V43 tmp36 [V43,T17] ( 3, 0.40) int -> x15 "index expr"
; V44 tmp37 [V44,T16] ( 3, 0.40) byref -> x0 "BlockOp address local"
-; V45 cse0 [V45,T35] ( 3, 0.20) long -> x23 "CSE - conservative"
-; V46 cse1 [V46,T32] ( 3, 0.20) ref -> x0 "CSE - conservative"
-; V47 cse2 [V47,T30] ( 4, 0.20) ref -> x26 "CSE - conservative"
-; V48 rat0 [V48,T20] ( 3, 0.29) long -> x0 "Spilling to split statement for tree"
-; V49 rat1 [V49,T22] ( 3, 0.27) long -> x23 "runtime lookup"
+; V45 cse0 [V45,T33] ( 3, 0.20) long -> x23 "CSE - conservative"
+; V46 cse1 [V46,T30] ( 3, 0.20) ref -> x0 "CSE - conservative"
+; V47 cse2 [V47,T28] ( 4, 0.20) ref -> x26 "CSE - conservative"
+; V48 rat0 [V48,T19] ( 3, 0.29) long -> x0 "Spilling to split statement for tree"
+; V49 rat1 [V49,T20] ( 3, 0.27) long -> x23 "runtime lookup"
; V50 rat2 [V50,T18] ( 3, 0.37) long -> x23 "fgMakeTemp is creating a new local variable"
-; V51 rat3 [V51,T21] ( 2, 0.27) long -> x0 "Spilling to split statement for tree"
-;* V52 rat4 [V52,T40] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V53 rat5 [V53,T19] ( 2, 0.27) long -> x0 "fgMakeTemp is creating a new local variable"
-; V54 rat6 [V54,T08] ( 3, 0.58) long -> x0 "Spilling to split statement for tree"
-; V55 rat7 [V55,T09] ( 3, 0.53) long -> x1 "runtime lookup"
-; V56 rat8 [V56,T07] ( 3, 0.74) long -> x1 "fgMakeTemp is creating a new local variable"
+; V51 rat3 [V51,T08] ( 3, 0.58) long -> x0 "Spilling to split statement for tree"
+; V52 rat4 [V52,T09] ( 3, 0.53) long -> x1 "runtime lookup"
+; V53 rat5 [V53,T07] ( 3, 0.74) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 64
@@ -108,7 +105,7 @@ G_M61432_IG04: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=E28
; gcrRegs +[x21 x25-x27]
ldr w0, [x26, #0x08]
cmp w0, #0
- bls G_M61432_IG17
+ bls G_M61432_IG16
ldr w2, [x26, #0x10]
;; size=16 bbWeight=0.07 PerfScore 0.50
G_M61432_IG05: ; bbWeight=0.07, gcrefRegs=A280000 {x19 x21 x25 x27}, byrefRegs=0000 {}, byref, isz
@@ -140,7 +137,7 @@ G_M61432_IG05: ; bbWeight=0.07, gcrefRegs=A280000 {x19 x21 x25 x27}, byre
ldr w15, [x28, #0x10]
ldr w12, [x14, #0x08]
cmp w15, w12
- bhs G_M61432_IG17
+ bhs G_M61432_IG16
ubfiz x15, x15, #4, #32
add x15, x15, #16
add x0, x14, x15
@@ -165,10 +162,10 @@ G_M61432_IG06: ; bbWeight=0.13, gcrefRegs=2280000 {x19 x21 x25}, byrefReg
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x28]
- cbz x1, G_M61432_IG13
+ cbz x1, G_M61432_IG12
;; size=20 bbWeight=0.13 PerfScore 1.73
G_M61432_IG07: ; bbWeight=0.11, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref
- b G_M61432_IG14
+ b G_M61432_IG13
;; size=4 bbWeight=0.11 PerfScore 0.11
G_M61432_IG08: ; bbWeight=0.07, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
@@ -202,7 +199,7 @@ G_M61432_IG10: ; bbWeight=0.01, gcrefRegs=280000 {x19 x21}, byrefRegs=000
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov x23, x0
;; size=20 bbWeight=0.01 PerfScore 0.04
-G_M61432_IG11: ; bbWeight=0.07, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M61432_IG11: ; bbWeight=0.07, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
mov x1, x23
add x0, fp, #24 // [V04 loc0]
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.ValueTuple`2[System.ValueTuple`2[System.__Canon,int],System.__Canon]]:get_Count():int:this
@@ -232,23 +229,16 @@ G_M61432_IG11: ; bbWeight=0.07, gcrefRegs=280000 {x19 x21}, byrefRegs=000
blr x2
; gcrRegs -[x0]
mov w24, wzr
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x28]
- cbnz x0, G_M61432_IG06
- ;; size=124 bbWeight=0.07 PerfScore 2.66
-G_M61432_IG12: ; bbWeight=0.03, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref
b G_M61432_IG06
- ;; size=4 bbWeight=0.03 PerfScore 0.03
-G_M61432_IG13: ; bbWeight=0.03, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref
+ ;; size=108 bbWeight=0.07 PerfScore 1.86
+G_M61432_IG12: ; bbWeight=0.03, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov x1, x0
;; size=20 bbWeight=0.03 PerfScore 0.08
-G_M61432_IG14: ; bbWeight=0.13, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
+G_M61432_IG13: ; bbWeight=0.13, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
add x0, fp, #24 // [V04 loc0]
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.ValueTuple`2[System.ValueTuple`2[System.__Canon,int],System.__Canon]]:get_Count():int:this
movk x2, #0xD1FFAB1E LSL #16
@@ -256,9 +246,9 @@ G_M61432_IG14: ; bbWeight=0.13, gcrefRegs=2280000 {x19 x21 x25}, byrefReg
ldr x2, [x2]
blr x2
cmp w0, w24
- bgt G_M61432_IG16
+ bgt G_M61432_IG15
;; size=32 bbWeight=0.13 PerfScore 1.00
-G_M61432_IG15: ; bbWeight=0.07, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref
+G_M61432_IG14: ; bbWeight=0.07, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref
ldr x26, [x19, #0x28]
; gcrRegs +[x26]
ldr x20, [x19, #0x18]
@@ -322,7 +312,7 @@ G_M61432_IG15: ; bbWeight=0.07, gcrefRegs=2280000 {x19 x21 x25}, byrefReg
str w24, [x25, #0x10]
b G_M61432_IG03
;; size=156 bbWeight=0.07 PerfScore 2.96
-G_M61432_IG16: ; bbWeight=0.07, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
+G_M61432_IG15: ; bbWeight=0.07, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21]
mov x26, x23
ldr x0, [x19]
@@ -349,20 +339,20 @@ G_M61432_IG16: ; bbWeight=0.07, gcrefRegs=2280000 {x19 x21 x25}, byrefReg
; gcrRegs +[x26]
ldr w0, [x26, #0x08]
cmp w0, #1
- bne G_M61432_IG18
+ bne G_M61432_IG17
b G_M61432_IG04
;; size=84 bbWeight=0.07 PerfScore 1.93
-G_M61432_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M61432_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x21 x25-x27]
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M61432_IG18: ; bbWeight=0, gcrefRegs=E280000 {x19 x21 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M61432_IG17: ; bbWeight=0, gcrefRegs=E280000 {x19 x21 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21 x25-x27]
mov x0, x26
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w24, w1
- bhs G_M61432_IG17
+ bhs G_M61432_IG16
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -370,7 +360,7 @@ G_M61432_IG18: ; bbWeight=0, gcrefRegs=E280000 {x19 x21 x25 x26 x27}, byr
b G_M61432_IG05
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 812, prolog size 48, PerfScore 39.29, instruction count 203, allocated bytes for code 812 (MethodHash=eb901007) for method Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.ValueTuple`2[System.ValueTuple`2[System.__Canon,int],System.__Canon]]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
+; Total bytes of code 792, prolog size 48, PerfScore 38.46, instruction count 198, allocated bytes for code 792 (MethodHash=eb901007) for method Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.ValueTuple`2[System.ValueTuple`2[System.__Canon,int],System.__Canon]]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
; ============================================================
Unwind Info:
@@ -381,7 +371,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 203 (0x000cb) Actual length = 812 (0x00032c)
+ Function Length : 198 (0x000c6) Actual length = 792 (0x000318)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+0.18%) : 589004.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+d__9:MoveNext():this (Tier1)
@@ -9,19 +9,19 @@
; 65 inlinees with PGO data; 134 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T145] ( 15, 6 ) byref -> [fp+0xC8] this EH-live single-def
-; V01 loc0 [V01,T144] ( 7, 12.70) int -> [fp+0x2AC] do-not-enreg[M] EH-live
-; V02 loc1 [V02,T05] ( 63,2349.90) ref -> [fp+0xC0] class-hnd EH-live spill-single-def <Xunit.Sdk.XunitTheoryTestCaseRunner>
-; V03 loc2 [V03 ] ( 6, 3.00) struct ( 8) [fp+0x2A0] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.TaskAwaiter>
-; V04 loc3 [V04,T94] ( 11, 42.79) ref -> [fp+0xB8] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[Xunit.Abstractions.IAttributeInfo]>
-; V05 loc4 [V05,T47] ( 8, 346.39) ref -> [fp+0xB0] do-not-enreg[Z] class-hnd EH-live <Xunit.Abstractions.IAttributeInfo>
+; V00 this [V00,T145] ( 15, 6 ) byref -> [fp+0xB8] this EH-live single-def
+; V01 loc0 [V01,T144] ( 7, 12.70) int -> [fp+0x29C] do-not-enreg[M] EH-live
+; V02 loc1 [V02,T05] ( 63,2349.90) ref -> [fp+0xB0] class-hnd EH-live spill-single-def <Xunit.Sdk.XunitTheoryTestCaseRunner>
+; V03 loc2 [V03 ] ( 6, 3.00) struct ( 8) [fp+0x290] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.TaskAwaiter>
+; V04 loc3 [V04,T94] ( 11, 42.79) ref -> [fp+0xA8] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[Xunit.Abstractions.IAttributeInfo]>
+; V05 loc4 [V05,T47] ( 8, 346.39) ref -> [fp+0xA0] do-not-enreg[Z] class-hnd EH-live <Xunit.Abstractions.IAttributeInfo>
;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
; V07 loc6 [V07,T119] ( 3, 29.09) ref -> x25 class-hnd <System.Type>
; V08 loc7 [V08,T137] ( 2, 19.39) ref -> x20 class-hnd <Xunit.Sdk.IDataDiscoverer>
; V09 loc8 [V09,T120] ( 3, 29.09) ref -> x0 class-hnd <System.Collections.Generic.IEnumerable`1[System.Object[]]>
; V10 loc9 [V10,T259] ( 3, 0 ) ref -> x22 class-hnd <<unknown class>>
; V11 loc10 [V11,T260] ( 3, 0 ) ref -> x22 class-hnd <<unknown class>>
-; V12 loc11 [V12,T14] ( 49,1190.42) ref -> [fp+0xA8] do-not-enreg[Z] class-hnd EH-live <System.Collections.Generic.IEnumerator`1[System.Object[]]>
+; V12 loc11 [V12,T14] ( 49,1190.42) ref -> [fp+0x98] do-not-enreg[Z] class-hnd EH-live <System.Collections.Generic.IEnumerator`1[System.Object[]]>
;* V13 loc12 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Object[]>
; V14 loc13 [V14,T49] ( 8, 329.21) ref -> x20 class-hnd <Xunit.Abstractions.ITypeInfo[]>
; V15 loc14 [V15,T10] ( 41,1323.93) ref -> x28 class-hnd <System.Reflection.MethodInfo>
@@ -54,12 +54,12 @@
; V42 tmp19 [V42,T33] ( 4, 658.43) ref -> x20 class-hnd exact "dup spill" <System.String>
; V43 tmp20 [V43,T35] ( 9, 657.32) ref -> x20
; V44 tmp21 [V44,T06] ( 14,1975.29) ref -> x24 class-hnd "impAppendStmt" <<unknown class>>
-; V45 tmp22 [V45,T25] ( 5, 658.43) ref -> [fp+0xA0] class-hnd "impAppendStmt" <Xunit.Sdk.IMessageBus>
-; V46 tmp23 [V46,T26] ( 5, 658.43) ref -> [fp+0x98] class-hnd "impAppendStmt" <System.Type>
-; V47 tmp24 [V47,T27] ( 5, 658.43) ref -> [fp+0x90] class-hnd "impAppendStmt" <System.Object[]>
-; V48 tmp25 [V48,T28] ( 5, 658.43) ref -> [fp+0x88] class-hnd "impAppendStmt" <<unknown class>>
-; V49 tmp26 [V49,T29] ( 5, 658.43) ref -> [fp+0x80] class-hnd "impAppendStmt" <Xunit.Sdk.ExceptionAggregator>
-; V50 tmp27 [V50,T30] ( 5, 658.43) ref -> [fp+0x78] class-hnd "spilling ret_expr" <System.Threading.CancellationTokenSource>
+; V45 tmp22 [V45,T25] ( 5, 658.43) ref -> [fp+0x90] class-hnd "impAppendStmt" <Xunit.Sdk.IMessageBus>
+; V46 tmp23 [V46,T26] ( 5, 658.43) ref -> [fp+0x88] class-hnd "impAppendStmt" <System.Type>
+; V47 tmp24 [V47,T27] ( 5, 658.43) ref -> [fp+0x80] class-hnd "impAppendStmt" <System.Object[]>
+; V48 tmp25 [V48,T28] ( 5, 658.43) ref -> [fp+0x78] class-hnd "impAppendStmt" <<unknown class>>
+; V49 tmp26 [V49,T29] ( 5, 658.43) ref -> [fp+0x70] class-hnd "impAppendStmt" <Xunit.Sdk.ExceptionAggregator>
+; V50 tmp27 [V50,T30] ( 5, 658.43) ref -> [fp+0x68] class-hnd "spilling ret_expr" <System.Threading.CancellationTokenSource>
; V51 tmp28 [V51,T36] ( 4, 654 ) long -> x2 "VirtualCall through function pointer"
; V52 tmp29 [V52,T226] ( 10, 0.09) ref -> x2 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V53 tmp30 [V53,T248] ( 4, 0 ) ref -> x2 class-hnd "dup spill" <<unknown class>>
@@ -178,7 +178,7 @@
; V166 tmp143 [V166,T114] ( 4, 29.64) ref -> x19 class-hnd "Inline stloc first use temp" <<unknown class>>
; V167 tmp144 [V167,T142] ( 2, 15.52) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
;* V168 tmp145 [V168 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V169 tmp146 [V169 ] ( 4, 29.64) ref -> [fp+0x298] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Type>
+; V169 tmp146 [V169 ] ( 4, 29.64) ref -> [fp+0x288] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Type>
;* V170 tmp147 [V170 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
;* V171 tmp148 [V171 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[int]>
; V172 tmp149 [V172,T183] ( 3, 1.09) ref -> x4 "guarded devirt return temp"
@@ -197,7 +197,7 @@
; V185 tmp162 [V185,T116] ( 4, 29.64) ref -> x22 class-hnd "Inline stloc first use temp" <<unknown class>>
; V186 tmp163 [V186,T143] ( 2, 15.52) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
;* V187 tmp164 [V187 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V188 tmp165 [V188 ] ( 4, 29.64) ref -> [fp+0x290] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.AttributeUsageAttribute>
+; V188 tmp165 [V188 ] ( 4, 29.64) ref -> [fp+0x280] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.AttributeUsageAttribute>
;* V189 tmp166 [V189 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
;* V190 tmp167 [V190 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[int]>
; V191 tmp168 [V191,T184] ( 3, 1.09) ref -> x4 "guarded devirt return temp"
@@ -211,7 +211,7 @@
; V199 tmp176 [V199,T131] ( 3, 20.10) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
; V200 tmp177 [V200,T82] ( 3, 53.91) ref -> x22 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[Xunit.Abstractions.IAttributeInfo]>
;* V201 tmp178 [V201 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Xunit.Abstractions.IAttributeInfo>
-; V202 tmp179 [V202 ] ( 2, 19.39) ubyte -> [fp+0x288] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V202 tmp179 [V202 ] ( 2, 19.39) ubyte -> [fp+0x278] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V203 tmp180 [V203,T117] ( 4, 29.09) ref -> x0 class-hnd "Inline stloc first use temp" <Xunit.Abstractions.IAttributeInfo>
; V204 tmp181 [V204,T65] ( 5, 116.36) ref -> x0 class-hnd "spilling ret_expr" <System.Reflection.CustomAttributeData>
; V205 tmp182 [V205,T89] ( 3, 48.48) ref -> x21 "guarded devirt return temp"
@@ -243,7 +243,7 @@
; V231 tmp208 [V231,T105] ( 2, 38.79) ref -> x23 class-hnd "Inlining Arg" <Xunit.Abstractions.IMessageSink>
; V232 tmp209 [V232,T69] ( 5, 77.57) ref -> x24 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V233 tmp210 [V233,T140] ( 2, 19.39) ref -> x1 class-hnd "Inline return value spill temp" <System.Object>
-; V234 tmp211 [V234 ] ( 6, 38.79) ref -> [fp+0x280] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
+; V234 tmp211 [V234 ] ( 6, 38.79) ref -> [fp+0x270] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
; V235 tmp212 [V235,T243] ( 7, 0 ) ref -> x0 class-hnd "Inlining Arg" <<unknown class>>
; V236 tmp213 [V236,T265] ( 3, 0 ) ref -> x3 class-hnd "Inline stloc first use temp" <<unknown class>>
; V237 tmp214 [V237,T258] ( 4, 0 ) int -> x2 "Inline stloc first use temp"
@@ -252,7 +252,7 @@
;* V240 tmp217 [V240 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V241 tmp218 [V241 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V242 tmp219 [V242 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.ParameterInfo[]>
-; V243 tmp220 [V243,T43] ( 6, 493.82) ref -> [fp+0x70] class-hnd exact "Inline stloc first use temp" <System.Reflection.ParameterInfo[]>
+; V243 tmp220 [V243,T43] ( 6, 493.82) ref -> [fp+0x60] class-hnd exact "Inline stloc first use temp" <System.Reflection.ParameterInfo[]>
;* V244 tmp221 [V244 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Reflection.ParameterInfo[]>
; V245 tmp222 [V245,T34] ( 4, 658.43) ref -> x24 class-hnd "dup spill" <System.Reflection.ParameterInfo[]>
; V246 tmp223 [V246,T20] ( 14, 665.49) ref -> x24
@@ -262,14 +262,14 @@
; V250 tmp227 [V250,T152] ( 8, 5.66) ref -> x23
; V251 tmp228 [V251,T156] ( 6, 4.25) ref -> x24 class-hnd "Inline return value spill temp" <System.Reflection.ParameterInfo[]>
; V252 tmp229 [V252,T169] ( 4, 2.83) int -> x0
-; V253 tmp230 [V253 ] ( 4, 2.83) ref -> [fp+0x278] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Reflection.ParameterInfo>
+; V253 tmp230 [V253 ] ( 4, 2.83) ref -> [fp+0x268] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Reflection.ParameterInfo>
; V254 tmp231 [V254,T231] ( 4, 0.04) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>>
; V255 tmp232 [V255,T48] ( 10, 329.21) ref -> x24 class-hnd "Inline return value spill temp" <System.Type[]>
; V256 tmp233 [V256,T09] ( 10,1378.15) ref -> x23 class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V257 tmp234 [V257,T45] ( 6, 384.75) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
; V258 tmp235 [V258,T56] ( 8, 258.97) ref -> x24 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V259 tmp236 [V259 ] ( 4, 172.37) struct (64) [fp+0x238] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.Type]>
-; V260 tmp237 [V260 ] ( 42,1079.54) struct (264) [fp+0x130] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Generic.SegmentedArrayBuilder`1[System.Type]>
+; V259 tmp236 [V259 ] ( 4, 172.37) struct (64) [fp+0x228] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.Type]>
+; V260 tmp237 [V260 ] ( 42,1079.54) struct (264) [fp+0x120] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Generic.SegmentedArrayBuilder`1[System.Type]>
;* V261 tmp238 [V261 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[System.__Canon]>
; V262 tmp239 [V262,T64] ( 4, 172.37) ref -> x24 class-hnd "Inline stloc first use temp" <System.Type[]>
; V263 tmp240 [V263,T73] ( 6, 63.72) int -> x0 "Inline stloc first use temp"
@@ -284,13 +284,13 @@
;* V272 tmp249 [V272 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V273 tmp250 [V273 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Type[]>
;* V274 tmp251 [V274 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Type]>
-; V275 tmp252 [V275,T126] ( 14, 22.87) int -> [fp+0x12C] "Inline stloc first use temp"
+; V275 tmp252 [V275,T126] ( 14, 22.87) int -> [fp+0x11C] "Inline stloc first use temp"
;* V276 tmp253 [V276 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[System.Type]>
;* V277 tmp254 [V277 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Type]>
;* V278 tmp255 [V278 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[System.Type]>
;* V279 tmp256 [V279 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[System.Type[]]>
;* V280 tmp257 [V280 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[System.Type[]]>
-; V281 tmp258 [V281,T200] ( 11, 0.42) int -> [fp+0x128] "Inline stloc first use temp"
+; V281 tmp258 [V281,T200] ( 11, 0.42) int -> [fp+0x118] "Inline stloc first use temp"
; V282 tmp259 [V282,T207] ( 8, 0.31) ref -> x10 class-hnd "Inline stloc first use temp" <System.Type[]>
;* V283 tmp260 [V283 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[System.Type]>
;* V284 tmp261 [V284 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Type]>
@@ -303,7 +303,7 @@
; V291 tmp268 [V291,T203] ( 4, 0.35) long -> x5 "Inlining Arg"
;* V292 tmp269 [V292 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V293 tmp270 [V293 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Type]>
-; V294 tmp271 [V294,T195] ( 6, 0.52) int -> [fp+0x124] "Inlining Arg"
+; V294 tmp271 [V294,T195] ( 6, 0.52) int -> [fp+0x114] "Inlining Arg"
; V295 tmp272 [V295,T202] ( 4, 0.35) byref -> x23 "Inlining Arg"
;* V296 tmp273 [V296 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Type[]]>
;* V297 tmp274 [V297 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Type[]]>
@@ -315,11 +315,11 @@
; V303 tmp280 [V303,T206] ( 4, 0.33) long -> x14 "Inlining Arg"
;* V304 tmp281 [V304 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V305 tmp282 [V305 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Type]>
-; V306 tmp283 [V306,T197] ( 6, 0.49) int -> [fp+0x120] "Inlining Arg"
+; V306 tmp283 [V306,T197] ( 6, 0.49) int -> [fp+0x110] "Inlining Arg"
; V307 tmp284 [V307,T205] ( 4, 0.33) byref -> x23 "Inlining Arg"
; V308 tmp285 [V308,T66] ( 10, 112.21) int -> x23 "Inlining Arg"
;* V309 tmp286 [V309 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[System.Type]>
-; V310 tmp287 [V310,T90] ( 6, 44.88) byref -> [fp+0x68] "Inlining Arg"
+; V310 tmp287 [V310,T90] ( 6, 44.88) byref -> [fp+0x58] "Inlining Arg"
;* V311 tmp288 [V311 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Type]>
;* V312 tmp289 [V312 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V313 tmp290 [V313 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -331,26 +331,26 @@
;* V319 tmp296 [V319 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V320 tmp297 [V320 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Type[]>
;* V321 tmp298 [V321 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[System.Type[]]>
-; V322 tmp299 [V322,T199] ( 11, 0.43) int -> [fp+0x11C] "Inline stloc first use temp"
-; V323 tmp300 [V323,T222] ( 4, 0.17) ref -> [fp+0x60] class-hnd "Inline stloc first use temp" <System.Type[]>
+; V322 tmp299 [V322,T199] ( 11, 0.43) int -> [fp+0x10C] "Inline stloc first use temp"
+; V323 tmp300 [V323,T222] ( 4, 0.17) ref -> [fp+0x50] class-hnd "Inline stloc first use temp" <System.Type[]>
; V324 tmp301 [V324,T196] ( 6, 0.50) ref -> x0 class-hnd exact "spilling ret_expr" <<unknown class>>
; V325 tmp302 [V325,T208] ( 6, 0.27) ref -> x23 class-hnd "Inline stloc first use temp" <System.Type[]>
; V326 tmp303 [V326,T194] ( 6, 0.53) ref -> x0 class-hnd exact "spilling ret_expr" <<unknown class>>
;* V327 tmp304 [V327 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Buffers.SharedArrayPool`1[System.String]>
;* V328 tmp305 [V328 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Buffers.SharedArrayPool`1[System.Lazy`2[Microsoft.CodeAnalysis.Host.IWorkspaceService,Microsoft.CodeAnalysis.Host.Mef.WorkspaceServiceMetadata]]>
;* V329 tmp306 [V329 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Type[]]>
-; V330 tmp307 [V330,T189] ( 8, 0.71) int -> [fp+0x118] "Inlining Arg"
+; V330 tmp307 [V330,T189] ( 8, 0.71) int -> [fp+0x108] "Inlining Arg"
;* V331 tmp308 [V331 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Type[]]>
;* V332 tmp309 [V332 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V333 tmp310 [V333 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Type[]]>
;* V334 tmp311 [V334 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V335 tmp312 [V335,T00] ( 22,4299.90) ref -> x27 class-hnd "Inlining Arg" <System.Object[]>
; V336 tmp313 [V336,T04] ( 14,2586.61) ref -> x24 class-hnd "Inlining Arg" <System.Type[]>
-; V337 tmp314 [V337,T01] ( 21,3467.84) int -> [fp+0x114] "Inline stloc first use temp"
+; V337 tmp314 [V337,T01] ( 21,3467.84) int -> [fp+0x104] "Inline stloc first use temp"
; V338 tmp315 [V338,T11] ( 8,1316.86) ref -> x23 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.XunitTest>
-; V339 tmp316 [V339,T17] ( 6, 987.64) ref -> [fp+0x58] class-hnd exact "NewObj constructor temp" <Xunit.Sdk.ExceptionAggregator>
-; V340 tmp317 [V340,T12] ( 8,1316.86) ref -> [fp+0x50] class-hnd exact "NewObj constructor temp" <Xunit.Sdk.XunitTestRunner>
-; V341 tmp318 [V341,T18] ( 6, 987.64) ref -> [fp+0x48] class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V339 tmp316 [V339,T17] ( 6, 987.64) ref -> [fp+0x48] class-hnd exact "NewObj constructor temp" <Xunit.Sdk.ExceptionAggregator>
+; V340 tmp317 [V340,T12] ( 8,1316.86) ref -> [fp+0x40] class-hnd exact "NewObj constructor temp" <Xunit.Sdk.XunitTestRunner>
+; V341 tmp318 [V341,T18] ( 6, 987.64) ref -> [fp+0x38] class-hnd exact "NewObj constructor temp" <<unknown class>>
; V342 tmp319 [V342,T44] ( 6, 434.85) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
; V343 tmp320 [V343,T39] ( 8, 540.48) int -> x23 "Inline stloc first use temp"
; V344 tmp321 [V344,T41] ( 6, 501.64) int -> x23 "Inline stloc first use temp"
@@ -367,7 +367,7 @@
; V355 tmp332 [V355,T151] ( 4, 6 ) byref -> x14 single-def "Inlining Arg"
;* V356 tmp333 [V356,T233] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.Tasks.VoidTaskResult>
; V357 tmp334 [V357,T232] ( 2, 0.02) ref -> x0 class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
-; V358 tmp335 [V358 ] ( 6, 3.00) ref -> [fp+0x2A0] do-not-enreg[X] addr-exposed "field V03.m_task (fldOffset=0x0)" P-DEP
+; V358 tmp335 [V358 ] ( 6, 3.00) ref -> [fp+0x290] do-not-enreg[X] addr-exposed "field V03.m_task (fldOffset=0x0)" P-DEP
; V359 tmp336 [V359,T180] ( 2, 2.00) ref -> x1 single-def "field V121.m_task (fldOffset=0x0)" P-INDEP
; V360 tmp337 [V360,T181] ( 3, 1.89) ref -> x15 single-def "field V147._list (fldOffset=0x0)" P-INDEP
;* V361 tmp338 [V361,T190] ( 0, 0 ) ref -> zero-ref single-def "field V147._current (fldOffset=0x8)" P-INDEP
@@ -390,33 +390,33 @@
;* V378 tmp355 [V378 ] ( 0, 0 ) byref -> zero-ref "field V270._reference (fldOffset=0x0)" P-INDEP
;* V379 tmp356 [V379 ] ( 0, 0 ) int -> zero-ref "field V270._length (fldOffset=0x8)" P-INDEP
; V380 tmp357 [V380,T129] ( 8, 22.61) byref -> x23 "field V274._reference (fldOffset=0x0)" P-INDEP
-; V381 tmp358 [V381,T130] ( 8, 22.61) int -> [fp+0x110] "field V274._length (fldOffset=0x8)" P-INDEP
+; V381 tmp358 [V381,T130] ( 8, 22.61) int -> [fp+0x100] "field V274._length (fldOffset=0x8)" P-INDEP
;* V382 tmp359 [V382 ] ( 0, 0 ) byref -> zero-ref "field V276._reference (fldOffset=0x0)" P-INDEP
;* V383 tmp360 [V383 ] ( 0, 0 ) int -> zero-ref "field V276._length (fldOffset=0x8)" P-INDEP
-; V384 tmp361 [V384,T127] ( 14, 22.77) byref -> [fp+0x40] "field V277._reference (fldOffset=0x0)" P-INDEP
-; V385 tmp362 [V385,T128] ( 12, 22.77) int -> [fp+0x10C] "field V277._length (fldOffset=0x8)" P-INDEP
+; V384 tmp361 [V384,T127] ( 14, 22.77) byref -> [fp+0x30] "field V277._reference (fldOffset=0x0)" P-INDEP
+; V385 tmp362 [V385,T128] ( 12, 22.77) int -> [fp+0xFC] "field V277._length (fldOffset=0x8)" P-INDEP
;* V386 tmp363 [V386 ] ( 0, 0 ) byref -> zero-ref "field V278._reference (fldOffset=0x0)" P-INDEP
;* V387 tmp364 [V387 ] ( 0, 0 ) int -> zero-ref "field V278._length (fldOffset=0x8)" P-INDEP
;* V388 tmp365 [V388 ] ( 0, 0 ) byref -> zero-ref "field V279._reference (fldOffset=0x0)" P-INDEP
;* V389 tmp366 [V389 ] ( 0, 0 ) int -> zero-ref "field V279._length (fldOffset=0x8)" P-INDEP
-; V390 tmp367 [V390,T221] ( 4, 0.17) byref -> [fp+0x38] "field V280._reference (fldOffset=0x0)" P-INDEP
-; V391 tmp368 [V391,T211] ( 7, 0.26) int -> [fp+0x108] "field V280._length (fldOffset=0x8)" P-INDEP
+; V390 tmp367 [V390,T221] ( 4, 0.17) byref -> [fp+0x28] "field V280._reference (fldOffset=0x0)" P-INDEP
+; V391 tmp368 [V391,T211] ( 7, 0.26) int -> [fp+0xF8] "field V280._length (fldOffset=0x8)" P-INDEP
;* V392 tmp369 [V392 ] ( 0, 0 ) byref -> zero-ref "field V283._reference (fldOffset=0x0)" P-INDEP
;* V393 tmp370 [V393 ] ( 0, 0 ) int -> zero-ref "field V283._length (fldOffset=0x8)" P-INDEP
-; V394 tmp371 [V394,T215] ( 4, 0.17) byref -> [fp+0x30] "field V284._reference (fldOffset=0x0)" P-INDEP
-; V395 tmp372 [V395,T201] ( 8, 0.35) int -> [fp+0x104] "field V284._length (fldOffset=0x8)" P-INDEP
+; V394 tmp371 [V394,T215] ( 4, 0.17) byref -> [fp+0x20] "field V284._reference (fldOffset=0x0)" P-INDEP
+; V395 tmp372 [V395,T201] ( 8, 0.35) int -> [fp+0xF4] "field V284._length (fldOffset=0x8)" P-INDEP
;* V396 tmp373 [V396 ] ( 0, 0 ) byref -> zero-ref "field V285._reference (fldOffset=0x0)" P-INDEP
;* V397 tmp374 [V397 ] ( 0, 0 ) int -> zero-ref "field V285._length (fldOffset=0x8)" P-INDEP
;* V398 tmp375 [V398 ] ( 0, 0 ) byref -> zero-ref "field V288._reference (fldOffset=0x0)" P-INDEP
;* V399 tmp376 [V399 ] ( 0, 0 ) int -> zero-ref "field V288._length (fldOffset=0x8)" P-INDEP
; V400 tmp377 [V400,T216] ( 4, 0.17) byref -> registers "field V293._reference (fldOffset=0x0)" P-INDEP
; V401 tmp378 [V401,T219] ( 4, 0.17) int -> x3 "field V293._length (fldOffset=0x8)" P-INDEP
-; V402 tmp379 [V402,T217] ( 4, 0.17) byref -> [fp+0x28] "field V296._reference (fldOffset=0x0)" P-INDEP
+; V402 tmp379 [V402,T217] ( 4, 0.17) byref -> [fp+0x18] "field V296._reference (fldOffset=0x0)" P-INDEP
;* V403 tmp380 [V403 ] ( 0, 0 ) int -> zero-ref "field V296._length (fldOffset=0x8)" P-INDEP
; V404 tmp381 [V404,T218] ( 4, 0.17) byref -> registers "field V297._reference (fldOffset=0x0)" P-INDEP
; V405 tmp382 [V405,T220] ( 4, 0.17) int -> registers "field V297._length (fldOffset=0x8)" P-INDEP
; V406 tmp383 [V406,T223] ( 6, 0.16) byref -> x1 "field V299._reference (fldOffset=0x0)" P-INDEP
-; V407 tmp384 [V407,T204] ( 10, 0.33) int -> [fp+0x100] "field V299._length (fldOffset=0x8)" P-INDEP
+; V407 tmp384 [V407,T204] ( 10, 0.33) int -> [fp+0xF0] "field V299._length (fldOffset=0x8)" P-INDEP
;* V408 tmp385 [V408 ] ( 0, 0 ) byref -> zero-ref "field V300._reference (fldOffset=0x0)" P-INDEP
;* V409 tmp386 [V409 ] ( 0, 0 ) int -> zero-ref "field V300._length (fldOffset=0x8)" P-INDEP
; V410 tmp387 [V410,T224] ( 4, 0.16) byref -> x23 "field V305._reference (fldOffset=0x0)" P-INDEP
@@ -425,12 +425,12 @@
;* V413 tmp390 [V413 ] ( 0, 0 ) int -> zero-ref "field V309._length (fldOffset=0x8)" P-INDEP
;* V414 tmp391 [V414 ] ( 0, 0 ) byref -> zero-ref "field V311._reference (fldOffset=0x0)" P-INDEP
;* V415 tmp392 [V415 ] ( 0, 0 ) int -> zero-ref "field V311._length (fldOffset=0x8)" P-INDEP
-; V416 tmp393 [V416,T198] ( 6, 0.26) byref -> [fp+0x20] "field V317._reference (fldOffset=0x0)" P-INDEP
+; V416 tmp393 [V416,T198] ( 6, 0.26) byref -> [fp+0x10] "field V317._reference (fldOffset=0x0)" P-INDEP
;* V417 tmp394 [V417,T229] ( 0, 0 ) int -> zero-ref "field V317._length (fldOffset=0x8)" P-INDEP
;* V418 tmp395 [V418 ] ( 0, 0 ) byref -> zero-ref "field V318._reference (fldOffset=0x0)" P-INDEP
;* V419 tmp396 [V419 ] ( 0, 0 ) int -> zero-ref "field V318._length (fldOffset=0x8)" P-INDEP
;* V420 tmp397 [V420,T227] ( 0, 0 ) byref -> zero-ref "field V321._reference (fldOffset=0x0)" P-INDEP
-; V421 tmp398 [V421,T209] ( 7, 0.26) int -> [fp+0xFC] "field V321._length (fldOffset=0x8)" P-INDEP
+; V421 tmp398 [V421,T209] ( 7, 0.26) int -> [fp+0xEC] "field V321._length (fldOffset=0x8)" P-INDEP
; V422 tmp399 [V422,T213] ( 4, 0.18) byref -> registers "field V329._reference (fldOffset=0x0)" P-INDEP
;* V423 tmp400 [V423,T230] ( 0, 0 ) int -> zero-ref "field V329._length (fldOffset=0x8)" P-INDEP
;* V424 tmp401 [V424,T228] ( 0, 0 ) byref -> zero-ref "field V331._reference (fldOffset=0x0)" P-INDEP
@@ -442,7 +442,7 @@
...
+20 (+0.83%) : 591325.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Canon,System.Canon]:TryInsert(System.Canon,System.Canon,ubyte):ubyte:this (Tier1)
@@ -11,30 +11,30 @@
;
; V00 this [V00,T00] ( 31, 14.84) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T01] ( 15, 6.37) ref -> x20 ld-addr-op class-hnd single-def <System.__Canon>
-; V02 arg2 [V02,T14] ( 5, 3 ) ref -> x21 class-hnd single-def <System.__Canon>
-; V03 arg3 [V03,T16] ( 6, 2.50) ubyte -> x22 single-def
+; V02 arg2 [V02,T13] ( 5, 3 ) ref -> x21 class-hnd single-def <System.__Canon>
+; V03 arg3 [V03,T15] ( 6, 2.50) ubyte -> x22 single-def
; V04 loc0 [V04 ] ( 17, 6.89) struct (16) [fp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.__Canon]]>
-; V05 loc1 [V05,T25] ( 5, 3.02) ref -> x23 class-hnd single-def <<unknown class>>
-; V06 loc2 [V06,T23] ( 6, 3.55) int -> x25 single-def
-; V07 loc3 [V07,T33] ( 7, 2.42) int -> x26
-; V08 loc4 [V08,T24] ( 5, 3.08) byref -> x27
-; V09 loc5 [V09,T13] ( 13, 5.40) int -> x28
-; V10 loc6 [V10,T46] ( 5, 2.00) int -> x26
-; V11 loc7 [V11,T50] ( 4, 1.49) ref -> x23 class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
-; V12 loc8 [V12,T51] ( 3, 1.49) int -> x26 single-def
+; V05 loc1 [V05,T23] ( 5, 3.02) ref -> x23 class-hnd single-def <<unknown class>>
+; V06 loc2 [V06,T21] ( 6, 3.55) int -> x25 single-def
+; V07 loc3 [V07,T31] ( 7, 2.42) int -> x26
+; V08 loc4 [V08,T22] ( 5, 3.08) byref -> x27
+; V09 loc5 [V09,T12] ( 13, 5.40) int -> x28
+; V10 loc6 [V10,T44] ( 5, 2.00) int -> x26
+; V11 loc7 [V11,T47] ( 4, 1.49) ref -> x23 class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+; V12 loc8 [V12,T48] ( 3, 1.49) int -> x26 single-def
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T38] ( 3, 2.01) int -> x25
+; V14 tmp1 [V14,T36] ( 3, 2.01) int -> x25
;* V15 tmp2 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp3 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V17 tmp4 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V18 tmp5 [V18,T15] ( 5, 5.00) byref -> x0 single-def "dup spill"
-; V19 tmp6 [V19,T74] ( 3, 0.01) long -> x1 "spilling helperCall"
+; V18 tmp5 [V18,T14] ( 5, 5.00) byref -> x0 single-def "dup spill"
+; V19 tmp6 [V19,T71] ( 3, 0.01) long -> x1 "spilling helperCall"
;* V20 tmp7 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp8 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp9 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V23 tmp10 [V23,T84] ( 3, 0 ) long -> [fp+0x40] "spilling helperCall"
+; V23 tmp10 [V23,T81] ( 3, 0 ) long -> [fp+0x40] "spilling helperCall"
;* V24 tmp11 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V25 tmp12 [V25,T82] ( 4, 0 ) long -> [fp+0x38] "VirtualCall with runtime lookup"
+; V25 tmp12 [V25,T79] ( 4, 0 ) long -> [fp+0x38] "VirtualCall with runtime lookup"
;* V26 tmp13 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V27 tmp14 [V27 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V28 tmp15 [V28 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -47,12 +47,12 @@
;* V35 tmp22 [V35 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V36 tmp23 [V36 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V37 tmp24 [V37 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V38 tmp25 [V38,T77] ( 4, 0.01) long -> x11 "VirtualCall with runtime lookup"
-; V39 tmp26 [V39,T39] ( 3, 2.01) int -> x25 "guarded devirt return temp"
+; V38 tmp25 [V38,T74] ( 4, 0.01) long -> x11 "VirtualCall with runtime lookup"
+; V39 tmp26 [V39,T37] ( 3, 2.01) int -> x25 "guarded devirt return temp"
;* V40 tmp27 [V40 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp"
;* V41 tmp28 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.TransformNode`2[System.Object,System.Object]>
-; V42 tmp29 [V42,T55] ( 3, 1.00) int -> x3 "guarded devirt return temp"
-; V43 tmp30 [V43,T17] ( 11, 4.45) ref -> x24 "guarded devirt arg temp"
+; V42 tmp29 [V42,T52] ( 3, 1.00) int -> x3 "guarded devirt return temp"
+; V43 tmp30 [V43,T16] ( 11, 4.45) ref -> x24 "guarded devirt arg temp"
;* V44 tmp31 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.ObjectEqualityComparer`1[System.Object]>
;* V45 tmp32 [V45 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V46 tmp33 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
@@ -62,108 +62,105 @@
; V50 tmp37 [V50,T05] ( 3, 6.04) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V51 tmp38 [V51,T06] ( 3, 6.04) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V52 tmp39 [V52 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V53 tmp40 [V53,T53] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V53 tmp40 [V53,T50] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V54 tmp41 [V54 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V55 tmp42 [V55,T54] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V55 tmp42 [V55,T51] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V56 tmp43 [V56 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inlining Arg" <System.Object>
;* V57 tmp44 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
-; V58 tmp45 [V58,T56] ( 3, 1.00) int -> x3 "guarded devirt return temp"
+; V58 tmp45 [V58,T53] ( 3, 1.00) int -> x3 "guarded devirt return temp"
;* V59 tmp46 [V59 ] ( 0, 0 ) ref -> zero-ref "guarded devirt arg temp"
;* V60 tmp47 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLabelSymbol>
-; V61 tmp48 [V61,T52] ( 3, 1.10) ref -> x1 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V61 tmp48 [V61,T49] ( 3, 1.10) ref -> x1 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbol>
;* V62 tmp49 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.SymbolEqualityComparer>
-; V63 tmp50 [V63,T59] ( 4, 0.55) ubyte -> x3 "Inline return value spill temp"
-; V64 tmp51 [V64,T80] ( 5, 0 ) ref -> [fp+0x10] class-hnd exact spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLabelSymbol>
-; V65 tmp52 [V65,T60] ( 2, 0.55) int -> [fp+0x34] spill-single-def "Inlining Arg"
-; V66 tmp53 [V66,T85] ( 2, 0 ) ubyte -> x1 "Inline return value spill temp"
-; V67 tmp54 [V67,T81] ( 4, 0 ) byref -> x1 "Inlining Arg"
+; V63 tmp50 [V63,T56] ( 4, 0.55) ubyte -> x3 "Inline return value spill temp"
+; V64 tmp51 [V64,T77] ( 5, 0 ) ref -> [fp+0x10] class-hnd exact spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLabelSymbol>
+; V65 tmp52 [V65,T57] ( 2, 0.55) int -> [fp+0x34] spill-single-def "Inlining Arg"
+; V66 tmp53 [V66,T82] ( 2, 0 ) ubyte -> x1 "Inline return value spill temp"
+; V67 tmp54 [V67,T78] ( 4, 0 ) byref -> x1 "Inlining Arg"
;* V68 tmp55 [V68 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
;* V69 tmp56 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V70 tmp57 [V70 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V71 tmp58 [V71 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V72 tmp59 [V72,T63] ( 3, 0.41) int -> x1 "Inlining Arg"
-; V73 tmp60 [V73,T61] ( 3, 0.41) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V74 tmp61 [V74,T62] ( 3, 0.41) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V72 tmp59 [V72,T60] ( 3, 0.41) int -> x1 "Inlining Arg"
+; V73 tmp60 [V73,T58] ( 3, 0.41) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V74 tmp61 [V74,T59] ( 3, 0.41) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V75 tmp62 [V75 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V76 tmp63 [V76,T69] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V76 tmp63 [V76,T66] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V77 tmp64 [V77 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V78 tmp65 [V78,T70] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V78 tmp65 [V78,T67] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V79 tmp66 [V79 ] ( 12, 4.45) ref -> [fp+0x48] do-not-enreg[X] addr-exposed "field V04._items (fldOffset=0x0)" P-DEP
; V80 tmp67 [V80 ] ( 17, 6.89) int -> [fp+0x50] do-not-enreg[X] addr-exposed "field V04._length (fldOffset=0x8)" P-DEP
-; V81 tmp68 [V81,T36] ( 2, 2.01) ref -> x0 single-def "field V46._items (fldOffset=0x0)" P-INDEP
-; V82 tmp69 [V82,T37] ( 2, 2.01) int -> x1 single-def "field V46._length (fldOffset=0x8)" P-INDEP
-; V83 tmp70 [V83,T100] ( 2, 0 ) ref -> x2 "field V68._nodeOrParent (fldOffset=0x0)" P-INDEP
-; V84 tmp71 [V84,T101] ( 2, 0 ) ref -> x3 "field V68._token (fldOffset=0x8)" P-INDEP
+; V81 tmp68 [V81,T34] ( 2, 2.01) ref -> x0 single-def "field V46._items (fldOffset=0x0)" P-INDEP
+; V82 tmp69 [V82,T35] ( 2, 2.01) int -> x1 single-def "field V46._length (fldOffset=0x8)" P-INDEP
+; V83 tmp70 [V83,T97] ( 2, 0 ) ref -> x2 "field V68._nodeOrParent (fldOffset=0x0)" P-INDEP
+; V84 tmp71 [V84,T98] ( 2, 0 ) ref -> x3 "field V68._token (fldOffset=0x8)" P-INDEP
;* V85 tmp72 [V85 ] ( 0, 0 ) int -> zero-ref "field V68._position (fldOffset=0x10)" P-INDEP
-; V86 tmp73 [V86,T103] ( 2, 0 ) int -> x4 "field V68._tokenIndex (fldOffset=0x14)" P-INDEP
-; V87 tmp74 [V87,T67] ( 2, 0.14) ref -> x0 single-def "field V69._items (fldOffset=0x0)" P-INDEP
-; V88 tmp75 [V88,T68] ( 2, 0.14) int -> x1 single-def "field V69._length (fldOffset=0x8)" P-INDEP
+; V86 tmp73 [V86,T100] ( 2, 0 ) int -> x4 "field V68._tokenIndex (fldOffset=0x14)" P-INDEP
+; V87 tmp74 [V87,T64] ( 2, 0.14) ref -> x0 single-def "field V69._items (fldOffset=0x0)" P-INDEP
+; V88 tmp75 [V88,T65] ( 2, 0.14) int -> x1 single-def "field V69._length (fldOffset=0x8)" P-INDEP
; V89 tmp76 [V89,T08] ( 3, 6.04) int -> x2 "index expr"
; V90 tmp77 [V90,T09] ( 3, 6.04) int -> x1 "index expr"
-; V91 tmp78 [V91,T22] ( 2, 3.89) long -> x1 "argument with side effect"
-; V92 tmp79 [V92,T42] ( 2, 2.00) long -> x1 "argument with side effect"
+; V91 tmp78 [V91,T20] ( 2, 3.89) long -> x1 "argument with side effect"
+; V92 tmp79 [V92,T40] ( 2, 2.00) long -> x1 "argument with side effect"
; V93 tmp80 [V93 ] ( 2, 0 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
-; V94 tmp81 [V94,T83] ( 3, 0 ) ref -> x0 "argument with side effect"
-; V95 tmp82 [V95,T49] ( 2, 1.89) long -> x1 "argument with side effect"
-; V96 tmp83 [V96,T66] ( 2, 0.27) int -> x1 "argument with side effect"
-; V97 tmp84 [V97,T64] ( 3, 0.41) int -> x2 "index expr"
-; V98 tmp85 [V98,T65] ( 3, 0.41) int -> x1 "index expr"
-; V99 tmp86 [V99,T45] ( 2, 2.00) long -> x1 "argument with side effect"
-; V100 tmp87 [V100,T104] ( 2, 0 ) long -> x1 "argument with side effect"
-; V101 tmp88 [V101,T102] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V102 tmp89 [V102,T105] ( 2, 0 ) long -> x1 "argument with side effect"
-; V103 tmp90 [V103,T106] ( 2, 0 ) long -> x0 "argument with side effect"
-; V104 tmp91 [V104,T107] ( 2, 0 ) long -> x1 "argument with side effect"
-; V105 tmp92 [V105,T108] ( 2, 0 ) long -> x0 "argument with side effect"
-; V106 tmp93 [V106,T43] ( 2, 2.00) long -> x1 "argument with side effect"
-; V107 cse0 [V107,T76] ( 3, 0.01) int -> x23 "CSE - conservative"
-; V108 cse1 [V108,T03] ( 32, 6.81) long -> x24 multi-def "CSE - aggressive"
-; V109 rat0 [V109,T79] ( 3, 0.00) long -> x0 "Spilling to split statement for tree"
-; V110 rat1 [V110,T78] ( 3, 0.01) long -> x11 "fgMakeTemp is creating a new local variable"
-; V111 rat2 [V111,T18] ( 3, 4.38) long -> x0 "Spilling to split statement for tree"
-; V112 rat3 [V112,T20] ( 3, 3.98) long -> x1 "runtime lookup"
+; V94 tmp81 [V94,T80] ( 3, 0 ) ref -> x0 "argument with side effect"
+; V95 tmp82 [V95,T46] ( 2, 1.89) long -> x1 "argument with side effect"
+; V96 tmp83 [V96,T63] ( 2, 0.27) int -> x1 "argument with side effect"
+; V97 tmp84 [V97,T61] ( 3, 0.41) int -> x2 "index expr"
+; V98 tmp85 [V98,T62] ( 3, 0.41) int -> x1 "index expr"
+; V99 tmp86 [V99,T43] ( 2, 2.00) long -> x1 "argument with side effect"
+; V100 tmp87 [V100,T101] ( 2, 0 ) long -> x1 "argument with side effect"
+; V101 tmp88 [V101,T99] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V102 tmp89 [V102,T102] ( 2, 0 ) long -> x1 "argument with side effect"
+; V103 tmp90 [V103,T103] ( 2, 0 ) long -> x0 "argument with side effect"
+; V104 tmp91 [V104,T104] ( 2, 0 ) long -> x1 "argument with side effect"
+; V105 tmp92 [V105,T105] ( 2, 0 ) long -> x0 "argument with side effect"
+; V106 tmp93 [V106,T41] ( 2, 2.00) long -> x1 "argument with side effect"
+; V107 cse0 [V107,T73] ( 3, 0.01) int -> x28 "CSE - conservative"
+; V108 cse1 [V108,T03] ( 33, 7.28) long -> x24 multi-def "CSE - aggressive"
+; V109 rat0 [V109,T76] ( 3, 0.00) long -> x0 "Spilling to split statement for tree"
+; V110 rat1 [V110,T75] ( 3, 0.01) long -> x11 "fgMakeTemp is creating a new local variable"
+; V111 rat2 [V111,T17] ( 3, 4.38) long -> x0 "Spilling to split statement for tree"
+; V112 rat3 [V112,T18] ( 3, 3.98) long -> x1 "runtime lookup"
; V113 rat4 [V113,T10] ( 3, 5.57) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V114 rat5 [V114,T19] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V115 rat6 [V115,T47] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V116 rat7 [V116,T11] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V117 rat8 [V117,T04] ( 2, 5.87) long -> x0 "Spilling to split statement for tree"
-;* V118 rat9 [V118,T26] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V119 rat10 [V119,T02] ( 2, 5.87) long -> x0 "fgMakeTemp is creating a new local variable"
-; V120 rat11 [V120,T21] ( 3, 3.89) long -> x1 "runtime lookup"
-; V121 rat12 [V121,T12] ( 3, 5.45) long -> x1 "fgMakeTemp is creating a new local variable"
-; V122 rat13 [V122,T40] ( 3, 2.00) long -> x1 "runtime lookup"
-; V123 rat14 [V123,T27] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-; V124 rat15 [V124,T35] ( 3, 2.08) long -> x0 "Spilling to split statement for tree"
-; V125 rat16 [V125,T48] ( 3, 1.89) long -> x1 "runtime lookup"
-; V126 rat17 [V126,T31] ( 3, 2.65) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V127 rat18 [V127,T58] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V128 rat19 [V128,T32] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V129 rat20 [V129,T34] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V130 rat21 [V130,T41] ( 3, 2.00) long -> x1 "runtime lookup"
-; V131 rat22 [V131,T28] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-; V132 rat23 [V132,T86] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
-; V133 rat24 [V133,T87] ( 3, 0 ) long -> x0 "runtime lookup"
-; V134 rat25 [V134,T88] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
-;* V135 rat26 [V135,T72] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V136 rat27 [V136,T75] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V137 rat28 [V137,T71] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V138 rat29 [V138,T89] ( 3, 0 ) long -> x1 "runtime lookup"
-; V139 rat30 [V139,T90] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-; V140 rat31 [V140,T91] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
-; V141 rat32 [V141,T92] ( 3, 0 ) long -> x3 "fgMakeTemp is creating a new local variable"
-; V142 rat33 [V142,T93] ( 3, 0 ) long -> x1 "runtime lookup"
-; V143 rat34 [V143,T94] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V144 rat35 [V144,T109] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V145 rat36 [V145,T95] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V146 rat37 [V146,T96] ( 3, 0 ) long -> x1 "runtime lookup"
-; V147 rat38 [V147,T97] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-; V148 rat39 [V148,T98] ( 3, 0 ) long -> x0 "runtime lookup"
-; V149 rat40 [V149,T99] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V150 rat41 [V150,T73] ( 3, 0.02) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V151 rat42 [V151,T57] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V152 rat43 [V152,T30] ( 2, 1.99) long -> x0 "fgMakeTemp is creating a new local variable"
-; V153 rat44 [V153,T44] ( 3, 2.00) long -> x1 "runtime lookup"
-; V154 rat45 [V154,T29] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
+; V114 rat5 [V114,T04] ( 2, 5.87) long -> x0 "Spilling to split statement for tree"
+;* V115 rat6 [V115,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V116 rat7 [V116,T02] ( 2, 5.87) long -> x0 "fgMakeTemp is creating a new local variable"
+; V117 rat8 [V117,T19] ( 3, 3.89) long -> x1 "runtime lookup"
+; V118 rat9 [V118,T11] ( 3, 5.45) long -> x1 "fgMakeTemp is creating a new local variable"
+; V119 rat10 [V119,T38] ( 3, 2.00) long -> x1 "runtime lookup"
+; V120 rat11 [V120,T25] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
+; V121 rat12 [V121,T33] ( 3, 2.08) long -> x0 "Spilling to split statement for tree"
+; V122 rat13 [V122,T45] ( 3, 1.89) long -> x1 "runtime lookup"
+; V123 rat14 [V123,T29] ( 3, 2.65) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V124 rat15 [V124,T55] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V125 rat16 [V125,T30] ( 2, 1.89) long -> x0 "fgMakeTemp is creating a new local variable"
+; V126 rat17 [V126,T32] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V127 rat18 [V127,T39] ( 3, 2.00) long -> x1 "runtime lookup"
+; V128 rat19 [V128,T26] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
+; V129 rat20 [V129,T83] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
+; V130 rat21 [V130,T84] ( 3, 0 ) long -> x0 "runtime lookup"
+; V131 rat22 [V131,T85] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+;* V132 rat23 [V132,T69] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V133 rat24 [V133,T72] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V134 rat25 [V134,T68] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V135 rat26 [V135,T86] ( 3, 0 ) long -> x1 "runtime lookup"
+; V136 rat27 [V136,T87] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
+; V137 rat28 [V137,T88] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V138 rat29 [V138,T89] ( 3, 0 ) long -> x3 "fgMakeTemp is creating a new local variable"
+; V139 rat30 [V139,T90] ( 3, 0 ) long -> x1 "runtime lookup"
+; V140 rat31 [V140,T91] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V141 rat32 [V141,T106] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V142 rat33 [V142,T92] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V143 rat34 [V143,T93] ( 3, 0 ) long -> x1 "runtime lookup"
+; V144 rat35 [V144,T94] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
+; V145 rat36 [V145,T95] ( 3, 0 ) long -> x0 "runtime lookup"
+; V146 rat37 [V146,T96] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
+; V147 rat38 [V147,T70] ( 3, 0.02) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V148 rat39 [V148,T54] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V149 rat40 [V149,T28] ( 2, 1.99) long -> x0 "fgMakeTemp is creating a new local variable"
+; V150 rat41 [V150,T42] ( 3, 2.00) long -> x1 "runtime lookup"
+; V151 rat42 [V151,T27] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
...
+24 (+1.06%) : 51336.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Canon,System.Canon]:TryInsert(System.Canon,System.Canon,ubyte):ubyte:this (Tier1)
@@ -9,32 +9,32 @@
; 7 inlinees with PGO data; 20 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 30, 13.21) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 31, 14.74) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 15, 6.23) ref -> x20 ld-addr-op class-hnd single-def <System.__Canon>
-; V02 arg2 [V02,T15] ( 5, 3 ) ref -> x21 class-hnd single-def <System.__Canon>
-; V03 arg3 [V03,T16] ( 6, 2.49) ubyte -> x22 single-def
+; V02 arg2 [V02,T14] ( 5, 3 ) ref -> x21 class-hnd single-def <System.__Canon>
+; V03 arg3 [V03,T15] ( 6, 2.49) ubyte -> x22 single-def
; V04 loc0 [V04 ] ( 17, 7.12) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.__Canon]]>
-; V05 loc1 [V05,T26] ( 5, 3.03) ref -> x23 class-hnd single-def <<unknown class>>
-; V06 loc2 [V06,T23] ( 6, 3.57) int -> x25 single-def
-; V07 loc3 [V07,T33] ( 7, 2.59) int -> x26
-; V08 loc4 [V08,T24] ( 5, 3.06) byref -> x27
+; V05 loc1 [V05,T24] ( 5, 3.03) ref -> x23 class-hnd single-def <<unknown class>>
+; V06 loc2 [V06,T21] ( 6, 3.57) int -> x25 single-def
+; V07 loc3 [V07,T31] ( 7, 2.59) int -> x26
+; V08 loc4 [V08,T22] ( 5, 3.06) byref -> x27
; V09 loc5 [V09,T11] ( 13, 5.60) int -> x28
-; V10 loc6 [V10,T38] ( 5, 2.03) int -> registers
-; V11 loc7 [V11,T51] ( 4, 1.49) ref -> x23 class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
-; V12 loc8 [V12,T50] ( 3, 1.53) int -> x23 single-def
+; V10 loc6 [V10,T36] ( 5, 2.03) int -> registers
+; V11 loc7 [V11,T48] ( 4, 1.49) ref -> x23 class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+; V12 loc8 [V12,T47] ( 3, 1.53) int -> x23 single-def
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T43] ( 3, 2.02) int -> x25
+; V14 tmp1 [V14,T41] ( 3, 2.02) int -> x25
;* V15 tmp2 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp3 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V17 tmp4 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V18 tmp5 [V18,T14] ( 5, 5.07) byref -> x0 single-def "dup spill"
-; V19 tmp6 [V19,T78] ( 3, 0.00) long -> x1 "spilling helperCall"
+; V18 tmp5 [V18,T13] ( 5, 5.07) byref -> x0 single-def "dup spill"
+; V19 tmp6 [V19,T75] ( 3, 0.00) long -> x1 "spilling helperCall"
;* V20 tmp7 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp8 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp9 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V23 tmp10 [V23,T81] ( 3, 0 ) long -> [fp+0x20] "spilling helperCall"
+; V23 tmp10 [V23,T78] ( 3, 0 ) long -> [fp+0x20] "spilling helperCall"
;* V24 tmp11 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V25 tmp12 [V25,T80] ( 4, 0 ) long -> [fp+0x18] "VirtualCall with runtime lookup"
+; V25 tmp12 [V25,T77] ( 4, 0 ) long -> [fp+0x18] "VirtualCall with runtime lookup"
;* V26 tmp13 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V27 tmp14 [V27 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V28 tmp15 [V28 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -47,12 +47,12 @@
;* V35 tmp22 [V35 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V36 tmp23 [V36 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V37 tmp24 [V37 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V38 tmp25 [V38,T67] ( 4, 0.06) long -> x11 "VirtualCall with runtime lookup"
-; V39 tmp26 [V39,T45] ( 3, 1.98) int -> x25 "guarded devirt return temp"
+; V38 tmp25 [V38,T64] ( 4, 0.06) long -> x11 "VirtualCall with runtime lookup"
+; V39 tmp26 [V39,T42] ( 3, 1.98) int -> x25 "guarded devirt return temp"
;* V40 tmp27 [V40 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp"
;* V41 tmp28 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.TransformNode`2[Microsoft.CodeAnalysis.CSharp.Syntax.InterfaceDeclarationSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InterfaceDeclarationSyntax]>
-; V42 tmp29 [V42,T59] ( 3, 0.99) int -> x3 "guarded devirt return temp"
-; V43 tmp30 [V43,T19] ( 7, 4.24) ref -> x24 "guarded devirt arg temp"
+; V42 tmp29 [V42,T56] ( 3, 0.99) int -> x3 "guarded devirt return temp"
+; V43 tmp30 [V43,T17] ( 7, 4.24) ref -> x24 "guarded devirt arg temp"
;* V44 tmp31 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.ObjectEqualityComparer`1[System.Object]>
;* V45 tmp32 [V45 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V46 tmp33 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
@@ -62,98 +62,95 @@
; V50 tmp37 [V50,T05] ( 3, 6.08) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V51 tmp38 [V51,T06] ( 3, 6.08) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V52 tmp39 [V52 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V53 tmp40 [V53,T57] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V53 tmp40 [V53,T54] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V54 tmp41 [V54 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V55 tmp42 [V55,T58] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V55 tmp42 [V55,T55] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V56 tmp43 [V56 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inlining Arg" <System.Object>
;* V57 tmp44 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
-; V58 tmp45 [V58,T60] ( 3, 0.99) int -> x3 "guarded devirt return temp"
+; V58 tmp45 [V58,T57] ( 3, 0.99) int -> x3 "guarded devirt return temp"
;* V59 tmp46 [V59 ] ( 0, 0 ) ref -> zero-ref "guarded devirt arg temp"
;* V60 tmp47 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolGeneric>
-; V61 tmp48 [V61,T52] ( 2, 1.38) ref -> x1 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V61 tmp48 [V61,T49] ( 2, 1.38) ref -> x1 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbol>
;* V62 tmp49 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.SymbolEqualityComparer>
-; V63 tmp50 [V63,T61] ( 3, 0.69) ubyte -> x3 "Inline return value spill temp"
-; V64 tmp51 [V64,T55] ( 3, 1.03) ref -> x1 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-; V65 tmp52 [V65,T53] ( 2, 1.38) int -> [fp+0x14] spill-single-def "Inlining Arg"
+; V63 tmp50 [V63,T58] ( 3, 0.69) ubyte -> x3 "Inline return value spill temp"
+; V64 tmp51 [V64,T52] ( 3, 1.03) ref -> x1 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V65 tmp52 [V65,T50] ( 2, 1.38) int -> [fp+0x14] spill-single-def "Inlining Arg"
;* V66 tmp53 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V67 tmp54 [V67 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V68 tmp55 [V68 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V69 tmp56 [V69,T64] ( 3, 0.11) int -> x1 "Inlining Arg"
-; V70 tmp57 [V70,T62] ( 3, 0.11) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V71 tmp58 [V71,T63] ( 3, 0.11) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V69 tmp56 [V69,T61] ( 3, 0.11) int -> x1 "Inlining Arg"
+; V70 tmp57 [V70,T59] ( 3, 0.11) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V71 tmp58 [V71,T60] ( 3, 0.11) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V72 tmp59 [V72 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V73 tmp60 [V73,T72] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V73 tmp60 [V73,T69] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V74 tmp61 [V74 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V75 tmp62 [V75,T73] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V75 tmp62 [V75,T70] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V76 tmp63 [V76 ] ( 12, 4.55) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V04._items (fldOffset=0x0)" P-DEP
; V77 tmp64 [V77 ] ( 17, 7.12) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V04._length (fldOffset=0x8)" P-DEP
-; V78 tmp65 [V78,T41] ( 2, 2.03) ref -> x0 single-def "field V46._items (fldOffset=0x0)" P-INDEP
-; V79 tmp66 [V79,T42] ( 2, 2.03) int -> x1 single-def "field V46._length (fldOffset=0x8)" P-INDEP
-; V80 tmp67 [V80,T70] ( 2, 0.04) ref -> x0 single-def "field V66._items (fldOffset=0x0)" P-INDEP
-; V81 tmp68 [V81,T71] ( 2, 0.04) int -> x1 single-def "field V66._length (fldOffset=0x8)" P-INDEP
+; V78 tmp65 [V78,T39] ( 2, 2.03) ref -> x0 single-def "field V46._items (fldOffset=0x0)" P-INDEP
+; V79 tmp66 [V79,T40] ( 2, 2.03) int -> x1 single-def "field V46._length (fldOffset=0x8)" P-INDEP
+; V80 tmp67 [V80,T67] ( 2, 0.04) ref -> x0 single-def "field V66._items (fldOffset=0x0)" P-INDEP
+; V81 tmp68 [V81,T68] ( 2, 0.04) int -> x1 single-def "field V66._length (fldOffset=0x8)" P-INDEP
; V82 tmp69 [V82,T08] ( 3, 6.08) int -> x2 "index expr"
; V83 tmp70 [V83,T09] ( 3, 6.08) int -> x1 "index expr"
-; V84 tmp71 [V84,T21] ( 2, 4.08) long -> x1 "argument with side effect"
-; V85 tmp72 [V85,T48] ( 2, 1.97) long -> x1 "argument with side effect"
-; V86 tmp73 [V86,T37] ( 2, 2.11) long -> x1 "argument with side effect"
-; V87 tmp74 [V87,T65] ( 3, 0.11) int -> x2 "index expr"
-; V88 tmp75 [V88,T66] ( 3, 0.11) int -> x1 "index expr"
-; V89 tmp76 [V89,T40] ( 2, 2.03) long -> x1 "argument with side effect"
-; V90 tmp77 [V90,T97] ( 2, 0 ) long -> x1 "argument with side effect"
-; V91 tmp78 [V91,T96] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V92 tmp79 [V92,T98] ( 2, 0 ) long -> x1 "argument with side effect"
-; V93 tmp80 [V93,T99] ( 2, 0 ) long -> x0 "argument with side effect"
-; V94 tmp81 [V94,T100] ( 2, 0 ) long -> x1 "argument with side effect"
-; V95 tmp82 [V95,T101] ( 2, 0 ) long -> x0 "argument with side effect"
-; V96 tmp83 [V96,T49] ( 2, 1.97) long -> x1 "argument with side effect"
-; V97 cse0 [V97,T79] ( 3, 0.00) int -> x23 "CSE - conservative"
+; V84 tmp71 [V84,T19] ( 2, 4.08) long -> x1 "argument with side effect"
+; V85 tmp72 [V85,T45] ( 2, 1.97) long -> x1 "argument with side effect"
+; V86 tmp73 [V86,T35] ( 2, 2.11) long -> x1 "argument with side effect"
+; V87 tmp74 [V87,T62] ( 3, 0.11) int -> x2 "index expr"
+; V88 tmp75 [V88,T63] ( 3, 0.11) int -> x1 "index expr"
+; V89 tmp76 [V89,T38] ( 2, 2.03) long -> x1 "argument with side effect"
+; V90 tmp77 [V90,T94] ( 2, 0 ) long -> x1 "argument with side effect"
+; V91 tmp78 [V91,T93] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V92 tmp79 [V92,T95] ( 2, 0 ) long -> x1 "argument with side effect"
+; V93 tmp80 [V93,T96] ( 2, 0 ) long -> x0 "argument with side effect"
+; V94 tmp81 [V94,T97] ( 2, 0 ) long -> x1 "argument with side effect"
+; V95 tmp82 [V95,T98] ( 2, 0 ) long -> x0 "argument with side effect"
+; V96 tmp83 [V96,T46] ( 2, 1.97) long -> x1 "argument with side effect"
+; V97 cse0 [V97,T76] ( 3, 0.00) int -> x23 "CSE - conservative"
; V98 cse1 [V98,T03] ( 33, 7.52) long -> x24 multi-def "CSE - aggressive"
-; V99 rat0 [V99,T69] ( 3, 0.05) long -> x0 "Spilling to split statement for tree"
-; V100 rat1 [V100,T68] ( 3, 0.06) long -> x11 "fgMakeTemp is creating a new local variable"
-; V101 rat2 [V101,T17] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V102 rat3 [V102,T22] ( 3, 4.00) long -> x1 "runtime lookup"
+; V99 rat0 [V99,T66] ( 3, 0.05) long -> x0 "Spilling to split statement for tree"
+; V100 rat1 [V100,T65] ( 3, 0.06) long -> x11 "fgMakeTemp is creating a new local variable"
+; V101 rat2 [V101,T16] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V102 rat3 [V102,T20] ( 3, 4.00) long -> x1 "runtime lookup"
; V103 rat4 [V103,T12] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V104 rat5 [V104,T18] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V105 rat6 [V105,T44] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V106 rat7 [V106,T13] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V107 rat8 [V107,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V108 rat9 [V108,T25] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V109 rat10 [V109,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V110 rat11 [V110,T20] ( 3, 4.08) long -> x1 "runtime lookup"
-; V111 rat12 [V111,T10] ( 3, 5.71) long -> x1 "fgMakeTemp is creating a new local variable"
-; V112 rat13 [V112,T46] ( 3, 1.97) long -> x1 "runtime lookup"
-; V113 rat14 [V113,T31] ( 3, 2.76) long -> x1 "fgMakeTemp is creating a new local variable"
-; V114 rat15 [V114,T34] ( 3, 2.32) long -> x0 "Spilling to split statement for tree"
-; V115 rat16 [V115,T36] ( 3, 2.11) long -> x1 "runtime lookup"
-; V116 rat17 [V116,T27] ( 3, 2.95) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V117 rat18 [V117,T54] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V118 rat19 [V118,T28] ( 2, 2.11) long -> x0 "fgMakeTemp is creating a new local variable"
-; V119 rat20 [V119,T35] ( 3, 2.17) long -> x0 "Spilling to split statement for tree"
-; V120 rat21 [V120,T47] ( 3, 1.97) long -> x1 "runtime lookup"
-; V121 rat22 [V121,T32] ( 3, 2.76) long -> x1 "fgMakeTemp is creating a new local variable"
-; V122 rat23 [V122,T82] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
-; V123 rat24 [V123,T83] ( 3, 0 ) long -> x0 "runtime lookup"
-; V124 rat25 [V124,T84] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
-;* V125 rat26 [V125,T75] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V126 rat27 [V126,T76] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V127 rat28 [V127,T74] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V128 rat29 [V128,T85] ( 3, 0 ) long -> x1 "runtime lookup"
-; V129 rat30 [V129,T86] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-; V130 rat31 [V130,T87] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
-; V131 rat32 [V131,T88] ( 3, 0 ) long -> x3 "fgMakeTemp is creating a new local variable"
-; V132 rat33 [V132,T89] ( 3, 0 ) long -> x1 "runtime lookup"
-; V133 rat34 [V133,T90] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V134 rat35 [V134,T102] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V135 rat36 [V135,T91] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V136 rat37 [V136,T92] ( 3, 0 ) long -> x1 "runtime lookup"
-; V137 rat38 [V137,T93] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-; V138 rat39 [V138,T94] ( 3, 0 ) long -> x0 "runtime lookup"
-; V139 rat40 [V139,T95] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V140 rat41 [V140,T77] ( 3, 0.00) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V141 rat42 [V141,T56] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V142 rat43 [V142,T29] ( 2, 2.04) long -> x0 "fgMakeTemp is creating a new local variable"
-; V143 rat44 [V143,T39] ( 3, 2.03) long -> x1 "runtime lookup"
-; V144 rat45 [V144,T30] ( 3, 2.84) long -> x1 "fgMakeTemp is creating a new local variable"
+; V104 rat5 [V104,T04] ( 2, 6.11) long -> x0 "Spilling to split statement for tree"
+;* V105 rat6 [V105,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V106 rat7 [V106,T01] ( 2, 6.11) long -> x0 "fgMakeTemp is creating a new local variable"
+; V107 rat8 [V107,T18] ( 3, 4.08) long -> x1 "runtime lookup"
+; V108 rat9 [V108,T10] ( 3, 5.71) long -> x1 "fgMakeTemp is creating a new local variable"
+; V109 rat10 [V109,T43] ( 3, 1.97) long -> x1 "runtime lookup"
+; V110 rat11 [V110,T29] ( 3, 2.76) long -> x1 "fgMakeTemp is creating a new local variable"
+; V111 rat12 [V111,T32] ( 3, 2.32) long -> x0 "Spilling to split statement for tree"
+; V112 rat13 [V112,T34] ( 3, 2.11) long -> x1 "runtime lookup"
+; V113 rat14 [V113,T25] ( 3, 2.95) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V114 rat15 [V114,T51] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V115 rat16 [V115,T26] ( 2, 2.11) long -> x0 "fgMakeTemp is creating a new local variable"
+; V116 rat17 [V116,T33] ( 3, 2.17) long -> x0 "Spilling to split statement for tree"
+; V117 rat18 [V117,T44] ( 3, 1.97) long -> x1 "runtime lookup"
+; V118 rat19 [V118,T30] ( 3, 2.76) long -> x1 "fgMakeTemp is creating a new local variable"
+; V119 rat20 [V119,T79] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
+; V120 rat21 [V120,T80] ( 3, 0 ) long -> x0 "runtime lookup"
+; V121 rat22 [V121,T81] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+;* V122 rat23 [V122,T72] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V123 rat24 [V123,T73] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V124 rat25 [V124,T71] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V125 rat26 [V125,T82] ( 3, 0 ) long -> x1 "runtime lookup"
+; V126 rat27 [V126,T83] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
+; V127 rat28 [V127,T84] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V128 rat29 [V128,T85] ( 3, 0 ) long -> x3 "fgMakeTemp is creating a new local variable"
+; V129 rat30 [V129,T86] ( 3, 0 ) long -> x1 "runtime lookup"
+; V130 rat31 [V130,T87] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V131 rat32 [V131,T99] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V132 rat33 [V132,T88] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V133 rat34 [V133,T89] ( 3, 0 ) long -> x1 "runtime lookup"
+; V134 rat35 [V134,T90] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
+; V135 rat36 [V135,T91] ( 3, 0 ) long -> x0 "runtime lookup"
+; V136 rat37 [V136,T92] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
+; V137 rat38 [V137,T74] ( 3, 0.00) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V138 rat39 [V138,T53] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V139 rat40 [V139,T27] ( 2, 2.04) long -> x0 "fgMakeTemp is creating a new local variable"
+; V140 rat41 [V140,T37] ( 3, 2.03) long -> x1 "runtime lookup"
+; V141 rat42 [V141,T28] ( 3, 2.84) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 48
@@ -176,7 +173,7 @@ G_M33517_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w22, w3
;; size=52 bbWeight=1 PerfScore 10.50
G_M33517_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M33517_IG63
+ cbz x20, G_M33517_IG65
;; size=4 bbWeight=1 PerfScore 1.00
G_M33517_IG03: ; bbWeight=1.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x40]
@@ -197,7 +194,7 @@ G_M33517_IG06: ; bbWeight=0.99, gcrefRegs=B80000 {x19 x20 x21 x23}, byref
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- bne G_M33517_IG17
...
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
-20 (-4.46%) : 23719.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary
2[System.Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.Canon]):this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 17 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
+; V00 this [V00,T04] ( 7, 16 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V01 arg1 [V01,T15] ( 4, 4 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
-; V02 arg2 [V02,T18] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V02 arg2 [V02,T17] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V03 loc0 [V03 ] ( 3, 11 ) struct (24) [fp+0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SmallDictionary`2+Enumerator[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V04 loc1 [V04 ] ( 5, 10 ) struct (32) [fp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,34 +27,31 @@
; V16 tmp11 [V16 ] ( 3, 11 ) ref -> [fp+0x68] do-not-enreg[X] addr-exposed "field V03._stack (fldOffset=0x0)" P-DEP
; V17 tmp12 [V17 ] ( 3, 11 ) ref -> [fp+0x70] do-not-enreg[X] addr-exposed "field V03._next (fldOffset=0x8)" P-DEP
; V18 tmp13 [V18 ] ( 3, 11 ) ref -> [fp+0x78] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x10)" P-DEP
-; V19 tmp14 [V19,T23] ( 2, 4 ) ref -> x23 "field V11.DefaultType (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T24] ( 2, 4 ) ref -> x24 "field V11._extensions (fldOffset=0x8)" P-INDEP
-; V21 tmp16 [V21,T25] ( 2, 4 ) ubyte -> x25 "field V11.DefaultNullableAnnotation (fldOffset=0x10)" P-INDEP
+; V19 tmp14 [V19,T21] ( 2, 4 ) ref -> x23 "field V11.DefaultType (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T22] ( 2, 4 ) ref -> x24 "field V11._extensions (fldOffset=0x8)" P-INDEP
+; V21 tmp16 [V21,T23] ( 2, 4 ) ubyte -> x25 "field V11.DefaultNullableAnnotation (fldOffset=0x10)" P-INDEP
; V22 tmp17 [V22 ] ( 2, 4 ) ref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V12._stack (fldOffset=0x0)" P-DEP
; V23 tmp18 [V23 ] ( 2, 4 ) ref -> [fp+0x38] do-not-enreg[X] addr-exposed "field V12._next (fldOffset=0x8)" P-DEP
; V24 tmp19 [V24 ] ( 2, 4 ) ref -> [fp+0x40] do-not-enreg[X] addr-exposed "field V12._current (fldOffset=0x10)" P-DEP
-; V25 tmp20 [V25,T26] ( 2, 4 ) long -> x1 "argument with side effect"
+; V25 tmp20 [V25,T24] ( 2, 4 ) long -> x1 "argument with side effect"
; V26 tmp21 [V26,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V27 tmp22 [V27,T12] ( 2, 8 ) long -> x1 "argument with side effect"
; V28 tmp23 [V28 ] ( 4, 16 ) struct (24) [fp+0x18] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
; V29 tmp24 [V29,T13] ( 2, 8 ) int -> x1 "argument with side effect"
; V30 tmp25 [V30,T10] ( 2, 8 ) ref -> x0 "argument with side effect"
; V31 tmp26 [V31,T11] ( 2, 8 ) ref -> x2 "argument with side effect"
-; V32 cse0 [V32,T21] ( 3, 4 ) long -> x22 "CSE - aggressive"
-;* V33 cse1 [V33,T28] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V32 cse0 [V32,T19] ( 3, 4 ) long -> x22 "CSE - aggressive"
+;* V33 cse1 [V33,T25] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; V34 cse2 [V34,T14] ( 4, 4.40) long -> x21 "CSE - aggressive"
-; V35 rat0 [V35,T19] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V36 rat1 [V36,T22] ( 3, 4 ) long -> x22 "runtime lookup"
+; V35 rat0 [V35,T18] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V36 rat1 [V36,T20] ( 3, 4 ) long -> x22 "runtime lookup"
; V37 rat2 [V37,T16] ( 3, 5.60) long -> x22 "fgMakeTemp is creating a new local variable"
-; V38 rat3 [V38,T20] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V39 rat4 [V39,T27] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V40 rat5 [V40,T17] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V41 rat6 [V41,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V42 rat7 [V42,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V43 rat8 [V43,T08] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-; V44 rat9 [V44,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V45 rat10 [V45,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V46 rat11 [V46,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V38 rat3 [V38,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V39 rat4 [V39,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V40 rat5 [V40,T08] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+; V41 rat6 [V41,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V42 rat7 [V42,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V43 rat8 [V43,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 120
@@ -122,14 +119,9 @@ G_M40847_IG06: ; bbWeight=1, nogc, extend
ldr x0, [fp, #0x40]
str x0, [fp, #0x78]
;; size=16 bbWeight=1 PerfScore 7.00
-G_M40847_IG07: ; bbWeight=1, isz, extend
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x28]
- cbnz x0, G_M40847_IG12
+G_M40847_IG07: ; bbWeight=1, extend
b G_M40847_IG12
- ;; size=24 bbWeight=1 PerfScore 14.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M40847_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x22
add x8, fp, #72 // [V04 loc1]
@@ -220,7 +212,7 @@ G_M40847_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ret lr
;; size=24 bbWeight=1 PerfScore 7.00
-; Total bytes of code 448, prolog size 52, PerfScore 325.60, instruction count 112, allocated bytes for code 448 (MethodHash=69926070) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 428, prolog size 52, PerfScore 312.60, instruction count 107, allocated bytes for code 428 (MethodHash=69926070) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -231,7 +223,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 112 (0x00070) Actual length = 448 (0x0001c0)
+ Function Length : 107 (0x0006b) Actual length = 428 (0x0001ac)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-3.00%) : 66955.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
@@ -8,18 +8,18 @@
; 2 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 14 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]>
+; V00 this [V00,T04] ( 7, 13 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]>
; V01 arg1 [V01,T05] ( 8, 12 ) ref -> x19 class-hnd single-def <System.Array>
; V02 arg2 [V02,T08] ( 6, 8 ) int -> registers
; V03 loc0 [V03 ] ( 5, 12 ) struct (48) [fp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableSortedSet`1+Enumerator[System.__Canon]>
-; V04 loc1 [V04,T22] ( 2, 4 ) ref -> x23 class-hnd <System.__Canon>
+; V04 loc1 [V04,T20] ( 2, 4 ) ref -> x23 class-hnd <System.__Canon>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V09 tmp4 [V09,T07] ( 3, 12 ) int -> x20 "impSpillLclRefs"
;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V11 tmp6 [V11,T19] ( 6, 4 ) long -> x2 "Indirect call through function pointer"
+; V11 tmp6 [V11,T17] ( 6, 4 ) long -> x2 "Indirect call through function pointer"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V14 tmp9 [V14 ] ( 2, 4 ) struct (48) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableSortedSet`1+Enumerator[System.__Canon]>
@@ -29,27 +29,24 @@
; V18 tmp13 [V18,T13] ( 3, 6 ) int -> x0 "Inline stloc first use temp"
; V19 tmp14 [V19,T06] ( 3, 12 ) byref -> x25 "Inlining Arg"
;* V20 tmp15 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp16 [V21,T29] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V22 tmp17 [V22,T23] ( 2, 4 ) long -> x1 "argument with side effect"
+; V21 tmp16 [V21,T26] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V22 tmp17 [V22,T21] ( 2, 4 ) long -> x1 "argument with side effect"
; V23 tmp18 [V23,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V24 tmp19 [V24,T09] ( 2, 8 ) long -> x1 "argument with side effect"
; V25 tmp20 [V25,T10] ( 2, 8 ) long -> x2 "argument with side effect"
-; V26 PSPSym [V26,T26] ( 1, 1 ) long -> [fp+0x80] do-not-enreg[V] "PSPSym"
-; V27 cse0 [V27,T20] ( 3, 4 ) long -> x22 "CSE - aggressive"
-; V28 cse1 [V28,T24] ( 6, 3.20) long -> x21 multi-def "CSE - aggressive"
+; V26 PSPSym [V26,T23] ( 1, 1 ) long -> [fp+0x80] do-not-enreg[V] "PSPSym"
+; V27 cse0 [V27,T18] ( 3, 4 ) long -> x22 "CSE - aggressive"
+; V28 cse1 [V28,T22] ( 6, 3.20) long -> x21 multi-def "CSE - aggressive"
; V29 cse2 [V29,T11] ( 3, 6 ) ref -> x1 "CSE - aggressive"
-; V30 rat0 [V30,T17] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V31 rat1 [V31,T21] ( 3, 4 ) long -> x22 "runtime lookup"
+; V30 rat0 [V30,T16] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
+; V31 rat1 [V31,T19] ( 3, 4 ) long -> x22 "runtime lookup"
; V32 rat2 [V32,T14] ( 3, 5.60) long -> x22 "fgMakeTemp is creating a new local variable"
-; V33 rat3 [V33,T18] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V34 rat4 [V34,T25] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V35 rat5 [V35,T15] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V36 rat6 [V36,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V37 rat7 [V37,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V38 rat8 [V38,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
-; V39 rat9 [V39,T16] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
-; V40 rat10 [V40,T27] ( 3, 0 ) long -> x21 "Spilling to split statement for tree"
-; V41 rat11 [V41,T28] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V33 rat3 [V33,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V34 rat4 [V34,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V35 rat5 [V35,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+; V36 rat6 [V36,T15] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V37 rat7 [V37,T24] ( 3, 0 ) long -> x21 "Spilling to split statement for tree"
+; V38 rat8 [V38,T25] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 120
@@ -127,18 +124,10 @@ G_M52227_IG06: ; bbWeight=1, nogc, extend
ldp x0, x1, [fp, #0x38]
stp x0, x1, [fp, #0x68]
;; size=24 bbWeight=1 PerfScore 12.00
-G_M52227_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x10] // [V00 this]
- ; gcrRegs +[x2]
- ldr x0, [x2]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x30]
- cbnz x0, G_M52227_IG11
+G_M52227_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
b G_M52227_IG11
- ;; size=28 bbWeight=1 PerfScore 16.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M52227_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
mov x1, x22
add x0, fp, #72 // [V03 loc0]
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableSortedSet`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this
@@ -200,16 +189,16 @@ G_M52227_IG10: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {
; gcrRegs -[x0-x1 x23]
; gcr arg pop 0
mov w20, w24
+ ;; size=48 bbWeight=2 PerfScore 19.00
+G_M52227_IG11: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x2, [fp, #0x10] // [V00 this]
; gcrRegs +[x2]
- ;; size=52 bbWeight=2 PerfScore 23.00
-G_M52227_IG11: ; bbWeight=8, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x2]
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x30]
cbz x1, G_M52227_IG13
- ;; size=20 bbWeight=8 PerfScore 104.00
+ ;; size=24 bbWeight=8 PerfScore 120.00
G_M52227_IG12: ; bbWeight=6.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
b G_M52227_IG14
@@ -359,7 +348,7 @@ G_M52227_IG29: ; bbWeight=0, funclet epilog, nogc, extend
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 800, prolog size 64, PerfScore 352.20, instruction count 200, allocated bytes for code 800 (MethodHash=24b133fc) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
+; Total bytes of code 776, prolog size 64, PerfScore 349.20, instruction count 194, allocated bytes for code 776 (MethodHash=24b133fc) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
; ============================================================
Unwind Info:
@@ -370,7 +359,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 172 (0x000ac) Actual length = 688 (0x0002b0)
+ Function Length : 166 (0x000a6) Actual length = 664 (0x000298)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-2.84%) : 67778.dasm - System.Collections.Immutable.ImmutableList1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer
1[System.__Canon]):int:this (FullOpts)
@@ -8,13 +8,13 @@
; 0 inlinees with PGO data; 2 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 9, 16 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
+; V00 this [V00,T06] ( 8, 15 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
; V01 arg1 [V01,T14] ( 3, 6 ) ref -> x22 class-hnd single-def <System.__Canon>
; V02 arg2 [V02,T07] ( 8, 14 ) int -> x19
; V03 arg3 [V03,T12] ( 6, 6 ) int -> x21 single-def
; V04 arg4 [V04,T11] ( 5, 8 ) ref -> x20 class-hnd <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V05 loc0 [V05 ] ( 5, 15 ) struct (56) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]>
-; V06 loc1 [V06,T29] ( 2, 2 ) int -> [fp+0x1C] do-not-enreg[Z] EH-live
+; V06 loc1 [V06,T27] ( 2, 2 ) int -> [fp+0x1C] do-not-enreg[Z] EH-live
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -28,31 +28,28 @@
;* V17 tmp10 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp13 [V20,T32] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V21 tmp14 [V21,T33] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V22 tmp15 [V22,T27] ( 2, 4 ) long -> x1 "argument with side effect"
+; V20 tmp13 [V20,T29] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V21 tmp14 [V21,T30] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V22 tmp15 [V22,T25] ( 2, 4 ) long -> x1 "argument with side effect"
; V23 tmp16 [V23,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V24 tmp17 [V24,T08] ( 2, 16 ) ref -> x2 "argument with side effect"
-; V25 PSPSym [V25,T31] ( 1, 1 ) long -> [fp+0x60] do-not-enreg[V] "PSPSym"
+; V25 PSPSym [V25,T28] ( 1, 1 ) long -> [fp+0x60] do-not-enreg[V] "PSPSym"
; V26 cse0 [V26,T15] ( 3, 6 ) long -> x24 "CSE - aggressive"
-; V27 cse1 [V27,T28] ( 3, 3 ) int -> x1 "CSE - aggressive"
+; V27 cse1 [V27,T26] ( 3, 3 ) int -> x1 "CSE - aggressive"
; V28 cse2 [V28,T10] ( 10, 12 ) long -> x23 multi-def "CSE - aggressive"
-; V29 rat0 [V29,T21] ( 3, 4.40) long -> x23 "Spilling to split statement for tree"
-; V30 rat1 [V30,T25] ( 3, 4 ) long -> x1 "runtime lookup"
+; V29 rat0 [V29,T20] ( 3, 4.40) long -> x23 "Spilling to split statement for tree"
+; V30 rat1 [V30,T23] ( 3, 4 ) long -> x1 "runtime lookup"
; V31 rat2 [V31,T16] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
-; V32 rat3 [V32,T22] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V33 rat4 [V33,T26] ( 3, 4 ) long -> x24 "runtime lookup"
+; V32 rat3 [V32,T21] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
+; V33 rat4 [V33,T24] ( 3, 4 ) long -> x24 "runtime lookup"
; V34 rat5 [V34,T17] ( 3, 5.60) long -> x24 "fgMakeTemp is creating a new local variable"
-; V35 rat6 [V35,T23] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V36 rat7 [V36,T30] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V37 rat8 [V37,T18] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V38 rat9 [V38,T05] ( 3, 22.40) long -> x25 "fgMakeTemp is creating a new local variable"
-; V39 rat10 [V39,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V40 rat11 [V40,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V41 rat12 [V41,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
-; V42 rat13 [V42,T19] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
-; V43 rat14 [V43,T24] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V44 rat15 [V44,T20] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
+; V35 rat6 [V35,T05] ( 3, 22.40) long -> x25 "fgMakeTemp is creating a new local variable"
+; V36 rat7 [V36,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V37 rat8 [V37,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V38 rat9 [V38,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+; V39 rat10 [V39,T18] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V40 rat11 [V40,T22] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V41 rat12 [V41,T19] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 88
@@ -160,18 +157,10 @@ G_M57893_IG09: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {
; gcrRegs -[x2]
; gcr arg pop 0
;; size=48 bbWeight=1 PerfScore 10.50
-G_M57893_IG10: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x10] // [V00 this]
- ; gcrRegs +[x2]
- ldr x0, [x2]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x10]
- cbnz x0, G_M57893_IG15
+G_M57893_IG10: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
b G_M57893_IG15
- ;; size=28 bbWeight=1 PerfScore 16.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M57893_IG11: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
mov x21, x24
ldr x0, [x23, #0x38]
ldr x0, [x0]
@@ -212,16 +201,16 @@ G_M57893_IG14: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {
; gcr arg pop 0
cbnz w0, G_M57893_IG20
add w19, w19, #1
+ ;; size=60 bbWeight=4 PerfScore 56.00
+G_M57893_IG15: ; bbWeight=8, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x2, [fp, #0x10] // [V00 this]
; gcrRegs +[x2]
- ;; size=64 bbWeight=4 PerfScore 64.00
-G_M57893_IG15: ; bbWeight=8, gcrefRegs=500004 {x2 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x0, [x2]
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x10]
cbz x1, G_M57893_IG17
- ;; size=20 bbWeight=8 PerfScore 104.00
+ ;; size=24 bbWeight=8 PerfScore 120.00
G_M57893_IG16: ; bbWeight=6.40, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
b G_M57893_IG18
@@ -386,7 +375,7 @@ G_M57893_IG38: ; bbWeight=1, funclet epilog, nogc, extend
ret lr
;; size=24 bbWeight=1 PerfScore 15.00
-; Total bytes of code 844, prolog size 72, PerfScore 448.10, instruction count 211, allocated bytes for code 844 (MethodHash=b3341dda) for method System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
+; Total bytes of code 820, prolog size 72, PerfScore 441.10, instruction count 205, allocated bytes for code 820 (MethodHash=b3341dda) for method System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -397,7 +386,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 183 (0x000b7) Actual length = 732 (0x0002dc)
+ Function Length : 177 (0x000b1) Actual length = 708 (0x0002c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 64987.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Canon,System.Canon]:CopyToObjects(System.Object[],int):this (FullOpts)
@@ -11,7 +11,7 @@
; V00 this [V00,T10] ( 4, 4 ) ref -> x20 this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T11] ( 3, 18 ) ref -> x21 class-hnd single-def <System.Object[]>
; V02 arg2 [V02,T06] ( 5, 50 ) int -> x19
-; V03 loc0 [V03,T17] ( 3, 6 ) ref -> x22 class-hnd exact single-def <<unknown class>>
+; V03 loc0 [V03,T15] ( 3, 6 ) ref -> x22 class-hnd exact single-def <<unknown class>>
; V04 loc1 [V04,T12] ( 5, 17 ) int -> x23
;* V05 loc2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Concurrent.ConcurrentDictionary`2+VolatileNode[System.__Canon,System.__Canon]>
; V06 loc3 [V06,T02] ( 7, 88 ) ref -> x26 class-hnd <<unknown class>>
@@ -22,20 +22,17 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V12 tmp5 [V12,T04] ( 2, 64 ) ref -> x27 class-hnd "Inlining Arg" <System.__Canon>
; V13 tmp6 [V13,T05] ( 2, 64 ) ref -> x28 class-hnd "Inlining Arg" <System.__Canon>
-; V14 tmp7 [V14,T16] ( 2, 8 ) ref -> x26 "field V05._node (fldOffset=0x0)" P-INDEP
+; V14 tmp7 [V14,T14] ( 2, 8 ) ref -> x26 "field V05._node (fldOffset=0x0)" P-INDEP
; V15 tmp8 [V15,T07] ( 2, 32 ) ref -> x27 "field V08.key (fldOffset=0x0)" P-INDEP
; V16 tmp9 [V16,T08] ( 2, 32 ) ref -> x28 "field V08.value (fldOffset=0x8)" P-INDEP
; V17 cse0 [V17,T13] ( 2, 17 ) long -> x25 hoist "CSE - aggressive"
-; V18 cse1 [V18,T18] ( 3, 6 ) int -> x24 "CSE - aggressive"
-; V19 rat0 [V19,T20] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V20 rat1 [V20,T21] ( 3, 4 ) long -> x25 "runtime lookup"
-; V21 rat2 [V21,T19] ( 3, 5.60) long -> x25 "fgMakeTemp is creating a new local variable"
-;* V22 rat3 [V22,T15] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V23 rat4 [V23,T22] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V24 rat5 [V24,T14] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V25 rat6 [V25,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V26 rat7 [V26,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V27 rat8 [V27,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V18 cse1 [V18,T16] ( 3, 6 ) int -> x24 "CSE - aggressive"
+; V19 rat0 [V19,T18] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V20 rat1 [V20,T19] ( 3, 4 ) long -> x25 "runtime lookup"
+; V21 rat2 [V21,T17] ( 3, 5.60) long -> x25 "fgMakeTemp is creating a new local variable"
+;* V22 rat3 [V22,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V23 rat4 [V23,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V24 rat5 [V24,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
+0 (0.00%) : 75427.dasm - System.Collections.Generic.HashSet1[System.ValueTuple
2[System.Canon,int]]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable1[System.ValueTuple
2[System.Canon,int]],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)
@@ -11,21 +11,21 @@
; V00 this [V00,T03] ( 11, 14 ) ref -> [fp-0x78] this class-hnd EH-live single-def <System.Collections.Generic.HashSet`1[System.ValueTuple`2[System.__Canon,int]]>
; V01 arg1 [V01,T15] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,int]]>
; V02 arg2 [V02,T10] ( 3, 4 ) ubyte -> x19 single-def
-; V03 loc0 [V03,T39] ( 3, 1.50) int -> x1
+; V03 loc0 [V03,T37] ( 3, 1.50) int -> x1
;* V04 loc1 [V04 ] ( 0, 0 ) int -> zero-ref
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
;* V06 loc3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op <System.Collections.Generic.BitHelper>
; V07 loc4 [V07,T16] ( 4, 5 ) int -> x21
; V08 loc5 [V08,T17] ( 4, 5 ) int -> x24
-; V09 loc6 [V09,T40] ( 3, 1.50) int -> x19
-; V10 loc7 [V10,T37] ( 6, 1.50) ref -> [fp-0x80] class-hnd EH-live spill-single-def <<unknown class>>
+; V09 loc6 [V09,T38] ( 3, 1.50) int -> x19
+; V10 loc7 [V10,T35] ( 6, 1.50) ref -> [fp-0x80] class-hnd EH-live spill-single-def <<unknown class>>
;* V11 loc8 [V11 ] ( 0, 0 ) struct (16) zero-ref <System.ValueTuple`2[System.__Canon,int]>
;* V12 loc9 [V12 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
; V13 loc10 [V13,T06] ( 7, 9 ) ref -> [fp-0x88] class-hnd EH-live spill-single-def <<unknown class>>
;* V14 loc11 [V14 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret <System.ValueTuple`2[System.__Canon,int]>
; V15 loc12 [V15,T04] ( 6, 16 ) int -> x25
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V17 tmp1 [V17,T41] ( 2, 1 ) int -> x1
+; V17 tmp1 [V17,T39] ( 2, 1 ) int -> x1
;* V18 tmp2 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V19 tmp3 [V19 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.BitHelper>
;* V20 tmp4 [V20 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
@@ -47,7 +47,7 @@
;* V36 tmp20 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V37 tmp21 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V38 tmp22 [V38,T20] ( 8, 4 ) int -> x22 "Inline return value spill temp"
-; V39 tmp23 [V39,T35] ( 2, 2 ) long -> x21 "Inlining Arg"
+; V39 tmp23 [V39,T33] ( 2, 2 ) long -> x21 "Inlining Arg"
; V40 tmp24 [V40,T25] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <int[]>
;* V41 tmp25 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V42 tmp26 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -57,7 +57,7 @@
; V46 tmp30 [V46,T21] ( 5, 4.00) long -> [fp-0x70] spill-single-def "Inlining Arg"
;* V47 tmp31 [V47 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V48 tmp32 [V48 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V49 tmp33 [V49,T36] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V49 tmp33 [V49,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V50 tmp34 [V50,T11] ( 3, 6 ) int -> x0 "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[int]>
; V52 tmp36 [V52,T12] ( 3, 6 ) int -> x27 "Inline stloc first use temp"
@@ -71,22 +71,22 @@
;* V60 tmp44 [V60 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
; V61 tmp45 [V61,T07] ( 2, 8 ) ref -> x0 "field V14.Item1 (fldOffset=0x0)" P-INDEP
; V62 tmp46 [V62,T08] ( 2, 8 ) int -> x2 "field V14.Item2 (fldOffset=0x8)" P-INDEP
-; V63 tmp47 [V63,T47] ( 4, 1.50) byref -> x21 single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+; V63 tmp47 [V63,T45] ( 4, 1.50) byref -> x21 single-def "field V18._reference (fldOffset=0x0)" P-INDEP
;* V64 tmp48 [V64 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
;* V65 tmp49 [V65 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
;* V66 tmp50 [V66 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;* V67 tmp51 [V67 ] ( 0, 0 ) ref -> zero-ref "field V26.Item1 (fldOffset=0x0)" P-DEP
;* V68 tmp52 [V68 ] ( 0, 0 ) int -> zero-ref "field V26.Item2 (fldOffset=0x8)" P-DEP
-; V69 tmp53 [V69,T43] ( 2, 1.50) int -> [fp-0x60] do-not-enreg[] "field V27.Item1 (fldOffset=0x0)" P-DEP
-; V70 tmp54 [V70,T44] ( 2, 1.50) int -> [fp-0x5C] do-not-enreg[] "field V27.Item2 (fldOffset=0x4)" P-DEP
+; V69 tmp53 [V69,T41] ( 2, 1.50) int -> [fp-0x60] do-not-enreg[] "field V27.Item1 (fldOffset=0x0)" P-DEP
+; V70 tmp54 [V70,T42] ( 2, 1.50) int -> [fp-0x5C] do-not-enreg[] "field V27.Item2 (fldOffset=0x4)" P-DEP
;* V71 tmp55 [V71 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP
;* V72 tmp56 [V72 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
;* V73 tmp57 [V73 ] ( 0, 0 ) ref -> zero-ref "field V34.Item1 (fldOffset=0x0)" P-DEP
;* V74 tmp58 [V74 ] ( 0, 0 ) int -> zero-ref "field V34.Item2 (fldOffset=0x8)" P-DEP
-; V75 tmp59 [V75,T45] ( 2, 1.50) int -> [fp-0x68] do-not-enreg[] "field V35.Item1 (fldOffset=0x0)" P-DEP
-; V76 tmp60 [V76,T46] ( 2, 1.50) int -> [fp-0x64] do-not-enreg[] "field V35.Item2 (fldOffset=0x4)" P-DEP
-; V77 tmp61 [V77,T48] ( 2, 1 ) byref -> x23 "field V41._reference (fldOffset=0x0)" P-INDEP
-; V78 tmp62 [V78,T49] ( 2, 1 ) int -> x22 "field V41._length (fldOffset=0x8)" P-INDEP
+; V75 tmp59 [V75,T43] ( 2, 1.50) int -> [fp-0x68] do-not-enreg[] "field V35.Item1 (fldOffset=0x0)" P-DEP
+; V76 tmp60 [V76,T44] ( 2, 1.50) int -> [fp-0x64] do-not-enreg[] "field V35.Item2 (fldOffset=0x4)" P-DEP
+; V77 tmp61 [V77,T46] ( 2, 1 ) byref -> x23 "field V41._reference (fldOffset=0x0)" P-INDEP
+; V78 tmp62 [V78,T47] ( 2, 1 ) int -> x22 "field V41._length (fldOffset=0x8)" P-INDEP
;* V79 tmp63 [V79 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
;* V80 tmp64 [V80 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
;* V81 tmp65 [V81 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP
@@ -99,25 +99,22 @@
;* V88 tmp72 [V88 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
; V89 tmp73 [V89,T18] ( 3, 4.50) byref -> x23 single-def "V06.[000..008)"
; V90 tmp74 [V90,T19] ( 3, 4.50) int -> x22 "V06.[008..012)"
-; V91 tmp75 [V91,T38] ( 3, 1.50) byref -> x23 "V21.[000..008)"
-; V92 tmp76 [V92,T42] ( 3, 1.50) int -> x22 "V21.[008..012)"
+; V91 tmp75 [V91,T36] ( 3, 1.50) byref -> x23 "V21.[000..008)"
+; V92 tmp76 [V92,T40] ( 3, 1.50) int -> x22 "V21.[008..012)"
; V93 GsCookie [V93 ] ( 1, 1 ) long -> [fp-0x90] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V94 PSPSym [V94,T51] ( 1, 1 ) long -> [fp-0x50] do-not-enreg[V] "PSPSym"
+; V94 PSPSym [V94,T48] ( 1, 1 ) long -> [fp-0x50] do-not-enreg[V] "PSPSym"
; V95 cse0 [V95,T13] ( 3, 6 ) int -> x27 "CSE - aggressive"
; V96 cse1 [V96,T14] ( 3, 6 ) int -> x26 "CSE - aggressive"
; V97 cse2 [V97,T09] ( 11, 7 ) long -> registers multi-def "CSE - aggressive"
-; V98 rat0 [V98,T31] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V98 rat0 [V98,T30] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V99 rat1 [V99,T27] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-; V100 rat2 [V100,T32] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V100 rat2 [V100,T31] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V101 rat3 [V101,T28] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-; V102 rat4 [V102,T33] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V102 rat4 [V102,T32] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V103 rat5 [V103,T29] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V104 rat6 [V104,T34] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V105 rat7 [V105,T50] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V106 rat8 [V106,T30] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V107 rat9 [V107,T02] ( 3, 17.60) long -> x1 "Spilling to split statement for tree"
-; V108 rat10 [V108,T01] ( 3, 22.40) long -> x11 "fgMakeTemp is creating a new local variable"
-; V109 rat11 [V109,T26] ( 3, 3 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V104 rat6 [V104,T02] ( 3, 17.60) long -> x1 "Spilling to split statement for tree"
+; V105 rat7 [V105,T01] ( 3, 22.40) long -> x11 "fgMakeTemp is creating a new local variable"
+; V106 rat8 [V106,T26] ( 3, 3 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 72
@@ -180,7 +177,7 @@ G_M10461_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
str x0, [fp, #-0x80] // [V10 loc7]
; GC ptr vars +{V10}
;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M10461_IG07: ; bbWeight=0.50, gcVars=0000002000000008 {V00 V10}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10461_IG07: ; bbWeight=0.50, gcVars=0000000800000008 {V00 V10}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
movz x21, #0xD1FFAB1E
movk x21, #0xD1FFAB1E LSL #16
movk x21, #1 LSL #32
@@ -556,7 +553,7 @@ G_M10461_IG40: ; bbWeight=0, gcVars=0000000000000008 {V00}, gcrefRegs=000
; gcr arg pop 0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M10461_IG41: ; bbWeight=0, gcVars=0000002000000008 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M10461_IG41: ; bbWeight=0, gcVars=0000000800000008 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V10}
sub sp, sp, #96
stp x19, x20, [sp, #0x08]
@@ -568,7 +565,7 @@ G_M10461_IG41: ; bbWeight=0, gcVars=0000002000000008 {V00 V10}, gcrefRegs
add x3, fp, #16
str x3, [sp]
;; size=36 bbWeight=0 PerfScore 0.00
-G_M10461_IG42: ; bbWeight=0, gcVars=0000002000000008 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10461_IG42: ; bbWeight=0, gcVars=0000000800000008 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [fp, #-0x80] // [V10 loc7]
; gcrRegs +[x0]
cbz x0, G_M10461_IG43
+0 (0.00%) : 4944.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)
@@ -23,11 +23,11 @@
; V12 loc9 [V12,T14] ( 4, 14 ) byref -> x27
; V13 loc10 [V13,T17] ( 6, 13.50) int -> x26
; V14 loc11 [V14,T15] ( 4, 14 ) byref -> x27
-; V15 loc12 [V15,T66] ( 3, 1.50) int -> x22 single-def
+; V15 loc12 [V15,T62] ( 3, 1.50) int -> x22 single-def
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp2 [V18,T31] ( 4, 3 ) long -> x11 "VirtualCall with runtime lookup"
-; V19 tmp3 [V19,T67] ( 3, 1.50) int -> x24
+; V19 tmp3 [V19,T63] ( 3, 1.50) int -> x24
;* V20 tmp4 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -35,8 +35,8 @@
;* V24 tmp8 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp10 [V26,T28] ( 4, 4 ) byref -> x0 single-def "dup spill"
-; V27 tmp11 [V27,T61] ( 3, 2 ) long -> x1 "spilling helperCall"
-; V28 tmp12 [V28,T68] ( 3, 1.50) int -> x24
+; V27 tmp11 [V27,T57] ( 3, 2 ) long -> x1 "spilling helperCall"
+; V28 tmp12 [V28,T64] ( 3, 1.50) int -> x24
;* V29 tmp13 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp14 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -48,9 +48,9 @@
; V37 tmp21 [V37,T32] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V38 tmp22 [V38,T33] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp24 [V40,T81] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp24 [V40,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp26 [V42,T82] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp26 [V42,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V43 tmp27 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -58,9 +58,9 @@
; V47 tmp31 [V47,T34] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V48 tmp32 [V48,T35] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V50 tmp34 [V50,T83] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V50 tmp34 [V50,T77] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V52 tmp36 [V52,T84] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V52 tmp36 [V52,T78] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -68,63 +68,57 @@
; V57 tmp41 [V57,T36] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V58 tmp42 [V58,T37] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V60 tmp44 [V60,T85] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V60 tmp44 [V60,T79] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V62 tmp46 [V62,T86] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V62 tmp46 [V62,T80] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V63 tmp47 [V63 ] ( 6, 10.50) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64 ] ( 9, 19 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V65 tmp49 [V65,T72] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
-; V66 tmp50 [V66,T75] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V67 tmp51 [V67,T73] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
-; V68 tmp52 [V68,T76] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T74] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
-; V70 tmp54 [V70,T77] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
+; V65 tmp49 [V65,T68] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
+; V66 tmp50 [V66,T71] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V67 tmp51 [V67,T69] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
+; V68 tmp52 [V68,T72] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T70] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
+; V70 tmp54 [V70,T73] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
; V71 tmp55 [V71,T41] ( 3, 3 ) int -> x2 "index expr"
; V72 tmp56 [V72,T42] ( 3, 3 ) int -> x1 "index expr"
; V73 tmp57 [V73,T43] ( 3, 3 ) int -> x2 "index expr"
; V74 tmp58 [V74,T44] ( 3, 3 ) int -> x1 "index expr"
; V75 tmp59 [V75,T12] ( 2, 16 ) long -> x1 "argument with side effect"
; V76 tmp60 [V76,T13] ( 2, 16 ) long -> x1 "argument with side effect"
-; V77 tmp61 [V77,T64] ( 2, 2 ) int -> x1 "argument with side effect"
+; V77 tmp61 [V77,T60] ( 2, 2 ) int -> x1 "argument with side effect"
; V78 tmp62 [V78,T45] ( 3, 3 ) int -> x2 "index expr"
; V79 tmp63 [V79,T46] ( 3, 3 ) int -> x1 "index expr"
-; V80 tmp64 [V80,T65] ( 2, 2 ) long -> x1 "argument with side effect"
-; V81 cse0 [V81,T69] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V82 cse1 [V82,T70] ( 3, 1.50) int -> x26 "CSE - moderate"
-; V83 cse2 [V83,T71] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V84 rat0 [V84,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V85 rat1 [V85,T62] ( 3, 2 ) long -> x1 "runtime lookup"
+; V80 tmp64 [V80,T61] ( 2, 2 ) long -> x1 "argument with side effect"
+; V81 cse0 [V81,T65] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V82 cse1 [V82,T66] ( 3, 1.50) int -> x26 "CSE - moderate"
+; V83 cse2 [V83,T67] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V84 rat0 [V84,T52] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V85 rat1 [V85,T58] ( 3, 2 ) long -> x1 "runtime lookup"
; V86 rat2 [V86,T47] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V87 rat3 [V87,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V88 rat4 [V88,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V89 rat5 [V89,T48] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V90 rat6 [V90,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V91 rat7 [V91,T10] ( 3, 16 ) long -> x1 "runtime lookup"
-; V92 rat8 [V92,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V93 rat9 [V93,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V94 rat10 [V94,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V95 rat11 [V95,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V96 rat12 [V96,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V97 rat13 [V97,T49] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V98 rat14 [V98,T57] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V99 rat15 [V99,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V100 rat16 [V100,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V101 rat17 [V101,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V102 rat18 [V102,T11] ( 3, 16 ) long -> x1 "runtime lookup"
-; V103 rat19 [V103,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-; V104 rat20 [V104,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
-; V105 rat21 [V105,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V106 rat22 [V106,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V107 rat23 [V107,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V108 rat24 [V108,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V109 rat25 [V109,T58] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V87 rat3 [V87,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V88 rat4 [V88,T10] ( 3, 16 ) long -> x1 "runtime lookup"
+; V89 rat5 [V89,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V90 rat6 [V90,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V91 rat7 [V91,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V92 rat8 [V92,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V93 rat9 [V93,T53] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V94 rat10 [V94,T48] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
+; V95 rat11 [V95,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V96 rat12 [V96,T11] ( 3, 16 ) long -> x1 "runtime lookup"
+; V97 rat13 [V97,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+; V98 rat14 [V98,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
+; V99 rat15 [V99,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+;* V100 rat16 [V100,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V101 rat17 [V101,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V102 rat18 [V102,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V103 rat19 [V103,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V104 rat20 [V104,T49] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V105 rat21 [V105,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V106 rat22 [V106,T74] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V107 rat23 [V107,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V108 rat24 [V108,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V109 rat25 [V109,T59] ( 3, 2 ) long -> x1 "runtime lookup"
; V110 rat26 [V110,T51] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V111 rat27 [V111,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V112 rat28 [V112,T80] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V113 rat29 [V113,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V114 rat30 [V114,T60] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V115 rat31 [V115,T63] ( 3, 2 ) long -> x1 "runtime lookup"
-; V116 rat32 [V116,T53] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 24
realworld.run.osx.arm64.checked.mch
-20 (-4.46%) : 23075.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary
2[System.Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.Canon]):this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 17 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
+; V00 this [V00,T04] ( 7, 16 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V01 arg1 [V01,T15] ( 4, 4 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
-; V02 arg2 [V02,T18] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V02 arg2 [V02,T17] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V03 loc0 [V03 ] ( 3, 11 ) struct (24) [fp+0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SmallDictionary`2+Enumerator[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V04 loc1 [V04 ] ( 5, 10 ) struct (32) [fp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,34 +27,31 @@
; V16 tmp11 [V16 ] ( 3, 11 ) ref -> [fp+0x68] do-not-enreg[X] addr-exposed "field V03._stack (fldOffset=0x0)" P-DEP
; V17 tmp12 [V17 ] ( 3, 11 ) ref -> [fp+0x70] do-not-enreg[X] addr-exposed "field V03._next (fldOffset=0x8)" P-DEP
; V18 tmp13 [V18 ] ( 3, 11 ) ref -> [fp+0x78] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x10)" P-DEP
-; V19 tmp14 [V19,T23] ( 2, 4 ) ref -> x23 "field V11.DefaultType (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T24] ( 2, 4 ) ref -> x24 "field V11._extensions (fldOffset=0x8)" P-INDEP
-; V21 tmp16 [V21,T25] ( 2, 4 ) ubyte -> x25 "field V11.NullableAnnotation (fldOffset=0x10)" P-INDEP
+; V19 tmp14 [V19,T21] ( 2, 4 ) ref -> x23 "field V11.DefaultType (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T22] ( 2, 4 ) ref -> x24 "field V11._extensions (fldOffset=0x8)" P-INDEP
+; V21 tmp16 [V21,T23] ( 2, 4 ) ubyte -> x25 "field V11.NullableAnnotation (fldOffset=0x10)" P-INDEP
; V22 tmp17 [V22 ] ( 2, 4 ) ref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V12._stack (fldOffset=0x0)" P-DEP
; V23 tmp18 [V23 ] ( 2, 4 ) ref -> [fp+0x38] do-not-enreg[X] addr-exposed "field V12._next (fldOffset=0x8)" P-DEP
; V24 tmp19 [V24 ] ( 2, 4 ) ref -> [fp+0x40] do-not-enreg[X] addr-exposed "field V12._current (fldOffset=0x10)" P-DEP
-; V25 tmp20 [V25,T26] ( 2, 4 ) long -> x1 "argument with side effect"
+; V25 tmp20 [V25,T24] ( 2, 4 ) long -> x1 "argument with side effect"
; V26 tmp21 [V26,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V27 tmp22 [V27,T12] ( 2, 8 ) long -> x1 "argument with side effect"
; V28 tmp23 [V28 ] ( 4, 16 ) struct (24) [fp+0x18] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
; V29 tmp24 [V29,T13] ( 2, 8 ) int -> x1 "argument with side effect"
; V30 tmp25 [V30,T10] ( 2, 8 ) ref -> x0 "argument with side effect"
; V31 tmp26 [V31,T11] ( 2, 8 ) ref -> x2 "argument with side effect"
-; V32 cse0 [V32,T21] ( 3, 4 ) long -> x22 "CSE - aggressive"
-;* V33 cse1 [V33,T28] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V32 cse0 [V32,T19] ( 3, 4 ) long -> x22 "CSE - aggressive"
+;* V33 cse1 [V33,T25] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; V34 cse2 [V34,T14] ( 4, 4.40) long -> x21 "CSE - aggressive"
-; V35 rat0 [V35,T19] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V36 rat1 [V36,T22] ( 3, 4 ) long -> x22 "runtime lookup"
+; V35 rat0 [V35,T18] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V36 rat1 [V36,T20] ( 3, 4 ) long -> x22 "runtime lookup"
; V37 rat2 [V37,T16] ( 3, 5.60) long -> x22 "fgMakeTemp is creating a new local variable"
-; V38 rat3 [V38,T20] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V39 rat4 [V39,T27] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V40 rat5 [V40,T17] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V41 rat6 [V41,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V42 rat7 [V42,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V43 rat8 [V43,T08] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-; V44 rat9 [V44,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V45 rat10 [V45,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V46 rat11 [V46,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V38 rat3 [V38,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V39 rat4 [V39,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V40 rat5 [V40,T08] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+; V41 rat6 [V41,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V42 rat7 [V42,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V43 rat8 [V43,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 120
@@ -122,14 +119,9 @@ G_M40847_IG06: ; bbWeight=1, nogc, extend
ldr x0, [fp, #0x40]
str x0, [fp, #0x78]
;; size=16 bbWeight=1 PerfScore 7.00
-G_M40847_IG07: ; bbWeight=1, isz, extend
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x28]
- cbnz x0, G_M40847_IG12
+G_M40847_IG07: ; bbWeight=1, extend
b G_M40847_IG12
- ;; size=24 bbWeight=1 PerfScore 14.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M40847_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x22
add x8, fp, #72 // [V04 loc1]
@@ -220,7 +212,7 @@ G_M40847_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ret lr
;; size=24 bbWeight=1 PerfScore 7.00
-; Total bytes of code 448, prolog size 52, PerfScore 325.60, instruction count 112, allocated bytes for code 448 (MethodHash=69926070) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 428, prolog size 52, PerfScore 312.60, instruction count 107, allocated bytes for code 428 (MethodHash=69926070) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -231,7 +223,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 112 (0x00070) Actual length = 448 (0x0001c0)
+ Function Length : 107 (0x0006b) Actual length = 428 (0x0001ac)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-2.80%) : 23155.dasm - System.Collections.Immutable.ImmutableList1+Node[System.Collections.Generic.KeyValuePair
2[System.Canon,System.Canon]]:IndexOf(System.Collections.Generic.KeyValuePair2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer
1[System.Collections.Generic.KeyValuePair`2[System.Canon,System.Canon]]):int:this (FullOpts)
@@ -8,13 +8,13 @@
; 0 inlinees with PGO data; 2 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 9, 16 ) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
+; V00 this [V00,T06] ( 8, 15 ) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]>
; V02 arg2 [V02,T07] ( 8, 14 ) int -> x19
; V03 arg3 [V03,T11] ( 6, 6 ) int -> x21 single-def
; V04 arg4 [V04,T10] ( 5, 8 ) ref -> x20 class-hnd <System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
; V05 loc0 [V05 ] ( 5, 15 ) struct (56) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
-; V06 loc1 [V06,T31] ( 2, 2 ) int -> [fp+0x24] do-not-enreg[Z] EH-live
+; V06 loc1 [V06,T29] ( 2, 2 ) int -> [fp+0x24] do-not-enreg[Z] EH-live
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -33,30 +33,27 @@
; V22 tmp15 [V22,T16] ( 2, 5 ) ref -> x23 single-def "field V01.value (fldOffset=0x8)" P-INDEP
; V23 tmp16 [V23,T13] ( 2, 8 ) ref -> x3 "field V13.key (fldOffset=0x0)" P-INDEP
; V24 tmp17 [V24,T14] ( 2, 8 ) ref -> x4 "field V13.value (fldOffset=0x8)" P-INDEP
-; V25 tmp18 [V25,T34] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V26 tmp19 [V26,T35] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V27 tmp20 [V27,T29] ( 2, 4 ) long -> x1 "argument with side effect"
+; V25 tmp18 [V25,T31] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V26 tmp19 [V26,T32] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V27 tmp20 [V27,T27] ( 2, 4 ) long -> x1 "argument with side effect"
; V28 tmp21 [V28,T03] ( 2, 32 ) long -> x1 "argument with side effect"
-; V29 PSPSym [V29,T33] ( 1, 1 ) long -> [fp+0x68] do-not-enreg[V] "PSPSym"
+; V29 PSPSym [V29,T30] ( 1, 1 ) long -> [fp+0x68] do-not-enreg[V] "PSPSym"
; V30 cse0 [V30,T17] ( 3, 6 ) long -> x25 "CSE - aggressive"
-; V31 cse1 [V31,T30] ( 3, 3 ) int -> x1 "CSE - aggressive"
+; V31 cse1 [V31,T28] ( 3, 3 ) int -> x1 "CSE - aggressive"
; V32 cse2 [V32,T09] ( 10, 12 ) long -> x24 multi-def "CSE - aggressive"
-; V33 rat0 [V33,T23] ( 3, 4.40) long -> x24 "Spilling to split statement for tree"
-; V34 rat1 [V34,T27] ( 3, 4 ) long -> x1 "runtime lookup"
+; V33 rat0 [V33,T22] ( 3, 4.40) long -> x24 "Spilling to split statement for tree"
+; V34 rat1 [V34,T25] ( 3, 4 ) long -> x1 "runtime lookup"
; V35 rat2 [V35,T18] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
-; V36 rat3 [V36,T24] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V37 rat4 [V37,T28] ( 3, 4 ) long -> x25 "runtime lookup"
+; V36 rat3 [V36,T23] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
+; V37 rat4 [V37,T26] ( 3, 4 ) long -> x25 "runtime lookup"
; V38 rat5 [V38,T19] ( 3, 5.60) long -> x25 "fgMakeTemp is creating a new local variable"
-; V39 rat6 [V39,T25] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V40 rat7 [V40,T32] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V41 rat8 [V41,T20] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V42 rat9 [V42,T05] ( 3, 22.40) long -> x26 "fgMakeTemp is creating a new local variable"
-; V43 rat10 [V43,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V44 rat11 [V44,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V45 rat12 [V45,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
-; V46 rat13 [V46,T21] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
-; V47 rat14 [V47,T26] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V48 rat15 [V48,T22] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
+; V39 rat6 [V39,T05] ( 3, 22.40) long -> x26 "fgMakeTemp is creating a new local variable"
+; V40 rat7 [V40,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V41 rat8 [V41,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V42 rat9 [V42,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+; V43 rat10 [V43,T20] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V44 rat11 [V44,T24] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V45 rat12 [V45,T21] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 96
@@ -166,18 +163,10 @@ G_M34258_IG09: ; bbWeight=1, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=00
; gcrRegs -[x2]
; gcr arg pop 0
;; size=48 bbWeight=1 PerfScore 10.50
-G_M34258_IG10: ; bbWeight=1, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x2]
- ldr x0, [x2]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x10]
- cbnz x0, G_M34258_IG15
+G_M34258_IG10: ; bbWeight=1, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref
b G_M34258_IG15
- ;; size=28 bbWeight=1 PerfScore 16.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M34258_IG11: ; bbWeight=4, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
mov x21, x25
ldr x0, [x24, #0x38]
ldr x0, [x0]
@@ -221,16 +210,16 @@ G_M34258_IG14: ; bbWeight=4, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=00
; gcr arg pop 0
cbnz w0, G_M34258_IG20
add w19, w19, #1
+ ;; size=68 bbWeight=4 PerfScore 60.00
+G_M34258_IG15: ; bbWeight=8, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
ldr x2, [fp, #0x18] // [V00 this]
; gcrRegs +[x2]
- ;; size=72 bbWeight=4 PerfScore 68.00
-G_M34258_IG15: ; bbWeight=8, gcrefRegs=D00004 {x2 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
ldr x0, [x2]
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x10]
cbz x1, G_M34258_IG17
- ;; size=20 bbWeight=8 PerfScore 104.00
+ ;; size=24 bbWeight=8 PerfScore 120.00
G_M34258_IG16: ; bbWeight=6.40, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
b G_M34258_IG18
@@ -395,7 +384,7 @@ G_M34258_IG38: ; bbWeight=1, funclet epilog, nogc, extend
ret lr
;; size=24 bbWeight=1 PerfScore 16.00
-; Total bytes of code 856, prolog size 76, PerfScore 451.60, instruction count 214, allocated bytes for code 856 (MethodHash=62fd7a2d) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
+; Total bytes of code 832, prolog size 76, PerfScore 444.60, instruction count 208, allocated bytes for code 832 (MethodHash=62fd7a2d) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -406,7 +395,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 186 (0x000ba) Actual length = 744 (0x0002e8)
+ Function Length : 180 (0x000b4) Actual length = 720 (0x0002d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-0.14%) : 13443.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
@@ -288,7 +288,6 @@
; V277 cse13 [V277,T204] ( 3, 0.12) ref -> x1 "CSE - conservative"
; V278 cse14 [V278,T205] ( 3, 0.12) ref -> x1 "CSE - conservative"
; V279 cse15 [V279,T19] ( 8, 16 ) byref -> [fp+0x18] multi-def "CSE - moderate"
-; TEMP_01 byref -> [fp+0x10]
;
; Lcl frame size = 352
@@ -300,12 +299,11 @@ G_M30044_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x25, x26, [sp, #0xD1FFAB1E]
stp x27, x28, [sp, #0xD1FFAB1E]
mov fp, sp
- str xzr, [fp, #0x10] // [TEMP_01]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
; gcrRegs +[x20]
- ;; size=40 bbWeight=1 PerfScore 8.50
+ ;; size=36 bbWeight=1 PerfScore 7.50
G_M30044_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x21, [x19, #0x40]
; gcrRegs +[x21]
@@ -1784,11 +1782,6 @@ G_M30044_IG50: ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
ldr x1, [x1, x4]
; gcrRegs +[x1]
; byrRegs -[x1]
- ldr x5, [fp, #0xE8] // [V22 loc20]
- ; gcrRegs +[x5]
- add x14, x5, #8
- ; byrRegs +[x14]
- str x14, [fp, #0x10] // [TEMP_01]
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
@@ -1796,13 +1789,12 @@ G_M30044_IG50: ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
- movz x6, #0xD1FFAB1E // code for <unknown method>
- movk x6, #0xD1FFAB1E LSL #16
- movk x6, #1 LSL #32
- ldr x6, [x6]
- blr x6
- ; gcrRegs -[x1 x5] +[x0]
- ; byrRegs -[x14]
+ movz x5, #0xD1FFAB1E // code for <unknown method>
+ movk x5, #0xD1FFAB1E LSL #16
+ movk x5, #1 LSL #32
+ ldr x5, [x5]
+ blr x5
+ ; gcrRegs -[x1] +[x0]
mov x1, x0
; gcrRegs +[x1]
ldr x0, [fp, #0x40] // [V131 tmp97]
@@ -1813,15 +1805,18 @@ G_M30044_IG50: ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
; GC ptr vars -{V131}
blr x2
; gcrRegs -[x1]
- ldr x14, [fp, #0x10] // [TEMP_01]
+ ldr x2, [fp, #0xE8] // [V22 loc20]
+ ; gcrRegs +[x2]
+ add x14, x2, #8
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
+ ; GC ptr vars -{V22}
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ldr x2, [fp, #0xE8] // [V22 loc20]
- ; gcrRegs +[x2]
+ str x2, [fp, #0xE8] // [V22 loc20]
+ ; GC ptr vars +{V22}
ldr x1, [x2, #0x08]
; gcrRegs +[x1]
mov x15, x1
@@ -1847,7 +1842,7 @@ G_M30044_IG50: ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
ldr w14, [x6, #0x08]
cmp w14, w15
bls G_M30044_IG52
- ;; size=264 bbWeight=0.04 PerfScore 3.16
+ ;; size=256 bbWeight=0.04 PerfScore 3.00
G_M30044_IG51: ; bbWeight=0.02, gcrefRegs=1FF80042 {x1 x6 x19 x20 x21 x22 x23 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, byref
add w14, w15, #1
str w14, [x27, #0x10]
@@ -3725,7 +3720,7 @@ G_M30044_IG114: ; bbWeight=0, gcrefRegs=1BF80000 {x19 x20 x21 x22 x23 x24
b G_M30044_IG100
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 8856, prolog size 32, PerfScore 2225.47, instruction count 2214, allocated bytes for code 8856 (MethodHash=2a788aa3) for method Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
+; Total bytes of code 8844, prolog size 28, PerfScore 2224.31, instruction count 2211, allocated bytes for code 8844 (MethodHash=2a788aa3) for method Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
; ============================================================
Unwind Info:
@@ -3736,7 +3731,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 2214 (0x008a6) Actual length = 8856 (0x002298)
+ Function Length : 2211 (0x008a3) Actual length = 8844 (0x00228c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-0.10%) : 30385.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
@@ -1681,38 +1681,36 @@ G_M4474_IG49: ; bbWeight=0.04, gcVars=00000000000000000000000000000000000
; byrRegs -[x4]
str x0, [fp, #0x90] // [V18 loc13]
; GC ptr vars +{V18}
- ldr x2, [fp, #0x98] // [V17 loc12]
+ ldr x2, [fp, #0xA8] // [V10 loc5]
; gcrRegs +[x2]
- add x14, x2, #8
- ; byrRegs +[x14]
- str x14, [fp, #0x18] // [TEMP_01]
- ldr x3, [fp, #0xA8] // [V10 loc5]
- ; gcrRegs +[x3]
- ldr w0, [x3, #0x08]
+ ldr w0, [x2, #0x08]
; gcrRegs -[x0]
- ldr w4, [fp, #0xEC] // [V16 loc11]
- cmp w4, w0
+ ldr w3, [fp, #0xEC] // [V16 loc11]
+ cmp w3, w0
bhs G_M4474_IG100
- ldr x5, [fp, #0x20] // [V229 cse10]
- ; byrRegs +[x5]
- ldr x6, [fp, #0xB0] // [V226 cse7]
- ldr x0, [x5, x6]
+ ldr x4, [fp, #0x20] // [V229 cse10]
+ ; byrRegs +[x4]
+ ldr x5, [fp, #0xB0] // [V226 cse7]
+ ldr x0, [x4, x5]
; gcrRegs +[x0]
- ldr x7, [x0]
- ldr x7, [x7, #0x48]
- ldr x7, [x7, #0x30]
- blr x7
- ; gcrRegs -[x2-x3]
- ; byrRegs -[x5 x14]
- ldr x14, [fp, #0x18] // [TEMP_01]
+ ldr x6, [x0]
+ ldr x6, [x6, #0x48]
+ ldr x6, [x6, #0x30]
+ blr x6
+ ; gcrRegs -[x2]
+ ; byrRegs -[x4]
+ ldr x1, [fp, #0x98] // [V17 loc12]
+ ; gcrRegs +[x1]
+ add x14, x1, #8
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
+ ; GC ptr vars -{V17}
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ldr x1, [fp, #0x98] // [V17 loc12]
- ; gcrRegs +[x1]
+ str x1, [fp, #0x98] // [V17 loc12]
+ ; GC ptr vars +{V17}
ldr x0, [x1, #0x08]
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for System.String:IsNullOrWhiteSpace(System.String):ubyte
@@ -1722,7 +1720,7 @@ G_M4474_IG49: ; bbWeight=0.04, gcVars=00000000000000000000000000000000000
blr x2
; gcrRegs -[x0-x1]
cbz w0, G_M4474_IG56
- ;; size=200 bbWeight=0.04 PerfScore 3.06
+ ;; size=192 bbWeight=0.04 PerfScore 2.90
G_M4474_IG50: ; bbWeight=0.02, gcrefRegs=EA80000 {x19 x21 x23 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E // code for <unknown method>
movk x0, #0xD1FFAB1E LSL #16
@@ -3235,7 +3233,7 @@ G_M4474_IG100: ; bbWeight=0, gcVars=0000000000000000000000000000000000000
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 7784, prolog size 32, PerfScore 2093.60, instruction count 1946, allocated bytes for code 7784 (MethodHash=ac86ee85) for method System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
+; Total bytes of code 7776, prolog size 32, PerfScore 2093.44, instruction count 1944, allocated bytes for code 7776 (MethodHash=ac86ee85) for method System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
; ============================================================
Unwind Info:
@@ -3246,7 +3244,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 1946 (0x0079a) Actual length = 7784 (0x001e68)
+ Function Length : 1944 (0x00798) Actual length = 7776 (0x001e60)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 16246.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)
@@ -23,11 +23,11 @@
; V12 loc9 [V12,T14] ( 4, 14 ) byref -> x27
; V13 loc10 [V13,T17] ( 6, 13.50) int -> x26
; V14 loc11 [V14,T15] ( 4, 14 ) byref -> x27
-; V15 loc12 [V15,T66] ( 3, 1.50) int -> x22 single-def
+; V15 loc12 [V15,T62] ( 3, 1.50) int -> x22 single-def
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp2 [V18,T31] ( 4, 3 ) long -> x11 "VirtualCall with runtime lookup"
-; V19 tmp3 [V19,T67] ( 3, 1.50) int -> x24
+; V19 tmp3 [V19,T63] ( 3, 1.50) int -> x24
;* V20 tmp4 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -35,8 +35,8 @@
;* V24 tmp8 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp10 [V26,T28] ( 4, 4 ) byref -> x0 single-def "dup spill"
-; V27 tmp11 [V27,T61] ( 3, 2 ) long -> x1 "spilling helperCall"
-; V28 tmp12 [V28,T68] ( 3, 1.50) int -> x24
+; V27 tmp11 [V27,T57] ( 3, 2 ) long -> x1 "spilling helperCall"
+; V28 tmp12 [V28,T64] ( 3, 1.50) int -> x24
;* V29 tmp13 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp14 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -48,9 +48,9 @@
; V37 tmp21 [V37,T32] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V38 tmp22 [V38,T33] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp24 [V40,T81] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp24 [V40,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp26 [V42,T82] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp26 [V42,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V43 tmp27 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -58,9 +58,9 @@
; V47 tmp31 [V47,T34] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V48 tmp32 [V48,T35] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V50 tmp34 [V50,T83] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V50 tmp34 [V50,T77] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V52 tmp36 [V52,T84] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V52 tmp36 [V52,T78] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -68,63 +68,57 @@
; V57 tmp41 [V57,T36] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V58 tmp42 [V58,T37] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V60 tmp44 [V60,T85] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V60 tmp44 [V60,T79] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V62 tmp46 [V62,T86] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V62 tmp46 [V62,T80] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V63 tmp47 [V63 ] ( 6, 10.50) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64 ] ( 9, 19 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V65 tmp49 [V65,T72] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
-; V66 tmp50 [V66,T75] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V67 tmp51 [V67,T73] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
-; V68 tmp52 [V68,T76] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T74] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
-; V70 tmp54 [V70,T77] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
+; V65 tmp49 [V65,T68] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
+; V66 tmp50 [V66,T71] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V67 tmp51 [V67,T69] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
+; V68 tmp52 [V68,T72] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T70] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
+; V70 tmp54 [V70,T73] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
; V71 tmp55 [V71,T41] ( 3, 3 ) int -> x2 "index expr"
; V72 tmp56 [V72,T42] ( 3, 3 ) int -> x1 "index expr"
; V73 tmp57 [V73,T43] ( 3, 3 ) int -> x2 "index expr"
; V74 tmp58 [V74,T44] ( 3, 3 ) int -> x1 "index expr"
; V75 tmp59 [V75,T12] ( 2, 16 ) long -> x1 "argument with side effect"
; V76 tmp60 [V76,T13] ( 2, 16 ) long -> x1 "argument with side effect"
-; V77 tmp61 [V77,T64] ( 2, 2 ) int -> x1 "argument with side effect"
+; V77 tmp61 [V77,T60] ( 2, 2 ) int -> x1 "argument with side effect"
; V78 tmp62 [V78,T45] ( 3, 3 ) int -> x2 "index expr"
; V79 tmp63 [V79,T46] ( 3, 3 ) int -> x1 "index expr"
-; V80 tmp64 [V80,T65] ( 2, 2 ) long -> x1 "argument with side effect"
-; V81 cse0 [V81,T69] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V82 cse1 [V82,T70] ( 3, 1.50) int -> x26 "CSE - moderate"
-; V83 cse2 [V83,T71] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V84 rat0 [V84,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V85 rat1 [V85,T62] ( 3, 2 ) long -> x1 "runtime lookup"
+; V80 tmp64 [V80,T61] ( 2, 2 ) long -> x1 "argument with side effect"
+; V81 cse0 [V81,T65] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V82 cse1 [V82,T66] ( 3, 1.50) int -> x26 "CSE - moderate"
+; V83 cse2 [V83,T67] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V84 rat0 [V84,T52] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V85 rat1 [V85,T58] ( 3, 2 ) long -> x1 "runtime lookup"
; V86 rat2 [V86,T47] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V87 rat3 [V87,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V88 rat4 [V88,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V89 rat5 [V89,T48] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V90 rat6 [V90,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V91 rat7 [V91,T10] ( 3, 16 ) long -> x1 "runtime lookup"
-; V92 rat8 [V92,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V93 rat9 [V93,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V94 rat10 [V94,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V95 rat11 [V95,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V96 rat12 [V96,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V97 rat13 [V97,T49] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V98 rat14 [V98,T57] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V99 rat15 [V99,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V100 rat16 [V100,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V101 rat17 [V101,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V102 rat18 [V102,T11] ( 3, 16 ) long -> x1 "runtime lookup"
-; V103 rat19 [V103,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-; V104 rat20 [V104,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
-; V105 rat21 [V105,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V106 rat22 [V106,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V107 rat23 [V107,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V108 rat24 [V108,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V109 rat25 [V109,T58] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V87 rat3 [V87,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V88 rat4 [V88,T10] ( 3, 16 ) long -> x1 "runtime lookup"
+; V89 rat5 [V89,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V90 rat6 [V90,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V91 rat7 [V91,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V92 rat8 [V92,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V93 rat9 [V93,T53] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V94 rat10 [V94,T48] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
+; V95 rat11 [V95,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V96 rat12 [V96,T11] ( 3, 16 ) long -> x1 "runtime lookup"
+; V97 rat13 [V97,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+; V98 rat14 [V98,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
+; V99 rat15 [V99,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+;* V100 rat16 [V100,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V101 rat17 [V101,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V102 rat18 [V102,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V103 rat19 [V103,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V104 rat20 [V104,T49] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V105 rat21 [V105,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V106 rat22 [V106,T74] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V107 rat23 [V107,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V108 rat24 [V108,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V109 rat25 [V109,T59] ( 3, 2 ) long -> x1 "runtime lookup"
; V110 rat26 [V110,T51] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V111 rat27 [V111,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V112 rat28 [V112,T80] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V113 rat29 [V113,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V114 rat30 [V114,T60] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V115 rat31 [V115,T63] ( 3, 2 ) long -> x1 "runtime lookup"
-; V116 rat32 [V116,T53] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 24
+0 (0.00%) : 16407.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable
1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)
@@ -16,7 +16,7 @@
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
; V06 loc3 [V06,T15] ( 4, 5 ) int -> x21
; V07 loc4 [V07,T16] ( 4, 5 ) int -> x24
-; V08 loc5 [V08,T38] ( 3, 1.50) int -> x19
+; V08 loc5 [V08,T36] ( 3, 1.50) int -> x19
; V09 loc6 [V09,T07] ( 13, 11.50) ref -> [fp-0x68] do-not-enreg[M] class-hnd EH-live <<unknown class>>
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
; V11 loc8 [V11,T05] ( 5, 14 ) int -> x0
@@ -39,7 +39,7 @@
; V28 tmp16 [V28 ] ( 3, 3 ) struct ( 8) [fp-0x50] do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
; V29 tmp17 [V29,T19] ( 8, 4 ) int -> x22 "Inline return value spill temp"
; V30 tmp18 [V30,T24] ( 3, 3 ) int -> x1 "Inlining Arg"
-; V31 tmp19 [V31,T35] ( 2, 2 ) long -> x21 "Inlining Arg"
+; V31 tmp19 [V31,T33] ( 2, 2 ) long -> x21 "Inlining Arg"
; V32 tmp20 [V32,T23] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <int[]>
;* V33 tmp21 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V34 tmp22 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -49,24 +49,24 @@
; V38 tmp26 [V38,T13] ( 5, 5 ) long -> [fp-0x58] spill-single-def "Inlining Arg"
;* V39 tmp27 [V39 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V40 tmp28 [V40 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V41 tmp29 [V41,T36] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V41 tmp29 [V41,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V42 tmp30 [V42,T11] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
; V43 tmp31 [V43,T12] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
; V44 tmp32 [V44,T06] ( 3, 12 ) byref -> x1 "dup spill"
;* V45 tmp33 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp34 [V46 ] ( 0, 0 ) int -> zero-ref single-def "field V04._length (fldOffset=0x8)" P-INDEP
-; V47 tmp35 [V47,T34] ( 4, 2 ) byref -> x21 single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+; V47 tmp35 [V47,T32] ( 4, 2 ) byref -> x21 single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp36 [V48 ] ( 0, 0 ) int -> zero-ref single-def "field V13._length (fldOffset=0x8)" P-INDEP
;* V49 tmp37 [V49 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp38 [V50 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
-; V51 tmp39 [V51,T40] ( 2, 1.50) int -> [fp-0x48] do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
-; V52 tmp40 [V52,T41] ( 2, 1.50) int -> [fp-0x44] do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
+; V51 tmp39 [V51,T38] ( 2, 1.50) int -> [fp-0x48] do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
+; V52 tmp40 [V52,T39] ( 2, 1.50) int -> [fp-0x44] do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
;* V53 tmp41 [V53 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V54 tmp42 [V54 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
-; V55 tmp43 [V55,T42] ( 2, 1.50) int -> [fp-0x50] do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
-; V56 tmp44 [V56,T43] ( 2, 1.50) int -> [fp-0x4C] do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
-; V57 tmp45 [V57,T44] ( 2, 1 ) byref -> x23 "field V33._reference (fldOffset=0x0)" P-INDEP
-; V58 tmp46 [V58,T45] ( 2, 1 ) int -> x22 "field V33._length (fldOffset=0x8)" P-INDEP
+; V55 tmp43 [V55,T40] ( 2, 1.50) int -> [fp-0x50] do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
+; V56 tmp44 [V56,T41] ( 2, 1.50) int -> [fp-0x4C] do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
+; V57 tmp45 [V57,T42] ( 2, 1 ) byref -> x23 "field V33._reference (fldOffset=0x0)" P-INDEP
+; V58 tmp46 [V58,T43] ( 2, 1 ) int -> x22 "field V33._length (fldOffset=0x8)" P-INDEP
;* V59 tmp47 [V59 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V60 tmp48 [V60 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V61 tmp49 [V61 ] ( 0, 0 ) byref -> zero-ref single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -75,25 +75,22 @@
;* V64 tmp52 [V64 ] ( 0, 0 ) int -> zero-ref single-def "field V37._length (fldOffset=0x8)" P-INDEP
; V65 tmp53 [V65,T17] ( 3, 4.50) byref -> x23 single-def "V05.[000..008)"
; V66 tmp54 [V66,T18] ( 3, 4.50) int -> x22 single-def "V05.[008..012)"
-; V67 tmp55 [V67,T37] ( 3, 1.50) byref -> x23 "V16.[000..008)"
-; V68 tmp56 [V68,T39] ( 3, 1.50) int -> x22 "V16.[008..012)"
+; V67 tmp55 [V67,T35] ( 3, 1.50) byref -> x23 "V16.[000..008)"
+; V68 tmp56 [V68,T37] ( 3, 1.50) int -> x22 "V16.[008..012)"
; V69 tmp57 [V69,T03] ( 2, 16 ) ref -> x1 "argument with side effect"
; V70 GsCookie [V70 ] ( 1, 1 ) long -> [fp-0x70] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V71 PSPSym [V71,T47] ( 1, 1 ) long -> [fp-0x38] do-not-enreg[V] "PSPSym"
+; V71 PSPSym [V71,T44] ( 1, 1 ) long -> [fp-0x38] do-not-enreg[V] "PSPSym"
; V72 cse0 [V72,T08] ( 5, 10 ) int -> x11 "CSE - aggressive"
; V73 cse1 [V73,T09] ( 11, 7 ) long -> registers multi-def "CSE - aggressive"
-; V74 rat0 [V74,T30] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V74 rat0 [V74,T29] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V75 rat1 [V75,T26] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-; V76 rat2 [V76,T31] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V76 rat2 [V76,T30] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V77 rat3 [V77,T27] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-; V78 rat4 [V78,T32] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V78 rat4 [V78,T31] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V79 rat5 [V79,T28] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V80 rat6 [V80,T33] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V81 rat7 [V81,T46] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V82 rat8 [V82,T29] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V83 rat9 [V83,T02] ( 3, 17.60) long -> x1 "Spilling to split statement for tree"
-; V84 rat10 [V84,T01] ( 3, 22.40) long -> x11 "fgMakeTemp is creating a new local variable"
-; V85 rat11 [V85,T25] ( 3, 3 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V80 rat6 [V80,T02] ( 3, 17.60) long -> x1 "Spilling to split statement for tree"
+; V81 rat7 [V81,T01] ( 3, 22.40) long -> x11 "fgMakeTemp is creating a new local variable"
+; V82 rat8 [V82,T25] ( 3, 3 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 64
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.osx.arm64.checked.mch |
2 |
1 |
0 |
1 |
-24 |
+0 |
benchmarks.run_pgo.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
benchmarks.run_tiered.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
coreclr_tests.run.osx.arm64.checked.mch |
3 |
2 |
0 |
1 |
-60 |
+0 |
libraries.crossgen2.osx.arm64.checked.mch |
11 |
11 |
0 |
0 |
-108 |
+0 |
libraries.pmi.osx.arm64.checked.mch |
34 |
22 |
0 |
12 |
-348 |
+0 |
libraries_tests.run.osx.arm64.Release.mch |
44 |
35 |
3 |
6 |
-500 |
+68 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
19 |
15 |
0 |
4 |
-264 |
+0 |
realworld.run.osx.arm64.checked.mch |
6 |
4 |
0 |
2 |
-64 |
+0 |
|
119 |
90 |
3 |
26 |
-1,368 |
+68 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.osx.arm64.checked.mch |
24,851 |
4 |
24,847 |
4 (0.02%) |
4 (0.02%) |
benchmarks.run_pgo.osx.arm64.checked.mch |
84,581 |
48,412 |
36,169 |
93 (0.11%) |
93 (0.11%) |
benchmarks.run_tiered.osx.arm64.checked.mch |
48,257 |
37,318 |
10,939 |
4 (0.01%) |
4 (0.01%) |
coreclr_tests.run.osx.arm64.checked.mch |
585,830 |
357,177 |
228,653 |
391 (0.07%) |
391 (0.07%) |
libraries.crossgen2.osx.arm64.checked.mch |
233,353 |
15 |
233,338 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.osx.arm64.checked.mch |
314,709 |
18 |
314,691 |
7 (0.00%) |
7 (0.00%) |
libraries_tests.run.osx.arm64.Release.mch |
637,121 |
466,371 |
170,750 |
2,745 (0.43%) |
2,745 (0.43%) |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
302,464 |
21,558 |
280,906 |
11 (0.00%) |
11 (0.00%) |
realworld.run.osx.arm64.checked.mch |
31,543 |
3 |
31,540 |
1 (0.00%) |
1 (0.00%) |
|
2,262,709 |
930,876 |
1,331,833 |
3,256 (0.14%) |
3,256 (0.14%) |
jit-analyze output
benchmarks.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 11178360 (overridden on cmd)
Total bytes of diff: 11178336 (overridden on cmd)
Total bytes of delta: -24 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-24 : 24097.dasm (-2.80 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 1 unchanged.
Top method improvements (bytes):
-24 (-2.80 % of base) : 24097.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
Top method improvements (percentages):
-24 (-2.80 % of base) : 24097.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
1 total methods with Code Size differences (1 improved, 0 regressed).
coreclr_tests.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 485381240 (overridden on cmd)
Total bytes of diff: 485381180 (overridden on cmd)
Total bytes of delta: -60 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-36 : 570536.dasm (-3.45 % of base)
-24 : 583970.dasm (-5.04 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 1 unchanged.
Top method improvements (bytes):
-36 (-3.45 % of base) : 570536.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
-24 (-5.04 % of base) : 583970.dasm - Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]):ubyte:this (FullOpts)
Top method improvements (percentages):
-24 (-5.04 % of base) : 583970.dasm - Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]):ubyte:this (FullOpts)
-36 (-3.45 % of base) : 570536.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
2 total methods with Code Size differences (2 improved, 0 regressed).
libraries.crossgen2.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 55622104 (overridden on cmd)
Total bytes of diff: 55621996 (overridden on cmd)
Total bytes of delta: -108 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-24 : 165248.dasm (-0.36 % of base)
-20 : 109526.dasm (-0.73 % of base)
-12 : 194499.dasm (-0.53 % of base)
-12 : 89908.dasm (-0.68 % of base)
-12 : 196589.dasm (-0.56 % of base)
-8 : 165743.dasm (-1.82 % of base)
-4 : 124599.dasm (-0.19 % of base)
-4 : 183363.dasm (-0.15 % of base)
-4 : 109800.dasm (-0.10 % of base)
-4 : 124600.dasm (-0.15 % of base)
-4 : 183362.dasm (-0.19 % of base)
11 total files with Code Size differences (11 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-24 (-0.36 % of base) : 165248.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-20 (-0.73 % of base) : 109526.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
-12 (-0.68 % of base) : 89908.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
-12 (-0.56 % of base) : 196589.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-12 (-0.53 % of base) : 194499.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
-8 (-1.82 % of base) : 165743.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
-4 (-0.10 % of base) : 109800.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
-4 (-0.19 % of base) : 124599.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-4 (-0.19 % of base) : 183362.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-4 (-0.15 % of base) : 183363.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-4 (-0.15 % of base) : 124600.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
Top method improvements (percentages):
-8 (-1.82 % of base) : 165743.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
-20 (-0.73 % of base) : 109526.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
-12 (-0.68 % of base) : 89908.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
-12 (-0.56 % of base) : 196589.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-12 (-0.53 % of base) : 194499.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
-24 (-0.36 % of base) : 165248.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-4 (-0.19 % of base) : 183362.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-4 (-0.19 % of base) : 124599.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-4 (-0.15 % of base) : 183363.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-4 (-0.15 % of base) : 124600.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-4 (-0.10 % of base) : 109800.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
11 total methods with Code Size differences (11 improved, 0 regressed).
libraries.pmi.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 79955476 (overridden on cmd)
Total bytes of diff: 79955128 (overridden on cmd)
Total bytes of delta: -348 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-32 : 137541.dasm (-0.78 % of base)
-24 : 160509.dasm (-2.84 % of base)
-24 : 161839.dasm (-2.54 % of base)
-24 : 164163.dasm (-3.06 % of base)
-24 : 163011.dasm (-2.84 % of base)
-24 : 161660.dasm (-2.52 % of base)
-24 : 163016.dasm (-3.00 % of base)
-20 : 237087.dasm (-4.63 % of base)
-20 : 249397.dasm (-2.19 % of base)
-20 : 257072.dasm (-4.63 % of base)
-20 : 115297.dasm (-1.07 % of base)
-20 : 268843.dasm (-2.19 % of base)
-16 : 182355.dasm (-0.21 % of base)
-12 : 230868.dasm (-0.68 % of base)
-8 : 308247.dasm (-0.73 % of base)
-8 : 121842.dasm (-0.15 % of base)
-8 : 121839.dasm (-0.18 % of base)
-4 : 200928.dasm (-0.16 % of base)
-4 : 137816.dasm (-0.10 % of base)
-4 : 200927.dasm (-0.21 % of base)
22 total files with Code Size differences (22 improved, 0 regressed), 12 unchanged.
Top method improvements (bytes):
-32 (-0.78 % of base) : 137541.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
-24 (-2.52 % of base) : 161660.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.54 % of base) : 161839.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.84 % of base) : 160509.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-3.00 % of base) : 163016.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-24 (-2.84 % of base) : 163011.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
-24 (-3.06 % of base) : 164163.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-20 (-2.19 % of base) : 249397.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-20 (-2.19 % of base) : 268843.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-20 (-4.63 % of base) : 237087.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-20 (-4.63 % of base) : 257072.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-20 (-1.07 % of base) : 115297.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
-16 (-0.21 % of base) : 182355.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-12 (-0.68 % of base) : 230868.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-8 (-0.15 % of base) : 121842.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitAllElementInitializersRecursive(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator+IndexDesc],ubyte):this (FullOpts)
-8 (-0.18 % of base) : 121839.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
-8 (-0.73 % of base) : 308247.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-4 (-0.10 % of base) : 137816.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
-4 (-0.21 % of base) : 200927.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-4 (-0.20 % of base) : 144757.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
Top method improvements (percentages):
-20 (-4.63 % of base) : 237087.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-20 (-4.63 % of base) : 257072.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-24 (-3.06 % of base) : 164163.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-24 (-3.00 % of base) : 163016.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-24 (-2.84 % of base) : 160509.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.84 % of base) : 163011.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
-24 (-2.54 % of base) : 161839.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.52 % of base) : 161660.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-20 (-2.19 % of base) : 249397.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-20 (-2.19 % of base) : 268843.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-20 (-1.07 % of base) : 115297.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
-32 (-0.78 % of base) : 137541.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
-8 (-0.73 % of base) : 308247.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-12 (-0.68 % of base) : 230868.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-16 (-0.21 % of base) : 182355.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-4 (-0.21 % of base) : 200927.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-4 (-0.20 % of base) : 144757.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-8 (-0.18 % of base) : 121839.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
-4 (-0.16 % of base) : 200928.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-4 (-0.16 % of base) : 144758.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
22 total methods with Code Size differences (22 improved, 0 regressed).
libraries_tests.run.osx.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 312903680 (overridden on cmd)
Total bytes of diff: 312903248 (overridden on cmd)
Total bytes of delta: -432 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
24 : 51336.dasm (1.06 % of base)
24 : 589004.dasm (0.18 % of base)
20 : 591325.dasm (0.83 % of base)
Top file improvements (bytes):
-48 : 159796.dasm (-2.18 % of base)
-24 : 61837.dasm (-2.08 % of base)
-20 : 88913.dasm (-2.42 % of base)
-20 : 88979.dasm (-2.39 % of base)
-20 : 89118.dasm (-2.39 % of base)
-20 : 89276.dasm (-2.46 % of base)
-20 : 323886.dasm (-0.60 % of base)
-20 : 88943.dasm (-2.58 % of base)
-20 : 89105.dasm (-2.46 % of base)
-20 : 89159.dasm (-2.46 % of base)
-12 : 191353.dasm (-0.35 % of base)
-12 : 95843.dasm (-0.35 % of base)
-12 : 172501.dasm (-0.35 % of base)
-12 : 202501.dasm (-0.35 % of base)
-12 : 216887.dasm (-0.35 % of base)
-12 : 280433.dasm (-0.35 % of base)
-12 : 309760.dasm (-0.35 % of base)
-12 : 318781.dasm (-0.35 % of base)
-12 : 329098.dasm (-0.35 % of base)
-12 : 332729.dasm (-0.35 % of base)
36 total files with Code Size differences (33 improved, 3 regressed), 6 unchanged.
Top method regressions (bytes):
24 (1.06 % of base) : 51336.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
24 (0.18 % of base) : 589004.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1)
20 (0.83 % of base) : 591325.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
Top method improvements (bytes):
-48 (-2.18 % of base) : 159796.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-24 (-2.08 % of base) : 61837.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this (Tier1)
-20 (-2.58 % of base) : 88943.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
-20 (-2.46 % of base) : 89105.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
-20 (-2.42 % of base) : 88913.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.ValueTuple`2[System.__Canon,int]]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
-20 (-2.39 % of base) : 89118.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.ValueTuple`2[System.__Canon,System.__Canon]]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
-20 (-2.39 % of base) : 88979.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.ValueTuple`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon]]]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
-20 (-2.46 % of base) : 89159.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.ValueTuple`2[System.ValueTuple`2[System.__Canon,int],System.__Canon]]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
-20 (-2.46 % of base) : 89276.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.ValueTuple`2[System.ValueTuple`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon]],System.__Canon]]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
-20 (-0.60 % of base) : 323886.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 191353.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 95843.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 172501.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 202501.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 216887.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 280433.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 309760.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 318781.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 329098.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 332729.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
Top method regressions (percentages):
24 (1.06 % of base) : 51336.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
20 (0.83 % of base) : 591325.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
24 (0.18 % of base) : 589004.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1)
Top method improvements (percentages):
-20 (-2.58 % of base) : 88943.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
-20 (-2.46 % of base) : 89105.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
-20 (-2.46 % of base) : 89159.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.ValueTuple`2[System.ValueTuple`2[System.__Canon,int],System.__Canon]]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
-20 (-2.46 % of base) : 89276.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.ValueTuple`2[System.ValueTuple`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon]],System.__Canon]]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
-20 (-2.42 % of base) : 88913.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.ValueTuple`2[System.__Canon,int]]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
-20 (-2.39 % of base) : 89118.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.ValueTuple`2[System.__Canon,System.__Canon]]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
-20 (-2.39 % of base) : 88979.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.ValueTuple`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon]]]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
-48 (-2.18 % of base) : 159796.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-24 (-2.08 % of base) : 61837.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this (Tier1)
-20 (-0.60 % of base) : 323886.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 280433.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 191353.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 95843.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 202501.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 309760.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 318781.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 120159.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 216887.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 332729.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 496300.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 160911076 (overridden on cmd)
Total bytes of diff: 160910812 (overridden on cmd)
Total bytes of delta: -264 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-24 : 67778.dasm (-2.84 % of base)
-24 : 19492.dasm (-2.80 % of base)
-24 : 66955.dasm (-3.00 % of base)
-24 : 68210.dasm (-2.79 % of base)
-24 : 66866.dasm (-2.51 % of base)
-24 : 69364.dasm (-2.49 % of base)
-20 : 6151.dasm (-2.19 % of base)
-20 : 23719.dasm (-4.46 % of base)
-20 : 89845.dasm (-0.25 % of base)
-20 : 298231.dasm (-0.49 % of base)
-12 : 162096.dasm (-0.67 % of base)
-8 : 151115.dasm (-0.78 % of base)
-8 : 148131.dasm (-0.78 % of base)
-8 : 96197.dasm (-1.74 % of base)
-4 : 177151.dasm (-0.21 % of base)
15 total files with Code Size differences (15 improved, 0 regressed), 4 unchanged.
Top method improvements (bytes):
-24 (-2.49 % of base) : 69364.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.51 % of base) : 66866.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.79 % of base) : 68210.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.84 % of base) : 67778.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
-24 (-2.80 % of base) : 19492.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
-24 (-3.00 % of base) : 66955.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-20 (-2.19 % of base) : 6151.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-20 (-4.46 % of base) : 23719.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-20 (-0.25 % of base) : 89845.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-20 (-0.49 % of base) : 298231.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
-12 (-0.67 % of base) : 162096.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-8 (-1.74 % of base) : 96197.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
-8 (-0.78 % of base) : 151115.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-8 (-0.78 % of base) : 148131.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-4 (-0.21 % of base) : 177151.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
Top method improvements (percentages):
-20 (-4.46 % of base) : 23719.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-24 (-3.00 % of base) : 66955.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-24 (-2.84 % of base) : 67778.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
-24 (-2.80 % of base) : 19492.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
-24 (-2.79 % of base) : 68210.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.51 % of base) : 66866.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.49 % of base) : 69364.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-20 (-2.19 % of base) : 6151.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-8 (-1.74 % of base) : 96197.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
-8 (-0.78 % of base) : 148131.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-8 (-0.78 % of base) : 151115.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-12 (-0.67 % of base) : 162096.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-20 (-0.49 % of base) : 298231.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
-20 (-0.25 % of base) : 89845.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-4 (-0.21 % of base) : 177151.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
15 total methods with Code Size differences (15 improved, 0 regressed).
realworld.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15072368 (overridden on cmd)
Total bytes of diff: 15072304 (overridden on cmd)
Total bytes of delta: -64 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-24 : 23155.dasm (-2.80 % of base)
-20 : 23075.dasm (-4.46 % of base)
-12 : 13443.dasm (-0.14 % of base)
-8 : 30385.dasm (-0.10 % of base)
4 total files with Code Size differences (4 improved, 0 regressed), 2 unchanged.
Top method improvements (bytes):
-24 (-2.80 % of base) : 23155.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
-20 (-4.46 % of base) : 23075.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-12 (-0.14 % of base) : 13443.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
-8 (-0.10 % of base) : 30385.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
Top method improvements (percentages):
-20 (-4.46 % of base) : 23075.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-24 (-2.80 % of base) : 23155.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
-12 (-0.14 % of base) : 13443.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
-8 (-0.10 % of base) : 30385.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
4 total methods with Code Size differences (4 improved, 0 regressed).
windows arm64
Diffs are based on 2,318,207 contexts (931,543 MinOpts, 1,386,664 FullOpts).
MISSED contexts: 2,687 (0.12%)
Overall (-1,208 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.windows.arm64.checked.mch |
10,961,236 |
-24 |
coreclr_tests.run.windows.arm64.checked.mch |
495,372,096 |
-60 |
libraries.crossgen2.windows.arm64.checked.mch |
58,964,780 |
-108 |
libraries.pmi.windows.arm64.checked.mch |
79,594,724 |
-376 |
libraries_tests.run.windows.arm64.Release.mch |
310,511,308 |
-312 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
169,134,348 |
-264 |
realworld.run.windows.arm64.checked.mch |
15,891,116 |
-64 |
FullOpts (-1,208 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.windows.arm64.checked.mch |
10,960,700 |
-24 |
coreclr_tests.run.windows.arm64.checked.mch |
156,280,568 |
-60 |
libraries.crossgen2.windows.arm64.checked.mch |
58,963,144 |
-108 |
libraries.pmi.windows.arm64.checked.mch |
79,474,740 |
-376 |
libraries_tests.run.windows.arm64.Release.mch |
108,929,804 |
-312 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
155,996,884 |
-264 |
realworld.run.windows.arm64.checked.mch |
15,322,692 |
-64 |
Example diffs
benchmarks.run.windows.arm64.checked.mch
-24 (-2.80%) : 21824.dasm - System.Collections.Immutable.ImmutableList1+Node[System.Collections.Generic.KeyValuePair
2[System.Canon,System.Canon]]:IndexOf(System.Collections.Generic.KeyValuePair2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer
1[System.Collections.Generic.KeyValuePair`2[System.Canon,System.Canon]]):int:this (FullOpts)
@@ -8,13 +8,13 @@
; 0 inlinees with PGO data; 2 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 9, 16 ) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
+; V00 this [V00,T06] ( 8, 15 ) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]>
; V02 arg2 [V02,T07] ( 8, 14 ) int -> x19
; V03 arg3 [V03,T11] ( 6, 6 ) int -> x21 single-def
; V04 arg4 [V04,T10] ( 5, 8 ) ref -> x20 class-hnd <System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
; V05 loc0 [V05 ] ( 5, 15 ) struct (56) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
-; V06 loc1 [V06,T31] ( 2, 2 ) int -> [fp+0x24] do-not-enreg[Z] EH-live
+; V06 loc1 [V06,T29] ( 2, 2 ) int -> [fp+0x24] do-not-enreg[Z] EH-live
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -33,30 +33,27 @@
; V22 tmp15 [V22,T16] ( 2, 5 ) ref -> x23 single-def "field V01.value (fldOffset=0x8)" P-INDEP
; V23 tmp16 [V23,T13] ( 2, 8 ) ref -> x3 "field V13.key (fldOffset=0x0)" P-INDEP
; V24 tmp17 [V24,T14] ( 2, 8 ) ref -> x4 "field V13.value (fldOffset=0x8)" P-INDEP
-; V25 tmp18 [V25,T34] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V26 tmp19 [V26,T35] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V27 tmp20 [V27,T29] ( 2, 4 ) long -> x1 "argument with side effect"
+; V25 tmp18 [V25,T31] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V26 tmp19 [V26,T32] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V27 tmp20 [V27,T27] ( 2, 4 ) long -> x1 "argument with side effect"
; V28 tmp21 [V28,T03] ( 2, 32 ) long -> x1 "argument with side effect"
-; V29 PSPSym [V29,T33] ( 1, 1 ) long -> [fp+0x68] do-not-enreg[V] "PSPSym"
+; V29 PSPSym [V29,T30] ( 1, 1 ) long -> [fp+0x68] do-not-enreg[V] "PSPSym"
; V30 cse0 [V30,T17] ( 3, 6 ) long -> x25 "CSE - aggressive"
-; V31 cse1 [V31,T30] ( 3, 3 ) int -> x1 "CSE - aggressive"
+; V31 cse1 [V31,T28] ( 3, 3 ) int -> x1 "CSE - aggressive"
; V32 cse2 [V32,T09] ( 10, 12 ) long -> x24 multi-def "CSE - aggressive"
-; V33 rat0 [V33,T23] ( 3, 4.40) long -> x24 "Spilling to split statement for tree"
-; V34 rat1 [V34,T27] ( 3, 4 ) long -> x1 "runtime lookup"
+; V33 rat0 [V33,T22] ( 3, 4.40) long -> x24 "Spilling to split statement for tree"
+; V34 rat1 [V34,T25] ( 3, 4 ) long -> x1 "runtime lookup"
; V35 rat2 [V35,T18] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
-; V36 rat3 [V36,T24] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V37 rat4 [V37,T28] ( 3, 4 ) long -> x25 "runtime lookup"
+; V36 rat3 [V36,T23] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
+; V37 rat4 [V37,T26] ( 3, 4 ) long -> x25 "runtime lookup"
; V38 rat5 [V38,T19] ( 3, 5.60) long -> x25 "fgMakeTemp is creating a new local variable"
-; V39 rat6 [V39,T25] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V40 rat7 [V40,T32] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V41 rat8 [V41,T20] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V42 rat9 [V42,T05] ( 3, 22.40) long -> x26 "fgMakeTemp is creating a new local variable"
-; V43 rat10 [V43,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V44 rat11 [V44,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V45 rat12 [V45,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
-; V46 rat13 [V46,T21] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
-; V47 rat14 [V47,T26] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V48 rat15 [V48,T22] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
+; V39 rat6 [V39,T05] ( 3, 22.40) long -> x26 "fgMakeTemp is creating a new local variable"
+; V40 rat7 [V40,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V41 rat8 [V41,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V42 rat9 [V42,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+; V43 rat10 [V43,T20] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V44 rat11 [V44,T24] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V45 rat12 [V45,T21] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 96
@@ -166,18 +163,10 @@ G_M34258_IG09: ; bbWeight=1, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=00
; gcrRegs -[x2]
; gcr arg pop 0
;; size=48 bbWeight=1 PerfScore 10.50
-G_M34258_IG10: ; bbWeight=1, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x2]
- ldr x0, [x2]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x10]
- cbnz x0, G_M34258_IG15
+G_M34258_IG10: ; bbWeight=1, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref
b G_M34258_IG15
- ;; size=28 bbWeight=1 PerfScore 16.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M34258_IG11: ; bbWeight=4, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
mov x21, x25
ldr x0, [x24, #0x38]
ldr x0, [x0]
@@ -221,16 +210,16 @@ G_M34258_IG14: ; bbWeight=4, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=00
; gcr arg pop 0
cbnz w0, G_M34258_IG20
add w19, w19, #1
+ ;; size=68 bbWeight=4 PerfScore 60.00
+G_M34258_IG15: ; bbWeight=8, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
ldr x2, [fp, #0x18] // [V00 this]
; gcrRegs +[x2]
- ;; size=72 bbWeight=4 PerfScore 68.00
-G_M34258_IG15: ; bbWeight=8, gcrefRegs=D00004 {x2 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
ldr x0, [x2]
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x10]
cbz x1, G_M34258_IG17
- ;; size=20 bbWeight=8 PerfScore 104.00
+ ;; size=24 bbWeight=8 PerfScore 120.00
G_M34258_IG16: ; bbWeight=6.40, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
b G_M34258_IG18
@@ -395,7 +384,7 @@ G_M34258_IG38: ; bbWeight=1, funclet epilog, nogc, extend
ret lr
;; size=24 bbWeight=1 PerfScore 16.00
-; Total bytes of code 856, prolog size 76, PerfScore 451.60, instruction count 214, allocated bytes for code 856 (MethodHash=62fd7a2d) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
+; Total bytes of code 832, prolog size 76, PerfScore 444.60, instruction count 208, allocated bytes for code 832 (MethodHash=62fd7a2d) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -406,7 +395,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 186 (0x000ba) Actual length = 744 (0x0002e8)
+ Function Length : 180 (0x000b4) Actual length = 720 (0x0002d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 17290.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)
@@ -23,11 +23,11 @@
; V12 loc9 [V12,T14] ( 4, 14 ) byref -> x27
; V13 loc10 [V13,T17] ( 6, 13.50) int -> x26
; V14 loc11 [V14,T15] ( 4, 14 ) byref -> x27
-; V15 loc12 [V15,T66] ( 3, 1.50) int -> x22 single-def
+; V15 loc12 [V15,T62] ( 3, 1.50) int -> x22 single-def
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp2 [V18,T31] ( 4, 3 ) long -> x11 "VirtualCall with runtime lookup"
-; V19 tmp3 [V19,T67] ( 3, 1.50) int -> x24
+; V19 tmp3 [V19,T63] ( 3, 1.50) int -> x24
;* V20 tmp4 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -35,8 +35,8 @@
;* V24 tmp8 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp10 [V26,T28] ( 4, 4 ) byref -> x0 single-def "dup spill"
-; V27 tmp11 [V27,T61] ( 3, 2 ) long -> x1 "spilling helperCall"
-; V28 tmp12 [V28,T68] ( 3, 1.50) int -> x24
+; V27 tmp11 [V27,T57] ( 3, 2 ) long -> x1 "spilling helperCall"
+; V28 tmp12 [V28,T64] ( 3, 1.50) int -> x24
;* V29 tmp13 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp14 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -48,9 +48,9 @@
; V37 tmp21 [V37,T32] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V38 tmp22 [V38,T33] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp24 [V40,T81] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp24 [V40,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp26 [V42,T82] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp26 [V42,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V43 tmp27 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -58,9 +58,9 @@
; V47 tmp31 [V47,T34] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V48 tmp32 [V48,T35] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V50 tmp34 [V50,T83] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V50 tmp34 [V50,T77] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V52 tmp36 [V52,T84] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V52 tmp36 [V52,T78] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -68,63 +68,57 @@
; V57 tmp41 [V57,T36] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V58 tmp42 [V58,T37] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V60 tmp44 [V60,T85] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V60 tmp44 [V60,T79] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V62 tmp46 [V62,T86] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V62 tmp46 [V62,T80] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V63 tmp47 [V63 ] ( 6, 10.50) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64 ] ( 9, 19 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V65 tmp49 [V65,T72] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
-; V66 tmp50 [V66,T75] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V67 tmp51 [V67,T73] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
-; V68 tmp52 [V68,T76] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T74] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
-; V70 tmp54 [V70,T77] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
+; V65 tmp49 [V65,T68] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
+; V66 tmp50 [V66,T71] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V67 tmp51 [V67,T69] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
+; V68 tmp52 [V68,T72] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T70] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
+; V70 tmp54 [V70,T73] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
; V71 tmp55 [V71,T41] ( 3, 3 ) int -> x2 "index expr"
; V72 tmp56 [V72,T42] ( 3, 3 ) int -> x1 "index expr"
; V73 tmp57 [V73,T43] ( 3, 3 ) int -> x2 "index expr"
; V74 tmp58 [V74,T44] ( 3, 3 ) int -> x1 "index expr"
; V75 tmp59 [V75,T12] ( 2, 16 ) long -> x1 "argument with side effect"
; V76 tmp60 [V76,T13] ( 2, 16 ) long -> x1 "argument with side effect"
-; V77 tmp61 [V77,T64] ( 2, 2 ) int -> x1 "argument with side effect"
+; V77 tmp61 [V77,T60] ( 2, 2 ) int -> x1 "argument with side effect"
; V78 tmp62 [V78,T45] ( 3, 3 ) int -> x2 "index expr"
; V79 tmp63 [V79,T46] ( 3, 3 ) int -> x1 "index expr"
-; V80 tmp64 [V80,T65] ( 2, 2 ) long -> x1 "argument with side effect"
-; V81 cse0 [V81,T69] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V82 cse1 [V82,T70] ( 3, 1.50) int -> x26 "CSE - moderate"
-; V83 cse2 [V83,T71] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V84 rat0 [V84,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V85 rat1 [V85,T62] ( 3, 2 ) long -> x1 "runtime lookup"
+; V80 tmp64 [V80,T61] ( 2, 2 ) long -> x1 "argument with side effect"
+; V81 cse0 [V81,T65] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V82 cse1 [V82,T66] ( 3, 1.50) int -> x26 "CSE - moderate"
+; V83 cse2 [V83,T67] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V84 rat0 [V84,T52] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V85 rat1 [V85,T58] ( 3, 2 ) long -> x1 "runtime lookup"
; V86 rat2 [V86,T47] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V87 rat3 [V87,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V88 rat4 [V88,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V89 rat5 [V89,T48] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V90 rat6 [V90,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V91 rat7 [V91,T10] ( 3, 16 ) long -> x1 "runtime lookup"
-; V92 rat8 [V92,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V93 rat9 [V93,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V94 rat10 [V94,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V95 rat11 [V95,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V96 rat12 [V96,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V97 rat13 [V97,T49] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V98 rat14 [V98,T57] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V99 rat15 [V99,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V100 rat16 [V100,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V101 rat17 [V101,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V102 rat18 [V102,T11] ( 3, 16 ) long -> x1 "runtime lookup"
-; V103 rat19 [V103,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-; V104 rat20 [V104,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
-; V105 rat21 [V105,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V106 rat22 [V106,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V107 rat23 [V107,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V108 rat24 [V108,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V109 rat25 [V109,T58] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V87 rat3 [V87,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V88 rat4 [V88,T10] ( 3, 16 ) long -> x1 "runtime lookup"
+; V89 rat5 [V89,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V90 rat6 [V90,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V91 rat7 [V91,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V92 rat8 [V92,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V93 rat9 [V93,T53] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V94 rat10 [V94,T48] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
+; V95 rat11 [V95,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V96 rat12 [V96,T11] ( 3, 16 ) long -> x1 "runtime lookup"
+; V97 rat13 [V97,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+; V98 rat14 [V98,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
+; V99 rat15 [V99,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+;* V100 rat16 [V100,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V101 rat17 [V101,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V102 rat18 [V102,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V103 rat19 [V103,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V104 rat20 [V104,T49] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V105 rat21 [V105,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V106 rat22 [V106,T74] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V107 rat23 [V107,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V108 rat24 [V108,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V109 rat25 [V109,T59] ( 3, 2 ) long -> x1 "runtime lookup"
; V110 rat26 [V110,T51] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V111 rat27 [V111,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V112 rat28 [V112,T80] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V113 rat29 [V113,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V114 rat30 [V114,T60] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V115 rat31 [V115,T63] ( 3, 2 ) long -> x1 "runtime lookup"
-; V116 rat32 [V116,T53] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 24
coreclr_tests.run.windows.arm64.checked.mch
-24 (-5.04%) : 592944.dasm - Microsoft.Build.Collections.RetrievableEntryHashSet1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet
1[System.__Canon]):ubyte:this (FullOpts)
@@ -8,12 +8,12 @@
; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 9, 19 ) ref -> [fp+0x10] this class-hnd EH-live single-def <Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]>
+; V00 this [V00,T04] ( 8, 18 ) ref -> [fp+0x10] this class-hnd EH-live single-def <Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]>
; V01 arg1 [V01,T08] ( 5, 5 ) ref -> x1 class-hnd single-def <Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]>
; V02 loc0 [V02 ] ( 2, 8 ) ref -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
; V03 loc1 [V03 ] ( 8, 18 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.Build.Collections.RetrievableEntryHashSet`1+Enumerator[System.__Canon]>
; V04 loc2 [V04,T06] ( 3, 12 ) ref -> x19 class-hnd <System.__Canon>
-;* V05 loc3 [V05,T22] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[Z] EH-live
+;* V05 loc3 [V05,T19] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[Z] EH-live
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -26,27 +26,24 @@
; V15 tmp9 [V15 ] ( 5, 15 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x8)" P-DEP
; V16 tmp10 [V16 ] ( 4, 11 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V03._index (fldOffset=0x10)" P-DEP
; V17 tmp11 [V17 ] ( 4, 11 ) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V03._version (fldOffset=0x14)" P-DEP
-; V18 tmp12 [V18,T18] ( 3, 3 ) ref -> x1 single-def "field V12._set (fldOffset=0x0)" P-INDEP
-;* V19 tmp13 [V19,T21] ( 0, 0 ) ref -> zero-ref single-def "field V12._current (fldOffset=0x8)" P-INDEP
-;* V20 tmp14 [V20,T23] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x10)" P-INDEP
-; V21 tmp15 [V21,T19] ( 2, 2 ) int -> x2 single-def "field V12._version (fldOffset=0x14)" P-INDEP
+; V18 tmp12 [V18,T16] ( 3, 3 ) ref -> x1 single-def "field V12._set (fldOffset=0x0)" P-INDEP
+;* V19 tmp13 [V19,T18] ( 0, 0 ) ref -> zero-ref single-def "field V12._current (fldOffset=0x8)" P-INDEP
+;* V20 tmp14 [V20,T20] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x10)" P-INDEP
+; V21 tmp15 [V21,T17] ( 2, 2 ) int -> x2 single-def "field V12._version (fldOffset=0x14)" P-INDEP
; V22 tmp16 [V22,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V23 tmp17 [V23,T05] ( 2, 16 ) ref -> x1 "argument with side effect"
-; V24 PSPSym [V24,T24] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
-;* V25 cse0 [V25,T25] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-;* V26 rat0 [V26,T13] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V27 rat1 [V27,T17] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V24 PSPSym [V24,T21] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
+;* V25 cse0 [V25,T22] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+;* V26 rat0 [V26,T12] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V27 rat1 [V27,T15] ( 0, 0 ) long -> zero-ref "runtime lookup"
;* V28 rat2 [V28,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V29 rat3 [V29,T14] ( 2, 4 ) long -> x1 "Spilling to split statement for tree"
-;* V30 rat4 [V30,T20] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V31 rat5 [V31,T10] ( 2, 4 ) long -> x1 "fgMakeTemp is creating a new local variable"
-; V32 rat6 [V32,T01] ( 3, 35.20) long -> x1 "Spilling to split statement for tree"
-; V33 rat7 [V33,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V34 rat8 [V34,T00] ( 3, 44.80) long -> x2 "fgMakeTemp is creating a new local variable"
-; V35 rat9 [V35,T15] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V36 rat10 [V36,T11] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
-; V37 rat11 [V37,T16] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V38 rat12 [V38,T12] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V29 rat3 [V29,T01] ( 3, 35.20) long -> x1 "Spilling to split statement for tree"
+; V30 rat4 [V30,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V31 rat5 [V31,T00] ( 3, 44.80) long -> x2 "fgMakeTemp is creating a new local variable"
+; V32 rat6 [V32,T13] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
+; V33 rat7 [V33,T10] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V34 rat8 [V34,T14] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
+; V35 rat9 [V35,T11] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 56
@@ -97,19 +94,11 @@ G_M28904_IG07: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=000
stp x1, xzr, [fp, #0x18] // [V14 tmp8], [V15 tmp9]
stp wzr, w2, [fp, #0x28] // [V16 tmp10], [V17 tmp11]
;; size=12 bbWeight=1 PerfScore 5.00
-G_M28904_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M28904_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- ldr x0, [fp, #0x10] // [V00 this]
- ; gcrRegs +[x0]
- ldr x1, [x0]
- ldr x1, [x1, #0x38]
- ldr x1, [x1]
- ldr x1, [x1, #0x18]
- cbnz x1, G_M28904_IG10
b G_M28904_IG10
- ;; size=28 bbWeight=1 PerfScore 16.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M28904_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
ldr x19, [fp, #0x20] // [V15 tmp9]
; gcrRegs +[x19]
mov x0, x19
@@ -253,7 +242,7 @@ G_M28904_IG27: ; bbWeight=1, funclet epilog, nogc, extend
ret lr
;; size=12 bbWeight=1 PerfScore 6.00
-; Total bytes of code 476, prolog size 36, PerfScore 378.70, instruction count 119, allocated bytes for code 476 (MethodHash=9d278f17) for method Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]):ubyte:this (FullOpts)
+; Total bytes of code 452, prolog size 36, PerfScore 363.70, instruction count 113, allocated bytes for code 452 (MethodHash=9d278f17) for method Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -264,7 +253,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 91 (0x0005b) Actual length = 364 (0x00016c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-36 (-3.45%) : 579631.dasm - ILCompiler.LazyGenericsSupport+Graph1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph
1+Vertex[System.__Canon]):this (FullOpts)
@@ -8,78 +8,74 @@
; 4 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 14,1267 ) ref -> x19 this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
-; V01 arg1 [V01,T08] ( 18,1118 ) ref -> x20 class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
+; V00 this [V00,T09] ( 13,1139 ) ref -> x20 this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
+; V01 arg1 [V01,T07] ( 18,1118 ) ref -> x19 class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
; V02 loc0 [V02,T04] ( 8,1328 ) ref -> x23 class-hnd <<unknown class>>
;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-; V06 loc4 [V06,T09] ( 9,1216 ) ref -> x23 class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
+; V06 loc4 [V06,T08] ( 9,1216 ) ref -> x23 class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
; V07 loc5 [V07,T10] ( 5, 896 ) ref -> x25 class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp2 [V10,T34] ( 3, 48 ) long -> x11 "VirtualCall with runtime lookup"
+; V10 tmp2 [V10,T30] ( 3, 48 ) long -> x11 "VirtualCall with runtime lookup"
;* V11 tmp3 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V12 tmp4 [V12,T00] ( 4,3072 ) long -> x11 "VirtualCall with runtime lookup"
;* V13 tmp5 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-; V14 tmp6 [V14,T22] ( 3, 192 ) ref -> x23 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
+; V14 tmp6 [V14,T18] ( 3, 192 ) ref -> x23 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
;* V15 tmp7 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp8 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V17 tmp9 [V17,T31] ( 4, 48 ) long -> x11 "VirtualCall with runtime lookup"
+; V17 tmp9 [V17,T27] ( 4, 48 ) long -> x11 "VirtualCall with runtime lookup"
;* V18 tmp10 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-; V19 tmp11 [V19,T36] ( 3, 44.08) int -> x24 "impAppendStmt"
-; V20 tmp12 [V20,T30] ( 7, 64 ) ref -> x23 class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
-; V21 tmp13 [V21,T43] ( 4, 20 ) int -> x24 "Inline stloc first use temp"
-; V22 tmp14 [V22,T44] ( 3, 18 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V23 tmp15 [V23,T45] ( 3, 16 ) int -> x0 "Inline return value spill temp"
-; V24 tmp16 [V24,T38] ( 3, 35.92) int -> x0 "Inlining Arg"
-; V25 tmp17 [V25,T24] ( 7, 160 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-; V26 tmp18 [V26,T32] ( 4, 48 ) int -> x3 "Inline stloc first use temp"
-; V27 tmp19 [V27,T37] ( 3, 40 ) ref -> x14 class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V19 tmp11 [V19,T32] ( 3, 44.08) int -> x24 "impAppendStmt"
+; V20 tmp12 [V20,T26] ( 7, 64 ) ref -> x23 class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
+; V21 tmp13 [V21,T39] ( 4, 20 ) int -> x24 "Inline stloc first use temp"
+; V22 tmp14 [V22,T40] ( 3, 18 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V23 tmp15 [V23,T41] ( 3, 16 ) int -> x0 "Inline return value spill temp"
+; V24 tmp16 [V24,T34] ( 3, 35.92) int -> x0 "Inlining Arg"
+; V25 tmp17 [V25,T20] ( 7, 160 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
+; V26 tmp18 [V26,T28] ( 4, 48 ) int -> x3 "Inline stloc first use temp"
+; V27 tmp19 [V27,T33] ( 3, 40 ) ref -> x14 class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V28 tmp20 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-; V29 tmp21 [V29,T20] ( 3, 256 ) int -> x11 "Inline return value spill temp"
-; V30 tmp22 [V30,T13] ( 3, 705.34) int -> x0 "Inlining Arg"
-; V31 tmp23 [V31,T16] ( 3, 574.66) int -> x11 "Inlining Arg"
-; V32 tmp24 [V32,T14] ( 3, 626.01) ref -> x2 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V29 tmp21 [V29,T17] ( 3, 256 ) int -> x11 "Inline return value spill temp"
+; V30 tmp22 [V30,T12] ( 3, 705.34) int -> x0 "Inlining Arg"
+; V31 tmp23 [V31,T14] ( 3, 574.66) int -> x11 "Inlining Arg"
+; V32 tmp24 [V32,T13] ( 3, 626.01) ref -> x2 class-hnd "Inline stloc first use temp" <<unknown class>>
; V33 tmp25 [V33,T11] ( 4, 740.03) int -> x0 "Inline stloc first use temp"
-; V34 tmp26 [V34,T19] ( 7, 384 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-; V35 tmp27 [V35,T29] ( 3, 92.50) ref -> x3 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V36 tmp28 [V36,T28] ( 4, 121.01) int -> x2 "Inline stloc first use temp"
+; V34 tmp26 [V34,T16] ( 7, 384 ) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+; V35 tmp27 [V35,T25] ( 3, 92.50) ref -> x3 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V36 tmp28 [V36,T24] ( 4, 121.01) int -> x2 "Inline stloc first use temp"
;* V37 tmp29 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-; V38 tmp30 [V38,T46] ( 2, 16 ) ref -> x20 "field V03.Vertex (fldOffset=0x0)" P-INDEP
-; V39 tmp31 [V39,T47] ( 2, 16 ) ref -> x23 "field V03.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
+; V38 tmp30 [V38,T42] ( 2, 16 ) ref -> x19 "field V03.Vertex (fldOffset=0x0)" P-INDEP
+; V39 tmp31 [V39,T43] ( 2, 16 ) ref -> x23 "field V03.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
; V40 tmp32 [V40,T05] ( 5,1424 ) ref -> x25 "field V04.Destination (fldOffset=0x0)" P-INDEP
-; V41 tmp33 [V41,T18] ( 1, 512 ) ubyte -> x1 "field V04.Flagged (fldOffset=0x8)" P-INDEP
-; V42 tmp34 [V42,T41] ( 3, 32 ) ref -> x1 "field V05.Vertex (fldOffset=0x0)" P-INDEP
-; V43 tmp35 [V43,T42] ( 3, 32 ) ref -> x2 "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
+; V41 tmp33 [V41,T15] ( 1, 512 ) ubyte -> x1 "field V04.Flagged (fldOffset=0x8)" P-INDEP
+; V42 tmp34 [V42,T37] ( 3, 32 ) ref -> x1 "field V05.Vertex (fldOffset=0x0)" P-INDEP
+; V43 tmp35 [V43,T38] ( 3, 32 ) ref -> x2 "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
;* V44 tmp36 [V44 ] ( 0, 0 ) ref -> zero-ref "field V13.Destination (fldOffset=0x0)" P-DEP
;* V45 tmp37 [V45 ] ( 0, 0 ) ubyte -> zero-ref "field V13.Flagged (fldOffset=0x8)" P-DEP
-; V46 tmp38 [V46,T48] ( 2, 16 ) ref -> x0 "field V18.Destination (fldOffset=0x0)" P-INDEP
-; V47 tmp39 [V47,T51] ( 1, 8 ) ubyte -> x1 "field V18.Flagged (fldOffset=0x8)" P-INDEP
+; V46 tmp38 [V46,T44] ( 2, 16 ) ref -> x0 "field V18.Destination (fldOffset=0x0)" P-INDEP
+; V47 tmp39 [V47,T47] ( 1, 8 ) ubyte -> x1 "field V18.Flagged (fldOffset=0x8)" P-INDEP
;* V48 tmp40 [V48 ] ( 0, 0 ) ref -> zero-ref "field V28.Vertex (fldOffset=0x0)" P-INDEP
;* V49 tmp41 [V49 ] ( 0, 0 ) ref -> zero-ref "field V28.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
-; V50 tmp42 [V50,T33] ( 3, 48 ) byref -> x4 "BlockOp address local"
-; V51 cse0 [V51,T50] ( 2, 9 ) long -> x22 hoist "CSE - moderate"
-; V52 cse1 [V52,T40] ( 4, 32 ) int -> x1 "CSE - moderate"
+; V50 tmp42 [V50,T29] ( 3, 48 ) byref -> x4 "BlockOp address local"
+; V51 cse0 [V51,T46] ( 2, 9 ) long -> x22 hoist "CSE - moderate"
+; V52 cse1 [V52,T36] ( 4, 32 ) int -> x1 "CSE - moderate"
; V53 cse2 [V53,T06] ( 3,1280 ) long -> x24 "CSE - aggressive"
-; V54 cse3 [V54,T49] ( 4, 12.88) long -> x21 hoist "CSE - moderate"
-; V55 rat0 [V55,T53] ( 3, 4.72) long -> x0 "Spilling to split statement for tree"
-; V56 rat1 [V56,T55] ( 3, 4 ) long -> x22 "runtime lookup"
-; V57 rat2 [V57,T52] ( 3, 5.60) long -> x1 "spilling expr"
-; V58 rat3 [V58,T54] ( 3, 4.48) long -> x22 "fgMakeTemp is creating a new local variable"
-; V59 rat4 [V59,T35] ( 3, 44.80) long -> x0 "spilling expr"
-; V60 rat5 [V60,T39] ( 3, 35.84) long -> x11 "fgMakeTemp is creating a new local variable"
-; V61 rat6 [V61,T15] ( 2, 512 ) long -> x0 "Spilling to split statement for tree"
-;* V62 rat7 [V62,T21] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V63 rat8 [V63,T12] ( 3, 716.80) long -> x0 "spilling expr"
-; V64 rat9 [V64,T17] ( 2, 409.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V65 rat10 [V65,T02] ( 3,2416.64) long -> x0 "Spilling to split statement for tree"
-; V66 rat11 [V66,T01] ( 3,2867.20) long -> x1 "spilling expr"
-; V67 rat12 [V67,T03] ( 3,2293.76) long -> x11 "fgMakeTemp is creating a new local variable"
-; V68 rat13 [V68,T25] ( 3, 151.04) long -> x0 "Spilling to split statement for tree"
-; V69 rat14 [V69,T27] ( 3, 128 ) long -> x1 "runtime lookup"
-; V70 rat15 [V70,T23] ( 3, 179.20) long -> x1 "spilling expr"
-; V71 rat16 [V71,T26] ( 3, 143.36) long -> x1 "fgMakeTemp is creating a new local variable"
+; V54 cse3 [V54,T45] ( 4, 12.88) long -> x21 "CSE - moderate"
+; V55 rat0 [V55,T49] ( 3, 4.72) long -> x0 "Spilling to split statement for tree"
+; V56 rat1 [V56,T51] ( 3, 4 ) long -> x22 "runtime lookup"
+; V57 rat2 [V57,T48] ( 3, 5.60) long -> x1 "spilling expr"
+; V58 rat3 [V58,T50] ( 3, 4.48) long -> x22 "fgMakeTemp is creating a new local variable"
+; V59 rat4 [V59,T31] ( 3, 44.80) long -> x0 "spilling expr"
+; V60 rat5 [V60,T35] ( 3, 35.84) long -> x11 "fgMakeTemp is creating a new local variable"
+; V61 rat6 [V61,T02] ( 3,2416.64) long -> x0 "Spilling to split statement for tree"
+; V62 rat7 [V62,T01] ( 3,2867.20) long -> x1 "spilling expr"
+; V63 rat8 [V63,T03] ( 3,2293.76) long -> x11 "fgMakeTemp is creating a new local variable"
+; V64 rat9 [V64,T21] ( 3, 151.04) long -> x0 "Spilling to split statement for tree"
+; V65 rat10 [V65,T23] ( 3, 128 ) long -> x1 "runtime lookup"
+; V66 rat11 [V66,T19] ( 3, 179.20) long -> x1 "spilling expr"
+; V67 rat12 [V67,T22] ( 3, 143.36) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -91,13 +87,13 @@ G_M1799_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x25, [sp, #0x48]
mov fp, sp
str x0, [fp, #0x10]
- mov x19, x0
- ; gcrRegs +[x19]
- mov x20, x1
+ mov x20, x0
; gcrRegs +[x20]
+ mov x19, x1
+ ; gcrRegs +[x19]
;; size=36 bbWeight=1 PerfScore 7.50
G_M1799_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x21, [x19]
+ ldr x21, [x20]
mov x0, x21
ldr x1, [x0, #0x38]
ldr x1, [x1]
@@ -121,11 +117,11 @@ G_M1799_IG05: ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
mov x22, x0
;; size=20 bbWeight=0.36 PerfScore 1.08
G_M1799_IG06: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w1, [x19, #0x28]
- stp w1, w1, [x20, #0x18]
+ ldr w1, [x20, #0x28]
+ stp w1, w1, [x19, #0x18]
add w1, w1, #1
- str w1, [x19, #0x28]
- ldr x23, [x19, #0x08]
+ str w1, [x20, #0x28]
+ ldr x23, [x20, #0x08]
; gcrRegs +[x23]
ldr w24, [x23, #0x10]
ldr x0, [x23, #0x08]
@@ -136,7 +132,7 @@ G_M1799_IG06: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
;; size=40 bbWeight=8 PerfScore 152.00
G_M1799_IG07: ; bbWeight=2, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref
sxtw x1, w24
- mov x2, x20
+ mov x2, x19
; gcrRegs +[x2]
bl CORINFO_HELP_ARRADDR_ST
; gcrRegs -[x0 x2]
@@ -151,7 +147,7 @@ G_M1799_IG07: ; bbWeight=2, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=
G_M1799_IG08: ; bbWeight=2, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref
mov x0, x23
; gcrRegs +[x0]
- mov x1, x20
+ mov x1, x19
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -163,9 +159,9 @@ G_M1799_IG08: ; bbWeight=2, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
;; size=28 bbWeight=2 PerfScore 13.00
G_M1799_IG09: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov w0, #1
- strb w0, [x20, #0x22]
+ strb w0, [x19, #0x22]
mov x11, x22
- ldr x0, [x20, #0x10]
+ ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr x1, [x11]
blr x1
@@ -174,9 +170,9 @@ G_M1799_IG09: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
; gcrRegs +[x23]
cbnz x23, G_M1799_IG15
;; size=32 bbWeight=8 PerfScore 84.00
-G_M1799_IG10: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0 x20 x23]
- ldr x0, [x19, #0x20]
+G_M1799_IG10: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x19 x23]
+ ldr x0, [x20, #0x20]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]:Pop():ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]:this
movk x1, #0xD1FFAB1E LSL #16
@@ -186,8 +182,8 @@ G_M1799_IG10: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
blr x1
; gcrRegs +[x1]
; gcr arg pop 0
- mov x20, x0
- ; gcrRegs +[x20]
+ mov x19, x0
+ ; gcrRegs +[x19]
mov x23, x1
; gcrRegs +[x23]
ldr x0, [x21, #0x38]
@@ -203,7 +199,7 @@ G_M1799_IG11: ; bbWeight=6.40, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=
cbz x11, G_M1799_IG20
;; size=8 bbWeight=6.40 PerfScore 25.60
G_M1799_IG12: ; bbWeight=8, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
- ldr w24, [x20, #0x1C]
+ ldr w24, [x19, #0x1C]
mov x0, x23
; gcrRegs +[x0]
ldr x1, [x11]
@@ -218,7 +214,7 @@ G_M1799_IG13: ; bbWeight=6.04, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=
sxtw w0, w24
;; size=4 bbWeight=6.04 PerfScore 3.02
G_M1799_IG14: ; bbWeight=8, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref
- str w0, [x20, #0x1C]
+ str w0, [x19, #0x1C]
;; size=4 bbWeight=8 PerfScore 8.00
G_M1799_IG15: ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
mov x0, x23
@@ -231,23 +227,23 @@ G_M1799_IG15: ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M1799_IG31
+ cbz w0, G_M1799_IG28
;; size=32 bbWeight=512 PerfScore 3840.00
-G_M1799_IG16: ; bbWeight=128, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x1, [x0, #0x08]
- cmp x1, #48
+G_M1799_IG16: ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x20]
+ ldr x1, [x0, #0x38]
+ ldr x1, [x1]
+ ldr x2, [x1, #0x08]
+ cmp x2, #48
...
+0 (0.00%) : 498014.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)
@@ -23,11 +23,11 @@
; V12 loc9 [V12,T14] ( 4, 14 ) byref -> x27
; V13 loc10 [V13,T17] ( 6, 13.50) int -> x26
; V14 loc11 [V14,T15] ( 4, 14 ) byref -> x27
-; V15 loc12 [V15,T66] ( 3, 1.50) int -> x22 single-def
+; V15 loc12 [V15,T62] ( 3, 1.50) int -> x22 single-def
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp2 [V18,T31] ( 4, 3 ) long -> x11 "VirtualCall with runtime lookup"
-; V19 tmp3 [V19,T67] ( 3, 1.50) int -> x24
+; V19 tmp3 [V19,T63] ( 3, 1.50) int -> x24
;* V20 tmp4 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -35,8 +35,8 @@
;* V24 tmp8 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp10 [V26,T28] ( 4, 4 ) byref -> x0 single-def "dup spill"
-; V27 tmp11 [V27,T61] ( 3, 2 ) long -> x1 "spilling helperCall"
-; V28 tmp12 [V28,T68] ( 3, 1.50) int -> x24
+; V27 tmp11 [V27,T57] ( 3, 2 ) long -> x1 "spilling helperCall"
+; V28 tmp12 [V28,T64] ( 3, 1.50) int -> x24
;* V29 tmp13 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp14 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -48,9 +48,9 @@
; V37 tmp21 [V37,T32] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V38 tmp22 [V38,T33] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp24 [V40,T81] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp24 [V40,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp26 [V42,T82] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp26 [V42,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V43 tmp27 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -58,9 +58,9 @@
; V47 tmp31 [V47,T34] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V48 tmp32 [V48,T35] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V50 tmp34 [V50,T83] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V50 tmp34 [V50,T77] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V52 tmp36 [V52,T84] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V52 tmp36 [V52,T78] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -68,63 +68,57 @@
; V57 tmp41 [V57,T36] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V58 tmp42 [V58,T37] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V60 tmp44 [V60,T85] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V60 tmp44 [V60,T79] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V62 tmp46 [V62,T86] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V62 tmp46 [V62,T80] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V63 tmp47 [V63 ] ( 6, 10.50) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64 ] ( 9, 19 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V65 tmp49 [V65,T72] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
-; V66 tmp50 [V66,T75] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V67 tmp51 [V67,T73] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
-; V68 tmp52 [V68,T76] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T74] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
-; V70 tmp54 [V70,T77] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
+; V65 tmp49 [V65,T68] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
+; V66 tmp50 [V66,T71] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V67 tmp51 [V67,T69] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
+; V68 tmp52 [V68,T72] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T70] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
+; V70 tmp54 [V70,T73] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
; V71 tmp55 [V71,T41] ( 3, 3 ) int -> x2 "index expr"
; V72 tmp56 [V72,T42] ( 3, 3 ) int -> x1 "index expr"
; V73 tmp57 [V73,T43] ( 3, 3 ) int -> x2 "index expr"
; V74 tmp58 [V74,T44] ( 3, 3 ) int -> x1 "index expr"
; V75 tmp59 [V75,T12] ( 2, 16 ) long -> x1 "argument with side effect"
; V76 tmp60 [V76,T13] ( 2, 16 ) long -> x1 "argument with side effect"
-; V77 tmp61 [V77,T64] ( 2, 2 ) int -> x1 "argument with side effect"
+; V77 tmp61 [V77,T60] ( 2, 2 ) int -> x1 "argument with side effect"
; V78 tmp62 [V78,T45] ( 3, 3 ) int -> x2 "index expr"
; V79 tmp63 [V79,T46] ( 3, 3 ) int -> x1 "index expr"
-; V80 tmp64 [V80,T65] ( 2, 2 ) long -> x1 "argument with side effect"
-; V81 cse0 [V81,T69] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V82 cse1 [V82,T70] ( 3, 1.50) int -> x26 "CSE - moderate"
-; V83 cse2 [V83,T71] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V84 rat0 [V84,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V85 rat1 [V85,T62] ( 3, 2 ) long -> x1 "runtime lookup"
+; V80 tmp64 [V80,T61] ( 2, 2 ) long -> x1 "argument with side effect"
+; V81 cse0 [V81,T65] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V82 cse1 [V82,T66] ( 3, 1.50) int -> x26 "CSE - moderate"
+; V83 cse2 [V83,T67] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V84 rat0 [V84,T52] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V85 rat1 [V85,T58] ( 3, 2 ) long -> x1 "runtime lookup"
; V86 rat2 [V86,T47] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V87 rat3 [V87,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V88 rat4 [V88,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V89 rat5 [V89,T48] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V90 rat6 [V90,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V91 rat7 [V91,T10] ( 3, 16 ) long -> x1 "runtime lookup"
-; V92 rat8 [V92,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V93 rat9 [V93,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V94 rat10 [V94,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V95 rat11 [V95,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V96 rat12 [V96,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V97 rat13 [V97,T49] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V98 rat14 [V98,T57] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V99 rat15 [V99,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V100 rat16 [V100,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V101 rat17 [V101,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V102 rat18 [V102,T11] ( 3, 16 ) long -> x1 "runtime lookup"
-; V103 rat19 [V103,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-; V104 rat20 [V104,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
-; V105 rat21 [V105,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V106 rat22 [V106,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V107 rat23 [V107,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V108 rat24 [V108,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V109 rat25 [V109,T58] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V87 rat3 [V87,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V88 rat4 [V88,T10] ( 3, 16 ) long -> x1 "runtime lookup"
+; V89 rat5 [V89,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V90 rat6 [V90,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V91 rat7 [V91,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V92 rat8 [V92,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V93 rat9 [V93,T53] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V94 rat10 [V94,T48] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
+; V95 rat11 [V95,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V96 rat12 [V96,T11] ( 3, 16 ) long -> x1 "runtime lookup"
+; V97 rat13 [V97,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+; V98 rat14 [V98,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
+; V99 rat15 [V99,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+;* V100 rat16 [V100,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V101 rat17 [V101,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V102 rat18 [V102,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V103 rat19 [V103,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V104 rat20 [V104,T49] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V105 rat21 [V105,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V106 rat22 [V106,T74] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V107 rat23 [V107,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V108 rat24 [V108,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V109 rat25 [V109,T59] ( 3, 2 ) long -> x1 "runtime lookup"
; V110 rat26 [V110,T51] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V111 rat27 [V111,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V112 rat28 [V112,T80] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V113 rat29 [V113,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V114 rat30 [V114,T60] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V115 rat31 [V115,T63] ( 3, 2 ) long -> x1 "runtime lookup"
-; V116 rat32 [V116,T53] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 24
libraries.crossgen2.windows.arm64.checked.mch
-8 (-1.82%) : 169639.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)
@@ -17,7 +17,7 @@
; V06 tmp1 [V06,T00] ( 6, 20 ) byref -> x25 "impAppendStmt"
; V07 tmp2 [V07,T05] ( 6, 8 ) byref -> x26
; V08 tmp3 [V08,T02] ( 6, 12 ) long -> x11 "VirtualCall with runtime lookup"
-; V09 tmp4 [V09,T11] ( 4, 4 ) int -> registers
+; V09 tmp4 [V09,T11] ( 2, 3.96) int -> x0
; V10 tmp5 [V10,T06] ( 4, 8 ) ref -> x0 "argument with side effect"
; V11 cse0 [V11,T03] ( 4, 11.88) long -> x21 "CSE - aggressive"
; V12 cse1 [V12,T08] ( 5, 7 ) int -> x23 "CSE - aggressive"
@@ -109,8 +109,8 @@ G_M22994_IG06: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=5000000
; byrRegs -[x26]
; gcr arg pop 0
cmp w0, #0
- cset x21, eq
- cbnz w21, G_M22994_IG16
+ cset x0, eq
+ cbnz w0, G_M22994_IG16
;; size=56 bbWeight=1.98 PerfScore 36.63
G_M22994_IG07: ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz
add w22, w22, #1
@@ -187,10 +187,8 @@ G_M22994_IG12: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=400
; gcrRegs -[x0-x1]
; byrRegs -[x26]
; gcr arg pop 0
- cmp w0, #0
- cset x0, eq
- cbnz w0, G_M22994_IG16
- ;; size=68 bbWeight=0.02 PerfScore 0.46
+ cbz w0, G_M22994_IG16
+ ;; size=60 bbWeight=0.02 PerfScore 0.44
G_M22994_IG13: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
add w22, w22, #1
cmp w23, w22
@@ -228,7 +226,7 @@ G_M22994_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 440, prolog size 40, PerfScore 120.21, instruction count 110, allocated bytes for code 440 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 432, prolog size 40, PerfScore 120.19, instruction count 108, allocated bytes for code 432 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -239,7 +237,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 110 (0x0006e) Actual length = 440 (0x0001b8)
+ Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-0.73%) : 113673.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport
@@ -68,7 +68,6 @@
; V56 cse0 [V56,T04] ( 17, 12.50) byref -> x23 "CSE - aggressive"
; V57 cse1 [V57,T26] ( 4, 5 ) long -> x26 "CSE - moderate"
; V58 cse2 [V58,T13] ( 8, 8 ) long -> [fp+0x70] multi-def "CSE - moderate"
-; TEMP_01 byref -> [fp+0x10]
;
; Lcl frame size = 160
@@ -80,19 +79,17 @@ G_M28747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x25, x26, [sp, #0xE0]
stp x27, x28, [sp, #0xF0]
mov fp, sp
- add x9, fp, #16
+ add x9, fp, #120
movi v16.16b, #0
stp q16, q16, [x9]
- stp q16, q16, [x9, #0x20]
- stp q16, q16, [x9, #0x40]
- stp q16, q16, [x9, #0x60]
- stp q16, q16, [x9, #0x80]
+ stp xzr, xzr, [x9, #0x20]
+ str xzr, [x9, #0x30]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
; gcrRegs +[x20]
mov x21, xzr
- ;; size=68 bbWeight=1 PerfScore 14.00
+ ;; size=60 bbWeight=1 PerfScore 12.00
G_M28747_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -880,8 +877,8 @@ G_M28747_IG19: ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
ldr x1, [x11]
blr x1
; gcrRegs +[x0]
- mov x1, x0
- ; gcrRegs +[x1]
+ str x0, [fp, #0x50] // [V32 tmp17]
+ ; GC ptr vars +{V32}
ldr w0, [x22, #0x08]
; gcrRegs -[x0]
cmp w28, w0
@@ -892,11 +889,6 @@ G_M28747_IG19: ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
; gcrRegs +[x15]
str x15, [fp, #0x18] // [V45 tmp30]
; GC ptr vars +{V45}
- str x1, [fp, #0x50] // [V32 tmp17]
- ; GC ptr vars +{V32}
- add x14, x1, #8
- ; byrRegs +[x14]
- str x14, [fp, #0x10] // [TEMP_01]
ldr x0, [fp, #0x68] // [V12 loc10]
; gcrRegs +[x0]
; byrRegs -[x0]
@@ -904,8 +896,7 @@ G_M28747_IG19: ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x11]
blr x3
- ; gcrRegs -[x1 x15]
- ; byrRegs -[x14]
+ ; gcrRegs -[x15]
ldr x1, [fp, #0x68] // [V12 loc10]
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
@@ -915,18 +906,19 @@ G_M28747_IG19: ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
; GC ptr vars -{V12}
blr x2
; gcrRegs -[x1]
- ldr x14, [fp, #0x10] // [TEMP_01]
+ ldr x11, [fp, #0x50] // [V32 tmp17]
+ ; gcrRegs +[x11]
+ add x14, x11, #8
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_ASSIGN_REF
add x12, x12, [LOW RELOC #0xD1FFAB1E]
ldr x12, [x12]
+ ; GC ptr vars -{V32}
blr x12
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ldr x11, [fp, #0x50] // [V32 tmp17]
- ; gcrRegs +[x11]
add x14, x11, #16
; byrRegs +[x14]
ldr x15, [fp, #0x18] // [V45 tmp30]
@@ -934,7 +926,7 @@ G_M28747_IG19: ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_ASSIGN_REF
add x12, x12, [LOW RELOC #0xD1FFAB1E]
ldr x12, [x12]
- ; GC ptr vars -{V32 V45}
+ ; GC ptr vars -{V45}
blr x12
; gcrRegs -[x15]
; byrRegs -[x14]
@@ -997,7 +989,7 @@ G_M28747_IG19: ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
ldr x2, [x23, #0xD1FFAB1E]
; gcrRegs +[x2]
b G_M28747_IG21
- ;; size=312 bbWeight=0.02 PerfScore 2.02
+ ;; size=300 bbWeight=0.02 PerfScore 1.95
G_M28747_IG20: ; bbWeight=0.02, gcrefRegs=3780000 {x19 x20 x21 x22 x24 x25}, byrefRegs=800000 {x23}, byref
; gcrRegs -[x2 x11]
ldr x1, [x23, #0xD1FFAB1E]
@@ -1107,7 +1099,7 @@ G_M28747_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2740, prolog size 56, PerfScore 783.17, instruction count 685, allocated bytes for code 2740 (MethodHash=f6968fb4) for method Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
+; Total bytes of code 2720, prolog size 48, PerfScore 781.10, instruction count 680, allocated bytes for code 2720 (MethodHash=f6968fb4) for method Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
; ============================================================
Unwind Info:
@@ -1118,7 +1110,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 685 (0x002ad) Actual length = 2740 (0x000ab4)
+ Function Length : 680 (0x002a8) Actual length = 2720 (0x000aa0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-0.68%) : 94048.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary
2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
@@ -12,7 +12,7 @@
; V00 arg0 [V00,T19] ( 5, 5 ) ref -> x0 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax>
; V01 arg1 [V01,T10] ( 6, 11 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]>
; V02 arg2 [V02,T13] ( 4, 6 ) ref -> x20 class-hnd single-def <System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]>
-; V03 loc0 [V03 ] ( 5, 7 ) struct (24) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
+; V03 loc0 [V03 ] ( 5, 7 ) struct (24) [fp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
; V04 loc1 [V04,T11] ( 7, 10.04) ref -> x22 class-hnd exact single-def <<unknown class>>
; V05 loc2 [V05,T20] ( 5, 7 ) int -> x23 single-def
; V06 loc3 [V06,T03] ( 16, 25.04) int -> x24
@@ -20,13 +20,13 @@
; V08 loc5 [V08,T08] ( 10, 16 ) ref -> x27 class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
;* V09 loc6 [V09 ] ( 0, 0 ) ushort -> zero-ref
; V10 loc7 [V10,T12] ( 8, 8 ) ref -> x26 class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax>
-; V11 loc8 [V11 ] ( 4, 4 ) struct (24) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
+; V11 loc8 [V11 ] ( 4, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
; V12 loc9 [V12,T22] ( 3, 6 ) int -> x20 single-def
; V13 loc10 [V13,T04] ( 7, 21 ) int -> x21
; V14 loc11 [V14,T01] ( 6, 72 ) ref -> x24 class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbol>
; V15 loc12 [V15,T00] ( 6, 86 ) int -> x0
; V16 loc13 [V16,T23] ( 2, 4 ) ref -> x24 class-hnd <<unknown class>>
-; V17 loc14 [V17 ] ( 4, 8 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]>
+; V17 loc14 [V17 ] ( 4, 8 ) struct ( 8) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]>
; V18 loc15 [V18,T24] ( 2, 4 ) ref -> x24 class-hnd <<unknown class>>
;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V20 tmp1 [V20,T05] ( 10, 20 ) ref -> x27 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
@@ -35,7 +35,7 @@
;* V23 tmp4 [V23 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
; V24 tmp5 [V24,T14] ( 4, 8 ) ref -> x0 class-hnd "Inlining Arg" <System.String>
;* V25 tmp6 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.Symbols.AliasSymbol>
-; V26 tmp7 [V26 ] ( 4, 8 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V17.array (fldOffset=0x0)" P-DEP
+; V26 tmp7 [V26 ] ( 4, 8 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V17.array (fldOffset=0x0)" P-DEP
; V27 tmp8 [V27,T25] ( 2, 4 ) ref -> x1 "field V22.array (fldOffset=0x0)" P-INDEP
; V28 tmp9 [V28,T26] ( 2, 4 ) ref -> x1 "field V23.array (fldOffset=0x0)" P-INDEP
; V29 tmp10 [V29,T27] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
@@ -47,27 +47,27 @@
; V35 tmp16 [V35,T18] ( 2, 8 ) ref -> x2 "argument with side effect"
; V36 cse0 [V36,T21] ( 5, 7 ) long -> x21 "CSE - moderate"
; V37 cse1 [V37,T02] ( 2, 33 ) long -> x23 hoist "CSE - aggressive"
-; TEMP_01 byref -> [fp+0x18]
;
-; Lcl frame size = 72
+; Lcl frame size = 56
G_M1087_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0xA0]!
- stp x19, x20, [sp, #0x58]
- stp x21, x22, [sp, #0x68]
- stp x23, x24, [sp, #0x78]
- stp x25, x26, [sp, #0x88]
- str x27, [sp, #0x98]
+ stp fp, lr, [sp, #-0x90]!
+ stp x19, x20, [sp, #0x48]
+ stp x21, x22, [sp, #0x58]
+ stp x23, x24, [sp, #0x68]
+ stp x25, x26, [sp, #0x78]
+ str x27, [sp, #0x88]
mov fp, sp
- add x9, fp, #24
+ add x9, fp, #16
movi v16.16b, #0
stp q16, q16, [x9]
- stp q16, q16, [x9, #0x20]
+ stp xzr, xzr, [x9, #0x20]
+ str xzr, [x9, #0x30]
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=52 bbWeight=1 PerfScore 10.50
+ ;; size=56 bbWeight=1 PerfScore 11.50
G_M1087_IG02: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldrsb wzr, [x0]
@@ -85,7 +85,7 @@ G_M1087_IG02: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
ldr x4, [x11]
blr x4
; byrRegs -[x2]
- add x8, fp, #64 // [V03 loc0]
+ add x8, fp, #48 // [V03 loc0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr wzr, [x0]
@@ -96,7 +96,7 @@ G_M1087_IG02: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
add x1, x1, [LOW RELOC #0xD1FFAB1E]
ldr x21, [x1]
mov x1, x21
- add x0, fp, #64 // [V03 loc0]
+ add x0, fp, #48 // [V03 loc0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
@@ -110,7 +110,7 @@ G_M1087_IG02: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
mov x22, x0
; gcrRegs +[x22]
mov x1, x21
- add x0, fp, #64 // [V03 loc0]
+ add x0, fp, #48 // [V03 loc0]
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -125,7 +125,7 @@ G_M1087_IG02: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
;; size=184 bbWeight=1 PerfScore 54.00
G_M1087_IG03: ; bbWeight=3.96, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
mov x1, x21
- add x0, fp, #64 // [V03 loc0]
+ add x0, fp, #48 // [V03 loc0]
mov w2, w24
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -160,7 +160,7 @@ G_M1087_IG04: ; bbWeight=1.98, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
; gcrRegs -[x25]
mov x26, x0
; gcrRegs +[x26]
- add x8, fp, #40 // [V11 loc8]
+ add x8, fp, #24 // [V11 loc8]
mov x0, x26
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -175,7 +175,7 @@ G_M1087_IG04: ; bbWeight=1.98, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
; gcrRegs +[x0]
mov x27, x0
; gcrRegs +[x27]
- add x0, fp, #40 // [V11 loc8]
+ add x0, fp, #24 // [V11 loc8]
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -302,7 +302,7 @@ G_M1087_IG07: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}
G_M1087_IG08: ; bbWeight=0.04, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
mov x1, x21
- add x0, fp, #64 // [V03 loc0]
+ add x0, fp, #48 // [V03 loc0]
mov w2, w24
adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -337,7 +337,7 @@ G_M1087_IG09: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
; gcrRegs -[x25]
mov x26, x0
; gcrRegs +[x26]
- add x8, fp, #40 // [V11 loc8]
+ add x8, fp, #24 // [V11 loc8]
mov x0, x26
adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -352,7 +352,7 @@ G_M1087_IG09: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
; gcrRegs +[x0]
mov x27, x0
; gcrRegs +[x27]
- add x0, fp, #40 // [V11 loc8]
+ add x0, fp, #24 // [V11 loc8]
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -370,16 +370,12 @@ G_M1087_IG09: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
blr x12
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- add x14, x27, #48
- ; byrRegs +[x14]
- str x14, [fp, #0x18] // [TEMP_01]
mov x0, x26
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
- ; byrRegs -[x14]
mov x1, x26
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
@@ -388,7 +384,7 @@ G_M1087_IG09: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
ldr x2, [x11]
blr x2
; gcrRegs -[x1 x26]
- ldr x14, [fp, #0x18] // [TEMP_01]
+ add x14, x27, #48
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
@@ -399,7 +395,7 @@ G_M1087_IG09: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
; gcrRegs -[x0 x15]
; byrRegs -[x14]
b G_M1087_IG11
- ;; size=200 bbWeight=0.02 PerfScore 1.14
+ ;; size=192 bbWeight=0.02 PerfScore 1.08
G_M1087_IG10: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byrefRegs=0000 {}, byref
; gcrRegs -[x27] +[x25]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
@@ -423,16 +419,12 @@ G_M1087_IG10: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
blr x12
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- add x14, x27, #48
- ; byrRegs +[x14]
- str x14, [fp, #0x18] // [TEMP_01]
mov x0, x25
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
- ; byrRegs -[x14]
mov x1, x25
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
@@ -441,7 +433,7 @@ G_M1087_IG10: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
ldr x2, [x11]
blr x2
; gcrRegs -[x1 x25]
- ldr x14, [fp, #0x18] // [TEMP_01]
+ add x14, x27, #48
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
@@ -451,7 +443,7 @@ G_M1087_IG10: ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
blr x12
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ;; size=136 bbWeight=0.02 PerfScore 0.84
+ ;; size=128 bbWeight=0.02 PerfScore 0.78
G_M1087_IG11: ; bbWeight=0.04, gcrefRegs=8580000 {x19 x20 x22 x27}, byrefRegs=0000 {}, byref, isz
ldr w14, [x22, #0x08]
cmp w24, w14
@@ -569,11 +561,11 @@ G_M1087_IG18: ; bbWeight=2, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=00
ldr x2, [x11]
blr x2
; gcrRegs -[x1] +[x0]
- str x0, [fp, #0x20] // [V17 loc14]
+ str x0, [fp, #0x10] // [V17 loc14]
adrp x1, [HIGH RELOC #0xD1FFAB1E] // <unknown method>
add x1, x1, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x1]
- add x0, fp, #32 // [V17 loc14]
+ add x0, fp, #16 // [V17 loc14]
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -622,11 +614,11 @@ G_M1087_IG19: ; bbWeight=2, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=00
ldr x2, [x11]
blr x2
; gcrRegs -[x1] +[x0]
- str x0, [fp, #0x20] // [V17 loc14]
+ str x0, [fp, #0x10] // [V17 loc14]
adrp x1, [HIGH RELOC #0xD1FFAB1E] // <unknown method>
add x1, x1, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x1]
- add x0, fp, #32 // [V17 loc14]
+ add x0, fp, #16 // [V17 loc14]
; gcrRegs -[x0]
...
-4 (-0.15%) : 209718.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
@@ -35,13 +35,13 @@
; V23 tmp2 [V23,T55] ( 2, 0 ) ref -> x19 class-hnd single-def "finalizable newobj spill" <<unknown class>>
; V24 tmp3 [V24,T46] ( 3, 2 ) int -> x26
; V25 tmp4 [V25,T22] ( 4, 16 ) int -> x25 "impSpillLclRefs"
-; V26 tmp5 [V26,T33] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
+; V26 tmp5 [V26,T32] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
;* V27 tmp6 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V28 tmp7 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V29 tmp8 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V30 tmp9 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>>
; V31 tmp10 [V31,T54] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V32 tmp11 [V32,T29] ( 2, 0.16) ubyte -> x0 "Inline return value spill temp"
+;* V32 tmp11 [V32,T40] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp12 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
; V34 tmp13 [V34,T14] ( 6, 24 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
;* V35 tmp14 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -57,18 +57,18 @@
; V45 tmp24 [V45,T09] ( 4, 32 ) ref -> x0 "argument with side effect"
; V46 tmp25 [V46,T10] ( 4, 32 ) ref -> x0 "argument with side effect"
; V47 tmp26 [V47,T11] ( 4, 32 ) ref -> [fp+0x30] "argument with side effect"
-; V48 tmp27 [V48,T34] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V49 tmp28 [V49,T35] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V50 tmp29 [V50,T36] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V51 tmp30 [V51,T37] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V52 tmp31 [V52,T38] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V53 tmp32 [V53,T39] ( 2, 8 ) ref -> x1 "argument with side effect"
-; V54 tmp33 [V54,T40] ( 2, 8 ) ref -> [fp+0x28] spill-single-def "argument with side effect"
+; V48 tmp27 [V48,T33] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V49 tmp28 [V49,T34] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V50 tmp29 [V50,T35] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V51 tmp30 [V51,T36] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V52 tmp31 [V52,T37] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V53 tmp32 [V53,T38] ( 2, 8 ) ref -> x1 "argument with side effect"
+; V54 tmp33 [V54,T39] ( 2, 8 ) ref -> [fp+0x28] spill-single-def "argument with side effect"
; V55 tmp34 [V55,T20] ( 4, 16 ) ref -> [fp+0x20] "argument with side effect"
; V56 tmp35 [V56,T21] ( 4, 16 ) ref -> x1 "argument with side effect"
-; V57 tmp36 [V57,T30] ( 4, 8 ) ref -> [fp+0x18] "argument with side effect"
-; V58 tmp37 [V58,T31] ( 4, 8 ) ref -> x3 "argument with side effect"
-; V59 tmp38 [V59,T32] ( 4, 8 ) ref -> x0 "argument with side effect"
+; V57 tmp36 [V57,T29] ( 4, 8 ) ref -> [fp+0x18] "argument with side effect"
+; V58 tmp37 [V58,T30] ( 4, 8 ) ref -> x3 "argument with side effect"
+; V59 tmp38 [V59,T31] ( 4, 8 ) ref -> x0 "argument with side effect"
; V60 cse0 [V60,T13] ( 8, 28 ) long -> [fp+0x78] multi-def "CSE - aggressive"
; V61 cse1 [V61,T00] ( 6, 71.28) long -> [fp+0x70] spill-single-def "CSE - aggressive"
; V62 cse2 [V62,T26] ( 4, 11.88) long -> [fp+0x68] spill-single-def "CSE - moderate"
@@ -478,14 +478,11 @@ G_M58711_IG18: ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
ldr x11, [x20, x1]
; gcrRegs +[x11]
cmp x0, x11
- cset x0, eq
- ; gcrRegs -[x0]
- cbz w0, G_M58711_IG21
+ bne G_M58711_IG21
ldr x1, [fp, #0x10] // [V67 cse7]
; byrRegs +[x1]
ldr x2, [fp, #0x58] // [V64 cse4]
ldr x0, [x1, x2]
- ; gcrRegs +[x0]
ldr x11, [fp, #0x40] // [V71 cse11]
; gcrRegs -[x11]
ldr wzr, [x0]
@@ -513,7 +510,7 @@ G_M58711_IG18: ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
; gcr arg pop 0
cbnz w0, G_M58711_IG20
b G_M58711_IG21
- ;; size=296 bbWeight=0.08 PerfScore 8.96
+ ;; size=292 bbWeight=0.08 PerfScore 8.92
G_M58711_IG19: ; bbWeight=0.08, gcVars=0000000000000014 {V19 V67}, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V02 V04 V19 V67}
ldr x1, [fp, #0x10] // [V67 cse7]
@@ -1134,7 +1131,7 @@ G_M58711_IG55: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
brk_windows #0
;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2628, prolog size 40, PerfScore 2218.63, instruction count 657, allocated bytes for code 2628 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
+; Total bytes of code 2624, prolog size 40, PerfScore 2218.59, instruction count 656, allocated bytes for code 2624 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
; ============================================================
Unwind Info:
@@ -1145,7 +1142,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 657 (0x00291) Actual length = 2628 (0x000a44)
+ Function Length : 656 (0x00290) Actual length = 2624 (0x000a40)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.15%) : 240066.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
@@ -34,7 +34,7 @@
; V22 tmp2 [V22,T55] ( 2, 0 ) ref -> x19 class-hnd single-def "finalizable newobj spill" <<unknown class>>
; V23 tmp3 [V23,T46] ( 3, 2 ) int -> x26
; V24 tmp4 [V24,T22] ( 4, 16 ) int -> x25 "impSpillLclRefs"
-; V25 tmp5 [V25,T33] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
+; V25 tmp5 [V25,T32] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
;* V26 tmp6 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V27 tmp7 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V28 tmp8 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
@@ -42,7 +42,7 @@
; V30 tmp10 [V30,T53] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V31 tmp11 [V31,T56] ( 2, 0 ) ref -> x19 class-hnd single-def "finalizable newobj spill" <<unknown class>>
; V32 tmp12 [V32,T54] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V33 tmp13 [V33,T29] ( 2, 0.16) ubyte -> x0 "Inline return value spill temp"
+;* V33 tmp13 [V33,T40] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V34 tmp14 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
; V35 tmp15 [V35,T14] ( 6, 24 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
;* V36 tmp16 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -58,18 +58,18 @@
; V46 tmp26 [V46,T09] ( 4, 32 ) ref -> x0 "argument with side effect"
; V47 tmp27 [V47,T10] ( 4, 32 ) ref -> x0 "argument with side effect"
; V48 tmp28 [V48,T11] ( 4, 32 ) ref -> [fp+0x30] "argument with side effect"
-; V49 tmp29 [V49,T34] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V50 tmp30 [V50,T35] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V51 tmp31 [V51,T36] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V52 tmp32 [V52,T37] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V53 tmp33 [V53,T38] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V54 tmp34 [V54,T39] ( 2, 8 ) ref -> x1 "argument with side effect"
-; V55 tmp35 [V55,T40] ( 2, 8 ) ref -> [fp+0x28] spill-single-def "argument with side effect"
+; V49 tmp29 [V49,T33] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V50 tmp30 [V50,T34] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V51 tmp31 [V51,T35] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V52 tmp32 [V52,T36] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V53 tmp33 [V53,T37] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V54 tmp34 [V54,T38] ( 2, 8 ) ref -> x1 "argument with side effect"
+; V55 tmp35 [V55,T39] ( 2, 8 ) ref -> [fp+0x28] spill-single-def "argument with side effect"
; V56 tmp36 [V56,T20] ( 4, 16 ) ref -> [fp+0x20] "argument with side effect"
; V57 tmp37 [V57,T21] ( 4, 16 ) ref -> x1 "argument with side effect"
-; V58 tmp38 [V58,T30] ( 4, 8 ) ref -> [fp+0x18] "argument with side effect"
-; V59 tmp39 [V59,T31] ( 4, 8 ) ref -> x3 "argument with side effect"
-; V60 tmp40 [V60,T32] ( 4, 8 ) ref -> x0 "argument with side effect"
+; V58 tmp38 [V58,T29] ( 4, 8 ) ref -> [fp+0x18] "argument with side effect"
+; V59 tmp39 [V59,T30] ( 4, 8 ) ref -> x3 "argument with side effect"
+; V60 tmp40 [V60,T31] ( 4, 8 ) ref -> x0 "argument with side effect"
; V61 cse0 [V61,T13] ( 8, 28 ) long -> [fp+0x78] multi-def "CSE - aggressive"
; V62 cse1 [V62,T00] ( 6, 71.28) long -> [fp+0x70] spill-single-def "CSE - aggressive"
; V63 cse2 [V63,T26] ( 4, 11.88) long -> [fp+0x68] spill-single-def "CSE - moderate"
@@ -479,14 +479,11 @@ G_M58711_IG18: ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
ldr x11, [x20, x1]
; gcrRegs +[x11]
cmp x0, x11
- cset x0, eq
- ; gcrRegs -[x0]
- cbz w0, G_M58711_IG21
+ bne G_M58711_IG21
ldr x1, [fp, #0x10] // [V68 cse7]
; byrRegs +[x1]
ldr x2, [fp, #0x58] // [V65 cse4]
ldr x0, [x1, x2]
- ; gcrRegs +[x0]
ldr x11, [fp, #0x40] // [V72 cse11]
; gcrRegs -[x11]
ldr wzr, [x0]
@@ -514,7 +511,7 @@ G_M58711_IG18: ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
; gcr arg pop 0
cbnz w0, G_M58711_IG20
b G_M58711_IG21
- ;; size=296 bbWeight=0.08 PerfScore 8.96
+ ;; size=292 bbWeight=0.08 PerfScore 8.92
G_M58711_IG19: ; bbWeight=0.08, gcVars=0000000000000014 {V18 V68}, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V02 V04 V18 V68}
ldr x1, [fp, #0x10] // [V68 cse7]
@@ -1156,7 +1153,7 @@ G_M58711_IG55: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=84 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2676, prolog size 40, PerfScore 2218.63, instruction count 669, allocated bytes for code 2676 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
+; Total bytes of code 2672, prolog size 40, PerfScore 2218.59, instruction count 668, allocated bytes for code 2672 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
; ============================================================
Unwind Info:
@@ -1167,7 +1164,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 669 (0x0029d) Actual length = 2676 (0x000a74)
+ Function Length : 668 (0x0029c) Actual length = 2672 (0x000a70)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.10%) : 113946.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray
1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
@@ -54,7 +54,7 @@
; V42 tmp8 [V42,T10] ( 6, 48 ) ref -> [fp+0x38] class-hnd "non-inline candidate call" <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol>
;* V43 tmp9 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V44 tmp10 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
-; V45 tmp11 [V45,T41] ( 2, 0.16) ubyte -> x1 "Inline return value spill temp"
+;* V45 tmp11 [V45,T42] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V46 tmp12 [V46,T16] ( 4, 32 ) ref -> [fp+0x30] class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol>
;* V47 tmp13 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
; V48 tmp14 [V48,T30] ( 4, 16 ) ubyte -> x2 "Inline return value spill temp"
@@ -100,7 +100,7 @@
;* V88 tmp54 [V88,T57] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; V89 tmp55 [V89,T45] ( 2, 8 ) int -> x1 "argument with side effect"
; V90 cse0 [V90,T04] ( 14, 72 ) long -> [fp+0x78] multi-def "CSE - aggressive"
-; V91 cse1 [V91,T42] ( 4, 8 ) int -> [fp+0x74] spill-single-def "CSE - moderate"
+; V91 cse1 [V91,T41] ( 4, 8 ) int -> [fp+0x74] spill-single-def "CSE - moderate"
; V92 cse2 [V92,T15] ( 9, 38 ) long -> x27 "CSE - aggressive"
; V93 cse3 [V93,T09] ( 10, 56 ) long -> [fp+0x68] multi-def "CSE - aggressive"
; V94 cse4 [V94,T02] ( 18, 72 ) long -> [fp+0x60] multi-def "CSE - aggressive"
@@ -805,10 +805,9 @@ G_M30062_IG27: ; bbWeight=0.08, gcrefRegs=D80000 {x19 x20 x22 x23}, byref
blr x1
; gcrRegs -[x0]
cmp w0, #32
- cset x1, ne
- cbz w1, G_M30062_IG34
+ beq G_M30062_IG34
b G_M30062_IG38
- ;; size=260 bbWeight=0.08 PerfScore 7.72
+ ;; size=256 bbWeight=0.08 PerfScore 7.68
G_M30062_IG28: ; bbWeight=0.08, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=2200000 {x21 x25}, byref, isz
ldr x1, [fp, #0x78] // [V90 cse0]
add x0, fp, #0xD1FFAB1E // [V19 loc12]
@@ -1420,7 +1419,7 @@ G_M30062_IG71: ; bbWeight=0, gcVars=00000000000000000000000000000000 {},
brk_windows #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 3844, prolog size 64, PerfScore 3960.13, instruction count 961, allocated bytes for code 3844 (MethodHash=40c98a91) for method Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
+; Total bytes of code 3840, prolog size 64, PerfScore 3960.09, instruction count 960, allocated bytes for code 3840 (MethodHash=40c98a91) for method Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
; ============================================================
Unwind Info:
@@ -1431,7 +1430,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 961 (0x003c1) Actual length = 3844 (0x000f04)
+ Function Length : 960 (0x003c0) Actual length = 3840 (0x000f00)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries.pmi.windows.arm64.checked.mch
-20 (-4.63%) : 165253.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,System.Nullable
1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,System.Nullable
1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 17 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
+; V00 this [V00,T04] ( 7, 16 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
; V01 arg1 [V01,T17] ( 4, 4 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
-; V02 arg2 [V02,T20] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V02 arg2 [V02,T19] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V03 loc0 [V03 ] ( 3, 11 ) struct (24) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SmallDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
; V04 loc1 [V04,T10] ( 4, 8 ) struct (16) [fp+0x30] do-not-enreg[SFR] multireg-ret must-init ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,33 +27,30 @@
; V16 tmp11 [V16 ] ( 3, 11 ) ref -> [fp+0x40] do-not-enreg[X] addr-exposed "field V03._stack (fldOffset=0x0)" P-DEP
; V17 tmp12 [V17 ] ( 3, 11 ) ref -> [fp+0x48] do-not-enreg[X] addr-exposed "field V03._next (fldOffset=0x8)" P-DEP
; V18 tmp13 [V18 ] ( 3, 11 ) ref -> [fp+0x50] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x10)" P-DEP
-; V19 tmp14 [V19,T25] ( 2, 4 ) ubyte -> x23 "field V11.hasValue (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T26] ( 2, 4 ) int -> x24 "field V11.value (fldOffset=0x4)" P-INDEP
+; V19 tmp14 [V19,T23] ( 2, 4 ) ubyte -> x23 "field V11.hasValue (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T24] ( 2, 4 ) int -> x24 "field V11.value (fldOffset=0x4)" P-INDEP
; V21 tmp16 [V21 ] ( 2, 4 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V12._stack (fldOffset=0x0)" P-DEP
; V22 tmp17 [V22 ] ( 2, 4 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V12._next (fldOffset=0x8)" P-DEP
; V23 tmp18 [V23 ] ( 2, 4 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V12._current (fldOffset=0x10)" P-DEP
-; V24 tmp19 [V24,T27] ( 2, 4 ) long -> x1 "argument with side effect"
+; V24 tmp19 [V24,T25] ( 2, 4 ) long -> x1 "argument with side effect"
; V25 tmp20 [V25,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V26 tmp21 [V26,T14] ( 2, 8 ) long -> x1 "argument with side effect"
; V27 tmp22 [V27,T07] ( 3, 12 ) struct ( 8) [fp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
; V28 tmp23 [V28,T15] ( 2, 8 ) int -> x1 "argument with side effect"
; V29 tmp24 [V29,T12] ( 2, 8 ) ref -> x0 "argument with side effect"
; V30 tmp25 [V30,T13] ( 2, 8 ) ref -> x2 "argument with side effect"
-; V31 cse0 [V31,T23] ( 3, 4 ) long -> x22 "CSE - aggressive"
-;* V32 cse1 [V32,T29] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V31 cse0 [V31,T21] ( 3, 4 ) long -> x22 "CSE - aggressive"
+;* V32 cse1 [V32,T26] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; V33 cse2 [V33,T16] ( 4, 4.40) long -> x21 "CSE - aggressive"
-; V34 rat0 [V34,T21] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V35 rat1 [V35,T24] ( 3, 4 ) long -> x22 "runtime lookup"
+; V34 rat0 [V34,T20] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V35 rat1 [V35,T22] ( 3, 4 ) long -> x22 "runtime lookup"
; V36 rat2 [V36,T18] ( 3, 5.60) long -> x22 "fgMakeTemp is creating a new local variable"
-; V37 rat3 [V37,T22] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V38 rat4 [V38,T28] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V39 rat5 [V39,T19] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V40 rat6 [V40,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V41 rat7 [V41,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V42 rat8 [V42,T09] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-; V43 rat9 [V43,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V44 rat10 [V44,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V45 rat11 [V45,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V37 rat3 [V37,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V38 rat4 [V38,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V39 rat5 [V39,T09] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+; V40 rat6 [V40,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V41 rat7 [V41,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V42 rat8 [V42,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 80
@@ -118,14 +115,9 @@ G_M14191_IG06: ; bbWeight=1, nogc, extend
ldr x0, [fp, #0x28]
str x0, [fp, #0x50]
;; size=16 bbWeight=1 PerfScore 7.00
-G_M14191_IG07: ; bbWeight=1, isz, extend
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x58]
- cbnz x0, G_M14191_IG12
+G_M14191_IG07: ; bbWeight=1, extend
b G_M14191_IG12
- ;; size=24 bbWeight=1 PerfScore 14.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M14191_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x22
add x0, fp, #64 // [V03 loc0]
@@ -216,7 +208,7 @@ G_M14191_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ret lr
;; size=20 bbWeight=1 PerfScore 5.00
-; Total bytes of code 432, prolog size 40, PerfScore 322.60, instruction count 108, allocated bytes for code 432 (MethodHash=ea3fc890) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 412, prolog size 40, PerfScore 309.60, instruction count 103, allocated bytes for code 412 (MethodHash=ea3fc890) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -227,7 +219,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
+ Function Length : 103 (0x00067) Actual length = 412 (0x00019c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-4.63%) : 129759.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,System.Nullable
1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,System.Nullable
1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 17 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
+; V00 this [V00,T04] ( 7, 16 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
; V01 arg1 [V01,T17] ( 4, 4 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
-; V02 arg2 [V02,T20] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V02 arg2 [V02,T19] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V03 loc0 [V03 ] ( 3, 11 ) struct (24) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SmallDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
; V04 loc1 [V04,T10] ( 4, 8 ) struct (16) [fp+0x30] do-not-enreg[SFR] multireg-ret must-init ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,33 +27,30 @@
; V16 tmp11 [V16 ] ( 3, 11 ) ref -> [fp+0x40] do-not-enreg[X] addr-exposed "field V03._stack (fldOffset=0x0)" P-DEP
; V17 tmp12 [V17 ] ( 3, 11 ) ref -> [fp+0x48] do-not-enreg[X] addr-exposed "field V03._next (fldOffset=0x8)" P-DEP
; V18 tmp13 [V18 ] ( 3, 11 ) ref -> [fp+0x50] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x10)" P-DEP
-; V19 tmp14 [V19,T25] ( 2, 4 ) ubyte -> x23 "field V11.hasValue (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T26] ( 2, 4 ) int -> x24 "field V11.value (fldOffset=0x4)" P-INDEP
+; V19 tmp14 [V19,T23] ( 2, 4 ) ubyte -> x23 "field V11.hasValue (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T24] ( 2, 4 ) int -> x24 "field V11.value (fldOffset=0x4)" P-INDEP
; V21 tmp16 [V21 ] ( 2, 4 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V12._stack (fldOffset=0x0)" P-DEP
; V22 tmp17 [V22 ] ( 2, 4 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V12._next (fldOffset=0x8)" P-DEP
; V23 tmp18 [V23 ] ( 2, 4 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V12._current (fldOffset=0x10)" P-DEP
-; V24 tmp19 [V24,T27] ( 2, 4 ) long -> x1 "argument with side effect"
+; V24 tmp19 [V24,T25] ( 2, 4 ) long -> x1 "argument with side effect"
; V25 tmp20 [V25,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V26 tmp21 [V26,T14] ( 2, 8 ) long -> x1 "argument with side effect"
; V27 tmp22 [V27,T07] ( 3, 12 ) struct ( 8) [fp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
; V28 tmp23 [V28,T15] ( 2, 8 ) int -> x1 "argument with side effect"
; V29 tmp24 [V29,T12] ( 2, 8 ) ref -> x0 "argument with side effect"
; V30 tmp25 [V30,T13] ( 2, 8 ) ref -> x2 "argument with side effect"
-; V31 cse0 [V31,T23] ( 3, 4 ) long -> x22 "CSE - aggressive"
-;* V32 cse1 [V32,T29] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V31 cse0 [V31,T21] ( 3, 4 ) long -> x22 "CSE - aggressive"
+;* V32 cse1 [V32,T26] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; V33 cse2 [V33,T16] ( 4, 4.40) long -> x21 "CSE - aggressive"
-; V34 rat0 [V34,T21] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V35 rat1 [V35,T24] ( 3, 4 ) long -> x22 "runtime lookup"
+; V34 rat0 [V34,T20] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V35 rat1 [V35,T22] ( 3, 4 ) long -> x22 "runtime lookup"
; V36 rat2 [V36,T18] ( 3, 5.60) long -> x22 "fgMakeTemp is creating a new local variable"
-; V37 rat3 [V37,T22] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V38 rat4 [V38,T28] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V39 rat5 [V39,T19] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V40 rat6 [V40,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V41 rat7 [V41,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V42 rat8 [V42,T09] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-; V43 rat9 [V43,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V44 rat10 [V44,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V45 rat11 [V45,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V37 rat3 [V37,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V38 rat4 [V38,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V39 rat5 [V39,T09] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+; V40 rat6 [V40,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V41 rat7 [V41,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V42 rat8 [V42,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 80
@@ -118,14 +115,9 @@ G_M14191_IG06: ; bbWeight=1, nogc, extend
ldr x0, [fp, #0x28]
str x0, [fp, #0x50]
;; size=16 bbWeight=1 PerfScore 7.00
-G_M14191_IG07: ; bbWeight=1, isz, extend
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x58]
- cbnz x0, G_M14191_IG12
+G_M14191_IG07: ; bbWeight=1, extend
b G_M14191_IG12
- ;; size=24 bbWeight=1 PerfScore 14.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M14191_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x22
add x0, fp, #64 // [V03 loc0]
@@ -216,7 +208,7 @@ G_M14191_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ret lr
;; size=20 bbWeight=1 PerfScore 5.00
-; Total bytes of code 432, prolog size 40, PerfScore 322.60, instruction count 108, allocated bytes for code 432 (MethodHash=ea3fc890) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 412, prolog size 40, PerfScore 309.60, instruction count 103, allocated bytes for code 412 (MethodHash=ea3fc890) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -227,7 +219,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
+ Function Length : 103 (0x00067) Actual length = 412 (0x00019c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-3.00%) : 255940.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
@@ -8,18 +8,18 @@
; 2 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 14 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]>
+; V00 this [V00,T04] ( 7, 13 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]>
; V01 arg1 [V01,T05] ( 8, 12 ) ref -> x19 class-hnd single-def <System.Array>
; V02 arg2 [V02,T08] ( 6, 8 ) int -> registers
; V03 loc0 [V03 ] ( 5, 12 ) struct (48) [fp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableSortedSet`1+Enumerator[System.__Canon]>
-; V04 loc1 [V04,T22] ( 2, 4 ) ref -> x23 class-hnd <System.__Canon>
+; V04 loc1 [V04,T20] ( 2, 4 ) ref -> x23 class-hnd <System.__Canon>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V09 tmp4 [V09,T07] ( 3, 12 ) int -> x20 "impSpillLclRefs"
;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V11 tmp6 [V11,T19] ( 6, 4 ) long -> x2 "Indirect call through function pointer"
+; V11 tmp6 [V11,T17] ( 6, 4 ) long -> x2 "Indirect call through function pointer"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V14 tmp9 [V14 ] ( 2, 4 ) struct (48) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableSortedSet`1+Enumerator[System.__Canon]>
@@ -29,27 +29,24 @@
; V18 tmp13 [V18,T13] ( 3, 6 ) int -> x0 "Inline stloc first use temp"
; V19 tmp14 [V19,T06] ( 3, 12 ) byref -> x25 "Inlining Arg"
;* V20 tmp15 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp16 [V21,T29] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V22 tmp17 [V22,T23] ( 2, 4 ) long -> x1 "argument with side effect"
+; V21 tmp16 [V21,T26] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V22 tmp17 [V22,T21] ( 2, 4 ) long -> x1 "argument with side effect"
; V23 tmp18 [V23,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V24 tmp19 [V24,T09] ( 2, 8 ) long -> x1 "argument with side effect"
; V25 tmp20 [V25,T10] ( 2, 8 ) long -> x2 "argument with side effect"
-; V26 PSPSym [V26,T26] ( 1, 1 ) long -> [fp+0x80] do-not-enreg[V] "PSPSym"
-; V27 cse0 [V27,T20] ( 3, 4 ) long -> x22 "CSE - aggressive"
-; V28 cse1 [V28,T24] ( 6, 3.20) long -> x21 multi-def "CSE - aggressive"
+; V26 PSPSym [V26,T23] ( 1, 1 ) long -> [fp+0x80] do-not-enreg[V] "PSPSym"
+; V27 cse0 [V27,T18] ( 3, 4 ) long -> x22 "CSE - aggressive"
+; V28 cse1 [V28,T22] ( 6, 3.20) long -> x21 multi-def "CSE - aggressive"
; V29 cse2 [V29,T11] ( 3, 6 ) ref -> x1 "CSE - aggressive"
-; V30 rat0 [V30,T17] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V31 rat1 [V31,T21] ( 3, 4 ) long -> x22 "runtime lookup"
+; V30 rat0 [V30,T16] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
+; V31 rat1 [V31,T19] ( 3, 4 ) long -> x22 "runtime lookup"
; V32 rat2 [V32,T14] ( 3, 5.60) long -> x22 "fgMakeTemp is creating a new local variable"
-; V33 rat3 [V33,T18] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V34 rat4 [V34,T25] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V35 rat5 [V35,T15] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V36 rat6 [V36,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V37 rat7 [V37,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V38 rat8 [V38,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
-; V39 rat9 [V39,T16] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
-; V40 rat10 [V40,T27] ( 3, 0 ) long -> x21 "Spilling to split statement for tree"
-; V41 rat11 [V41,T28] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V33 rat3 [V33,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V34 rat4 [V34,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V35 rat5 [V35,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+; V36 rat6 [V36,T15] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V37 rat7 [V37,T24] ( 3, 0 ) long -> x21 "Spilling to split statement for tree"
+; V38 rat8 [V38,T25] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 120
@@ -127,18 +124,10 @@ G_M52227_IG06: ; bbWeight=1, nogc, extend
ldp x0, x1, [fp, #0x38]
stp x0, x1, [fp, #0x68]
;; size=24 bbWeight=1 PerfScore 12.00
-G_M52227_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x10] // [V00 this]
- ; gcrRegs +[x2]
- ldr x0, [x2]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x10]
- cbnz x0, G_M52227_IG11
+G_M52227_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
b G_M52227_IG11
- ;; size=28 bbWeight=1 PerfScore 16.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M52227_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
mov x1, x22
add x0, fp, #72 // [V03 loc0]
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableSortedSet`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this
@@ -200,16 +189,16 @@ G_M52227_IG10: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {
; gcrRegs -[x0-x1 x23]
; gcr arg pop 0
mov w20, w24
+ ;; size=48 bbWeight=2 PerfScore 19.00
+G_M52227_IG11: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x2, [fp, #0x10] // [V00 this]
; gcrRegs +[x2]
- ;; size=52 bbWeight=2 PerfScore 23.00
-G_M52227_IG11: ; bbWeight=8, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x2]
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x10]
cbz x1, G_M52227_IG13
- ;; size=20 bbWeight=8 PerfScore 104.00
+ ;; size=24 bbWeight=8 PerfScore 120.00
G_M52227_IG12: ; bbWeight=6.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
b G_M52227_IG14
@@ -359,7 +348,7 @@ G_M52227_IG29: ; bbWeight=0, funclet epilog, nogc, extend
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 800, prolog size 64, PerfScore 352.20, instruction count 200, allocated bytes for code 800 (MethodHash=24b133fc) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
+; Total bytes of code 776, prolog size 64, PerfScore 349.20, instruction count 194, allocated bytes for code 776 (MethodHash=24b133fc) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
; ============================================================
Unwind Info:
@@ -370,7 +359,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 172 (0x000ac) Actual length = 688 (0x0002b0)
+ Function Length : 166 (0x000a6) Actual length = 664 (0x000298)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 139928.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable
1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)
@@ -16,7 +16,7 @@
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
; V06 loc3 [V06,T14] ( 4, 5 ) int -> x21
; V07 loc4 [V07,T15] ( 4, 5 ) int -> x24
-; V08 loc5 [V08,T38] ( 3, 1.50) int -> x19
+; V08 loc5 [V08,T36] ( 3, 1.50) int -> x19
; V09 loc6 [V09,T07] ( 13, 11.50) ref -> [fp-0x68] do-not-enreg[M] class-hnd EH-live <<unknown class>>
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
; V11 loc8 [V11,T05] ( 5, 14 ) int -> x0
@@ -39,7 +39,7 @@
; V28 tmp16 [V28 ] ( 3, 3 ) struct ( 8) [fp-0x50] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
; V29 tmp17 [V29,T18] ( 8, 4 ) int -> x22 "Inline return value spill temp"
; V30 tmp18 [V30,T24] ( 3, 3 ) int -> x1 "Inlining Arg"
-; V31 tmp19 [V31,T34] ( 2, 2 ) long -> x21 "Inlining Arg"
+; V31 tmp19 [V31,T32] ( 2, 2 ) long -> x21 "Inlining Arg"
; V32 tmp20 [V32,T23] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <int[]>
;* V33 tmp21 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V34 tmp22 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -51,13 +51,13 @@
; V40 tmp28 [V40,T19] ( 5, 4.00) long -> [fp-0x58] spill-single-def "Inlining Arg"
;* V41 tmp29 [V41 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V42 tmp30 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V43 tmp31 [V43,T35] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V43 tmp31 [V43,T33] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V44 tmp32 [V44,T11] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
; V45 tmp33 [V45,T12] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
; V46 tmp34 [V46,T06] ( 3, 12 ) byref -> x1 "dup spill"
;* V47 tmp35 [V47 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp36 [V48 ] ( 0, 0 ) int -> zero-ref single-def "field V04._length (fldOffset=0x8)" P-INDEP
-; V49 tmp37 [V49,T40] ( 4, 1.50) byref -> x21 single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+; V49 tmp37 [V49,T38] ( 4, 1.50) byref -> x21 single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp38 [V50 ] ( 0, 0 ) int -> zero-ref single-def "field V13._length (fldOffset=0x8)" P-INDEP
;* V51 tmp39 [V51 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V52 tmp40 [V52 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
@@ -67,8 +67,8 @@
;* V56 tmp44 [V56 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
; V57 tmp45 [V57 ] ( 3, 3 ) int -> [fp-0x50] do-not-enreg[X] addr-exposed "field V28.Item1 (fldOffset=0x0)" P-DEP
; V58 tmp46 [V58 ] ( 3, 3 ) int -> [fp-0x4C] do-not-enreg[X] addr-exposed "field V28.Item2 (fldOffset=0x4)" P-DEP
-; V59 tmp47 [V59,T41] ( 2, 1 ) byref -> x23 "field V33._reference (fldOffset=0x0)" P-INDEP
-; V60 tmp48 [V60,T42] ( 2, 1 ) int -> x22 "field V33._length (fldOffset=0x8)" P-INDEP
+; V59 tmp47 [V59,T39] ( 2, 1 ) byref -> x23 "field V33._reference (fldOffset=0x0)" P-INDEP
+; V60 tmp48 [V60,T40] ( 2, 1 ) int -> x22 "field V33._length (fldOffset=0x8)" P-INDEP
;* V61 tmp49 [V61 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V62 tmp50 [V62 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V63 tmp51 [V63 ] ( 0, 0 ) byref -> zero-ref single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -77,26 +77,23 @@
;* V66 tmp54 [V66 ] ( 0, 0 ) int -> zero-ref single-def "field V39._length (fldOffset=0x8)" P-INDEP
; V67 tmp55 [V67,T16] ( 3, 4.50) byref -> x23 single-def "V05.[000..008)"
; V68 tmp56 [V68,T17] ( 3, 4.50) int -> x22 single-def "V05.[008..012)"
-; V69 tmp57 [V69,T36] ( 3, 1.50) byref -> x23 "V16.[000..008)"
-; V70 tmp58 [V70,T39] ( 3, 1.50) int -> x22 "V16.[008..012)"
+; V69 tmp57 [V69,T34] ( 3, 1.50) byref -> x23 "V16.[000..008)"
+; V70 tmp58 [V70,T37] ( 3, 1.50) int -> x22 "V16.[008..012)"
; V71 tmp59 [V71,T03] ( 2, 16 ) ref -> x1 "argument with side effect"
; V72 GsCookie [V72 ] ( 1, 1 ) long -> [fp-0x70] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V73 PSPSym [V73,T44] ( 1, 1 ) long -> [fp-0x38] do-not-enreg[V] "PSPSym"
+; V73 PSPSym [V73,T41] ( 1, 1 ) long -> [fp-0x38] do-not-enreg[V] "PSPSym"
; V74 cse0 [V74,T08] ( 5, 10 ) int -> x11 "CSE - aggressive"
; V75 cse1 [V75,T09] ( 11, 7 ) long -> registers multi-def "CSE - aggressive"
-; V76 cse2 [V76,T37] ( 3, 1.50) ref -> x1 "CSE - moderate"
-; V77 rat0 [V77,T30] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V76 cse2 [V76,T35] ( 3, 1.50) ref -> x1 "CSE - moderate"
+; V77 rat0 [V77,T29] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V78 rat1 [V78,T26] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-; V79 rat2 [V79,T31] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V79 rat2 [V79,T30] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V80 rat3 [V80,T27] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-; V81 rat4 [V81,T32] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V81 rat4 [V81,T31] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V82 rat5 [V82,T28] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V83 rat6 [V83,T33] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V84 rat7 [V84,T43] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V85 rat8 [V85,T29] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V86 rat9 [V86,T02] ( 3, 17.60) long -> x1 "Spilling to split statement for tree"
-; V87 rat10 [V87,T01] ( 3, 22.40) long -> x11 "fgMakeTemp is creating a new local variable"
-; V88 rat11 [V88,T25] ( 3, 3 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V83 rat6 [V83,T02] ( 3, 17.60) long -> x1 "Spilling to split statement for tree"
+; V84 rat7 [V84,T01] ( 3, 22.40) long -> x11 "fgMakeTemp is creating a new local variable"
+; V85 rat8 [V85,T25] ( 3, 3 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 64
+0 (0.00%) : 175256.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:TrimExcess():this (FullOpts)
@@ -9,10 +9,10 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 17, 19.50) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]>
-; V01 loc0 [V01,T27] ( 3, 2.50) int -> x20 single-def
-; V02 loc1 [V02,T28] ( 3, 2.50) int -> x21 single-def
+; V01 loc0 [V01,T26] ( 3, 2.50) int -> x20 single-def
+; V02 loc1 [V02,T27] ( 3, 2.50) int -> x21 single-def
; V03 loc2 [V03 ] ( 5, 12 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1+Entry[System.__Canon]]>
-; V04 loc3 [V04,T30] ( 2, 2 ) int -> x0 single-def
+; V04 loc3 [V04,T28] ( 2, 2 ) int -> x0 single-def
; V05 loc4 [V05,T21] ( 3, 5 ) int -> x23 single-def
; V06 loc5 [V06 ] ( 2, 2.50) struct (16) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1+Entry[System.__Canon]]>
; V07 loc6 [V07,T16] ( 4, 6.50) int -> x21
@@ -33,9 +33,9 @@
; V22 tmp11 [V22,T08] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
; V23 tmp12 [V23,T09] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
;* V24 tmp13 [V24 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V25 tmp14 [V25,T31] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V25 tmp14 [V25,T29] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V26 tmp15 [V26 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V27 tmp16 [V27,T32] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V27 tmp16 [V27,T30] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V28 tmp17 [V28 ] ( 4, 11 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V29 tmp18 [V29 ] ( 5, 12 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
; V30 tmp19 [V30 ] ( 2, 2.50) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V06._items (fldOffset=0x0)" P-DEP
@@ -53,12 +53,9 @@
; V42 rat0 [V42,T22] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
; V43 rat1 [V43,T23] ( 3, 4 ) long -> x22 "runtime lookup"
; V44 rat2 [V44,T20] ( 3, 5.60) long -> x22 "fgMakeTemp is creating a new local variable"
-;* V45 rat3 [V45,T29] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V46 rat4 [V46,T33] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V47 rat5 [V47,T26] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V48 rat6 [V48,T03] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V49 rat7 [V49,T04] ( 3, 16 ) long -> x1 "runtime lookup"
-; V50 rat8 [V50,T01] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+; V45 rat3 [V45,T03] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V46 rat4 [V46,T04] ( 3, 16 ) long -> x1 "runtime lookup"
+; V47 rat5 [V47,T01] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 48
+0 (0.00%) : 251408.dasm - System.Collections.Concurrent.ConcurrentDictionary2[System.__Canon,System.Nullable
1[int]]:CopyToObjects(System.Object[],int):this (FullOpts)
@@ -11,7 +11,7 @@
; V00 this [V00,T10] ( 4, 4 ) ref -> x20 this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.Nullable`1[int]]>
; V01 arg1 [V01,T11] ( 3, 18 ) ref -> x21 class-hnd single-def <System.Object[]>
; V02 arg2 [V02,T05] ( 5, 50 ) int -> x19
-; V03 loc0 [V03,T17] ( 3, 6 ) ref -> x22 class-hnd exact single-def <<unknown class>>
+; V03 loc0 [V03,T15] ( 3, 6 ) ref -> x22 class-hnd exact single-def <<unknown class>>
; V04 loc1 [V04,T12] ( 5, 17 ) int -> x23
;* V05 loc2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Concurrent.ConcurrentDictionary`2+VolatileNode[System.__Canon,System.Nullable`1[int]]>
; V06 loc3 [V06,T01] ( 8,104 ) ref -> x26 class-hnd <<unknown class>>
@@ -22,23 +22,20 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V12 tmp5 [V12,T04] ( 2, 64 ) ref -> x27 class-hnd "Inlining Arg" <System.__Canon>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Nullable`1[int]>
-; V14 tmp7 [V14,T16] ( 2, 8 ) ref -> x26 "field V05._node (fldOffset=0x0)" P-INDEP
+; V14 tmp7 [V14,T14] ( 2, 8 ) ref -> x26 "field V05._node (fldOffset=0x0)" P-INDEP
; V15 tmp8 [V15,T06] ( 2, 32 ) ubyte -> x28 "field V13.hasValue (fldOffset=0x0)" P-INDEP
; V16 tmp9 [V16,T07] ( 2, 32 ) int -> [fp+0x14] spill-single-def "field V13.value (fldOffset=0x4)" P-INDEP
;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref "V08.[000..008)"
; V18 tmp11 [V18,T08] ( 2, 32 ) ubyte -> x28 "V08.[008..009)"
;* V19 tmp12 [V19 ] ( 0, 0 ) int -> zero-ref "V08.[012..016)"
; V20 cse0 [V20,T13] ( 2, 17 ) long -> x25 hoist "CSE - aggressive"
-; V21 cse1 [V21,T18] ( 3, 6 ) int -> x24 "CSE - aggressive"
-; V22 rat0 [V22,T20] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V23 rat1 [V23,T21] ( 3, 4 ) long -> x25 "runtime lookup"
-; V24 rat2 [V24,T19] ( 3, 5.60) long -> x25 "fgMakeTemp is creating a new local variable"
-;* V25 rat3 [V25,T15] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V26 rat4 [V26,T22] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V27 rat5 [V27,T14] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V28 rat6 [V28,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V29 rat7 [V29,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V30 rat8 [V30,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V21 cse1 [V21,T16] ( 3, 6 ) int -> x24 "CSE - aggressive"
+; V22 rat0 [V22,T18] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V23 rat1 [V23,T19] ( 3, 4 ) long -> x25 "runtime lookup"
+; V24 rat2 [V24,T17] ( 3, 5.60) long -> x25 "fgMakeTemp is creating a new local variable"
+;* V25 rat3 [V25,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V26 rat4 [V26,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V27 rat5 [V27,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
libraries_tests.run.windows.arm64.Release.mch
-48 (-2.18%) : 153084.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Canon,System.Canon]:TryInsert(System.Canon,System.Canon,ubyte):ubyte:this (Tier1)
@@ -9,32 +9,32 @@
; 5 inlinees with PGO data; 21 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 33, 15.83) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 32, 14.83) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T01] ( 15, 6.42) ref -> x20 ld-addr-op class-hnd single-def <System.__Canon>
-; V02 arg2 [V02,T15] ( 5, 3 ) ref -> x21 class-hnd single-def <System.__Canon>
-; V03 arg3 [V03,T16] ( 6, 2.50) ubyte -> x22 single-def
+; V02 arg2 [V02,T14] ( 5, 3 ) ref -> x21 class-hnd single-def <System.__Canon>
+; V03 arg3 [V03,T15] ( 6, 2.50) ubyte -> x22 single-def
; V04 loc0 [V04 ] ( 17, 6.92) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.__Canon]]>
-; V05 loc1 [V05,T25] ( 5, 3 ) ref -> x23 class-hnd single-def <<unknown class>>
-; V06 loc2 [V06,T23] ( 6, 3.55) int -> x24 single-def
-; V07 loc3 [V07,T33] ( 7, 2.44) int -> x25
-; V08 loc4 [V08,T24] ( 5, 3.07) byref -> x26
-; V09 loc5 [V09,T13] ( 13, 5.42) int -> x27
-; V10 loc6 [V10,T36] ( 5, 2.00) int -> x22
-; V11 loc7 [V11,T51] ( 4, 1.50) ref -> x23 class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
-; V12 loc8 [V12,T50] ( 3, 1.50) int -> x22 single-def
+; V05 loc1 [V05,T23] ( 5, 3 ) ref -> x23 class-hnd single-def <<unknown class>>
+; V06 loc2 [V06,T21] ( 6, 3.55) int -> x24 single-def
+; V07 loc3 [V07,T31] ( 7, 2.44) int -> x25
+; V08 loc4 [V08,T22] ( 5, 3.07) byref -> x26
+; V09 loc5 [V09,T12] ( 13, 5.42) int -> x27
+; V10 loc6 [V10,T34] ( 5, 2.00) int -> x22
+; V11 loc7 [V11,T48] ( 4, 1.50) ref -> x23 class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+; V12 loc8 [V12,T47] ( 3, 1.50) int -> x22 single-def
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T39] ( 3, 2 ) int -> x24
+; V14 tmp1 [V14,T37] ( 3, 2 ) int -> x24
;* V15 tmp2 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp3 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V17 tmp4 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V18 tmp5 [V18,T14] ( 5, 5.00) byref -> x0 single-def "dup spill"
-; V19 tmp6 [V19,T70] ( 3, 0 ) long -> x1 "spilling helperCall"
+; V18 tmp5 [V18,T13] ( 5, 5.00) byref -> x0 single-def "dup spill"
+; V19 tmp6 [V19,T67] ( 3, 0 ) long -> x1 "spilling helperCall"
;* V20 tmp7 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp8 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp9 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V23 tmp10 [V23,T71] ( 3, 0 ) long -> [fp+0x20] "spilling helperCall"
+; V23 tmp10 [V23,T68] ( 3, 0 ) long -> [fp+0x20] "spilling helperCall"
;* V24 tmp11 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V25 tmp12 [V25,T68] ( 4, 0 ) long -> [fp+0x18] "VirtualCall with runtime lookup"
+; V25 tmp12 [V25,T65] ( 4, 0 ) long -> [fp+0x18] "VirtualCall with runtime lookup"
;* V26 tmp13 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V27 tmp14 [V27 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V28 tmp15 [V28 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -47,12 +47,12 @@
;* V35 tmp22 [V35 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V36 tmp23 [V36 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V37 tmp24 [V37 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V38 tmp25 [V38,T69] ( 4, 0 ) long -> x11 "VirtualCall with runtime lookup"
-; V39 tmp26 [V39,T40] ( 3, 2 ) int -> x0 "guarded devirt return temp"
+; V38 tmp25 [V38,T66] ( 4, 0 ) long -> x11 "VirtualCall with runtime lookup"
+; V39 tmp26 [V39,T38] ( 3, 2 ) int -> x0 "guarded devirt return temp"
;* V40 tmp27 [V40 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp"
;* V41 tmp28 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CombineNode`2[System.ValueTuple`2[Microsoft.CodeAnalysis.SyntaxTree,int],Microsoft.CodeAnalysis.SourceGeneration.GlobalAliases]>
-; V42 tmp29 [V42,T55] ( 3, 1.00) int -> x2 "guarded devirt return temp"
-; V43 tmp30 [V43,T19] ( 7, 4.39) ref -> x28 "guarded devirt arg temp"
+; V42 tmp29 [V42,T52] ( 3, 1.00) int -> x2 "guarded devirt return temp"
+; V43 tmp30 [V43,T17] ( 7, 4.39) ref -> x28 "guarded devirt arg temp"
;* V44 tmp31 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.ObjectEqualityComparer`1[System.Object]>
;* V45 tmp32 [V45 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V46 tmp33 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
@@ -62,93 +62,90 @@
; V50 tmp37 [V50,T05] ( 3, 6 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V51 tmp38 [V51,T06] ( 3, 6 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V52 tmp39 [V52 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V53 tmp40 [V53,T53] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V53 tmp40 [V53,T50] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V54 tmp41 [V54 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V55 tmp42 [V55,T54] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V55 tmp42 [V55,T51] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V56 tmp43 [V56 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inlining Arg" <System.Object>
;* V57 tmp44 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
-; V58 tmp45 [V58,T56] ( 3, 1.00) int -> x2 "guarded devirt return temp"
+; V58 tmp45 [V58,T53] ( 3, 1.00) int -> x2 "guarded devirt return temp"
;* V59 tmp46 [V59 ] ( 0, 0 ) ref -> zero-ref "guarded devirt arg temp"
;* V60 tmp47 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
;* V61 tmp48 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V62 tmp49 [V62 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V63 tmp50 [V63 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V64 tmp51 [V64,T60] ( 3, 0.41) int -> x1 "Inlining Arg"
-; V65 tmp52 [V65,T58] ( 3, 0.41) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V66 tmp53 [V66,T59] ( 3, 0.41) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V64 tmp51 [V64,T57] ( 3, 0.41) int -> x1 "Inlining Arg"
+; V65 tmp52 [V65,T55] ( 3, 0.41) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V66 tmp53 [V66,T56] ( 3, 0.41) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V67 tmp54 [V67 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V68 tmp55 [V68,T66] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V68 tmp55 [V68,T63] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V69 tmp56 [V69 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V70 tmp57 [V70,T67] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V70 tmp57 [V70,T64] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V71 tmp58 [V71 ] ( 12, 4.46) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V04._items (fldOffset=0x0)" P-DEP
; V72 tmp59 [V72 ] ( 17, 6.92) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V04._length (fldOffset=0x8)" P-DEP
-; V73 tmp60 [V73,T41] ( 2, 2 ) ref -> x0 single-def "field V46._items (fldOffset=0x0)" P-INDEP
-; V74 tmp61 [V74,T42] ( 2, 2 ) int -> x1 single-def "field V46._length (fldOffset=0x8)" P-INDEP
-; V75 tmp62 [V75,T64] ( 2, 0.14) ref -> x0 single-def "field V61._items (fldOffset=0x0)" P-INDEP
-; V76 tmp63 [V76,T65] ( 2, 0.14) int -> x1 single-def "field V61._length (fldOffset=0x8)" P-INDEP
+; V73 tmp60 [V73,T39] ( 2, 2 ) ref -> x0 single-def "field V46._items (fldOffset=0x0)" P-INDEP
+; V74 tmp61 [V74,T40] ( 2, 2 ) int -> x1 single-def "field V46._length (fldOffset=0x8)" P-INDEP
+; V75 tmp62 [V75,T61] ( 2, 0.14) ref -> x0 single-def "field V61._items (fldOffset=0x0)" P-INDEP
+; V76 tmp63 [V76,T62] ( 2, 0.14) int -> x1 single-def "field V61._length (fldOffset=0x8)" P-INDEP
; V77 tmp64 [V77,T08] ( 3, 6 ) int -> x2 "index expr"
; V78 tmp65 [V78,T09] ( 3, 6 ) int -> x1 "index expr"
-; V79 tmp66 [V79,T22] ( 2, 3.92) long -> x1 "argument with side effect"
-; V80 tmp67 [V80,T46] ( 2, 2.00) long -> x1 "argument with side effect"
-; V81 tmp68 [V81,T49] ( 2, 1.92) long -> x1 "argument with side effect"
-; V82 tmp69 [V82,T63] ( 2, 0.27) int -> x1 "argument with side effect"
-; V83 tmp70 [V83,T61] ( 3, 0.41) int -> x2 "index expr"
-; V84 tmp71 [V84,T62] ( 3, 0.41) int -> x1 "index expr"
-; V85 tmp72 [V85,T38] ( 2, 2.00) long -> x1 "argument with side effect"
-; V86 tmp73 [V86,T92] ( 2, 0 ) long -> x1 "argument with side effect"
-; V87 tmp74 [V87,T91] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V88 tmp75 [V88,T93] ( 2, 0 ) long -> x1 "argument with side effect"
-; V89 tmp76 [V89,T94] ( 2, 0 ) long -> x0 "argument with side effect"
-; V90 tmp77 [V90,T95] ( 2, 0 ) long -> x1 "argument with side effect"
-; V91 tmp78 [V91,T96] ( 2, 0 ) long -> x0 "argument with side effect"
-; V92 tmp79 [V92,T47] ( 2, 2.00) long -> x1 "argument with side effect"
-; V93 cse0 [V93,T03] ( 33, 7.32) long -> x28 multi-def "CSE - aggressive"
-; V94 rat0 [V94,T72] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
-; V95 rat1 [V95,T73] ( 3, 0 ) long -> x11 "fgMakeTemp is creating a new local variable"
-; V96 rat2 [V96,T17] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V97 rat3 [V97,T20] ( 3, 4 ) long -> x1 "runtime lookup"
+; V79 tmp66 [V79,T20] ( 2, 3.92) long -> x1 "argument with side effect"
+; V80 tmp67 [V80,T43] ( 2, 2.00) long -> x1 "argument with side effect"
+; V81 tmp68 [V81,T46] ( 2, 1.92) long -> x1 "argument with side effect"
+; V82 tmp69 [V82,T60] ( 2, 0.27) int -> x1 "argument with side effect"
+; V83 tmp70 [V83,T58] ( 3, 0.41) int -> x2 "index expr"
+; V84 tmp71 [V84,T59] ( 3, 0.41) int -> x1 "index expr"
+; V85 tmp72 [V85,T36] ( 2, 2.00) long -> x1 "argument with side effect"
+; V86 tmp73 [V86,T89] ( 2, 0 ) long -> x1 "argument with side effect"
+; V87 tmp74 [V87,T88] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V88 tmp75 [V88,T90] ( 2, 0 ) long -> x1 "argument with side effect"
+; V89 tmp76 [V89,T91] ( 2, 0 ) long -> x0 "argument with side effect"
+; V90 tmp77 [V90,T92] ( 2, 0 ) long -> x1 "argument with side effect"
+; V91 tmp78 [V91,T93] ( 2, 0 ) long -> x0 "argument with side effect"
+; V92 tmp79 [V92,T44] ( 2, 2.00) long -> x1 "argument with side effect"
+; V93 cse0 [V93,T03] ( 32, 6.84) long -> x28 multi-def "CSE - aggressive"
+; V94 rat0 [V94,T69] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
+; V95 rat1 [V95,T70] ( 3, 0 ) long -> x11 "fgMakeTemp is creating a new local variable"
+; V96 rat2 [V96,T16] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V97 rat3 [V97,T18] ( 3, 4 ) long -> x1 "runtime lookup"
; V98 rat4 [V98,T10] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
-; V99 rat5 [V99,T18] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V100 rat6 [V100,T43] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V101 rat7 [V101,T11] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V102 rat8 [V102,T04] ( 2, 5.92) long -> x0 "Spilling to split statement for tree"
-;* V103 rat9 [V103,T26] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V104 rat10 [V104,T02] ( 2, 5.92) long -> x0 "fgMakeTemp is creating a new local variable"
-; V105 rat11 [V105,T21] ( 3, 3.92) long -> x1 "runtime lookup"
-; V106 rat12 [V106,T12] ( 3, 5.49) long -> x1 "fgMakeTemp is creating a new local variable"
-; V107 rat13 [V107,T44] ( 3, 2.00) long -> x1 "runtime lookup"
-; V108 rat14 [V108,T29] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-; V109 rat15 [V109,T35] ( 3, 2.11) long -> x0 "Spilling to split statement for tree"
-; V110 rat16 [V110,T48] ( 3, 1.92) long -> x1 "runtime lookup"
-; V111 rat17 [V111,T31] ( 3, 2.69) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V112 rat18 [V112,T57] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V113 rat19 [V113,T32] ( 2, 1.92) long -> x0 "fgMakeTemp is creating a new local variable"
-; V114 rat20 [V114,T34] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V115 rat21 [V115,T45] ( 3, 2.00) long -> x1 "runtime lookup"
-; V116 rat22 [V116,T30] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-; V117 rat23 [V117,T74] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
-; V118 rat24 [V118,T75] ( 3, 0 ) long -> x0 "runtime lookup"
-; V119 rat25 [V119,T76] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
-;* V120 rat26 [V120,T77] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V121 rat27 [V121,T97] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V122 rat28 [V122,T78] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V123 rat29 [V123,T79] ( 3, 0 ) long -> x1 "runtime lookup"
-; V124 rat30 [V124,T80] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-; V125 rat31 [V125,T81] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
-; V126 rat32 [V126,T82] ( 3, 0 ) long -> x3 "fgMakeTemp is creating a new local variable"
-; V127 rat33 [V127,T83] ( 3, 0 ) long -> x1 "runtime lookup"
-; V128 rat34 [V128,T84] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V129 rat35 [V129,T98] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V130 rat36 [V130,T85] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V131 rat37 [V131,T86] ( 3, 0 ) long -> x1 "runtime lookup"
+; V99 rat5 [V99,T04] ( 2, 5.92) long -> x0 "Spilling to split statement for tree"
+;* V100 rat6 [V100,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V101 rat7 [V101,T02] ( 2, 5.92) long -> x0 "fgMakeTemp is creating a new local variable"
+; V102 rat8 [V102,T19] ( 3, 3.92) long -> x1 "runtime lookup"
+; V103 rat9 [V103,T11] ( 3, 5.49) long -> x1 "fgMakeTemp is creating a new local variable"
+; V104 rat10 [V104,T41] ( 3, 2.00) long -> x1 "runtime lookup"
+; V105 rat11 [V105,T27] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
+; V106 rat12 [V106,T33] ( 3, 2.11) long -> x0 "Spilling to split statement for tree"
+; V107 rat13 [V107,T45] ( 3, 1.92) long -> x1 "runtime lookup"
+; V108 rat14 [V108,T29] ( 3, 2.69) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V109 rat15 [V109,T54] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V110 rat16 [V110,T30] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V111 rat17 [V111,T32] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V112 rat18 [V112,T42] ( 3, 2.00) long -> x1 "runtime lookup"
+; V113 rat19 [V113,T28] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
+; V114 rat20 [V114,T71] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
+; V115 rat21 [V115,T72] ( 3, 0 ) long -> x0 "runtime lookup"
+; V116 rat22 [V116,T73] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+;* V117 rat23 [V117,T74] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V118 rat24 [V118,T94] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V119 rat25 [V119,T75] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V120 rat26 [V120,T76] ( 3, 0 ) long -> x1 "runtime lookup"
+; V121 rat27 [V121,T77] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
+; V122 rat28 [V122,T78] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V123 rat29 [V123,T79] ( 3, 0 ) long -> x3 "fgMakeTemp is creating a new local variable"
+; V124 rat30 [V124,T80] ( 3, 0 ) long -> x1 "runtime lookup"
+; V125 rat31 [V125,T81] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V126 rat32 [V126,T95] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V127 rat33 [V127,T82] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V128 rat34 [V128,T83] ( 3, 0 ) long -> x1 "runtime lookup"
+; V129 rat35 [V129,T84] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
+; V130 rat36 [V130,T85] ( 3, 0 ) long -> x0 "runtime lookup"
+; V131 rat37 [V131,T86] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
; V132 rat38 [V132,T87] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-; V133 rat39 [V133,T88] ( 3, 0 ) long -> x0 "runtime lookup"
-; V134 rat40 [V134,T89] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V135 rat41 [V135,T90] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V136 rat42 [V136,T52] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V137 rat43 [V137,T27] ( 2, 2.00) long -> x0 "fgMakeTemp is creating a new local variable"
-; V138 rat44 [V138,T37] ( 3, 2.00) long -> x1 "runtime lookup"
-; V139 rat45 [V139,T28] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V133 rat39 [V133,T49] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V134 rat40 [V134,T25] ( 2, 2.00) long -> x0 "fgMakeTemp is creating a new local variable"
+; V135 rat41 [V135,T35] ( 3, 2.00) long -> x1 "runtime lookup"
+; V136 rat42 [V136,T26] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 48
@@ -171,7 +168,7 @@ G_M33517_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w22, w3
;; size=52 bbWeight=1 PerfScore 10.50
G_M33517_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M33517_IG50
+ cbz x20, G_M33517_IG47
ldr w0, [x19, #0x40]
cbz w0, G_M33517_IG09
;; size=12 bbWeight=1 PerfScore 5.00
@@ -182,13 +179,13 @@ G_M33517_IG03: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
G_M33517_IG04: ; bbWeight=1, isz, extend
ldr x23, [x19, #0x08]
; gcrRegs +[x23]
- cbnz x23, G_M33517_IG51
+ cbnz x23, G_M33517_IG48
ldr x0, [x20]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M33517_IG12
+ bne G_M33517_IG14
...
-20 (-0.82%) : 575950.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Canon,System.Canon]:TryInsert(System.Canon,System.Canon,ubyte):ubyte:this (Tier1)
@@ -11,30 +11,30 @@
;
; V00 this [V00,T00] ( 31, 13.37) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T01] ( 15, 6.36) ref -> x20 ld-addr-op class-hnd single-def <System.__Canon>
-; V02 arg2 [V02,T15] ( 5, 3 ) ref -> x21 class-hnd single-def <System.__Canon>
-; V03 arg3 [V03,T16] ( 6, 2.50) ubyte -> x22 single-def
+; V02 arg2 [V02,T14] ( 5, 3 ) ref -> x21 class-hnd single-def <System.__Canon>
+; V03 arg3 [V03,T15] ( 6, 2.50) ubyte -> x22 single-def
; V04 loc0 [V04 ] ( 17, 6.86) struct (16) [fp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.__Canon]]>
-; V05 loc1 [V05,T25] ( 5, 3.01) ref -> x23 class-hnd single-def <<unknown class>>
-; V06 loc2 [V06,T23] ( 6, 3.55) int -> x25 single-def
-; V07 loc3 [V07,T33] ( 7, 2.40) int -> x26
-; V08 loc4 [V08,T24] ( 5, 3.09) byref -> x27
-; V09 loc5 [V09,T13] ( 13, 5.37) int -> x28
-; V10 loc6 [V10,T39] ( 5, 2.00) int -> x28
-; V11 loc7 [V11,T51] ( 4, 1.50) ref -> x23 class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
-; V12 loc8 [V12,T50] ( 3, 1.50) int -> x28 single-def
+; V05 loc1 [V05,T23] ( 5, 3.01) ref -> x23 class-hnd single-def <<unknown class>>
+; V06 loc2 [V06,T21] ( 6, 3.55) int -> x25 single-def
+; V07 loc3 [V07,T31] ( 7, 2.40) int -> x26
+; V08 loc4 [V08,T22] ( 5, 3.09) byref -> x27
+; V09 loc5 [V09,T12] ( 13, 5.37) int -> x28
+; V10 loc6 [V10,T37] ( 5, 2.00) int -> x28
+; V11 loc7 [V11,T48] ( 4, 1.50) ref -> x23 class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+; V12 loc8 [V12,T47] ( 3, 1.50) int -> x28 single-def
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T38] ( 3, 2.01) int -> x25
+; V14 tmp1 [V14,T36] ( 3, 2.01) int -> x25
;* V15 tmp2 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp3 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V17 tmp4 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V18 tmp5 [V18,T14] ( 5, 5.00) byref -> x0 single-def "dup spill"
-; V19 tmp6 [V19,T79] ( 3, 0 ) long -> x1 "spilling helperCall"
+; V18 tmp5 [V18,T13] ( 5, 5.00) byref -> x0 single-def "dup spill"
+; V19 tmp6 [V19,T76] ( 3, 0 ) long -> x1 "spilling helperCall"
;* V20 tmp7 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp8 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp9 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V23 tmp10 [V23,T80] ( 3, 0 ) long -> [fp+0x40] "spilling helperCall"
+; V23 tmp10 [V23,T77] ( 3, 0 ) long -> [fp+0x40] "spilling helperCall"
;* V24 tmp11 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V25 tmp12 [V25,T77] ( 4, 0 ) long -> [fp+0x38] "VirtualCall with runtime lookup"
+; V25 tmp12 [V25,T74] ( 4, 0 ) long -> [fp+0x38] "VirtualCall with runtime lookup"
;* V26 tmp13 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V27 tmp14 [V27 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V28 tmp15 [V28 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -47,12 +47,12 @@
;* V35 tmp22 [V35 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V36 tmp23 [V36 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V37 tmp24 [V37 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V38 tmp25 [V38,T71] ( 4, 0.02) long -> x11 "VirtualCall with runtime lookup"
-; V39 tmp26 [V39,T47] ( 3, 1.99) int -> x25 "guarded devirt return temp"
+; V38 tmp25 [V38,T68] ( 4, 0.02) long -> x11 "VirtualCall with runtime lookup"
+; V39 tmp26 [V39,T44] ( 3, 1.99) int -> x25 "guarded devirt return temp"
;* V40 tmp27 [V40 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp"
;* V41 tmp28 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.TransformNode`2[System.Object,System.Object]>
-; V42 tmp29 [V42,T56] ( 3, 1.00) int -> x3 "guarded devirt return temp"
-; V43 tmp30 [V43,T17] ( 10, 4.46) ref -> x24 "guarded devirt arg temp"
+; V42 tmp29 [V42,T53] ( 3, 1.00) int -> x3 "guarded devirt return temp"
+; V43 tmp30 [V43,T16] ( 10, 4.46) ref -> x24 "guarded devirt arg temp"
;* V44 tmp31 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.ObjectEqualityComparer`1[System.Object]>
;* V45 tmp32 [V45 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V46 tmp33 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
@@ -62,103 +62,100 @@
; V50 tmp37 [V50,T05] ( 3, 6.06) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V51 tmp38 [V51,T06] ( 3, 6.06) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V52 tmp39 [V52 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V53 tmp40 [V53,T53] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V53 tmp40 [V53,T50] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V54 tmp41 [V54 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V55 tmp42 [V55,T54] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V55 tmp42 [V55,T51] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V56 tmp43 [V56 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inlining Arg" <System.Object>
;* V57 tmp44 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
-; V58 tmp45 [V58,T57] ( 3, 1.00) int -> x3 "guarded devirt return temp"
+; V58 tmp45 [V58,T54] ( 3, 1.00) int -> x3 "guarded devirt return temp"
;* V59 tmp46 [V59 ] ( 0, 0 ) ref -> zero-ref "guarded devirt arg temp"
;* V60 tmp47 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer>
-; V61 tmp48 [V61,T52] ( 4, 1.08) ref -> x0 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V61 tmp48 [V61,T49] ( 4, 1.08) ref -> x0 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbol>
;* V62 tmp49 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.SymbolEqualityComparer>
-; V63 tmp50 [V63,T59] ( 5, 0.54) ubyte -> x3 "Inline return value spill temp"
+; V63 tmp50 [V63,T56] ( 5, 0.54) ubyte -> x3 "Inline return value spill temp"
;* V64 tmp51 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.UpdatedContainingSymbolAndNullableAnnotationLocal>
-; V65 tmp52 [V65,T76] ( 4, 0.00) ref -> x4 class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.UpdatedContainingSymbolAndNullableAnnotationLocal>
-; V66 tmp53 [V66,T75] ( 4, 0.00) ref -> [fp+0x10] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol>
-; V67 tmp54 [V67,T60] ( 3, 0.54) int -> [fp+0x34] spill-single-def "Inlining Arg"
+; V65 tmp52 [V65,T73] ( 4, 0.00) ref -> x4 class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.UpdatedContainingSymbolAndNullableAnnotationLocal>
+; V66 tmp53 [V66,T72] ( 4, 0.00) ref -> [fp+0x10] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol>
+; V67 tmp54 [V67,T57] ( 3, 0.54) int -> [fp+0x34] spill-single-def "Inlining Arg"
;* V68 tmp55 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V69 tmp56 [V69 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V70 tmp57 [V70 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V71 tmp58 [V71,T63] ( 3, 0.41) int -> x1 "Inlining Arg"
-; V72 tmp59 [V72,T61] ( 3, 0.41) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V73 tmp60 [V73,T62] ( 3, 0.41) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V71 tmp58 [V71,T60] ( 3, 0.41) int -> x1 "Inlining Arg"
+; V72 tmp59 [V72,T58] ( 3, 0.41) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V73 tmp60 [V73,T59] ( 3, 0.41) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V74 tmp61 [V74 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V75 tmp62 [V75,T69] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V75 tmp62 [V75,T66] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V76 tmp63 [V76 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V77 tmp64 [V77,T70] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V77 tmp64 [V77,T67] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V78 tmp65 [V78 ] ( 12, 4.43) ref -> [fp+0x48] do-not-enreg[X] addr-exposed "field V04._items (fldOffset=0x0)" P-DEP
; V79 tmp66 [V79 ] ( 17, 6.86) int -> [fp+0x50] do-not-enreg[X] addr-exposed "field V04._length (fldOffset=0x8)" P-DEP
-; V80 tmp67 [V80,T36] ( 2, 2.02) ref -> x0 single-def "field V46._items (fldOffset=0x0)" P-INDEP
-; V81 tmp68 [V81,T37] ( 2, 2.02) int -> x1 single-def "field V46._length (fldOffset=0x8)" P-INDEP
-; V82 tmp69 [V82,T67] ( 2, 0.14) ref -> x0 single-def "field V68._items (fldOffset=0x0)" P-INDEP
-; V83 tmp70 [V83,T68] ( 2, 0.14) int -> x1 single-def "field V68._length (fldOffset=0x8)" P-INDEP
+; V80 tmp67 [V80,T34] ( 2, 2.02) ref -> x0 single-def "field V46._items (fldOffset=0x0)" P-INDEP
+; V81 tmp68 [V81,T35] ( 2, 2.02) int -> x1 single-def "field V46._length (fldOffset=0x8)" P-INDEP
+; V82 tmp69 [V82,T64] ( 2, 0.14) ref -> x0 single-def "field V68._items (fldOffset=0x0)" P-INDEP
+; V83 tmp70 [V83,T65] ( 2, 0.14) int -> x1 single-def "field V68._length (fldOffset=0x8)" P-INDEP
; V84 tmp71 [V84,T08] ( 3, 6.06) int -> x2 "index expr"
; V85 tmp72 [V85,T09] ( 3, 6.06) int -> x1 "index expr"
-; V86 tmp73 [V86,T22] ( 2, 3.86) long -> x1 "argument with side effect"
-; V87 tmp74 [V87,T45] ( 2, 2.00) long -> x1 "argument with side effect"
+; V86 tmp73 [V86,T20] ( 2, 3.86) long -> x1 "argument with side effect"
+; V87 tmp74 [V87,T42] ( 2, 2.00) long -> x1 "argument with side effect"
; V88 tmp75 [V88 ] ( 2, 0.00) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.SyntaxToken>
-; V89 tmp76 [V89,T74] ( 2, 0.00) byref -> x0 "argument with side effect"
-; V90 tmp77 [V90,T78] ( 3, 0 ) ref -> x0 "argument with side effect"
-; V91 tmp78 [V91,T49] ( 2, 1.86) long -> x1 "argument with side effect"
-; V92 tmp79 [V92,T66] ( 2, 0.28) int -> x1 "argument with side effect"
-; V93 tmp80 [V93,T64] ( 3, 0.41) int -> x2 "index expr"
-; V94 tmp81 [V94,T65] ( 3, 0.41) int -> x1 "index expr"
-; V95 tmp82 [V95,T41] ( 2, 2.00) long -> x1 "argument with side effect"
-; V96 tmp83 [V96,T99] ( 2, 0 ) long -> x1 "argument with side effect"
-; V97 tmp84 [V97,T98] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V98 tmp85 [V98,T100] ( 2, 0 ) long -> x1 "argument with side effect"
-; V99 tmp86 [V99,T101] ( 2, 0 ) long -> x0 "argument with side effect"
-; V100 tmp87 [V100,T102] ( 2, 0 ) long -> x1 "argument with side effect"
-; V101 tmp88 [V101,T103] ( 2, 0 ) long -> x0 "argument with side effect"
-; V102 tmp89 [V102,T46] ( 2, 2.00) long -> x1 "argument with side effect"
-; V103 cse0 [V103,T03] ( 33, 7.26) long -> x24 multi-def "CSE - aggressive"
-; V104 rat0 [V104,T73] ( 3, 0.01) long -> x0 "Spilling to split statement for tree"
-; V105 rat1 [V105,T72] ( 3, 0.02) long -> x11 "fgMakeTemp is creating a new local variable"
-; V106 rat2 [V106,T18] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V107 rat3 [V107,T20] ( 3, 4 ) long -> x1 "runtime lookup"
+; V89 tmp76 [V89,T71] ( 2, 0.00) byref -> x0 "argument with side effect"
+; V90 tmp77 [V90,T75] ( 3, 0 ) ref -> x0 "argument with side effect"
+; V91 tmp78 [V91,T46] ( 2, 1.86) long -> x1 "argument with side effect"
+; V92 tmp79 [V92,T63] ( 2, 0.28) int -> x1 "argument with side effect"
+; V93 tmp80 [V93,T61] ( 3, 0.41) int -> x2 "index expr"
+; V94 tmp81 [V94,T62] ( 3, 0.41) int -> x1 "index expr"
+; V95 tmp82 [V95,T39] ( 2, 2.00) long -> x1 "argument with side effect"
+; V96 tmp83 [V96,T96] ( 2, 0 ) long -> x1 "argument with side effect"
+; V97 tmp84 [V97,T95] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V98 tmp85 [V98,T97] ( 2, 0 ) long -> x1 "argument with side effect"
+; V99 tmp86 [V99,T98] ( 2, 0 ) long -> x0 "argument with side effect"
+; V100 tmp87 [V100,T99] ( 2, 0 ) long -> x1 "argument with side effect"
+; V101 tmp88 [V101,T100] ( 2, 0 ) long -> x0 "argument with side effect"
+; V102 tmp89 [V102,T43] ( 2, 2.00) long -> x1 "argument with side effect"
+; V103 cse0 [V103,T03] ( 32, 6.79) long -> x24 multi-def "CSE - aggressive"
+; V104 rat0 [V104,T70] ( 3, 0.01) long -> x0 "Spilling to split statement for tree"
+; V105 rat1 [V105,T69] ( 3, 0.02) long -> x11 "fgMakeTemp is creating a new local variable"
+; V106 rat2 [V106,T17] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V107 rat3 [V107,T18] ( 3, 4 ) long -> x1 "runtime lookup"
; V108 rat4 [V108,T10] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V109 rat5 [V109,T19] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V110 rat6 [V110,T42] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V111 rat7 [V111,T11] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V112 rat8 [V112,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V113 rat9 [V113,T26] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V114 rat10 [V114,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V115 rat11 [V115,T21] ( 3, 3.86) long -> x1 "runtime lookup"
-; V116 rat12 [V116,T12] ( 3, 5.40) long -> x1 "fgMakeTemp is creating a new local variable"
-; V117 rat13 [V117,T43] ( 3, 2.00) long -> x1 "runtime lookup"
-; V118 rat14 [V118,T29] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-; V119 rat15 [V119,T35] ( 3, 2.05) long -> x0 "Spilling to split statement for tree"
-; V120 rat16 [V120,T48] ( 3, 1.86) long -> x1 "runtime lookup"
-; V121 rat17 [V121,T31] ( 3, 2.60) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V122 rat18 [V122,T58] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V123 rat19 [V123,T32] ( 2, 1.86) long -> x0 "fgMakeTemp is creating a new local variable"
-; V124 rat20 [V124,T34] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V125 rat21 [V125,T44] ( 3, 2.00) long -> x1 "runtime lookup"
-; V126 rat22 [V126,T30] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-; V127 rat23 [V127,T81] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
-; V128 rat24 [V128,T82] ( 3, 0 ) long -> x0 "runtime lookup"
-; V129 rat25 [V129,T83] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
-;* V130 rat26 [V130,T84] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V131 rat27 [V131,T104] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V132 rat28 [V132,T85] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V133 rat29 [V133,T86] ( 3, 0 ) long -> x1 "runtime lookup"
-; V134 rat30 [V134,T87] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-; V135 rat31 [V135,T88] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
-; V136 rat32 [V136,T89] ( 3, 0 ) long -> x3 "fgMakeTemp is creating a new local variable"
-; V137 rat33 [V137,T90] ( 3, 0 ) long -> x1 "runtime lookup"
-; V138 rat34 [V138,T91] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V139 rat35 [V139,T105] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V140 rat36 [V140,T92] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V141 rat37 [V141,T93] ( 3, 0 ) long -> x1 "runtime lookup"
+;* V109 rat5 [V109,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V110 rat6 [V110,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V111 rat7 [V111,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V112 rat8 [V112,T19] ( 3, 3.86) long -> x1 "runtime lookup"
+; V113 rat9 [V113,T11] ( 3, 5.40) long -> x1 "fgMakeTemp is creating a new local variable"
+; V114 rat10 [V114,T40] ( 3, 2.00) long -> x1 "runtime lookup"
+; V115 rat11 [V115,T27] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
+; V116 rat12 [V116,T33] ( 3, 2.05) long -> x0 "Spilling to split statement for tree"
+; V117 rat13 [V117,T45] ( 3, 1.86) long -> x1 "runtime lookup"
+; V118 rat14 [V118,T29] ( 3, 2.60) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V119 rat15 [V119,T55] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V120 rat16 [V120,T30] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V121 rat17 [V121,T32] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V122 rat18 [V122,T41] ( 3, 2.00) long -> x1 "runtime lookup"
+; V123 rat19 [V123,T28] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
+; V124 rat20 [V124,T78] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
+; V125 rat21 [V125,T79] ( 3, 0 ) long -> x0 "runtime lookup"
+; V126 rat22 [V126,T80] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+;* V127 rat23 [V127,T81] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V128 rat24 [V128,T101] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V129 rat25 [V129,T82] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V130 rat26 [V130,T83] ( 3, 0 ) long -> x1 "runtime lookup"
+; V131 rat27 [V131,T84] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
+; V132 rat28 [V132,T85] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V133 rat29 [V133,T86] ( 3, 0 ) long -> x3 "fgMakeTemp is creating a new local variable"
+; V134 rat30 [V134,T87] ( 3, 0 ) long -> x1 "runtime lookup"
+; V135 rat31 [V135,T88] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V136 rat32 [V136,T102] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V137 rat33 [V137,T89] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V138 rat34 [V138,T90] ( 3, 0 ) long -> x1 "runtime lookup"
+; V139 rat35 [V139,T91] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
+; V140 rat36 [V140,T92] ( 3, 0 ) long -> x0 "runtime lookup"
+; V141 rat37 [V141,T93] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
; V142 rat38 [V142,T94] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-; V143 rat39 [V143,T95] ( 3, 0 ) long -> x0 "runtime lookup"
-; V144 rat40 [V144,T96] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V145 rat41 [V145,T97] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V146 rat42 [V146,T55] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V147 rat43 [V147,T27] ( 2, 2.00) long -> x0 "fgMakeTemp is creating a new local variable"
-; V148 rat44 [V148,T40] ( 3, 2.00) long -> x1 "runtime lookup"
-; V149 rat45 [V149,T28] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V143 rat39 [V143,T52] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V144 rat40 [V144,T25] ( 2, 2.00) long -> x0 "fgMakeTemp is creating a new local variable"
+; V145 rat41 [V145,T38] ( 3, 2.00) long -> x1 "runtime lookup"
+; V146 rat42 [V146,T26] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 80
@@ -184,7 +181,7 @@ G_M33517_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w22, w3
;; size=64 bbWeight=1 PerfScore 12.50
G_M33517_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M33517_IG87
+ cbz x20, G_M33517_IG85
ldr w0, [x19, #0x40]
cbz w0, G_M33517_IG20
...
-20 (-0.62%) : 122796.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
@@ -183,7 +183,6 @@
; V171 cse17 [V171,T67] ( 5, 0.03) int -> x0 multi-def "CSE - conservative"
; V172 cse18 [V172,T68] ( 5, 0.03) int -> x0 multi-def "CSE - conservative"
; V173 rat0 [V173,T13] ( 5, 7.15) ref -> x21 class-hnd "replacement local" <System.Collections.Generic.List`1[System.String]>
-; TEMP_01 byref -> [fp-0x90]
;
; Lcl frame size = 64
@@ -196,11 +195,8 @@ G_M8186_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x27, x28, [sp, #0x80]
stp fp, lr, [sp, #0x90]
add fp, sp, #144
- sub x9, fp, #144
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp xzr, xzr, [x9, #0x20]
- str xzr, [x9, #0x30]
+ str xzr, [fp, #-0x78] // [V06 loc4]
+ str xzr, [fp, #-0x68] // [V06 loc4+0x10]
add x2, sp, #160
str x2, [fp, #-0x58] // [V153 PSPSym]
movz x2, #0xD1FFAB1E
@@ -212,7 +208,7 @@ G_M8186_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
mov x20, x1
; gcrRegs +[x20]
- ;; size=88 bbWeight=1 PerfScore 16.50
+ ;; size=76 bbWeight=1 PerfScore 14.50
G_M8186_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x21, x20
; gcrRegs +[x21]
@@ -1006,9 +1002,6 @@ G_M8186_IG68: ; bbWeight=0.09, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
sub w0, w0, w1
cmp w0, w28
ble G_M8186_IG71
- add x14, x21, #8
- ; byrRegs +[x14]
- str x14, [fp, #-0x90] // [TEMP_01]
ldr x26, [x21, #0x20]
; gcrRegs +[x26]
add w1, w1, w28
@@ -1017,7 +1010,6 @@ G_M8186_IG68: ; bbWeight=0.09, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
add x11, x23, #64
ldr x2, [x11]
blr x2
- ; byrRegs -[x14]
; gcr arg pop 0
mov x1, x0
; gcrRegs +[x1]
@@ -1026,7 +1018,7 @@ G_M8186_IG68: ; bbWeight=0.09, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
blr x2
; gcrRegs -[x1 x26]
; gcr arg pop 0
- ldr x14, [fp, #-0x90] // [TEMP_01]
+ add x14, x21, #8
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
@@ -1037,7 +1029,7 @@ G_M8186_IG68: ; bbWeight=0.09, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
add w0, w0, #1
str w0, [x21, #0x14]
b G_M8186_IG52
- ;; size=120 bbWeight=0.09 PerfScore 3.73
+ ;; size=112 bbWeight=0.09 PerfScore 3.47
G_M8186_IG69: ; bbWeight=0.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
ldr w0, [fp, #-0x60] // [V06 loc4+0x18]
@@ -1437,7 +1429,7 @@ G_M8186_IG100: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=32 bbWeight=0 PerfScore 0.00
-; Total bytes of code 3220, prolog size 88, PerfScore 658.57, instruction count 805, allocated bytes for code 3220 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
+; Total bytes of code 3200, prolog size 76, PerfScore 656.31, instruction count 800, allocated bytes for code 3200 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
; ============================================================
Unwind Info:
@@ -1448,7 +1440,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 769 (0x00301) Actual length = 3076 (0x000c04)
+ Function Length : 764 (0x002fc) Actual length = 3056 (0x000bf0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 88804.dasm - Roslyn.Utilities.AsyncLazy1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task
1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
@@ -14,7 +14,7 @@
; V02 arg2 [V02 ] ( 7, 5.31) struct ( 8) [fp+0x38] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
; V04 loc1 [V04 ] ( 3, 2 ) struct ( 8) [fp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Roslyn.Utilities.AsyncLazy`1+WaitThatValidatesInvariants[System.__Canon]>
-; V05 loc2 [V05,T26] ( 2, 2 ) ref -> x20 class-hnd single-def <<unknown class>>
+; V05 loc2 [V05,T25] ( 2, 2 ) ref -> x20 class-hnd single-def <<unknown class>>
; V06 loc3 [V06,T15] ( 9, 3.81) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T19] ( 4, 3.22) ref -> x20
@@ -26,58 +26,55 @@
;* V14 tmp7 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V15 tmp8 [V15,T13] ( 6, 4 ) long -> x2 "Indirect call through function pointer"
;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.HashSet`1+Enumerator[Roslyn.Utilities.AsyncLazy`1+Request[Microsoft.CodeAnalysis.TreeAndVersion]]>
-;* V17 tmp10 [V17,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V18 tmp11 [V18,T32] ( 2, 1.23) ref -> x0 class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
-; V19 tmp12 [V19,T25] ( 3, 2 ) ref -> x1 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.__Canon]>
-; V20 tmp13 [V20,T23] ( 8, 2.31) int -> x21 single-def "Inline stloc first use temp"
-;* V21 tmp14 [V21,T41] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V17 tmp10 [V17,T32] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V18 tmp11 [V18,T30] ( 2, 1.23) ref -> x0 class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
+; V19 tmp12 [V19,T24] ( 3, 2 ) ref -> x1 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.__Canon]>
+; V20 tmp13 [V20,T22] ( 8, 2.31) int -> x21 single-def "Inline stloc first use temp"
+;* V21 tmp14 [V21,T38] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V22 tmp15 [V22,T03] ( 10, 7.81) ref -> x21 class-hnd "Inlining Arg" <Roslyn.Utilities.AsyncLazy`1+Request[System.__Canon]>
-;* V23 tmp16 [V23,T40] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V23 tmp16 [V23,T37] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V24 tmp17 [V24,T16] ( 3, 3.60) byref -> x15 "Inlining Arg"
;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Exception]>
-; V27 tmp20 [V27,T29] ( 3, 1.56) ref -> x22 class-hnd "Inline return value spill temp" <System.__Canon>
+; V27 tmp20 [V27,T27] ( 3, 1.56) ref -> x22 class-hnd "Inline return value spill temp" <System.__Canon>
;* V28 tmp21 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V29 tmp22 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V30 tmp23 [V30,T30] ( 2, 0.78) ubyte -> x24 "Inline stloc first use temp"
+; V30 tmp23 [V30,T28] ( 2, 0.78) ubyte -> x24 "Inline stloc first use temp"
; V31 tmp24 [V31,T01] ( 9, 10.81) ref -> x23 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
-; V32 tmp25 [V32,T31] ( 3, 1.56) ref -> x24 class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V33 tmp26 [V33,T39] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V32 tmp25 [V32,T29] ( 3, 1.56) ref -> x24 class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
+; V33 tmp26 [V33,T36] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
; V34 tmp27 [V34,T14] ( 5, 3.91) int -> x14 "Inline stloc first use temp"
-; V35 tmp28 [V35,T42] ( 3, 0 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V36 tmp29 [V36,T24] ( 3, 2.26) ref -> x1 class-hnd "Inline stloc first use temp" <System.Object>
+; V35 tmp28 [V35,T39] ( 3, 0 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V36 tmp29 [V36,T23] ( 3, 2.26) ref -> x1 class-hnd "Inline stloc first use temp" <System.Object>
; V37 tmp30 [V37,T10] ( 3, 4.56) byref -> x0 "Inlining Arg"
; V38 tmp31 [V38,T21] ( 2, 3.04) ref -> x1 class-hnd exact "Inlining Arg" <System.Object>
; V39 tmp32 [V39 ] ( 2, 0 ) struct ( 8) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.SpinWait>
-; V40 tmp33 [V40,T43] ( 3, 0 ) ref -> x0 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
+; V40 tmp33 [V40,T40] ( 3, 0 ) ref -> x0 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
;* V41 tmp34 [V41 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V42 tmp35 [V42,T18] ( 4, 3.28) byref -> x20 "Inlining Arg"
-; V43 tmp36 [V43,T28] ( 5, 1.72) ref -> x21 class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
+; V43 tmp36 [V43,T26] ( 5, 1.72) ref -> x21 class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
;* V44 tmp37 [V44 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V45 tmp38 [V45 ] ( 7, 5.31) ref -> [fp+0x38] do-not-enreg[X] addr-exposed single-def "field V02._source (fldOffset=0x0)" P-DEP
; V46 tmp39 [V46 ] ( 3, 2 ) ref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V04.<asyncLazy>P (fldOffset=0x0)" P-DEP
; V47 tmp40 [V47 ] ( 2, 0 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V39._count (fldOffset=0x0)" P-DEP
-; V48 tmp41 [V48,T46] ( 2, 0 ) ref -> x0 "argument with side effect"
-; V49 tmp42 [V49,T47] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V50 tmp43 [V50,T48] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V51 PSPSym [V51,T35] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
-; V52 cse0 [V52,T49] ( 2, 0 ) byref -> x22 hoist "CSE - moderate"
+; V48 tmp41 [V48,T43] ( 2, 0 ) ref -> x0 "argument with side effect"
+; V49 tmp42 [V49,T44] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V50 tmp43 [V50,T45] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V51 PSPSym [V51,T33] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
+; V52 cse0 [V52,T46] ( 2, 0 ) byref -> x22 hoist "CSE - moderate"
; V53 cse1 [V53,T20] ( 4, 3.12) byref -> x14 "CSE - moderate"
; V54 cse2 [V54,T09] ( 6, 4.69) byref -> x0 multi-def "CSE - aggressive"
; V55 cse3 [V55,T07] ( 10, 5.20) long -> x21 multi-def "CSE - aggressive"
-; V56 rat0 [V56,T36] ( 3, 0.96) long -> x21 "Spilling to split statement for tree"
-; V57 rat1 [V57,T38] ( 3, 0.88) long -> x1 "runtime lookup"
-; V58 rat2 [V58,T33] ( 3, 1.23) long -> x1 "fgMakeTemp is creating a new local variable"
+; V56 rat0 [V56,T34] ( 3, 0.96) long -> x21 "Spilling to split statement for tree"
+; V57 rat1 [V57,T35] ( 3, 0.88) long -> x1 "runtime lookup"
+; V58 rat2 [V58,T31] ( 3, 1.23) long -> x1 "fgMakeTemp is creating a new local variable"
; V59 rat3 [V59,T11] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
; V60 rat4 [V60,T05] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
; V61 rat5 [V61,T06] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V62 rat6 [V62,T27] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V63 rat7 [V63,T37] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V64 rat8 [V64,T22] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V65 rat9 [V65,T17] ( 3, 3.44) long -> x1 "Spilling to split statement for tree"
-; V66 rat10 [V66,T12] ( 3, 4.37) long -> x11 "fgMakeTemp is creating a new local variable"
-; V67 rat11 [V67,T44] ( 3, 0 ) long -> x1 "Spilling to split statement for tree"
-; V68 rat12 [V68,T45] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V62 rat6 [V62,T17] ( 3, 3.44) long -> x1 "Spilling to split statement for tree"
+; V63 rat7 [V63,T12] ( 3, 4.37) long -> x11 "fgMakeTemp is creating a new local variable"
+; V64 rat8 [V64,T41] ( 3, 0 ) long -> x1 "Spilling to split statement for tree"
+; V65 rat9 [V65,T42] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 64
+0 (0.00%) : 172364.dasm - System.Collections.Tests.IEnumerableNonGenericTests:IEnumerableNonGenericGetEnumerator_ReturnsUniqueEnumerator(int):this (Tier1-OSR)
@@ -58,7 +58,7 @@
; V45 tmp34 [V45,T19] ( 7, 3.88) int -> x1 "Inline stloc first use temp"
; V46 tmp35 [V46,T43] ( 3, 0 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
; V47 tmp36 [V47,T14] ( 3, 5.81) ref -> x14 class-hnd "impAppendStmt" <<unknown class>>
-; V48 tmp37 [V48,T44] ( 3, 0 ) ref -> x21 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V48 tmp37 [V48,T44] ( 3, 0 ) ref -> x27 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V49 tmp38 [V49 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V50 tmp39 [V50,T32] ( 3, 0.12) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V51 tmp40 [V51 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
@@ -447,9 +447,7 @@ G_M64835_IG18: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
;; size=28 bbWeight=0 PerfScore 0.00
G_M64835_IG19: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ldr x27, [fp, #0xD1FFAB1E] // [V08 loc6]
- ; gcrRegs +[x27]
- mov x0, x27
+ ldr x0, [fp, #0xD1FFAB1E] // [V08 loc6]
; gcrRegs +[x0]
ldr x0, [x0, #0x08]
ldr x1, [x0]
@@ -458,8 +456,11 @@ G_M64835_IG19: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- str w0, [x27, #0x18]
+ ldr x14, [fp, #0xD1FFAB1E] // [V08 loc6]
+ ; gcrRegs +[x14]
+ str w0, [x14, #0x18]
movz x14, #0xD1FFAB1E
+ ; gcrRegs -[x14]
movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
ldr x15, [x14]
@@ -470,7 +471,7 @@ G_M64835_IG19: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
; gcrRegs -[x14]
; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x27]
+ ; gcrRegs -[x15]
; byrRegs -[x14]
b G_M64835_IG36
;; size=64 bbWeight=0 PerfScore 0.00
@@ -963,8 +964,8 @@ G_M64835_IG46: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
- mov x21, x0
- ; gcrRegs +[x21]
+ mov x27, x0
+ ; gcrRegs +[x27]
movz x0, #0xD1FFAB1E // code for <unknown method>
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
@@ -975,7 +976,7 @@ G_M64835_IG46: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov x1, x0
; gcrRegs +[x1]
- mov x0, x21
+ mov x0, x27
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -983,10 +984,10 @@ G_M64835_IG46: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- mov x0, x21
+ mov x0, x27
; gcrRegs +[x0]
bl CORINFO_HELP_THROW
- ; gcrRegs -[x0 x21]
+ ; gcrRegs -[x0 x27]
; gcr arg pop 0
;; size=76 bbWeight=0 PerfScore 0.00
G_M64835_IG47: ; bbWeight=0, gcVars=0000000040000801 {V04 V06 V08}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref
+4 (+0.19%) : 53901.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Canon,System.Canon]:TryInsert(System.Canon,System.Canon,ubyte):ubyte:this (Tier1)
@@ -11,30 +11,30 @@
;
; V00 this [V00,T00] ( 29, 13.23) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 15, 6.16) ref -> x20 ld-addr-op class-hnd single-def <System.__Canon>
-; V02 arg2 [V02,T15] ( 5, 3 ) ref -> x21 class-hnd single-def <System.__Canon>
-; V03 arg3 [V03,T17] ( 6, 2.50) ubyte -> x22 single-def
+; V02 arg2 [V02,T14] ( 5, 3 ) ref -> x21 class-hnd single-def <System.__Canon>
+; V03 arg3 [V03,T16] ( 6, 2.50) ubyte -> x22 single-def
; V04 loc0 [V04 ] ( 17, 7.10) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.__Canon]]>
-; V05 loc1 [V05,T25] ( 5, 3.05) ref -> x23 class-hnd single-def <<unknown class>>
-; V06 loc2 [V06,T23] ( 6, 3.61) int -> x25 single-def
-; V07 loc3 [V07,T33] ( 7, 2.61) int -> x26
-; V08 loc4 [V08,T24] ( 5, 3.09) byref -> x27
+; V05 loc1 [V05,T23] ( 5, 3.05) ref -> x23 class-hnd single-def <<unknown class>>
+; V06 loc2 [V06,T21] ( 6, 3.61) int -> x25 single-def
+; V07 loc3 [V07,T31] ( 7, 2.61) int -> x26
+; V08 loc4 [V08,T22] ( 5, 3.09) byref -> x27
; V09 loc5 [V09,T11] ( 13, 5.62) int -> x28
-; V10 loc6 [V10,T44] ( 5, 2.01) int -> x23
-; V11 loc7 [V11,T51] ( 4, 1.49) ref -> x23 class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
-; V12 loc8 [V12,T50] ( 3, 1.50) int -> x23 single-def
+; V10 loc6 [V10,T42] ( 5, 2.01) int -> registers
+; V11 loc7 [V11,T48] ( 4, 1.49) ref -> x23 class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+; V12 loc8 [V12,T47] ( 3, 1.50) int -> x23 single-def
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T40] ( 3, 2.04) int -> x25
+; V14 tmp1 [V14,T38] ( 3, 2.04) int -> x25
;* V15 tmp2 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp3 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V17 tmp4 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V18 tmp5 [V18,T14] ( 5, 5.03) byref -> x0 single-def "dup spill"
-; V19 tmp6 [V19,T74] ( 3, 0.00) long -> x1 "spilling helperCall"
+; V18 tmp5 [V18,T13] ( 5, 5.03) byref -> x0 single-def "dup spill"
+; V19 tmp6 [V19,T71] ( 3, 0.00) long -> x1 "spilling helperCall"
;* V20 tmp7 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp8 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp9 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V23 tmp10 [V23,T77] ( 3, 0 ) long -> [fp+0x20] "spilling helperCall"
+; V23 tmp10 [V23,T74] ( 3, 0 ) long -> [fp+0x20] "spilling helperCall"
;* V24 tmp11 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V25 tmp12 [V25,T76] ( 4, 0 ) long -> [fp+0x18] "VirtualCall with runtime lookup"
+; V25 tmp12 [V25,T73] ( 4, 0 ) long -> [fp+0x18] "VirtualCall with runtime lookup"
;* V26 tmp13 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V27 tmp14 [V27 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V28 tmp15 [V28 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -47,12 +47,12 @@
;* V35 tmp22 [V35 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V36 tmp23 [V36 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V37 tmp24 [V37 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V38 tmp25 [V38,T70] ( 4, 0.01) long -> x11 "VirtualCall with runtime lookup"
-; V39 tmp26 [V39,T43] ( 3, 2.01) int -> x25 "guarded devirt return temp"
+; V38 tmp25 [V38,T67] ( 4, 0.01) long -> x11 "VirtualCall with runtime lookup"
+; V39 tmp26 [V39,T41] ( 3, 2.01) int -> x25 "guarded devirt return temp"
;* V40 tmp27 [V40 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp"
;* V41 tmp28 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.BatchNode`1[Microsoft.Interop.ComInterfaceContext]>
-; V42 tmp29 [V42,T56] ( 3, 0.99) int -> x2 "guarded devirt return temp"
-; V43 tmp30 [V43,T16] ( 7, 4.53) ref -> x24 "guarded devirt arg temp"
+; V42 tmp29 [V42,T53] ( 3, 0.99) int -> x2 "guarded devirt return temp"
+; V43 tmp30 [V43,T15] ( 7, 4.53) ref -> x24 "guarded devirt arg temp"
;* V44 tmp31 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.ObjectEqualityComparer`1[System.Object]>
;* V45 tmp32 [V45 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V46 tmp33 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
@@ -62,93 +62,90 @@
; V50 tmp37 [V50,T05] ( 3, 6.20) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V51 tmp38 [V51,T06] ( 3, 6.20) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V52 tmp39 [V52 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V53 tmp40 [V53,T53] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V53 tmp40 [V53,T50] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V54 tmp41 [V54 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V55 tmp42 [V55,T54] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V55 tmp42 [V55,T51] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V56 tmp43 [V56 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inlining Arg" <System.Object>
;* V57 tmp44 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
-; V58 tmp45 [V58,T57] ( 3, 0.99) int -> x2 "guarded devirt return temp"
+; V58 tmp45 [V58,T54] ( 3, 0.99) int -> x2 "guarded devirt return temp"
;* V59 tmp46 [V59 ] ( 0, 0 ) ref -> zero-ref "guarded devirt arg temp"
;* V60 tmp47 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpSyntaxTree+ParsedSyntaxTree>
;* V61 tmp48 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V62 tmp49 [V62 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V63 tmp50 [V63 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V64 tmp51 [V64,T60] ( 3, 0.11) int -> x1 "Inlining Arg"
-; V65 tmp52 [V65,T58] ( 3, 0.11) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V66 tmp53 [V66,T59] ( 3, 0.11) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V64 tmp51 [V64,T57] ( 3, 0.11) int -> x1 "Inlining Arg"
+; V65 tmp52 [V65,T55] ( 3, 0.11) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V66 tmp53 [V66,T56] ( 3, 0.11) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V67 tmp54 [V67 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V68 tmp55 [V68,T67] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V68 tmp55 [V68,T64] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V69 tmp56 [V69 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V70 tmp57 [V70,T68] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V70 tmp57 [V70,T65] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V71 tmp58 [V71 ] ( 12, 4.55) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V04._items (fldOffset=0x0)" P-DEP
; V72 tmp59 [V72 ] ( 17, 7.10) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V04._length (fldOffset=0x8)" P-DEP
-; V73 tmp60 [V73,T38] ( 2, 2.07) ref -> x0 single-def "field V46._items (fldOffset=0x0)" P-INDEP
-; V74 tmp61 [V74,T39] ( 2, 2.07) int -> x1 single-def "field V46._length (fldOffset=0x8)" P-INDEP
-; V75 tmp62 [V75,T64] ( 2, 0.04) ref -> x0 single-def "field V61._items (fldOffset=0x0)" P-INDEP
-; V76 tmp63 [V76,T65] ( 2, 0.04) int -> x1 single-def "field V61._length (fldOffset=0x8)" P-INDEP
+; V73 tmp60 [V73,T36] ( 2, 2.07) ref -> x0 single-def "field V46._items (fldOffset=0x0)" P-INDEP
+; V74 tmp61 [V74,T37] ( 2, 2.07) int -> x1 single-def "field V46._length (fldOffset=0x8)" P-INDEP
+; V75 tmp62 [V75,T61] ( 2, 0.04) ref -> x0 single-def "field V61._items (fldOffset=0x0)" P-INDEP
+; V76 tmp63 [V76,T62] ( 2, 0.04) int -> x1 single-def "field V61._length (fldOffset=0x8)" P-INDEP
; V77 tmp64 [V77,T08] ( 3, 6.20) int -> x2 "index expr"
; V78 tmp65 [V78,T09] ( 3, 6.20) int -> x1 "index expr"
-; V79 tmp66 [V79,T21] ( 2, 4.09) long -> x1 "argument with side effect"
-; V80 tmp67 [V80,T47] ( 2, 1.99) long -> x1 "argument with side effect"
-; V81 tmp68 [V81,T37] ( 2, 2.10) long -> x1 "argument with side effect"
-; V82 tmp69 [V82,T61] ( 3, 0.11) int -> x2 "index expr"
-; V83 tmp70 [V83,T62] ( 3, 0.11) int -> x1 "index expr"
-; V84 tmp71 [V84,T42] ( 2, 2.01) long -> x1 "argument with side effect"
-; V85 tmp72 [V85,T93] ( 2, 0 ) long -> x1 "argument with side effect"
-; V86 tmp73 [V86,T92] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V87 tmp74 [V87,T94] ( 2, 0 ) long -> x1 "argument with side effect"
-; V88 tmp75 [V88,T95] ( 2, 0 ) long -> x0 "argument with side effect"
-; V89 tmp76 [V89,T96] ( 2, 0 ) long -> x1 "argument with side effect"
-; V90 tmp77 [V90,T97] ( 2, 0 ) long -> x0 "argument with side effect"
-; V91 tmp78 [V91,T48] ( 2, 1.99) long -> x1 "argument with side effect"
-; V92 cse0 [V92,T75] ( 3, 0.00) int -> x28 "CSE - conservative"
+; V79 tmp66 [V79,T19] ( 2, 4.09) long -> x1 "argument with side effect"
+; V80 tmp67 [V80,T45] ( 2, 1.99) long -> x1 "argument with side effect"
+; V81 tmp68 [V81,T35] ( 2, 2.10) long -> x1 "argument with side effect"
+; V82 tmp69 [V82,T58] ( 3, 0.11) int -> x2 "index expr"
+; V83 tmp70 [V83,T59] ( 3, 0.11) int -> x1 "index expr"
+; V84 tmp71 [V84,T40] ( 2, 2.01) long -> x1 "argument with side effect"
+; V85 tmp72 [V85,T90] ( 2, 0 ) long -> x1 "argument with side effect"
+; V86 tmp73 [V86,T89] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V87 tmp74 [V87,T91] ( 2, 0 ) long -> x1 "argument with side effect"
+; V88 tmp75 [V88,T92] ( 2, 0 ) long -> x0 "argument with side effect"
+; V89 tmp76 [V89,T93] ( 2, 0 ) long -> x1 "argument with side effect"
+; V90 tmp77 [V90,T94] ( 2, 0 ) long -> x0 "argument with side effect"
+; V91 tmp78 [V91,T46] ( 2, 1.99) long -> x1 "argument with side effect"
+; V92 cse0 [V92,T72] ( 3, 0.00) int -> x23 "CSE - conservative"
; V93 cse1 [V93,T03] ( 32, 6.97) long -> x24 multi-def "CSE - aggressive"
-; V94 rat0 [V94,T73] ( 3, 0.00) long -> x0 "Spilling to split statement for tree"
-; V95 rat1 [V95,T71] ( 3, 0.01) long -> x11 "fgMakeTemp is creating a new local variable"
-; V96 rat2 [V96,T18] ( 3, 4.37) long -> x0 "Spilling to split statement for tree"
-; V97 rat3 [V97,T22] ( 3, 3.97) long -> x1 "runtime lookup"
+; V94 rat0 [V94,T70] ( 3, 0.00) long -> x0 "Spilling to split statement for tree"
+; V95 rat1 [V95,T68] ( 3, 0.01) long -> x11 "fgMakeTemp is creating a new local variable"
+; V96 rat2 [V96,T17] ( 3, 4.37) long -> x0 "Spilling to split statement for tree"
+; V97 rat3 [V97,T20] ( 3, 3.97) long -> x1 "runtime lookup"
; V98 rat4 [V98,T12] ( 3, 5.56) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V99 rat5 [V99,T19] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V100 rat6 [V100,T49] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V101 rat7 [V101,T13] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V102 rat8 [V102,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V103 rat9 [V103,T26] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V104 rat10 [V104,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V105 rat11 [V105,T20] ( 3, 4.09) long -> x1 "runtime lookup"
-; V106 rat12 [V106,T10] ( 3, 5.72) long -> x1 "fgMakeTemp is creating a new local variable"
-; V107 rat13 [V107,T45] ( 3, 1.99) long -> x1 "runtime lookup"
-; V108 rat14 [V108,T31] ( 3, 2.79) long -> x1 "fgMakeTemp is creating a new local variable"
-; V109 rat15 [V109,T34] ( 3, 2.31) long -> x0 "Spilling to split statement for tree"
-; V110 rat16 [V110,T36] ( 3, 2.10) long -> x1 "runtime lookup"
-; V111 rat17 [V111,T27] ( 3, 2.94) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V112 rat18 [V112,T52] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V113 rat19 [V113,T28] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V114 rat20 [V114,T35] ( 3, 2.19) long -> x0 "Spilling to split statement for tree"
-; V115 rat21 [V115,T46] ( 3, 1.99) long -> x1 "runtime lookup"
-; V116 rat22 [V116,T32] ( 3, 2.79) long -> x1 "fgMakeTemp is creating a new local variable"
-; V117 rat23 [V117,T78] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
-; V118 rat24 [V118,T79] ( 3, 0 ) long -> x0 "runtime lookup"
-; V119 rat25 [V119,T80] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
-;* V120 rat26 [V120,T66] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V121 rat27 [V121,T69] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V122 rat28 [V122,T63] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V123 rat29 [V123,T81] ( 3, 0 ) long -> x1 "runtime lookup"
-; V124 rat30 [V124,T82] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-; V125 rat31 [V125,T83] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
-; V126 rat32 [V126,T84] ( 3, 0 ) long -> x3 "fgMakeTemp is creating a new local variable"
-; V127 rat33 [V127,T85] ( 3, 0 ) long -> x1 "runtime lookup"
-; V128 rat34 [V128,T86] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V129 rat35 [V129,T98] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V130 rat36 [V130,T87] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V131 rat37 [V131,T88] ( 3, 0 ) long -> x1 "runtime lookup"
-; V132 rat38 [V132,T89] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-; V133 rat39 [V133,T90] ( 3, 0 ) long -> x0 "runtime lookup"
-; V134 rat40 [V134,T91] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V135 rat41 [V135,T72] ( 3, 0.01) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V136 rat42 [V136,T55] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V137 rat43 [V137,T30] ( 2, 2.01) long -> x0 "fgMakeTemp is creating a new local variable"
-; V138 rat44 [V138,T41] ( 3, 2.01) long -> x1 "runtime lookup"
-; V139 rat45 [V139,T29] ( 3, 2.81) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V99 rat5 [V99,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V100 rat6 [V100,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V101 rat7 [V101,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V102 rat8 [V102,T18] ( 3, 4.09) long -> x1 "runtime lookup"
+; V103 rat9 [V103,T10] ( 3, 5.72) long -> x1 "fgMakeTemp is creating a new local variable"
+; V104 rat10 [V104,T43] ( 3, 1.99) long -> x1 "runtime lookup"
+; V105 rat11 [V105,T29] ( 3, 2.79) long -> x1 "fgMakeTemp is creating a new local variable"
+; V106 rat12 [V106,T32] ( 3, 2.31) long -> x0 "Spilling to split statement for tree"
+; V107 rat13 [V107,T34] ( 3, 2.10) long -> x1 "runtime lookup"
+; V108 rat14 [V108,T25] ( 3, 2.94) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V109 rat15 [V109,T49] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V110 rat16 [V110,T26] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V111 rat17 [V111,T33] ( 3, 2.19) long -> x0 "Spilling to split statement for tree"
+; V112 rat18 [V112,T44] ( 3, 1.99) long -> x1 "runtime lookup"
+; V113 rat19 [V113,T30] ( 3, 2.79) long -> x1 "fgMakeTemp is creating a new local variable"
+; V114 rat20 [V114,T75] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
+; V115 rat21 [V115,T76] ( 3, 0 ) long -> x0 "runtime lookup"
+; V116 rat22 [V116,T77] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+;* V117 rat23 [V117,T63] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V118 rat24 [V118,T66] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V119 rat25 [V119,T60] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V120 rat26 [V120,T78] ( 3, 0 ) long -> x1 "runtime lookup"
+; V121 rat27 [V121,T79] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
+; V122 rat28 [V122,T80] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V123 rat29 [V123,T81] ( 3, 0 ) long -> x3 "fgMakeTemp is creating a new local variable"
+; V124 rat30 [V124,T82] ( 3, 0 ) long -> x1 "runtime lookup"
+; V125 rat31 [V125,T83] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V126 rat32 [V126,T95] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V127 rat33 [V127,T84] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V128 rat34 [V128,T85] ( 3, 0 ) long -> x1 "runtime lookup"
+; V129 rat35 [V129,T86] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
+; V130 rat36 [V130,T87] ( 3, 0 ) long -> x0 "runtime lookup"
+; V131 rat37 [V131,T88] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
+; V132 rat38 [V132,T69] ( 3, 0.01) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V133 rat39 [V133,T52] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V134 rat40 [V134,T28] ( 2, 2.01) long -> x0 "fgMakeTemp is creating a new local variable"
+; V135 rat41 [V135,T39] ( 3, 2.01) long -> x1 "runtime lookup"
+; V136 rat42 [V136,T27] ( 3, 2.81) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 48
@@ -263,13 +260,13 @@ G_M33517_IG11: ; bbWeight=1.52, gcrefRegs=B80000 {x19 x20 x21 x23}, byref
; gcrRegs -[x0]
ldr w0, [fp, #0x30] // [V72 tmp59]
cmp w28, w0
- bhs G_M33517_IG41
+ bhs G_M33517_IG43
;; size=12 bbWeight=1.52 PerfScore 5.31
G_M33517_IG12: ; bbWeight=1.02, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=8000000 {x27}, byref, isz
ldr x0, [x24, #0x38]
ldr x0, [x0]
ldr x1, [x0, #0x40]
- cbz x1, G_M33517_IG40
+ cbz x1, G_M33517_IG35
;; size=16 bbWeight=1.02 PerfScore 10.22
G_M33517_IG13: ; bbWeight=1.02, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=8000000 {x27}, byref, isz
add x0, fp, #40 // [V04 loc0]
@@ -283,13 +280,13 @@ G_M33517_IG13: ; bbWeight=1.02, gcrefRegs=B80000 {x19 x20 x21 x23}, byref
ldr w0, [x0, #0x10]
; byrRegs -[x0]
cmp w0, w25
- bne G_M33517_IG38
+ bne G_M33517_IG40
;; size=40 bbWeight=1.02 PerfScore 11.25
G_M33517_IG14: ; bbWeight=0.50, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=8000000 {x27}, byref, isz
ldr x0, [x24, #0x38]
ldr x0, [x0]
...
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
-20 (-4.46%) : 24315.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary
2[System.Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.Canon]):this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 17 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
+; V00 this [V00,T04] ( 7, 16 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V01 arg1 [V01,T15] ( 4, 4 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
-; V02 arg2 [V02,T18] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V02 arg2 [V02,T17] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V03 loc0 [V03 ] ( 3, 11 ) struct (24) [fp+0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SmallDictionary`2+Enumerator[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V04 loc1 [V04 ] ( 5, 10 ) struct (32) [fp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,34 +27,31 @@
; V16 tmp11 [V16 ] ( 3, 11 ) ref -> [fp+0x68] do-not-enreg[X] addr-exposed "field V03._stack (fldOffset=0x0)" P-DEP
; V17 tmp12 [V17 ] ( 3, 11 ) ref -> [fp+0x70] do-not-enreg[X] addr-exposed "field V03._next (fldOffset=0x8)" P-DEP
; V18 tmp13 [V18 ] ( 3, 11 ) ref -> [fp+0x78] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x10)" P-DEP
-; V19 tmp14 [V19,T23] ( 2, 4 ) ref -> x23 "field V11.DefaultType (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T24] ( 2, 4 ) ref -> x24 "field V11._extensions (fldOffset=0x8)" P-INDEP
-; V21 tmp16 [V21,T25] ( 2, 4 ) ubyte -> x25 "field V11.DefaultNullableAnnotation (fldOffset=0x10)" P-INDEP
+; V19 tmp14 [V19,T21] ( 2, 4 ) ref -> x23 "field V11.DefaultType (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T22] ( 2, 4 ) ref -> x24 "field V11._extensions (fldOffset=0x8)" P-INDEP
+; V21 tmp16 [V21,T23] ( 2, 4 ) ubyte -> x25 "field V11.DefaultNullableAnnotation (fldOffset=0x10)" P-INDEP
; V22 tmp17 [V22 ] ( 2, 4 ) ref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V12._stack (fldOffset=0x0)" P-DEP
; V23 tmp18 [V23 ] ( 2, 4 ) ref -> [fp+0x38] do-not-enreg[X] addr-exposed "field V12._next (fldOffset=0x8)" P-DEP
; V24 tmp19 [V24 ] ( 2, 4 ) ref -> [fp+0x40] do-not-enreg[X] addr-exposed "field V12._current (fldOffset=0x10)" P-DEP
-; V25 tmp20 [V25,T26] ( 2, 4 ) long -> x1 "argument with side effect"
+; V25 tmp20 [V25,T24] ( 2, 4 ) long -> x1 "argument with side effect"
; V26 tmp21 [V26,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V27 tmp22 [V27,T12] ( 2, 8 ) long -> x1 "argument with side effect"
; V28 tmp23 [V28 ] ( 4, 16 ) struct (24) [fp+0x18] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
; V29 tmp24 [V29,T13] ( 2, 8 ) int -> x1 "argument with side effect"
; V30 tmp25 [V30,T10] ( 2, 8 ) ref -> x0 "argument with side effect"
; V31 tmp26 [V31,T11] ( 2, 8 ) ref -> x2 "argument with side effect"
-; V32 cse0 [V32,T21] ( 3, 4 ) long -> x22 "CSE - aggressive"
-;* V33 cse1 [V33,T28] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V32 cse0 [V32,T19] ( 3, 4 ) long -> x22 "CSE - aggressive"
+;* V33 cse1 [V33,T25] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; V34 cse2 [V34,T14] ( 4, 4.40) long -> x21 "CSE - aggressive"
-; V35 rat0 [V35,T19] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V36 rat1 [V36,T22] ( 3, 4 ) long -> x22 "runtime lookup"
+; V35 rat0 [V35,T18] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V36 rat1 [V36,T20] ( 3, 4 ) long -> x22 "runtime lookup"
; V37 rat2 [V37,T16] ( 3, 5.60) long -> x22 "fgMakeTemp is creating a new local variable"
-; V38 rat3 [V38,T20] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V39 rat4 [V39,T27] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V40 rat5 [V40,T17] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V41 rat6 [V41,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V42 rat7 [V42,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V43 rat8 [V43,T08] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-; V44 rat9 [V44,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V45 rat10 [V45,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V46 rat11 [V46,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V38 rat3 [V38,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V39 rat4 [V39,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V40 rat5 [V40,T08] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+; V41 rat6 [V41,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V42 rat7 [V42,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V43 rat8 [V43,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 120
@@ -122,14 +119,9 @@ G_M40847_IG06: ; bbWeight=1, nogc, extend
ldr x0, [fp, #0x40]
str x0, [fp, #0x78]
;; size=16 bbWeight=1 PerfScore 7.00
-G_M40847_IG07: ; bbWeight=1, isz, extend
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x28]
- cbnz x0, G_M40847_IG12
+G_M40847_IG07: ; bbWeight=1, extend
b G_M40847_IG12
- ;; size=24 bbWeight=1 PerfScore 14.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M40847_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x22
add x8, fp, #72 // [V04 loc1]
@@ -220,7 +212,7 @@ G_M40847_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ret lr
;; size=24 bbWeight=1 PerfScore 7.00
-; Total bytes of code 448, prolog size 52, PerfScore 325.60, instruction count 112, allocated bytes for code 448 (MethodHash=69926070) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 428, prolog size 52, PerfScore 312.60, instruction count 107, allocated bytes for code 428 (MethodHash=69926070) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -231,7 +223,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 112 (0x00070) Actual length = 448 (0x0001c0)
+ Function Length : 107 (0x0006b) Actual length = 428 (0x0001ac)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-3.00%) : 70117.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
@@ -8,18 +8,18 @@
; 2 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 14 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]>
+; V00 this [V00,T04] ( 7, 13 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]>
; V01 arg1 [V01,T05] ( 8, 12 ) ref -> x19 class-hnd single-def <System.Array>
; V02 arg2 [V02,T08] ( 6, 8 ) int -> registers
; V03 loc0 [V03 ] ( 5, 12 ) struct (48) [fp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableSortedSet`1+Enumerator[System.__Canon]>
-; V04 loc1 [V04,T22] ( 2, 4 ) ref -> x23 class-hnd <System.__Canon>
+; V04 loc1 [V04,T20] ( 2, 4 ) ref -> x23 class-hnd <System.__Canon>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V09 tmp4 [V09,T07] ( 3, 12 ) int -> x20 "impSpillLclRefs"
;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V11 tmp6 [V11,T19] ( 6, 4 ) long -> x2 "Indirect call through function pointer"
+; V11 tmp6 [V11,T17] ( 6, 4 ) long -> x2 "Indirect call through function pointer"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V14 tmp9 [V14 ] ( 2, 4 ) struct (48) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableSortedSet`1+Enumerator[System.__Canon]>
@@ -29,27 +29,24 @@
; V18 tmp13 [V18,T13] ( 3, 6 ) int -> x0 "Inline stloc first use temp"
; V19 tmp14 [V19,T06] ( 3, 12 ) byref -> x25 "Inlining Arg"
;* V20 tmp15 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp16 [V21,T29] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V22 tmp17 [V22,T23] ( 2, 4 ) long -> x1 "argument with side effect"
+; V21 tmp16 [V21,T26] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V22 tmp17 [V22,T21] ( 2, 4 ) long -> x1 "argument with side effect"
; V23 tmp18 [V23,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V24 tmp19 [V24,T09] ( 2, 8 ) long -> x1 "argument with side effect"
; V25 tmp20 [V25,T10] ( 2, 8 ) long -> x2 "argument with side effect"
-; V26 PSPSym [V26,T26] ( 1, 1 ) long -> [fp+0x80] do-not-enreg[V] "PSPSym"
-; V27 cse0 [V27,T20] ( 3, 4 ) long -> x22 "CSE - aggressive"
-; V28 cse1 [V28,T24] ( 6, 3.20) long -> x21 multi-def "CSE - aggressive"
+; V26 PSPSym [V26,T23] ( 1, 1 ) long -> [fp+0x80] do-not-enreg[V] "PSPSym"
+; V27 cse0 [V27,T18] ( 3, 4 ) long -> x22 "CSE - aggressive"
+; V28 cse1 [V28,T22] ( 6, 3.20) long -> x21 multi-def "CSE - aggressive"
; V29 cse2 [V29,T11] ( 3, 6 ) ref -> x1 "CSE - aggressive"
-; V30 rat0 [V30,T17] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V31 rat1 [V31,T21] ( 3, 4 ) long -> x22 "runtime lookup"
+; V30 rat0 [V30,T16] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
+; V31 rat1 [V31,T19] ( 3, 4 ) long -> x22 "runtime lookup"
; V32 rat2 [V32,T14] ( 3, 5.60) long -> x22 "fgMakeTemp is creating a new local variable"
-; V33 rat3 [V33,T18] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V34 rat4 [V34,T25] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V35 rat5 [V35,T15] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V36 rat6 [V36,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V37 rat7 [V37,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V38 rat8 [V38,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
-; V39 rat9 [V39,T16] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
-; V40 rat10 [V40,T27] ( 3, 0 ) long -> x21 "Spilling to split statement for tree"
-; V41 rat11 [V41,T28] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V33 rat3 [V33,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V34 rat4 [V34,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V35 rat5 [V35,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+; V36 rat6 [V36,T15] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V37 rat7 [V37,T24] ( 3, 0 ) long -> x21 "Spilling to split statement for tree"
+; V38 rat8 [V38,T25] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 120
@@ -127,18 +124,10 @@ G_M52227_IG06: ; bbWeight=1, nogc, extend
ldp x0, x1, [fp, #0x38]
stp x0, x1, [fp, #0x68]
;; size=24 bbWeight=1 PerfScore 12.00
-G_M52227_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x10] // [V00 this]
- ; gcrRegs +[x2]
- ldr x0, [x2]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x30]
- cbnz x0, G_M52227_IG11
+G_M52227_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
b G_M52227_IG11
- ;; size=28 bbWeight=1 PerfScore 16.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M52227_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
mov x1, x22
add x0, fp, #72 // [V03 loc0]
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableSortedSet`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this
@@ -200,16 +189,16 @@ G_M52227_IG10: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {
; gcrRegs -[x0-x1 x23]
; gcr arg pop 0
mov w20, w24
+ ;; size=48 bbWeight=2 PerfScore 19.00
+G_M52227_IG11: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x2, [fp, #0x10] // [V00 this]
; gcrRegs +[x2]
- ;; size=52 bbWeight=2 PerfScore 23.00
-G_M52227_IG11: ; bbWeight=8, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x2]
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x30]
cbz x1, G_M52227_IG13
- ;; size=20 bbWeight=8 PerfScore 104.00
+ ;; size=24 bbWeight=8 PerfScore 120.00
G_M52227_IG12: ; bbWeight=6.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
b G_M52227_IG14
@@ -359,7 +348,7 @@ G_M52227_IG29: ; bbWeight=0, funclet epilog, nogc, extend
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 800, prolog size 64, PerfScore 352.20, instruction count 200, allocated bytes for code 800 (MethodHash=24b133fc) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
+; Total bytes of code 776, prolog size 64, PerfScore 349.20, instruction count 194, allocated bytes for code 776 (MethodHash=24b133fc) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
; ============================================================
Unwind Info:
@@ -370,7 +359,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 172 (0x000ac) Actual length = 688 (0x0002b0)
+ Function Length : 166 (0x000a6) Actual length = 664 (0x000298)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-2.84%) : 68543.dasm - System.Collections.Immutable.ImmutableList1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer
1[System.__Canon]):int:this (FullOpts)
@@ -8,13 +8,13 @@
; 0 inlinees with PGO data; 2 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 9, 16 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
+; V00 this [V00,T06] ( 8, 15 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
; V01 arg1 [V01,T14] ( 3, 6 ) ref -> x22 class-hnd single-def <System.__Canon>
; V02 arg2 [V02,T07] ( 8, 14 ) int -> x19
; V03 arg3 [V03,T12] ( 6, 6 ) int -> x21 single-def
; V04 arg4 [V04,T11] ( 5, 8 ) ref -> x20 class-hnd <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V05 loc0 [V05 ] ( 5, 15 ) struct (56) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]>
-; V06 loc1 [V06,T29] ( 2, 2 ) int -> [fp+0x1C] do-not-enreg[Z] EH-live
+; V06 loc1 [V06,T27] ( 2, 2 ) int -> [fp+0x1C] do-not-enreg[Z] EH-live
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -28,31 +28,28 @@
;* V17 tmp10 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp13 [V20,T32] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V21 tmp14 [V21,T33] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V22 tmp15 [V22,T27] ( 2, 4 ) long -> x1 "argument with side effect"
+; V20 tmp13 [V20,T29] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V21 tmp14 [V21,T30] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V22 tmp15 [V22,T25] ( 2, 4 ) long -> x1 "argument with side effect"
; V23 tmp16 [V23,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V24 tmp17 [V24,T08] ( 2, 16 ) ref -> x2 "argument with side effect"
-; V25 PSPSym [V25,T31] ( 1, 1 ) long -> [fp+0x60] do-not-enreg[V] "PSPSym"
+; V25 PSPSym [V25,T28] ( 1, 1 ) long -> [fp+0x60] do-not-enreg[V] "PSPSym"
; V26 cse0 [V26,T15] ( 3, 6 ) long -> x24 "CSE - aggressive"
-; V27 cse1 [V27,T28] ( 3, 3 ) int -> x1 "CSE - aggressive"
+; V27 cse1 [V27,T26] ( 3, 3 ) int -> x1 "CSE - aggressive"
; V28 cse2 [V28,T10] ( 10, 12 ) long -> x23 multi-def "CSE - aggressive"
-; V29 rat0 [V29,T21] ( 3, 4.40) long -> x23 "Spilling to split statement for tree"
-; V30 rat1 [V30,T25] ( 3, 4 ) long -> x1 "runtime lookup"
+; V29 rat0 [V29,T20] ( 3, 4.40) long -> x23 "Spilling to split statement for tree"
+; V30 rat1 [V30,T23] ( 3, 4 ) long -> x1 "runtime lookup"
; V31 rat2 [V31,T16] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
-; V32 rat3 [V32,T22] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V33 rat4 [V33,T26] ( 3, 4 ) long -> x24 "runtime lookup"
+; V32 rat3 [V32,T21] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
+; V33 rat4 [V33,T24] ( 3, 4 ) long -> x24 "runtime lookup"
; V34 rat5 [V34,T17] ( 3, 5.60) long -> x24 "fgMakeTemp is creating a new local variable"
-; V35 rat6 [V35,T23] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V36 rat7 [V36,T30] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V37 rat8 [V37,T18] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V38 rat9 [V38,T05] ( 3, 22.40) long -> x25 "fgMakeTemp is creating a new local variable"
-; V39 rat10 [V39,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V40 rat11 [V40,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V41 rat12 [V41,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
-; V42 rat13 [V42,T19] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
-; V43 rat14 [V43,T24] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V44 rat15 [V44,T20] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
+; V35 rat6 [V35,T05] ( 3, 22.40) long -> x25 "fgMakeTemp is creating a new local variable"
+; V36 rat7 [V36,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V37 rat8 [V37,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V38 rat9 [V38,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+; V39 rat10 [V39,T18] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V40 rat11 [V40,T22] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V41 rat12 [V41,T19] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 88
@@ -160,18 +157,10 @@ G_M57893_IG09: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {
; gcrRegs -[x2]
; gcr arg pop 0
;; size=48 bbWeight=1 PerfScore 10.50
-G_M57893_IG10: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x10] // [V00 this]
- ; gcrRegs +[x2]
- ldr x0, [x2]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x18]
- cbnz x0, G_M57893_IG15
+G_M57893_IG10: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
b G_M57893_IG15
- ;; size=28 bbWeight=1 PerfScore 16.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M57893_IG11: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
mov x21, x24
ldr x0, [x23, #0x38]
ldr x0, [x0]
@@ -212,16 +201,16 @@ G_M57893_IG14: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {
; gcr arg pop 0
cbnz w0, G_M57893_IG20
add w19, w19, #1
+ ;; size=60 bbWeight=4 PerfScore 56.00
+G_M57893_IG15: ; bbWeight=8, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x2, [fp, #0x10] // [V00 this]
; gcrRegs +[x2]
- ;; size=64 bbWeight=4 PerfScore 64.00
-G_M57893_IG15: ; bbWeight=8, gcrefRegs=500004 {x2 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x0, [x2]
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x18]
cbz x1, G_M57893_IG17
- ;; size=20 bbWeight=8 PerfScore 104.00
+ ;; size=24 bbWeight=8 PerfScore 120.00
G_M57893_IG16: ; bbWeight=6.40, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
b G_M57893_IG18
@@ -386,7 +375,7 @@ G_M57893_IG38: ; bbWeight=1, funclet epilog, nogc, extend
ret lr
;; size=24 bbWeight=1 PerfScore 15.00
-; Total bytes of code 844, prolog size 72, PerfScore 448.10, instruction count 211, allocated bytes for code 844 (MethodHash=b3341dda) for method System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
+; Total bytes of code 820, prolog size 72, PerfScore 441.10, instruction count 205, allocated bytes for code 820 (MethodHash=b3341dda) for method System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -397,7 +386,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 183 (0x000b7) Actual length = 732 (0x0002dc)
+ Function Length : 177 (0x000b1) Actual length = 708 (0x0002c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 66261.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Canon,System.Canon]:CopyToObjects(System.Object[],int):this (FullOpts)
@@ -11,7 +11,7 @@
; V00 this [V00,T10] ( 4, 4 ) ref -> x20 this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T11] ( 3, 18 ) ref -> x21 class-hnd single-def <System.Object[]>
; V02 arg2 [V02,T06] ( 5, 50 ) int -> x19
-; V03 loc0 [V03,T17] ( 3, 6 ) ref -> x22 class-hnd exact single-def <<unknown class>>
+; V03 loc0 [V03,T15] ( 3, 6 ) ref -> x22 class-hnd exact single-def <<unknown class>>
; V04 loc1 [V04,T12] ( 5, 17 ) int -> x23
;* V05 loc2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Concurrent.ConcurrentDictionary`2+VolatileNode[System.__Canon,System.__Canon]>
; V06 loc3 [V06,T02] ( 7, 88 ) ref -> x26 class-hnd <<unknown class>>
@@ -22,20 +22,17 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V12 tmp5 [V12,T04] ( 2, 64 ) ref -> x27 class-hnd "Inlining Arg" <System.__Canon>
; V13 tmp6 [V13,T05] ( 2, 64 ) ref -> x28 class-hnd "Inlining Arg" <System.__Canon>
-; V14 tmp7 [V14,T16] ( 2, 8 ) ref -> x26 "field V05._node (fldOffset=0x0)" P-INDEP
+; V14 tmp7 [V14,T14] ( 2, 8 ) ref -> x26 "field V05._node (fldOffset=0x0)" P-INDEP
; V15 tmp8 [V15,T07] ( 2, 32 ) ref -> x27 "field V08.key (fldOffset=0x0)" P-INDEP
; V16 tmp9 [V16,T08] ( 2, 32 ) ref -> x28 "field V08.value (fldOffset=0x8)" P-INDEP
; V17 cse0 [V17,T13] ( 2, 17 ) long -> x25 hoist "CSE - aggressive"
-; V18 cse1 [V18,T18] ( 3, 6 ) int -> x24 "CSE - aggressive"
-; V19 rat0 [V19,T20] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V20 rat1 [V20,T21] ( 3, 4 ) long -> x25 "runtime lookup"
-; V21 rat2 [V21,T19] ( 3, 5.60) long -> x25 "fgMakeTemp is creating a new local variable"
-;* V22 rat3 [V22,T15] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V23 rat4 [V23,T22] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V24 rat5 [V24,T14] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V25 rat6 [V25,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V26 rat7 [V26,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V27 rat8 [V27,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V18 cse1 [V18,T16] ( 3, 6 ) int -> x24 "CSE - aggressive"
+; V19 rat0 [V19,T18] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V20 rat1 [V20,T19] ( 3, 4 ) long -> x25 "runtime lookup"
+; V21 rat2 [V21,T17] ( 3, 5.60) long -> x25 "fgMakeTemp is creating a new local variable"
+;* V22 rat3 [V22,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V23 rat4 [V23,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V24 rat5 [V24,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
+0 (0.00%) : 4912.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)
@@ -23,11 +23,11 @@
; V12 loc9 [V12,T14] ( 4, 14 ) byref -> x27
; V13 loc10 [V13,T17] ( 6, 13.50) int -> x26
; V14 loc11 [V14,T15] ( 4, 14 ) byref -> x27
-; V15 loc12 [V15,T66] ( 3, 1.50) int -> x22 single-def
+; V15 loc12 [V15,T62] ( 3, 1.50) int -> x22 single-def
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp2 [V18,T31] ( 4, 3 ) long -> x11 "VirtualCall with runtime lookup"
-; V19 tmp3 [V19,T67] ( 3, 1.50) int -> x24
+; V19 tmp3 [V19,T63] ( 3, 1.50) int -> x24
;* V20 tmp4 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -35,8 +35,8 @@
;* V24 tmp8 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp10 [V26,T28] ( 4, 4 ) byref -> x0 single-def "dup spill"
-; V27 tmp11 [V27,T61] ( 3, 2 ) long -> x1 "spilling helperCall"
-; V28 tmp12 [V28,T68] ( 3, 1.50) int -> x24
+; V27 tmp11 [V27,T57] ( 3, 2 ) long -> x1 "spilling helperCall"
+; V28 tmp12 [V28,T64] ( 3, 1.50) int -> x24
;* V29 tmp13 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp14 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -48,9 +48,9 @@
; V37 tmp21 [V37,T32] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V38 tmp22 [V38,T33] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp24 [V40,T81] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp24 [V40,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp26 [V42,T82] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp26 [V42,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V43 tmp27 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -58,9 +58,9 @@
; V47 tmp31 [V47,T34] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V48 tmp32 [V48,T35] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V50 tmp34 [V50,T83] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V50 tmp34 [V50,T77] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V52 tmp36 [V52,T84] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V52 tmp36 [V52,T78] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -68,63 +68,57 @@
; V57 tmp41 [V57,T36] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V58 tmp42 [V58,T37] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V60 tmp44 [V60,T85] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V60 tmp44 [V60,T79] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V62 tmp46 [V62,T86] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V62 tmp46 [V62,T80] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V63 tmp47 [V63 ] ( 6, 10.50) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64 ] ( 9, 19 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V65 tmp49 [V65,T72] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
-; V66 tmp50 [V66,T75] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V67 tmp51 [V67,T73] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
-; V68 tmp52 [V68,T76] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T74] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
-; V70 tmp54 [V70,T77] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
+; V65 tmp49 [V65,T68] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
+; V66 tmp50 [V66,T71] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V67 tmp51 [V67,T69] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
+; V68 tmp52 [V68,T72] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T70] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
+; V70 tmp54 [V70,T73] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
; V71 tmp55 [V71,T41] ( 3, 3 ) int -> x2 "index expr"
; V72 tmp56 [V72,T42] ( 3, 3 ) int -> x1 "index expr"
; V73 tmp57 [V73,T43] ( 3, 3 ) int -> x2 "index expr"
; V74 tmp58 [V74,T44] ( 3, 3 ) int -> x1 "index expr"
; V75 tmp59 [V75,T12] ( 2, 16 ) long -> x1 "argument with side effect"
; V76 tmp60 [V76,T13] ( 2, 16 ) long -> x1 "argument with side effect"
-; V77 tmp61 [V77,T64] ( 2, 2 ) int -> x1 "argument with side effect"
+; V77 tmp61 [V77,T60] ( 2, 2 ) int -> x1 "argument with side effect"
; V78 tmp62 [V78,T45] ( 3, 3 ) int -> x2 "index expr"
; V79 tmp63 [V79,T46] ( 3, 3 ) int -> x1 "index expr"
-; V80 tmp64 [V80,T65] ( 2, 2 ) long -> x1 "argument with side effect"
-; V81 cse0 [V81,T69] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V82 cse1 [V82,T70] ( 3, 1.50) int -> x26 "CSE - moderate"
-; V83 cse2 [V83,T71] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V84 rat0 [V84,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V85 rat1 [V85,T62] ( 3, 2 ) long -> x1 "runtime lookup"
+; V80 tmp64 [V80,T61] ( 2, 2 ) long -> x1 "argument with side effect"
+; V81 cse0 [V81,T65] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V82 cse1 [V82,T66] ( 3, 1.50) int -> x26 "CSE - moderate"
+; V83 cse2 [V83,T67] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V84 rat0 [V84,T52] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V85 rat1 [V85,T58] ( 3, 2 ) long -> x1 "runtime lookup"
; V86 rat2 [V86,T47] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V87 rat3 [V87,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V88 rat4 [V88,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V89 rat5 [V89,T48] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V90 rat6 [V90,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V91 rat7 [V91,T10] ( 3, 16 ) long -> x1 "runtime lookup"
-; V92 rat8 [V92,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V93 rat9 [V93,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V94 rat10 [V94,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V95 rat11 [V95,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V96 rat12 [V96,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V97 rat13 [V97,T49] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V98 rat14 [V98,T57] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V99 rat15 [V99,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V100 rat16 [V100,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V101 rat17 [V101,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V102 rat18 [V102,T11] ( 3, 16 ) long -> x1 "runtime lookup"
-; V103 rat19 [V103,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-; V104 rat20 [V104,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
-; V105 rat21 [V105,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V106 rat22 [V106,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V107 rat23 [V107,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V108 rat24 [V108,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V109 rat25 [V109,T58] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V87 rat3 [V87,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V88 rat4 [V88,T10] ( 3, 16 ) long -> x1 "runtime lookup"
+; V89 rat5 [V89,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V90 rat6 [V90,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V91 rat7 [V91,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V92 rat8 [V92,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V93 rat9 [V93,T53] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V94 rat10 [V94,T48] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
+; V95 rat11 [V95,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V96 rat12 [V96,T11] ( 3, 16 ) long -> x1 "runtime lookup"
+; V97 rat13 [V97,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+; V98 rat14 [V98,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
+; V99 rat15 [V99,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+;* V100 rat16 [V100,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V101 rat17 [V101,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V102 rat18 [V102,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V103 rat19 [V103,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V104 rat20 [V104,T49] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V105 rat21 [V105,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V106 rat22 [V106,T74] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V107 rat23 [V107,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V108 rat24 [V108,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V109 rat25 [V109,T59] ( 3, 2 ) long -> x1 "runtime lookup"
; V110 rat26 [V110,T51] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V111 rat27 [V111,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V112 rat28 [V112,T80] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V113 rat29 [V113,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V114 rat30 [V114,T60] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V115 rat31 [V115,T63] ( 3, 2 ) long -> x1 "runtime lookup"
-; V116 rat32 [V116,T53] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 24
+0 (0.00%) : 78700.dasm - System.Collections.Generic.HashSet1[System.ValueTuple
2[System.Canon,int]]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable1[System.ValueTuple
2[System.Canon,int]],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)
@@ -11,21 +11,21 @@
; V00 this [V00,T03] ( 11, 14 ) ref -> [fp-0x78] this class-hnd EH-live single-def <System.Collections.Generic.HashSet`1[System.ValueTuple`2[System.__Canon,int]]>
; V01 arg1 [V01,T15] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,int]]>
; V02 arg2 [V02,T10] ( 3, 4 ) ubyte -> x19 single-def
-; V03 loc0 [V03,T39] ( 3, 1.50) int -> x1
+; V03 loc0 [V03,T37] ( 3, 1.50) int -> x1
;* V04 loc1 [V04 ] ( 0, 0 ) int -> zero-ref
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
;* V06 loc3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op <System.Collections.Generic.BitHelper>
; V07 loc4 [V07,T16] ( 4, 5 ) int -> x21
; V08 loc5 [V08,T17] ( 4, 5 ) int -> x24
-; V09 loc6 [V09,T40] ( 3, 1.50) int -> x19
-; V10 loc7 [V10,T37] ( 6, 1.50) ref -> [fp-0x80] class-hnd EH-live spill-single-def <<unknown class>>
+; V09 loc6 [V09,T38] ( 3, 1.50) int -> x19
+; V10 loc7 [V10,T35] ( 6, 1.50) ref -> [fp-0x80] class-hnd EH-live spill-single-def <<unknown class>>
;* V11 loc8 [V11 ] ( 0, 0 ) struct (16) zero-ref <System.ValueTuple`2[System.__Canon,int]>
;* V12 loc9 [V12 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
; V13 loc10 [V13,T06] ( 7, 9 ) ref -> [fp-0x88] class-hnd EH-live spill-single-def <<unknown class>>
;* V14 loc11 [V14 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret <System.ValueTuple`2[System.__Canon,int]>
; V15 loc12 [V15,T04] ( 6, 16 ) int -> x25
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V17 tmp1 [V17,T41] ( 2, 1 ) int -> x1
+; V17 tmp1 [V17,T39] ( 2, 1 ) int -> x1
;* V18 tmp2 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V19 tmp3 [V19 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.BitHelper>
;* V20 tmp4 [V20 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
@@ -47,7 +47,7 @@
;* V36 tmp20 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V37 tmp21 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V38 tmp22 [V38,T20] ( 8, 4 ) int -> x22 "Inline return value spill temp"
-; V39 tmp23 [V39,T35] ( 2, 2 ) long -> x21 "Inlining Arg"
+; V39 tmp23 [V39,T33] ( 2, 2 ) long -> x21 "Inlining Arg"
; V40 tmp24 [V40,T25] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <int[]>
;* V41 tmp25 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V42 tmp26 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -57,7 +57,7 @@
; V46 tmp30 [V46,T21] ( 5, 4.00) long -> [fp-0x70] spill-single-def "Inlining Arg"
;* V47 tmp31 [V47 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V48 tmp32 [V48 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V49 tmp33 [V49,T36] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V49 tmp33 [V49,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V50 tmp34 [V50,T11] ( 3, 6 ) int -> x0 "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[int]>
; V52 tmp36 [V52,T12] ( 3, 6 ) int -> x27 "Inline stloc first use temp"
@@ -71,22 +71,22 @@
;* V60 tmp44 [V60 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
; V61 tmp45 [V61,T07] ( 2, 8 ) ref -> x0 "field V14.Item1 (fldOffset=0x0)" P-INDEP
; V62 tmp46 [V62,T08] ( 2, 8 ) int -> x2 "field V14.Item2 (fldOffset=0x8)" P-INDEP
-; V63 tmp47 [V63,T47] ( 4, 1.50) byref -> x21 single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+; V63 tmp47 [V63,T45] ( 4, 1.50) byref -> x21 single-def "field V18._reference (fldOffset=0x0)" P-INDEP
;* V64 tmp48 [V64 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
;* V65 tmp49 [V65 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
;* V66 tmp50 [V66 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;* V67 tmp51 [V67 ] ( 0, 0 ) ref -> zero-ref "field V26.Item1 (fldOffset=0x0)" P-DEP
;* V68 tmp52 [V68 ] ( 0, 0 ) int -> zero-ref "field V26.Item2 (fldOffset=0x8)" P-DEP
-; V69 tmp53 [V69,T43] ( 2, 1.50) int -> [fp-0x60] do-not-enreg[] "field V27.Item1 (fldOffset=0x0)" P-DEP
-; V70 tmp54 [V70,T44] ( 2, 1.50) int -> [fp-0x5C] do-not-enreg[] "field V27.Item2 (fldOffset=0x4)" P-DEP
+; V69 tmp53 [V69,T41] ( 2, 1.50) int -> [fp-0x60] do-not-enreg[] "field V27.Item1 (fldOffset=0x0)" P-DEP
+; V70 tmp54 [V70,T42] ( 2, 1.50) int -> [fp-0x5C] do-not-enreg[] "field V27.Item2 (fldOffset=0x4)" P-DEP
;* V71 tmp55 [V71 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP
;* V72 tmp56 [V72 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
;* V73 tmp57 [V73 ] ( 0, 0 ) ref -> zero-ref "field V34.Item1 (fldOffset=0x0)" P-DEP
;* V74 tmp58 [V74 ] ( 0, 0 ) int -> zero-ref "field V34.Item2 (fldOffset=0x8)" P-DEP
-; V75 tmp59 [V75,T45] ( 2, 1.50) int -> [fp-0x68] do-not-enreg[] "field V35.Item1 (fldOffset=0x0)" P-DEP
-; V76 tmp60 [V76,T46] ( 2, 1.50) int -> [fp-0x64] do-not-enreg[] "field V35.Item2 (fldOffset=0x4)" P-DEP
-; V77 tmp61 [V77,T48] ( 2, 1 ) byref -> x23 "field V41._reference (fldOffset=0x0)" P-INDEP
-; V78 tmp62 [V78,T49] ( 2, 1 ) int -> x22 "field V41._length (fldOffset=0x8)" P-INDEP
+; V75 tmp59 [V75,T43] ( 2, 1.50) int -> [fp-0x68] do-not-enreg[] "field V35.Item1 (fldOffset=0x0)" P-DEP
+; V76 tmp60 [V76,T44] ( 2, 1.50) int -> [fp-0x64] do-not-enreg[] "field V35.Item2 (fldOffset=0x4)" P-DEP
+; V77 tmp61 [V77,T46] ( 2, 1 ) byref -> x23 "field V41._reference (fldOffset=0x0)" P-INDEP
+; V78 tmp62 [V78,T47] ( 2, 1 ) int -> x22 "field V41._length (fldOffset=0x8)" P-INDEP
;* V79 tmp63 [V79 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
;* V80 tmp64 [V80 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
;* V81 tmp65 [V81 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP
@@ -99,25 +99,22 @@
;* V88 tmp72 [V88 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
; V89 tmp73 [V89,T18] ( 3, 4.50) byref -> x23 single-def "V06.[000..008)"
; V90 tmp74 [V90,T19] ( 3, 4.50) int -> x22 "V06.[008..012)"
-; V91 tmp75 [V91,T38] ( 3, 1.50) byref -> x23 "V21.[000..008)"
-; V92 tmp76 [V92,T42] ( 3, 1.50) int -> x22 "V21.[008..012)"
+; V91 tmp75 [V91,T36] ( 3, 1.50) byref -> x23 "V21.[000..008)"
+; V92 tmp76 [V92,T40] ( 3, 1.50) int -> x22 "V21.[008..012)"
; V93 GsCookie [V93 ] ( 1, 1 ) long -> [fp-0x90] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V94 PSPSym [V94,T51] ( 1, 1 ) long -> [fp-0x50] do-not-enreg[V] "PSPSym"
+; V94 PSPSym [V94,T48] ( 1, 1 ) long -> [fp-0x50] do-not-enreg[V] "PSPSym"
; V95 cse0 [V95,T13] ( 3, 6 ) int -> x27 "CSE - aggressive"
; V96 cse1 [V96,T14] ( 3, 6 ) int -> x26 "CSE - aggressive"
; V97 cse2 [V97,T09] ( 11, 7 ) long -> registers multi-def "CSE - aggressive"
-; V98 rat0 [V98,T31] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V98 rat0 [V98,T30] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V99 rat1 [V99,T27] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-; V100 rat2 [V100,T32] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V100 rat2 [V100,T31] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V101 rat3 [V101,T28] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-; V102 rat4 [V102,T33] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V102 rat4 [V102,T32] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V103 rat5 [V103,T29] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V104 rat6 [V104,T34] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V105 rat7 [V105,T50] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V106 rat8 [V106,T30] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V107 rat9 [V107,T02] ( 3, 17.60) long -> x1 "Spilling to split statement for tree"
-; V108 rat10 [V108,T01] ( 3, 22.40) long -> x11 "fgMakeTemp is creating a new local variable"
-; V109 rat11 [V109,T26] ( 3, 3 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V104 rat6 [V104,T02] ( 3, 17.60) long -> x1 "Spilling to split statement for tree"
+; V105 rat7 [V105,T01] ( 3, 22.40) long -> x11 "fgMakeTemp is creating a new local variable"
+; V106 rat8 [V106,T26] ( 3, 3 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 72
@@ -180,7 +177,7 @@ G_M10461_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
str x0, [fp, #-0x80] // [V10 loc7]
; GC ptr vars +{V10}
;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M10461_IG07: ; bbWeight=0.50, gcVars=0000002000000008 {V00 V10}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10461_IG07: ; bbWeight=0.50, gcVars=0000000800000008 {V00 V10}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
movz x21, #0xD1FFAB1E
movk x21, #0xD1FFAB1E LSL #16
movk x21, #0xD1FFAB1E LSL #32
@@ -556,7 +553,7 @@ G_M10461_IG40: ; bbWeight=0, gcVars=0000000000000008 {V00}, gcrefRegs=000
; gcr arg pop 0
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M10461_IG41: ; bbWeight=0, gcVars=0000002000000008 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M10461_IG41: ; bbWeight=0, gcVars=0000000800000008 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V10}
sub sp, sp, #96
stp x19, x20, [sp, #0x08]
@@ -568,7 +565,7 @@ G_M10461_IG41: ; bbWeight=0, gcVars=0000002000000008 {V00 V10}, gcrefRegs
add x3, fp, #16
str x3, [sp]
;; size=36 bbWeight=0 PerfScore 0.00
-G_M10461_IG42: ; bbWeight=0, gcVars=0000002000000008 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10461_IG42: ; bbWeight=0, gcVars=0000000800000008 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [fp, #-0x80] // [V10 loc7]
; gcrRegs +[x0]
cbz x0, G_M10461_IG43
realworld.run.windows.arm64.checked.mch
-20 (-4.46%) : 24281.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary
2[System.Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.Canon]):this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 17 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
+; V00 this [V00,T04] ( 7, 16 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V01 arg1 [V01,T15] ( 4, 4 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
-; V02 arg2 [V02,T18] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V02 arg2 [V02,T17] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V03 loc0 [V03 ] ( 3, 11 ) struct (24) [fp+0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SmallDictionary`2+Enumerator[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V04 loc1 [V04 ] ( 5, 10 ) struct (32) [fp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,34 +27,31 @@
; V16 tmp11 [V16 ] ( 3, 11 ) ref -> [fp+0x68] do-not-enreg[X] addr-exposed "field V03._stack (fldOffset=0x0)" P-DEP
; V17 tmp12 [V17 ] ( 3, 11 ) ref -> [fp+0x70] do-not-enreg[X] addr-exposed "field V03._next (fldOffset=0x8)" P-DEP
; V18 tmp13 [V18 ] ( 3, 11 ) ref -> [fp+0x78] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x10)" P-DEP
-; V19 tmp14 [V19,T23] ( 2, 4 ) ref -> x23 "field V11.DefaultType (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T24] ( 2, 4 ) ref -> x24 "field V11._extensions (fldOffset=0x8)" P-INDEP
-; V21 tmp16 [V21,T25] ( 2, 4 ) ubyte -> x25 "field V11.NullableAnnotation (fldOffset=0x10)" P-INDEP
+; V19 tmp14 [V19,T21] ( 2, 4 ) ref -> x23 "field V11.DefaultType (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T22] ( 2, 4 ) ref -> x24 "field V11._extensions (fldOffset=0x8)" P-INDEP
+; V21 tmp16 [V21,T23] ( 2, 4 ) ubyte -> x25 "field V11.NullableAnnotation (fldOffset=0x10)" P-INDEP
; V22 tmp17 [V22 ] ( 2, 4 ) ref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V12._stack (fldOffset=0x0)" P-DEP
; V23 tmp18 [V23 ] ( 2, 4 ) ref -> [fp+0x38] do-not-enreg[X] addr-exposed "field V12._next (fldOffset=0x8)" P-DEP
; V24 tmp19 [V24 ] ( 2, 4 ) ref -> [fp+0x40] do-not-enreg[X] addr-exposed "field V12._current (fldOffset=0x10)" P-DEP
-; V25 tmp20 [V25,T26] ( 2, 4 ) long -> x1 "argument with side effect"
+; V25 tmp20 [V25,T24] ( 2, 4 ) long -> x1 "argument with side effect"
; V26 tmp21 [V26,T03] ( 2, 32 ) long -> x1 "argument with side effect"
; V27 tmp22 [V27,T12] ( 2, 8 ) long -> x1 "argument with side effect"
; V28 tmp23 [V28 ] ( 4, 16 ) struct (24) [fp+0x18] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
; V29 tmp24 [V29,T13] ( 2, 8 ) int -> x1 "argument with side effect"
; V30 tmp25 [V30,T10] ( 2, 8 ) ref -> x0 "argument with side effect"
; V31 tmp26 [V31,T11] ( 2, 8 ) ref -> x2 "argument with side effect"
-; V32 cse0 [V32,T21] ( 3, 4 ) long -> x22 "CSE - aggressive"
-;* V33 cse1 [V33,T28] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V32 cse0 [V32,T19] ( 3, 4 ) long -> x22 "CSE - aggressive"
+;* V33 cse1 [V33,T25] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; V34 cse2 [V34,T14] ( 4, 4.40) long -> x21 "CSE - aggressive"
-; V35 rat0 [V35,T19] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V36 rat1 [V36,T22] ( 3, 4 ) long -> x22 "runtime lookup"
+; V35 rat0 [V35,T18] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V36 rat1 [V36,T20] ( 3, 4 ) long -> x22 "runtime lookup"
; V37 rat2 [V37,T16] ( 3, 5.60) long -> x22 "fgMakeTemp is creating a new local variable"
-; V38 rat3 [V38,T20] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V39 rat4 [V39,T27] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V40 rat5 [V40,T17] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V41 rat6 [V41,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V42 rat7 [V42,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V43 rat8 [V43,T08] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-; V44 rat9 [V44,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V45 rat10 [V45,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V46 rat11 [V46,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V38 rat3 [V38,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V39 rat4 [V39,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V40 rat5 [V40,T08] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+; V41 rat6 [V41,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V42 rat7 [V42,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V43 rat8 [V43,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 120
@@ -122,14 +119,9 @@ G_M40847_IG06: ; bbWeight=1, nogc, extend
ldr x0, [fp, #0x40]
str x0, [fp, #0x78]
;; size=16 bbWeight=1 PerfScore 7.00
-G_M40847_IG07: ; bbWeight=1, isz, extend
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x28]
- cbnz x0, G_M40847_IG12
+G_M40847_IG07: ; bbWeight=1, extend
b G_M40847_IG12
- ;; size=24 bbWeight=1 PerfScore 14.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M40847_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x22
add x8, fp, #72 // [V04 loc1]
@@ -220,7 +212,7 @@ G_M40847_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ret lr
;; size=24 bbWeight=1 PerfScore 7.00
-; Total bytes of code 448, prolog size 52, PerfScore 325.60, instruction count 112, allocated bytes for code 448 (MethodHash=69926070) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 428, prolog size 52, PerfScore 312.60, instruction count 107, allocated bytes for code 428 (MethodHash=69926070) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -231,7 +223,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 112 (0x00070) Actual length = 448 (0x0001c0)
+ Function Length : 107 (0x0006b) Actual length = 428 (0x0001ac)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-2.80%) : 24315.dasm - System.Collections.Immutable.ImmutableList1+Node[System.Collections.Generic.KeyValuePair
2[System.Canon,System.Canon]]:IndexOf(System.Collections.Generic.KeyValuePair2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer
1[System.Collections.Generic.KeyValuePair`2[System.Canon,System.Canon]]):int:this (FullOpts)
@@ -8,13 +8,13 @@
; 0 inlinees with PGO data; 2 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 9, 16 ) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
+; V00 this [V00,T06] ( 8, 15 ) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]>
; V02 arg2 [V02,T07] ( 8, 14 ) int -> x19
; V03 arg3 [V03,T11] ( 6, 6 ) int -> x21 single-def
; V04 arg4 [V04,T10] ( 5, 8 ) ref -> x20 class-hnd <System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
; V05 loc0 [V05 ] ( 5, 15 ) struct (56) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
-; V06 loc1 [V06,T31] ( 2, 2 ) int -> [fp+0x24] do-not-enreg[Z] EH-live
+; V06 loc1 [V06,T29] ( 2, 2 ) int -> [fp+0x24] do-not-enreg[Z] EH-live
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -33,30 +33,27 @@
; V22 tmp15 [V22,T16] ( 2, 5 ) ref -> x23 single-def "field V01.value (fldOffset=0x8)" P-INDEP
; V23 tmp16 [V23,T13] ( 2, 8 ) ref -> x3 "field V13.key (fldOffset=0x0)" P-INDEP
; V24 tmp17 [V24,T14] ( 2, 8 ) ref -> x4 "field V13.value (fldOffset=0x8)" P-INDEP
-; V25 tmp18 [V25,T34] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V26 tmp19 [V26,T35] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V27 tmp20 [V27,T29] ( 2, 4 ) long -> x1 "argument with side effect"
+; V25 tmp18 [V25,T31] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V26 tmp19 [V26,T32] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V27 tmp20 [V27,T27] ( 2, 4 ) long -> x1 "argument with side effect"
; V28 tmp21 [V28,T03] ( 2, 32 ) long -> x1 "argument with side effect"
-; V29 PSPSym [V29,T33] ( 1, 1 ) long -> [fp+0x68] do-not-enreg[V] "PSPSym"
+; V29 PSPSym [V29,T30] ( 1, 1 ) long -> [fp+0x68] do-not-enreg[V] "PSPSym"
; V30 cse0 [V30,T17] ( 3, 6 ) long -> x25 "CSE - aggressive"
-; V31 cse1 [V31,T30] ( 3, 3 ) int -> x1 "CSE - aggressive"
+; V31 cse1 [V31,T28] ( 3, 3 ) int -> x1 "CSE - aggressive"
; V32 cse2 [V32,T09] ( 10, 12 ) long -> x24 multi-def "CSE - aggressive"
-; V33 rat0 [V33,T23] ( 3, 4.40) long -> x24 "Spilling to split statement for tree"
-; V34 rat1 [V34,T27] ( 3, 4 ) long -> x1 "runtime lookup"
+; V33 rat0 [V33,T22] ( 3, 4.40) long -> x24 "Spilling to split statement for tree"
+; V34 rat1 [V34,T25] ( 3, 4 ) long -> x1 "runtime lookup"
; V35 rat2 [V35,T18] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
-; V36 rat3 [V36,T24] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V37 rat4 [V37,T28] ( 3, 4 ) long -> x25 "runtime lookup"
+; V36 rat3 [V36,T23] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
+; V37 rat4 [V37,T26] ( 3, 4 ) long -> x25 "runtime lookup"
; V38 rat5 [V38,T19] ( 3, 5.60) long -> x25 "fgMakeTemp is creating a new local variable"
-; V39 rat6 [V39,T25] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V40 rat7 [V40,T32] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V41 rat8 [V41,T20] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V42 rat9 [V42,T05] ( 3, 22.40) long -> x26 "fgMakeTemp is creating a new local variable"
-; V43 rat10 [V43,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
-; V44 rat11 [V44,T02] ( 3, 32 ) long -> x1 "runtime lookup"
-; V45 rat12 [V45,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
-; V46 rat13 [V46,T21] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
-; V47 rat14 [V47,T26] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V48 rat15 [V48,T22] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
+; V39 rat6 [V39,T05] ( 3, 22.40) long -> x26 "fgMakeTemp is creating a new local variable"
+; V40 rat7 [V40,T01] ( 3, 35.20) long -> x0 "Spilling to split statement for tree"
+; V41 rat8 [V41,T02] ( 3, 32 ) long -> x1 "runtime lookup"
+; V42 rat9 [V42,T00] ( 3, 44.80) long -> x1 "fgMakeTemp is creating a new local variable"
+; V43 rat10 [V43,T20] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V44 rat11 [V44,T24] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V45 rat12 [V45,T21] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 96
@@ -166,18 +163,10 @@ G_M34258_IG09: ; bbWeight=1, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=00
; gcrRegs -[x2]
; gcr arg pop 0
;; size=48 bbWeight=1 PerfScore 10.50
-G_M34258_IG10: ; bbWeight=1, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x2]
- ldr x0, [x2]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x10]
- cbnz x0, G_M34258_IG15
+G_M34258_IG10: ; bbWeight=1, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref
b G_M34258_IG15
- ;; size=28 bbWeight=1 PerfScore 16.00
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M34258_IG11: ; bbWeight=4, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
mov x21, x25
ldr x0, [x24, #0x38]
ldr x0, [x0]
@@ -221,16 +210,16 @@ G_M34258_IG14: ; bbWeight=4, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=00
; gcr arg pop 0
cbnz w0, G_M34258_IG20
add w19, w19, #1
+ ;; size=68 bbWeight=4 PerfScore 60.00
+G_M34258_IG15: ; bbWeight=8, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
ldr x2, [fp, #0x18] // [V00 this]
; gcrRegs +[x2]
- ;; size=72 bbWeight=4 PerfScore 68.00
-G_M34258_IG15: ; bbWeight=8, gcrefRegs=D00004 {x2 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
ldr x0, [x2]
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x10]
cbz x1, G_M34258_IG17
- ;; size=20 bbWeight=8 PerfScore 104.00
+ ;; size=24 bbWeight=8 PerfScore 120.00
G_M34258_IG16: ; bbWeight=6.40, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
b G_M34258_IG18
@@ -395,7 +384,7 @@ G_M34258_IG38: ; bbWeight=1, funclet epilog, nogc, extend
ret lr
;; size=24 bbWeight=1 PerfScore 16.00
-; Total bytes of code 856, prolog size 76, PerfScore 451.60, instruction count 214, allocated bytes for code 856 (MethodHash=62fd7a2d) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
+; Total bytes of code 832, prolog size 76, PerfScore 444.60, instruction count 208, allocated bytes for code 832 (MethodHash=62fd7a2d) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -406,7 +395,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 186 (0x000ba) Actual length = 744 (0x0002e8)
+ Function Length : 180 (0x000b4) Actual length = 720 (0x0002d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-0.14%) : 13724.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
@@ -288,7 +288,6 @@
; V277 cse13 [V277,T204] ( 3, 0.12) ref -> x1 "CSE - conservative"
; V278 cse14 [V278,T205] ( 3, 0.12) ref -> x1 "CSE - conservative"
; V279 cse15 [V279,T19] ( 8, 16 ) byref -> [fp+0x18] multi-def "CSE - moderate"
-; TEMP_01 byref -> [fp+0x10]
;
; Lcl frame size = 352
@@ -300,12 +299,11 @@ G_M30044_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x25, x26, [sp, #0xD1FFAB1E]
stp x27, x28, [sp, #0xD1FFAB1E]
mov fp, sp
- str xzr, [fp, #0x10] // [TEMP_01]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
; gcrRegs +[x20]
- ;; size=40 bbWeight=1 PerfScore 8.50
+ ;; size=36 bbWeight=1 PerfScore 7.50
G_M30044_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x21, [x19, #0x40]
; gcrRegs +[x21]
@@ -1784,11 +1782,6 @@ G_M30044_IG50: ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
ldr x1, [x1, x4]
; gcrRegs +[x1]
; byrRegs -[x1]
- ldr x5, [fp, #0xE8] // [V22 loc20]
- ; gcrRegs +[x5]
- add x14, x5, #8
- ; byrRegs +[x14]
- str x14, [fp, #0x10] // [TEMP_01]
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
@@ -1796,13 +1789,12 @@ G_M30044_IG50: ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
- movz x6, #0xD1FFAB1E // code for <unknown method>
- movk x6, #0xD1FFAB1E LSL #16
- movk x6, #0xD1FFAB1E LSL #32
- ldr x6, [x6]
- blr x6
- ; gcrRegs -[x1 x5] +[x0]
- ; byrRegs -[x14]
+ movz x5, #0xD1FFAB1E // code for <unknown method>
+ movk x5, #0xD1FFAB1E LSL #16
+ movk x5, #0xD1FFAB1E LSL #32
+ ldr x5, [x5]
+ blr x5
+ ; gcrRegs -[x1] +[x0]
mov x1, x0
; gcrRegs +[x1]
ldr x0, [fp, #0x40] // [V131 tmp97]
@@ -1813,15 +1805,18 @@ G_M30044_IG50: ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
; GC ptr vars -{V131}
blr x2
; gcrRegs -[x1]
- ldr x14, [fp, #0x10] // [TEMP_01]
+ ldr x2, [fp, #0xE8] // [V22 loc20]
+ ; gcrRegs +[x2]
+ add x14, x2, #8
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
+ ; GC ptr vars -{V22}
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ldr x2, [fp, #0xE8] // [V22 loc20]
- ; gcrRegs +[x2]
+ str x2, [fp, #0xE8] // [V22 loc20]
+ ; GC ptr vars +{V22}
ldr x1, [x2, #0x08]
; gcrRegs +[x1]
mov x15, x1
@@ -1847,7 +1842,7 @@ G_M30044_IG50: ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
ldr w14, [x6, #0x08]
cmp w14, w15
bls G_M30044_IG52
- ;; size=264 bbWeight=0.04 PerfScore 3.16
+ ;; size=256 bbWeight=0.04 PerfScore 3.00
G_M30044_IG51: ; bbWeight=0.02, gcrefRegs=1FF80042 {x1 x6 x19 x20 x21 x22 x23 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, byref
add w14, w15, #1
str w14, [x27, #0x10]
@@ -3667,7 +3662,7 @@ G_M30044_IG107: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 8700, prolog size 32, PerfScore 2216.72, instruction count 2175, allocated bytes for code 8700 (MethodHash=2a788aa3) for method Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
+; Total bytes of code 8688, prolog size 28, PerfScore 2215.56, instruction count 2172, allocated bytes for code 8688 (MethodHash=2a788aa3) for method Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
; ============================================================
Unwind Info:
@@ -3678,7 +3673,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 2175 (0x0087f) Actual length = 8700 (0x0021fc)
+ Function Length : 2172 (0x0087c) Actual length = 8688 (0x0021f0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-0.10%) : 31371.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
@@ -1681,38 +1681,36 @@ G_M4474_IG49: ; bbWeight=0.04, gcVars=00000000000000000000000000000000000
; byrRegs -[x4]
str x0, [fp, #0x90] // [V18 loc13]
; GC ptr vars +{V18}
- ldr x2, [fp, #0x98] // [V17 loc12]
+ ldr x2, [fp, #0xA8] // [V10 loc5]
; gcrRegs +[x2]
- add x14, x2, #8
- ; byrRegs +[x14]
- str x14, [fp, #0x18] // [TEMP_01]
- ldr x3, [fp, #0xA8] // [V10 loc5]
- ; gcrRegs +[x3]
- ldr w0, [x3, #0x08]
+ ldr w0, [x2, #0x08]
; gcrRegs -[x0]
- ldr w4, [fp, #0xEC] // [V16 loc11]
- cmp w4, w0
+ ldr w3, [fp, #0xEC] // [V16 loc11]
+ cmp w3, w0
bhs G_M4474_IG100
- ldr x5, [fp, #0x20] // [V229 cse10]
- ; byrRegs +[x5]
- ldr x6, [fp, #0xB0] // [V226 cse7]
- ldr x0, [x5, x6]
+ ldr x4, [fp, #0x20] // [V229 cse10]
+ ; byrRegs +[x4]
+ ldr x5, [fp, #0xB0] // [V226 cse7]
+ ldr x0, [x4, x5]
; gcrRegs +[x0]
- ldr x7, [x0]
- ldr x7, [x7, #0x48]
- ldr x7, [x7, #0x30]
- blr x7
- ; gcrRegs -[x2-x3]
- ; byrRegs -[x5 x14]
- ldr x14, [fp, #0x18] // [TEMP_01]
+ ldr x6, [x0]
+ ldr x6, [x6, #0x48]
+ ldr x6, [x6, #0x30]
+ blr x6
+ ; gcrRegs -[x2]
+ ; byrRegs -[x4]
+ ldr x1, [fp, #0x98] // [V17 loc12]
+ ; gcrRegs +[x1]
+ add x14, x1, #8
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
+ ; GC ptr vars -{V17}
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ldr x1, [fp, #0x98] // [V17 loc12]
- ; gcrRegs +[x1]
+ str x1, [fp, #0x98] // [V17 loc12]
+ ; GC ptr vars +{V17}
ldr x0, [x1, #0x08]
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for System.String:IsNullOrWhiteSpace(System.String):ubyte
@@ -1722,7 +1720,7 @@ G_M4474_IG49: ; bbWeight=0.04, gcVars=00000000000000000000000000000000000
blr x2
; gcrRegs -[x0-x1]
cbz w0, G_M4474_IG56
- ;; size=200 bbWeight=0.04 PerfScore 3.06
+ ;; size=192 bbWeight=0.04 PerfScore 2.90
G_M4474_IG50: ; bbWeight=0.02, gcrefRegs=EA80000 {x19 x21 x23 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E // code for <unknown method>
movk x0, #0xD1FFAB1E LSL #16
@@ -3239,7 +3237,7 @@ G_M4474_IG100: ; bbWeight=0, gcVars=0000000000000000000000000000000000000
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 7808, prolog size 32, PerfScore 2095.10, instruction count 1952, allocated bytes for code 7808 (MethodHash=ac86ee85) for method System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
+; Total bytes of code 7800, prolog size 32, PerfScore 2094.94, instruction count 1950, allocated bytes for code 7800 (MethodHash=ac86ee85) for method System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
; ============================================================
Unwind Info:
@@ -3250,7 +3248,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 1952 (0x007a0) Actual length = 7808 (0x001e80)
+ Function Length : 1950 (0x0079e) Actual length = 7800 (0x001e78)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 17265.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)
@@ -23,11 +23,11 @@
; V12 loc9 [V12,T14] ( 4, 14 ) byref -> x27
; V13 loc10 [V13,T17] ( 6, 13.50) int -> x26
; V14 loc11 [V14,T15] ( 4, 14 ) byref -> x27
-; V15 loc12 [V15,T66] ( 3, 1.50) int -> x22 single-def
+; V15 loc12 [V15,T62] ( 3, 1.50) int -> x22 single-def
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp2 [V18,T31] ( 4, 3 ) long -> x11 "VirtualCall with runtime lookup"
-; V19 tmp3 [V19,T67] ( 3, 1.50) int -> x24
+; V19 tmp3 [V19,T63] ( 3, 1.50) int -> x24
;* V20 tmp4 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -35,8 +35,8 @@
;* V24 tmp8 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp10 [V26,T28] ( 4, 4 ) byref -> x0 single-def "dup spill"
-; V27 tmp11 [V27,T61] ( 3, 2 ) long -> x1 "spilling helperCall"
-; V28 tmp12 [V28,T68] ( 3, 1.50) int -> x24
+; V27 tmp11 [V27,T57] ( 3, 2 ) long -> x1 "spilling helperCall"
+; V28 tmp12 [V28,T64] ( 3, 1.50) int -> x24
;* V29 tmp13 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp14 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -48,9 +48,9 @@
; V37 tmp21 [V37,T32] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V38 tmp22 [V38,T33] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp24 [V40,T81] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp24 [V40,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp26 [V42,T82] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp26 [V42,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V43 tmp27 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -58,9 +58,9 @@
; V47 tmp31 [V47,T34] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V48 tmp32 [V48,T35] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V50 tmp34 [V50,T83] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V50 tmp34 [V50,T77] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V52 tmp36 [V52,T84] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V52 tmp36 [V52,T78] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -68,63 +68,57 @@
; V57 tmp41 [V57,T36] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
; V58 tmp42 [V58,T37] ( 3, 3 ) ref -> x0 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V60 tmp44 [V60,T85] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V60 tmp44 [V60,T79] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V62 tmp46 [V62,T86] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V62 tmp46 [V62,T80] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V63 tmp47 [V63 ] ( 6, 10.50) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64 ] ( 9, 19 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V65 tmp49 [V65,T72] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
-; V66 tmp50 [V66,T75] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V67 tmp51 [V67,T73] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
-; V68 tmp52 [V68,T76] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T74] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
-; V70 tmp54 [V70,T77] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
+; V65 tmp49 [V65,T68] ( 2, 1 ) ref -> x0 single-def "field V33._items (fldOffset=0x0)" P-INDEP
+; V66 tmp50 [V66,T71] ( 2, 1 ) int -> x1 single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V67 tmp51 [V67,T69] ( 2, 1 ) ref -> x0 single-def "field V43._items (fldOffset=0x0)" P-INDEP
+; V68 tmp52 [V68,T72] ( 2, 1 ) int -> x1 single-def "field V43._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T70] ( 2, 1 ) ref -> x0 single-def "field V53._items (fldOffset=0x0)" P-INDEP
+; V70 tmp54 [V70,T73] ( 2, 1 ) int -> x1 single-def "field V53._length (fldOffset=0x8)" P-INDEP
; V71 tmp55 [V71,T41] ( 3, 3 ) int -> x2 "index expr"
; V72 tmp56 [V72,T42] ( 3, 3 ) int -> x1 "index expr"
; V73 tmp57 [V73,T43] ( 3, 3 ) int -> x2 "index expr"
; V74 tmp58 [V74,T44] ( 3, 3 ) int -> x1 "index expr"
; V75 tmp59 [V75,T12] ( 2, 16 ) long -> x1 "argument with side effect"
; V76 tmp60 [V76,T13] ( 2, 16 ) long -> x1 "argument with side effect"
-; V77 tmp61 [V77,T64] ( 2, 2 ) int -> x1 "argument with side effect"
+; V77 tmp61 [V77,T60] ( 2, 2 ) int -> x1 "argument with side effect"
; V78 tmp62 [V78,T45] ( 3, 3 ) int -> x2 "index expr"
; V79 tmp63 [V79,T46] ( 3, 3 ) int -> x1 "index expr"
-; V80 tmp64 [V80,T65] ( 2, 2 ) long -> x1 "argument with side effect"
-; V81 cse0 [V81,T69] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V82 cse1 [V82,T70] ( 3, 1.50) int -> x26 "CSE - moderate"
-; V83 cse2 [V83,T71] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V84 rat0 [V84,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V85 rat1 [V85,T62] ( 3, 2 ) long -> x1 "runtime lookup"
+; V80 tmp64 [V80,T61] ( 2, 2 ) long -> x1 "argument with side effect"
+; V81 cse0 [V81,T65] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V82 cse1 [V82,T66] ( 3, 1.50) int -> x26 "CSE - moderate"
+; V83 cse2 [V83,T67] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V84 rat0 [V84,T52] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V85 rat1 [V85,T58] ( 3, 2 ) long -> x1 "runtime lookup"
; V86 rat2 [V86,T47] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V87 rat3 [V87,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V88 rat4 [V88,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V89 rat5 [V89,T48] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V90 rat6 [V90,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V91 rat7 [V91,T10] ( 3, 16 ) long -> x1 "runtime lookup"
-; V92 rat8 [V92,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V93 rat9 [V93,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V94 rat10 [V94,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V95 rat11 [V95,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V96 rat12 [V96,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V97 rat13 [V97,T49] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V98 rat14 [V98,T57] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V99 rat15 [V99,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V100 rat16 [V100,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V101 rat17 [V101,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
-; V102 rat18 [V102,T11] ( 3, 16 ) long -> x1 "runtime lookup"
-; V103 rat19 [V103,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
-; V104 rat20 [V104,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
-; V105 rat21 [V105,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V106 rat22 [V106,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V107 rat23 [V107,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V108 rat24 [V108,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V109 rat25 [V109,T58] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V87 rat3 [V87,T06] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V88 rat4 [V88,T10] ( 3, 16 ) long -> x1 "runtime lookup"
+; V89 rat5 [V89,T02] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V90 rat6 [V90,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V91 rat7 [V91,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V92 rat8 [V92,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V93 rat9 [V93,T53] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V94 rat10 [V94,T48] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
+; V95 rat11 [V95,T08] ( 3, 17.60) long -> x0 "Spilling to split statement for tree"
+; V96 rat12 [V96,T11] ( 3, 16 ) long -> x1 "runtime lookup"
+; V97 rat13 [V97,T04] ( 3, 22.40) long -> x1 "fgMakeTemp is creating a new local variable"
+; V98 rat14 [V98,T22] ( 3, 8.80) long -> x0 "Spilling to split statement for tree"
+; V99 rat15 [V99,T19] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+;* V100 rat16 [V100,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V101 rat17 [V101,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V102 rat18 [V102,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V103 rat19 [V103,T54] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V104 rat20 [V104,T49] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V105 rat21 [V105,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V106 rat22 [V106,T74] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V107 rat23 [V107,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V108 rat24 [V108,T56] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
+; V109 rat25 [V109,T59] ( 3, 2 ) long -> x1 "runtime lookup"
; V110 rat26 [V110,T51] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V111 rat27 [V111,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V112 rat28 [V112,T80] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V113 rat29 [V113,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V114 rat30 [V114,T60] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
-; V115 rat31 [V115,T63] ( 3, 2 ) long -> x1 "runtime lookup"
-; V116 rat32 [V116,T53] ( 3, 2.80) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 24
+0 (0.00%) : 17425.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable
1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)
@@ -16,7 +16,7 @@
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
; V06 loc3 [V06,T15] ( 4, 5 ) int -> x21
; V07 loc4 [V07,T16] ( 4, 5 ) int -> x24
-; V08 loc5 [V08,T38] ( 3, 1.50) int -> x19
+; V08 loc5 [V08,T36] ( 3, 1.50) int -> x19
; V09 loc6 [V09,T07] ( 13, 11.50) ref -> [fp-0x68] do-not-enreg[M] class-hnd EH-live <<unknown class>>
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
; V11 loc8 [V11,T05] ( 5, 14 ) int -> x0
@@ -39,7 +39,7 @@
; V28 tmp16 [V28 ] ( 3, 3 ) struct ( 8) [fp-0x50] do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
; V29 tmp17 [V29,T19] ( 8, 4 ) int -> x22 "Inline return value spill temp"
; V30 tmp18 [V30,T24] ( 3, 3 ) int -> x1 "Inlining Arg"
-; V31 tmp19 [V31,T35] ( 2, 2 ) long -> x21 "Inlining Arg"
+; V31 tmp19 [V31,T33] ( 2, 2 ) long -> x21 "Inlining Arg"
; V32 tmp20 [V32,T23] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <int[]>
;* V33 tmp21 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V34 tmp22 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -49,24 +49,24 @@
; V38 tmp26 [V38,T13] ( 5, 5 ) long -> [fp-0x58] spill-single-def "Inlining Arg"
;* V39 tmp27 [V39 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V40 tmp28 [V40 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V41 tmp29 [V41,T36] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V41 tmp29 [V41,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V42 tmp30 [V42,T11] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
; V43 tmp31 [V43,T12] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
; V44 tmp32 [V44,T06] ( 3, 12 ) byref -> x1 "dup spill"
;* V45 tmp33 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp34 [V46 ] ( 0, 0 ) int -> zero-ref single-def "field V04._length (fldOffset=0x8)" P-INDEP
-; V47 tmp35 [V47,T34] ( 4, 2 ) byref -> x21 single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+; V47 tmp35 [V47,T32] ( 4, 2 ) byref -> x21 single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp36 [V48 ] ( 0, 0 ) int -> zero-ref single-def "field V13._length (fldOffset=0x8)" P-INDEP
;* V49 tmp37 [V49 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp38 [V50 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
-; V51 tmp39 [V51,T40] ( 2, 1.50) int -> [fp-0x48] do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
-; V52 tmp40 [V52,T41] ( 2, 1.50) int -> [fp-0x44] do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
+; V51 tmp39 [V51,T38] ( 2, 1.50) int -> [fp-0x48] do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
+; V52 tmp40 [V52,T39] ( 2, 1.50) int -> [fp-0x44] do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
;* V53 tmp41 [V53 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V54 tmp42 [V54 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
-; V55 tmp43 [V55,T42] ( 2, 1.50) int -> [fp-0x50] do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
-; V56 tmp44 [V56,T43] ( 2, 1.50) int -> [fp-0x4C] do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
-; V57 tmp45 [V57,T44] ( 2, 1 ) byref -> x23 "field V33._reference (fldOffset=0x0)" P-INDEP
-; V58 tmp46 [V58,T45] ( 2, 1 ) int -> x22 "field V33._length (fldOffset=0x8)" P-INDEP
+; V55 tmp43 [V55,T40] ( 2, 1.50) int -> [fp-0x50] do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
+; V56 tmp44 [V56,T41] ( 2, 1.50) int -> [fp-0x4C] do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
+; V57 tmp45 [V57,T42] ( 2, 1 ) byref -> x23 "field V33._reference (fldOffset=0x0)" P-INDEP
+; V58 tmp46 [V58,T43] ( 2, 1 ) int -> x22 "field V33._length (fldOffset=0x8)" P-INDEP
;* V59 tmp47 [V59 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V60 tmp48 [V60 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V61 tmp49 [V61 ] ( 0, 0 ) byref -> zero-ref single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -75,25 +75,22 @@
;* V64 tmp52 [V64 ] ( 0, 0 ) int -> zero-ref single-def "field V37._length (fldOffset=0x8)" P-INDEP
; V65 tmp53 [V65,T17] ( 3, 4.50) byref -> x23 single-def "V05.[000..008)"
; V66 tmp54 [V66,T18] ( 3, 4.50) int -> x22 single-def "V05.[008..012)"
-; V67 tmp55 [V67,T37] ( 3, 1.50) byref -> x23 "V16.[000..008)"
-; V68 tmp56 [V68,T39] ( 3, 1.50) int -> x22 "V16.[008..012)"
+; V67 tmp55 [V67,T35] ( 3, 1.50) byref -> x23 "V16.[000..008)"
+; V68 tmp56 [V68,T37] ( 3, 1.50) int -> x22 "V16.[008..012)"
; V69 tmp57 [V69,T03] ( 2, 16 ) ref -> x1 "argument with side effect"
; V70 GsCookie [V70 ] ( 1, 1 ) long -> [fp-0x70] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V71 PSPSym [V71,T47] ( 1, 1 ) long -> [fp-0x38] do-not-enreg[V] "PSPSym"
+; V71 PSPSym [V71,T44] ( 1, 1 ) long -> [fp-0x38] do-not-enreg[V] "PSPSym"
; V72 cse0 [V72,T08] ( 5, 10 ) int -> x11 "CSE - aggressive"
; V73 cse1 [V73,T09] ( 11, 7 ) long -> registers multi-def "CSE - aggressive"
-; V74 rat0 [V74,T30] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V74 rat0 [V74,T29] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V75 rat1 [V75,T26] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-; V76 rat2 [V76,T31] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V76 rat2 [V76,T30] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V77 rat3 [V77,T27] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-; V78 rat4 [V78,T32] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
+; V78 rat4 [V78,T31] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
; V79 rat5 [V79,T28] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V80 rat6 [V80,T33] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V81 rat7 [V81,T46] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V82 rat8 [V82,T29] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V83 rat9 [V83,T02] ( 3, 17.60) long -> x1 "Spilling to split statement for tree"
-; V84 rat10 [V84,T01] ( 3, 22.40) long -> x11 "fgMakeTemp is creating a new local variable"
-; V85 rat11 [V85,T25] ( 3, 3 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V80 rat6 [V80,T02] ( 3, 17.60) long -> x1 "Spilling to split statement for tree"
+; V81 rat7 [V81,T01] ( 3, 22.40) long -> x11 "fgMakeTemp is creating a new local variable"
+; V82 rat8 [V82,T25] ( 3, 3 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 64
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.windows.arm64.checked.mch |
2 |
1 |
0 |
1 |
-24 |
+0 |
benchmarks.run_pgo.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
benchmarks.run_tiered.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
coreclr_tests.run.windows.arm64.checked.mch |
3 |
2 |
0 |
1 |
-60 |
+0 |
libraries.crossgen2.windows.arm64.checked.mch |
11 |
11 |
0 |
0 |
-108 |
+0 |
libraries.pmi.windows.arm64.checked.mch |
34 |
23 |
0 |
11 |
-376 |
+0 |
libraries_tests.run.windows.arm64.Release.mch |
29 |
20 |
1 |
8 |
-316 |
+4 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
19 |
15 |
0 |
4 |
-264 |
+0 |
realworld.run.windows.arm64.checked.mch |
6 |
4 |
0 |
2 |
-64 |
+0 |
smoke_tests.nativeaot.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
104 |
76 |
1 |
27 |
-1,212 |
+4 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.windows.arm64.checked.mch |
24,445 |
4 |
24,441 |
4 (0.02%) |
4 (0.02%) |
benchmarks.run_pgo.windows.arm64.checked.mch |
98,308 |
48,543 |
49,765 |
125 (0.13%) |
125 (0.13%) |
benchmarks.run_tiered.windows.arm64.checked.mch |
48,501 |
36,685 |
11,816 |
4 (0.01%) |
4 (0.01%) |
coreclr_tests.run.windows.arm64.checked.mch |
595,368 |
362,737 |
232,631 |
317 (0.05%) |
317 (0.05%) |
libraries.crossgen2.windows.arm64.checked.mch |
243,430 |
15 |
243,415 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.windows.arm64.checked.mch |
304,046 |
6 |
304,040 |
7 (0.00%) |
7 (0.00%) |
libraries_tests.run.windows.arm64.Release.mch |
630,439 |
461,984 |
168,455 |
2,223 (0.35%) |
2,223 (0.35%) |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
316,297 |
21,559 |
294,738 |
4 (0.00%) |
4 (0.00%) |
realworld.run.windows.arm64.checked.mch |
33,192 |
3 |
33,189 |
3 (0.01%) |
3 (0.01%) |
smoke_tests.nativeaot.windows.arm64.checked.mch |
24,181 |
7 |
24,174 |
0 (0.00%) |
0 (0.00%) |
|
2,318,207 |
931,543 |
1,386,664 |
2,687 (0.12%) |
2,687 (0.12%) |
jit-analyze output
benchmarks.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 10961236 (overridden on cmd)
Total bytes of diff: 10961212 (overridden on cmd)
Total bytes of delta: -24 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-24 : 21824.dasm (-2.80 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 1 unchanged.
Top method improvements (bytes):
-24 (-2.80 % of base) : 21824.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
Top method improvements (percentages):
-24 (-2.80 % of base) : 21824.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
1 total methods with Code Size differences (1 improved, 0 regressed).
coreclr_tests.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 495372096 (overridden on cmd)
Total bytes of diff: 495372036 (overridden on cmd)
Total bytes of delta: -60 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-36 : 579631.dasm (-3.45 % of base)
-24 : 592944.dasm (-5.04 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 1 unchanged.
Top method improvements (bytes):
-36 (-3.45 % of base) : 579631.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
-24 (-5.04 % of base) : 592944.dasm - Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]):ubyte:this (FullOpts)
Top method improvements (percentages):
-24 (-5.04 % of base) : 592944.dasm - Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]):ubyte:this (FullOpts)
-36 (-3.45 % of base) : 579631.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
2 total methods with Code Size differences (2 improved, 0 regressed).
libraries.crossgen2.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 58964780 (overridden on cmd)
Total bytes of diff: 58964672 (overridden on cmd)
Total bytes of delta: -108 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-24 : 169145.dasm (-0.36 % of base)
-20 : 113673.dasm (-0.73 % of base)
-12 : 202047.dasm (-0.56 % of base)
-12 : 199959.dasm (-0.53 % of base)
-12 : 94048.dasm (-0.68 % of base)
-8 : 169639.dasm (-1.82 % of base)
-4 : 113946.dasm (-0.10 % of base)
-4 : 240065.dasm (-0.19 % of base)
-4 : 209717.dasm (-0.19 % of base)
-4 : 240066.dasm (-0.15 % of base)
-4 : 209718.dasm (-0.15 % of base)
11 total files with Code Size differences (11 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-24 (-0.36 % of base) : 169145.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-20 (-0.73 % of base) : 113673.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
-12 (-0.68 % of base) : 94048.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
-12 (-0.56 % of base) : 202047.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-12 (-0.53 % of base) : 199959.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
-8 (-1.82 % of base) : 169639.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
-4 (-0.10 % of base) : 113946.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
-4 (-0.19 % of base) : 240065.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-4 (-0.19 % of base) : 209717.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-4 (-0.15 % of base) : 240066.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-4 (-0.15 % of base) : 209718.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
Top method improvements (percentages):
-8 (-1.82 % of base) : 169639.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
-20 (-0.73 % of base) : 113673.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
-12 (-0.68 % of base) : 94048.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
-12 (-0.56 % of base) : 202047.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-12 (-0.53 % of base) : 199959.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
-24 (-0.36 % of base) : 169145.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-4 (-0.19 % of base) : 209717.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-4 (-0.19 % of base) : 240065.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-4 (-0.15 % of base) : 209718.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-4 (-0.15 % of base) : 240066.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-4 (-0.10 % of base) : 113946.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
11 total methods with Code Size differences (11 improved, 0 regressed).
libraries.pmi.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 79594724 (overridden on cmd)
Total bytes of diff: 79594348 (overridden on cmd)
Total bytes of delta: -376 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-32 : 118236.dasm (-0.77 % of base)
-24 : 235086.dasm (-2.44 % of base)
-24 : 252295.dasm (-2.79 % of base)
-24 : 253441.dasm (-2.48 % of base)
-24 : 253620.dasm (-2.50 % of base)
-24 : 254790.dasm (-2.84 % of base)
-24 : 254795.dasm (-2.94 % of base)
-24 : 255940.dasm (-3.00 % of base)
-20 : 165253.dasm (-4.63 % of base)
-20 : 177339.dasm (-2.19 % of base)
-20 : 129759.dasm (-4.63 % of base)
-20 : 141990.dasm (-2.19 % of base)
-20 : 184600.dasm (-0.25 % of base)
-20 : 95953.dasm (-1.06 % of base)
-12 : 218502.dasm (-0.67 % of base)
-8 : 102509.dasm (-0.18 % of base)
-8 : 102512.dasm (-0.15 % of base)
-8 : 283548.dasm (-0.72 % of base)
-4 : 118516.dasm (-0.10 % of base)
-4 : 220235.dasm (-0.21 % of base)
23 total files with Code Size differences (23 improved, 0 regressed), 11 unchanged.
Top method improvements (bytes):
-32 (-0.77 % of base) : 118236.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
-24 (-2.44 % of base) : 235086.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
-24 (-2.48 % of base) : 253441.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.50 % of base) : 253620.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.79 % of base) : 252295.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.94 % of base) : 254795.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-24 (-2.84 % of base) : 254790.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
-24 (-3.00 % of base) : 255940.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-20 (-2.19 % of base) : 177339.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-20 (-2.19 % of base) : 141990.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-20 (-4.63 % of base) : 165253.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-20 (-4.63 % of base) : 129759.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-20 (-1.06 % of base) : 95953.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
-20 (-0.25 % of base) : 184600.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-12 (-0.67 % of base) : 218502.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-8 (-0.15 % of base) : 102512.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitAllElementInitializersRecursive(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator+IndexDesc],ubyte):this (FullOpts)
-8 (-0.18 % of base) : 102509.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
-8 (-0.72 % of base) : 283548.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-4 (-0.10 % of base) : 118516.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
-4 (-0.21 % of base) : 220235.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
Top method improvements (percentages):
-20 (-4.63 % of base) : 165253.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-20 (-4.63 % of base) : 129759.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-24 (-3.00 % of base) : 255940.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-24 (-2.94 % of base) : 254795.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-24 (-2.84 % of base) : 254790.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
-24 (-2.79 % of base) : 252295.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.50 % of base) : 253620.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.48 % of base) : 253441.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.44 % of base) : 235086.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
-20 (-2.19 % of base) : 177339.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-20 (-2.19 % of base) : 141990.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-20 (-1.06 % of base) : 95953.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
-32 (-0.77 % of base) : 118236.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
-8 (-0.72 % of base) : 283548.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-12 (-0.67 % of base) : 218502.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-20 (-0.25 % of base) : 184600.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-4 (-0.21 % of base) : 220235.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-4 (-0.20 % of base) : 248337.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-8 (-0.18 % of base) : 102509.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
-4 (-0.16 % of base) : 220236.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
23 total methods with Code Size differences (23 improved, 0 regressed).
libraries_tests.run.windows.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 310511308 (overridden on cmd)
Total bytes of diff: 310510996 (overridden on cmd)
Total bytes of delta: -312 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
4 : 53901.dasm (0.19 % of base)
Top file improvements (bytes):
-48 : 153084.dasm (-2.18 % of base)
-32 : 383711.dasm (-0.21 % of base)
-28 : 231484.dasm (-0.49 % of base)
-20 : 122796.dasm (-0.62 % of base)
-20 : 275343.dasm (-0.60 % of base)
-20 : 575950.dasm (-0.82 % of base)
-20 : 99183.dasm (-0.56 % of base)
-12 : 383593.dasm (-0.09 % of base)
-12 : 207046.dasm (-0.34 % of base)
-12 : 264954.dasm (-0.34 % of base)
-12 : 433988.dasm (-0.34 % of base)
-12 : 497982.dasm (-0.34 % of base)
-12 : 501081.dasm (-0.34 % of base)
-12 : 306213.dasm (-0.35 % of base)
-8 : 167319.dasm (-0.06 % of base)
-8 : 90900.dasm (-0.12 % of base)
-8 : 288019.dasm (-0.08 % of base)
-8 : 122068.dasm (-0.06 % of base)
-8 : 63266.dasm (-0.12 % of base)
-4 : 280435.dasm (-0.41 % of base)
21 total files with Code Size differences (20 improved, 1 regressed), 8 unchanged.
Top method regressions (bytes):
4 (0.19 % of base) : 53901.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
Top method improvements (bytes):
-48 (-2.18 % of base) : 153084.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-32 (-0.21 % of base) : 383711.dasm - System.Xml.XPath.XPathDocument:LoadFromReader(System.Xml.XmlReader,int):this (Tier1)
-28 (-0.49 % of base) : 231484.dasm - System.Diagnostics.PerformanceCounterLib:CreateIniFile(System.String,System.String,System.Diagnostics.CounterCreationDataCollection,System.String[]) (Tier1)
-20 (-0.82 % of base) : 575950.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-20 (-0.62 % of base) : 122796.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-20 (-0.60 % of base) : 275343.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-20 (-0.56 % of base) : 99183.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.34 % of base) : 207046.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.34 % of base) : 264954.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.34 % of base) : 433988.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.34 % of base) : 497982.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.34 % of base) : 501081.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 306213.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.09 % of base) : 383593.dasm - System.Xml.XPath.XPathDocument:LoadFromReader(System.Xml.XmlReader,int):this (Tier1-OSR)
-8 (-0.12 % of base) : 90900.dasm - NuGet.Configuration.PackageSourceProvider:LoadPackageSourceLookup(ubyte,NuGet.Configuration.ISettings):System.Collections.Generic.Dictionary`2[System.String,NuGet.Configuration.PackageSourceProvider+IndexedPackageSource] (Tier1)
-8 (-0.12 % of base) : 63266.dasm - NuGet.Configuration.PackageSourceProvider:LoadPackageSourceLookup(ubyte,NuGet.Configuration.ISettings):System.Collections.Generic.Dictionary`2[System.String,NuGet.Configuration.PackageSourceProvider+IndexedPackageSource] (Tier1)
-8 (-0.06 % of base) : 122068.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1)
-8 (-0.06 % of base) : 167319.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1-OSR)
-8 (-0.08 % of base) : 288019.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1-OSR)
-4 (-0.41 % of base) : 280435.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
Top method regressions (percentages):
4 (0.19 % of base) : 53901.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
Top method improvements (percentages):
-48 (-2.18 % of base) : 153084.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-20 (-0.82 % of base) : 575950.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-20 (-0.62 % of base) : 122796.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-20 (-0.60 % of base) : 275343.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-20 (-0.56 % of base) : 99183.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-28 (-0.49 % of base) : 231484.dasm - System.Diagnostics.PerformanceCounterLib:CreateIniFile(System.String,System.String,System.Diagnostics.CounterCreationDataCollection,System.String[]) (Tier1)
-4 (-0.41 % of base) : 280435.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-12 (-0.35 % of base) : 306213.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.34 % of base) : 207046.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.34 % of base) : 501081.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.34 % of base) : 264954.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.34 % of base) : 497982.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.34 % of base) : 433988.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-32 (-0.21 % of base) : 383711.dasm - System.Xml.XPath.XPathDocument:LoadFromReader(System.Xml.XmlReader,int):this (Tier1)
-8 (-0.12 % of base) : 63266.dasm - NuGet.Configuration.PackageSourceProvider:LoadPackageSourceLookup(ubyte,NuGet.Configuration.ISettings):System.Collections.Generic.Dictionary`2[System.String,NuGet.Configuration.PackageSourceProvider+IndexedPackageSource] (Tier1)
-8 (-0.12 % of base) : 90900.dasm - NuGet.Configuration.PackageSourceProvider:LoadPackageSourceLookup(ubyte,NuGet.Configuration.ISettings):System.Collections.Generic.Dictionary`2[System.String,NuGet.Configuration.PackageSourceProvider+IndexedPackageSource] (Tier1)
-12 (-0.09 % of base) : 383593.dasm - System.Xml.XPath.XPathDocument:LoadFromReader(System.Xml.XmlReader,int):this (Tier1-OSR)
-8 (-0.08 % of base) : 288019.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1-OSR)
-8 (-0.06 % of base) : 167319.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1-OSR)
-8 (-0.06 % of base) : 122068.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1)
21 total methods with Code Size differences (20 improved, 1 regressed).
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 169134348 (overridden on cmd)
Total bytes of diff: 169134084 (overridden on cmd)
Total bytes of delta: -264 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-24 : 68543.dasm (-2.84 % of base)
-24 : 69396.dasm (-2.79 % of base)
-24 : 70328.dasm (-2.49 % of base)
-24 : 67628.dasm (-2.51 % of base)
-24 : 70117.dasm (-3.00 % of base)
-24 : 19586.dasm (-2.80 % of base)
-20 : 24315.dasm (-4.46 % of base)
-20 : 5839.dasm (-2.19 % of base)
-20 : 97636.dasm (-0.25 % of base)
-20 : 311600.dasm (-0.49 % of base)
-12 : 170499.dasm (-0.67 % of base)
-8 : 159325.dasm (-0.78 % of base)
-8 : 97684.dasm (-1.74 % of base)
-8 : 156054.dasm (-0.78 % of base)
-4 : 186374.dasm (-0.21 % of base)
15 total files with Code Size differences (15 improved, 0 regressed), 4 unchanged.
Top method improvements (bytes):
-24 (-2.49 % of base) : 70328.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.51 % of base) : 67628.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.79 % of base) : 69396.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.84 % of base) : 68543.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
-24 (-2.80 % of base) : 19586.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
-24 (-3.00 % of base) : 70117.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-20 (-2.19 % of base) : 5839.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-20 (-4.46 % of base) : 24315.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-20 (-0.25 % of base) : 97636.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-20 (-0.49 % of base) : 311600.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
-12 (-0.67 % of base) : 170499.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-8 (-1.74 % of base) : 97684.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
-8 (-0.78 % of base) : 159325.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-8 (-0.78 % of base) : 156054.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-4 (-0.21 % of base) : 186374.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
Top method improvements (percentages):
-20 (-4.46 % of base) : 24315.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-24 (-3.00 % of base) : 70117.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-24 (-2.84 % of base) : 68543.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
-24 (-2.80 % of base) : 19586.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
-24 (-2.79 % of base) : 69396.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.51 % of base) : 67628.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-24 (-2.49 % of base) : 70328.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-20 (-2.19 % of base) : 5839.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-8 (-1.74 % of base) : 97684.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
-8 (-0.78 % of base) : 156054.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-8 (-0.78 % of base) : 159325.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-12 (-0.67 % of base) : 170499.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-20 (-0.49 % of base) : 311600.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
-20 (-0.25 % of base) : 97636.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-4 (-0.21 % of base) : 186374.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
15 total methods with Code Size differences (15 improved, 0 regressed).
realworld.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15891116 (overridden on cmd)
Total bytes of diff: 15891052 (overridden on cmd)
Total bytes of delta: -64 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-24 : 24315.dasm (-2.80 % of base)
-20 : 24281.dasm (-4.46 % of base)
-12 : 13724.dasm (-0.14 % of base)
-8 : 31371.dasm (-0.10 % of base)
4 total files with Code Size differences (4 improved, 0 regressed), 2 unchanged.
Top method improvements (bytes):
-24 (-2.80 % of base) : 24315.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
-20 (-4.46 % of base) : 24281.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-12 (-0.14 % of base) : 13724.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
-8 (-0.10 % of base) : 31371.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
Top method improvements (percentages):
-20 (-4.46 % of base) : 24281.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-24 (-2.80 % of base) : 24315.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
-12 (-0.14 % of base) : 13724.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
-8 (-0.10 % of base) : 31371.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
4 total methods with Code Size differences (4 improved, 0 regressed).
windows x64
Diffs are based on 2,492,912 contexts (983,689 MinOpts, 1,509,223 FullOpts).
MISSED contexts: 3,899 (0.16%)
Overall (-3,190 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
aspnet.run.windows.x64.checked.mch |
42,179,557 |
-94 |
benchmarks.run.windows.x64.checked.mch |
8,747,570 |
+0 |
benchmarks.run_pgo.windows.x64.checked.mch |
35,391,293 |
-16 |
coreclr_tests.run.windows.x64.checked.mch |
393,404,923 |
-43 |
libraries.crossgen2.windows.x64.checked.mch |
39,443,922 |
-191 |
libraries.pmi.windows.x64.checked.mch |
61,389,190 |
-389 |
libraries_tests.run.windows.x64.Release.mch |
281,642,309 |
-2,032 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
133,913,806 |
-324 |
realworld.run.windows.x64.checked.mch |
14,170,687 |
-101 |
FullOpts (-3,190 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
aspnet.run.windows.x64.checked.mch |
27,520,832 |
-94 |
benchmarks.run.windows.x64.checked.mch |
8,747,209 |
+0 |
benchmarks.run_pgo.windows.x64.checked.mch |
21,156,316 |
-16 |
coreclr_tests.run.windows.x64.checked.mch |
119,861,931 |
-43 |
libraries.crossgen2.windows.x64.checked.mch |
39,442,733 |
-191 |
libraries.pmi.windows.x64.checked.mch |
61,275,671 |
-389 |
libraries_tests.run.windows.x64.Release.mch |
103,273,993 |
-2,032 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
123,490,436 |
-324 |
realworld.run.windows.x64.checked.mch |
13,780,982 |
-101 |
Example diffs
aspnet.run.windows.x64.checked.mch
-7 (-1.04%) : 17006.dasm - Microsoft.Extensions.Internal.PropertyHelper:g_AddInterestingProperties|390(System.Collections.Generic.List`1[Microsoft.Extensions.Internal.PropertyHelper],System.Type) (Tier1-OSR)
@@ -12,7 +12,7 @@
;
; V00 arg0 [V00,T07] ( 14,2252 ) ref -> rbx class-hnd single-def <System.Collections.Generic.List`1[Microsoft.Extensions.Internal.PropertyHelper]>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type>
-; V02 loc0 [V02,T15] ( 3, 100 ) ref -> rdi class-hnd <System.Reflection.PropertyInfo[]>
+; V02 loc0 [V02,T14] ( 3, 100 ) ref -> rdi class-hnd <System.Reflection.PropertyInfo[]>
; V03 loc1 [V03,T11] ( 11, 388.44) int -> rsi
; V04 loc2 [V04,T05] ( 18,2531.25) ref -> r14 class-hnd <System.Reflection.PropertyInfo>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -31,7 +31,7 @@
;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V19 tmp14 [V19 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V20 tmp15 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V21 tmp16 [V21,T14] ( 2, 7.50) ubyte -> rcx "Inline return value spill temp"
+;* V21 tmp16 [V21,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V22 tmp17 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.MethodInfo>
;* V23 tmp18 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V24 tmp19 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.MethodInfo>
@@ -299,11 +299,8 @@ G_M11033_IG09: ; bbWeight=3.75, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0
call [rax+0x18]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- xor ecx, ecx
cmp dword ptr [rax+0x08], 0
- sete cl
- test ecx, ecx
- je SHORT G_M11033_IG12
+ jne SHORT G_M11033_IG12
mov rcx, 0xD1FFAB1E ; Microsoft.Extensions.Internal.PropertyHelper
call CORINFO_HELP_NEWSFAST
; gcr arg pop 0
@@ -341,15 +338,15 @@ G_M11033_IG09: ; bbWeight=3.75, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0
mov ecx, r15d
lea rcx, bword ptr [r14+8*rcx+0x10]
; byrRegs +[rcx]
- ;; size=211 bbWeight=3.75 PerfScore 287.81
-G_M11033_IG10: ; bbWeight=3.75, isz, extend
mov rdx, r13
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rdx r13-r14]
; byrRegs -[rcx]
+ ;; size=212 bbWeight=3.75 PerfScore 286.88
+G_M11033_IG10: ; bbWeight=3.75, isz, extend
jmp SHORT G_M11033_IG12
- ;; size=10 bbWeight=3.75 PerfScore 12.19
+ ;; size=2 bbWeight=3.75 PerfScore 7.50
G_M11033_IG11: ; bbWeight=3.75, gcrefRegs=2088 {rbx rdi r13}, byrefRegs=0000 {}, byref
; gcrRegs +[r13]
mov rcx, rbx
@@ -386,7 +383,7 @@ G_M11033_IG15: ; bbWeight=0, epilog, nogc, extend
ret
;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 671, prolog size 52, PerfScore 32197.42, instruction count 179, allocated bytes for code 671 (MethodHash=b6ced4e6) for method Microsoft.Extensions.Internal.PropertyHelper:<GetProperties>g__AddInterestingProperties|39_0(System.Collections.Generic.List`1[Microsoft.Extensions.Internal.PropertyHelper],System.Type) (Tier1-OSR)
+; Total bytes of code 664, prolog size 52, PerfScore 32191.80, instruction count 176, allocated bytes for code 664 (MethodHash=b6ced4e6) for method Microsoft.Extensions.Internal.PropertyHelper:<GetProperties>g__AddInterestingProperties|39_0(System.Collections.Generic.List`1[Microsoft.Extensions.Internal.PropertyHelper],System.Type) (Tier1-OSR)
; ============================================================
Unwind Info:
-14 (-0.85%) : 5346.dasm - Microsoft.Extensions.Configuration.ChainedConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable1[System.String],System.String):System.Collections.Generic.IEnumerable
1[System.String]:this (Tier1-OSR)
@@ -75,7 +75,6 @@
; V62 cse0 [V62,T04] ( 5,1980 ) ref -> rcx multi-def "CSE - aggressive"
; V63 cse1 [V63,T05] ( 5,1856.25) int -> r15 "CSE - aggressive"
; V64 cse2 [V64,T25] ( 5, 18.75) int -> rbx "CSE - moderate"
-; TEMP_01 byref -> [rbp-0x38]
;
; Lcl frame size = 48
@@ -90,10 +89,8 @@ G_M4592_IG01: ; bbWeight=625, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov qword ptr [rsp+0x178], rsi
mov qword ptr [rsp+0x170], rbx
lea rbp, [rsp+0x60]
- xor eax, eax
- mov qword ptr [rbp-0x38], rax
mov qword ptr [rbp-0x40], rsp
- ;; size=72 bbWeight=625 PerfScore 7500.00
+ ;; size=66 bbWeight=625 PerfScore 6718.75
G_M4592_IG02: ; bbWeight=625, gcVars=0000000004002001 {V01 V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V01 V04 V06}
cmp gword ptr [rbp+0xE8], 0
@@ -554,20 +551,11 @@ G_M4592_IG37: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
je SHORT G_M4592_IG38
mov rcx, gword ptr [rbp+0xE8]
; gcrRegs +[rcx]
- lea rcx, bword ptr [rcx+0x08]
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- mov bword ptr [rbp-0x38], rcx
- mov r11, gword ptr [rbp+0xE8]
- ; gcrRegs +[r11]
- mov rsi, gword ptr [r11+0x20]
+ mov rsi, gword ptr [rcx+0x20]
; gcrRegs +[rsi]
- mov r11, gword ptr [rbp+0xE8]
- mov rcx, gword ptr [r11+0x28]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
+ mov rcx, gword ptr [rbp+0xE8]
+ mov rcx, gword ptr [rcx+0x28]
mov r11, 0xD1FFAB1E ; function address
- ; gcrRegs -[r11]
call [r11]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
@@ -578,7 +566,10 @@ G_M4592_IG37: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
call [rsi+0x18]<unknown method>
; gcrRegs -[rcx rdx rsi]
; gcr arg pop 0
- mov rcx, bword ptr [rbp-0x38]
+ mov rcx, gword ptr [rbp+0xE8]
+ ; gcrRegs +[rcx]
+ lea rcx, bword ptr [rcx+0x08]
+ ; gcrRegs -[rcx]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
@@ -586,7 +577,7 @@ G_M4592_IG37: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
jmp G_M4592_IG19
- ;; size=105 bbWeight=4.00 PerfScore 115.00
+ ;; size=97 bbWeight=4.00 PerfScore 107.00
G_M4592_IG38: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbp+0xE8]
; gcrRegs +[rcx]
@@ -777,7 +768,7 @@ G_M4592_IG49: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1647, prolog size 72, PerfScore 56156.17, instruction count 371, allocated bytes for code 1647 (MethodHash=2ce2ee0f) for method Microsoft.Extensions.Configuration.ChainedConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1-OSR)
+; Total bytes of code 1633, prolog size 66, PerfScore 55366.92, instruction count 367, allocated bytes for code 1633 (MethodHash=2ce2ee0f) for method Microsoft.Extensions.Configuration.ChainedConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1-OSR)
; ============================================================
Unwind Info:
-14 (-0.85%) : 9404.dasm - Microsoft.Extensions.Configuration.ChainedConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable1[System.String],System.String):System.Collections.Generic.IEnumerable
1[System.String]:this (Tier1-OSR)
@@ -75,7 +75,6 @@
; V62 cse0 [V62,T04] ( 5,1980 ) ref -> rcx multi-def "CSE - aggressive"
; V63 cse1 [V63,T05] ( 5,1856.25) int -> r15 "CSE - aggressive"
; V64 cse2 [V64,T25] ( 5, 18.75) int -> rbx "CSE - moderate"
-; TEMP_01 byref -> [rbp-0x38]
;
; Lcl frame size = 48
@@ -90,10 +89,8 @@ G_M4592_IG01: ; bbWeight=625, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov qword ptr [rsp+0x178], rsi
mov qword ptr [rsp+0x170], rbx
lea rbp, [rsp+0x60]
- xor eax, eax
- mov qword ptr [rbp-0x38], rax
mov qword ptr [rbp-0x40], rsp
- ;; size=72 bbWeight=625 PerfScore 7500.00
+ ;; size=66 bbWeight=625 PerfScore 6718.75
G_M4592_IG02: ; bbWeight=625, gcVars=0000000004002001 {V01 V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V01 V04 V06}
cmp gword ptr [rbp+0xE8], 0
@@ -554,20 +551,11 @@ G_M4592_IG37: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
je SHORT G_M4592_IG38
mov rcx, gword ptr [rbp+0xE8]
; gcrRegs +[rcx]
- lea rcx, bword ptr [rcx+0x08]
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- mov bword ptr [rbp-0x38], rcx
- mov r11, gword ptr [rbp+0xE8]
- ; gcrRegs +[r11]
- mov rsi, gword ptr [r11+0x20]
+ mov rsi, gword ptr [rcx+0x20]
; gcrRegs +[rsi]
- mov r11, gword ptr [rbp+0xE8]
- mov rcx, gword ptr [r11+0x28]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
+ mov rcx, gword ptr [rbp+0xE8]
+ mov rcx, gword ptr [rcx+0x28]
mov r11, 0xD1FFAB1E ; function address
- ; gcrRegs -[r11]
call [r11]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
@@ -578,7 +566,10 @@ G_M4592_IG37: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
call [rsi+0x18]<unknown method>
; gcrRegs -[rcx rdx rsi]
; gcr arg pop 0
- mov rcx, bword ptr [rbp-0x38]
+ mov rcx, gword ptr [rbp+0xE8]
+ ; gcrRegs +[rcx]
+ lea rcx, bword ptr [rcx+0x08]
+ ; gcrRegs -[rcx]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
@@ -586,7 +577,7 @@ G_M4592_IG37: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
jmp G_M4592_IG19
- ;; size=105 bbWeight=4.00 PerfScore 115.00
+ ;; size=97 bbWeight=4.00 PerfScore 107.00
G_M4592_IG38: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbp+0xE8]
; gcrRegs +[rcx]
@@ -777,7 +768,7 @@ G_M4592_IG49: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1647, prolog size 72, PerfScore 56156.17, instruction count 371, allocated bytes for code 1647 (MethodHash=2ce2ee0f) for method Microsoft.Extensions.Configuration.ChainedConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1-OSR)
+; Total bytes of code 1633, prolog size 66, PerfScore 55366.92, instruction count 367, allocated bytes for code 1633 (MethodHash=2ce2ee0f) for method Microsoft.Extensions.Configuration.ChainedConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1-OSR)
; ============================================================
Unwind Info:
-14 (-0.32%) : 100842.dasm - Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory:AddActionDataToBuilder(Microsoft.AspNetCore.Builder.EndpointBuilder,System.Collections.Generic.HashSet1[System.String],Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor,System.String,Microsoft.AspNetCore.Routing.RouteValueDictionary,ubyte,ubyte,System.Collections.Generic.IReadOnlyList
1[System.Action1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList
1[System.Action1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList
1[System.Action1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList
1[System.Action1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList
1[System.Action1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList
1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]]) (Tier1-OSR)
@@ -203,7 +203,6 @@
; V190 rat1 [V190,T27] ( 6, 17.22) ref -> r12 class-hnd "replacement local" <Microsoft.AspNetCore.Mvc.ConsumesAttribute>
; V191 rat2 [V191,T49] ( 5, 0.15) ref -> r13 class-hnd "replacement local" <Microsoft.AspNetCore.Mvc.ActionConstraints.HttpMethodActionConstraint>
; V192 rat3 [V192,T48] ( 6, 0.17) ref -> r12 class-hnd "replacement local" <Microsoft.AspNetCore.Mvc.ConsumesAttribute>
-; TEMP_01 byref -> [rbp-0x40]
;
; Lcl frame size = 56
@@ -219,12 +218,10 @@ G_M6458_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rsp+0x680], rsi
mov qword ptr [rsp+0x678], rbx
lea rbp, [rsp+0x70]
- xor eax, eax
- mov qword ptr [rbp-0x40], rax
mov qword ptr [rbp-0x48], rsp
mov rbx, gword ptr [rbp+0x660]
; gcrRegs +[rbx]
- ;; size=87 bbWeight=1 PerfScore 15.00
+ ;; size=81 bbWeight=1 PerfScore 13.75
G_M6458_IG02: ; bbWeight=1, gcVars=00000000000000080000000000000401 {V00 V13 V17}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V00 V10 V13 V17}
jmp SHORT G_M6458_IG05
@@ -535,20 +532,11 @@ G_M6458_IG28: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
je SHORT G_M6458_IG29
mov rcx, gword ptr [rbp+0x5E0]
; gcrRegs +[rcx]
- lea rcx, bword ptr [rcx+0x08]
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- mov bword ptr [rbp-0x40], rcx
- mov r11, gword ptr [rbp+0x5E0]
- ; gcrRegs +[r11]
- mov rdi, gword ptr [r11+0x20]
+ mov rdi, gword ptr [rcx+0x20]
; gcrRegs +[rdi]
- mov r11, gword ptr [rbp+0x5E0]
- mov rcx, gword ptr [r11+0x28]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
+ mov rcx, gword ptr [rbp+0x5E0]
+ mov rcx, gword ptr [rcx+0x28]
mov r11, 0xD1FFAB1E ; function address
- ; gcrRegs -[r11]
call [r11]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
@@ -559,7 +547,10 @@ G_M6458_IG28: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
call [rdi+0x18]<unknown method>
; gcrRegs -[rcx rdx rdi]
; gcr arg pop 0
- mov rcx, bword ptr [rbp-0x40]
+ mov rcx, gword ptr [rbp+0x5E0]
+ ; gcrRegs +[rcx]
+ lea rcx, bword ptr [rcx+0x08]
+ ; gcrRegs -[rcx]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
@@ -567,7 +558,7 @@ G_M6458_IG28: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
jmp G_M6458_IG16
- ;; size=105 bbWeight=4.00 PerfScore 115.00
+ ;; size=97 bbWeight=4.00 PerfScore 107.00
G_M6458_IG29: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbp+0x5E0]
; gcrRegs +[rcx]
@@ -2073,7 +2064,7 @@ G_M6458_IG149: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 4434, prolog size 87, PerfScore 30246.31, instruction count 975, allocated bytes for code 4434 (MethodHash=8ef9e6c5) for method Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory:AddActionDataToBuilder(Microsoft.AspNetCore.Builder.EndpointBuilder,System.Collections.Generic.HashSet`1[System.String],Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor,System.String,Microsoft.AspNetCore.Routing.RouteValueDictionary,ubyte,ubyte,System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]]) (Tier1-OSR)
+; Total bytes of code 4420, prolog size 81, PerfScore 30237.06, instruction count 971, allocated bytes for code 4420 (MethodHash=8ef9e6c5) for method Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory:AddActionDataToBuilder(Microsoft.AspNetCore.Builder.EndpointBuilder,System.Collections.Generic.HashSet`1[System.String],Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor,System.String,Microsoft.AspNetCore.Routing.RouteValueDictionary,ubyte,ubyte,System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]]) (Tier1-OSR)
; ============================================================
Unwind Info:
-14 (-0.32%) : 91547.dasm - Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory:AddActionDataToBuilder(Microsoft.AspNetCore.Builder.EndpointBuilder,System.Collections.Generic.HashSet1[System.String],Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor,System.String,Microsoft.AspNetCore.Routing.RouteValueDictionary,ubyte,ubyte,System.Collections.Generic.IReadOnlyList
1[System.Action1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList
1[System.Action1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList
1[System.Action1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList
1[System.Action1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList
1[System.Action1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList
1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]]) (Tier1-OSR)
@@ -203,7 +203,6 @@
; V190 rat1 [V190,T27] ( 6, 17.22) ref -> r12 class-hnd "replacement local" <Microsoft.AspNetCore.Mvc.ConsumesAttribute>
; V191 rat2 [V191,T49] ( 5, 0.15) ref -> r13 class-hnd "replacement local" <Microsoft.AspNetCore.Mvc.ActionConstraints.HttpMethodActionConstraint>
; V192 rat3 [V192,T48] ( 6, 0.17) ref -> r12 class-hnd "replacement local" <Microsoft.AspNetCore.Mvc.ConsumesAttribute>
-; TEMP_01 byref -> [rbp-0x40]
;
; Lcl frame size = 56
@@ -219,12 +218,10 @@ G_M6458_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rsp+0x680], rsi
mov qword ptr [rsp+0x678], rbx
lea rbp, [rsp+0x70]
- xor eax, eax
- mov qword ptr [rbp-0x40], rax
mov qword ptr [rbp-0x48], rsp
mov rbx, gword ptr [rbp+0x660]
; gcrRegs +[rbx]
- ;; size=87 bbWeight=1 PerfScore 15.00
+ ;; size=81 bbWeight=1 PerfScore 13.75
G_M6458_IG02: ; bbWeight=1, gcVars=00000000000000080000000000000401 {V00 V13 V17}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V00 V10 V13 V17}
jmp SHORT G_M6458_IG05
@@ -535,20 +532,11 @@ G_M6458_IG28: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
je SHORT G_M6458_IG29
mov rcx, gword ptr [rbp+0x5E0]
; gcrRegs +[rcx]
- lea rcx, bword ptr [rcx+0x08]
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- mov bword ptr [rbp-0x40], rcx
- mov r11, gword ptr [rbp+0x5E0]
- ; gcrRegs +[r11]
- mov rdi, gword ptr [r11+0x20]
+ mov rdi, gword ptr [rcx+0x20]
; gcrRegs +[rdi]
- mov r11, gword ptr [rbp+0x5E0]
- mov rcx, gword ptr [r11+0x28]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
+ mov rcx, gword ptr [rbp+0x5E0]
+ mov rcx, gword ptr [rcx+0x28]
mov r11, 0xD1FFAB1E ; function address
- ; gcrRegs -[r11]
call [r11]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
@@ -559,7 +547,10 @@ G_M6458_IG28: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
call [rdi+0x18]<unknown method>
; gcrRegs -[rcx rdx rdi]
; gcr arg pop 0
- mov rcx, bword ptr [rbp-0x40]
+ mov rcx, gword ptr [rbp+0x5E0]
+ ; gcrRegs +[rcx]
+ lea rcx, bword ptr [rcx+0x08]
+ ; gcrRegs -[rcx]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
@@ -567,7 +558,7 @@ G_M6458_IG28: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
jmp G_M6458_IG16
- ;; size=105 bbWeight=4.00 PerfScore 115.00
+ ;; size=97 bbWeight=4.00 PerfScore 107.00
G_M6458_IG29: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbp+0x5E0]
; gcrRegs +[rcx]
@@ -2073,7 +2064,7 @@ G_M6458_IG149: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 4434, prolog size 87, PerfScore 30246.31, instruction count 975, allocated bytes for code 4434 (MethodHash=8ef9e6c5) for method Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory:AddActionDataToBuilder(Microsoft.AspNetCore.Builder.EndpointBuilder,System.Collections.Generic.HashSet`1[System.String],Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor,System.String,Microsoft.AspNetCore.Routing.RouteValueDictionary,ubyte,ubyte,System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]]) (Tier1-OSR)
+; Total bytes of code 4420, prolog size 81, PerfScore 30237.06, instruction count 971, allocated bytes for code 4420 (MethodHash=8ef9e6c5) for method Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory:AddActionDataToBuilder(Microsoft.AspNetCore.Builder.EndpointBuilder,System.Collections.Generic.HashSet`1[System.String],Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor,System.String,Microsoft.AspNetCore.Routing.RouteValueDictionary,ubyte,ubyte,System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]]) (Tier1-OSR)
; ============================================================
Unwind Info:
-31 (-0.18%) : 45958.dasm - Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression:.ctor(Microsoft.EntityFrameworkCore.Metadata.IEntityType,Microsoft.EntityFrameworkCore.Query.ISqlExpressionFactory):this (FullOpts)
@@ -19,24 +19,24 @@
; V08 loc5 [V08,T91] ( 5, 25 ) ref -> r13 class-hnd exact single-def <<unknown class>>
; V09 loc6 [V09,T168] ( 11, 12.50) ref -> r12 class-hnd exact single-def <<unknown class>>
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SqlExpression>
-; V11 loc8 [V11,T116] ( 14, 19 ) ref -> [rbp-0x120] do-not-enreg[M] class-hnd EH-live <<unknown class>>
+; V11 loc8 [V11,T116] ( 14, 19 ) ref -> [rbp-0x118] do-not-enreg[M] class-hnd EH-live <<unknown class>>
; V12 loc9 [V12,T171] ( 3, 12 ) ref -> r12 class-hnd <Microsoft.EntityFrameworkCore.Metadata.IEntityType>
-; V13 loc10 [V13,T42] ( 11, 46 ) ref -> [rbp-0x128] class-hnd exact spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_1>
-; V14 loc11 [V14,T170] ( 4, 12 ) ref -> [rbp-0x130] class-hnd exact spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
-; V15 loc12 [V15,T00] ( 60,244 ) ref -> [rbp-0x138] do-not-enreg[Z] class-hnd EH-live <<unknown class>>
+; V13 loc10 [V13,T42] ( 11, 46 ) ref -> [rbp-0x120] class-hnd exact spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_1>
+; V14 loc11 [V14,T170] ( 4, 12 ) ref -> [rbp-0x128] class-hnd exact spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
+; V15 loc12 [V15,T00] ( 60,244 ) ref -> [rbp-0x130] do-not-enreg[Z] class-hnd EH-live <<unknown class>>
; V16 loc13 [V16,T66] ( 4, 32 ) ref -> r12 class-hnd <Microsoft.EntityFrameworkCore.Metadata.IProperty>
; V17 loc14 [V17,T95] ( 4, 24 ) ref -> r12 class-hnd <Microsoft.EntityFrameworkCore.Metadata.IProperty>
;* V18 loc15 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression>
; V19 loc16 [V19,T244] ( 3, 6 ) ref -> r12 class-hnd <<unknown class>>
; V20 loc17 [V20,T282] ( 2, 4 ) ref -> r12 class-hnd <<unknown class>>
;* V21 loc18 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.EntityFrameworkCore.Query.SqlExpressions.InnerJoinExpression>
-; V22 loc19 [V22,T120] ( 5, 18 ) ref -> [rbp-0x140] class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Metadata.IEntityType>
-; V23 loc20 [V23,T30] ( 10, 48 ) ref -> [rbp-0x148] class-hnd exact spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_2>
-; V24 loc21 [V24,T172] ( 3, 12 ) ref -> [rbp-0x150] class-hnd exact spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
-; V25 loc22 [V25,T124] ( 5, 16 ) ref -> [rbp-0x158] class-hnd exact spill-single-def <<unknown class>>
-; V26 loc23 [V26,T210] ( 2, 8 ) ref -> [rbp-0x160] class-hnd spill-single-def <<unknown class>>
+; V22 loc19 [V22,T120] ( 5, 18 ) ref -> [rbp-0x138] class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Metadata.IEntityType>
+; V23 loc20 [V23,T30] ( 10, 48 ) ref -> [rbp-0x140] class-hnd exact spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_2>
+; V24 loc21 [V24,T172] ( 3, 12 ) ref -> [rbp-0x148] class-hnd exact spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
+; V25 loc22 [V25,T124] ( 5, 16 ) ref -> [rbp-0x150] class-hnd exact spill-single-def <<unknown class>>
+; V26 loc23 [V26,T210] ( 2, 8 ) ref -> [rbp-0x158] class-hnd spill-single-def <<unknown class>>
;* V27 loc24 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.EntityFrameworkCore.Query.SqlExpressions.LeftJoinExpression>
-; V28 loc25 [V28,T67] ( 4, 32 ) ref -> [rbp-0x168] class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Metadata.IProperty>
+; V28 loc25 [V28,T67] ( 4, 32 ) ref -> [rbp-0x160] class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Metadata.IProperty>
; V29 loc26 [V29,T92] ( 17, 24.54) ref -> r12 class-hnd single-def <<unknown class>>
; V30 loc27 [V30,T266] ( 4, 5.50) ref -> r12 class-hnd single-def <Microsoft.EntityFrameworkCore.Metadata.ITableBase>
;* V31 loc28 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
@@ -51,9 +51,9 @@
; V40 loc37 [V40,T108] ( 9, 22.04) ref -> r14 class-hnd single-def <<unknown class>>
; V41 loc38 [V41,T22] ( 25, 59.32) ref -> r15 class-hnd single-def <<unknown class>>
; V42 loc39 [V42,T83] ( 5, 28.50) ref -> r13 class-hnd exact single-def <<unknown class>>
-; V43 loc40 [V43,T51] ( 17, 40.64) ref -> [rbp-0x170] class-hnd exact spill-single-def <<unknown class>>
+; V43 loc40 [V43,T51] ( 17, 40.64) ref -> [rbp-0x168] class-hnd exact spill-single-def <<unknown class>>
; V44 loc41 [V44,T115] ( 15, 19.50) ref -> r13 class-hnd exact single-def <<unknown class>>
-; V45 loc42 [V45,T117] ( 14, 19 ) ref -> [rbp-0x178] class-hnd exact spill-single-def <System.Collections.Generic.List`1[System.String]>
+; V45 loc42 [V45,T117] ( 14, 19 ) ref -> [rbp-0x170] class-hnd exact spill-single-def <System.Collections.Generic.List`1[System.String]>
; V46 loc43 [V46,T315] ( 4, 2 ) ref -> rsi class-hnd exact single-def <System.String>
; V47 loc44 [V47,T362] ( 4, 1.50) ref -> r12 class-hnd exact single-def <Microsoft.EntityFrameworkCore.Query.Internal.TpcTablesExpression>
; V48 loc45 [V48,T269] ( 3, 5 ) ref -> rsi class-hnd single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression>
@@ -61,43 +61,43 @@
;* V50 loc47 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+ConcreteColumnExpression>
; V51 loc48 [V51,T371] ( 2, 1 ) ref -> rdi class-hnd single-def <System.Collections.Generic.Dictionary`2[Microsoft.EntityFrameworkCore.Metadata.ITableBase,Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression]>
; V52 loc49 [V52,T59] ( 8, 36.50) int -> [rbp-0x4C]
-; V53 loc50 [V53,T37] ( 4, 48 ) ref -> [rbp-0x180] class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Metadata.IProperty>
+; V53 loc50 [V53,T37] ( 4, 48 ) ref -> [rbp-0x178] class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Metadata.IProperty>
; V54 loc51 [V54,T23] ( 17, 58.98) int -> [rbp-0x50]
-; V55 loc52 [V55,T28] ( 10, 52 ) ref -> [rbp-0x188] class-hnd exact <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_4>
-; V56 loc53 [V56,T123] ( 6, 16 ) ref -> [rbp-0x190] class-hnd exact <System.String>
+; V55 loc52 [V55,T28] ( 10, 52 ) ref -> [rbp-0x180] class-hnd exact <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_4>
+; V56 loc53 [V56,T123] ( 6, 16 ) ref -> [rbp-0x188] class-hnd exact <System.String>
; V57 loc54 [V57,T112] ( 6, 20 ) int -> [rbp-0x54]
;* V58 loc55 [V58 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V59 loc56 [V59,T230] ( 5, 7.50) ref -> r13 class-hnd exact single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_5>
; V60 loc57 [V60,T272] ( 3, 4.50) int -> [rbp-0x58]
; V61 loc58 [V61,T109] ( 13, 20.58) int -> [rbp-0x5C]
-; V62 loc59 [V62,T86] ( 9, 28 ) ref -> [rbp-0x198] class-hnd <Microsoft.EntityFrameworkCore.Metadata.IEntityType>
-; V63 loc60 [V63,T122] ( 7, 16 ) ref -> [rbp-0x1A0] class-hnd <Microsoft.EntityFrameworkCore.Metadata.ITableBase>
-; V64 loc61 [V64,T50] ( 19, 42 ) ref -> [rbp-0x1A8] class-hnd exact <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression>
+; V62 loc59 [V62,T86] ( 9, 28 ) ref -> [rbp-0x190] class-hnd <Microsoft.EntityFrameworkCore.Metadata.IEntityType>
+; V63 loc60 [V63,T122] ( 7, 16 ) ref -> [rbp-0x198] class-hnd <Microsoft.EntityFrameworkCore.Metadata.ITableBase>
+; V64 loc61 [V64,T50] ( 19, 42 ) ref -> [rbp-0x1A0] class-hnd exact <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression>
;* V65 loc62 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
-; V66 loc63 [V66,T160] ( 9, 14 ) ref -> [rbp-0x1B0] class-hnd exact <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
+; V66 loc63 [V66,T160] ( 9, 14 ) ref -> [rbp-0x1A8] class-hnd exact <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
; V67 loc64 [V67,T09] ( 21, 84.64) int -> [rbp-0x60]
-; V68 loc65 [V68,T12] ( 18, 64.00) ref -> [rbp-0x1B8] class-hnd <Microsoft.EntityFrameworkCore.Metadata.IProperty>
-; V69 loc66 [V69,T52] ( 9, 40.00) ref -> [rbp-0x1C0] class-hnd <Microsoft.EntityFrameworkCore.Metadata.IEntityType>
+; V68 loc65 [V68,T12] ( 18, 64.00) ref -> [rbp-0x1B0] class-hnd <Microsoft.EntityFrameworkCore.Metadata.IProperty>
+; V69 loc66 [V69,T52] ( 9, 40.00) ref -> [rbp-0x1B8] class-hnd <Microsoft.EntityFrameworkCore.Metadata.IEntityType>
;* V70 loc67 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SqlExpression>
; V71 loc68 [V71,T110] ( 6, 20.50) int -> [rbp-0x64]
; V72 loc69 [V72,T174] ( 3, 12 ) ref -> r15 class-hnd <Microsoft.EntityFrameworkCore.Metadata.IProperty>
-; V73 loc70 [V73,T211] ( 2, 8 ) ref -> [rbp-0x1C8] class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression>
+; V73 loc70 [V73,T211] ( 2, 8 ) ref -> [rbp-0x1C0] class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression>
; V74 loc71 [V74,T364] ( 3, 1.50) ref -> rax class-hnd single-def <Microsoft.EntityFrameworkCore.Metadata.IFunctionMapping>
; V75 loc72 [V75,T316] ( 4, 2 ) ref -> rsi class-hnd single-def <Microsoft.EntityFrameworkCore.Metadata.ITableBase>
; V76 loc73 [V76,T270] ( 6, 4.50) ref -> rdi class-hnd single-def <<unknown class>>
; V77 loc74 [V77,T365] ( 3, 1.50) ref -> rdi class-hnd single-def <Microsoft.EntityFrameworkCore.Metadata.ITableBase>
; V78 loc75 [V78,T271] ( 3, 4.50) ref -> r14 class-hnd single-def <<unknown class>>
-; V79 loc76 [V79,T11] ( 10, 78.50) ref -> [rbp-0x1D0] class-hnd <<unknown class>>
+; V79 loc76 [V79,T11] ( 10, 78.50) ref -> [rbp-0x1C8] class-hnd <<unknown class>>
; V80 loc77 [V80,T118] ( 4, 19 ) ref -> r13 class-hnd exact single-def <<unknown class>>
; V81 loc78 [V81,T238] ( 4, 7 ) ref -> r12 class-hnd exact single-def <System.Collections.Generic.Dictionary`2[Microsoft.EntityFrameworkCore.Metadata.ITableBase,Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression]>
; V82 loc79 [V82 ] ( 7, 10.50) struct (24) [rbp-0x80] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.List`1+Enumerator[Microsoft.EntityFrameworkCore.Metadata.ITableMappingBase]>
-; V83 loc80 [V83,T212] ( 2, 8 ) ref -> [rbp-0x1D8] class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Metadata.ITableMappingBase>
-; V84 loc81 [V84,T20] ( 11, 62 ) ref -> [rbp-0x1E0] class-hnd exact spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_6>
+; V83 loc80 [V83,T212] ( 2, 8 ) ref -> [rbp-0x1D0] class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Metadata.ITableMappingBase>
+; V84 loc81 [V84,T20] ( 11, 62 ) ref -> [rbp-0x1D8] class-hnd exact spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_6>
;* V85 loc82 [V85 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
-; V86 loc83 [V86,T10] ( 5, 80 ) ref -> [rbp-0x1E8] class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Metadata.IProperty>
+; V86 loc83 [V86,T10] ( 5, 80 ) ref -> [rbp-0x1E0] class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Metadata.IProperty>
;* V87 loc84 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+ConcreteColumnExpression>
-; V88 loc85 [V88,T245] ( 3, 6 ) ref -> [rbp-0x1F0] class-hnd spill-single-def <<unknown class>>
-; V89 loc86 [V89,T283] ( 2, 4 ) ref -> [rbp-0x1F8] class-hnd spill-single-def <<unknown class>>
+; V88 loc85 [V88,T245] ( 3, 6 ) ref -> [rbp-0x1E8] class-hnd spill-single-def <<unknown class>>
+; V89 loc86 [V89,T283] ( 2, 4 ) ref -> [rbp-0x1F0] class-hnd spill-single-def <<unknown class>>
;* V90 loc87 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.EntityFrameworkCore.Query.SqlExpressions.InnerJoinExpression>
; V91 loc88 [V91,T119] ( 6, 18 ) ref -> rsi class-hnd exact <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_7>
;* V92 loc89 [V92 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.EntityFrameworkCore.Metadata.IColumnBase>
@@ -119,28 +119,28 @@
; V108 tmp15 [V108,T285] ( 3, 3 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[Microsoft.EntityFrameworkCore.Metadata.ITableBase,Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression]>
; V109 tmp16 [V109,T286] ( 3, 3 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V110 tmp17 [V110 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_1>
-; V111 tmp18 [V111,T34] ( 6, 48 ) ref -> [rbp-0x200] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
-; V112 tmp19 [V112,T68] ( 4, 32 ) ref -> [rbp-0x208] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
+; V111 tmp18 [V111,T34] ( 6, 48 ) ref -> [rbp-0x1F8] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
+; V112 tmp19 [V112,T68] ( 4, 32 ) ref -> [rbp-0x200] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
; V113 tmp20 [V113,T175] ( 3, 12 ) ref -> r12 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V114 tmp21 [V114,T176] ( 3, 12 ) ref -> [rbp-0x210] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V115 tmp22 [V115,T177] ( 3, 12 ) ref -> [rbp-0x218] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V114 tmp21 [V114,T176] ( 3, 12 ) ref -> [rbp-0x208] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V115 tmp22 [V115,T177] ( 3, 12 ) ref -> [rbp-0x210] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V116 tmp23 [V116 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-; V117 tmp24 [V117,T113] ( 5, 20 ) ref -> [rbp-0x220] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.InnerJoinExpression>
+; V117 tmp24 [V117,T113] ( 5, 20 ) ref -> [rbp-0x218] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.InnerJoinExpression>
; V118 tmp25 [V118,T178] ( 3, 12 ) ref -> r14 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V119 tmp26 [V119,T07] ( 7, 96 ) ref -> [rbp-0x228] class-hnd spill-single-def "non-inline candidate call" <<unknown class>>
+; V119 tmp26 [V119,T07] ( 7, 96 ) ref -> [rbp-0x220] class-hnd spill-single-def "non-inline candidate call" <<unknown class>>
; V120 tmp27 [V120 ] ( 4, 64 ) struct (16) [rbp-0x90] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression,Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer]>
; V121 tmp28 [V121,T287] ( 3, 3 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V122 tmp29 [V122 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_2>
-; V123 tmp30 [V123,T35] ( 6, 48 ) ref -> [rbp-0x230] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
-; V124 tmp31 [V124,T69] ( 4, 32 ) ref -> [rbp-0x238] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
-; V125 tmp32 [V125,T97] ( 3, 24 ) ref -> [rbp-0x240] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V126 tmp33 [V126,T98] ( 3, 24 ) ref -> [rbp-0x248] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V127 tmp34 [V127,T99] ( 3, 24 ) ref -> [rbp-0x250] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V123 tmp30 [V123,T35] ( 6, 48 ) ref -> [rbp-0x228] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
+; V124 tmp31 [V124,T69] ( 4, 32 ) ref -> [rbp-0x230] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
+; V125 tmp32 [V125,T97] ( 3, 24 ) ref -> [rbp-0x238] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V126 tmp33 [V126,T98] ( 3, 24 ) ref -> [rbp-0x240] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V127 tmp34 [V127,T99] ( 3, 24 ) ref -> [rbp-0x248] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V128 tmp35 [V128 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-; V129 tmp36 [V129,T53] ( 5, 40 ) ref -> [rbp-0x258] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.LeftJoinExpression>
+; V129 tmp36 [V129,T53] ( 5, 40 ) ref -> [rbp-0x250] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.LeftJoinExpression>
; V130 tmp37 [V130,T47] ( 7, 44 ) ref -> rcx class-hnd "impAppendStmt" <System.Collections.Generic.List`1[int]>
-; V131 tmp38 [V131,T213] ( 2, 8 ) ref -> [rbp-0x260] class-hnd spill-single-def "non-inline candidate call" <<unknown class>>
-; V132 tmp39 [V132,T125] ( 5, 16 ) ref -> [rbp-0x268] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.CaseWhenClause>
+; V131 tmp38 [V131,T213] ( 2, 8 ) ref -> [rbp-0x258] class-hnd spill-single-def "non-inline candidate call" <<unknown class>>
+; V132 tmp39 [V132,T125] ( 5, 16 ) ref -> [rbp-0x260] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.CaseWhenClause>
; V133 tmp40 [V133,T366] ( 3, 1.50) ref -> rsi
; V134 tmp41 [V134,T288] ( 3, 3 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.ProjectionMember>
; V135 tmp42 [V135,T289] ( 3, 3 ) ref -> rbx class-hnd single-def "impAppendStmt" <<unknown class>>
@@ -155,32 +155,32 @@
; V144 tmp51 [V144,T318] ( 4, 2 ) ref -> r8
; V145 tmp52 [V145,T290] ( 3, 3 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V146 tmp53 [V146 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_4>
-; V147 tmp54 [V147,T01] ( 6,192 ) ref -> [rbp-0x270] class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V148 tmp55 [V148,T08] ( 6, 86.14) ref -> [rbp-0x278] class-hnd "impAppendStmt" <<unknown class>>
-; V149 tmp56 [V149,T36] ( 6, 48 ) int -> [rbp-0x94] "impSpillLclRefs"
+; V147 tmp54 [V147,T01] ( 6,192 ) ref -> [rbp-0x268] class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V148 tmp55 [V148,T08] ( 6, 86.14) ref -> [rbp-0x270] class-hnd "impAppendStmt" <<unknown class>>
+; V149 tmp56 [V149,T36] ( 6, 48 ) int -> rcx "impSpillLclRefs"
; V150 tmp57 [V150,T127] ( 4, 16 ) ref -> rdx class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
; V151 tmp58 [V151,T291] ( 3, 3 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V152 tmp59 [V152,T292] ( 3, 3 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V153 tmp60 [V153,T293] ( 3, 3 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.String]>
-; V154 tmp61 [V154,T94] ( 6, 24 ) ref -> [rbp-0x280] class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression>
-; V155 tmp62 [V155,T84] ( 10, 28 ) ref -> [rbp-0x288] class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
-; V156 tmp63 [V156,T62] ( 8, 32 ) ref -> [rbp-0x290] class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
-; V157 tmp64 [V157,T61] ( 9, 32.00) ref -> [rbp-0x298]
-; V158 tmp65 [V158,T05] ( 15,112.00) ref -> [rbp-0x2A0] class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.ProjectionExpression>
-; V159 tmp66 [V159,T02] ( 21,176 ) ref -> [rbp-0x2A8] class-hnd "impAppendStmt" <<unknown class>>
-; V160 tmp67 [V160,T31] ( 9, 48.00) ref -> [rbp-0x2B0] class-hnd "impAppendStmt" <System.Type>
-; V161 tmp68 [V161,T44] ( 14, 44 ) ref -> [rbp-0x2B8] class-hnd "non-inline candidate call" <<unknown class>>
-; V162 tmp69 [V162,T85] ( 10, 28 ) ref -> [rbp-0x2C0] class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.ProjectionExpression>
+; V154 tmp61 [V154,T94] ( 6, 24 ) ref -> [rbp-0x278] class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression>
+; V155 tmp62 [V155,T84] ( 10, 28 ) ref -> [rbp-0x280] class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
+; V156 tmp63 [V156,T62] ( 8, 32 ) ref -> [rbp-0x288] class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
+; V157 tmp64 [V157,T61] ( 9, 32.00) ref -> [rbp-0x290]
+; V158 tmp65 [V158,T05] ( 15,112.00) ref -> [rbp-0x298] class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.ProjectionExpression>
+; V159 tmp66 [V159,T02] ( 21,176 ) ref -> [rbp-0x2A0] class-hnd "impAppendStmt" <<unknown class>>
+; V160 tmp67 [V160,T31] ( 9, 48.00) ref -> [rbp-0x2A8] class-hnd "impAppendStmt" <System.Type>
+; V161 tmp68 [V161,T44] ( 14, 44 ) ref -> [rbp-0x2B0] class-hnd "non-inline candidate call" <<unknown class>>
+; V162 tmp69 [V162,T85] ( 10, 28 ) ref -> [rbp-0x2B8] class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.ProjectionExpression>
; V163 tmp70 [V163,T243] ( 6, 6 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.Internal.TpcTablesExpression>
-; V164 tmp71 [V164,T273] ( 4, 4 ) ref -> [rbp-0x2C8] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
+; V164 tmp71 [V164,T273] ( 4, 4 ) ref -> [rbp-0x2C0] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
; V165 tmp72 [V165,T294] ( 3, 3 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V166 tmp73 [V166,T136] ( 2, 16 ) ref -> [rbp-0x2D0] class-hnd spill-single-def "non-inline candidate call" <Microsoft.EntityFrameworkCore.Metadata.IProperty>
-; V167 tmp74 [V167,T100] ( 3, 24 ) ref -> [rbp-0x2D8] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+ConcreteColumnExpression>
-; V168 tmp75 [V168,T48] ( 7, 44 ) ref -> [rbp-0x2E0] class-hnd spill-single-def "non-inline candidate call" <<unknown class>>
-; V169 tmp76 [V169 ] ( 4, 32 ) struct (16) [rbp-0xA8] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression,Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer]>
+; V166 tmp73 [V166,T136] ( 2, 16 ) ref -> [rbp-0x2C8] class-hnd spill-single-def "non-inline candidate call" <Microsoft.EntityFrameworkCore.Metadata.IProperty>
+; V167 tmp74 [V167,T100] ( 3, 24 ) ref -> [rbp-0x2D0] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+ConcreteColumnExpression>
+; V168 tmp75 [V168,T48] ( 7, 44 ) ref -> [rbp-0x2D8] class-hnd spill-single-def "non-inline candidate call" <<unknown class>>
+; V169 tmp76 [V169 ] ( 4, 32 ) struct (16) [rbp-0xA0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression,Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer]>
; V170 tmp77 [V170,T295] ( 3, 3 ) ref -> rsi class-hnd single-def "dup spill" <<unknown class>>
; V171 tmp78 [V171,T274] ( 4, 4 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+ConcreteColumnExpression>
-; V172 tmp79 [V172 ] ( 3, 3 ) struct (16) [rbp-0xB8] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression,System.Collections.Generic.List`1[System.String]]>
+; V172 tmp79 [V172 ] ( 3, 3 ) struct (16) [rbp-0xB0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression,System.Collections.Generic.List`1[System.String]]>
; V173 tmp80 [V173,T296] ( 3, 3 ) ref -> rsi class-hnd single-def "impAppendStmt" <<unknown class>>
; V174 tmp81 [V174,T325] ( 2, 2 ) ref -> rsi class-hnd single-def "dup spill" <<unknown class>>
;* V175 tmp82 [V175 ] ( 0, 0 ) ref -> zero-ref single-def
@@ -191,7 +191,7 @@
; V180 tmp87 [V180,T205] ( 8, 8 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.StructuralTypeProjectionExpression>
; V181 tmp88 [V181,T275] ( 4, 4 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V182 tmp89 [V182 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_5>
-; V183 tmp90 [V183,T101] ( 3, 24 ) ref -> [rbp-0x2E8] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V183 tmp90 [V183,T101] ( 3, 24 ) ref -> [rbp-0x2E0] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
; V184 tmp91 [V184,T185] ( 3, 12 ) int -> rcx "impSpillLclRefs"
;* V185 tmp92 [V185 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
; V186 tmp93 [V186,T276] ( 4, 4 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -204,7 +204,7 @@
; V193 tmp100 [V193,T206] ( 8, 8 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.StructuralTypeProjectionExpression>
; V194 tmp101 [V194,T49] ( 7, 44 ) ref -> r14 class-hnd "impAppendStmt" <<unknown class>>
; V195 tmp102 [V195,T137] ( 2, 16 ) ref -> r15 class-hnd "non-inline candidate call" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression>
-; V196 tmp103 [V196 ] ( 4, 32 ) struct (16) [rbp-0xC8] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression,Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer]>
+; V196 tmp103 [V196 ] ( 4, 32 ) struct (16) [rbp-0xC0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression,Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer]>
; V197 tmp104 [V197,T280] ( 4, 4 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V198 tmp105 [V198,T326] ( 2, 2 ) ref -> r8 class-hnd single-def "dup spill" <<unknown class>>
; V199 tmp106 [V199,T327] ( 2, 2 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.Collections.Generic.IEnumerable`1[Microsoft.EntityFrameworkCore.Metadata.IFunctionMapping]>
@@ -213,17 +213,17 @@
; V202 tmp109 [V202,T303] ( 3, 3 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V203 tmp110 [V203,T304] ( 3, 3 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[Microsoft.EntityFrameworkCore.Metadata.ITableBase,Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression]>
;* V204 tmp111 [V204 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_6>
-; V205 tmp112 [V205,T65] ( 5, 32 ) ref -> [rbp-0x2F0] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
-; V206 tmp113 [V206,T70] ( 4, 32 ) ref -> [rbp-0x2F8] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
-; V207 tmp114 [V207,T179] ( 3, 12 ) ref -> [rbp-0x300] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V208 tmp115 [V208,T180] ( 3, 12 ) ref -> [rbp-0x308] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V209 tmp116 [V209,T181] ( 3, 12 ) ref -> [rbp-0x310] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V205 tmp112 [V205,T65] ( 5, 32 ) ref -> [rbp-0x2E8] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
+; V206 tmp113 [V206,T70] ( 4, 32 ) ref -> [rbp-0x2F0] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
+; V207 tmp114 [V207,T179] ( 3, 12 ) ref -> [rbp-0x2F8] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V208 tmp115 [V208,T180] ( 3, 12 ) ref -> [rbp-0x300] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V209 tmp116 [V209,T181] ( 3, 12 ) ref -> [rbp-0x308] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V210 tmp117 [V210 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-; V211 tmp118 [V211,T114] ( 5, 20 ) ref -> [rbp-0x318] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.InnerJoinExpression>
+; V211 tmp118 [V211,T114] ( 5, 20 ) ref -> [rbp-0x310] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.InnerJoinExpression>
; V212 tmp119 [V212,T93] ( 7, 24 ) ref -> rcx class-hnd "impAppendStmt" <System.Collections.Generic.List`1[int]>
-; V213 tmp120 [V213,T182] ( 3, 12 ) ref -> [rbp-0x320] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V214 tmp121 [V214,T03] ( 7,176 ) ref -> [rbp-0x328] class-hnd spill-single-def "non-inline candidate call" <<unknown class>>
-; V215 tmp122 [V215 ] ( 4,128 ) struct (16) [rbp-0xD8] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression,Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer]>
+; V213 tmp120 [V213,T182] ( 3, 12 ) ref -> [rbp-0x318] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V214 tmp121 [V214,T03] ( 7,176 ) ref -> [rbp-0x320] class-hnd spill-single-def "non-inline candidate call" <<unknown class>>
+; V215 tmp122 [V215 ] ( 4,128 ) struct (16) [rbp-0xD0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression,Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer]>
;* V216 tmp123 [V216 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_7>
; V217 tmp124 [V217,T183] ( 3, 12 ) ref -> r14 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V218 tmp125 [V218,T214] ( 2, 8 ) ref -> r8 class-hnd "dup spill" <<unknown class>>
@@ -245,26 +245,26 @@
;* V234 tmp141 [V234,T367] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V235 tmp142 [V235 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
;* V236 tmp143 [V236,T368] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
...
benchmarks.run.windows.x64.checked.mch
+0 (0.00%) : 19697.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)
@@ -23,11 +23,11 @@
; V12 loc9 [V12,T14] ( 4, 14 ) byref -> [rsp+0x28] spill-single-def
; V13 loc10 [V13,T17] ( 6, 13.50) int -> r12
; V14 loc11 [V14,T15] ( 4, 14 ) byref -> [rsp+0x20] spill-single-def
-; V15 loc12 [V15,T66] ( 3, 1.50) int -> rbp single-def
+; V15 loc12 [V15,T62] ( 3, 1.50) int -> rbp single-def
; V16 OutArgs [V16 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp2 [V18,T31] ( 4, 3 ) long -> r11 "VirtualCall with runtime lookup"
-; V19 tmp3 [V19,T67] ( 3, 1.50) int -> r15
+; V19 tmp3 [V19,T63] ( 3, 1.50) int -> r15
;* V20 tmp4 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -35,8 +35,8 @@
;* V24 tmp8 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp10 [V26,T28] ( 4, 4 ) byref -> rax single-def "dup spill"
-; V27 tmp11 [V27,T61] ( 3, 2 ) long -> rdx "spilling helperCall"
-; V28 tmp12 [V28,T68] ( 3, 1.50) int -> r15
+; V27 tmp11 [V27,T57] ( 3, 2 ) long -> rdx "spilling helperCall"
+; V28 tmp12 [V28,T64] ( 3, 1.50) int -> r15
;* V29 tmp13 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp14 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -48,9 +48,9 @@
; V37 tmp21 [V37,T32] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
; V38 tmp22 [V38,T33] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp24 [V40,T80] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp24 [V40,T74] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp26 [V42,T81] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp26 [V42,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V43 tmp27 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -58,9 +58,9 @@
; V47 tmp31 [V47,T34] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
; V48 tmp32 [V48,T35] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V50 tmp34 [V50,T82] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V50 tmp34 [V50,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V52 tmp36 [V52,T83] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V52 tmp36 [V52,T77] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -68,62 +68,56 @@
; V57 tmp41 [V57,T36] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
; V58 tmp42 [V58,T37] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V60 tmp44 [V60,T84] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V60 tmp44 [V60,T78] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V62 tmp46 [V62,T85] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V62 tmp46 [V62,T79] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V63 tmp47 [V63 ] ( 6, 10.50) ref -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64 ] ( 9, 19 ) int -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V65 tmp49 [V65,T71] ( 2, 1 ) ref -> rcx single-def "field V33._items (fldOffset=0x0)" P-INDEP
-; V66 tmp50 [V66,T74] ( 2, 1 ) int -> rdx single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V67 tmp51 [V67,T72] ( 2, 1 ) ref -> rcx single-def "field V43._items (fldOffset=0x0)" P-INDEP
-; V68 tmp52 [V68,T75] ( 2, 1 ) int -> rdx single-def "field V43._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T73] ( 2, 1 ) ref -> rcx single-def "field V53._items (fldOffset=0x0)" P-INDEP
-; V70 tmp54 [V70,T76] ( 2, 1 ) int -> rdx single-def "field V53._length (fldOffset=0x8)" P-INDEP
+; V65 tmp49 [V65,T67] ( 2, 1 ) ref -> rcx single-def "field V33._items (fldOffset=0x0)" P-INDEP
+; V66 tmp50 [V66,T70] ( 2, 1 ) int -> rdx single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V67 tmp51 [V67,T68] ( 2, 1 ) ref -> rcx single-def "field V43._items (fldOffset=0x0)" P-INDEP
+; V68 tmp52 [V68,T71] ( 2, 1 ) int -> rdx single-def "field V43._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T69] ( 2, 1 ) ref -> rcx single-def "field V53._items (fldOffset=0x0)" P-INDEP
+; V70 tmp54 [V70,T72] ( 2, 1 ) int -> rdx single-def "field V53._length (fldOffset=0x8)" P-INDEP
; V71 tmp55 [V71,T41] ( 3, 3 ) int -> rax "index expr"
; V72 tmp56 [V72,T42] ( 3, 3 ) int -> rdx "index expr"
; V73 tmp57 [V73,T43] ( 3, 3 ) int -> rax "index expr"
; V74 tmp58 [V74,T44] ( 3, 3 ) int -> rdx "index expr"
; V75 tmp59 [V75,T12] ( 2, 16 ) long -> rdx "argument with side effect"
; V76 tmp60 [V76,T13] ( 2, 16 ) long -> rdx "argument with side effect"
-; V77 tmp61 [V77,T64] ( 2, 2 ) int -> rdx "argument with side effect"
+; V77 tmp61 [V77,T60] ( 2, 2 ) int -> rdx "argument with side effect"
; V78 tmp62 [V78,T45] ( 3, 3 ) int -> rax "index expr"
; V79 tmp63 [V79,T46] ( 3, 3 ) int -> rdx "index expr"
-; V80 tmp64 [V80,T65] ( 2, 2 ) long -> rdx "argument with side effect"
-; V81 cse0 [V81,T69] ( 3, 1.50) int -> rcx "CSE - conservative"
-; V82 cse1 [V82,T70] ( 3, 1.50) int -> r12 "CSE - conservative"
-; V83 rat0 [V83,T54] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
-; V84 rat1 [V84,T62] ( 3, 2 ) long -> rdx "runtime lookup"
+; V80 tmp64 [V80,T61] ( 2, 2 ) long -> rdx "argument with side effect"
+; V81 cse0 [V81,T65] ( 3, 1.50) int -> rcx "CSE - conservative"
+; V82 cse1 [V82,T66] ( 3, 1.50) int -> r12 "CSE - conservative"
+; V83 rat0 [V83,T52] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V84 rat1 [V84,T58] ( 3, 2 ) long -> rdx "runtime lookup"
; V85 rat2 [V85,T47] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V86 rat3 [V86,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V87 rat4 [V87,T77] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V88 rat5 [V88,T48] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V89 rat6 [V89,T06] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
-; V90 rat7 [V90,T10] ( 3, 16 ) long -> rdx "runtime lookup"
-; V91 rat8 [V91,T02] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V92 rat9 [V92,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V93 rat10 [V93,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V94 rat11 [V94,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V95 rat12 [V95,T56] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
-; V96 rat13 [V96,T49] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V97 rat14 [V97,T57] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V98 rat15 [V98,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V99 rat16 [V99,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V100 rat17 [V100,T08] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
-; V101 rat18 [V101,T11] ( 3, 16 ) long -> rdx "runtime lookup"
-; V102 rat19 [V102,T04] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
-; V103 rat20 [V103,T22] ( 3, 8.80) long -> rcx "Spilling to split statement for tree"
-; V104 rat21 [V104,T19] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V105 rat22 [V105,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V106 rat23 [V106,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V107 rat24 [V107,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V108 rat25 [V108,T58] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V86 rat3 [V86,T06] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
+; V87 rat4 [V87,T10] ( 3, 16 ) long -> rdx "runtime lookup"
+; V88 rat5 [V88,T02] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V89 rat6 [V89,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V90 rat7 [V90,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V91 rat8 [V91,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V92 rat9 [V92,T53] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V93 rat10 [V93,T48] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
+; V94 rat11 [V94,T08] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
+; V95 rat12 [V95,T11] ( 3, 16 ) long -> rdx "runtime lookup"
+; V96 rat13 [V96,T04] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
+; V97 rat14 [V97,T22] ( 3, 8.80) long -> rcx "Spilling to split statement for tree"
+; V98 rat15 [V98,T19] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
+;* V99 rat16 [V99,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V100 rat17 [V100,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V101 rat18 [V101,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V102 rat19 [V102,T54] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V103 rat20 [V103,T49] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V104 rat21 [V104,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V105 rat22 [V105,T73] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V106 rat23 [V106,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V107 rat24 [V107,T56] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V108 rat25 [V108,T59] ( 3, 2 ) long -> rdx "runtime lookup"
; V109 rat26 [V109,T51] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V110 rat27 [V110,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V111 rat28 [V111,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V112 rat29 [V112,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V113 rat30 [V113,T60] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
-; V114 rat31 [V114,T63] ( 3, 2 ) long -> rdx "runtime lookup"
-; V115 rat32 [V115,T53] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 72
benchmarks.run_pgo.windows.x64.checked.mch
-16 (-1.65%) : 68276.dasm - System.Linq.Enumerable:TryGetSingleSystem.__Canon:System.__Canon (Tier1)
@@ -51,7 +51,6 @@
; V39 rat1 [V39,T28] ( 3, 0.33) long -> r13 "runtime lookup"
; V40 rat2 [V40,T26] ( 3, 0.47) long -> rcx "spilling expr"
; V41 rat3 [V41,T27] ( 3, 0.37) long -> r13 "fgMakeTemp is creating a new local variable"
-; TEMP_01 byref -> [rbp-0x58]
;
; Lcl frame size = 72
@@ -68,7 +67,6 @@ G_M35688_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
lea rbp, [rsp+0x80]
xor eax, eax
mov qword ptr [rbp-0x50], rax
- mov qword ptr [rbp-0x58], rax
mov qword ptr [rbp-0x60], rsp
mov qword ptr [rbp-0x40], rcx
mov rdi, rcx
@@ -78,7 +76,7 @@ G_M35688_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
mov rsi, r9
; byrRegs +[rsi]
- ;; size=54 bbWeight=1 PerfScore 14.00
+ ;; size=50 bbWeight=1 PerfScore 13.00
G_M35688_IG02: ; bbWeight=1, gcVars=0000000000800000 {V06}, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, gcvars, byref
; GC ptr vars +{V06}
test r14, r14
@@ -297,7 +295,7 @@ G_M35688_IG22: ; bbWeight=0.08, gcrefRegs=5000 {r12 r14}, byrefRegs=0040
; gcrRegs -[rbx]
jmp SHORT G_M35688_IG20
;; size=2 bbWeight=0.08 PerfScore 0.17
-G_M35688_IG23: ; bbWeight=0.02, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0040 {rsi}, byref
+G_M35688_IG23: ; bbWeight=0.02, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0040 {rsi}, byref, isz
; gcrRegs +[rbx]
mov r11, r13
mov rcx, r14
@@ -309,8 +307,8 @@ G_M35688_IG23: ; bbWeight=0.02, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; function address
cmp qword ptr [rbx+0x18], rcx
- je G_M35688_IG31
- ;; size=32 bbWeight=0.02 PerfScore 0.12
+ je SHORT G_M35688_IG31
+ ;; size=28 bbWeight=0.02 PerfScore 0.12
G_M35688_IG24: ; bbWeight=0, gcrefRegs=500C {rdx rbx r12 r14}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rax]
mov rcx, gword ptr [rbx+0x08]
@@ -362,9 +360,6 @@ G_M35688_IG29: ; bbWeight=0.02, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0
G_M35688_IG30: ; bbWeight=0.13, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRegs=0040 {rsi}, byref
inc edx
mov dword ptr [r14+0x14], edx
- lea rcx, bword ptr [r14+0x08]
- ; byrRegs +[rcx]
- mov bword ptr [rbp-0x58], rcx
mov rax, gword ptr [r14+0x20]
; gcrRegs +[rax]
mov edx, r15d
@@ -372,11 +367,10 @@ G_M35688_IG30: ; bbWeight=0.13, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRe
; gcrRegs +[rdx]
mov rcx, gword ptr [rax+0x08]
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
call [rax+0x18]<unknown method>
; gcrRegs -[rcx rdx rdi]
; gcr arg pop 0
- mov rcx, bword ptr [rbp-0x58]
+ lea rcx, bword ptr [r14+0x08]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
@@ -384,7 +378,7 @@ G_M35688_IG30: ; bbWeight=0.13, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRe
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
jmp G_M35688_IG23
- ;; size=50 bbWeight=0.13 PerfScore 2.06
+ ;; size=42 bbWeight=0.13 PerfScore 1.81
G_M35688_IG31: ; bbWeight=0.02, gcrefRegs=500C {rdx rbx r12 r14}, byrefRegs=0040 {rsi}, byref
; gcrRegs +[rdx]
mov r15, gword ptr [rbx+0x08]
@@ -554,7 +548,7 @@ G_M35688_IG48: ; bbWeight=0.08, funclet epilog, nogc, extend
ret
;; size=17 bbWeight=0.08 PerfScore 0.44
-; Total bytes of code 969, prolog size 54, PerfScore 313.86, instruction count 265, allocated bytes for code 969 (MethodHash=6ebb7497) for method System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
+; Total bytes of code 953, prolog size 50, PerfScore 312.61, instruction count 262, allocated bytes for code 953 (MethodHash=6ebb7497) for method System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
; ============================================================
Unwind Info:
coreclr_tests.run.windows.x64.checked.mch
-19 (-5.11%) : 571581.dasm - Microsoft.Build.Collections.RetrievableEntryHashSet1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet
1[System.__Canon]):ubyte:this (FullOpts)
@@ -8,12 +8,12 @@
; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 9, 19 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]>
+; V00 this [V00,T04] ( 8, 18 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]>
; V01 arg1 [V01,T08] ( 5, 5 ) ref -> rdx class-hnd single-def <Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]>
; V02 loc0 [V02 ] ( 2, 8 ) ref -> [rbp-0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
; V03 loc1 [V03 ] ( 8, 18 ) struct (24) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.Build.Collections.RetrievableEntryHashSet`1+Enumerator[System.__Canon]>
; V04 loc2 [V04,T06] ( 3, 12 ) ref -> rbx class-hnd <System.__Canon>
-;* V05 loc3 [V05,T22] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[Z] EH-live
+;* V05 loc3 [V05,T19] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[Z] EH-live
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -26,27 +26,24 @@
; V15 tmp9 [V15 ] ( 5, 15 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x8)" P-DEP
; V16 tmp10 [V16 ] ( 4, 11 ) int -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V03._index (fldOffset=0x10)" P-DEP
; V17 tmp11 [V17 ] ( 4, 11 ) int -> [rbp-0x1C] do-not-enreg[X] addr-exposed "field V03._version (fldOffset=0x14)" P-DEP
-; V18 tmp12 [V18,T18] ( 3, 3 ) ref -> rdx single-def "field V12._set (fldOffset=0x0)" P-INDEP
-;* V19 tmp13 [V19,T21] ( 0, 0 ) ref -> zero-ref single-def "field V12._current (fldOffset=0x8)" P-INDEP
-;* V20 tmp14 [V20,T23] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x10)" P-INDEP
-; V21 tmp15 [V21,T19] ( 2, 2 ) int -> rax single-def "field V12._version (fldOffset=0x14)" P-INDEP
+; V18 tmp12 [V18,T16] ( 3, 3 ) ref -> rdx single-def "field V12._set (fldOffset=0x0)" P-INDEP
+;* V19 tmp13 [V19,T18] ( 0, 0 ) ref -> zero-ref single-def "field V12._current (fldOffset=0x8)" P-INDEP
+;* V20 tmp14 [V20,T20] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x10)" P-INDEP
+; V21 tmp15 [V21,T17] ( 2, 2 ) int -> rax single-def "field V12._version (fldOffset=0x14)" P-INDEP
; V22 tmp16 [V22,T03] ( 2, 32 ) long -> rdx "argument with side effect"
; V23 tmp17 [V23,T05] ( 2, 16 ) ref -> rdx "argument with side effect"
-; V24 PSPSym [V24,T24] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
-;* V25 cse0 [V25,T25] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-;* V26 rat0 [V26,T13] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V27 rat1 [V27,T17] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V24 PSPSym [V24,T21] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
+;* V25 cse0 [V25,T22] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+;* V26 rat0 [V26,T12] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V27 rat1 [V27,T15] ( 0, 0 ) long -> zero-ref "runtime lookup"
;* V28 rat2 [V28,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V29 rat3 [V29,T14] ( 2, 4 ) long -> rdx "Spilling to split statement for tree"
-;* V30 rat4 [V30,T20] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V31 rat5 [V31,T10] ( 2, 4 ) long -> rdx "fgMakeTemp is creating a new local variable"
-; V32 rat6 [V32,T01] ( 3, 35.20) long -> rdx "Spilling to split statement for tree"
-; V33 rat7 [V33,T02] ( 3, 32 ) long -> rdx "runtime lookup"
-; V34 rat8 [V34,T00] ( 3, 44.80) long -> rax "fgMakeTemp is creating a new local variable"
-; V35 rat9 [V35,T15] ( 3, 4.40) long -> rdx "Spilling to split statement for tree"
-; V36 rat10 [V36,T11] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V37 rat11 [V37,T16] ( 3, 4.40) long -> rdx "Spilling to split statement for tree"
-; V38 rat12 [V38,T12] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V29 rat3 [V29,T01] ( 3, 35.20) long -> rdx "Spilling to split statement for tree"
+; V30 rat4 [V30,T02] ( 3, 32 ) long -> rdx "runtime lookup"
+; V31 rat5 [V31,T00] ( 3, 44.80) long -> rax "fgMakeTemp is creating a new local variable"
+; V32 rat6 [V32,T13] ( 3, 4.40) long -> rdx "Spilling to split statement for tree"
+; V33 rat7 [V33,T10] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V34 rat8 [V34,T14] ( 3, 4.40) long -> rdx "Spilling to split statement for tree"
+; V35 rat9 [V35,T11] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 88
@@ -102,14 +99,8 @@ G_M28904_IG08: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
mov dword ptr [rbp-0x1C], eax
;; size=6 bbWeight=1 PerfScore 2.00
G_M28904_IG09: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov rdx, qword ptr [rcx]
- mov rdx, qword ptr [rdx+0x38]
- mov rdx, qword ptr [rdx]
- mov rdx, qword ptr [rdx+0x18]
- test rdx, rdx
- jne SHORT G_M28904_IG11
jmp SHORT G_M28904_IG11
- ;; size=21 bbWeight=1 PerfScore 11.25
+ ;; size=2 bbWeight=1 PerfScore 2.00
G_M28904_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
mov rbx, gword ptr [rbp-0x28]
@@ -249,7 +240,7 @@ G_M28904_IG28: ; bbWeight=1, funclet epilog, nogc, extend
ret
;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 372, prolog size 32, PerfScore 275.58, instruction count 113, allocated bytes for code 372 (MethodHash=9d278f17) for method Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]):ubyte:this (FullOpts)
+; Total bytes of code 353, prolog size 32, PerfScore 266.33, instruction count 107, allocated bytes for code 353 (MethodHash=9d278f17) for method Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
-24 (-2.97%) : 558210.dasm - ILCompiler.LazyGenericsSupport+Graph1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph
1+Vertex[System.__Canon]):this (FullOpts)
@@ -8,77 +8,73 @@
; 4 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 14,1267 ) ref -> rbx this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
-; V01 arg1 [V01,T06] ( 18,1118 ) ref -> rsi class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
+; V00 this [V00,T08] ( 13,1139 ) ref -> rsi this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
+; V01 arg1 [V01,T05] ( 18,1118 ) ref -> rbx class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
; V02 loc0 [V02,T04] ( 8,1328 ) ref -> r14 class-hnd <<unknown class>>
; V03 loc1 [V03 ] ( 3, 24 ) struct (16) [rsp+0x58] do-not-enreg[XS] must-init addr-exposed <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
; V04 loc2 [V04 ] ( 4,1296 ) struct (16) [rsp+0x48] do-not-enreg[XS] must-init addr-exposed <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-; V06 loc4 [V06,T07] ( 9,1216 ) ref -> r14 class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
+; V06 loc4 [V06,T06] ( 9,1216 ) ref -> r14 class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
; V07 loc5 [V07,T09] ( 5, 896 ) ref -> r15 class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp2 [V10,T32] ( 3, 48 ) long -> r11 "VirtualCall with runtime lookup"
+; V10 tmp2 [V10,T28] ( 3, 48 ) long -> r11 "VirtualCall with runtime lookup"
;* V11 tmp3 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V12 tmp4 [V12,T00] ( 4,3072 ) long -> r11 "VirtualCall with runtime lookup"
-; V13 tmp5 [V13,T20] ( 3, 192 ) ref -> r14 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
+; V13 tmp5 [V13,T16] ( 3, 192 ) ref -> r14 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
;* V14 tmp6 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V15 tmp7 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V16 tmp8 [V16,T29] ( 4, 48 ) long -> r11 "VirtualCall with runtime lookup"
-; V17 tmp9 [V17,T34] ( 3, 43.43) int -> r15 "non-inline candidate call"
+; V16 tmp8 [V16,T25] ( 4, 48 ) long -> r11 "VirtualCall with runtime lookup"
+; V17 tmp9 [V17,T30] ( 3, 43.43) int -> r15 "non-inline candidate call"
; V18 tmp10 [V18 ] ( 2, 32 ) struct (16) [rsp+0x38] do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-; V19 tmp11 [V19,T28] ( 7, 64 ) ref -> r14 class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
-; V20 tmp12 [V20,T43] ( 4, 20 ) int -> r15 "Inline stloc first use temp"
-; V21 tmp13 [V21,T44] ( 3, 18 ) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>>
-; V22 tmp14 [V22,T45] ( 3, 16 ) int -> rcx "Inline return value spill temp"
-; V23 tmp15 [V23,T36] ( 3, 36.57) int -> rcx "Inlining Arg"
-; V24 tmp16 [V24,T22] ( 7, 160 ) ref -> rsi class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-; V25 tmp17 [V25,T30] ( 4, 48 ) int -> r15 "Inline stloc first use temp"
-; V26 tmp18 [V26,T35] ( 3, 40 ) ref -> rcx class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V19 tmp11 [V19,T24] ( 7, 64 ) ref -> r14 class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
+; V20 tmp12 [V20,T39] ( 4, 20 ) int -> r15 "Inline stloc first use temp"
+; V21 tmp13 [V21,T40] ( 3, 18 ) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>>
+; V22 tmp14 [V22,T41] ( 3, 16 ) int -> rcx "Inline return value spill temp"
+; V23 tmp15 [V23,T32] ( 3, 36.57) int -> rcx "Inlining Arg"
+; V24 tmp16 [V24,T18] ( 7, 160 ) ref -> rbx class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
+; V25 tmp17 [V25,T26] ( 4, 48 ) int -> r15 "Inline stloc first use temp"
+; V26 tmp18 [V26,T31] ( 3, 40 ) ref -> rcx class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V27 tmp19 [V27 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-; V28 tmp20 [V28,T18] ( 3, 256 ) int -> rcx "Inline return value spill temp"
-; V29 tmp21 [V29,T12] ( 3, 694.86) int -> r11 "Inlining Arg"
-; V30 tmp22 [V30,T15] ( 3, 585.14) int -> rcx "Inlining Arg"
-; V31 tmp23 [V31,T13] ( 3, 628.35) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>>
+; V28 tmp20 [V28,T15] ( 3, 256 ) int -> rcx "Inline return value spill temp"
+; V29 tmp21 [V29,T11] ( 3, 694.86) int -> r11 "Inlining Arg"
+; V30 tmp22 [V30,T13] ( 3, 585.14) int -> rcx "Inlining Arg"
+; V31 tmp23 [V31,T12] ( 3, 628.35) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>>
; V32 tmp24 [V32,T10] ( 4, 744.71) int -> rdx "Inline stloc first use temp"
-; V33 tmp25 [V33,T17] ( 7, 384 ) ref -> rcx class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-; V34 tmp26 [V34,T27] ( 3, 93.09) ref -> r8 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V35 tmp27 [V35,T26] ( 4, 122.18) int -> rdx "Inline stloc first use temp"
+; V33 tmp25 [V33,T14] ( 7, 384 ) ref -> rcx class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+; V34 tmp26 [V34,T23] ( 3, 93.09) ref -> r8 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V35 tmp27 [V35,T22] ( 4, 122.18) int -> rdx "Inline stloc first use temp"
;* V36 tmp28 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
; V37 tmp29 [V37 ] ( 2, 16 ) ref -> [rsp+0x58] do-not-enreg[X] addr-exposed "field V03.Vertex (fldOffset=0x0)" P-DEP
; V38 tmp30 [V38 ] ( 2, 16 ) ref -> [rsp+0x60] do-not-enreg[X] addr-exposed "field V03.EdgeEnumeratorPosition (fldOffset=0x8)" P-DEP
; V39 tmp31 [V39 ] ( 4,1296 ) ref -> [rsp+0x48] do-not-enreg[X] addr-exposed "field V04.Destination (fldOffset=0x0)" P-DEP
; V40 tmp32 [V40 ] ( 1, 512 ) ubyte -> [rsp+0x50] do-not-enreg[X] addr-exposed "field V04.Flagged (fldOffset=0x8)" P-DEP
-; V41 tmp33 [V41,T39] ( 3, 32 ) ref -> rdx "field V05.Vertex (fldOffset=0x0)" P-INDEP
-; V42 tmp34 [V42,T40] ( 3, 32 ) ref -> r14 "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
-; V43 tmp35 [V43,T42] ( 2, 24 ) ref -> [rsp+0x38] do-not-enreg[H] hidden-struct-arg "field V18.Destination (fldOffset=0x0)" P-DEP
-; V44 tmp36 [V44,T46] ( 1, 16 ) ubyte -> [rsp+0x40] do-not-enreg[H] hidden-struct-arg "field V18.Flagged (fldOffset=0x8)" P-DEP
+; V41 tmp33 [V41,T35] ( 3, 32 ) ref -> rdx "field V05.Vertex (fldOffset=0x0)" P-INDEP
+; V42 tmp34 [V42,T36] ( 3, 32 ) ref -> r14 "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
+; V43 tmp35 [V43,T38] ( 2, 24 ) ref -> [rsp+0x38] do-not-enreg[H] hidden-struct-arg "field V18.Destination (fldOffset=0x0)" P-DEP
+; V44 tmp36 [V44,T42] ( 1, 16 ) ubyte -> [rsp+0x40] do-not-enreg[H] hidden-struct-arg "field V18.Flagged (fldOffset=0x8)" P-DEP
;* V45 tmp37 [V45 ] ( 0, 0 ) ref -> zero-ref "field V27.Vertex (fldOffset=0x0)" P-INDEP
;* V46 tmp38 [V46 ] ( 0, 0 ) ref -> zero-ref "field V27.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
; V47 tmp39 [V47 ] ( 3, 48 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-; V48 tmp40 [V48,T41] ( 2, 32 ) ref -> rsi "argument with side effect"
-; V49 tmp41 [V49,T31] ( 3, 48 ) byref -> r13 "BlockOp address local"
-; V50 cse0 [V50,T48] ( 2, 9 ) long -> rbp hoist "CSE - moderate"
-; V51 cse1 [V51,T08] ( 3,1152 ) int -> rcx "CSE - aggressive"
-; V52 cse2 [V52,T38] ( 4, 32 ) int -> rdx "CSE - moderate"
-; V53 cse3 [V53,T47] ( 4, 12.88) long -> rdi hoist "CSE - moderate"
-; V54 rat0 [V54,T50] ( 3, 4.72) long -> rcx "Spilling to split statement for tree"
-; V55 rat1 [V55,T52] ( 3, 4 ) long -> rbp "runtime lookup"
-; V56 rat2 [V56,T49] ( 3, 5.60) long -> rdx "spilling expr"
-; V57 rat3 [V57,T51] ( 3, 4.48) long -> rbp "fgMakeTemp is creating a new local variable"
-; V58 rat4 [V58,T33] ( 3, 44.80) long -> rcx "spilling expr"
-; V59 rat5 [V59,T37] ( 3, 35.84) long -> r11 "fgMakeTemp is creating a new local variable"
-; V60 rat6 [V60,T14] ( 2, 512 ) long -> rcx "Spilling to split statement for tree"
-;* V61 rat7 [V61,T19] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V62 rat8 [V62,T11] ( 3, 716.80) long -> rcx "spilling expr"
-; V63 rat9 [V63,T16] ( 2, 409.60) long -> rcx "fgMakeTemp is creating a new local variable"
-; V64 rat10 [V64,T02] ( 3,2416.64) long -> rcx "Spilling to split statement for tree"
-; V65 rat11 [V65,T01] ( 3,2867.20) long -> rdx "spilling expr"
-; V66 rat12 [V66,T03] ( 3,2293.76) long -> r11 "fgMakeTemp is creating a new local variable"
-; V67 rat13 [V67,T23] ( 3, 151.04) long -> rcx "Spilling to split statement for tree"
-; V68 rat14 [V68,T25] ( 3, 128 ) long -> rdx "runtime lookup"
-; V69 rat15 [V69,T21] ( 3, 179.20) long -> rdx "spilling expr"
-; V70 rat16 [V70,T24] ( 3, 143.36) long -> rdx "fgMakeTemp is creating a new local variable"
+; V48 tmp40 [V48,T37] ( 2, 32 ) ref -> rbx "argument with side effect"
+; V49 tmp41 [V49,T27] ( 3, 48 ) byref -> r13 "BlockOp address local"
+; V50 cse0 [V50,T44] ( 2, 9 ) long -> rbp hoist "CSE - moderate"
+; V51 cse1 [V51,T07] ( 3,1152 ) int -> rcx "CSE - aggressive"
+; V52 cse2 [V52,T34] ( 4, 32 ) int -> rdx "CSE - moderate"
+; V53 cse3 [V53,T43] ( 4, 12.88) long -> rdi "CSE - moderate"
+; V54 rat0 [V54,T46] ( 3, 4.72) long -> rcx "Spilling to split statement for tree"
+; V55 rat1 [V55,T48] ( 3, 4 ) long -> rbp "runtime lookup"
+; V56 rat2 [V56,T45] ( 3, 5.60) long -> rdx "spilling expr"
+; V57 rat3 [V57,T47] ( 3, 4.48) long -> rbp "fgMakeTemp is creating a new local variable"
+; V58 rat4 [V58,T29] ( 3, 44.80) long -> rcx "spilling expr"
+; V59 rat5 [V59,T33] ( 3, 35.84) long -> r11 "fgMakeTemp is creating a new local variable"
+; V60 rat6 [V60,T02] ( 3,2416.64) long -> rcx "Spilling to split statement for tree"
+; V61 rat7 [V61,T01] ( 3,2867.20) long -> rdx "spilling expr"
+; V62 rat8 [V62,T03] ( 3,2293.76) long -> r11 "fgMakeTemp is creating a new local variable"
+; V63 rat9 [V63,T19] ( 3, 151.04) long -> rcx "Spilling to split statement for tree"
+; V64 rat10 [V64,T21] ( 3, 128 ) long -> rdx "runtime lookup"
+; V65 rat11 [V65,T17] ( 3, 179.20) long -> rdx "spilling expr"
+; V66 rat12 [V66,T20] ( 3, 143.36) long -> rdx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 112
@@ -98,13 +94,13 @@ G_M1799_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
vmovdqa xmmword ptr [rsp+0x50], xmm4
mov qword ptr [rsp+0x60], rax
mov qword ptr [rsp+0x68], rcx
- mov rbx, rcx
- ; gcrRegs +[rbx]
- mov rsi, rdx
+ mov rsi, rcx
; gcrRegs +[rsi]
+ mov rbx, rdx
+ ; gcrRegs +[rbx]
;; size=53 bbWeight=1 PerfScore 15.33
G_M1799_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx]
+ mov rdi, qword ptr [rsi]
mov rcx, rdi
mov rdx, qword ptr [rcx+0x38]
mov rdx, qword ptr [rdx]
@@ -126,12 +122,12 @@ G_M1799_IG05: ; bbWeight=0.36, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {
mov rbp, rax
;; size=18 bbWeight=0.36 PerfScore 0.54
G_M1799_IG06: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov edx, dword ptr [rbx+0x28]
- mov dword ptr [rsi+0x18], edx
- mov dword ptr [rsi+0x1C], edx
+ mov edx, dword ptr [rsi+0x28]
+ mov dword ptr [rbx+0x18], edx
+ mov dword ptr [rbx+0x1C], edx
inc edx
- mov dword ptr [rbx+0x28], edx
- mov r14, gword ptr [rbx+0x08]
+ mov dword ptr [rsi+0x28], edx
+ mov r14, gword ptr [rsi+0x08]
; gcrRegs +[r14]
mov r15d, dword ptr [r14+0x10]
mov rcx, gword ptr [r14+0x08]
@@ -141,7 +137,7 @@ G_M1799_IG06: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
;; size=32 bbWeight=8 PerfScore 122.00
G_M1799_IG07: ; bbWeight=2, gcrefRegs=404A {rcx rbx rsi r14}, byrefRegs=0000 {}, byref, isz
movsxd rdx, r15d
- mov r8, rsi
+ mov r8, rbx
; gcrRegs +[r8]
call CORINFO_HELP_ARRADDR_ST
; gcrRegs -[rcx r8]
@@ -154,16 +150,16 @@ G_M1799_IG07: ; bbWeight=2, gcrefRegs=404A {rcx rbx rsi r14}, byrefRegs=0
G_M1799_IG08: ; bbWeight=2, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
mov rcx, r14
; gcrRegs +[rcx]
- mov rdx, rsi
+ mov rdx, rbx
; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rcx rdx r14]
; gcr arg pop 0
;; size=12 bbWeight=2 PerfScore 7.00
G_M1799_IG09: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov byte ptr [rsi+0x22], 1
+ mov byte ptr [rbx+0x22], 1
mov r11, rbp
- mov rcx, gword ptr [rsi+0x10]
+ mov rcx, gword ptr [rbx+0x10]
; gcrRegs +[rcx]
call [r11]
; gcrRegs -[rcx] +[rax]
@@ -173,17 +169,17 @@ G_M1799_IG09: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
test r14, r14
jne SHORT G_M1799_IG15
;; size=22 bbWeight=8 PerfScore 62.00
-G_M1799_IG10: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax rsi r14]
- mov rcx, gword ptr [rbx+0x20]
+G_M1799_IG10: ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax rbx r14]
+ mov rcx, gword ptr [rsi+0x20]
; gcrRegs +[rcx]
lea rdx, [rsp+0x58]
cmp dword ptr [rcx], ecx
call [System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]:Pop():ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]:this]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rsi, gword ptr [rsp+0x58]
- ; gcrRegs +[rsi]
+ mov rbx, gword ptr [rsp+0x58]
+ ; gcrRegs +[rbx]
mov r14, gword ptr [rsp+0x60]
; gcrRegs +[r14]
mov rcx, qword ptr [rdi+0x38]
@@ -197,7 +193,7 @@ G_M1799_IG11: ; bbWeight=6.40, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=00
je SHORT G_M1799_IG20
;; size=9 bbWeight=6.40 PerfScore 20.80
G_M1799_IG12: ; bbWeight=8, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
- mov r15d, dword ptr [rsi+0x1C]
+ mov r15d, dword ptr [rbx+0x1C]
lea rdx, [rsp+0x38]
mov rcx, r14
; gcrRegs +[rcx]
@@ -215,7 +211,7 @@ G_M1799_IG13: ; bbWeight=5.71, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=00
mov ecx, r15d
;; size=3 bbWeight=5.71 PerfScore 1.43
G_M1799_IG14: ; bbWeight=8, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
- mov dword ptr [rsi+0x1C], ecx
+ mov dword ptr [rbx+0x1C], ecx
;; size=3 bbWeight=8 PerfScore 8.00
G_M1799_IG15: ; bbWeight=512, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
mov rcx, r14
@@ -225,23 +221,23 @@ G_M1799_IG15: ; bbWeight=512, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=000
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- je G_M1799_IG31
+ je G_M1799_IG28
;; size=24 bbWeight=512 PerfScore 2432.00
-G_M1799_IG16: ; bbWeight=128, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx]
- mov rcx, qword ptr [rcx+0x38]
- mov rcx, qword ptr [rcx]
- cmp qword ptr [rcx+0x08], 48
+G_M1799_IG16: ; bbWeight=512, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
+ mov rcx, qword ptr [rsi]
+ mov rdx, qword ptr [rcx+0x38]
+ mov rdx, qword ptr [rdx]
+ cmp qword ptr [rdx+0x08], 48
jle SHORT G_M1799_IG21
- ;; size=17 bbWeight=128 PerfScore 1280.00
-G_M1799_IG17: ; bbWeight=102.40, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rcx+0x30]
...
+0 (0.00%) : 476004.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)
@@ -23,11 +23,11 @@
; V12 loc9 [V12,T14] ( 4, 14 ) byref -> [rsp+0x28] spill-single-def
; V13 loc10 [V13,T17] ( 6, 13.50) int -> r12
; V14 loc11 [V14,T15] ( 4, 14 ) byref -> [rsp+0x20] spill-single-def
-; V15 loc12 [V15,T66] ( 3, 1.50) int -> rbp single-def
+; V15 loc12 [V15,T62] ( 3, 1.50) int -> rbp single-def
; V16 OutArgs [V16 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp2 [V18,T31] ( 4, 3 ) long -> r11 "VirtualCall with runtime lookup"
-; V19 tmp3 [V19,T67] ( 3, 1.50) int -> r15
+; V19 tmp3 [V19,T63] ( 3, 1.50) int -> r15
;* V20 tmp4 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -35,8 +35,8 @@
;* V24 tmp8 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp10 [V26,T28] ( 4, 4 ) byref -> rax single-def "dup spill"
-; V27 tmp11 [V27,T61] ( 3, 2 ) long -> rdx "spilling helperCall"
-; V28 tmp12 [V28,T68] ( 3, 1.50) int -> r15
+; V27 tmp11 [V27,T57] ( 3, 2 ) long -> rdx "spilling helperCall"
+; V28 tmp12 [V28,T64] ( 3, 1.50) int -> r15
;* V29 tmp13 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp14 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -48,9 +48,9 @@
; V37 tmp21 [V37,T32] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
; V38 tmp22 [V38,T33] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp24 [V40,T80] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp24 [V40,T74] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp26 [V42,T81] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp26 [V42,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V43 tmp27 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -58,9 +58,9 @@
; V47 tmp31 [V47,T34] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
; V48 tmp32 [V48,T35] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V50 tmp34 [V50,T82] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V50 tmp34 [V50,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V52 tmp36 [V52,T83] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V52 tmp36 [V52,T77] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -68,62 +68,56 @@
; V57 tmp41 [V57,T36] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
; V58 tmp42 [V58,T37] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V60 tmp44 [V60,T84] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V60 tmp44 [V60,T78] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V62 tmp46 [V62,T85] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V62 tmp46 [V62,T79] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V63 tmp47 [V63 ] ( 6, 10.50) ref -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64 ] ( 9, 19 ) int -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V65 tmp49 [V65,T71] ( 2, 1 ) ref -> rcx single-def "field V33._items (fldOffset=0x0)" P-INDEP
-; V66 tmp50 [V66,T74] ( 2, 1 ) int -> rdx single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V67 tmp51 [V67,T72] ( 2, 1 ) ref -> rcx single-def "field V43._items (fldOffset=0x0)" P-INDEP
-; V68 tmp52 [V68,T75] ( 2, 1 ) int -> rdx single-def "field V43._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T73] ( 2, 1 ) ref -> rcx single-def "field V53._items (fldOffset=0x0)" P-INDEP
-; V70 tmp54 [V70,T76] ( 2, 1 ) int -> rdx single-def "field V53._length (fldOffset=0x8)" P-INDEP
+; V65 tmp49 [V65,T67] ( 2, 1 ) ref -> rcx single-def "field V33._items (fldOffset=0x0)" P-INDEP
+; V66 tmp50 [V66,T70] ( 2, 1 ) int -> rdx single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V67 tmp51 [V67,T68] ( 2, 1 ) ref -> rcx single-def "field V43._items (fldOffset=0x0)" P-INDEP
+; V68 tmp52 [V68,T71] ( 2, 1 ) int -> rdx single-def "field V43._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T69] ( 2, 1 ) ref -> rcx single-def "field V53._items (fldOffset=0x0)" P-INDEP
+; V70 tmp54 [V70,T72] ( 2, 1 ) int -> rdx single-def "field V53._length (fldOffset=0x8)" P-INDEP
; V71 tmp55 [V71,T41] ( 3, 3 ) int -> rax "index expr"
; V72 tmp56 [V72,T42] ( 3, 3 ) int -> rdx "index expr"
; V73 tmp57 [V73,T43] ( 3, 3 ) int -> rax "index expr"
; V74 tmp58 [V74,T44] ( 3, 3 ) int -> rdx "index expr"
; V75 tmp59 [V75,T12] ( 2, 16 ) long -> rdx "argument with side effect"
; V76 tmp60 [V76,T13] ( 2, 16 ) long -> rdx "argument with side effect"
-; V77 tmp61 [V77,T64] ( 2, 2 ) int -> rdx "argument with side effect"
+; V77 tmp61 [V77,T60] ( 2, 2 ) int -> rdx "argument with side effect"
; V78 tmp62 [V78,T45] ( 3, 3 ) int -> rax "index expr"
; V79 tmp63 [V79,T46] ( 3, 3 ) int -> rdx "index expr"
-; V80 tmp64 [V80,T65] ( 2, 2 ) long -> rdx "argument with side effect"
-; V81 cse0 [V81,T69] ( 3, 1.50) int -> rcx "CSE - conservative"
-; V82 cse1 [V82,T70] ( 3, 1.50) int -> r12 "CSE - conservative"
-; V83 rat0 [V83,T54] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
-; V84 rat1 [V84,T62] ( 3, 2 ) long -> rdx "runtime lookup"
+; V80 tmp64 [V80,T61] ( 2, 2 ) long -> rdx "argument with side effect"
+; V81 cse0 [V81,T65] ( 3, 1.50) int -> rcx "CSE - conservative"
+; V82 cse1 [V82,T66] ( 3, 1.50) int -> r12 "CSE - conservative"
+; V83 rat0 [V83,T52] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V84 rat1 [V84,T58] ( 3, 2 ) long -> rdx "runtime lookup"
; V85 rat2 [V85,T47] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V86 rat3 [V86,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V87 rat4 [V87,T77] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V88 rat5 [V88,T48] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V89 rat6 [V89,T06] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
-; V90 rat7 [V90,T10] ( 3, 16 ) long -> rdx "runtime lookup"
-; V91 rat8 [V91,T02] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V92 rat9 [V92,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V93 rat10 [V93,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V94 rat11 [V94,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V95 rat12 [V95,T56] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
-; V96 rat13 [V96,T49] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V97 rat14 [V97,T57] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V98 rat15 [V98,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V99 rat16 [V99,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V100 rat17 [V100,T08] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
-; V101 rat18 [V101,T11] ( 3, 16 ) long -> rdx "runtime lookup"
-; V102 rat19 [V102,T04] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
-; V103 rat20 [V103,T22] ( 3, 8.80) long -> rcx "Spilling to split statement for tree"
-; V104 rat21 [V104,T19] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V105 rat22 [V105,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V106 rat23 [V106,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V107 rat24 [V107,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V108 rat25 [V108,T58] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V86 rat3 [V86,T06] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
+; V87 rat4 [V87,T10] ( 3, 16 ) long -> rdx "runtime lookup"
+; V88 rat5 [V88,T02] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V89 rat6 [V89,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V90 rat7 [V90,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V91 rat8 [V91,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V92 rat9 [V92,T53] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V93 rat10 [V93,T48] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
+; V94 rat11 [V94,T08] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
+; V95 rat12 [V95,T11] ( 3, 16 ) long -> rdx "runtime lookup"
+; V96 rat13 [V96,T04] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
+; V97 rat14 [V97,T22] ( 3, 8.80) long -> rcx "Spilling to split statement for tree"
+; V98 rat15 [V98,T19] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
+;* V99 rat16 [V99,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V100 rat17 [V100,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V101 rat18 [V101,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V102 rat19 [V102,T54] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V103 rat20 [V103,T49] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V104 rat21 [V104,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V105 rat22 [V105,T73] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V106 rat23 [V106,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V107 rat24 [V107,T56] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V108 rat25 [V108,T59] ( 3, 2 ) long -> rdx "runtime lookup"
; V109 rat26 [V109,T51] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V110 rat27 [V110,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V111 rat28 [V111,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V112 rat29 [V112,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V113 rat30 [V113,T60] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
-; V114 rat31 [V114,T63] ( 3, 2 ) long -> rdx "runtime lookup"
-; V115 rat32 [V115,T53] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 72
libraries.crossgen2.windows.x64.checked.mch
-19 (-5.62%) : 14105.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)
@@ -12,36 +12,35 @@
; V01 arg0 [V01,T04] ( 5, 7 ) ref -> rsi class-hnd single-def <System.__Canon[]>
; V02 arg1 [V02,T03] ( 10, 8.04) ref -> rbx class-hnd single-def <System.__Canon[]>
; V03 loc0 [V03,T00] ( 15, 21.04) int -> rbp
-; V04 loc1 [V04 ] ( 10, 14 ) ref -> [rsp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
+; V04 loc1 [V04 ] ( 10, 14 ) ref -> [rsp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T01] ( 6, 20 ) byref -> r15 "impAppendStmt"
; V07 tmp2 [V07,T05] ( 6, 8 ) byref -> r13
; V08 tmp3 [V08,T02] ( 6, 12 ) long -> rax "VirtualCall with runtime lookup"
-; V09 tmp4 [V09,T09] ( 4, 4 ) int -> r12
+; V09 tmp4 [V09,T09] ( 2, 3.96) int -> rcx
; V10 tmp5 [V10,T06] ( 4, 8 ) ref -> rcx "argument with side effect"
; V11 cse0 [V11,T08] ( 5, 7 ) int -> r14 "CSE - aggressive"
;
-; Lcl frame size = 56
+; Lcl frame size = 48
G_M22994_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
push r14
push r13
- push r12
push rdi
push rsi
push rbp
push rbx
- sub rsp, 56
+ sub rsp, 48
xor eax, eax
- mov qword ptr [rsp+0x28], rax
- mov qword ptr [rsp+0x30], rcx
+ mov qword ptr [rsp+0x20], rax
+ mov qword ptr [rsp+0x28], rcx
mov rdi, rcx
mov rsi, rdx
; gcrRegs +[rsi]
mov rbx, r8
; gcrRegs +[rbx]
- ;; size=37 bbWeight=1 PerfScore 11.25
+ ;; size=35 bbWeight=1 PerfScore 10.25
G_M22994_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
xor ebp, ebp
mov r14d, dword ptr [rsi+0x08]
@@ -58,10 +57,10 @@ G_M22994_IG03: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; byrRegs +[r15]
xor rcx, rcx
; gcrRegs +[rcx]
- mov gword ptr [rsp+0x28], rcx
+ mov gword ptr [rsp+0x20], rcx
mov r13, r15
; byrRegs +[r13]
- cmp gword ptr [rsp+0x28], 0
+ cmp gword ptr [rsp+0x20], 0
jne SHORT G_M22994_IG06
;; size=25 bbWeight=3.96 PerfScore 22.77
G_M22994_IG04: ; bbWeight=1.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=8000 {r15}, byref, isz
@@ -69,10 +68,10 @@ G_M22994_IG04: ; bbWeight=1.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=8000
; byrRegs -[r13]
mov rcx, gword ptr [r15]
; gcrRegs +[rcx]
- mov gword ptr [rsp+0x28], rcx
- lea r13, bword ptr [rsp+0x28]
+ mov gword ptr [rsp+0x20], rcx
+ lea r13, bword ptr [rsp+0x20]
; byrRegs +[r13]
- cmp gword ptr [rsp+0x28], 0
+ cmp gword ptr [rsp+0x20], 0
jne SHORT G_M22994_IG06
mov ecx, ebp
; gcrRegs -[rcx]
@@ -100,12 +99,12 @@ G_M22994_IG06: ; bbWeight=1.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=2000
; gcrRegs -[rcx rdx]
; byrRegs -[r13]
; gcr arg pop 0
- xor r12d, r12d
+ xor ecx, ecx
test eax, eax
- sete r12b
- test r12d, r12d
+ sete cl
+ test ecx, ecx
jne G_M22994_IG16
- ;; size=43 bbWeight=1.98 PerfScore 26.73
+ ;; size=40 bbWeight=1.98 PerfScore 26.73
G_M22994_IG07: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
inc ebp
cmp r14d, ebp
@@ -122,10 +121,10 @@ G_M22994_IG09: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; byrRegs +[r15]
xor rcx, rcx
; gcrRegs +[rcx]
- mov gword ptr [rsp+0x28], rcx
+ mov gword ptr [rsp+0x20], rcx
mov r13, r15
; byrRegs +[r13]
- cmp gword ptr [rsp+0x28], 0
+ cmp gword ptr [rsp+0x20], 0
jne SHORT G_M22994_IG12
;; size=25 bbWeight=0.04 PerfScore 0.23
G_M22994_IG10: ; bbWeight=0.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=8000 {r15}, byref, isz
@@ -133,10 +132,10 @@ G_M22994_IG10: ; bbWeight=0.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=8000
; byrRegs -[r13]
mov rcx, gword ptr [r15]
; gcrRegs +[rcx]
- mov gword ptr [rsp+0x28], rcx
- lea r13, bword ptr [rsp+0x28]
+ mov gword ptr [rsp+0x20], rcx
+ lea r13, bword ptr [rsp+0x20]
; byrRegs +[r13]
- cmp gword ptr [rsp+0x28], 0
+ cmp gword ptr [rsp+0x20], 0
jne SHORT G_M22994_IG12
cmp ebp, dword ptr [rbx+0x08]
jae SHORT G_M22994_IG18
@@ -168,12 +167,9 @@ G_M22994_IG12: ; bbWeight=0.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=2000
; gcrRegs -[rcx rdx]
; byrRegs -[r13]
; gcr arg pop 0
- xor r12d, r12d
test eax, eax
- sete r12b
- test r12d, r12d
- jne SHORT G_M22994_IG16
- ;; size=44 bbWeight=0.02 PerfScore 0.35
+ je SHORT G_M22994_IG16
+ ;; size=34 bbWeight=0.02 PerfScore 0.32
G_M22994_IG13: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
inc ebp
cmp r14d, ebp
@@ -184,39 +180,37 @@ G_M22994_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M22994_IG15: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 56
+ add rsp, 48
pop rbx
pop rbp
pop rsi
pop rdi
- pop r12
pop r13
pop r14
pop r15
ret
- ;; size=17 bbWeight=0.50 PerfScore 2.62
+ ;; size=15 bbWeight=0.50 PerfScore 2.38
G_M22994_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M22994_IG17: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 56
+ add rsp, 48
pop rbx
pop rbp
pop rsi
pop rdi
- pop r12
pop r13
pop r14
pop r15
ret
- ;; size=17 bbWeight=0.50 PerfScore 2.62
+ ;; size=15 bbWeight=0.50 PerfScore 2.38
G_M22994_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 338, prolog size 37, PerfScore 106.17, instruction count 114, allocated bytes for code 338 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 319, prolog size 35, PerfScore 104.64, instruction count 108, allocated bytes for code 319 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -224,17 +218,16 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x10
- CountOfUnwindCodes: 9
+ SizeOfProlog : 0x0E
+ CountOfUnwindCodes: 8
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
- CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
+ CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
-25 (-2.23%) : 97212.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary
2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
@@ -12,7 +12,7 @@
; V00 arg0 [V00,T18] ( 5, 5 ) ref -> rcx class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax>
; V01 arg1 [V01,T09] ( 6, 11 ) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]>
; V02 arg2 [V02,T12] ( 4, 6 ) ref -> rsi class-hnd single-def <System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]>
-; V03 loc0 [V03 ] ( 5, 7 ) struct (24) [rsp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
+; V03 loc0 [V03 ] ( 5, 7 ) struct (24) [rsp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
; V04 loc1 [V04,T10] ( 7, 10.04) ref -> rbp class-hnd exact single-def <<unknown class>>
; V05 loc2 [V05,T19] ( 5, 7 ) int -> r14 single-def
; V06 loc3 [V06,T02] ( 16, 25.04) int -> r15
@@ -20,13 +20,13 @@
; V08 loc5 [V08,T07] ( 10, 16 ) ref -> r13 class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
;* V09 loc6 [V09 ] ( 0, 0 ) ushort -> zero-ref
; V10 loc7 [V10,T11] ( 8, 8 ) ref -> r12 class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax>
-; V11 loc8 [V11 ] ( 4, 4 ) struct (24) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
+; V11 loc8 [V11 ] ( 4, 4 ) struct (24) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
; V12 loc9 [V12,T21] ( 3, 6 ) int -> rsi single-def
; V13 loc10 [V13,T03] ( 7, 21 ) int -> rdi
; V14 loc11 [V14,T01] ( 6, 72 ) ref -> r14 class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbol>
; V15 loc12 [V15,T00] ( 6, 86 ) int -> rax
; V16 loc13 [V16,T22] ( 2, 4 ) ref -> r14 class-hnd <<unknown class>>
-; V17 loc14 [V17 ] ( 4, 8 ) struct ( 8) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]>
+; V17 loc14 [V17 ] ( 4, 8 ) struct ( 8) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]>
; V18 loc15 [V18,T23] ( 2, 4 ) ref -> r14 class-hnd <<unknown class>>
; V19 OutArgs [V19 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V20 tmp1 [V20,T04] ( 10, 20 ) ref -> r12 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
@@ -35,7 +35,7 @@
;* V23 tmp4 [V23 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
; V24 tmp5 [V24,T13] ( 4, 8 ) ref -> rax class-hnd "Inlining Arg" <System.String>
;* V25 tmp6 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.Symbols.AliasSymbol>
-; V26 tmp7 [V26 ] ( 4, 8 ) ref -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V17.array (fldOffset=0x0)" P-DEP
+; V26 tmp7 [V26 ] ( 4, 8 ) ref -> [rsp+0x20] do-not-enreg[X] addr-exposed "field V17.array (fldOffset=0x0)" P-DEP
; V27 tmp8 [V27,T24] ( 2, 4 ) ref -> rdx "field V22.array (fldOffset=0x0)" P-INDEP
; V28 tmp9 [V28,T25] ( 2, 4 ) ref -> rdx "field V23.array (fldOffset=0x0)" P-INDEP
; V29 tmp10 [V29,T26] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
@@ -45,9 +45,8 @@
; V33 tmp14 [V33,T16] ( 2, 8 ) ref -> r8 "argument with side effect"
; V34 tmp15 [V34,T17] ( 2, 8 ) ref -> r8 "argument with side effect"
; V35 cse0 [V35,T20] ( 5, 7 ) long -> rdi "CSE - moderate"
-; TEMP_01 byref -> [rsp+0x60]
;
-; Lcl frame size = 104
+; Lcl frame size = 88
G_M1087_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -58,19 +57,18 @@ G_M1087_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 104
- xor eax, eax
- mov qword ptr [rsp+0x28], rax
+ sub rsp, 88
xorps xmm4, xmm4
+ movaps xmmword ptr [rsp+0x20], xmm4
movaps xmmword ptr [rsp+0x30], xmm4
movaps xmmword ptr [rsp+0x40], xmm4
- movaps xmmword ptr [rsp+0x50], xmm4
- mov qword ptr [rsp+0x60], rax
+ xor eax, eax
+ mov qword ptr [rsp+0x50], rax
mov rbx, rdx
; gcrRegs +[rbx]
mov rsi, r8
; gcrRegs +[rsi]
- ;; size=52 bbWeight=1 PerfScore 17.33
+ ;; size=47 bbWeight=1 PerfScore 16.33
G_M1087_IG02: ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
cmp byte ptr [rcx], cl
@@ -87,12 +85,12 @@ G_M1087_IG02: ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
- lea rdx, [rsp+0x48]
+ lea rdx, [rsp+0x40]
cmp dword ptr [rcx], ecx
call [Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax:get_Arguments():Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]:this]
; gcrRegs -[rax rcx]
; gcr arg pop 0
- lea rcx, [rsp+0x48]
+ lea rcx, [rsp+0x40]
mov rdi, qword ptr [(reloc)] ; Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]
mov rdx, rdi
call [<unknown method>]
@@ -103,7 +101,7 @@ G_M1087_IG02: ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000
; gcr arg pop 0
mov rbp, rax
; gcrRegs +[rbp]
- lea rcx, [rsp+0x48]
+ lea rcx, [rsp+0x40]
mov rdx, rdi
call [<unknown method>]
; gcrRegs -[rax]
@@ -116,7 +114,7 @@ G_M1087_IG02: ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000
jle G_M1087_IG08
;; size=120 bbWeight=1 PerfScore 37.25
G_M1087_IG03: ; bbWeight=3.96, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- lea rcx, [rsp+0x48]
+ lea rcx, [rsp+0x40]
mov rdx, rdi
mov r8d, r15d
call [<unknown method>]
@@ -149,7 +147,7 @@ G_M1087_IG04: ; bbWeight=1.98, gcrefRegs=2068 {rbx rbp rsi r13}, byrefReg
; gcr arg pop 0
mov r12, rax
; gcrRegs +[r12]
- lea rdx, [rsp+0x30]
+ lea rdx, [rsp+0x28]
mov rcx, r12
; gcrRegs +[rcx]
cmp dword ptr [rcx], ecx
@@ -161,7 +159,7 @@ G_M1087_IG04: ; bbWeight=1.98, gcrefRegs=2068 {rbx rbp rsi r13}, byrefReg
; gcr arg pop 0
mov r13, rax
; gcrRegs +[r13]
- lea rcx, [rsp+0x30]
+ lea rcx, [rsp+0x28]
call [<unknown method>]
; gcr arg pop 0
mov dword ptr [r13+0x38], r15d
@@ -265,7 +263,7 @@ G_M1087_IG07: ; bbWeight=1, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {},
;; size=5 bbWeight=1 PerfScore 2.00
G_M1087_IG08: ; bbWeight=0.04, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
- lea rcx, [rsp+0x48]
+ lea rcx, [rsp+0x40]
mov rdx, rdi
mov r8d, r15d
call [<unknown method>]
@@ -298,7 +296,7 @@ G_M1087_IG09: ; bbWeight=0.02, gcrefRegs=2068 {rbx rbp rsi r13}, byrefReg
; gcr arg pop 0
mov r12, rax
; gcrRegs +[r12]
- lea rdx, [rsp+0x30]
+ lea rdx, [rsp+0x28]
mov rcx, r12
; gcrRegs +[rcx]
cmp dword ptr [rcx], ecx
@@ -310,7 +308,7 @@ G_M1087_IG09: ; bbWeight=0.02, gcrefRegs=2068 {rbx rbp rsi r13}, byrefReg
; gcr arg pop 0
mov r13, rax
; gcrRegs +[r13]
- lea rcx, [rsp+0x30]
+ lea rcx, [rsp+0x28]
call [<unknown method>]
; gcr arg pop 0
mov dword ptr [r13+0x38], r15d
@@ -321,12 +319,8 @@ G_M1087_IG09: ; bbWeight=0.02, gcrefRegs=2068 {rbx rbp rsi r13}, byrefReg
call [CORINFO_HELP_ASSIGN_REF]
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- lea rcx, bword ptr [r13+0x30]
- ; byrRegs +[rcx]
- mov bword ptr [rsp+0x60], rcx
mov rcx, r12
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
call [<unknown method>]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
@@ -339,7 +333,7 @@ G_M1087_IG09: ; bbWeight=0.02, gcrefRegs=2068 {rbx rbp rsi r13}, byrefReg
call [r11]<unknown method>
; gcrRegs -[rcx rdx r12]
; gcr arg pop 0
- mov rcx, bword ptr [rsp+0x60]
+ lea rcx, bword ptr [r13+0x30]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
@@ -347,7 +341,7 @@ G_M1087_IG09: ; bbWeight=0.02, gcrefRegs=2068 {rbx rbp rsi r13}, byrefReg
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
jmp SHORT G_M1087_IG11
- ;; size=117 bbWeight=0.02 PerfScore 0.80
+ ;; size=107 bbWeight=0.02 PerfScore 0.76
G_M1087_IG10: ; bbWeight=0.02, gcrefRegs=2068 {rbx rbp rsi r13}, byrefRegs=0000 {}, byref
call [CORINFO_HELP_READYTORUN_NEW]
; gcrRegs +[rax]
@@ -363,12 +357,8 @@ G_M1087_IG10: ; bbWeight=0.02, gcrefRegs=2068 {rbx rbp rsi r13}, byrefReg
call [CORINFO_HELP_ASSIGN_REF]
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- lea rcx, bword ptr [r12+0x30]
- ; byrRegs +[rcx]
- mov bword ptr [rsp+0x60], rcx
mov rcx, r13
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
call [<unknown method>]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
@@ -381,7 +371,7 @@ G_M1087_IG10: ; bbWeight=0.02, gcrefRegs=2068 {rbx rbp rsi r13}, byrefReg
call [r11]<unknown method>
; gcrRegs -[rcx rdx r13]
; gcr arg pop 0
- mov rcx, bword ptr [rsp+0x60]
+ lea rcx, bword ptr [r12+0x30]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
@@ -390,7 +380,7 @@ G_M1087_IG10: ; bbWeight=0.02, gcrefRegs=2068 {rbx rbp rsi r13}, byrefReg
; byrRegs -[rcx]
mov r13, r12
; gcrRegs +[r13]
- ;; size=89 bbWeight=0.02 PerfScore 0.56
+ ;; size=79 bbWeight=0.02 PerfScore 0.52
G_M1087_IG11: ; bbWeight=0.04, gcrefRegs=2068 {rbx rbp rsi r13}, byrefRegs=0000 {}, byref
; gcrRegs -[r12]
cmp r15d, dword ptr [rbp+0x08]
@@ -494,8 +484,8 @@ G_M1087_IG18: ; bbWeight=2, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000
call [<unknown method>]
; gcrRegs -[rdx]
; gcr arg pop 0
- mov gword ptr [rsp+0x28], rax
- lea rcx, [rsp+0x28]
+ mov gword ptr [rsp+0x20], rax
+ lea rcx, [rsp+0x20]
mov rdx, qword ptr [(reloc)] ; <unknown method>
call [<unknown method>]
; gcr arg pop 0
@@ -534,8 +524,8 @@ G_M1087_IG19: ; bbWeight=2, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000
call [<unknown method>]
; gcrRegs -[rdx]
; gcr arg pop 0
- mov gword ptr [rsp+0x28], rax
- lea rcx, [rsp+0x28]
+ mov gword ptr [rsp+0x20], rax
+ lea rcx, [rsp+0x20]
mov rdx, qword ptr [(reloc)] ; <unknown method>
call [<unknown method>]
; gcr arg pop 0
@@ -565,7 +555,7 @@ G_M1087_IG20: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {},
;; size=10 bbWeight=4 PerfScore 6.00
G_M1087_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx rbp]
- add rsp, 104
+ add rsp, 88
pop rbx
pop rbp
pop rsi
@@ -582,7 +572,7 @@ G_M1087_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1119, prolog size 46, PerfScore 877.82, instruction count 284, allocated bytes for code 1119 (MethodHash=9a81fbc0) for method Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
+; Total bytes of code 1094, prolog size 41, PerfScore 876.74, instruction count 279, allocated bytes for code 1094 (MethodHash=9a81fbc0) for method Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
; ============================================================
Unwind Info:
...
-23 (-1.53%) : 134353.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
@@ -55,9 +55,8 @@
; V43 cse3 [V43,T23] ( 3, 7.92) ref -> rax "CSE - moderate"
; V44 cse4 [V44,T28] ( 4, 3 ) ref -> rcx "CSE - moderate"
; V45 cse5 [V45,T25] ( 6, 6 ) int -> r14 "CSE - moderate"
-; TEMP_01 byref -> [rbp-0xA8]
;
-; Lcl frame size = 184
+; Lcl frame size = 168
G_M44608_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -68,15 +67,13 @@ G_M44608_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rdi
push rsi
push rbx
- sub rsp, 184
- lea rbp, [rsp+0xF0]
- xor eax, eax
- mov qword ptr [rbp-0xA8], rax
+ sub rsp, 168
+ lea rbp, [rsp+0xE0]
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, rdx
; gcrRegs +[rsi]
- ;; size=42 bbWeight=1 PerfScore 10.50
+ ;; size=33 bbWeight=1 PerfScore 9.25
G_M44608_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
call [CORINFO_HELP_READYTORUN_NEW]
; gcrRegs +[rax]
@@ -101,7 +98,7 @@ G_M44608_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M44608_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 184
+ add rsp, 168
pop rbx
pop rsi
pop rdi
@@ -483,22 +480,15 @@ G_M44608_IG17: ; bbWeight=0.02, gcVars=0000000080000000 {V42}, gcrefRegs=
; byrRegs -[rcx]
mov rax, gword ptr [rbp-0x48]
; gcrRegs +[rax]
- lea rcx, bword ptr [rax+0x08]
- ; byrRegs +[rcx]
- mov bword ptr [rbp-0xA8], rcx
- mov gword ptr [rbp-0x48], rax
- mov r11, gword ptr [rax+0x10]
- ; gcrRegs +[r11]
- mov r11, gword ptr [r11+0x10]
- mov r11, gword ptr [r11+0x10]
- mov gword ptr [rbp-0x88], r11
- ; GC ptr vars +{V39}
- mov r11, gword ptr [rbp-0xA0]
- mov rcx, gword ptr [r11+0x50]
+ mov rcx, gword ptr [rax+0x10]
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
+ mov rcx, gword ptr [rcx+0x10]
+ mov rcx, gword ptr [rcx+0x10]
+ mov gword ptr [rbp-0x88], rcx
+ ; GC ptr vars +{V39}
+ mov rcx, gword ptr [rbp-0xA0]
+ mov rcx, gword ptr [rcx+0x50]
lea r11, [(reloc)]
- ; gcrRegs -[r11]
cmp dword ptr [rcx], ecx
; GC ptr vars -{V42}
call [r11]<unknown method>
@@ -512,12 +502,14 @@ G_M44608_IG17: ; bbWeight=0.02, gcVars=0000000080000000 {V42}, gcrefRegs=
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- mov rcx, bword ptr [rbp-0xA8]
+ mov r8, gword ptr [rbp-0x48]
+ ; gcrRegs +[r8]
+ lea rcx, bword ptr [r8+0x08]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call [CORINFO_HELP_ASSIGN_REF]
- ; gcrRegs -[rax rdx]
+ ; gcrRegs -[rax rdx r8]
; byrRegs -[rcx]
mov rax, gword ptr [rbp-0x48]
; gcrRegs +[rax]
@@ -551,7 +543,7 @@ G_M44608_IG17: ; bbWeight=0.02, gcVars=0000000080000000 {V42}, gcrefRegs=
; gcrRegs -[rdx]
; byrRegs -[rcx]
jmp SHORT G_M44608_IG20
- ;; size=185 bbWeight=0.02 PerfScore 1.24
+ ;; size=171 bbWeight=0.02 PerfScore 1.20
G_M44608_IG18: ; bbWeight=0.02, gcrefRegs=90C8 {rbx rsi rdi r12 r15}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [r12+0x08]
; gcrRegs +[rax]
@@ -687,7 +679,7 @@ G_M44608_IG21: ; bbWeight=0.50, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0
; gcrRegs +[rax]
;; size=123 bbWeight=0.50 PerfScore 23.38
G_M44608_IG22: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 184
+ add rsp, 168
pop rbx
pop rsi
pop rdi
@@ -799,7 +791,7 @@ G_M44608_IG28: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcrRegs +[rax]
;; size=13 bbWeight=0.50 PerfScore 2.62
G_M44608_IG29: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 184
+ add rsp, 168
pop rbx
pop rsi
pop rdi
@@ -834,7 +826,7 @@ G_M44608_IG31: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
int3
;; size=27 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1507, prolog size 42, PerfScore 615.07, instruction count 364, allocated bytes for code 1507 (MethodHash=bd8b51bf) for method System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
+; Total bytes of code 1484, prolog size 33, PerfScore 613.78, instruction count 360, allocated bytes for code 1484 (MethodHash=bd8b51bf) for method System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -848,7 +840,7 @@ Unwind Info:
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
CodeOffset: 0x13 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
- Size: 23 * 8 = 184 = 0x000B8
+ Size: 21 * 8 = 168 = 0x000A8
CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
-8 (-0.39%) : 196186.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
@@ -35,13 +35,13 @@
; V23 tmp2 [V23,T44] ( 2, 0 ) ref -> rbx class-hnd single-def "finalizable newobj spill" <<unknown class>>
; V24 tmp3 [V24,T38] ( 3, 2 ) int -> r12
; V25 tmp4 [V25,T19] ( 4, 16 ) int -> r13 "impSpillLclRefs"
-; V26 tmp5 [V26,T28] ( 2, 8 ) ref -> rdx class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
+; V26 tmp5 [V26,T27] ( 2, 8 ) ref -> rdx class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
;* V27 tmp6 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V28 tmp7 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V29 tmp8 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V30 tmp9 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>>
; V31 tmp10 [V31,T43] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V32 tmp11 [V32,T24] ( 2, 0.16) ubyte -> rcx "Inline return value spill temp"
+;* V32 tmp11 [V32,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp12 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
; V34 tmp13 [V34,T11] ( 6, 24 ) ref -> rax class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
;* V35 tmp14 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -56,17 +56,17 @@
; V44 tmp23 [V44,T05] ( 4, 32 ) ref -> rax "argument with side effect"
; V45 tmp24 [V45,T06] ( 4, 32 ) ref -> [rbp-0x78] "argument with side effect"
; V46 tmp25 [V46,T07] ( 4, 32 ) ref -> rax "argument with side effect"
-; V47 tmp26 [V47,T29] ( 2, 8 ) ref -> rcx "argument with side effect"
-; V48 tmp27 [V48,T30] ( 2, 8 ) ref -> rcx "argument with side effect"
-; V49 tmp28 [V49,T31] ( 2, 8 ) ref -> rcx "argument with side effect"
-; V50 tmp29 [V50,T32] ( 2, 8 ) ref -> rcx "argument with side effect"
-; V51 tmp30 [V51,T33] ( 2, 8 ) ref -> [rbp-0x80] spill-single-def "argument with side effect"
-; V52 tmp31 [V52,T34] ( 2, 8 ) ref -> rdx "argument with side effect"
+; V47 tmp26 [V47,T28] ( 2, 8 ) ref -> rcx "argument with side effect"
+; V48 tmp27 [V48,T29] ( 2, 8 ) ref -> rcx "argument with side effect"
+; V49 tmp28 [V49,T30] ( 2, 8 ) ref -> rcx "argument with side effect"
+; V50 tmp29 [V50,T31] ( 2, 8 ) ref -> rcx "argument with side effect"
+; V51 tmp30 [V51,T32] ( 2, 8 ) ref -> [rbp-0x80] spill-single-def "argument with side effect"
+; V52 tmp31 [V52,T33] ( 2, 8 ) ref -> rdx "argument with side effect"
; V53 tmp32 [V53,T17] ( 4, 16 ) ref -> [rbp-0x88] "argument with side effect"
; V54 tmp33 [V54,T18] ( 4, 16 ) ref -> rax "argument with side effect"
-; V55 tmp34 [V55,T25] ( 4, 8 ) ref -> [rbp-0x90] "argument with side effect"
-; V56 tmp35 [V56,T26] ( 4, 8 ) ref -> rax "argument with side effect"
-; V57 tmp36 [V57,T27] ( 4, 8 ) ref -> rcx "argument with side effect"
+; V55 tmp34 [V55,T24] ( 4, 8 ) ref -> [rbp-0x90] "argument with side effect"
+; V56 tmp35 [V56,T25] ( 4, 8 ) ref -> rax "argument with side effect"
+; V57 tmp36 [V57,T26] ( 4, 8 ) ref -> rcx "argument with side effect"
; V58 cse0 [V58,T21] ( 10, 13.54) int -> [rbp-0x44] spill-single-def "CSE - moderate"
; V59 cse1 [V59,T10] ( 8, 28 ) long -> [rbp-0x50] multi-def "CSE - aggressive"
; V60 cse2 [V60,T00] ( 6, 71.28) long -> [rbp-0x58] spill-single-def "CSE - aggressive"
@@ -399,12 +399,9 @@ G_M58711_IG21: ; bbWeight=0.08, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe
mov rax, qword ptr [rbp-0x50]
; gcrRegs -[rax]
cmp rcx, gword ptr [rsi+rax]
- sete cl
- ; gcrRegs -[rcx]
- movzx rcx, cl
- test ecx, ecx
- je SHORT G_M58711_IG25
+ jne SHORT G_M58711_IG25
mov ecx, r15d
+ ; gcrRegs -[rcx]
mov rcx, gword ptr [rbx+8*rcx+0x10]
; gcrRegs +[rcx]
lea r11, [(reloc)]
@@ -414,11 +411,11 @@ G_M58711_IG21: ; bbWeight=0.08, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe
; gcr arg pop 0
mov gword ptr [rbp-0x78], rax
; GC ptr vars +{V45}
- ;; size=178 bbWeight=0.08 PerfScore 5.04
-G_M58711_IG22: ; bbWeight=0.08, isz, extend
mov rcx, gword ptr [rbp-0x70]
; gcrRegs +[rcx]
lea r11, [(reloc)]
+ ;; size=181 bbWeight=0.08 PerfScore 5.04
+G_M58711_IG22: ; bbWeight=0.08, isz, extend
; GC ptr vars -{V19}
call [r11]<unknown method>
; gcrRegs -[rcx]
@@ -434,7 +431,7 @@ G_M58711_IG22: ; bbWeight=0.08, isz, extend
test eax, eax
jne SHORT G_M58711_IG24
jmp SHORT G_M58711_IG25
- ;; size=33 bbWeight=0.08 PerfScore 0.96
+ ;; size=22 bbWeight=0.08 PerfScore 0.84
G_M58711_IG23: ; bbWeight=0.08, gcVars=0000000000004008 {V18 V19}, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V03 V19}
mov edx, r15d
@@ -1033,7 +1030,7 @@ G_M58711_IG64: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
int3
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2043, prolog size 37, PerfScore 1611.69, instruction count 539, allocated bytes for code 2043 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
+; Total bytes of code 2035, prolog size 37, PerfScore 1611.57, instruction count 536, allocated bytes for code 2035 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
; ============================================================
Unwind Info:
-8 (-0.39%) : 171569.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
@@ -34,7 +34,7 @@
; V22 tmp2 [V22,T44] ( 2, 0 ) ref -> rbx class-hnd single-def "finalizable newobj spill" <<unknown class>>
; V23 tmp3 [V23,T38] ( 3, 2 ) int -> r12
; V24 tmp4 [V24,T19] ( 4, 16 ) int -> r13 "impSpillLclRefs"
-; V25 tmp5 [V25,T28] ( 2, 8 ) ref -> rdx class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
+; V25 tmp5 [V25,T27] ( 2, 8 ) ref -> rdx class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
;* V26 tmp6 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V27 tmp7 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V28 tmp8 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
@@ -42,7 +42,7 @@
; V30 tmp10 [V30,T42] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V31 tmp11 [V31,T45] ( 2, 0 ) ref -> rbx class-hnd single-def "finalizable newobj spill" <<unknown class>>
; V32 tmp12 [V32,T43] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V33 tmp13 [V33,T24] ( 2, 0.16) ubyte -> rcx "Inline return value spill temp"
+;* V33 tmp13 [V33,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V34 tmp14 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
; V35 tmp15 [V35,T11] ( 6, 24 ) ref -> rax class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
;* V36 tmp16 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -57,17 +57,17 @@
; V45 tmp25 [V45,T05] ( 4, 32 ) ref -> rax "argument with side effect"
; V46 tmp26 [V46,T06] ( 4, 32 ) ref -> [rbp-0x78] "argument with side effect"
; V47 tmp27 [V47,T07] ( 4, 32 ) ref -> rax "argument with side effect"
-; V48 tmp28 [V48,T29] ( 2, 8 ) ref -> rcx "argument with side effect"
-; V49 tmp29 [V49,T30] ( 2, 8 ) ref -> rcx "argument with side effect"
-; V50 tmp30 [V50,T31] ( 2, 8 ) ref -> rcx "argument with side effect"
-; V51 tmp31 [V51,T32] ( 2, 8 ) ref -> rcx "argument with side effect"
-; V52 tmp32 [V52,T33] ( 2, 8 ) ref -> [rbp-0x80] spill-single-def "argument with side effect"
-; V53 tmp33 [V53,T34] ( 2, 8 ) ref -> rdx "argument with side effect"
+; V48 tmp28 [V48,T28] ( 2, 8 ) ref -> rcx "argument with side effect"
+; V49 tmp29 [V49,T29] ( 2, 8 ) ref -> rcx "argument with side effect"
+; V50 tmp30 [V50,T30] ( 2, 8 ) ref -> rcx "argument with side effect"
+; V51 tmp31 [V51,T31] ( 2, 8 ) ref -> rcx "argument with side effect"
+; V52 tmp32 [V52,T32] ( 2, 8 ) ref -> [rbp-0x80] spill-single-def "argument with side effect"
+; V53 tmp33 [V53,T33] ( 2, 8 ) ref -> rdx "argument with side effect"
; V54 tmp34 [V54,T17] ( 4, 16 ) ref -> [rbp-0x88] "argument with side effect"
; V55 tmp35 [V55,T18] ( 4, 16 ) ref -> rax "argument with side effect"
-; V56 tmp36 [V56,T25] ( 4, 8 ) ref -> [rbp-0x90] "argument with side effect"
-; V57 tmp37 [V57,T26] ( 4, 8 ) ref -> rax "argument with side effect"
-; V58 tmp38 [V58,T27] ( 4, 8 ) ref -> rcx "argument with side effect"
+; V56 tmp36 [V56,T24] ( 4, 8 ) ref -> [rbp-0x90] "argument with side effect"
+; V57 tmp37 [V57,T25] ( 4, 8 ) ref -> rax "argument with side effect"
+; V58 tmp38 [V58,T26] ( 4, 8 ) ref -> rcx "argument with side effect"
; V59 cse0 [V59,T21] ( 10, 13.54) int -> [rbp-0x44] spill-single-def "CSE - moderate"
; V60 cse1 [V60,T10] ( 8, 28 ) long -> [rbp-0x50] multi-def "CSE - aggressive"
; V61 cse2 [V61,T00] ( 6, 71.28) long -> [rbp-0x58] spill-single-def "CSE - aggressive"
@@ -400,12 +400,9 @@ G_M58711_IG21: ; bbWeight=0.08, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe
mov rax, qword ptr [rbp-0x50]
; gcrRegs -[rax]
cmp rcx, gword ptr [rsi+rax]
- sete cl
- ; gcrRegs -[rcx]
- movzx rcx, cl
- test ecx, ecx
- je SHORT G_M58711_IG25
+ jne SHORT G_M58711_IG25
mov ecx, r15d
+ ; gcrRegs -[rcx]
mov rcx, gword ptr [rbx+8*rcx+0x10]
; gcrRegs +[rcx]
lea r11, [(reloc)]
@@ -415,11 +412,11 @@ G_M58711_IG21: ; bbWeight=0.08, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe
; gcr arg pop 0
mov gword ptr [rbp-0x78], rax
; GC ptr vars +{V46}
- ;; size=178 bbWeight=0.08 PerfScore 5.04
-G_M58711_IG22: ; bbWeight=0.08, isz, extend
mov rcx, gword ptr [rbp-0x70]
; gcrRegs +[rcx]
lea r11, [(reloc)]
+ ;; size=181 bbWeight=0.08 PerfScore 5.04
+G_M58711_IG22: ; bbWeight=0.08, isz, extend
; GC ptr vars -{V18}
call [r11]<unknown method>
; gcrRegs -[rcx]
@@ -435,7 +432,7 @@ G_M58711_IG22: ; bbWeight=0.08, isz, extend
test eax, eax
jne SHORT G_M58711_IG24
jmp SHORT G_M58711_IG25
- ;; size=33 bbWeight=0.08 PerfScore 0.96
+ ;; size=22 bbWeight=0.08 PerfScore 0.84
G_M58711_IG23: ; bbWeight=0.08, gcVars=0000000000004008 {V17 V18}, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V03 V18}
mov edx, r15d
@@ -1044,7 +1041,7 @@ G_M58711_IG64: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=40 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2068, prolog size 37, PerfScore 1611.56, instruction count 544, allocated bytes for code 2068 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
+; Total bytes of code 2060, prolog size 37, PerfScore 1611.44, instruction count 541, allocated bytes for code 2060 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
; ============================================================
Unwind Info:
-7 (-0.20%) : 117086.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray
1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
@@ -54,7 +54,7 @@
; V42 tmp8 [V42,T07] ( 6, 48 ) ref -> [rsp+0x50] class-hnd "non-inline candidate call" <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol>
;* V43 tmp9 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V44 tmp10 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
-; V45 tmp11 [V45,T37] ( 2, 0.16) ubyte -> rcx "Inline return value spill temp"
+;* V45 tmp11 [V45,T37] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V46 tmp12 [V46,T12] ( 4, 32 ) ref -> [rsp+0x48] class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol>
;* V47 tmp13 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
; V48 tmp14 [V48,T26] ( 4, 16 ) ubyte -> rax "Inline return value spill temp"
@@ -776,13 +776,10 @@ G_M30062_IG33: ; bbWeight=0.08, extend
call [r11]<unknown method>
; gcrRegs -[rax rcx]
; gcr arg pop 0
- xor ecx, ecx
cmp eax, 32
- setne cl
- test ecx, ecx
je G_M30062_IG42
jmp G_M30062_IG44
- ;; size=36 bbWeight=0.08 PerfScore 0.92
+ ;; size=29 bbWeight=0.08 PerfScore 0.80
G_M30062_IG34: ; bbWeight=0.08, gcrefRegs=9028 {rbx rbp r12 r15}, byrefRegs=4000 {r14}, byref, isz
lea rcx, [rsp+0x2D8]
mov rdx, qword ptr [rsp+0x70]
@@ -1384,7 +1381,7 @@ G_M30062_IG70: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 3539, prolog size 85, PerfScore 3065.30, instruction count 774, allocated bytes for code 3539 (MethodHash=40c98a91) for method Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
+; Total bytes of code 3532, prolog size 85, PerfScore 3065.18, instruction count 771, allocated bytes for code 3532 (MethodHash=40c98a91) for method Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
; ============================================================
Unwind Info:
libraries.pmi.windows.x64.checked.mch
-23 (-6.42%) : 151309.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,System.Nullable
1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,System.Nullable
1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 17 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
+; V00 this [V00,T04] ( 7, 16 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
; V01 arg1 [V01,T16] ( 4, 4 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
-; V02 arg2 [V02,T19] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V02 arg2 [V02,T18] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V03 loc0 [V03 ] ( 3, 11 ) struct (24) [rsp+0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SmallDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
; V04 loc1 [V04 ] ( 4, 8 ) struct (16) [rsp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,33 +27,30 @@
; V16 tmp11 [V16 ] ( 3, 11 ) ref -> [rsp+0x58] do-not-enreg[X] addr-exposed "field V03._stack (fldOffset=0x0)" P-DEP
; V17 tmp12 [V17 ] ( 3, 11 ) ref -> [rsp+0x60] do-not-enreg[X] addr-exposed "field V03._next (fldOffset=0x8)" P-DEP
; V18 tmp13 [V18 ] ( 3, 11 ) ref -> [rsp+0x68] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x10)" P-DEP
-; V19 tmp14 [V19,T24] ( 2, 4 ) ubyte -> r14 "field V11.hasValue (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T25] ( 2, 4 ) int -> r15 "field V11.value (fldOffset=0x4)" P-INDEP
+; V19 tmp14 [V19,T22] ( 2, 4 ) ubyte -> r14 "field V11.hasValue (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T23] ( 2, 4 ) int -> r15 "field V11.value (fldOffset=0x4)" P-INDEP
; V21 tmp16 [V21 ] ( 2, 4 ) ref -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V12._stack (fldOffset=0x0)" P-DEP
; V22 tmp17 [V22 ] ( 2, 4 ) ref -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V12._next (fldOffset=0x8)" P-DEP
; V23 tmp18 [V23 ] ( 2, 4 ) ref -> [rsp+0x40] do-not-enreg[X] addr-exposed "field V12._current (fldOffset=0x10)" P-DEP
-; V24 tmp19 [V24,T26] ( 2, 4 ) long -> rdx "argument with side effect"
+; V24 tmp19 [V24,T24] ( 2, 4 ) long -> rdx "argument with side effect"
; V25 tmp20 [V25,T03] ( 2, 32 ) long -> rdx "argument with side effect"
; V26 tmp21 [V26,T13] ( 2, 8 ) long -> r8 "argument with side effect"
; V27 tmp22 [V27,T07] ( 3, 12 ) struct ( 8) [rsp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
; V28 tmp23 [V28,T14] ( 2, 8 ) int -> rdx "argument with side effect"
; V29 tmp24 [V29,T11] ( 2, 8 ) ref -> rcx "argument with side effect"
; V30 tmp25 [V30,T12] ( 2, 8 ) ref -> r8 "argument with side effect"
-; V31 cse0 [V31,T22] ( 3, 4 ) long -> rbp "CSE - moderate"
-;* V32 cse1 [V32,T28] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V31 cse0 [V31,T20] ( 3, 4 ) long -> rbp "CSE - moderate"
+;* V32 cse1 [V32,T25] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; V33 cse2 [V33,T15] ( 4, 4.40) long -> rdi "CSE - aggressive"
-; V34 rat0 [V34,T20] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
-; V35 rat1 [V35,T23] ( 3, 4 ) long -> rbp "runtime lookup"
+; V34 rat0 [V34,T19] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
+; V35 rat1 [V35,T21] ( 3, 4 ) long -> rbp "runtime lookup"
; V36 rat2 [V36,T17] ( 3, 5.60) long -> rbp "fgMakeTemp is creating a new local variable"
-; V37 rat3 [V37,T21] ( 2, 4 ) long -> rcx "Spilling to split statement for tree"
-;* V38 rat4 [V38,T27] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V39 rat5 [V39,T18] ( 2, 4 ) long -> rcx "fgMakeTemp is creating a new local variable"
-;* V40 rat6 [V40,T10] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V41 rat7 [V41,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V42 rat8 [V42,T09] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
-; V43 rat9 [V43,T01] ( 3, 35.20) long -> rcx "Spilling to split statement for tree"
-; V44 rat10 [V44,T02] ( 3, 32 ) long -> rdx "runtime lookup"
-; V45 rat11 [V45,T00] ( 3, 44.80) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V37 rat3 [V37,T10] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V38 rat4 [V38,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V39 rat5 [V39,T09] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
+; V40 rat6 [V40,T01] ( 3, 35.20) long -> rcx "Spilling to split statement for tree"
+; V41 rat7 [V41,T02] ( 3, 32 ) long -> rdx "runtime lookup"
+; V42 rat8 [V42,T00] ( 3, 44.80) long -> rdx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 120
@@ -118,14 +115,8 @@ G_M14191_IG06: ; bbWeight=1, nogc, extend
mov qword ptr [rsp+0x68], rcx
;; size=22 bbWeight=1 PerfScore 6.00
G_M14191_IG07: ; bbWeight=1, isz, extend
- mov rcx, qword ptr [rbx]
- mov rcx, qword ptr [rcx+0x38]
- mov rcx, qword ptr [rcx]
- mov rcx, qword ptr [rcx+0x58]
- test rcx, rcx
- jne G_M14191_IG12
jmp SHORT G_M14191_IG12
- ;; size=25 bbWeight=1 PerfScore 11.25
+ ;; size=2 bbWeight=1 PerfScore 2.00
G_M14191_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r8, rbp
lea rdx, [rsp+0x48]
@@ -209,7 +200,7 @@ G_M14191_IG16: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
ret
;; size=13 bbWeight=1 PerfScore 4.25
-; Total bytes of code 358, prolog size 36, PerfScore 241.33, instruction count 95, allocated bytes for code 358 (MethodHash=ea3fc890) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 335, prolog size 36, PerfScore 232.08, instruction count 89, allocated bytes for code 335 (MethodHash=ea3fc890) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
-23 (-6.42%) : 191240.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,System.Nullable
1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,System.Nullable
1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 17 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
+; V00 this [V00,T04] ( 7, 16 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
; V01 arg1 [V01,T16] ( 4, 4 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]>
-; V02 arg2 [V02,T19] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V02 arg2 [V02,T18] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V03 loc0 [V03 ] ( 3, 11 ) struct (24) [rsp+0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SmallDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
; V04 loc1 [V04 ] ( 4, 8 ) struct (16) [rsp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,33 +27,30 @@
; V16 tmp11 [V16 ] ( 3, 11 ) ref -> [rsp+0x58] do-not-enreg[X] addr-exposed "field V03._stack (fldOffset=0x0)" P-DEP
; V17 tmp12 [V17 ] ( 3, 11 ) ref -> [rsp+0x60] do-not-enreg[X] addr-exposed "field V03._next (fldOffset=0x8)" P-DEP
; V18 tmp13 [V18 ] ( 3, 11 ) ref -> [rsp+0x68] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x10)" P-DEP
-; V19 tmp14 [V19,T24] ( 2, 4 ) ubyte -> r14 "field V11.hasValue (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T25] ( 2, 4 ) int -> r15 "field V11.value (fldOffset=0x4)" P-INDEP
+; V19 tmp14 [V19,T22] ( 2, 4 ) ubyte -> r14 "field V11.hasValue (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T23] ( 2, 4 ) int -> r15 "field V11.value (fldOffset=0x4)" P-INDEP
; V21 tmp16 [V21 ] ( 2, 4 ) ref -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V12._stack (fldOffset=0x0)" P-DEP
; V22 tmp17 [V22 ] ( 2, 4 ) ref -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V12._next (fldOffset=0x8)" P-DEP
; V23 tmp18 [V23 ] ( 2, 4 ) ref -> [rsp+0x40] do-not-enreg[X] addr-exposed "field V12._current (fldOffset=0x10)" P-DEP
-; V24 tmp19 [V24,T26] ( 2, 4 ) long -> rdx "argument with side effect"
+; V24 tmp19 [V24,T24] ( 2, 4 ) long -> rdx "argument with side effect"
; V25 tmp20 [V25,T03] ( 2, 32 ) long -> rdx "argument with side effect"
; V26 tmp21 [V26,T13] ( 2, 8 ) long -> r8 "argument with side effect"
; V27 tmp22 [V27,T07] ( 3, 12 ) struct ( 8) [rsp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
; V28 tmp23 [V28,T14] ( 2, 8 ) int -> rdx "argument with side effect"
; V29 tmp24 [V29,T11] ( 2, 8 ) ref -> rcx "argument with side effect"
; V30 tmp25 [V30,T12] ( 2, 8 ) ref -> r8 "argument with side effect"
-; V31 cse0 [V31,T22] ( 3, 4 ) long -> rbp "CSE - moderate"
-;* V32 cse1 [V32,T28] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V31 cse0 [V31,T20] ( 3, 4 ) long -> rbp "CSE - moderate"
+;* V32 cse1 [V32,T25] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; V33 cse2 [V33,T15] ( 4, 4.40) long -> rdi "CSE - aggressive"
-; V34 rat0 [V34,T20] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
-; V35 rat1 [V35,T23] ( 3, 4 ) long -> rbp "runtime lookup"
+; V34 rat0 [V34,T19] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
+; V35 rat1 [V35,T21] ( 3, 4 ) long -> rbp "runtime lookup"
; V36 rat2 [V36,T17] ( 3, 5.60) long -> rbp "fgMakeTemp is creating a new local variable"
-; V37 rat3 [V37,T21] ( 2, 4 ) long -> rcx "Spilling to split statement for tree"
-;* V38 rat4 [V38,T27] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V39 rat5 [V39,T18] ( 2, 4 ) long -> rcx "fgMakeTemp is creating a new local variable"
-;* V40 rat6 [V40,T10] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V41 rat7 [V41,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V42 rat8 [V42,T09] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
-; V43 rat9 [V43,T01] ( 3, 35.20) long -> rcx "Spilling to split statement for tree"
-; V44 rat10 [V44,T02] ( 3, 32 ) long -> rdx "runtime lookup"
-; V45 rat11 [V45,T00] ( 3, 44.80) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V37 rat3 [V37,T10] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V38 rat4 [V38,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V39 rat5 [V39,T09] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
+; V40 rat6 [V40,T01] ( 3, 35.20) long -> rcx "Spilling to split statement for tree"
+; V41 rat7 [V41,T02] ( 3, 32 ) long -> rdx "runtime lookup"
+; V42 rat8 [V42,T00] ( 3, 44.80) long -> rdx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 120
@@ -118,14 +115,8 @@ G_M14191_IG06: ; bbWeight=1, nogc, extend
mov qword ptr [rsp+0x68], rcx
;; size=22 bbWeight=1 PerfScore 6.00
G_M14191_IG07: ; bbWeight=1, isz, extend
- mov rcx, qword ptr [rbx]
- mov rcx, qword ptr [rcx+0x38]
- mov rcx, qword ptr [rcx]
- mov rcx, qword ptr [rcx+0x58]
- test rcx, rcx
- jne G_M14191_IG12
jmp SHORT G_M14191_IG12
- ;; size=25 bbWeight=1 PerfScore 11.25
+ ;; size=2 bbWeight=1 PerfScore 2.00
G_M14191_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r8, rbp
lea rdx, [rsp+0x48]
@@ -209,7 +200,7 @@ G_M14191_IG16: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
ret
;; size=13 bbWeight=1 PerfScore 4.25
-; Total bytes of code 358, prolog size 36, PerfScore 241.33, instruction count 95, allocated bytes for code 358 (MethodHash=ea3fc890) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 335, prolog size 36, PerfScore 232.08, instruction count 89, allocated bytes for code 335 (MethodHash=ea3fc890) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
-23 (-3.54%) : 210355.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
@@ -8,18 +8,18 @@
; 2 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 9, 15 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]>
+; V00 this [V00,T04] ( 8, 14 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]>
; V01 arg1 [V01,T05] ( 8, 12 ) ref -> rbx class-hnd single-def <System.Array>
; V02 arg2 [V02,T08] ( 6, 8 ) int -> registers
; V03 loc0 [V03 ] ( 5, 12 ) struct (48) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableSortedSet`1+Enumerator[System.__Canon]>
-; V04 loc1 [V04,T23] ( 2, 4 ) ref -> r14 class-hnd <System.__Canon>
+; V04 loc1 [V04,T21] ( 2, 4 ) ref -> r14 class-hnd <System.__Canon>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V09 tmp4 [V09,T07] ( 3, 12 ) int -> rsi "impSpillLclRefs"
;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V11 tmp6 [V11,T20] ( 6, 4 ) long -> rax "Indirect call through function pointer"
+; V11 tmp6 [V11,T18] ( 6, 4 ) long -> rax "Indirect call through function pointer"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V14 tmp9 [V14 ] ( 2, 4 ) struct (48) [rbp-0x98] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableSortedSet`1+Enumerator[System.__Canon]>
@@ -29,27 +29,24 @@
; V18 tmp13 [V18,T13] ( 3, 6 ) int -> rcx "Inline stloc first use temp"
; V19 tmp14 [V19,T06] ( 3, 12 ) byref -> r13 "Inlining Arg"
;* V20 tmp15 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp16 [V21,T29] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V22 tmp17 [V22,T24] ( 2, 4 ) long -> rdx "argument with side effect"
+; V21 tmp16 [V21,T26] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V22 tmp17 [V22,T22] ( 2, 4 ) long -> rdx "argument with side effect"
; V23 tmp18 [V23,T03] ( 2, 32 ) long -> rdx "argument with side effect"
; V24 tmp19 [V24,T09] ( 2, 8 ) long -> rdx "argument with side effect"
; V25 tmp20 [V25,T10] ( 2, 8 ) long -> r8 "argument with side effect"
-; V26 PSPSym [V26,T26] ( 1, 1 ) long -> [rbp-0xA8] do-not-enreg[V] "PSPSym"
-; V27 cse0 [V27,T21] ( 3, 4 ) long -> rdi "CSE - moderate"
+; V26 PSPSym [V26,T23] ( 1, 1 ) long -> [rbp-0xA8] do-not-enreg[V] "PSPSym"
+; V27 cse0 [V27,T19] ( 3, 4 ) long -> rdi "CSE - moderate"
; V28 cse1 [V28,T11] ( 3, 6.00) ref -> rdx "CSE - aggressive"
-; V29 rat0 [V29,T17] ( 3, 4.40) long -> rdx "Spilling to split statement for tree"
-; V30 rat1 [V30,T22] ( 3, 4 ) long -> rdi "runtime lookup"
+; V29 rat0 [V29,T16] ( 3, 4.40) long -> rdx "Spilling to split statement for tree"
+; V30 rat1 [V30,T20] ( 3, 4 ) long -> rdi "runtime lookup"
; V31 rat2 [V31,T14] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
-; V32 rat3 [V32,T18] ( 2, 4 ) long -> rcx "Spilling to split statement for tree"
-;* V33 rat4 [V33,T25] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V34 rat5 [V34,T15] ( 2, 4 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V35 rat6 [V35,T01] ( 3, 35.20) long -> rcx "Spilling to split statement for tree"
-; V36 rat7 [V36,T02] ( 3, 32 ) long -> rdx "runtime lookup"
-; V37 rat8 [V37,T00] ( 3, 44.80) long -> rdx "fgMakeTemp is creating a new local variable"
-; V38 rat9 [V38,T19] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
-; V39 rat10 [V39,T16] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V40 rat11 [V40,T27] ( 3, 0 ) long -> rdx "Spilling to split statement for tree"
-; V41 rat12 [V41,T28] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V32 rat3 [V32,T01] ( 3, 35.20) long -> rcx "Spilling to split statement for tree"
+; V33 rat4 [V33,T02] ( 3, 32 ) long -> rdx "runtime lookup"
+; V34 rat5 [V34,T00] ( 3, 44.80) long -> rdx "fgMakeTemp is creating a new local variable"
+; V35 rat6 [V35,T17] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
+; V36 rat7 [V36,T15] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V37 rat8 [V37,T24] ( 3, 0 ) long -> rdx "Spilling to split statement for tree"
+; V38 rat9 [V38,T25] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 160
@@ -130,18 +127,9 @@ G_M52227_IG06: ; bbWeight=1, nogc, extend
vmovdqu xmmword ptr [rbp-0x48], xmm0
;; size=23 bbWeight=1 PerfScore 9.00
G_M52227_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov r8, gword ptr [rbp+0x10]
- ; gcrRegs +[r8]
- mov rcx, qword ptr [r8]
- mov rcx, qword ptr [rcx+0x38]
- mov rcx, qword ptr [rcx]
- mov rcx, qword ptr [rcx+0x10]
- test rcx, rcx
- jne SHORT G_M52227_IG13
jmp SHORT G_M52227_IG13
- ;; size=25 bbWeight=1 PerfScore 12.25
+ ;; size=2 bbWeight=1 PerfScore 2.00
G_M52227_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r8]
mov rdx, rdi
lea rcx, [rbp-0x68]
call [System.Collections.Immutable.ImmutableSortedSet`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this]
@@ -193,17 +181,17 @@ G_M52227_IG12: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {},
; gcrRegs -[rcx rdx r14]
; gcr arg pop 0
mov esi, r15d
+ ;; size=28 bbWeight=2 PerfScore 11.00
+G_M52227_IG13: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r8, gword ptr [rbp+0x10]
; gcrRegs +[r8]
- ;; size=32 bbWeight=2 PerfScore 13.00
-G_M52227_IG13: ; bbWeight=8, gcrefRegs=0108 {rbx r8}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [r8]
mov rdx, qword ptr [rcx+0x38]
mov rdx, qword ptr [rdx]
mov rdx, qword ptr [rdx+0x10]
test rdx, rdx
je SHORT G_M52227_IG15
- ;; size=19 bbWeight=8 PerfScore 74.00
+ ;; size=23 bbWeight=8 PerfScore 82.00
G_M52227_IG14: ; bbWeight=6.40, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r8]
jmp SHORT G_M52227_IG16
@@ -349,7 +337,7 @@ G_M52227_IG31: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 650, prolog size 84, PerfScore 271.08, instruction count 179, allocated bytes for code 650 (MethodHash=24b133fc) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
+; Total bytes of code 627, prolog size 84, PerfScore 266.83, instruction count 172, allocated bytes for code 627 (MethodHash=24b133fc) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 175988.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary2[System.__Canon,System.Nullable
1[int]]:TrimExcess(int):this (FullOpts)
@@ -10,9 +10,9 @@
;
; V00 this [V00,T02] ( 17, 19.50) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.Nullable`1[int]]>
; V01 arg1 [V01,T16] ( 4, 4 ) int -> rdx single-def
-; V02 loc0 [V02,T27] ( 3, 2.50) int -> rsi single-def
+; V02 loc0 [V02,T26] ( 3, 2.50) int -> rsi single-def
; V03 loc1 [V03 ] ( 5, 12 ) struct (16) [rsp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.Nullable`1[int]]]>
-; V04 loc2 [V04,T29] ( 2, 2 ) int -> rcx single-def
+; V04 loc2 [V04,T27] ( 2, 2 ) int -> rcx single-def
; V05 loc3 [V05,T22] ( 3, 5 ) int -> r14 single-def
; V06 loc4 [V06 ] ( 2, 2.50) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.Nullable`1[int]]]>
; V07 loc5 [V07,T15] ( 5, 7 ) int -> r15
@@ -48,17 +48,14 @@
; V37 tmp26 [V37,T10] ( 3, 12 ) int -> rdi "index expr"
; V38 tmp27 [V38,T11] ( 3, 12 ) int -> rcx "index expr"
; V39 cse0 [V39,T12] ( 4, 9 ) long -> rbp "CSE - aggressive"
-;* V40 cse1 [V40,T30] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+;* V40 cse1 [V40,T28] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; V41 cse2 [V41,T19] ( 3, 6 ) int -> r15 "CSE - aggressive"
; V42 rat0 [V42,T23] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
; V43 rat1 [V43,T24] ( 3, 4 ) long -> rbp "runtime lookup"
; V44 rat2 [V44,T21] ( 3, 5.60) long -> rbp "fgMakeTemp is creating a new local variable"
-;* V45 rat3 [V45,T28] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V46 rat4 [V46,T31] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V47 rat5 [V47,T26] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V48 rat6 [V48,T03] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
-; V49 rat7 [V49,T04] ( 3, 16 ) long -> rdx "runtime lookup"
-; V50 rat8 [V50,T01] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
+; V45 rat3 [V45,T03] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
+; V46 rat4 [V46,T04] ( 3, 16 ) long -> rdx "runtime lookup"
+; V47 rat5 [V47,T01] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 88
+0 (0.00%) : 201228.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary2[System.__Canon,System.Nullable
1[int]]:TrimExcess(int):this (FullOpts)
@@ -10,9 +10,9 @@
;
; V00 this [V00,T02] ( 17, 19.50) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.Nullable`1[int]]>
; V01 arg1 [V01,T17] ( 4, 4 ) int -> rdx single-def
-; V02 loc0 [V02,T28] ( 3, 2.50) int -> rsi single-def
+; V02 loc0 [V02,T27] ( 3, 2.50) int -> rsi single-def
; V03 loc1 [V03 ] ( 5, 12 ) struct (16) [rsp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.Nullable`1[int]]]>
-; V04 loc2 [V04,T30] ( 2, 2 ) int -> rcx single-def
+; V04 loc2 [V04,T28] ( 2, 2 ) int -> rcx single-def
; V05 loc3 [V05,T22] ( 3, 5 ) int -> r14 single-def
; V06 loc4 [V06 ] ( 2, 2.50) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.Nullable`1[int]]]>
; V07 loc5 [V07,T16] ( 5, 7 ) int -> r15
@@ -33,9 +33,9 @@
; V22 tmp11 [V22,T08] ( 3, 12 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>>
; V23 tmp12 [V23,T09] ( 3, 12 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>>
;* V24 tmp13 [V24 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V25 tmp14 [V25,T31] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V25 tmp14 [V25,T29] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V26 tmp15 [V26 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V27 tmp16 [V27,T32] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V27 tmp16 [V27,T30] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V28 tmp17 [V28 ] ( 4, 11 ) ref -> [rsp+0x40] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V29 tmp18 [V29 ] ( 5, 12 ) int -> [rsp+0x48] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
; V30 tmp19 [V30 ] ( 2, 2.50) ref -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V06._items (fldOffset=0x0)" P-DEP
@@ -53,12 +53,9 @@
; V42 rat0 [V42,T23] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
; V43 rat1 [V43,T24] ( 3, 4 ) long -> rbp "runtime lookup"
; V44 rat2 [V44,T21] ( 3, 5.60) long -> rbp "fgMakeTemp is creating a new local variable"
-;* V45 rat3 [V45,T29] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V46 rat4 [V46,T33] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V47 rat5 [V47,T27] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V48 rat6 [V48,T03] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
-; V49 rat7 [V49,T04] ( 3, 16 ) long -> rdx "runtime lookup"
-; V50 rat8 [V50,T01] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
+; V45 rat3 [V45,T03] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
+; V46 rat4 [V46,T04] ( 3, 16 ) long -> rdx "runtime lookup"
+; V47 rat5 [V47,T01] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 88
+0 (0.00%) : 201376.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)
@@ -23,11 +23,11 @@
; V12 loc9 [V12,T14] ( 4, 14 ) byref -> [rsp+0x28] spill-single-def
; V13 loc10 [V13,T17] ( 6, 13.50) int -> r12
; V14 loc11 [V14,T15] ( 4, 14 ) byref -> [rsp+0x20] spill-single-def
-; V15 loc12 [V15,T66] ( 3, 1.50) int -> rbp single-def
+; V15 loc12 [V15,T62] ( 3, 1.50) int -> rbp single-def
; V16 OutArgs [V16 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp2 [V18,T31] ( 4, 3 ) long -> r11 "VirtualCall with runtime lookup"
-; V19 tmp3 [V19,T67] ( 3, 1.50) int -> r15
+; V19 tmp3 [V19,T63] ( 3, 1.50) int -> r15
;* V20 tmp4 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -35,8 +35,8 @@
;* V24 tmp8 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp10 [V26,T28] ( 4, 4 ) byref -> rax single-def "dup spill"
-; V27 tmp11 [V27,T61] ( 3, 2 ) long -> rdx "spilling helperCall"
-; V28 tmp12 [V28,T68] ( 3, 1.50) int -> r15
+; V27 tmp11 [V27,T57] ( 3, 2 ) long -> rdx "spilling helperCall"
+; V28 tmp12 [V28,T64] ( 3, 1.50) int -> r15
;* V29 tmp13 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp14 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -48,9 +48,9 @@
; V37 tmp21 [V37,T32] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
; V38 tmp22 [V38,T33] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp24 [V40,T80] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp24 [V40,T74] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp26 [V42,T81] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp26 [V42,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V43 tmp27 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -58,9 +58,9 @@
; V47 tmp31 [V47,T34] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
; V48 tmp32 [V48,T35] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V50 tmp34 [V50,T82] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V50 tmp34 [V50,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V52 tmp36 [V52,T83] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V52 tmp36 [V52,T77] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -68,62 +68,56 @@
; V57 tmp41 [V57,T36] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
; V58 tmp42 [V58,T37] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V60 tmp44 [V60,T84] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V60 tmp44 [V60,T78] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V62 tmp46 [V62,T85] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V62 tmp46 [V62,T79] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V63 tmp47 [V63 ] ( 6, 10.50) ref -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64 ] ( 9, 19 ) int -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V65 tmp49 [V65,T71] ( 2, 1 ) ref -> rcx single-def "field V33._items (fldOffset=0x0)" P-INDEP
-; V66 tmp50 [V66,T74] ( 2, 1 ) int -> rdx single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V67 tmp51 [V67,T72] ( 2, 1 ) ref -> rcx single-def "field V43._items (fldOffset=0x0)" P-INDEP
-; V68 tmp52 [V68,T75] ( 2, 1 ) int -> rdx single-def "field V43._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T73] ( 2, 1 ) ref -> rcx single-def "field V53._items (fldOffset=0x0)" P-INDEP
-; V70 tmp54 [V70,T76] ( 2, 1 ) int -> rdx single-def "field V53._length (fldOffset=0x8)" P-INDEP
+; V65 tmp49 [V65,T67] ( 2, 1 ) ref -> rcx single-def "field V33._items (fldOffset=0x0)" P-INDEP
+; V66 tmp50 [V66,T70] ( 2, 1 ) int -> rdx single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V67 tmp51 [V67,T68] ( 2, 1 ) ref -> rcx single-def "field V43._items (fldOffset=0x0)" P-INDEP
+; V68 tmp52 [V68,T71] ( 2, 1 ) int -> rdx single-def "field V43._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T69] ( 2, 1 ) ref -> rcx single-def "field V53._items (fldOffset=0x0)" P-INDEP
+; V70 tmp54 [V70,T72] ( 2, 1 ) int -> rdx single-def "field V53._length (fldOffset=0x8)" P-INDEP
; V71 tmp55 [V71,T41] ( 3, 3 ) int -> rax "index expr"
; V72 tmp56 [V72,T42] ( 3, 3 ) int -> rdx "index expr"
; V73 tmp57 [V73,T43] ( 3, 3 ) int -> rax "index expr"
; V74 tmp58 [V74,T44] ( 3, 3 ) int -> rdx "index expr"
; V75 tmp59 [V75,T12] ( 2, 16 ) long -> rdx "argument with side effect"
; V76 tmp60 [V76,T13] ( 2, 16 ) long -> rdx "argument with side effect"
-; V77 tmp61 [V77,T64] ( 2, 2 ) int -> rdx "argument with side effect"
+; V77 tmp61 [V77,T60] ( 2, 2 ) int -> rdx "argument with side effect"
; V78 tmp62 [V78,T45] ( 3, 3 ) int -> rax "index expr"
; V79 tmp63 [V79,T46] ( 3, 3 ) int -> rdx "index expr"
-; V80 tmp64 [V80,T65] ( 2, 2 ) long -> rdx "argument with side effect"
-; V81 cse0 [V81,T69] ( 3, 1.50) int -> rcx "CSE - conservative"
-; V82 cse1 [V82,T70] ( 3, 1.50) int -> r12 "CSE - conservative"
-; V83 rat0 [V83,T54] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
-; V84 rat1 [V84,T62] ( 3, 2 ) long -> rdx "runtime lookup"
+; V80 tmp64 [V80,T61] ( 2, 2 ) long -> rdx "argument with side effect"
+; V81 cse0 [V81,T65] ( 3, 1.50) int -> rcx "CSE - conservative"
+; V82 cse1 [V82,T66] ( 3, 1.50) int -> r12 "CSE - conservative"
+; V83 rat0 [V83,T52] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V84 rat1 [V84,T58] ( 3, 2 ) long -> rdx "runtime lookup"
; V85 rat2 [V85,T47] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V86 rat3 [V86,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V87 rat4 [V87,T77] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V88 rat5 [V88,T48] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V89 rat6 [V89,T06] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
-; V90 rat7 [V90,T10] ( 3, 16 ) long -> rdx "runtime lookup"
-; V91 rat8 [V91,T02] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V92 rat9 [V92,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V93 rat10 [V93,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V94 rat11 [V94,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V95 rat12 [V95,T56] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
-; V96 rat13 [V96,T49] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V97 rat14 [V97,T57] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V98 rat15 [V98,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V99 rat16 [V99,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V100 rat17 [V100,T08] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
-; V101 rat18 [V101,T11] ( 3, 16 ) long -> rdx "runtime lookup"
-; V102 rat19 [V102,T04] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
-; V103 rat20 [V103,T22] ( 3, 8.80) long -> rcx "Spilling to split statement for tree"
-; V104 rat21 [V104,T19] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V105 rat22 [V105,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V106 rat23 [V106,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V107 rat24 [V107,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V108 rat25 [V108,T58] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V86 rat3 [V86,T06] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
+; V87 rat4 [V87,T10] ( 3, 16 ) long -> rdx "runtime lookup"
+; V88 rat5 [V88,T02] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V89 rat6 [V89,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V90 rat7 [V90,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V91 rat8 [V91,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V92 rat9 [V92,T53] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V93 rat10 [V93,T48] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
+; V94 rat11 [V94,T08] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
+; V95 rat12 [V95,T11] ( 3, 16 ) long -> rdx "runtime lookup"
+; V96 rat13 [V96,T04] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
+; V97 rat14 [V97,T22] ( 3, 8.80) long -> rcx "Spilling to split statement for tree"
+; V98 rat15 [V98,T19] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
+;* V99 rat16 [V99,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V100 rat17 [V100,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V101 rat18 [V101,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V102 rat19 [V102,T54] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V103 rat20 [V103,T49] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V104 rat21 [V104,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V105 rat22 [V105,T73] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V106 rat23 [V106,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V107 rat24 [V107,T56] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V108 rat25 [V108,T59] ( 3, 2 ) long -> rdx "runtime lookup"
; V109 rat26 [V109,T51] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V110 rat27 [V110,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V111 rat28 [V111,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V112 rat29 [V112,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V113 rat30 [V113,T60] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
-; V114 rat31 [V114,T63] ( 3, 2 ) long -> rdx "runtime lookup"
-; V115 rat32 [V115,T53] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 72
libraries_tests.run.windows.x64.Release.mch
-21 (-2.83%) : 596833.dasm - System.Collections.Immutable.ImmutableList1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer
1[System.__Canon]):int:this (Tier1)
@@ -9,51 +9,48 @@
; 4 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 9, 7 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
-; V01 arg1 [V01,T11] ( 3, 2 ) ref -> rdi class-hnd single-def <System.__Canon>
+; V00 this [V00,T00] ( 8, 6 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]>
+; V01 arg1 [V01,T09] ( 3, 2 ) ref -> rdi class-hnd single-def <System.__Canon>
; V02 arg2 [V02,T02] ( 8, 5 ) int -> rsi
; V03 arg3 [V03,T01] ( 6, 6 ) int -> rbx single-def
-; V04 arg4 [V04,T19] ( 3, 1 ) ref -> [rbp+0x30] class-hnd <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V04 arg4 [V04,T16] ( 3, 1 ) ref -> [rbp+0x30] class-hnd <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V05 loc0 [V05 ] ( 5, 3 ) struct (56) [rbp-0x70] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]>
-; V06 loc1 [V06,T33] ( 2, 0 ) int -> [rbp-0x74] do-not-enreg[Z] EH-live
+; V06 loc1 [V06,T30] ( 2, 0 ) int -> [rbp-0x74] do-not-enreg[Z] EH-live
; V07 OutArgs [V07 ] ( 1, 1 ) struct (56) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp3 [V10,T22] ( 3, 0 ) long -> rbx "spilling helperCall"
+; V10 tmp3 [V10,T19] ( 3, 0 ) long -> rbx "spilling helperCall"
;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V12 tmp5 [V12,T21] ( 4, 0 ) long -> r13 "VirtualCall with runtime lookup"
+; V12 tmp5 [V12,T18] ( 4, 0 ) long -> r13 "VirtualCall with runtime lookup"
;* V13 tmp6 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V14 tmp7 [V14,T10] ( 6, 4 ) long -> rax "Indirect call through function pointer"
+; V14 tmp7 [V14,T08] ( 6, 4 ) long -> rax "Indirect call through function pointer"
;* V15 tmp8 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp10 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp13 [V20,T30] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V21 tmp14 [V21,T31] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V22 tmp15 [V22,T14] ( 2, 4 ) long -> rdx "argument with side effect"
-; V23 tmp16 [V23,T15] ( 2, 4 ) long -> rdx "argument with side effect"
-; V24 tmp17 [V24,T32] ( 2, 0 ) ref -> r8 "argument with side effect"
-; V25 PSPSym [V25,T20] ( 1, 1 ) long -> [rbp-0x88] do-not-enreg[V] "PSPSym"
-; V26 cse0 [V26,T17] ( 3, 3 ) int -> rdx "CSE - aggressive"
-; V27 cse1 [V27,T16] ( 12, 3.20) long -> r15 multi-def "CSE - aggressive"
-; V28 rat0 [V28,T23] ( 3, 0 ) long -> r15 "Spilling to split statement for tree"
-; V29 rat1 [V29,T24] ( 3, 0 ) long -> rdx "runtime lookup"
-; V30 rat2 [V30,T25] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
-; V31 rat3 [V31,T07] ( 3, 4.40) long -> rdx "Spilling to split statement for tree"
-; V32 rat4 [V32,T12] ( 3, 4 ) long -> rdx "runtime lookup"
+; V20 tmp13 [V20,T27] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V21 tmp14 [V21,T28] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V22 tmp15 [V22,T12] ( 2, 4 ) long -> rdx "argument with side effect"
+; V23 tmp16 [V23,T13] ( 2, 4 ) long -> rdx "argument with side effect"
+; V24 tmp17 [V24,T29] ( 2, 0 ) ref -> r8 "argument with side effect"
+; V25 PSPSym [V25,T17] ( 1, 1 ) long -> [rbp-0x88] do-not-enreg[V] "PSPSym"
+; V26 cse0 [V26,T15] ( 3, 3 ) int -> rdx "CSE - aggressive"
+; V27 cse1 [V27,T14] ( 12, 3.20) long -> r15 multi-def "CSE - aggressive"
+; V28 rat0 [V28,T20] ( 3, 0 ) long -> r15 "Spilling to split statement for tree"
+; V29 rat1 [V29,T21] ( 3, 0 ) long -> rdx "runtime lookup"
+; V30 rat2 [V30,T22] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
+; V31 rat3 [V31,T06] ( 3, 4.40) long -> rdx "Spilling to split statement for tree"
+; V32 rat4 [V32,T10] ( 3, 4 ) long -> rdx "runtime lookup"
; V33 rat5 [V33,T03] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V34 rat6 [V34,T08] ( 2, 4 ) long -> rcx "Spilling to split statement for tree"
-;* V35 rat7 [V35,T18] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V36 rat8 [V36,T04] ( 2, 4 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V37 rat9 [V37,T26] ( 3, 0 ) long -> rbx "fgMakeTemp is creating a new local variable"
-; V38 rat10 [V38,T27] ( 3, 0 ) long -> r13 "fgMakeTemp is creating a new local variable"
-; V39 rat11 [V39,T09] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
-; V40 rat12 [V40,T13] ( 3, 4 ) long -> rdx "runtime lookup"
-; V41 rat13 [V41,T05] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
-; V42 rat14 [V42,T06] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V43 rat15 [V43,T28] ( 3, 0 ) long -> rdx "Spilling to split statement for tree"
-; V44 rat16 [V44,T29] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V34 rat6 [V34,T23] ( 3, 0 ) long -> rbx "fgMakeTemp is creating a new local variable"
+; V35 rat7 [V35,T24] ( 3, 0 ) long -> r13 "fgMakeTemp is creating a new local variable"
+; V36 rat8 [V36,T07] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
+; V37 rat9 [V37,T11] ( 3, 4 ) long -> rdx "runtime lookup"
+; V38 rat10 [V38,T04] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
+; V39 rat11 [V39,T05] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V40 rat12 [V40,T25] ( 3, 0 ) long -> rdx "Spilling to split statement for tree"
+; V41 rat13 [V41,T26] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 144
@@ -84,19 +81,19 @@ G_M57893_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M57893_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx]
test esi, esi
- jl G_M57893_IG25
+ jl G_M57893_IG24
test ebx, ebx
- jl G_M57893_IG26
+ jl G_M57893_IG25
mov edx, dword ptr [rcx+0x20]
cmp ebx, edx
- jg G_M57893_IG26
+ jg G_M57893_IG25
lea eax, [rsi+rbx]
cmp eax, edx
- jg G_M57893_IG26
+ jg G_M57893_IG25
mov r14, gword ptr [rbp+0x30]
; gcrRegs +[r14]
test r14, r14
- je G_M57893_IG27
+ je G_M57893_IG26
;; size=51 bbWeight=1 PerfScore 9.75
G_M57893_IG03: ; bbWeight=1, gcrefRegs=4082 {rcx rdi r14}, byrefRegs=0000 {}, byref, isz
mov r15, qword ptr [rcx]
@@ -137,55 +134,48 @@ G_M57893_IG06: ; bbWeight=1, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {},
G_M57893_IG07: ; bbWeight=1, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref
mov r8, gword ptr [rbp+0x10]
; gcrRegs +[r8]
- mov rcx, qword ptr [r8]
- mov rcx, qword ptr [rcx+0x38]
- mov rcx, qword ptr [rcx]
- mov rcx, qword ptr [rcx+0x28]
- test rcx, rcx
- ;; size=21 bbWeight=1 PerfScore 9.25
-G_M57893_IG08: ; bbWeight=1, gcrefRegs=4180 {rdi r8 r14}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [r8]
mov rdx, qword ptr [rcx+0x38]
mov rdx, qword ptr [rdx]
mov rdx, qword ptr [rdx+0x28]
test rdx, rdx
- je G_M57893_IG16
- ;; size=23 bbWeight=1 PerfScore 9.25
-G_M57893_IG09: ; bbWeight=0.80, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref
+ je G_M57893_IG15
+ ;; size=27 bbWeight=1 PerfScore 10.25
+G_M57893_IG08: ; bbWeight=0.80, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[r8]
- jmp G_M57893_IG17
+ jmp G_M57893_IG16
;; size=5 bbWeight=0.80 PerfScore 1.60
-G_M57893_IG10: ; bbWeight=0, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M57893_IG09: ; bbWeight=0, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [r15+0x38]
mov rcx, qword ptr [rcx]
mov rbx, qword ptr [rcx+0x28]
test rbx, rbx
- je SHORT G_M57893_IG11
- jmp SHORT G_M57893_IG12
+ je SHORT G_M57893_IG10
+ jmp SHORT G_M57893_IG11
;; size=18 bbWeight=0 PerfScore 0.00
-G_M57893_IG11: ; bbWeight=0, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref
+G_M57893_IG10: ; bbWeight=0, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref
mov rcx, r15
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov rbx, rax
;; size=21 bbWeight=0 PerfScore 0.00
-G_M57893_IG12: ; bbWeight=0, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M57893_IG11: ; bbWeight=0, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [r15+0x38]
mov rcx, qword ptr [rcx]
mov r13, qword ptr [rcx+0x30]
test r13, r13
- je SHORT G_M57893_IG13
- jmp SHORT G_M57893_IG14
+ je SHORT G_M57893_IG12
+ jmp SHORT G_M57893_IG13
;; size=18 bbWeight=0 PerfScore 0.00
-G_M57893_IG13: ; bbWeight=0, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref
+G_M57893_IG12: ; bbWeight=0, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref
mov rcx, r15
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov r13, rax
;; size=21 bbWeight=0 PerfScore 0.00
-G_M57893_IG14: ; bbWeight=0, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M57893_IG13: ; bbWeight=0, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
lea rcx, [rbp-0x70]
mov rdx, rbx
call [System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this]
@@ -202,55 +192,53 @@ G_M57893_IG14: ; bbWeight=0, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {},
; gcrRegs -[rax rcx rdx r8]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M57893_IG15
+ jne SHORT G_M57893_IG14
inc esi
- mov r8, gword ptr [rbp+0x10]
- ; gcrRegs +[r8]
- jmp G_M57893_IG08
- ;; size=44 bbWeight=0 PerfScore 0.00
-G_M57893_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi r8 r14]
+ jmp G_M57893_IG07
+ ;; size=40 bbWeight=0 PerfScore 0.00
+G_M57893_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi r14]
mov dword ptr [rbp-0x74], esi
- jmp G_M57893_IG30
+ jmp G_M57893_IG29
;; size=8 bbWeight=0 PerfScore 0.00
-G_M57893_IG16: ; bbWeight=0.20, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref
+G_M57893_IG15: ; bbWeight=0.20, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi r14]
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov rdx, rax
;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M57893_IG17: ; bbWeight=1, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref
+G_M57893_IG16: ; bbWeight=1, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref
lea rcx, [rbp-0x70]
call [System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:MoveNext():ubyte:this]
; gcr arg pop 0
test eax, eax
- jne G_M57893_IG10
+ jne G_M57893_IG09
;; size=18 bbWeight=1 PerfScore 4.75
-G_M57893_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M57893_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi r14]
mov rcx, qword ptr [r15+0x38]
mov rcx, qword ptr [rcx]
mov rax, qword ptr [rcx+0x38]
test rax, rax
- je SHORT G_M57893_IG20
+ je SHORT G_M57893_IG19
;; size=16 bbWeight=1 PerfScore 7.25
-G_M57893_IG19: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M57893_IG21
+G_M57893_IG18: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M57893_IG20
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M57893_IG20: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57893_IG19: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, r15
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M57893_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57893_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rbp-0x70]
call rax
; gcr arg pop 0
mov eax, -1
;; size=11 bbWeight=1 PerfScore 3.75
-G_M57893_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M57893_IG21: ; bbWeight=1, epilog, nogc, extend
add rsp, 144
pop rbx
pop rsi
@@ -261,10 +249,10 @@ G_M57893_IG22: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 4.75
...
-21 (-2.65%) : 653502.dasm - System.Collections.Immutable.ImmutableList1+Node[System.Collections.Generic.KeyValuePair
2[System.Canon,System.ValueTuple2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]]:IndexOf(System.Collections.Generic.KeyValuePair
2[System.Canon,System.ValueTuple2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]],int,int,System.Collections.Generic.IEqualityComparer
1[System.Collections.Generic.KeyValuePair2[System.__Canon,System.ValueTuple
2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]]):int:this (Tier1)
@@ -9,54 +9,51 @@
; 4 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 9, 7.06) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]]>
+; V00 this [V00,T00] ( 8, 6.06) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]]>
; V01 arg1 [V01,T03] ( 3, 5.88) byref -> rdi single-def
; V02 arg2 [V02,T02] ( 8, 5.94) int -> rsi
; V03 arg3 [V03,T01] ( 6, 6 ) int -> rbx single-def
-; V04 arg4 [V04,T24] ( 3, 1.94) ref -> r14 class-hnd <System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]]>
+; V04 arg4 [V04,T21] ( 3, 1.94) ref -> r14 class-hnd <System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]]>
; V05 loc0 [V05 ] ( 5, 3.94) struct (56) [rbp-0x78] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]]>
;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref
; V07 OutArgs [V07 ] ( 1, 1 ) struct (56) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp3 [V10,T20] ( 2, 3.75) long -> rbx "spilling helperCall"
+; V10 tmp3 [V10,T18] ( 2, 3.75) long -> rbx "spilling helperCall"
;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V12 tmp5 [V12,T04] ( 4, 5.62) long -> r12 "VirtualCall with runtime lookup"
; V13 tmp6 [V13 ] ( 2, 3.75) struct (24) [rbp-0x90] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument" <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]>
;* V14 tmp7 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V15 tmp8 [V15,T14] ( 6, 4 ) long -> rax "Indirect call through function pointer"
+; V15 tmp8 [V15,T12] ( 6, 4 ) long -> rax "Indirect call through function pointer"
;* V16 tmp9 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V17 tmp10 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp14 [V21,T32] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V22 tmp15 [V22,T33] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V23 tmp16 [V23,T17] ( 2, 4 ) long -> rdx "argument with side effect"
-; V24 tmp17 [V24,T18] ( 2, 4 ) long -> rdx "argument with side effect"
+; V21 tmp14 [V21,T29] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V22 tmp15 [V22,T30] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V23 tmp16 [V23,T15] ( 2, 4 ) long -> rdx "argument with side effect"
+; V24 tmp17 [V24,T16] ( 2, 4 ) long -> rdx "argument with side effect"
; V25 tmp18 [V25 ] ( 2, 3.75) struct (24) [rbp-0xA8] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]>
-; V26 tmp19 [V26,T19] ( 2, 3.75) ref -> rcx "argument with side effect"
-;* V27 tmp20 [V27,T25] ( 0, 0 ) long -> zero-ref "argument with side effect"
-; V28 PSPSym [V28,T26] ( 1, 1 ) long -> [rbp-0xB8] do-not-enreg[V] "PSPSym"
-; V29 cse0 [V29,T22] ( 3, 2.94) long -> r13 "CSE - aggressive"
-; V30 cse1 [V30,T21] ( 3, 3 ) int -> rdx "CSE - aggressive"
-; V31 cse2 [V31,T13] ( 10, 4.38) long -> r15 multi-def "CSE - aggressive"
-; V32 rat0 [V32,T29] ( 3, 0 ) long -> rdx "Spilling to split statement for tree"
-; V33 rat1 [V33,T30] ( 3, 0 ) long -> rax "runtime lookup"
-; V34 rat2 [V34,T31] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
-; V35 rat3 [V35,T10] ( 3, 4.40) long -> rdx "Spilling to split statement for tree"
-; V36 rat4 [V36,T15] ( 3, 4 ) long -> r13 "runtime lookup"
+; V26 tmp19 [V26,T17] ( 2, 3.75) ref -> rcx "argument with side effect"
+;* V27 tmp20 [V27,T22] ( 0, 0 ) long -> zero-ref "argument with side effect"
+; V28 PSPSym [V28,T23] ( 1, 1 ) long -> [rbp-0xB8] do-not-enreg[V] "PSPSym"
+; V29 cse0 [V29,T20] ( 3, 2.94) long -> r13 "CSE - aggressive"
+; V30 cse1 [V30,T19] ( 3, 3 ) int -> rdx "CSE - aggressive"
+; V31 cse2 [V31,T11] ( 10, 4.38) long -> r15 multi-def "CSE - aggressive"
+; V32 rat0 [V32,T26] ( 3, 0 ) long -> rdx "Spilling to split statement for tree"
+; V33 rat1 [V33,T27] ( 3, 0 ) long -> rax "runtime lookup"
+; V34 rat2 [V34,T28] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V35 rat3 [V35,T09] ( 3, 4.40) long -> rdx "Spilling to split statement for tree"
+; V36 rat4 [V36,T13] ( 3, 4 ) long -> r13 "runtime lookup"
; V37 rat5 [V37,T05] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
-; V38 rat6 [V38,T11] ( 2, 4 ) long -> rcx "Spilling to split statement for tree"
-;* V39 rat7 [V39,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V40 rat8 [V40,T06] ( 2, 4 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V41 rat9 [V41,T08] ( 3, 5.25) long -> r12 "fgMakeTemp is creating a new local variable"
-; V42 rat10 [V42,T12] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
-; V43 rat11 [V43,T16] ( 3, 4 ) long -> rdx "runtime lookup"
-; V44 rat12 [V44,T07] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
-; V45 rat13 [V45,T09] ( 3, 5.25) long -> rax "fgMakeTemp is creating a new local variable"
-; V46 rat14 [V46,T28] ( 3, 0.28) long -> rcx "Spilling to split statement for tree"
-; V47 rat15 [V47,T27] ( 3, 0.35) long -> rax "fgMakeTemp is creating a new local variable"
+; V38 rat6 [V38,T07] ( 3, 5.25) long -> r12 "fgMakeTemp is creating a new local variable"
+; V39 rat7 [V39,T10] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
+; V40 rat8 [V40,T14] ( 3, 4 ) long -> rdx "runtime lookup"
+; V41 rat9 [V41,T06] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
+; V42 rat10 [V42,T08] ( 3, 5.25) long -> rax "fgMakeTemp is creating a new local variable"
+; V43 rat11 [V43,T25] ( 3, 0.28) long -> rcx "Spilling to split statement for tree"
+; V44 rat12 [V44,T24] ( 3, 0.35) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 184
@@ -92,17 +89,17 @@ G_M34862_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M34862_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=4002 {rcx r14}, byrefRegs=0080 {rdi}, gcvars, byref
; gcrRegs +[rcx]
test esi, esi
- jl G_M34862_IG28
+ jl G_M34862_IG27
test ebx, ebx
- jl G_M34862_IG29
+ jl G_M34862_IG28
mov edx, dword ptr [rcx+0x18]
cmp ebx, edx
- jg G_M34862_IG29
+ jg G_M34862_IG28
lea eax, [rsi+rbx]
cmp eax, edx
- jg G_M34862_IG29
+ jg G_M34862_IG28
test r14, r14
- je G_M34862_IG30
+ je G_M34862_IG29
;; size=47 bbWeight=1 PerfScore 8.75
G_M34862_IG03: ; bbWeight=1, gcrefRegs=4002 {rcx r14}, byrefRegs=0080 {rdi}, byref, isz
mov r15, qword ptr [rcx]
@@ -144,43 +141,36 @@ G_M34862_IG06: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0080 {rdi},
G_M34862_IG07: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0080 {rdi}, byref
mov r8, gword ptr [rbp+0x10]
; gcrRegs +[r8]
- mov rcx, qword ptr [r8]
- mov rcx, qword ptr [rcx+0x38]
- mov rcx, qword ptr [rcx]
- mov rcx, qword ptr [rcx+0x10]
- test rcx, rcx
- ;; size=21 bbWeight=1 PerfScore 9.25
-G_M34862_IG08: ; bbWeight=1, gcrefRegs=4100 {r8 r14}, byrefRegs=0080 {rdi}, byref
mov rcx, qword ptr [r8]
mov rdx, qword ptr [rcx+0x38]
mov rdx, qword ptr [rdx]
mov rdx, qword ptr [rdx+0x10]
test rdx, rdx
- je G_M34862_IG17
- ;; size=23 bbWeight=1 PerfScore 9.25
-G_M34862_IG09: ; bbWeight=0.80, gcrefRegs=4000 {r14}, byrefRegs=0080 {rdi}, byref
+ je G_M34862_IG16
+ ;; size=27 bbWeight=1 PerfScore 10.25
+G_M34862_IG08: ; bbWeight=0.80, gcrefRegs=4000 {r14}, byrefRegs=0080 {rdi}, byref
; gcrRegs -[r8]
- jmp G_M34862_IG18
+ jmp G_M34862_IG17
;; size=5 bbWeight=0.80 PerfScore 1.60
-G_M34862_IG10: ; bbWeight=0.94, gcrefRegs=4000 {r14}, byrefRegs=0080 {rdi}, byref, isz
+G_M34862_IG09: ; bbWeight=0.94, gcrefRegs=4000 {r14}, byrefRegs=0080 {rdi}, byref, isz
mov rbx, r13
mov rcx, qword ptr [r15+0x38]
mov rcx, qword ptr [rcx]
mov r12, qword ptr [rcx+0x18]
test r12, r12
- je SHORT G_M34862_IG12
+ je SHORT G_M34862_IG11
;; size=19 bbWeight=0.94 PerfScore 7.03
-G_M34862_IG11: ; bbWeight=0.75, gcrefRegs=4000 {r14}, byrefRegs=0080 {rdi}, byref, isz
- jmp SHORT G_M34862_IG13
+G_M34862_IG10: ; bbWeight=0.75, gcrefRegs=4000 {r14}, byrefRegs=0080 {rdi}, byref, isz
+ jmp SHORT G_M34862_IG12
;; size=2 bbWeight=0.75 PerfScore 1.50
-G_M34862_IG12: ; bbWeight=0.19, gcrefRegs=4000 {r14}, byrefRegs=0080 {rdi}, byref
+G_M34862_IG11: ; bbWeight=0.19, gcrefRegs=4000 {r14}, byrefRegs=0080 {rdi}, byref
mov rcx, r15
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov r12, rax
;; size=21 bbWeight=0.19 PerfScore 0.33
-G_M34862_IG13: ; bbWeight=0.94, gcrefRegs=4000 {r14}, byrefRegs=0080 {rdi}, byref
+G_M34862_IG12: ; bbWeight=0.94, gcrefRegs=4000 {r14}, byrefRegs=0080 {rdi}, byref
lea rcx, [rbp-0x78]
lea rdx, [rbp-0x90]
mov r8, rbx
@@ -190,13 +180,13 @@ G_M34862_IG13: ; bbWeight=0.94, gcrefRegs=4000 {r14}, byrefRegs=0080 {rdi
mov rcx, r14
; gcrRegs +[rcx]
;; size=29 bbWeight=0.94 PerfScore 4.45
-G_M34862_IG14: ; bbWeight=0.94, nogc, extend
+G_M34862_IG13: ; bbWeight=0.94, nogc, extend
vmovdqu xmm0, xmmword ptr [rdi]
vmovdqu xmmword ptr [rbp-0xA8], xmm0
mov r11, qword ptr [rdi+0x10]
mov qword ptr [rbp-0x98], r11
;; size=23 bbWeight=0.94 PerfScore 7.50
-G_M34862_IG15: ; bbWeight=0.94, isz, extend
+G_M34862_IG14: ; bbWeight=0.94, isz, extend
mov r11, r12
lea rdx, [rbp-0xA8]
lea r8, [rbp-0x90]
@@ -204,61 +194,58 @@ G_M34862_IG15: ; bbWeight=0.94, isz, extend
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M34862_IG21
+ jne SHORT G_M34862_IG20
;; size=25 bbWeight=0.94 PerfScore 5.16
-G_M34862_IG16: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0080 {rdi}, byref
+G_M34862_IG15: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0080 {rdi}, byref
inc esi
- mov r8, gword ptr [rbp+0x10]
- ; gcrRegs +[r8]
- jmp G_M34862_IG08
- ;; size=11 bbWeight=0 PerfScore 0.00
-G_M34862_IG17: ; bbWeight=0.20, gcrefRegs=4000 {r14}, byrefRegs=0080 {rdi}, byref
- ; gcrRegs -[r8]
+ jmp G_M34862_IG07
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M34862_IG16: ; bbWeight=0.20, gcrefRegs=4000 {r14}, byrefRegs=0080 {rdi}, byref
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov rdx, rax
;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M34862_IG18: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0080 {rdi}, byref
+G_M34862_IG17: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0080 {rdi}, byref
lea rcx, [rbp-0x78]
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]]:MoveNext():ubyte:this
call [rax]System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]]:MoveNext():ubyte:this
; gcr arg pop 0
test eax, eax
- jne G_M34862_IG10
+ jne G_M34862_IG09
;; size=24 bbWeight=1 PerfScore 5.00
-G_M34862_IG19: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34862_IG18: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r14]
; byrRegs -[rdi]
mov rcx, rsp
- call G_M34862_IG33
+ call G_M34862_IG32
;; size=8 bbWeight=0.06 PerfScore 0.08
-G_M34862_IG20: ; bbWeight=0.06, nogc, isz, extend
- jmp SHORT G_M34862_IG26
+G_M34862_IG19: ; bbWeight=0.06, nogc, isz, extend
+ jmp SHORT G_M34862_IG25
;; size=2 bbWeight=0.06 PerfScore 0.12
-G_M34862_IG21: ; bbWeight=0.94, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M34862_IG20: ; bbWeight=0.94, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [r15+0x38]
mov rcx, qword ptr [rcx]
mov rax, qword ptr [rcx+0x20]
test rax, rax
- je SHORT G_M34862_IG23
+ je SHORT G_M34862_IG22
;; size=16 bbWeight=0.94 PerfScore 6.80
-G_M34862_IG22: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M34862_IG24
+G_M34862_IG21: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M34862_IG23
;; size=2 bbWeight=0.75 PerfScore 1.50
-G_M34862_IG23: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34862_IG22: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, r15
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
;; size=18 bbWeight=0.19 PerfScore 0.28
-G_M34862_IG24: ; bbWeight=0.94, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34862_IG23: ; bbWeight=0.94, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rbp-0x78]
call rax
; gcr arg pop 0
mov eax, esi
;; size=8 bbWeight=0.94 PerfScore 3.52
-G_M34862_IG25: ; bbWeight=0.94, epilog, nogc, extend
...
-25 (-2.59%) : 655560.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Canon,int]:FindValue(System.Canon):byref:this (Tier1)
@@ -9,37 +9,37 @@
; 5 inlinees with PGO data; 22 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 20, 10.40) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]>
+; V00 this [V00,T00] ( 19, 9.60) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]>
; V01 arg1 [V01,T01] ( 12, 5.40) ref -> rsi ld-addr-op class-hnd single-def <System.__Canon>
-; V02 loc0 [V02,T14] ( 14, 4.00) byref -> r13
-; V03 loc1 [V03,T25] ( 3, 2 ) byref -> rax
-; V04 loc2 [V04,T27] ( 4, 1.60) ref -> rdi class-hnd single-def <<unknown class>>
-; V05 loc3 [V05,T24] ( 4, 2.40) int -> rdi single-def
-; V06 loc4 [V06,T15] ( 9, 4.01) int -> rbp
+; V02 loc0 [V02,T13] ( 14, 4.00) byref -> r13
+; V03 loc1 [V03,T23] ( 3, 2 ) byref -> rax
+; V04 loc2 [V04,T25] ( 4, 1.60) ref -> rdi class-hnd single-def <<unknown class>>
+; V05 loc3 [V05,T22] ( 4, 2.40) int -> rdi single-def
+; V06 loc4 [V06,T14] ( 9, 4.01) int -> rbp
; V07 loc5 [V07 ] ( 7, 2.41) struct (16) [rsp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,int]]>
-; V08 loc6 [V08,T33] ( 7, 0.80) int -> r14
-; V09 loc7 [V09,T23] ( 6, 2.41) ref -> r15 class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
-; V10 loc8 [V10,T49] ( 3, 0 ) int -> rbp single-def
-; V11 loc9 [V11,T42] ( 6, 0 ) int -> r14
+; V08 loc6 [V08,T30] ( 7, 0.80) int -> r14
+; V09 loc7 [V09,T21] ( 6, 2.41) ref -> r15 class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+; V10 loc8 [V10,T46] ( 3, 0 ) int -> rbp single-def
+; V11 loc9 [V11,T39] ( 6, 0 ) int -> r14
; V12 loc10 [V12 ] ( 4, 0 ) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,int]]>
-; V13 loc11 [V13,T43] ( 4, 0 ) int -> r15
+; V13 loc11 [V13,T40] ( 4, 0 ) int -> r15
; V14 OutArgs [V14 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V15 tmp1 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp2 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V17 tmp3 [V17,T44] ( 4, 0 ) long -> r11 "VirtualCall with runtime lookup"
+; V17 tmp3 [V17,T41] ( 4, 0 ) long -> r11 "VirtualCall with runtime lookup"
;* V18 tmp4 [V18 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V19 tmp5 [V19 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V20 tmp6 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp7 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V22 tmp8 [V22,T45] ( 4, 0 ) long -> r11 "VirtualCall with runtime lookup"
+; V22 tmp8 [V22,T42] ( 4, 0 ) long -> r11 "VirtualCall with runtime lookup"
;* V23 tmp9 [V23 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V24 tmp10 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp11 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V26 tmp12 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V27 tmp13 [V27,T28] ( 3, 1.60) int -> rdi "guarded devirt return temp"
+; V27 tmp13 [V27,T26] ( 3, 1.60) int -> rdi "guarded devirt return temp"
;* V28 tmp14 [V28 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp"
;* V29 tmp15 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Text.RegularExpressions.Generator.UpgradeToGeneratedRegexAnalyzer>
-; V30 tmp16 [V30,T46] ( 2, 0 ) int -> rax "guarded devirt return temp"
+; V30 tmp16 [V30,T43] ( 2, 0 ) int -> rax "guarded devirt return temp"
; V31 tmp17 [V31,T08] ( 7, 4.80) ref -> rdx "guarded devirt arg temp"
;* V32 tmp18 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.ObjectEqualityComparer`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]>
;* V33 tmp19 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -50,76 +50,73 @@
; V38 tmp24 [V38,T03] ( 3, 4.80) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
; V39 tmp25 [V39,T04] ( 3, 4.80) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V40 tmp26 [V40 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V41 tmp27 [V41,T34] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V41 tmp27 [V41,T31] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V42 tmp28 [V42 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V43 tmp29 [V43,T35] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V43 tmp29 [V43,T32] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V44 tmp30 [V44 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer>
;* V45 tmp31 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
;* V46 tmp32 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer>
;* V47 tmp33 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V48 tmp34 [V48 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V49 tmp35 [V49 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V50 tmp36 [V50,T50] ( 3, 0 ) int -> rdx "Inlining Arg"
-; V51 tmp37 [V51,T47] ( 3, 0 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
-; V52 tmp38 [V52,T48] ( 3, 0 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V50 tmp36 [V50,T47] ( 3, 0 ) int -> rdx "Inlining Arg"
+; V51 tmp37 [V51,T44] ( 3, 0 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V52 tmp38 [V52,T45] ( 3, 0 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V53 tmp39 [V53 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V54 tmp40 [V54,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V54 tmp40 [V54,T72] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V55 tmp41 [V55 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V56 tmp42 [V56,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V56 tmp42 [V56,T73] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V57 tmp43 [V57 ] ( 3, 1.60) ref -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V07._items (fldOffset=0x0)" P-DEP
; V58 tmp44 [V58 ] ( 7, 2.41) int -> [rsp+0x40] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP
; V59 tmp45 [V59 ] ( 2, 0 ) ref -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V12._items (fldOffset=0x0)" P-DEP
; V60 tmp46 [V60 ] ( 4, 0 ) int -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V12._length (fldOffset=0x8)" P-DEP
-; V61 tmp47 [V61,T29] ( 2, 1.60) ref -> rcx single-def "field V34._items (fldOffset=0x0)" P-INDEP
-; V62 tmp48 [V62,T30] ( 2, 1.60) int -> rdx single-def "field V34._length (fldOffset=0x8)" P-INDEP
-; V63 tmp49 [V63,T68] ( 2, 0 ) ref -> rcx single-def "field V47._items (fldOffset=0x0)" P-INDEP
-; V64 tmp50 [V64,T69] ( 2, 0 ) int -> rdx single-def "field V47._length (fldOffset=0x8)" P-INDEP
-; V65 tmp51 [V65,T51] ( 3, 0 ) int -> rax "index expr"
-; V66 tmp52 [V66,T52] ( 3, 0 ) int -> rdx "index expr"
-; V67 tmp53 [V67,T70] ( 2, 0 ) long -> rdx "argument with side effect"
+; V61 tmp47 [V61,T27] ( 2, 1.60) ref -> rcx single-def "field V34._items (fldOffset=0x0)" P-INDEP
+; V62 tmp48 [V62,T28] ( 2, 1.60) int -> rdx single-def "field V34._length (fldOffset=0x8)" P-INDEP
+; V63 tmp49 [V63,T65] ( 2, 0 ) ref -> rcx single-def "field V47._items (fldOffset=0x0)" P-INDEP
+; V64 tmp50 [V64,T66] ( 2, 0 ) int -> rdx single-def "field V47._length (fldOffset=0x8)" P-INDEP
+; V65 tmp51 [V65,T48] ( 3, 0 ) int -> rax "index expr"
+; V66 tmp52 [V66,T49] ( 3, 0 ) int -> rdx "index expr"
+; V67 tmp53 [V67,T67] ( 2, 0 ) long -> rdx "argument with side effect"
; V68 tmp54 [V68,T06] ( 3, 4.80) int -> rax "index expr"
; V69 tmp55 [V69,T07] ( 3, 4.80) int -> rdx "index expr"
-; V70 tmp56 [V70,T20] ( 4, 3.20) long -> rdx "argument with side effect"
-;* V71 rat0 [V71,T13] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V72 rat1 [V72,T26] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V70 tmp56 [V70,T18] ( 4, 3.20) long -> rdx "argument with side effect"
+;* V71 rat0 [V71,T12] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V72 rat1 [V72,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
;* V73 rat2 [V73,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V74 rat3 [V74,T16] ( 3, 3.52) long -> rcx "Spilling to split statement for tree"
-; V75 rat4 [V75,T21] ( 3, 3.20) long -> rdx "runtime lookup"
+; V74 rat3 [V74,T15] ( 3, 3.52) long -> rcx "Spilling to split statement for tree"
+; V75 rat4 [V75,T19] ( 3, 3.20) long -> rdx "runtime lookup"
; V76 rat5 [V76,T09] ( 3, 4.48) long -> rdx "fgMakeTemp is creating a new local variable"
-; V77 rat6 [V77,T17] ( 2, 3.20) long -> rcx "Spilling to split statement for tree"
-;* V78 rat7 [V78,T31] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V79 rat8 [V79,T10] ( 2, 3.20) long -> rcx "fgMakeTemp is creating a new local variable"
-;* V80 rat9 [V80,T18] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V81 rat10 [V81,T32] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V82 rat11 [V82,T11] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V83 rat12 [V83,T19] ( 3, 3.48) long -> rcx "Spilling to split statement for tree"
-; V84 rat13 [V84,T22] ( 3, 3.17) long -> rdx "runtime lookup"
-; V85 rat14 [V85,T12] ( 3, 4.44) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V86 rat15 [V86,T53] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V87 rat16 [V87,T71] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V88 rat17 [V88,T54] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V89 rat18 [V89,T38] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V90 rat19 [V90,T41] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V91 rat20 [V91,T36] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V92 rat21 [V92,T39] ( 3, 0.04) long -> rcx "Spilling to split statement for tree"
-; V93 rat22 [V93,T40] ( 3, 0.03) long -> rdx "runtime lookup"
-; V94 rat23 [V94,T37] ( 3, 0.04) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V95 rat24 [V95,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V96 rat25 [V96,T72] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V97 rat26 [V97,T56] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V98 rat27 [V98,T57] ( 3, 0 ) long -> rcx "Spilling to split statement for tree"
-; V99 rat28 [V99,T58] ( 3, 0 ) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V100 rat29 [V100,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V101 rat30 [V101,T73] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V102 rat31 [V102,T60] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V77 rat6 [V77,T16] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V78 rat7 [V78,T29] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V79 rat8 [V79,T10] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V80 rat9 [V80,T17] ( 3, 3.48) long -> rcx "Spilling to split statement for tree"
+; V81 rat10 [V81,T20] ( 3, 3.17) long -> rdx "runtime lookup"
+; V82 rat11 [V82,T11] ( 3, 4.44) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V83 rat12 [V83,T50] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V84 rat13 [V84,T68] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V85 rat14 [V85,T51] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V86 rat15 [V86,T35] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V87 rat16 [V87,T38] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V88 rat17 [V88,T33] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V89 rat18 [V89,T36] ( 3, 0.04) long -> rcx "Spilling to split statement for tree"
+; V90 rat19 [V90,T37] ( 3, 0.03) long -> rdx "runtime lookup"
+; V91 rat20 [V91,T34] ( 3, 0.04) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V92 rat21 [V92,T52] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V93 rat22 [V93,T69] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V94 rat23 [V94,T53] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V95 rat24 [V95,T54] ( 3, 0 ) long -> rcx "Spilling to split statement for tree"
+; V96 rat25 [V96,T55] ( 3, 0 ) long -> r11 "fgMakeTemp is creating a new local variable"
+;* V97 rat26 [V97,T56] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V98 rat27 [V98,T70] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V99 rat28 [V99,T57] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V100 rat29 [V100,T58] ( 3, 0 ) long -> rcx "Spilling to split statement for tree"
+; V101 rat30 [V101,T59] ( 3, 0 ) long -> rdx "runtime lookup"
+; V102 rat31 [V102,T60] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
; V103 rat32 [V103,T61] ( 3, 0 ) long -> rcx "Spilling to split statement for tree"
-; V104 rat33 [V104,T62] ( 3, 0 ) long -> rdx "runtime lookup"
-; V105 rat34 [V105,T63] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
-; V106 rat35 [V106,T64] ( 3, 0 ) long -> rcx "Spilling to split statement for tree"
-; V107 rat36 [V107,T65] ( 3, 0 ) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V108 rat37 [V108,T66] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V109 rat38 [V109,T74] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V110 rat39 [V110,T67] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V104 rat33 [V104,T62] ( 3, 0 ) long -> r11 "fgMakeTemp is creating a new local variable"
+;* V105 rat34 [V105,T63] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V106 rat35 [V106,T71] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V107 rat36 [V107,T64] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 80
@@ -146,19 +143,19 @@ G_M50578_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=50 bbWeight=1 PerfScore 14.33
G_M50578_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
test rsi, rsi
- je G_M50578_IG41
+ je G_M50578_IG39
cmp dword ptr [rbx], ebx
cmp dword ptr [rbx+0x40], 0
- jle G_M50578_IG18
+ jle G_M50578_IG15
;; size=21 bbWeight=1 PerfScore 8.25
G_M50578_IG03: ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
test rdi, rdi
- jne G_M50578_IG28
+ jne G_M50578_IG26
mov rcx, 0xD1FFAB1E ; System.Text.RegularExpressions.Generator.UpgradeToGeneratedRegexAnalyzer
cmp qword ptr [rsi], rcx
- jne G_M50578_IG16
+ jne G_M50578_IG40
mov rcx, rsi
; gcrRegs +[rcx]
call <unknown method>
@@ -179,11 +176,11 @@ G_M50578_IG04: ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
mov eax, edx
sar eax, 14
cmp eax, dword ptr [rcx+0x08]
- jae G_M50578_IG40
+ jae G_M50578_IG38
mov rcx, gword ptr [rcx+8*rax+0x10]
and edx, 0x3FFF
cmp edx, dword ptr [rcx+0x08]
- jae G_M50578_IG40
+ jae G_M50578_IG38
mov ebp, dword ptr [rcx+4*rdx+0x10]
;; size=67 bbWeight=0.80 PerfScore 20.40
G_M50578_IG05: ; bbWeight=0.80, nogc, extend
@@ -198,9 +195,9 @@ G_M50578_IG06: ; bbWeight=0.80, extend
mov rdx, qword ptr [rdx]
mov rdx, qword ptr [rdx+0x18]
test rdx, rdx
- je G_M50578_IG17
+ je G_M50578_IG16
;; size=26 bbWeight=0.80 PerfScore 7.60
-G_M50578_IG07: ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M50578_IG07: ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rcx, rdx
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
call [rax]System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
@@ -210,29 +207,54 @@ G_M50578_IG07: ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcrRegs +[r15]
dec ebp
test r15, r15
- je G_M50578_IG20
+ je G_M50578_IG18
mov rcx, 0xD1FFAB1E ; System.Collections.Generic.ObjectEqualityComparer`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]
cmp qword ptr [r15], rcx
- jne G_M50578_IG20
- mov rcx, qword ptr [rbx]
- mov rcx, qword ptr [rcx+0x38]
- mov rcx, qword ptr [rcx]
- mov rcx, qword ptr [rcx+0x30]
- test rcx, rcx
- jne SHORT G_M50578_IG11
- ;; size=67 bbWeight=0.80 PerfScore 15.00
-G_M50578_IG08: ; bbWeight=0.16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jne G_M50578_IG18
+ ;; size=48 bbWeight=0.80 PerfScore 7.60
+G_M50578_IG08: ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax r15]
...
+0 (0.00%) : 486559.dasm - System.Text.Unicode.Tests.Utf8Tests:.cctor() (Tier1-OSR)
@@ -1093,8 +1093,6 @@ G_M41182_IG50: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcr arg pop 0
test eax, eax
je SHORT G_M41182_IG51
- mov rdi, gword ptr [rbp+0x130]
- ; gcrRegs +[rdi]
mov rcx, gword ptr [rbp+0x130]
; gcrRegs +[rcx]
mov rsi, gword ptr [rcx+0x20]
@@ -1111,11 +1109,13 @@ G_M41182_IG50: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
call [rsi+0x18]<unknown method>
; gcrRegs -[rcx rsi]
; gcr arg pop 0
- mov dword ptr [rdi+0x10], eax
+ mov rcx, gword ptr [rbp+0x130]
+ ; gcrRegs +[rcx]
+ mov dword ptr [rcx+0x10], eax
jmp G_M41182_IG33
;; size=87 bbWeight=4.00 PerfScore 104.00
G_M41182_IG51: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
+ ; gcrRegs -[rcx]
mov rcx, gword ptr [rbp+0x130]
; gcrRegs +[rcx]
cmp gword ptr [rcx+0x28], 0
+0 (0.00%) : 651851.dasm - Roslyn.Utilities.AsyncLazy1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task
1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
@@ -14,7 +14,7 @@
; V02 arg2 [V02 ] ( 7, 5 ) struct ( 8) [rbp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
; V04 loc1 [V04 ] ( 3, 2 ) struct ( 8) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Roslyn.Utilities.AsyncLazy`1+WaitThatValidatesInvariants[System.__Canon]>
-; V05 loc2 [V05,T30] ( 2, 2 ) ref -> rsi class-hnd single-def <<unknown class>>
+; V05 loc2 [V05,T28] ( 2, 2 ) ref -> rsi class-hnd single-def <<unknown class>>
; V06 loc3 [V06,T20] ( 9, 4 ) ref -> [rbp-0x60] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T24] ( 4, 3 ) ref -> rsi
@@ -26,57 +26,54 @@
;* V14 tmp7 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V15 tmp8 [V15,T21] ( 6, 4 ) long -> rax "Indirect call through function pointer"
;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.HashSet`1+Enumerator[Roslyn.Utilities.AsyncLazy`1+Request[Microsoft.CodeAnalysis.TreeAndVersion]]>
-; V17 tmp10 [V17,T35] ( 2, 0 ) ubyte -> rcx "Inline return value spill temp"
-; V18 tmp11 [V18,T45] ( 2, 0 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
-; V19 tmp12 [V19,T29] ( 3, 2 ) ref -> registers class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.__Canon]>
+; V17 tmp10 [V17,T33] ( 2, 0 ) ubyte -> rcx "Inline return value spill temp"
+; V18 tmp11 [V18,T42] ( 2, 0 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
+; V19 tmp12 [V19,T27] ( 3, 2 ) ref -> registers class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.__Canon]>
; V20 tmp13 [V20,T08] ( 10, 11 ) ref -> rsi class-hnd "Inlining Arg" <Roslyn.Utilities.AsyncLazy`1+Request[System.__Canon]>
-; V21 tmp14 [V21,T36] ( 2, 0 ) ubyte -> rdx "Inline return value spill temp"
+; V21 tmp14 [V21,T34] ( 2, 0 ) ubyte -> rdx "Inline return value spill temp"
; V22 tmp15 [V22,T22] ( 3, 4 ) byref -> r14 "Inlining Arg"
;* V23 tmp16 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
;* V24 tmp17 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Exception]>
-; V25 tmp18 [V25,T32] ( 3, 1.90) ref -> rdx class-hnd "Inline return value spill temp" <System.__Canon>
+; V25 tmp18 [V25,T30] ( 3, 1.90) ref -> rdx class-hnd "Inline return value spill temp" <System.__Canon>
;* V26 tmp19 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V27 tmp20 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V28 tmp21 [V28,T31] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V28 tmp21 [V28,T29] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V29 tmp22 [V29,T03] ( 10, 27.23) ref -> r15 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
-; V30 tmp23 [V30,T34] ( 3, 1.80) ref -> r14 class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
+; V30 tmp23 [V30,T32] ( 3, 1.80) ref -> r14 class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
; V31 tmp24 [V31,T06] ( 2, 8 ) ubyte -> rcx "Inline return value spill temp"
; V32 tmp25 [V32,T05] ( 5, 14 ) int -> [rbp-0x4C] spill-single-def "Inline stloc first use temp"
; V33 tmp26 [V33,T07] ( 3, 12 ) ubyte -> rcx "Inline return value spill temp"
; V34 tmp27 [V34,T00] ( 6,164 ) int -> [rbp-0x50] "Inline stloc first use temp"
; V35 tmp28 [V35,T01] ( 3, 96 ) int -> rax "Inline stloc first use temp"
-; V36 tmp29 [V36,T39] ( 3, 0 ) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>>
-; V37 tmp30 [V37,T33] ( 3, 1.81) ref -> rax class-hnd "Inline stloc first use temp" <System.Object>
+; V36 tmp29 [V36,T36] ( 3, 0 ) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>>
+; V37 tmp30 [V37,T31] ( 3, 1.81) ref -> rax class-hnd "Inline stloc first use temp" <System.Object>
; V38 tmp31 [V38,T15] ( 3, 5.40) byref -> rcx "Inlining Arg"
; V39 tmp32 [V39,T23] ( 2, 3.60) ref -> rdx class-hnd exact "Inlining Arg" <System.Object>
; V40 tmp33 [V40 ] ( 2, 0.50) struct ( 8) [rbp-0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.SpinWait>
; V41 tmp34 [V41,T25] ( 3, 3 ) ref -> r12 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
;* V42 tmp35 [V42 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V43 tmp36 [V43,T19] ( 4, 4.21) byref -> rsi "Inlining Arg"
-; V44 tmp37 [V44,T27] ( 5, 2.21) ref -> r13 class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
+; V44 tmp37 [V44,T26] ( 5, 2.21) ref -> r13 class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
;* V45 tmp38 [V45 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V46 tmp39 [V46 ] ( 7, 5 ) ref -> [rbp+0x20] do-not-enreg[X] addr-exposed single-def "field V02._source (fldOffset=0x0)" P-DEP
; V47 tmp40 [V47 ] ( 3, 2 ) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V04.<asyncLazy>P (fldOffset=0x0)" P-DEP
; V48 tmp41 [V48 ] ( 2, 0.50) int -> [rbp-0x58] do-not-enreg[X] addr-exposed "field V40._count (fldOffset=0x0)" P-DEP
-; V49 tmp42 [V49,T46] ( 2, 0 ) ref -> rcx "argument with side effect"
-; V50 tmp43 [V50,T47] ( 2, 0 ) ref -> rdx "argument with side effect"
-; V51 tmp44 [V51,T48] ( 2, 0 ) ref -> rdx "argument with side effect"
-; V52 PSPSym [V52,T38] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
+; V49 tmp42 [V49,T43] ( 2, 0 ) ref -> rcx "argument with side effect"
+; V50 tmp43 [V50,T44] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V51 tmp44 [V51,T45] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V52 PSPSym [V52,T35] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
; V53 cse0 [V53,T02] ( 4, 40.90) byref -> r14 "CSE - aggressive"
-; V54 rat0 [V54,T40] ( 3, 0 ) long -> rdx "Spilling to split statement for tree"
-; V55 rat1 [V55,T41] ( 3, 0 ) long -> rax "runtime lookup"
-; V56 rat2 [V56,T42] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V54 rat0 [V54,T37] ( 3, 0 ) long -> rdx "Spilling to split statement for tree"
+; V55 rat1 [V55,T38] ( 3, 0 ) long -> rax "runtime lookup"
+; V56 rat2 [V56,T39] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
; V57 rat3 [V57,T16] ( 3, 4.40) long -> rdx "Spilling to split statement for tree"
; V58 rat4 [V58,T12] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
; V59 rat5 [V59,T17] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
; V60 rat6 [V60,T13] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V61 rat7 [V61,T28] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V62 rat8 [V62,T37] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V63 rat9 [V63,T26] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V64 rat10 [V64,T18] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
-; V65 rat11 [V65,T14] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable"
-; V66 rat12 [V66,T43] ( 3, 0 ) long -> rcx "Spilling to split statement for tree"
-; V67 rat13 [V67,T44] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V61 rat7 [V61,T18] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
+; V62 rat8 [V62,T14] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable"
+; V63 rat9 [V63,T40] ( 3, 0 ) long -> rcx "Spilling to split statement for tree"
+; V64 rat10 [V64,T41] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 88
@@ -280,7 +277,7 @@ G_M38013_IG20: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {},
mov rdx, qword ptr [rdx]
mov r11, qword ptr [rdx+0x60]
test r11, r11
- je G_M38013_IG36
+ je G_M38013_IG35
;; size=23 bbWeight=1 PerfScore 9.25
G_M38013_IG21: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbp-0x60]
@@ -333,7 +330,7 @@ G_M38013_IG24: ; bbWeight=4, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefR
;; size=30 bbWeight=4 PerfScore 96.00
G_M38013_IG25: ; bbWeight=32, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
test eax, 0xD1FFAB1E
- jne G_M38013_IG35
+ jne G_M38013_IG36
mov ecx, eax
or ecx, 0xD1FFAB1E
mov dword ptr [rbp-0x50], eax
@@ -494,24 +491,21 @@ G_M38013_IG34: ; bbWeight=0, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefR
; gcr arg pop 0
jmp SHORT G_M38013_IG40
;; size=38 bbWeight=0 PerfScore 0.00
-G_M38013_IG35: ; bbWeight=4, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
- ; gcrRegs +[rdx]
- ; byrRegs +[r14]
- xor ecx, ecx
- jmp SHORT G_M38013_IG38
- ;; size=4 bbWeight=4 PerfScore 9.00
-G_M38013_IG36: ; bbWeight=0.20, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdx rsi r15]
- ; byrRegs -[r14]
+G_M38013_IG35: ; bbWeight=0.20, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi r15]
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov r11, rax
jmp G_M38013_IG21
;; size=23 bbWeight=0.20 PerfScore 0.70
-G_M38013_IG37: ; bbWeight=4, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref
+G_M38013_IG36: ; bbWeight=4, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
; gcrRegs +[rdx rsi r15]
; byrRegs +[r14]
+ xor ecx, ecx
+ jmp SHORT G_M38013_IG38
+ ;; size=4 bbWeight=4 PerfScore 9.00
+G_M38013_IG37: ; bbWeight=4, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref
mov ecx, 1
;; size=5 bbWeight=4 PerfScore 1.00
G_M38013_IG38: ; bbWeight=4, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref
+21 (+1.18%) : 52945.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Canon,System.Canon]:TryInsert(System.Canon,System.Canon,ubyte):ubyte:this (Tier1)
@@ -9,32 +9,32 @@
; 5 inlinees with PGO data; 20 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 30, 13.24) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 31, 14.78) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 15, 6.16) ref -> rsi ld-addr-op class-hnd single-def <System.__Canon>
-; V02 arg2 [V02,T14] ( 5, 3 ) ref -> rdi class-hnd single-def <System.__Canon>
-; V03 arg3 [V03,T16] ( 6, 2.50) ubyte -> rbp single-def
+; V02 arg2 [V02,T13] ( 5, 3 ) ref -> rdi class-hnd single-def <System.__Canon>
+; V03 arg3 [V03,T15] ( 6, 2.50) ubyte -> rbp single-def
; V04 loc0 [V04 ] ( 17, 7.11) struct (16) [rsp+0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.__Canon]]>
-; V05 loc1 [V05,T26] ( 5, 3.06) ref -> r14 class-hnd single-def <<unknown class>>
-; V06 loc2 [V06,T23] ( 6, 3.59) int -> r13 single-def
-; V07 loc3 [V07,T33] ( 7, 2.58) int -> r12
-; V08 loc4 [V08,T24] ( 5, 3.06) byref -> r15
-; V09 loc5 [V09,T13] ( 13, 5.62) int -> [rsp+0x4C]
-; V10 loc6 [V10,T42] ( 5, 2.01) int -> rbp
-; V11 loc7 [V11,T51] ( 4, 1.51) ref -> [rsp+0x28] class-hnd spill-single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
-; V12 loc8 [V12,T50] ( 3, 1.51) int -> rbp single-def
+; V05 loc1 [V05,T24] ( 5, 3.06) ref -> r14 class-hnd single-def <<unknown class>>
+; V06 loc2 [V06,T21] ( 6, 3.59) int -> r13 single-def
+; V07 loc3 [V07,T31] ( 7, 2.58) int -> r12
+; V08 loc4 [V08,T22] ( 5, 3.06) byref -> r15
+; V09 loc5 [V09,T12] ( 13, 5.62) int -> [rsp+0x4C]
+; V10 loc6 [V10,T39] ( 5, 2.01) int -> rbp
+; V11 loc7 [V11,T48] ( 4, 1.51) ref -> [rsp+0x28] class-hnd spill-single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+; V12 loc8 [V12,T47] ( 3, 1.51) int -> rbp single-def
; V13 OutArgs [V13 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T40] ( 3, 2.04) int -> r13
+; V14 tmp1 [V14,T38] ( 3, 2.04) int -> r13
;* V15 tmp2 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp3 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V17 tmp4 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V18 tmp5 [V18,T15] ( 5, 4.99) byref -> r12 single-def "dup spill"
-; V19 tmp6 [V19,T73] ( 3, 0.00) long -> rdx "spilling helperCall"
+; V18 tmp5 [V18,T14] ( 5, 4.99) byref -> r12 single-def "dup spill"
+; V19 tmp6 [V19,T70] ( 3, 0.00) long -> rdx "spilling helperCall"
;* V20 tmp7 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp8 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp9 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V23 tmp10 [V23,T77] ( 3, 0 ) long -> [rsp+0x40] "spilling helperCall"
+; V23 tmp10 [V23,T74] ( 3, 0 ) long -> [rsp+0x40] "spilling helperCall"
;* V24 tmp11 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V25 tmp12 [V25,T76] ( 4, 0 ) long -> [rsp+0x38] "VirtualCall with runtime lookup"
+; V25 tmp12 [V25,T73] ( 4, 0 ) long -> [rsp+0x38] "VirtualCall with runtime lookup"
;* V26 tmp13 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V27 tmp14 [V27 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V28 tmp15 [V28 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -47,12 +47,12 @@
;* V35 tmp22 [V35 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V36 tmp23 [V36 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V37 tmp24 [V37 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V38 tmp25 [V38,T63] ( 4, 0.06) long -> r11 "VirtualCall with runtime lookup"
-; V39 tmp26 [V39,T47] ( 3, 2.00) int -> r13 "guarded devirt return temp"
+; V38 tmp25 [V38,T60] ( 4, 0.06) long -> r11 "VirtualCall with runtime lookup"
+; V39 tmp26 [V39,T44] ( 3, 2.00) int -> r13 "guarded devirt return temp"
;* V40 tmp27 [V40 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp"
;* V41 tmp28 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.TransformNode`2[Microsoft.Interop.DiagnosticInfo,Microsoft.Interop.DiagnosticInfo]>
-; V42 tmp29 [V42,T56] ( 3, 1.00) int -> r8 "guarded devirt return temp"
-; V43 tmp30 [V43,T19] ( 7, 4.28) ref -> r14 "guarded devirt arg temp"
+; V42 tmp29 [V42,T53] ( 3, 1.00) int -> r8 "guarded devirt return temp"
+; V43 tmp30 [V43,T17] ( 7, 4.28) ref -> r14 "guarded devirt arg temp"
;* V44 tmp31 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.ObjectEqualityComparer`1[System.Object]>
;* V45 tmp32 [V45 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V46 tmp33 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
@@ -62,93 +62,90 @@
; V50 tmp37 [V50,T05] ( 3, 6.14) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
; V51 tmp38 [V51,T06] ( 3, 6.14) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V52 tmp39 [V52 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V53 tmp40 [V53,T53] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V53 tmp40 [V53,T50] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V54 tmp41 [V54 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V55 tmp42 [V55,T54] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V55 tmp42 [V55,T51] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V56 tmp43 [V56 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inlining Arg" <System.Object>
;* V57 tmp44 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
-; V58 tmp45 [V58,T57] ( 3, 1.00) int -> r8 "guarded devirt return temp"
+; V58 tmp45 [V58,T54] ( 3, 1.00) int -> r8 "guarded devirt return temp"
;* V59 tmp46 [V59 ] ( 0, 0 ) ref -> zero-ref "guarded devirt arg temp"
;* V60 tmp47 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.MetadataImageReference>
;* V61 tmp48 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V62 tmp49 [V62 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V63 tmp50 [V63 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V64 tmp51 [V64,T60] ( 3, 0.11) int -> rdx "Inlining Arg"
-; V65 tmp52 [V65,T58] ( 3, 0.11) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
-; V66 tmp53 [V66,T59] ( 3, 0.11) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V64 tmp51 [V64,T57] ( 3, 0.11) int -> rdx "Inlining Arg"
+; V65 tmp52 [V65,T55] ( 3, 0.11) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V66 tmp53 [V66,T56] ( 3, 0.11) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V67 tmp54 [V67 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V68 tmp55 [V68,T68] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V68 tmp55 [V68,T65] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V69 tmp56 [V69 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V70 tmp57 [V70,T69] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V70 tmp57 [V70,T66] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V71 tmp58 [V71 ] ( 12, 4.56) ref -> [rsp+0x50] do-not-enreg[X] addr-exposed "field V04._items (fldOffset=0x0)" P-DEP
; V72 tmp59 [V72 ] ( 17, 7.11) int -> [rsp+0x58] do-not-enreg[X] addr-exposed "field V04._length (fldOffset=0x8)" P-DEP
-; V73 tmp60 [V73,T38] ( 2, 2.05) ref -> rcx single-def "field V46._items (fldOffset=0x0)" P-INDEP
-; V74 tmp61 [V74,T39] ( 2, 2.05) int -> rdx single-def "field V46._length (fldOffset=0x8)" P-INDEP
-; V75 tmp62 [V75,T66] ( 2, 0.04) ref -> rcx single-def "field V61._items (fldOffset=0x0)" P-INDEP
-; V76 tmp63 [V76,T67] ( 2, 0.04) int -> rdx single-def "field V61._length (fldOffset=0x8)" P-INDEP
+; V73 tmp60 [V73,T36] ( 2, 2.05) ref -> rcx single-def "field V46._items (fldOffset=0x0)" P-INDEP
+; V74 tmp61 [V74,T37] ( 2, 2.05) int -> rdx single-def "field V46._length (fldOffset=0x8)" P-INDEP
+; V75 tmp62 [V75,T63] ( 2, 0.04) ref -> rcx single-def "field V61._items (fldOffset=0x0)" P-INDEP
+; V76 tmp63 [V76,T64] ( 2, 0.04) int -> rdx single-def "field V61._length (fldOffset=0x8)" P-INDEP
; V77 tmp64 [V77,T08] ( 3, 6.14) int -> rax "index expr"
; V78 tmp65 [V78,T09] ( 3, 6.14) int -> rdx "index expr"
-; V79 tmp66 [V79,T21] ( 2, 4.08) long -> rdx "argument with side effect"
-; V80 tmp67 [V80,T45] ( 2, 2.00) long -> rdx "argument with side effect"
-; V81 tmp68 [V81,T37] ( 2, 2.08) long -> rdx "argument with side effect"
-; V82 tmp69 [V82,T61] ( 3, 0.11) int -> rax "index expr"
-; V83 tmp70 [V83,T62] ( 3, 0.11) int -> rdx "index expr"
-; V84 tmp71 [V84,T49] ( 2, 2.00) long -> rdx "argument with side effect"
-; V85 tmp72 [V85,T93] ( 2, 0 ) long -> r8 "argument with side effect"
-; V86 tmp73 [V86,T92] ( 2, 0 ) ref -> rdx "argument with side effect"
-; V87 tmp74 [V87,T94] ( 2, 0 ) long -> rdx "argument with side effect"
-; V88 tmp75 [V88,T95] ( 2, 0 ) long -> rcx "argument with side effect"
-; V89 tmp76 [V89,T96] ( 2, 0 ) long -> rdx "argument with side effect"
-; V90 tmp77 [V90,T97] ( 2, 0 ) long -> rcx "argument with side effect"
-; V91 tmp78 [V91,T46] ( 2, 2.00) long -> rdx "argument with side effect"
-; V92 cse0 [V92,T74] ( 3, 0.00) int -> r12 "CSE - conservative"
+; V79 tmp66 [V79,T19] ( 2, 4.08) long -> rdx "argument with side effect"
+; V80 tmp67 [V80,T42] ( 2, 2.00) long -> rdx "argument with side effect"
+; V81 tmp68 [V81,T35] ( 2, 2.08) long -> rdx "argument with side effect"
+; V82 tmp69 [V82,T58] ( 3, 0.11) int -> rax "index expr"
+; V83 tmp70 [V83,T59] ( 3, 0.11) int -> rdx "index expr"
+; V84 tmp71 [V84,T46] ( 2, 2.00) long -> rdx "argument with side effect"
+; V85 tmp72 [V85,T90] ( 2, 0 ) long -> r8 "argument with side effect"
+; V86 tmp73 [V86,T89] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V87 tmp74 [V87,T91] ( 2, 0 ) long -> rdx "argument with side effect"
+; V88 tmp75 [V88,T92] ( 2, 0 ) long -> rcx "argument with side effect"
+; V89 tmp76 [V89,T93] ( 2, 0 ) long -> rdx "argument with side effect"
+; V90 tmp77 [V90,T94] ( 2, 0 ) long -> rcx "argument with side effect"
+; V91 tmp78 [V91,T43] ( 2, 2.00) long -> rdx "argument with side effect"
+; V92 cse0 [V92,T71] ( 3, 0.00) int -> r12 "CSE - conservative"
; V93 cse1 [V93,T03] ( 32, 7.01) long -> [rsp+0x30] multi-def "CSE - aggressive"
-; V94 rat0 [V94,T65] ( 3, 0.04) long -> rcx "Spilling to split statement for tree"
-; V95 rat1 [V95,T64] ( 3, 0.06) long -> r11 "fgMakeTemp is creating a new local variable"
-; V96 rat2 [V96,T17] ( 3, 4.45) long -> rcx "Spilling to split statement for tree"
-; V97 rat3 [V97,T22] ( 3, 4.04) long -> rdx "runtime lookup"
+; V94 rat0 [V94,T62] ( 3, 0.04) long -> rcx "Spilling to split statement for tree"
+; V95 rat1 [V95,T61] ( 3, 0.06) long -> r11 "fgMakeTemp is creating a new local variable"
+; V96 rat2 [V96,T16] ( 3, 4.45) long -> rcx "Spilling to split statement for tree"
+; V97 rat3 [V97,T20] ( 3, 4.04) long -> rdx "runtime lookup"
; V98 rat4 [V98,T11] ( 3, 5.66) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V99 rat5 [V99,T18] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V100 rat6 [V100,T41] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V101 rat7 [V101,T12] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V102 rat8 [V102,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V103 rat9 [V103,T25] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V104 rat10 [V104,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V105 rat11 [V105,T20] ( 3, 4.08) long -> rdx "runtime lookup"
-; V106 rat12 [V106,T10] ( 3, 5.71) long -> rdx "fgMakeTemp is creating a new local variable"
-; V107 rat13 [V107,T43] ( 3, 2.00) long -> rdx "runtime lookup"
-; V108 rat14 [V108,T30] ( 3, 2.81) long -> rdx "fgMakeTemp is creating a new local variable"
-; V109 rat15 [V109,T34] ( 3, 2.29) long -> rcx "Spilling to split statement for tree"
-; V110 rat16 [V110,T36] ( 3, 2.08) long -> rdx "runtime lookup"
-; V111 rat17 [V111,T27] ( 3, 2.91) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V112 rat18 [V112,T52] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V113 rat19 [V113,T28] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V114 rat20 [V114,T35] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
-; V115 rat21 [V115,T44] ( 3, 2.00) long -> rdx "runtime lookup"
-; V116 rat22 [V116,T31] ( 3, 2.81) long -> rdx "fgMakeTemp is creating a new local variable"
-; V117 rat23 [V117,T78] ( 3, 0 ) long -> rcx "Spilling to split statement for tree"
-; V118 rat24 [V118,T79] ( 3, 0 ) long -> rcx "runtime lookup"
-; V119 rat25 [V119,T80] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
-;* V120 rat26 [V120,T72] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V121 rat27 [V121,T75] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V122 rat28 [V122,T70] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V123 rat29 [V123,T81] ( 3, 0 ) long -> registers "runtime lookup"
-; V124 rat30 [V124,T82] ( 3, 0 ) long -> r8 "fgMakeTemp is creating a new local variable"
-; V125 rat31 [V125,T83] ( 3, 0 ) long -> r8 "fgMakeTemp is creating a new local variable"
-; V126 rat32 [V126,T84] ( 3, 0 ) long -> r10 "fgMakeTemp is creating a new local variable"
-; V127 rat33 [V127,T85] ( 3, 0 ) long -> rdx "runtime lookup"
-; V128 rat34 [V128,T86] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V129 rat35 [V129,T98] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V130 rat36 [V130,T87] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V131 rat37 [V131,T88] ( 3, 0 ) long -> rdx "runtime lookup"
-; V132 rat38 [V132,T89] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
-; V133 rat39 [V133,T90] ( 3, 0 ) long -> rcx "runtime lookup"
-; V134 rat40 [V134,T91] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V135 rat41 [V135,T71] ( 3, 0.00) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V136 rat42 [V136,T55] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V137 rat43 [V137,T29] ( 2, 2.02) long -> rcx "fgMakeTemp is creating a new local variable"
-; V138 rat44 [V138,T48] ( 3, 2.00) long -> rdx "runtime lookup"
-; V139 rat45 [V139,T32] ( 3, 2.79) long -> rdx "fgMakeTemp is creating a new local variable"
+; V99 rat5 [V99,T04] ( 2, 6.12) long -> rcx "Spilling to split statement for tree"
+;* V100 rat6 [V100,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V101 rat7 [V101,T01] ( 2, 6.12) long -> rcx "fgMakeTemp is creating a new local variable"
+; V102 rat8 [V102,T18] ( 3, 4.08) long -> rdx "runtime lookup"
+; V103 rat9 [V103,T10] ( 3, 5.71) long -> rdx "fgMakeTemp is creating a new local variable"
+; V104 rat10 [V104,T40] ( 3, 2.00) long -> rdx "runtime lookup"
+; V105 rat11 [V105,T28] ( 3, 2.81) long -> rdx "fgMakeTemp is creating a new local variable"
+; V106 rat12 [V106,T32] ( 3, 2.29) long -> rcx "Spilling to split statement for tree"
+; V107 rat13 [V107,T34] ( 3, 2.08) long -> rdx "runtime lookup"
+; V108 rat14 [V108,T25] ( 3, 2.91) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V109 rat15 [V109,T49] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V110 rat16 [V110,T26] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V111 rat17 [V111,T33] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V112 rat18 [V112,T41] ( 3, 2.00) long -> rdx "runtime lookup"
+; V113 rat19 [V113,T29] ( 3, 2.81) long -> rdx "fgMakeTemp is creating a new local variable"
+; V114 rat20 [V114,T75] ( 3, 0 ) long -> rcx "Spilling to split statement for tree"
+; V115 rat21 [V115,T76] ( 3, 0 ) long -> rcx "runtime lookup"
+; V116 rat22 [V116,T77] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+;* V117 rat23 [V117,T69] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V118 rat24 [V118,T72] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V119 rat25 [V119,T67] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V120 rat26 [V120,T78] ( 3, 0 ) long -> registers "runtime lookup"
+; V121 rat27 [V121,T79] ( 3, 0 ) long -> r8 "fgMakeTemp is creating a new local variable"
+; V122 rat28 [V122,T80] ( 3, 0 ) long -> r8 "fgMakeTemp is creating a new local variable"
+; V123 rat29 [V123,T81] ( 3, 0 ) long -> r10 "fgMakeTemp is creating a new local variable"
+; V124 rat30 [V124,T82] ( 3, 0 ) long -> rdx "runtime lookup"
+; V125 rat31 [V125,T83] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V126 rat32 [V126,T95] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V127 rat33 [V127,T84] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V128 rat34 [V128,T85] ( 3, 0 ) long -> rdx "runtime lookup"
+; V129 rat35 [V129,T86] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
+; V130 rat36 [V130,T87] ( 3, 0 ) long -> rcx "runtime lookup"
+; V131 rat37 [V131,T88] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable"
+; V132 rat38 [V132,T68] ( 3, 0.00) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V133 rat39 [V133,T52] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V134 rat40 [V134,T27] ( 2, 2.02) long -> rcx "fgMakeTemp is creating a new local variable"
+; V135 rat41 [V135,T45] ( 3, 2.00) long -> rdx "runtime lookup"
+; V136 rat42 [V136,T30] ( 3, 2.79) long -> rdx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 104
@@ -177,7 +174,7 @@ G_M33517_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=48 bbWeight=1 PerfScore 13.50
G_M33517_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
test rsi, rsi
- je G_M33517_IG59
+ je G_M33517_IG61
;; size=9 bbWeight=1 PerfScore 1.25
G_M33517_IG03: ; bbWeight=1.01, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x40], 0
@@ -196,7 +193,7 @@ G_M33517_IG05: ; bbWeight=1.01, extend
G_M33517_IG06: ; bbWeight=1.00, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.TransformNode`2[Microsoft.Interop.DiagnosticInfo,Microsoft.Interop.DiagnosticInfo]
cmp qword ptr [rsi], rcx
- jne G_M33517_IG17
+ jne G_M33517_IG20
;; size=19 bbWeight=1.00 PerfScore 4.25
G_M33517_IG07: ; bbWeight=0.85, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
mov rcx, rsi
@@ -220,18 +217,18 @@ G_M33517_IG08: ; bbWeight=1.02, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe
mov eax, edx
sar eax, 14
cmp eax, dword ptr [rcx+0x08]
...
librariestestsnotieredcompilation.run.windows.x64.Release.mch
-23 (-5.61%) : 99796.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)
@@ -11,39 +11,38 @@
; V01 arg0 [V01,T05] ( 5, 7 ) ref -> rsi class-hnd single-def <System.__Canon[]>
; V02 arg1 [V02,T04] ( 10, 8.04) ref -> rbx class-hnd single-def <System.__Canon[]>
; V03 loc0 [V03,T00] ( 15, 21.04) int -> rbp
-; V04 loc1 [V04 ] ( 10, 14 ) ref -> [rsp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
+; V04 loc1 [V04 ] ( 10, 14 ) ref -> [rsp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T01] ( 6, 20 ) byref -> r15 "impAppendStmt"
; V07 tmp2 [V07,T06] ( 6, 8 ) byref -> r13
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V09 tmp4 [V09,T02] ( 8, 12 ) long -> r11 "VirtualCall with runtime lookup"
-; V10 tmp5 [V10,T10] ( 4, 4 ) int -> r12
+; V10 tmp5 [V10,T10] ( 2, 3.96) int -> rcx
; V11 tmp6 [V11,T07] ( 4, 8 ) ref -> rcx "argument with side effect"
; V12 cse0 [V12,T09] ( 5, 7 ) int -> r14 "CSE - aggressive"
; V13 rat0 [V13,T03] ( 3, 11.09) long -> r11 "fgMakeTemp is creating a new local variable"
; V14 rat1 [V14,T11] ( 3, 0.11) long -> r11 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 56
+; Lcl frame size = 48
G_M22994_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
push r14
push r13
- push r12
push rdi
push rsi
push rbp
push rbx
- sub rsp, 56
+ sub rsp, 48
xor eax, eax
- mov qword ptr [rsp+0x28], rax
- mov qword ptr [rsp+0x30], rcx
+ mov qword ptr [rsp+0x20], rax
+ mov qword ptr [rsp+0x28], rcx
mov rdi, rcx
mov rsi, rdx
; gcrRegs +[rsi]
mov rbx, r8
; gcrRegs +[rbx]
- ;; size=37 bbWeight=1 PerfScore 11.25
+ ;; size=35 bbWeight=1 PerfScore 10.25
G_M22994_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
xor ebp, ebp
mov r14d, dword ptr [rsi+0x08]
@@ -60,10 +59,10 @@ G_M22994_IG03: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; byrRegs +[r15]
xor rcx, rcx
; gcrRegs +[rcx]
- mov gword ptr [rsp+0x28], rcx
+ mov gword ptr [rsp+0x20], rcx
mov r13, r15
; byrRegs +[r13]
- cmp gword ptr [rsp+0x28], 0
+ cmp gword ptr [rsp+0x20], 0
jne SHORT G_M22994_IG06
;; size=25 bbWeight=3.96 PerfScore 22.77
G_M22994_IG04: ; bbWeight=1.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=8000 {r15}, byref, isz
@@ -71,10 +70,10 @@ G_M22994_IG04: ; bbWeight=1.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=8000
; byrRegs -[r13]
mov rcx, gword ptr [r15]
; gcrRegs +[rcx]
- mov gword ptr [rsp+0x28], rcx
- lea r13, bword ptr [rsp+0x28]
+ mov gword ptr [rsp+0x20], rcx
+ lea r13, bword ptr [rsp+0x20]
; byrRegs +[r13]
- cmp gword ptr [rsp+0x28], 0
+ cmp gword ptr [rsp+0x20], 0
jne SHORT G_M22994_IG06
mov ecx, ebp
; gcrRegs -[rcx]
@@ -114,12 +113,12 @@ G_M22994_IG09: ; bbWeight=1.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=2000
; gcrRegs -[rcx rdx]
; byrRegs -[r13]
; gcr arg pop 0
- xor r12d, r12d
+ xor ecx, ecx
test eax, eax
- sete r12b
- test r12d, r12d
+ sete cl
+ test ecx, ecx
jne G_M22994_IG22
- ;; size=32 bbWeight=1.98 PerfScore 19.80
+ ;; size=29 bbWeight=1.98 PerfScore 19.80
G_M22994_IG10: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
inc ebp
cmp r14d, ebp
@@ -136,10 +135,10 @@ G_M22994_IG12: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; byrRegs +[r15]
xor rcx, rcx
; gcrRegs +[rcx]
- mov gword ptr [rsp+0x28], rcx
+ mov gword ptr [rsp+0x20], rcx
mov r13, r15
; byrRegs +[r13]
- cmp gword ptr [rsp+0x28], 0
+ cmp gword ptr [rsp+0x20], 0
jne SHORT G_M22994_IG15
;; size=25 bbWeight=0.04 PerfScore 0.23
G_M22994_IG13: ; bbWeight=0.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=8000 {r15}, byref, isz
@@ -147,18 +146,18 @@ G_M22994_IG13: ; bbWeight=0.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=8000
; byrRegs -[r13]
mov rcx, gword ptr [r15]
; gcrRegs +[rcx]
- mov gword ptr [rsp+0x28], rcx
- lea r13, bword ptr [rsp+0x28]
+ mov gword ptr [rsp+0x20], rcx
+ lea r13, bword ptr [rsp+0x20]
; byrRegs +[r13]
- cmp gword ptr [rsp+0x28], 0
+ cmp gword ptr [rsp+0x20], 0
jne SHORT G_M22994_IG15
cmp ebp, dword ptr [rbx+0x08]
- jae G_M22994_IG24
+ jae SHORT G_M22994_IG24
mov ecx, ebp
; gcrRegs -[rcx]
cmp gword ptr [rbx+8*rcx+0x10], 0
je SHORT G_M22994_IG19
- ;; size=40 bbWeight=0.02 PerfScore 0.30
+ ;; size=36 bbWeight=0.02 PerfScore 0.30
G_M22994_IG14: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rsi]
; byrRegs -[r13 r15]
@@ -194,12 +193,9 @@ G_M22994_IG18: ; bbWeight=0.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=2000
; gcrRegs -[rcx rdx]
; byrRegs -[r13]
; gcr arg pop 0
- xor r12d, r12d
test eax, eax
- sete r12b
- test r12d, r12d
- jne SHORT G_M22994_IG22
- ;; size=33 bbWeight=0.02 PerfScore 0.28
+ je SHORT G_M22994_IG22
+ ;; size=23 bbWeight=0.02 PerfScore 0.25
G_M22994_IG19: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
inc ebp
cmp r14d, ebp
@@ -210,39 +206,37 @@ G_M22994_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M22994_IG21: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 56
+ add rsp, 48
pop rbx
pop rbp
pop rsi
pop rdi
- pop r12
pop r13
pop r14
pop r15
ret
- ;; size=17 bbWeight=0.50 PerfScore 2.62
+ ;; size=15 bbWeight=0.50 PerfScore 2.38
G_M22994_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M22994_IG23: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 56
+ add rsp, 48
pop rbx
pop rbp
pop rsi
pop rdi
- pop r12
pop r13
pop r14
pop r15
ret
- ;; size=17 bbWeight=0.50 PerfScore 2.62
+ ;; size=15 bbWeight=0.50 PerfScore 2.38
G_M22994_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 410, prolog size 37, PerfScore 113.57, instruction count 126, allocated bytes for code 410 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 387, prolog size 35, PerfScore 112.04, instruction count 120, allocated bytes for code 387 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -250,17 +244,16 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x10
- CountOfUnwindCodes: 9
+ SizeOfProlog : 0x0E
+ CountOfUnwindCodes: 8
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
- CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
+ CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
-23 (-5.58%) : 23440.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary
2[System.Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.Canon]):this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 17 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
+; V00 this [V00,T04] ( 7, 16 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V01 arg1 [V01,T15] ( 4, 4 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
-; V02 arg2 [V02,T18] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V02 arg2 [V02,T17] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V03 loc0 [V03 ] ( 3, 11 ) struct (24) [rsp+0x80] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SmallDictionary`2+Enumerator[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V04 loc1 [V04 ] ( 5, 10 ) struct (32) [rsp+0x60] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,34 +27,31 @@
; V16 tmp11 [V16 ] ( 3, 11 ) ref -> [rsp+0x80] do-not-enreg[X] addr-exposed "field V03._stack (fldOffset=0x0)" P-DEP
; V17 tmp12 [V17 ] ( 3, 11 ) ref -> [rsp+0x88] do-not-enreg[X] addr-exposed "field V03._next (fldOffset=0x8)" P-DEP
; V18 tmp13 [V18 ] ( 3, 11 ) ref -> [rsp+0x90] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x10)" P-DEP
-; V19 tmp14 [V19,T23] ( 2, 4 ) ref -> r14 "field V11.DefaultType (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T24] ( 2, 4 ) ref -> r15 "field V11._extensions (fldOffset=0x8)" P-INDEP
-; V21 tmp16 [V21,T25] ( 2, 4 ) ubyte -> r13 "field V11.DefaultNullableAnnotation (fldOffset=0x10)" P-INDEP
+; V19 tmp14 [V19,T21] ( 2, 4 ) ref -> r14 "field V11.DefaultType (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T22] ( 2, 4 ) ref -> r15 "field V11._extensions (fldOffset=0x8)" P-INDEP
+; V21 tmp16 [V21,T23] ( 2, 4 ) ubyte -> r13 "field V11.DefaultNullableAnnotation (fldOffset=0x10)" P-INDEP
; V22 tmp17 [V22 ] ( 2, 4 ) ref -> [rsp+0x48] do-not-enreg[X] addr-exposed "field V12._stack (fldOffset=0x0)" P-DEP
; V23 tmp18 [V23 ] ( 2, 4 ) ref -> [rsp+0x50] do-not-enreg[X] addr-exposed "field V12._next (fldOffset=0x8)" P-DEP
; V24 tmp19 [V24 ] ( 2, 4 ) ref -> [rsp+0x58] do-not-enreg[X] addr-exposed "field V12._current (fldOffset=0x10)" P-DEP
-; V25 tmp20 [V25,T26] ( 2, 4 ) long -> rdx "argument with side effect"
+; V25 tmp20 [V25,T24] ( 2, 4 ) long -> rdx "argument with side effect"
; V26 tmp21 [V26,T03] ( 2, 32 ) long -> rdx "argument with side effect"
; V27 tmp22 [V27,T12] ( 2, 8 ) long -> r8 "argument with side effect"
; V28 tmp23 [V28 ] ( 4, 16 ) struct (24) [rsp+0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
; V29 tmp24 [V29,T13] ( 2, 8 ) int -> rdx "argument with side effect"
; V30 tmp25 [V30,T10] ( 2, 8 ) ref -> rcx "argument with side effect"
; V31 tmp26 [V31,T11] ( 2, 8 ) ref -> r8 "argument with side effect"
-; V32 cse0 [V32,T21] ( 3, 4 ) long -> rbp "CSE - moderate"
-;* V33 cse1 [V33,T28] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V32 cse0 [V32,T19] ( 3, 4 ) long -> rbp "CSE - moderate"
+;* V33 cse1 [V33,T25] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; V34 cse2 [V34,T14] ( 4, 4.40) long -> rdi "CSE - aggressive"
-; V35 rat0 [V35,T19] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
-; V36 rat1 [V36,T22] ( 3, 4 ) long -> rbp "runtime lookup"
+; V35 rat0 [V35,T18] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
+; V36 rat1 [V36,T20] ( 3, 4 ) long -> rbp "runtime lookup"
; V37 rat2 [V37,T16] ( 3, 5.60) long -> rbp "fgMakeTemp is creating a new local variable"
-; V38 rat3 [V38,T20] ( 2, 4 ) long -> rcx "Spilling to split statement for tree"
-;* V39 rat4 [V39,T27] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V40 rat5 [V40,T17] ( 2, 4 ) long -> rcx "fgMakeTemp is creating a new local variable"
-;* V41 rat6 [V41,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V42 rat7 [V42,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V43 rat8 [V43,T08] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
-; V44 rat9 [V44,T01] ( 3, 35.20) long -> rcx "Spilling to split statement for tree"
-; V45 rat10 [V45,T02] ( 3, 32 ) long -> rdx "runtime lookup"
-; V46 rat11 [V46,T00] ( 3, 44.80) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V38 rat3 [V38,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V39 rat4 [V39,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V40 rat5 [V40,T08] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
+; V41 rat6 [V41,T01] ( 3, 35.20) long -> rcx "Spilling to split statement for tree"
+; V42 rat7 [V42,T02] ( 3, 32 ) long -> rdx "runtime lookup"
+; V43 rat8 [V43,T00] ( 3, 44.80) long -> rdx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 160
@@ -123,14 +120,8 @@ G_M40847_IG06: ; bbWeight=1, nogc, extend
mov qword ptr [rsp+0x90], rcx
;; size=28 bbWeight=1 PerfScore 6.00
G_M40847_IG07: ; bbWeight=1, extend
- mov rcx, qword ptr [rbx]
- mov rcx, qword ptr [rcx+0x38]
- mov rcx, qword ptr [rcx]
- mov rcx, qword ptr [rcx+0x28]
- test rcx, rcx
- jne G_M40847_IG12
jmp G_M40847_IG12
- ;; size=28 bbWeight=1 PerfScore 11.25
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M40847_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r8, rbp
lea rdx, [rsp+0x60]
@@ -219,7 +210,7 @@ G_M40847_IG16: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
ret
;; size=18 bbWeight=1 PerfScore 4.75
-; Total bytes of code 412, prolog size 60, PerfScore 249.08, instruction count 102, allocated bytes for code 412 (MethodHash=69926070) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 389, prolog size 60, PerfScore 239.83, instruction count 96, allocated bytes for code 389 (MethodHash=69926070) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
-27 (-3.58%) : 23255.dasm - System.Collections.Immutable.ImmutableList1+Node[System.Collections.Generic.KeyValuePair
2[System.Canon,System.Canon]]:IndexOf(System.Collections.Generic.KeyValuePair2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer
1[System.Collections.Generic.KeyValuePair`2[System.Canon,System.Canon]]):int:this (FullOpts)
@@ -8,13 +8,13 @@
; 0 inlinees with PGO data; 2 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 9, 16 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
+; V00 this [V00,T06] ( 8, 15 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
; V01 arg1 [V01,T12] ( 3, 12 ) byref -> rsi single-def
; V02 arg2 [V02,T07] ( 8, 14 ) int -> rbx
; V03 arg3 [V03,T14] ( 6, 6 ) int -> rdi single-def
; V04 arg4 [V04,T17] ( 3, 6 ) ref -> r14 class-hnd <System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
; V05 loc0 [V05 ] ( 5, 15 ) struct (56) [rbp-0x78] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
-; V06 loc1 [V06,T32] ( 2, 2 ) int -> [rbp-0x7C] do-not-enreg[Z] EH-live
+; V06 loc1 [V06,T30] ( 2, 2 ) int -> [rbp-0x7C] do-not-enreg[Z] EH-live
; V07 OutArgs [V07 ] ( 1, 1 ) struct (56) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -34,34 +34,31 @@
; V23 tmp16 [V23,T08] ( 2, 16 ) ref -> [rbp-0x90] do-not-enreg[H] hidden-struct-arg "field V13.key (fldOffset=0x0)" P-DEP
; V24 tmp17 [V24,T09] ( 2, 16 ) ref -> [rbp-0x88] do-not-enreg[H] hidden-struct-arg "field V13.value (fldOffset=0x8)" P-DEP
;* V25 tmp18 [V25 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]>
-; V26 tmp19 [V26,T35] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V27 tmp20 [V27,T36] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V28 tmp21 [V28,T30] ( 2, 4 ) long -> rdx "argument with side effect"
+; V26 tmp19 [V26,T32] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V27 tmp20 [V27,T33] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V28 tmp21 [V28,T28] ( 2, 4 ) long -> rdx "argument with side effect"
; V29 tmp22 [V29,T04] ( 2, 32 ) long -> rdx "argument with side effect"
; V30 tmp23 [V30 ] ( 2, 16 ) struct (16) [rbp-0xA0] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]>
; V31 tmp24 [V31 ] ( 2, 16 ) struct (16) [rbp-0xB0] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]>
; V32 tmp25 [V32,T10] ( 2, 16 ) ref -> rcx "argument with side effect"
;* V33 tmp26 [V33,T16] ( 0, 0 ) long -> zero-ref "argument with side effect"
-; V34 PSPSym [V34,T34] ( 1, 1 ) long -> [rbp-0xB8] do-not-enreg[V] "PSPSym"
+; V34 PSPSym [V34,T31] ( 1, 1 ) long -> [rbp-0xB8] do-not-enreg[V] "PSPSym"
; V35 cse0 [V35,T18] ( 3, 6 ) long -> r13 "CSE - aggressive"
-; V36 cse1 [V36,T31] ( 3, 3 ) int -> rdx "CSE - aggressive"
+; V36 cse1 [V36,T29] ( 3, 3 ) int -> rdx "CSE - aggressive"
; V37 cse2 [V37,T13] ( 10, 12 ) long -> r15 multi-def "CSE - aggressive"
-; V38 rat0 [V38,T24] ( 3, 4.40) long -> r15 "Spilling to split statement for tree"
-; V39 rat1 [V39,T28] ( 3, 4 ) long -> rdx "runtime lookup"
+; V38 rat0 [V38,T23] ( 3, 4.40) long -> r15 "Spilling to split statement for tree"
+; V39 rat1 [V39,T26] ( 3, 4 ) long -> rdx "runtime lookup"
; V40 rat2 [V40,T19] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
-; V41 rat3 [V41,T25] ( 3, 4.40) long -> rdx "Spilling to split statement for tree"
-; V42 rat4 [V42,T29] ( 3, 4 ) long -> r13 "runtime lookup"
+; V41 rat3 [V41,T24] ( 3, 4.40) long -> rdx "Spilling to split statement for tree"
+; V42 rat4 [V42,T27] ( 3, 4 ) long -> r13 "runtime lookup"
; V43 rat5 [V43,T20] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
-; V44 rat6 [V44,T26] ( 2, 4 ) long -> rcx "Spilling to split statement for tree"
-;* V45 rat7 [V45,T33] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V46 rat8 [V46,T21] ( 2, 4 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V47 rat9 [V47,T05] ( 3, 22.40) long -> r12 "fgMakeTemp is creating a new local variable"
-; V48 rat10 [V48,T01] ( 3, 35.20) long -> rcx "Spilling to split statement for tree"
-; V49 rat11 [V49,T03] ( 3, 32 ) long -> rdx "runtime lookup"
-; V50 rat12 [V50,T00] ( 3, 44.80) long -> rdx "fgMakeTemp is creating a new local variable"
-; V51 rat13 [V51,T22] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V52 rat14 [V52,T27] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
-; V53 rat15 [V53,T23] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V44 rat6 [V44,T05] ( 3, 22.40) long -> r12 "fgMakeTemp is creating a new local variable"
+; V45 rat7 [V45,T01] ( 3, 35.20) long -> rcx "Spilling to split statement for tree"
+; V46 rat8 [V46,T03] ( 3, 32 ) long -> rdx "runtime lookup"
+; V47 rat9 [V47,T00] ( 3, 44.80) long -> rdx "fgMakeTemp is creating a new local variable"
+; V48 rat10 [V48,T21] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V49 rat11 [V49,T25] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
+; V50 rat12 [V50,T22] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 184
@@ -173,18 +170,9 @@ G_M34258_IG09: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0040 {rsi},
nop
;; size=37 bbWeight=1 PerfScore 8.50
G_M34258_IG10: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0040 {rsi}, byref, isz
- mov r8, gword ptr [rbp+0x10]
- ; gcrRegs +[r8]
- mov rcx, qword ptr [r8]
- mov rcx, qword ptr [rcx+0x38]
- mov rcx, qword ptr [rcx]
- mov rcx, qword ptr [rcx+0x10]
- test rcx, rcx
- jne G_M34258_IG18
jmp SHORT G_M34258_IG18
- ;; size=29 bbWeight=1 PerfScore 12.25
+ ;; size=2 bbWeight=1 PerfScore 2.00
G_M34258_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0040 {rsi}, byref, isz
- ; gcrRegs -[r8]
mov rdi, r13
mov rcx, qword ptr [r15+0x38]
mov rcx, qword ptr [rcx]
@@ -229,17 +217,17 @@ G_M34258_IG17: ; bbWeight=4, isz, extend
test eax, eax
jne SHORT G_M34258_IG23
inc ebx
+ ;; size=27 bbWeight=4 PerfScore 23.00
+G_M34258_IG18: ; bbWeight=8, gcrefRegs=4000 {r14}, byrefRegs=0040 {rsi}, byref, isz
mov r8, gword ptr [rbp+0x10]
; gcrRegs +[r8]
- ;; size=31 bbWeight=4 PerfScore 27.00
-G_M34258_IG18: ; bbWeight=8, gcrefRegs=4100 {r8 r14}, byrefRegs=0040 {rsi}, byref, isz
mov rcx, qword ptr [r8]
mov rdx, qword ptr [rcx+0x38]
mov rdx, qword ptr [rdx]
mov rdx, qword ptr [rdx+0x10]
test rdx, rdx
je SHORT G_M34258_IG20
- ;; size=19 bbWeight=8 PerfScore 74.00
+ ;; size=23 bbWeight=8 PerfScore 82.00
G_M34258_IG19: ; bbWeight=6.40, gcrefRegs=4000 {r14}, byrefRegs=0040 {rsi}, byref, isz
; gcrRegs -[r8]
jmp SHORT G_M34258_IG21
@@ -409,7 +397,7 @@ G_M34258_IG41: ; bbWeight=1, funclet epilog, nogc, extend
ret
;; size=17 bbWeight=1 PerfScore 5.25
-; Total bytes of code 755, prolog size 88, PerfScore 392.48, instruction count 213, allocated bytes for code 755 (MethodHash=62fd7a2d) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
+; Total bytes of code 728, prolog size 88, PerfScore 386.23, instruction count 206, allocated bytes for code 728 (MethodHash=62fd7a2d) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 5179.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable
1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)
@@ -16,7 +16,7 @@
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
; V06 loc3 [V06,T13] ( 4, 5 ) int -> rdi
; V07 loc4 [V07,T14] ( 4, 5 ) int -> r13
-; V08 loc5 [V08,T38] ( 3, 1.50) int -> rbx
+; V08 loc5 [V08,T36] ( 3, 1.50) int -> rbx
; V09 loc6 [V09,T07] ( 13, 11.50) ref -> [rbp+0x10] do-not-enreg[M] class-hnd EH-live <<unknown class>>
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
; V11 loc8 [V11,T05] ( 5, 14 ) int -> rax
@@ -39,7 +39,7 @@
; V28 tmp16 [V28 ] ( 3, 3 ) struct ( 8) [rbp+0x28] do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
; V29 tmp17 [V29,T17] ( 8, 4 ) int -> r14 "Inline return value spill temp"
; V30 tmp18 [V30,T23] ( 3, 3 ) int -> rdi "Inlining Arg"
-; V31 tmp19 [V31,T34] ( 2, 2 ) long -> rdi "Inlining Arg"
+; V31 tmp19 [V31,T32] ( 2, 2 ) long -> rdi "Inlining Arg"
; V32 tmp20 [V32,T22] ( 3, 3 ) ref -> rax class-hnd exact single-def "Inlining Arg" <int[]>
;* V33 tmp21 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V34 tmp22 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -51,24 +51,24 @@
; V40 tmp28 [V40,T18] ( 5, 4.00) long -> [rbp+0x20] spill-single-def "Inlining Arg"
;* V41 tmp29 [V41 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V42 tmp30 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V43 tmp31 [V43,T35] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V43 tmp31 [V43,T33] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V44 tmp32 [V44,T09] ( 3, 6 ) int -> r11 "Inline stloc first use temp"
; V45 tmp33 [V45,T10] ( 3, 6 ) int -> rcx "Inline stloc first use temp"
; V46 tmp34 [V46,T06] ( 3, 12 ) byref -> rcx "dup spill"
;* V47 tmp35 [V47 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp36 [V48 ] ( 0, 0 ) int -> zero-ref single-def "field V04._length (fldOffset=0x8)" P-INDEP
-; V49 tmp37 [V49,T44] ( 4, 1.50) byref -> rdi single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+; V49 tmp37 [V49,T42] ( 4, 1.50) byref -> rdi single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp38 [V50 ] ( 0, 0 ) int -> zero-ref single-def "field V13._length (fldOffset=0x8)" P-INDEP
;* V51 tmp39 [V51 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V52 tmp40 [V52 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
-; V53 tmp41 [V53,T40] ( 2, 1.50) int -> [rbp+0x30] do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
-; V54 tmp42 [V54,T41] ( 2, 1.50) int -> [rbp+0x34] do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
+; V53 tmp41 [V53,T38] ( 2, 1.50) int -> [rbp+0x30] do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
+; V54 tmp42 [V54,T39] ( 2, 1.50) int -> [rbp+0x34] do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
;* V55 tmp43 [V55 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V56 tmp44 [V56 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
-; V57 tmp45 [V57,T42] ( 2, 1.50) int -> [rbp+0x28] do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
-; V58 tmp46 [V58,T43] ( 2, 1.50) int -> [rbp+0x2C] do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
-; V59 tmp47 [V59,T45] ( 2, 1 ) byref -> r15 "field V33._reference (fldOffset=0x0)" P-INDEP
-; V60 tmp48 [V60,T46] ( 2, 1 ) int -> r14 "field V33._length (fldOffset=0x8)" P-INDEP
+; V57 tmp45 [V57,T40] ( 2, 1.50) int -> [rbp+0x28] do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
+; V58 tmp46 [V58,T41] ( 2, 1.50) int -> [rbp+0x2C] do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
+; V59 tmp47 [V59,T43] ( 2, 1 ) byref -> r15 "field V33._reference (fldOffset=0x0)" P-INDEP
+; V60 tmp48 [V60,T44] ( 2, 1 ) int -> r14 "field V33._length (fldOffset=0x8)" P-INDEP
;* V61 tmp49 [V61 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V62 tmp50 [V62 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V63 tmp51 [V63 ] ( 0, 0 ) byref -> zero-ref single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -77,26 +77,23 @@
;* V66 tmp54 [V66 ] ( 0, 0 ) int -> zero-ref single-def "field V39._length (fldOffset=0x8)" P-INDEP
; V67 tmp55 [V67,T15] ( 3, 4.50) byref -> r15 single-def "V05.[000..008)"
; V68 tmp56 [V68,T16] ( 3, 4.50) int -> r14 single-def "V05.[008..012)"
-; V69 tmp57 [V69,T36] ( 3, 1.50) byref -> r15 "V16.[000..008)"
-; V70 tmp58 [V70,T39] ( 3, 1.50) int -> r14 "V16.[008..012)"
+; V69 tmp57 [V69,T34] ( 3, 1.50) byref -> r15 "V16.[000..008)"
+; V70 tmp58 [V70,T37] ( 3, 1.50) int -> r14 "V16.[008..012)"
; V71 tmp59 [V71,T03] ( 2, 16 ) ref -> rdx "argument with side effect"
; V72 GsCookie [V72 ] ( 1, 1 ) long -> [rbp+0x08] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V73 PSPSym [V73,T48] ( 1, 1 ) long -> [rbp+0x00] do-not-enreg[V] "PSPSym"
+; V73 PSPSym [V73,T45] ( 1, 1 ) long -> [rbp+0x00] do-not-enreg[V] "PSPSym"
; V74 cse0 [V74,T11] ( 3, 6 ) int -> rcx "CSE - aggressive"
-; V75 cse1 [V75,T37] ( 3, 1.50) ref -> rdx "CSE - moderate"
-; V76 rat0 [V76,T30] ( 3, 2.20) long -> rdx "Spilling to split statement for tree"
+; V75 cse1 [V75,T35] ( 3, 1.50) ref -> rdx "CSE - moderate"
+; V76 rat0 [V76,T29] ( 3, 2.20) long -> rdx "Spilling to split statement for tree"
; V77 rat1 [V77,T26] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-; V78 rat2 [V78,T31] ( 3, 2.20) long -> rdx "Spilling to split statement for tree"
+; V78 rat2 [V78,T30] ( 3, 2.20) long -> rdx "Spilling to split statement for tree"
; V79 rat3 [V79,T27] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-; V80 rat4 [V80,T32] ( 3, 2.20) long -> rdx "Spilling to split statement for tree"
+; V80 rat4 [V80,T31] ( 3, 2.20) long -> rdx "Spilling to split statement for tree"
; V81 rat5 [V81,T28] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V82 rat6 [V82,T33] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V83 rat7 [V83,T47] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V84 rat8 [V84,T29] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V85 rat9 [V85,T02] ( 3, 17.60) long -> rdx "Spilling to split statement for tree"
-; V86 rat10 [V86,T01] ( 3, 22.40) long -> r11 "fgMakeTemp is creating a new local variable"
-; V87 rat11 [V87,T24] ( 3, 3 ) int -> rdi "ReplaceWithLclVar is creating a new local variable"
-; V88 rat12 [V88,T25] ( 3, 3 ) long -> [rbp+0x18] spill-single-def "ReplaceWithLclVar is creating a new local variable"
+; V82 rat6 [V82,T02] ( 3, 17.60) long -> rdx "Spilling to split statement for tree"
+; V83 rat7 [V83,T01] ( 3, 22.40) long -> r11 "fgMakeTemp is creating a new local variable"
+; V84 rat8 [V84,T24] ( 3, 3 ) int -> rdi "ReplaceWithLclVar is creating a new local variable"
+; V85 rat9 [V85,T25] ( 3, 3 ) long -> [rbp+0x18] spill-single-def "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 96
+0 (0.00%) : 5216.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)
@@ -23,11 +23,11 @@
; V12 loc9 [V12,T14] ( 4, 14 ) byref -> [rsp+0x28] spill-single-def
; V13 loc10 [V13,T17] ( 6, 13.50) int -> r12
; V14 loc11 [V14,T15] ( 4, 14 ) byref -> [rsp+0x20] spill-single-def
-; V15 loc12 [V15,T66] ( 3, 1.50) int -> rbp single-def
+; V15 loc12 [V15,T62] ( 3, 1.50) int -> rbp single-def
; V16 OutArgs [V16 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp2 [V18,T31] ( 4, 3 ) long -> r11 "VirtualCall with runtime lookup"
-; V19 tmp3 [V19,T67] ( 3, 1.50) int -> r15
+; V19 tmp3 [V19,T63] ( 3, 1.50) int -> r15
;* V20 tmp4 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -35,8 +35,8 @@
;* V24 tmp8 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp10 [V26,T28] ( 4, 4 ) byref -> rax single-def "dup spill"
-; V27 tmp11 [V27,T61] ( 3, 2 ) long -> rdx "spilling helperCall"
-; V28 tmp12 [V28,T68] ( 3, 1.50) int -> r15
+; V27 tmp11 [V27,T57] ( 3, 2 ) long -> rdx "spilling helperCall"
+; V28 tmp12 [V28,T64] ( 3, 1.50) int -> r15
;* V29 tmp13 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp14 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -48,9 +48,9 @@
; V37 tmp21 [V37,T32] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
; V38 tmp22 [V38,T33] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp24 [V40,T80] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp24 [V40,T74] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp26 [V42,T81] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp26 [V42,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V43 tmp27 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -58,9 +58,9 @@
; V47 tmp31 [V47,T34] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
; V48 tmp32 [V48,T35] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V50 tmp34 [V50,T82] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V50 tmp34 [V50,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V52 tmp36 [V52,T83] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V52 tmp36 [V52,T77] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -68,62 +68,56 @@
; V57 tmp41 [V57,T36] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
; V58 tmp42 [V58,T37] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V60 tmp44 [V60,T84] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V60 tmp44 [V60,T78] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V62 tmp46 [V62,T85] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V62 tmp46 [V62,T79] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V63 tmp47 [V63 ] ( 6, 10.50) ref -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64 ] ( 9, 19 ) int -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V65 tmp49 [V65,T71] ( 2, 1 ) ref -> rcx single-def "field V33._items (fldOffset=0x0)" P-INDEP
-; V66 tmp50 [V66,T74] ( 2, 1 ) int -> rdx single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V67 tmp51 [V67,T72] ( 2, 1 ) ref -> rcx single-def "field V43._items (fldOffset=0x0)" P-INDEP
-; V68 tmp52 [V68,T75] ( 2, 1 ) int -> rdx single-def "field V43._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T73] ( 2, 1 ) ref -> rcx single-def "field V53._items (fldOffset=0x0)" P-INDEP
-; V70 tmp54 [V70,T76] ( 2, 1 ) int -> rdx single-def "field V53._length (fldOffset=0x8)" P-INDEP
+; V65 tmp49 [V65,T67] ( 2, 1 ) ref -> rcx single-def "field V33._items (fldOffset=0x0)" P-INDEP
+; V66 tmp50 [V66,T70] ( 2, 1 ) int -> rdx single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V67 tmp51 [V67,T68] ( 2, 1 ) ref -> rcx single-def "field V43._items (fldOffset=0x0)" P-INDEP
+; V68 tmp52 [V68,T71] ( 2, 1 ) int -> rdx single-def "field V43._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T69] ( 2, 1 ) ref -> rcx single-def "field V53._items (fldOffset=0x0)" P-INDEP
+; V70 tmp54 [V70,T72] ( 2, 1 ) int -> rdx single-def "field V53._length (fldOffset=0x8)" P-INDEP
; V71 tmp55 [V71,T41] ( 3, 3 ) int -> rax "index expr"
; V72 tmp56 [V72,T42] ( 3, 3 ) int -> rdx "index expr"
; V73 tmp57 [V73,T43] ( 3, 3 ) int -> rax "index expr"
; V74 tmp58 [V74,T44] ( 3, 3 ) int -> rdx "index expr"
; V75 tmp59 [V75,T12] ( 2, 16 ) long -> rdx "argument with side effect"
; V76 tmp60 [V76,T13] ( 2, 16 ) long -> rdx "argument with side effect"
-; V77 tmp61 [V77,T64] ( 2, 2 ) int -> rdx "argument with side effect"
+; V77 tmp61 [V77,T60] ( 2, 2 ) int -> rdx "argument with side effect"
; V78 tmp62 [V78,T45] ( 3, 3 ) int -> rax "index expr"
; V79 tmp63 [V79,T46] ( 3, 3 ) int -> rdx "index expr"
-; V80 tmp64 [V80,T65] ( 2, 2 ) long -> rdx "argument with side effect"
-; V81 cse0 [V81,T69] ( 3, 1.50) int -> rcx "CSE - conservative"
-; V82 cse1 [V82,T70] ( 3, 1.50) int -> r12 "CSE - conservative"
-; V83 rat0 [V83,T54] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
-; V84 rat1 [V84,T62] ( 3, 2 ) long -> rdx "runtime lookup"
+; V80 tmp64 [V80,T61] ( 2, 2 ) long -> rdx "argument with side effect"
+; V81 cse0 [V81,T65] ( 3, 1.50) int -> rcx "CSE - conservative"
+; V82 cse1 [V82,T66] ( 3, 1.50) int -> r12 "CSE - conservative"
+; V83 rat0 [V83,T52] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V84 rat1 [V84,T58] ( 3, 2 ) long -> rdx "runtime lookup"
; V85 rat2 [V85,T47] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V86 rat3 [V86,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V87 rat4 [V87,T77] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V88 rat5 [V88,T48] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V89 rat6 [V89,T06] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
-; V90 rat7 [V90,T10] ( 3, 16 ) long -> rdx "runtime lookup"
-; V91 rat8 [V91,T02] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V92 rat9 [V92,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V93 rat10 [V93,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V94 rat11 [V94,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V95 rat12 [V95,T56] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
-; V96 rat13 [V96,T49] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V97 rat14 [V97,T57] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V98 rat15 [V98,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V99 rat16 [V99,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V100 rat17 [V100,T08] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
-; V101 rat18 [V101,T11] ( 3, 16 ) long -> rdx "runtime lookup"
-; V102 rat19 [V102,T04] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
-; V103 rat20 [V103,T22] ( 3, 8.80) long -> rcx "Spilling to split statement for tree"
-; V104 rat21 [V104,T19] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V105 rat22 [V105,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V106 rat23 [V106,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V107 rat24 [V107,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V108 rat25 [V108,T58] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V86 rat3 [V86,T06] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
+; V87 rat4 [V87,T10] ( 3, 16 ) long -> rdx "runtime lookup"
+; V88 rat5 [V88,T02] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V89 rat6 [V89,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V90 rat7 [V90,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V91 rat8 [V91,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V92 rat9 [V92,T53] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V93 rat10 [V93,T48] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
+; V94 rat11 [V94,T08] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
+; V95 rat12 [V95,T11] ( 3, 16 ) long -> rdx "runtime lookup"
+; V96 rat13 [V96,T04] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
+; V97 rat14 [V97,T22] ( 3, 8.80) long -> rcx "Spilling to split statement for tree"
+; V98 rat15 [V98,T19] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
+;* V99 rat16 [V99,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V100 rat17 [V100,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V101 rat18 [V101,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V102 rat19 [V102,T54] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V103 rat20 [V103,T49] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V104 rat21 [V104,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V105 rat22 [V105,T73] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V106 rat23 [V106,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V107 rat24 [V107,T56] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V108 rat25 [V108,T59] ( 3, 2 ) long -> rdx "runtime lookup"
; V109 rat26 [V109,T51] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V110 rat27 [V110,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V111 rat28 [V111,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V112 rat29 [V112,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V113 rat30 [V113,T60] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
-; V114 rat31 [V114,T63] ( 3, 2 ) long -> rdx "runtime lookup"
-; V115 rat32 [V115,T53] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 72
+0 (0.00%) : 80688.dasm - System.Collections.Generic.HashSet1[System.ValueTuple
2[System.Canon,int]]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable1[System.ValueTuple
2[System.Canon,int]],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)
@@ -11,21 +11,21 @@
; V00 this [V00,T02] ( 11, 14 ) ref -> [rbp+0xC0] this class-hnd EH-live single-def <System.Collections.Generic.HashSet`1[System.ValueTuple`2[System.__Canon,int]]>
; V01 arg1 [V01,T13] ( 4, 3 ) ref -> rsi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,int]]>
; V02 arg2 [V02,T08] ( 3, 4 ) ubyte -> rbx single-def
-; V03 loc0 [V03,T37] ( 3, 1.50) int -> rdi
+; V03 loc0 [V03,T35] ( 3, 1.50) int -> rdi
;* V04 loc1 [V04 ] ( 0, 0 ) int -> zero-ref
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
;* V06 loc3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op <System.Collections.Generic.BitHelper>
; V07 loc4 [V07,T14] ( 4, 5 ) int -> rdi
; V08 loc5 [V08,T15] ( 4, 5 ) int -> r13
-; V09 loc6 [V09,T38] ( 3, 1.50) int -> rbx
-; V10 loc7 [V10,T35] ( 6, 1.50) ref -> [rbp+0x18] class-hnd EH-live spill-single-def <<unknown class>>
+; V09 loc6 [V09,T36] ( 3, 1.50) int -> rbx
+; V10 loc7 [V10,T33] ( 6, 1.50) ref -> [rbp+0x18] class-hnd EH-live spill-single-def <<unknown class>>
; V11 loc8 [V11 ] ( 1, 0.50) struct (16) [rbp+0x60] do-not-enreg[XS] must-init addr-exposed <System.ValueTuple`2[System.__Canon,int]>
;* V12 loc9 [V12 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
; V13 loc10 [V13,T06] ( 7, 9 ) ref -> [rbp+0x10] class-hnd EH-live single-def <<unknown class>>
; V14 loc11 [V14 ] ( 2, 8 ) struct (16) [rbp+0x50] do-not-enreg[XS] must-init addr-exposed <System.ValueTuple`2[System.__Canon,int]>
; V15 loc12 [V15,T04] ( 6, 16 ) int -> r12
; V16 OutArgs [V16 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V17 tmp1 [V17,T39] ( 2, 1 ) int -> rdx
+; V17 tmp1 [V17,T37] ( 2, 1 ) int -> rdx
;* V18 tmp2 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V19 tmp3 [V19 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.BitHelper>
;* V20 tmp4 [V20 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
@@ -45,7 +45,7 @@
;* V34 tmp18 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp19 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V36 tmp20 [V36,T18] ( 8, 4 ) int -> r14 "Inline return value spill temp"
-; V37 tmp21 [V37,T33] ( 2, 2 ) long -> rdi "Inlining Arg"
+; V37 tmp21 [V37,T31] ( 2, 2 ) long -> rdi "Inlining Arg"
; V38 tmp22 [V38,T23] ( 3, 3 ) ref -> rax class-hnd exact single-def "Inlining Arg" <int[]>
;* V39 tmp23 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V40 tmp24 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -55,7 +55,7 @@
; V44 tmp28 [V44,T19] ( 5, 4.00) long -> [rbp+0x38] spill-single-def "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V46 tmp30 [V46 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V47 tmp31 [V47,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V47 tmp31 [V47,T32] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V48 tmp32 [V48,T09] ( 3, 6 ) int -> rcx "Inline stloc first use temp"
;* V49 tmp33 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[int]>
; V50 tmp34 [V50,T10] ( 3, 6 ) int -> rcx "Inline stloc first use temp"
@@ -69,18 +69,18 @@
;* V58 tmp42 [V58 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
; V59 tmp43 [V59 ] ( 2, 8 ) ref -> [rbp+0x50] do-not-enreg[X] addr-exposed "field V14.Item1 (fldOffset=0x0)" P-DEP
; V60 tmp44 [V60 ] ( 2, 8 ) int -> [rbp+0x58] do-not-enreg[X] addr-exposed "field V14.Item2 (fldOffset=0x8)" P-DEP
-; V61 tmp45 [V61,T45] ( 4, 1.50) byref -> rdi single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+; V61 tmp45 [V61,T43] ( 4, 1.50) byref -> rdi single-def "field V18._reference (fldOffset=0x0)" P-INDEP
;* V62 tmp46 [V62 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
;* V63 tmp47 [V63 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
;* V64 tmp48 [V64 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
-; V65 tmp49 [V65,T41] ( 2, 1.50) int -> [rbp+0x48] do-not-enreg[] "field V26.Item1 (fldOffset=0x0)" P-DEP
-; V66 tmp50 [V66,T42] ( 2, 1.50) int -> [rbp+0x4C] do-not-enreg[] "field V26.Item2 (fldOffset=0x4)" P-DEP
+; V65 tmp49 [V65,T39] ( 2, 1.50) int -> [rbp+0x48] do-not-enreg[] "field V26.Item1 (fldOffset=0x0)" P-DEP
+; V66 tmp50 [V66,T40] ( 2, 1.50) int -> [rbp+0x4C] do-not-enreg[] "field V26.Item2 (fldOffset=0x4)" P-DEP
;* V67 tmp51 [V67 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
;* V68 tmp52 [V68 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T43] ( 2, 1.50) int -> [rbp+0x40] do-not-enreg[] "field V33.Item1 (fldOffset=0x0)" P-DEP
-; V70 tmp54 [V70,T44] ( 2, 1.50) int -> [rbp+0x44] do-not-enreg[] "field V33.Item2 (fldOffset=0x4)" P-DEP
-; V71 tmp55 [V71,T46] ( 2, 1 ) byref -> r15 "field V39._reference (fldOffset=0x0)" P-INDEP
-; V72 tmp56 [V72,T47] ( 2, 1 ) int -> r14 "field V39._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T41] ( 2, 1.50) int -> [rbp+0x40] do-not-enreg[] "field V33.Item1 (fldOffset=0x0)" P-DEP
+; V70 tmp54 [V70,T42] ( 2, 1.50) int -> [rbp+0x44] do-not-enreg[] "field V33.Item2 (fldOffset=0x4)" P-DEP
+; V71 tmp55 [V71,T44] ( 2, 1 ) byref -> r15 "field V39._reference (fldOffset=0x0)" P-INDEP
+; V72 tmp56 [V72,T45] ( 2, 1 ) int -> r14 "field V39._length (fldOffset=0x8)" P-INDEP
;* V73 tmp57 [V73 ] ( 0, 0 ) byref -> zero-ref "field V40._reference (fldOffset=0x0)" P-INDEP
;* V74 tmp58 [V74 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
;* V75 tmp59 [V75 ] ( 0, 0 ) byref -> zero-ref single-def "field V41._reference (fldOffset=0x0)" P-INDEP
@@ -93,26 +93,23 @@
;* V82 tmp66 [V82 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP
; V83 tmp67 [V83,T16] ( 3, 4.50) byref -> r15 single-def "V06.[000..008)"
; V84 tmp68 [V84,T17] ( 3, 4.50) int -> r14 "V06.[008..012)"
-; V85 tmp69 [V85,T36] ( 3, 1.50) byref -> r15 "V21.[000..008)"
-; V86 tmp70 [V86,T40] ( 3, 1.50) int -> r14 "V21.[008..012)"
+; V85 tmp69 [V85,T34] ( 3, 1.50) byref -> r15 "V21.[000..008)"
+; V86 tmp70 [V86,T38] ( 3, 1.50) int -> r14 "V21.[008..012)"
; V87 tmp71 [V87 ] ( 2, 16 ) struct (16) [rbp+0x28] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ValueTuple`2[System.__Canon,int]>
;* V88 tmp72 [V88,T07] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; V89 GsCookie [V89 ] ( 1, 1 ) long -> [rbp+0x08] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V90 PSPSym [V90,T49] ( 1, 1 ) long -> [rbp+0x00] do-not-enreg[V] "PSPSym"
+; V90 PSPSym [V90,T46] ( 1, 1 ) long -> [rbp+0x00] do-not-enreg[V] "PSPSym"
; V91 cse0 [V91,T11] ( 3, 6 ) int -> [rbp+0x24] spill-single-def "CSE - aggressive"
; V92 cse1 [V92,T12] ( 3, 6 ) int -> [rbp+0x20] spill-single-def "CSE - aggressive"
-; V93 rat0 [V93,T29] ( 3, 2.20) long -> rdx "Spilling to split statement for tree"
+; V93 rat0 [V93,T28] ( 3, 2.20) long -> rdx "Spilling to split statement for tree"
; V94 rat1 [V94,T25] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-; V95 rat2 [V95,T30] ( 3, 2.20) long -> rdx "Spilling to split statement for tree"
+; V95 rat2 [V95,T29] ( 3, 2.20) long -> rdx "Spilling to split statement for tree"
; V96 rat3 [V96,T26] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-; V97 rat4 [V97,T31] ( 3, 2.20) long -> rdx "Spilling to split statement for tree"
+; V97 rat4 [V97,T30] ( 3, 2.20) long -> rdx "Spilling to split statement for tree"
; V98 rat5 [V98,T27] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V99 rat6 [V99,T32] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V100 rat7 [V100,T48] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V101 rat8 [V101,T28] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V102 rat9 [V102,T03] ( 3, 17.60) long -> rdx "Spilling to split statement for tree"
-; V103 rat10 [V103,T01] ( 3, 22.40) long -> r11 "fgMakeTemp is creating a new local variable"
-; V104 rat11 [V104,T24] ( 3, 3 ) int -> rdi "ReplaceWithLclVar is creating a new local variable"
+; V99 rat6 [V99,T03] ( 3, 17.60) long -> rdx "Spilling to split statement for tree"
+; V100 rat7 [V100,T01] ( 3, 22.40) long -> r11 "fgMakeTemp is creating a new local variable"
+; V101 rat8 [V101,T24] ( 3, 3 ) int -> rdi "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 152
@@ -177,7 +174,7 @@ G_M10461_IG06: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
mov gword ptr [rbp+0x18], rax
; GC ptr vars +{V10}
;; size=10 bbWeight=0.50 PerfScore 2.12
-G_M10461_IG07: ; bbWeight=0.50, gcVars=0000000800000004 {V00 V10}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10461_IG07: ; bbWeight=0.50, gcVars=0000000200000004 {V00 V10}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
mov rcx, rax
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; function address
@@ -528,7 +525,7 @@ G_M10461_IG44: ; bbWeight=0, gcVars=0000000000000004 {V00}, gcrefRegs=000
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M10461_IG45: ; bbWeight=0, gcVars=0000000800000004 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M10461_IG45: ; bbWeight=0, gcVars=0000000200000004 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V10}
push rbp
push r15
@@ -544,7 +541,7 @@ G_M10461_IG45: ; bbWeight=0, gcVars=0000000800000004 {V00 V10}, gcrefRegs
mov qword ptr [rsp+0x20], rbp
lea rbp, [rbp+0x20]
;; size=32 bbWeight=0 PerfScore 0.00
-G_M10461_IG46: ; bbWeight=0, gcVars=0000000800000004 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10461_IG46: ; bbWeight=0, gcVars=0000000200000004 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp+0x18], 0
je SHORT G_M10461_IG47
mov rcx, gword ptr [rbp+0x18]
realworld.run.windows.x64.checked.mch
-23 (-5.58%) : 27272.dasm - Microsoft.CodeAnalysis.SmallDictionary2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary
2[System.Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.Canon]):this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 17 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
+; V00 this [V00,T04] ( 7, 16 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V01 arg1 [V01,T15] ( 4, 4 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
-; V02 arg2 [V02,T18] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V02 arg2 [V02,T17] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V03 loc0 [V03 ] ( 3, 11 ) struct (24) [rsp+0x80] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SmallDictionary`2+Enumerator[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V04 loc1 [V04 ] ( 5, 10 ) struct (32) [rsp+0x60] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,34 +27,31 @@
; V16 tmp11 [V16 ] ( 3, 11 ) ref -> [rsp+0x80] do-not-enreg[X] addr-exposed "field V03._stack (fldOffset=0x0)" P-DEP
; V17 tmp12 [V17 ] ( 3, 11 ) ref -> [rsp+0x88] do-not-enreg[X] addr-exposed "field V03._next (fldOffset=0x8)" P-DEP
; V18 tmp13 [V18 ] ( 3, 11 ) ref -> [rsp+0x90] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x10)" P-DEP
-; V19 tmp14 [V19,T23] ( 2, 4 ) ref -> r14 "field V11.DefaultType (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T24] ( 2, 4 ) ref -> r15 "field V11._extensions (fldOffset=0x8)" P-INDEP
-; V21 tmp16 [V21,T25] ( 2, 4 ) ubyte -> r13 "field V11.NullableAnnotation (fldOffset=0x10)" P-INDEP
+; V19 tmp14 [V19,T21] ( 2, 4 ) ref -> r14 "field V11.DefaultType (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T22] ( 2, 4 ) ref -> r15 "field V11._extensions (fldOffset=0x8)" P-INDEP
+; V21 tmp16 [V21,T23] ( 2, 4 ) ubyte -> r13 "field V11.NullableAnnotation (fldOffset=0x10)" P-INDEP
; V22 tmp17 [V22 ] ( 2, 4 ) ref -> [rsp+0x48] do-not-enreg[X] addr-exposed "field V12._stack (fldOffset=0x0)" P-DEP
; V23 tmp18 [V23 ] ( 2, 4 ) ref -> [rsp+0x50] do-not-enreg[X] addr-exposed "field V12._next (fldOffset=0x8)" P-DEP
; V24 tmp19 [V24 ] ( 2, 4 ) ref -> [rsp+0x58] do-not-enreg[X] addr-exposed "field V12._current (fldOffset=0x10)" P-DEP
-; V25 tmp20 [V25,T26] ( 2, 4 ) long -> rdx "argument with side effect"
+; V25 tmp20 [V25,T24] ( 2, 4 ) long -> rdx "argument with side effect"
; V26 tmp21 [V26,T03] ( 2, 32 ) long -> rdx "argument with side effect"
; V27 tmp22 [V27,T12] ( 2, 8 ) long -> r8 "argument with side effect"
; V28 tmp23 [V28 ] ( 4, 16 ) struct (24) [rsp+0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
; V29 tmp24 [V29,T13] ( 2, 8 ) int -> rdx "argument with side effect"
; V30 tmp25 [V30,T10] ( 2, 8 ) ref -> rcx "argument with side effect"
; V31 tmp26 [V31,T11] ( 2, 8 ) ref -> r8 "argument with side effect"
-; V32 cse0 [V32,T21] ( 3, 4 ) long -> rbp "CSE - moderate"
-;* V33 cse1 [V33,T28] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V32 cse0 [V32,T19] ( 3, 4 ) long -> rbp "CSE - moderate"
+;* V33 cse1 [V33,T25] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; V34 cse2 [V34,T14] ( 4, 4.40) long -> rdi "CSE - aggressive"
-; V35 rat0 [V35,T19] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
-; V36 rat1 [V36,T22] ( 3, 4 ) long -> rbp "runtime lookup"
+; V35 rat0 [V35,T18] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
+; V36 rat1 [V36,T20] ( 3, 4 ) long -> rbp "runtime lookup"
; V37 rat2 [V37,T16] ( 3, 5.60) long -> rbp "fgMakeTemp is creating a new local variable"
-; V38 rat3 [V38,T20] ( 2, 4 ) long -> rcx "Spilling to split statement for tree"
-;* V39 rat4 [V39,T27] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V40 rat5 [V40,T17] ( 2, 4 ) long -> rcx "fgMakeTemp is creating a new local variable"
-;* V41 rat6 [V41,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V42 rat7 [V42,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V43 rat8 [V43,T08] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
-; V44 rat9 [V44,T01] ( 3, 35.20) long -> rcx "Spilling to split statement for tree"
-; V45 rat10 [V45,T02] ( 3, 32 ) long -> rdx "runtime lookup"
-; V46 rat11 [V46,T00] ( 3, 44.80) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V38 rat3 [V38,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V39 rat4 [V39,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V40 rat5 [V40,T08] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
+; V41 rat6 [V41,T01] ( 3, 35.20) long -> rcx "Spilling to split statement for tree"
+; V42 rat7 [V42,T02] ( 3, 32 ) long -> rdx "runtime lookup"
+; V43 rat8 [V43,T00] ( 3, 44.80) long -> rdx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 160
@@ -123,14 +120,8 @@ G_M40847_IG06: ; bbWeight=1, nogc, extend
mov qword ptr [rsp+0x90], rcx
;; size=28 bbWeight=1 PerfScore 6.00
G_M40847_IG07: ; bbWeight=1, extend
- mov rcx, qword ptr [rbx]
- mov rcx, qword ptr [rcx+0x38]
- mov rcx, qword ptr [rcx]
- mov rcx, qword ptr [rcx+0x28]
- test rcx, rcx
- jne G_M40847_IG12
jmp G_M40847_IG12
- ;; size=28 bbWeight=1 PerfScore 11.25
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M40847_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r8, rbp
lea rdx, [rsp+0x60]
@@ -219,7 +210,7 @@ G_M40847_IG16: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
ret
;; size=18 bbWeight=1 PerfScore 4.75
-; Total bytes of code 412, prolog size 60, PerfScore 249.08, instruction count 102, allocated bytes for code 412 (MethodHash=69926070) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 389, prolog size 60, PerfScore 239.83, instruction count 96, allocated bytes for code 389 (MethodHash=69926070) for method Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
-27 (-3.58%) : 27731.dasm - System.Collections.Immutable.ImmutableList1+Node[System.Collections.Generic.KeyValuePair
2[System.Canon,System.Canon]]:IndexOf(System.Collections.Generic.KeyValuePair2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer
1[System.Collections.Generic.KeyValuePair`2[System.Canon,System.Canon]]):int:this (FullOpts)
@@ -8,13 +8,13 @@
; 0 inlinees with PGO data; 2 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 9, 16 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
+; V00 this [V00,T06] ( 8, 15 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
; V01 arg1 [V01,T12] ( 3, 12 ) byref -> rsi single-def
; V02 arg2 [V02,T07] ( 8, 14 ) int -> rbx
; V03 arg3 [V03,T14] ( 6, 6 ) int -> rdi single-def
; V04 arg4 [V04,T17] ( 3, 6 ) ref -> r14 class-hnd <System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
; V05 loc0 [V05 ] ( 5, 15 ) struct (56) [rbp-0x78] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
-; V06 loc1 [V06,T32] ( 2, 2 ) int -> [rbp-0x7C] do-not-enreg[Z] EH-live
+; V06 loc1 [V06,T30] ( 2, 2 ) int -> [rbp-0x7C] do-not-enreg[Z] EH-live
; V07 OutArgs [V07 ] ( 1, 1 ) struct (56) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -34,34 +34,31 @@
; V23 tmp16 [V23,T08] ( 2, 16 ) ref -> [rbp-0x90] do-not-enreg[H] hidden-struct-arg "field V13.key (fldOffset=0x0)" P-DEP
; V24 tmp17 [V24,T09] ( 2, 16 ) ref -> [rbp-0x88] do-not-enreg[H] hidden-struct-arg "field V13.value (fldOffset=0x8)" P-DEP
;* V25 tmp18 [V25 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]>
-; V26 tmp19 [V26,T35] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V27 tmp20 [V27,T36] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V28 tmp21 [V28,T30] ( 2, 4 ) long -> rdx "argument with side effect"
+; V26 tmp19 [V26,T32] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V27 tmp20 [V27,T33] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V28 tmp21 [V28,T28] ( 2, 4 ) long -> rdx "argument with side effect"
; V29 tmp22 [V29,T04] ( 2, 32 ) long -> rdx "argument with side effect"
; V30 tmp23 [V30 ] ( 2, 16 ) struct (16) [rbp-0xA0] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]>
; V31 tmp24 [V31 ] ( 2, 16 ) struct (16) [rbp-0xB0] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]>
; V32 tmp25 [V32,T10] ( 2, 16 ) ref -> rcx "argument with side effect"
;* V33 tmp26 [V33,T16] ( 0, 0 ) long -> zero-ref "argument with side effect"
-; V34 PSPSym [V34,T34] ( 1, 1 ) long -> [rbp-0xB8] do-not-enreg[V] "PSPSym"
+; V34 PSPSym [V34,T31] ( 1, 1 ) long -> [rbp-0xB8] do-not-enreg[V] "PSPSym"
; V35 cse0 [V35,T18] ( 3, 6 ) long -> r13 "CSE - aggressive"
-; V36 cse1 [V36,T31] ( 3, 3 ) int -> rdx "CSE - aggressive"
+; V36 cse1 [V36,T29] ( 3, 3 ) int -> rdx "CSE - aggressive"
; V37 cse2 [V37,T13] ( 10, 12 ) long -> r15 multi-def "CSE - aggressive"
-; V38 rat0 [V38,T24] ( 3, 4.40) long -> r15 "Spilling to split statement for tree"
-; V39 rat1 [V39,T28] ( 3, 4 ) long -> rdx "runtime lookup"
+; V38 rat0 [V38,T23] ( 3, 4.40) long -> r15 "Spilling to split statement for tree"
+; V39 rat1 [V39,T26] ( 3, 4 ) long -> rdx "runtime lookup"
; V40 rat2 [V40,T19] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
-; V41 rat3 [V41,T25] ( 3, 4.40) long -> rdx "Spilling to split statement for tree"
-; V42 rat4 [V42,T29] ( 3, 4 ) long -> r13 "runtime lookup"
+; V41 rat3 [V41,T24] ( 3, 4.40) long -> rdx "Spilling to split statement for tree"
+; V42 rat4 [V42,T27] ( 3, 4 ) long -> r13 "runtime lookup"
; V43 rat5 [V43,T20] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
-; V44 rat6 [V44,T26] ( 2, 4 ) long -> rcx "Spilling to split statement for tree"
-;* V45 rat7 [V45,T33] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V46 rat8 [V46,T21] ( 2, 4 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V47 rat9 [V47,T05] ( 3, 22.40) long -> r12 "fgMakeTemp is creating a new local variable"
-; V48 rat10 [V48,T01] ( 3, 35.20) long -> rcx "Spilling to split statement for tree"
-; V49 rat11 [V49,T03] ( 3, 32 ) long -> rdx "runtime lookup"
-; V50 rat12 [V50,T00] ( 3, 44.80) long -> rdx "fgMakeTemp is creating a new local variable"
-; V51 rat13 [V51,T22] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
-; V52 rat14 [V52,T27] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
-; V53 rat15 [V53,T23] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V44 rat6 [V44,T05] ( 3, 22.40) long -> r12 "fgMakeTemp is creating a new local variable"
+; V45 rat7 [V45,T01] ( 3, 35.20) long -> rcx "Spilling to split statement for tree"
+; V46 rat8 [V46,T03] ( 3, 32 ) long -> rdx "runtime lookup"
+; V47 rat9 [V47,T00] ( 3, 44.80) long -> rdx "fgMakeTemp is creating a new local variable"
+; V48 rat10 [V48,T21] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V49 rat11 [V49,T25] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
+; V50 rat12 [V50,T22] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 184
@@ -173,18 +170,9 @@ G_M34258_IG09: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0040 {rsi},
nop
;; size=37 bbWeight=1 PerfScore 8.50
G_M34258_IG10: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0040 {rsi}, byref, isz
- mov r8, gword ptr [rbp+0x10]
- ; gcrRegs +[r8]
- mov rcx, qword ptr [r8]
- mov rcx, qword ptr [rcx+0x38]
- mov rcx, qword ptr [rcx]
- mov rcx, qword ptr [rcx+0x10]
- test rcx, rcx
- jne G_M34258_IG18
jmp SHORT G_M34258_IG18
- ;; size=29 bbWeight=1 PerfScore 12.25
+ ;; size=2 bbWeight=1 PerfScore 2.00
G_M34258_IG11: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0040 {rsi}, byref, isz
- ; gcrRegs -[r8]
mov rdi, r13
mov rcx, qword ptr [r15+0x38]
mov rcx, qword ptr [rcx]
@@ -229,17 +217,17 @@ G_M34258_IG17: ; bbWeight=4, isz, extend
test eax, eax
jne SHORT G_M34258_IG23
inc ebx
+ ;; size=27 bbWeight=4 PerfScore 23.00
+G_M34258_IG18: ; bbWeight=8, gcrefRegs=4000 {r14}, byrefRegs=0040 {rsi}, byref, isz
mov r8, gword ptr [rbp+0x10]
; gcrRegs +[r8]
- ;; size=31 bbWeight=4 PerfScore 27.00
-G_M34258_IG18: ; bbWeight=8, gcrefRegs=4100 {r8 r14}, byrefRegs=0040 {rsi}, byref, isz
mov rcx, qword ptr [r8]
mov rdx, qword ptr [rcx+0x38]
mov rdx, qword ptr [rdx]
mov rdx, qword ptr [rdx+0x10]
test rdx, rdx
je SHORT G_M34258_IG20
- ;; size=19 bbWeight=8 PerfScore 74.00
+ ;; size=23 bbWeight=8 PerfScore 82.00
G_M34258_IG19: ; bbWeight=6.40, gcrefRegs=4000 {r14}, byrefRegs=0040 {rsi}, byref, isz
; gcrRegs -[r8]
jmp SHORT G_M34258_IG21
@@ -409,7 +397,7 @@ G_M34258_IG41: ; bbWeight=1, funclet epilog, nogc, extend
ret
;; size=17 bbWeight=1 PerfScore 5.25
-; Total bytes of code 755, prolog size 88, PerfScore 392.48, instruction count 213, allocated bytes for code 755 (MethodHash=62fd7a2d) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
+; Total bytes of code 728, prolog size 88, PerfScore 386.23, instruction count 206, allocated bytes for code 728 (MethodHash=62fd7a2d) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
; ============================================================
Unwind Info:
-32 (-0.41%) : 16193.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
@@ -12,31 +12,31 @@
; V01 arg1 [V01,T68] ( 6, 5 ) ref -> rsi class-hnd single-def <Microsoft.ML.IDataView>
; V02 loc0 [V02,T58] ( 14, 7.50) ref -> rdi class-hnd single-def <<unknown class>>
; V03 loc1 [V03,T15] ( 24, 19.50) ref -> rbp class-hnd exact single-def <Microsoft.ML.Transforms.Text.TextFeaturizingEstimator+TransformApplierParams>
-; V04 loc2 [V04,T03] ( 31, 34 ) ref -> [rsp+0x1B0] class-hnd <System.String[]>
-; V05 loc3 [V05,T13] ( 21, 22.54) ref -> [rsp+0x1A8] class-hnd <System.String[]>
+; V04 loc2 [V04,T03] ( 31, 34 ) ref -> [rsp+0x1B8] class-hnd <System.String[]>
+; V05 loc3 [V05,T13] ( 21, 22.54) ref -> [rsp+0x1B0] class-hnd <System.String[]>
; V06 loc4 [V06,T81] ( 4, 5 ) ref -> r14 class-hnd single-def <System.String[]>
; V07 loc5 [V07,T77] ( 10, 5.50) ref -> r13 class-hnd <System.String>
; V08 loc6 [V08,T67] ( 12, 7 ) ref -> r12 class-hnd <System.String>
-; V09 loc7 [V09,T00] ( 80, 97 ) ref -> [rsp+0x1A0] class-hnd exact spill-single-def <<unknown class>>
-; V10 loc8 [V10,T04] ( 38, 32 ) ref -> [rsp+0x198] ld-addr-op class-hnd <Microsoft.ML.IDataView>
-; V11 loc9 [V11,T44] ( 23, 13.50) ref -> [rsp+0x190] class-hnd <Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]>
+; V09 loc7 [V09,T00] ( 80, 97 ) ref -> [rsp+0x1A8] class-hnd exact spill-single-def <<unknown class>>
+; V10 loc8 [V10,T04] ( 38, 32 ) ref -> [rsp+0x1A0] ld-addr-op class-hnd <Microsoft.ML.IDataView>
+; V11 loc9 [V11,T44] ( 23, 13.50) ref -> [rsp+0x198] class-hnd <Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]>
; V12 loc10 [V12,T180] ( 2, 1 ) ref -> r14 class-hnd exact single-def <System.String[]>
-; V13 loc11 [V13,T73] ( 6, 5.54) ref -> [rsp+0x188] class-hnd exact spill-single-def <System.ValueTuple`2[System.String,System.String][]>
-; V14 loc12 [V14,T42] ( 10, 13.54) ref -> [rsp+0x180] class-hnd exact spill-single-def <System.String[]>
-; V15 loc13 [V15,T16] ( 16, 16.78) int -> [rsp+0x20C]
+; V13 loc11 [V13,T73] ( 6, 5.54) ref -> [rsp+0x190] class-hnd exact spill-single-def <System.ValueTuple`2[System.String,System.String][]>
+; V14 loc12 [V14,T42] ( 10, 13.54) ref -> [rsp+0x188] class-hnd exact spill-single-def <System.String[]>
+; V15 loc13 [V15,T16] ( 16, 16.78) int -> [rsp+0x214]
; V16 loc14 [V16,T74] ( 6, 5.54) ref -> r15 class-hnd exact single-def <Microsoft.ML.Transforms.Text.WordTokenizingEstimator+ColumnOptions[]>
-; V17 loc15 [V17,T05] ( 17, 28.58) int -> [rsp+0x208]
+; V17 loc15 [V17,T05] ( 17, 28.58) int -> [rsp+0x210]
;* V18 loc16 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.ML.Transforms.Text.WordTokenizingEstimator+ColumnOptions>
-; V19 loc17 [V19,T75] ( 6, 5.54) ref -> [rsp+0x178] class-hnd exact spill-single-def <<unknown class>>
-; V20 loc18 [V20,T76] ( 6, 5.54) ref -> [rsp+0x170] class-hnd exact spill-single-def <System.String[]>
-; V21 loc19 [V21,T06] ( 17, 28.58) int -> [rsp+0x204]
-; V22 loc20 [V22,T08] ( 14, 28 ) ref -> [rsp+0x168] class-hnd exact <Microsoft.ML.Transforms.Text.StopWordsRemovingTransformer+Column>
+; V19 loc17 [V19,T75] ( 6, 5.54) ref -> [rsp+0x180] class-hnd exact spill-single-def <<unknown class>>
+; V20 loc18 [V20,T76] ( 6, 5.54) ref -> [rsp+0x178] class-hnd exact spill-single-def <System.String[]>
+; V21 loc19 [V21,T06] ( 17, 28.58) int -> [rsp+0x20C]
+; V22 loc20 [V22,T08] ( 14, 28 ) ref -> [rsp+0x170] class-hnd exact <Microsoft.ML.Transforms.Text.StopWordsRemovingTransformer+Column>
;* V23 loc21 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
; V24 loc22 [V24,T119] ( 5, 2.50) ref -> r13 class-hnd exact single-def <System.String>
;* V25 loc23 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String[]>
; V26 loc24 [V26,T40] ( 10, 14 ) ref -> r15 class-hnd single-def <System.String[]>
; V27 loc25 [V27,T43] ( 10, 13.54) ref -> r12 class-hnd exact single-def <System.ValueTuple`2[System.String,System.String][]>
-; V28 loc26 [V28,T07] ( 16, 28.54) int -> [rsp+0x200]
+; V28 loc26 [V28,T07] ( 16, 28.54) int -> [rsp+0x208]
; V29 loc27 [V29,T66] ( 15, 7.50) ref -> r14 class-hnd exact single-def <<unknown class>>
; V30 loc28 [V30,T92] ( 6, 3 ) ref -> r15 class-hnd exact single-def <System.String>
; V31 loc29 [V31,T93] ( 6, 3 ) ref -> r15 class-hnd exact single-def <System.String>
@@ -45,7 +45,7 @@
; V34 OutArgs [V34 ] ( 1, 1 ) struct (56) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V35 tmp1 [V35,T70] ( 3, 6 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <Microsoft.ML.Transforms.Text.TextFeaturizingEstimator+TransformApplierParams>
; V36 tmp2 [V36,T71] ( 3, 6 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V37 tmp3 [V37,T59] ( 5, 8 ) ref -> [rsp+0x160] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]>
+; V37 tmp3 [V37,T59] ( 5, 8 ) ref -> [rsp+0x168] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]>
; V38 tmp4 [V38,T02] ( 28, 31 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V39 tmp5 [V39,T60] ( 4, 8 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V40 tmp6 [V40,T72] ( 3, 6 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <Microsoft.ML.Transforms.Text.TextFeaturizingEstimator+Transformer>
@@ -69,33 +69,33 @@
;* V58 tmp24 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.String]>
; V59 tmp25 [V59,T98] ( 3, 3 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V60 tmp26 [V60,T84] ( 4, 4 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <Microsoft.ML.Transforms.LpNormNormalizingTransformer>
-; V61 tmp27 [V61,T56] ( 8, 8 ) ref -> [rsp+0x158] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Transforms.LpNormNormalizingEstimator+ColumnOptions>
-; V62 tmp28 [V62,T57] ( 8, 8 ) ref -> [rsp+0x150] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Transforms.LpNormNormalizingEstimator+ColumnOptions>
+; V61 tmp27 [V61,T56] ( 8, 8 ) ref -> [rsp+0x160] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Transforms.LpNormNormalizingEstimator+ColumnOptions>
+; V62 tmp28 [V62,T57] ( 8, 8 ) ref -> [rsp+0x158] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Transforms.LpNormNormalizingEstimator+ColumnOptions>
; V63 tmp29 [V63,T182] ( 2, 1 ) ref -> r15
;* V64 tmp30 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.String,System.String]>
; V65 tmp31 [V65,T69] ( 5, 5 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <Microsoft.ML.Transforms.Text.TokenizingByCharactersTransformer>
-; V66 tmp32 [V66,T99] ( 3, 3 ) ref -> [rsp+0x148] class-hnd exact spill-single-def "dup spill" <<unknown class>>
-; V67 tmp33 [V67,T140] ( 2, 2 ) ref -> [rsp+0x140] class-hnd spill-single-def "impAppendStmt" <<unknown class>>
+; V66 tmp32 [V66,T99] ( 3, 3 ) ref -> [rsp+0x150] class-hnd exact spill-single-def "dup spill" <<unknown class>>
+; V67 tmp33 [V67,T140] ( 2, 2 ) ref -> [rsp+0x148] class-hnd spill-single-def "impAppendStmt" <<unknown class>>
;* V68 tmp34 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <Microsoft.ML.IDataView>
-; V69 tmp35 [V69,T79] ( 5, 5 ) ref -> [rsp+0x138] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Transforms.Text.ExtractorColumn>
-; V70 tmp36 [V70,T120] ( 5, 2.50) ref -> [rsp+0x130]
-; V71 tmp37 [V71,T85] ( 4, 4 ) ref -> [rsp+0x128] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.ColumnConcatenatingTransformer>
-; V72 tmp38 [V72,T100] ( 3, 3 ) ref -> [rsp+0x120] class-hnd exact spill-single-def "dup spill" <<unknown class>>
-; V73 tmp39 [V73,T141] ( 2, 2 ) ref -> [rsp+0x118] class-hnd spill-single-def "impAppendStmt" <<unknown class>>
+; V69 tmp35 [V69,T79] ( 5, 5 ) ref -> [rsp+0x140] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Transforms.Text.ExtractorColumn>
+; V70 tmp36 [V70,T120] ( 5, 2.50) ref -> [rsp+0x138]
+; V71 tmp37 [V71,T85] ( 4, 4 ) ref -> [rsp+0x130] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.ColumnConcatenatingTransformer>
+; V72 tmp38 [V72,T100] ( 3, 3 ) ref -> [rsp+0x128] class-hnd exact spill-single-def "dup spill" <<unknown class>>
+; V73 tmp39 [V73,T141] ( 2, 2 ) ref -> [rsp+0x120] class-hnd spill-single-def "impAppendStmt" <<unknown class>>
;* V74 tmp40 [V74 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <Microsoft.ML.IDataView>
-; V75 tmp41 [V75,T80] ( 5, 5 ) ref -> [rsp+0x110] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Transforms.Text.ExtractorColumn>
+; V75 tmp41 [V75,T80] ( 5, 5 ) ref -> [rsp+0x118] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Transforms.Text.ExtractorColumn>
;* V76 tmp42 [V76 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.ML.Transforms.Text.StopWordsRemovingTransformer+Column>
; V77 tmp43 [V77,T21] ( 4, 16 ) ref -> r8 class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
;* V78 tmp44 [V78 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V79 tmp45 [V79,T01] ( 12, 48 ) ref -> [rsp+0x108] class-hnd exact "NewObj constructor temp" <Microsoft.ML.Transforms.Text.WordTokenizingEstimator+ColumnOptions>
+; V79 tmp45 [V79,T01] ( 12, 48 ) ref -> [rsp+0x110] class-hnd exact "NewObj constructor temp" <Microsoft.ML.Transforms.Text.WordTokenizingEstimator+ColumnOptions>
; V80 tmp46 [V80,T22] ( 4, 16 ) ref -> rax class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
-; V81 tmp47 [V81,T101] ( 3, 3 ) ref -> [rsp+0x100] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Transforms.Text.WordTokenizingEstimator>
+; V81 tmp47 [V81,T101] ( 3, 3 ) ref -> [rsp+0x108] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Transforms.Text.WordTokenizingEstimator>
; V82 tmp48 [V82,T23] ( 4, 16 ) ref -> rax class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
;* V83 tmp49 [V83 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.String,System.String]>
; V84 tmp50 [V84,T102] ( 3, 3 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <Microsoft.ML.Transforms.Text.TextNormalizingEstimator>
-; V85 tmp51 [V85,T103] ( 3, 3 ) ref -> [rsp+0xF8] class-hnd exact spill-single-def "dup spill" <System.String[]>
+; V85 tmp51 [V85,T103] ( 3, 3 ) ref -> [rsp+0x100] class-hnd exact spill-single-def "dup spill" <System.String[]>
; V86 tmp52 [V86,T142] ( 2, 2 ) ref -> rax class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.String>
-; V87 tmp53 [V87,T86] ( 4, 4 ) ref -> [rsp+0xF0] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.ColumnConcatenatingTransformer>
+; V87 tmp53 [V87,T86] ( 4, 4 ) ref -> [rsp+0xF8] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.ColumnConcatenatingTransformer>
; V88 tmp54 [V88,T124] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V89 tmp55 [V89,T176] ( 2, 1 ) int -> rax
;* V90 tmp56 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.ML.DataViewSchema>
@@ -103,18 +103,18 @@
; V92 tmp58 [V92,T160] ( 3, 1.50) ref -> rcx class-hnd single-def "Inline stloc first use temp" <System.String[]>
; V93 tmp59 [V93,T125] ( 4, 2 ) int -> r10 single-def "Inline stloc first use temp"
; V94 tmp60 [V94,T104] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
-; V95 tmp61 [V95,T105] ( 3, 3 ) ref -> [rsp+0xE8] class-hnd exact spill-single-def "dup spill" <Microsoft.ML.Data.ColumnConcatenatingTransformer+ColumnOptions[]>
-; V96 tmp62 [V96,T143] ( 2, 2 ) ref -> [rsp+0xE0] class-hnd exact spill-single-def "Inlining Arg" <System.String>
-; V97 tmp63 [V97,T106] ( 3, 3 ) ref -> [rsp+0xD8] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.ColumnConcatenatingTransformer+ColumnOptions>
+; V95 tmp61 [V95,T105] ( 3, 3 ) ref -> [rsp+0xF0] class-hnd exact spill-single-def "dup spill" <Microsoft.ML.Data.ColumnConcatenatingTransformer+ColumnOptions[]>
+; V96 tmp62 [V96,T143] ( 2, 2 ) ref -> [rsp+0xE8] class-hnd exact spill-single-def "Inlining Arg" <System.String>
+; V97 tmp63 [V97,T106] ( 3, 3 ) ref -> [rsp+0xE0] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.ColumnConcatenatingTransformer+ColumnOptions>
;* V98 tmp64 [V98 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.ML.IDataView>
;* V99 tmp65 [V99 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <<unknown class>>
; V100 tmp66 [V100,T107] ( 3, 3 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]>
-; V101 tmp67 [V101,T87] ( 4, 4 ) ref -> [rsp+0xD0] class-hnd spill-single-def "Inlining Arg" <<unknown class>>
-; V102 tmp68 [V102,T94] ( 6, 3 ) ref -> [rsp+0xC8] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V101 tmp67 [V101,T87] ( 4, 4 ) ref -> [rsp+0xD8] class-hnd spill-single-def "Inlining Arg" <<unknown class>>
+; V102 tmp68 [V102,T94] ( 6, 3 ) ref -> [rsp+0xD0] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
; V103 tmp69 [V103,T177] ( 3, 1.50) int -> rdx "Inline return value spill temp"
;* V104 tmp70 [V104 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline return value spill temp" <int[]>
; V105 tmp71 [V105,T88] ( 4, 4 ) ref -> r14 class-hnd single-def "Inlining Arg" <int[]>
-; V106 tmp72 [V106,T95] ( 6, 3 ) ref -> [rsp+0xC0] class-hnd exact spill-single-def "Inline stloc first use temp" <int[]>
+; V106 tmp72 [V106,T95] ( 6, 3 ) ref -> [rsp+0xC8] class-hnd exact spill-single-def "Inline stloc first use temp" <int[]>
; V107 tmp73 [V107,T178] ( 3, 1.50) int -> rdx "Inline return value spill temp"
;* V108 tmp74 [V108 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.ML.DataViewSchema>
;* V109 tmp75 [V109 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
@@ -124,10 +124,10 @@
; V113 tmp79 [V113,T24] ( 4, 16 ) ref -> rdx class-hnd exact "Inlining Arg" <System.String>
; V114 tmp80 [V114,T25] ( 4, 16 ) ref -> registers class-hnd exact "Inlining Arg" <System.String>
; V115 tmp81 [V115,T108] ( 3, 3 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.__Canon>
-; V116 tmp82 [V116,T26] ( 4, 16 ) ref -> [rsp+0xB8] class-hnd exact "Inlining Arg" <Microsoft.ML.DataViewSchema>
-; V117 tmp83 [V117,T27] ( 4, 16 ) ref -> [rsp+0xB0] class-hnd exact "Inlining Arg" <System.String>
-; V118 tmp84 [V118,T14] ( 6, 20 ) ref -> [rsp+0xA8] class-hnd exact "Inlining Arg" <System.String>
-; V119 tmp85 [V119,T28] ( 4, 16 ) ref -> [rsp+0xA0] class-hnd exact "Inlining Arg" <System.String>
+; V116 tmp82 [V116,T26] ( 4, 16 ) ref -> [rsp+0xC0] class-hnd exact "Inlining Arg" <Microsoft.ML.DataViewSchema>
+; V117 tmp83 [V117,T27] ( 4, 16 ) ref -> [rsp+0xB8] class-hnd exact "Inlining Arg" <System.String>
+; V118 tmp84 [V118,T14] ( 6, 20 ) ref -> [rsp+0xB0] class-hnd exact "Inlining Arg" <System.String>
+; V119 tmp85 [V119,T28] ( 4, 16 ) ref -> [rsp+0xA8] class-hnd exact "Inlining Arg" <System.String>
;* V120 tmp86 [V120 ] ( 0, 0 ) ref -> zero-ref
; V121 tmp87 [V121,T41] ( 8, 14 ) ref -> rdx
;* V122 tmp88 [V122 ] ( 0, 0 ) ref -> zero-ref
@@ -139,7 +139,7 @@
; V128 tmp94 [V128,T46] ( 8, 12 ) int -> r10 "Inline stloc first use temp"
; V129 tmp95 [V129,T18] ( 6, 16 ) ref -> rdx class-hnd exact "Inlining Arg" <System.String>
; V130 tmp96 [V130,T109] ( 3, 3 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.__Canon>
-; V131 tmp97 [V131,T29] ( 4, 16 ) ref -> [rsp+0x98] class-hnd exact "Inlining Arg" <Microsoft.ML.DataViewSchema>
+; V131 tmp97 [V131,T29] ( 4, 16 ) ref -> [rsp+0xA0] class-hnd exact "Inlining Arg" <Microsoft.ML.DataViewSchema>
; V132 tmp98 [V132,T30] ( 4, 16 ) ref -> rdx class-hnd exact "Inlining Arg" <System.String>
; V133 tmp99 [V133,T54] ( 6, 10 ) ref -> r8 class-hnd "Inline stloc first use temp" <System.String[]>
; V134 tmp100 [V134,T47] ( 8, 12 ) int -> r10 "Inline stloc first use temp"
@@ -150,7 +150,7 @@
;* V139 tmp105 [V139 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
; V140 tmp106 [V140,T161] ( 3, 1.50) ref -> rcx class-hnd single-def "Inline stloc first use temp" <System.String[]>
; V141 tmp107 [V141,T126] ( 4, 2 ) int -> rdx single-def "Inline stloc first use temp"
-; V142 tmp108 [V142,T111] ( 3, 3 ) ref -> [rsp+0x90] class-hnd spill-single-def "Inlining Arg" <Microsoft.ML.ITransformer>
+; V142 tmp108 [V142,T111] ( 3, 3 ) ref -> [rsp+0x98] class-hnd spill-single-def "Inlining Arg" <Microsoft.ML.ITransformer>
;* V143 tmp109 [V143,T203] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V144 tmp110 [V144,T82] ( 3, 5 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.String>
;* V145 tmp111 [V145 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.ML.IDataView>
@@ -177,7 +177,7 @@
;* V166 tmp132 [V166,T197] ( 0, 0 ) ref -> zero-ref single-def
;* V167 tmp133 [V167,T198] ( 0, 0 ) ref -> zero-ref single-def
; V168 tmp134 [V168,T164] ( 3, 1.50) ref -> r12 single-def
-; V169 tmp135 [V169,T158] ( 2, 2 ) ubyte -> [rsp+0x1FC] spill-single-def "Inlining Arg"
+; V169 tmp135 [V169,T158] ( 2, 2 ) ubyte -> [rsp+0x204] spill-single-def "Inlining Arg"
;* V170 tmp136 [V170 ] ( 0, 0 ) int -> zero-ref
;* V171 tmp137 [V171 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V172 tmp138 [V172,T165] ( 3, 1.50) ref -> rcx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
@@ -217,11 +217,11 @@
;* V206 tmp172 [V206,T202] ( 0, 0 ) ref -> zero-ref single-def "field V58.key (fldOffset=0x0)" P-INDEP
; V207 tmp173 [V207,T174] ( 3, 1.50) ref -> rdx single-def "field V58.value (fldOffset=0x8)" P-INDEP
; V208 tmp174 [V208,T61] ( 4, 8 ) ref -> rdx "field V64.Item1 (fldOffset=0x0)" P-INDEP
-; V209 tmp175 [V209,T62] ( 4, 8 ) ref -> [rsp+0x88] "field V64.Item2 (fldOffset=0x8)" P-INDEP
+; V209 tmp175 [V209,T62] ( 4, 8 ) ref -> [rsp+0x90] "field V64.Item2 (fldOffset=0x8)" P-INDEP
;* V210 tmp176 [V210,T91] ( 0, 0 ) ubyte -> zero-ref "field V78.hasValue (fldOffset=0x0)" P-INDEP
; V211 tmp177 [V211,T65] ( 4, 8 ) int -> rax "field V78.value (fldOffset=0x4)" P-INDEP
; V212 tmp178 [V212,T63] ( 4, 8 ) ref -> rdx "field V83.Item1 (fldOffset=0x0)" P-INDEP
-; V213 tmp179 [V213,T64] ( 4, 8 ) ref -> [rsp+0x80] "field V83.Item2 (fldOffset=0x8)" P-INDEP
+; V213 tmp179 [V213,T64] ( 4, 8 ) ref -> [rsp+0x88] "field V83.Item2 (fldOffset=0x8)" P-INDEP
;* V214 tmp180 [V214 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V153.hasValue (fldOffset=0x0)" P-INDEP
;* V215 tmp181 [V215 ] ( 0, 0 ) int -> zero-ref single-def "field V153.value (fldOffset=0x4)" P-INDEP
;* V216 tmp182 [V216,T204] ( 0, 0 ) ubyte -> zero-ref single-def "field V155.hasValue (fldOffset=0x0)" P-INDEP
@@ -237,21 +237,21 @@
;* V226 tmp192 [V226 ] ( 0, 0 ) ref -> zero-ref single-def "field V197.key (fldOffset=0x0)" P-INDEP
;* V227 tmp193 [V227 ] ( 0, 0 ) ref -> zero-ref single-def "field V197.value (fldOffset=0x8)" P-INDEP
; V228 tmp194 [V228,T89] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
-; V229 tmp195 [V229,T145] ( 2, 2 ) ref -> [rsp+0x78] spill-single-def "argument with side effect"
+; V229 tmp195 [V229,T145] ( 2, 2 ) ref -> [rsp+0x80] spill-single-def "argument with side effect"
; V230 tmp196 [V230,T146] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V231 tmp197 [V231,T147] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
-; V232 tmp198 [V232,T33] ( 4, 16 ) ref -> [rsp+0x70] "argument with side effect"
+; V232 tmp198 [V232,T33] ( 4, 16 ) ref -> [rsp+0x78] "argument with side effect"
; V233 tmp199 [V233,T34] ( 4, 16 ) ref -> rax "argument with side effect"
-; V234 tmp200 [V234,T11] ( 6, 24 ) byref -> [rsp+0x68] "BlockOp address local"
+; V234 tmp200 [V234,T11] ( 6, 24 ) byref -> [rsp+0x70] "BlockOp address local"
; V235 tmp201 [V235,T35] ( 4, 16 ) ref -> rax "argument with side effect"
; V236 tmp202 [V236,T36] ( 4, 16 ) ref -> rax "argument with side effect"
; V237 tmp203 [V237,T148] ( 2, 2 ) ref -> r13 single-def "argument with side effect"
; V238 tmp204 [V238,T149] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V239 tmp205 [V239,T37] ( 4, 16 ) ref -> [rsp+0x60] "argument with side effect"
+; V239 tmp205 [V239,T37] ( 4, 16 ) ref -> [rsp+0x68] "argument with side effect"
; V240 tmp206 [V240,T38] ( 4, 16 ) ref -> rax "argument with side effect"
-; V241 tmp207 [V241,T12] ( 6, 24 ) byref -> [rsp+0x58] "BlockOp address local"
-; V242 tmp208 [V242,T117] ( 3, 3 ) struct ( 8) [rsp+0x1F0] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-; V243 tmp209 [V243,T118] ( 3, 3 ) struct ( 8) [rsp+0x1E8] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+; V241 tmp207 [V241,T12] ( 6, 24 ) byref -> [rsp+0x60] "BlockOp address local"
+; V242 tmp208 [V242,T117] ( 3, 3 ) struct ( 8) [rsp+0x1F8] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
+; V243 tmp209 [V243,T118] ( 3, 3 ) struct ( 8) [rsp+0x1F0] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
;* V244 tmp210 [V244,T191] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V245 tmp211 [V245,T150] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
;* V246 tmp212 [V246,T192] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
@@ -261,7 +261,7 @@
; V250 tmp216 [V250,T154] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V251 tmp217 [V251,T155] ( 2, 2 ) ref -> r15 single-def "argument with side effect"
; V252 tmp218 [V252,T156] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V253 tmp219 [V253 ] ( 12, 12 ) struct (16) [rsp+0x1D8] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[System.String,System.String]>
+; V253 tmp219 [V253 ] ( 12, 12 ) struct (16) [rsp+0x1E0] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[System.String,System.String]>
;* V254 tmp220 [V254,T193] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V255 tmp221 [V255,T113] ( 3, 3 ) byref -> r15 single-def "BlockOp address local"
;* V256 tmp222 [V256,T194] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
@@ -278,23 +278,22 @@
;* V267 tmp233 [V267 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; V268 tmp234 [V268,T211] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
; V269 cse0 [V269,T179] ( 3, 1.50) long -> r12 "CSE - conservative"
-; V270 cse1 [V270,T136] ( 4, 2 ) int -> [rsp+0x1D4] spill-single-def "CSE - conservative"
-; V271 cse2 [V271,T137] ( 4, 2 ) int -> [rsp+0x1D0] spill-single-def "CSE - conservative"
+; V270 cse1 [V270,T136] ( 4, 2 ) int -> [rsp+0x1DC] spill-single-def "CSE - conservative"
+; V271 cse2 [V271,T137] ( 4, 2 ) int -> [rsp+0x1D8] spill-single-def "CSE - conservative"
; V272 cse3 [V272,T185] ( 2, 1 ) int -> r9 "CSE - conservative"
; V273 cse4 [V273,T186] ( 2, 1 ) int -> r8 "CSE - conservative"
; V274 cse5 [V274,T187] ( 2, 1 ) int -> r8 "CSE - conservative"
; V275 cse6 [V275,T188] ( 2, 1 ) int -> r8 "CSE - conservative"
; V276 cse7 [V276,T189] ( 2, 1 ) int -> rax "CSE - conservative"
; V277 cse8 [V277,T190] ( 2, 1 ) int -> r8 "CSE - conservative"
-; V278 cse9 [V278,T39] ( 4, 15.84) long -> [rsp+0x1C8] spill-single-def "CSE - moderate"
-; V279 cse10 [V279,T49] ( 3, 11.88) ref -> [rsp+0x50] spill-single-def "CSE - conservative"
-; V280 cse11 [V280,T50] ( 3, 11.88) ref -> [rsp+0x48] spill-single-def "CSE - conservative"
+; V278 cse9 [V278,T39] ( 4, 15.84) long -> [rsp+0x1D0] spill-single-def "CSE - moderate"
+; V279 cse10 [V279,T49] ( 3, 11.88) ref -> [rsp+0x58] spill-single-def "CSE - conservative"
+; V280 cse11 [V280,T50] ( 3, 11.88) ref -> [rsp+0x50] spill-single-def "CSE - conservative"
; V281 cse12 [V281,T175] ( 3, 1.50) ref -> rcx "CSE - conservative"
-; V282 cse13 [V282,T208] ( 4, 0.16) long -> [rsp+0x1C0] spill-single-def "CSE - conservative"
-; V283 cse14 [V283,T209] ( 3, 0.12) ref -> [rsp+0x40] spill-single-def "CSE - conservative"
-; V284 cse15 [V284,T210] ( 3, 0.12) ref -> [rsp+0x38] spill-single-def "CSE - conservative"
-; V285 cse16 [V285,T09] ( 7, 27.72) long -> [rsp+0x1B8] spill-single-def "CSE - aggressive"
-; TEMP_01 byref -> [rsp+0x210]
+; V282 cse13 [V282,T208] ( 4, 0.16) long -> [rsp+0x1C8] spill-single-def "CSE - conservative"
+; V283 cse14 [V283,T209] ( 3, 0.12) ref -> [rsp+0x48] spill-single-def "CSE - conservative"
...
-19 (-0.28%) : 35053.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
@@ -1552,35 +1552,30 @@ G_M4474_IG51: ; bbWeight=0.04, gcVars=00000000000000000000000000000000000
; gcr arg pop 0
mov gword ptr [rsp+0xB8], rax
; GC ptr vars +{V18}
- mov rdx, gword ptr [rsp+0xC0]
- ; gcrRegs +[rdx]
- lea rcx, bword ptr [rdx+0x08]
- ; byrRegs +[rcx]
- mov bword ptr [rsp+0x120], rcx
- mov r8d, dword ptr [rsp+0x118]
- mov r10, gword ptr [rsp+0xE0]
- ; gcrRegs +[r10]
- cmp r8d, dword ptr [r10+0x08]
+ mov edx, dword ptr [rsp+0x118]
+ mov r8, gword ptr [rsp+0xE0]
+ ; gcrRegs +[r8]
+ cmp edx, dword ptr [r8+0x08]
jae G_M4474_IG104
- mov dword ptr [rsp+0x118], r8d
- mov r9d, r8d
- mov r9, gword ptr [r10+8*r9+0x10]
+ mov dword ptr [rsp+0x118], edx
+ mov ecx, edx
+ mov r9, gword ptr [r8+8*rcx+0x10]
; gcrRegs +[r9]
mov rcx, r9
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
- mov r9, qword ptr [r9]
- ; gcrRegs -[r9]
- mov r9, qword ptr [r9+0x48]
- call [r9+0x30]<unknown method>
- ; gcrRegs -[rcx rdx r10]
+ mov r10, qword ptr [r9]
+ mov r10, qword ptr [r10+0x48]
+ call [r10+0x30]<unknown method>
+ ; gcrRegs -[rcx r8-r9]
; gcr arg pop 0
- mov rcx, bword ptr [rsp+0x120]
+ mov r8, gword ptr [rsp+0xC0]
+ ; gcrRegs +[r8]
+ lea rcx, bword ptr [r8+0x08]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx]
+ ; gcrRegs -[rax rdx r8]
; byrRegs -[rcx]
mov rax, gword ptr [rsp+0xC0]
; gcrRegs +[rax]
@@ -1591,7 +1586,7 @@ G_M4474_IG51: ; bbWeight=0.04, gcVars=00000000000000000000000000000000000
; gcr arg pop 0
test eax, eax
je G_M4474_IG58
- ;; size=210 bbWeight=0.04 PerfScore 1.99
+ ;; size=191 bbWeight=0.04 PerfScore 1.91
G_M4474_IG52: ; bbWeight=0.02, gcrefRegs=B068 {rbx rbp rsi r12 r13 r15}, byrefRegs=0000 {}, byref, isz
call [<unknown method>]
; gcrRegs +[rax]
@@ -2932,7 +2927,7 @@ G_M4474_IG104: ; bbWeight=0, gcVars=0000000000000000000000000000000000000
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 6733, prolog size 29, PerfScore 1461.83, instruction count 1386, allocated bytes for code 6733 (MethodHash=ac86ee85) for method System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
+; Total bytes of code 6714, prolog size 29, PerfScore 1461.75, instruction count 1384, allocated bytes for code 6714 (MethodHash=ac86ee85) for method System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 21449.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable
1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)
@@ -16,7 +16,7 @@
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
; V06 loc3 [V06,T14] ( 4, 5 ) int -> rdi
; V07 loc4 [V07,T15] ( 4, 5 ) int -> r13
-; V08 loc5 [V08,T38] ( 3, 1.50) int -> rbx
+; V08 loc5 [V08,T36] ( 3, 1.50) int -> rbx
; V09 loc6 [V09,T07] ( 13, 11.50) ref -> [rbp+0x10] do-not-enreg[M] class-hnd EH-live <<unknown class>>
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
; V11 loc8 [V11,T05] ( 5, 14 ) int -> rax
@@ -39,7 +39,7 @@
; V28 tmp16 [V28 ] ( 3, 3 ) struct ( 8) [rbp+0x28] do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
; V29 tmp17 [V29,T18] ( 8, 4 ) int -> r14 "Inline return value spill temp"
; V30 tmp18 [V30,T23] ( 3, 3 ) int -> rdi "Inlining Arg"
-; V31 tmp19 [V31,T35] ( 2, 2 ) long -> rdi "Inlining Arg"
+; V31 tmp19 [V31,T33] ( 2, 2 ) long -> rdi "Inlining Arg"
; V32 tmp20 [V32,T22] ( 3, 3 ) ref -> rax class-hnd exact single-def "Inlining Arg" <int[]>
;* V33 tmp21 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V34 tmp22 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -49,24 +49,24 @@
; V38 tmp26 [V38,T12] ( 5, 5 ) long -> [rbp+0x20] spill-single-def "Inlining Arg"
;* V39 tmp27 [V39 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V40 tmp28 [V40 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V41 tmp29 [V41,T36] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V41 tmp29 [V41,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V42 tmp30 [V42,T09] ( 3, 6 ) int -> r11 "Inline stloc first use temp"
; V43 tmp31 [V43,T10] ( 3, 6 ) int -> rcx "Inline stloc first use temp"
; V44 tmp32 [V44,T06] ( 3, 12 ) byref -> rcx "dup spill"
;* V45 tmp33 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp34 [V46 ] ( 0, 0 ) int -> zero-ref single-def "field V04._length (fldOffset=0x8)" P-INDEP
-; V47 tmp35 [V47,T34] ( 4, 2 ) byref -> rdi single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+; V47 tmp35 [V47,T32] ( 4, 2 ) byref -> rdi single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp36 [V48 ] ( 0, 0 ) int -> zero-ref single-def "field V13._length (fldOffset=0x8)" P-INDEP
;* V49 tmp37 [V49 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp38 [V50 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
-; V51 tmp39 [V51,T40] ( 2, 1.50) int -> [rbp+0x30] do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
-; V52 tmp40 [V52,T41] ( 2, 1.50) int -> [rbp+0x34] do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
+; V51 tmp39 [V51,T38] ( 2, 1.50) int -> [rbp+0x30] do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
+; V52 tmp40 [V52,T39] ( 2, 1.50) int -> [rbp+0x34] do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
;* V53 tmp41 [V53 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V54 tmp42 [V54 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
-; V55 tmp43 [V55,T42] ( 2, 1.50) int -> [rbp+0x28] do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
-; V56 tmp44 [V56,T43] ( 2, 1.50) int -> [rbp+0x2C] do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
-; V57 tmp45 [V57,T44] ( 2, 1 ) byref -> r15 "field V33._reference (fldOffset=0x0)" P-INDEP
-; V58 tmp46 [V58,T45] ( 2, 1 ) int -> r14 "field V33._length (fldOffset=0x8)" P-INDEP
+; V55 tmp43 [V55,T40] ( 2, 1.50) int -> [rbp+0x28] do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
+; V56 tmp44 [V56,T41] ( 2, 1.50) int -> [rbp+0x2C] do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
+; V57 tmp45 [V57,T42] ( 2, 1 ) byref -> r15 "field V33._reference (fldOffset=0x0)" P-INDEP
+; V58 tmp46 [V58,T43] ( 2, 1 ) int -> r14 "field V33._length (fldOffset=0x8)" P-INDEP
;* V59 tmp47 [V59 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V60 tmp48 [V60 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V61 tmp49 [V61 ] ( 0, 0 ) byref -> zero-ref single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -75,25 +75,22 @@
;* V64 tmp52 [V64 ] ( 0, 0 ) int -> zero-ref single-def "field V37._length (fldOffset=0x8)" P-INDEP
; V65 tmp53 [V65,T16] ( 3, 4.50) byref -> r15 single-def "V05.[000..008)"
; V66 tmp54 [V66,T17] ( 3, 4.50) int -> r14 single-def "V05.[008..012)"
-; V67 tmp55 [V67,T37] ( 3, 1.50) byref -> r15 "V16.[000..008)"
-; V68 tmp56 [V68,T39] ( 3, 1.50) int -> r14 "V16.[008..012)"
+; V67 tmp55 [V67,T35] ( 3, 1.50) byref -> r15 "V16.[000..008)"
+; V68 tmp56 [V68,T37] ( 3, 1.50) int -> r14 "V16.[008..012)"
; V69 tmp57 [V69,T03] ( 2, 16 ) ref -> rdx "argument with side effect"
; V70 GsCookie [V70 ] ( 1, 1 ) long -> [rbp+0x08] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V71 PSPSym [V71,T47] ( 1, 1 ) long -> [rbp+0x00] do-not-enreg[V] "PSPSym"
+; V71 PSPSym [V71,T44] ( 1, 1 ) long -> [rbp+0x00] do-not-enreg[V] "PSPSym"
; V72 cse0 [V72,T11] ( 3, 6 ) int -> rcx "CSE - aggressive"
-; V73 rat0 [V73,T30] ( 3, 2.20) long -> rdx "Spilling to split statement for tree"
+; V73 rat0 [V73,T29] ( 3, 2.20) long -> rdx "Spilling to split statement for tree"
; V74 rat1 [V74,T26] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-; V75 rat2 [V75,T31] ( 3, 2.20) long -> rdx "Spilling to split statement for tree"
+; V75 rat2 [V75,T30] ( 3, 2.20) long -> rdx "Spilling to split statement for tree"
; V76 rat3 [V76,T27] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-; V77 rat4 [V77,T32] ( 3, 2.20) long -> rdx "Spilling to split statement for tree"
+; V77 rat4 [V77,T31] ( 3, 2.20) long -> rdx "Spilling to split statement for tree"
; V78 rat5 [V78,T28] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V79 rat6 [V79,T33] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V80 rat7 [V80,T46] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V81 rat8 [V81,T29] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V82 rat9 [V82,T02] ( 3, 17.60) long -> rdx "Spilling to split statement for tree"
-; V83 rat10 [V83,T01] ( 3, 22.40) long -> r11 "fgMakeTemp is creating a new local variable"
-; V84 rat11 [V84,T24] ( 3, 3 ) int -> rdi "ReplaceWithLclVar is creating a new local variable"
-; V85 rat12 [V85,T25] ( 3, 3 ) long -> [rbp+0x18] spill-single-def "ReplaceWithLclVar is creating a new local variable"
+; V79 rat6 [V79,T02] ( 3, 17.60) long -> rdx "Spilling to split statement for tree"
+; V80 rat7 [V80,T01] ( 3, 22.40) long -> r11 "fgMakeTemp is creating a new local variable"
+; V81 rat8 [V81,T24] ( 3, 3 ) int -> rdi "ReplaceWithLclVar is creating a new local variable"
+; V82 rat9 [V82,T25] ( 3, 3 ) long -> [rbp+0x18] spill-single-def "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 96
+0 (0.00%) : 21290.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)
@@ -23,11 +23,11 @@
; V12 loc9 [V12,T14] ( 4, 14 ) byref -> [rsp+0x28] spill-single-def
; V13 loc10 [V13,T17] ( 6, 13.50) int -> r12
; V14 loc11 [V14,T15] ( 4, 14 ) byref -> [rsp+0x20] spill-single-def
-; V15 loc12 [V15,T66] ( 3, 1.50) int -> rbp single-def
+; V15 loc12 [V15,T62] ( 3, 1.50) int -> rbp single-def
; V16 OutArgs [V16 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V18 tmp2 [V18,T31] ( 4, 3 ) long -> r11 "VirtualCall with runtime lookup"
-; V19 tmp3 [V19,T67] ( 3, 1.50) int -> r15
+; V19 tmp3 [V19,T63] ( 3, 1.50) int -> r15
;* V20 tmp4 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp5 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V22 tmp6 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -35,8 +35,8 @@
;* V24 tmp8 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V25 tmp9 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp10 [V26,T28] ( 4, 4 ) byref -> rax single-def "dup spill"
-; V27 tmp11 [V27,T61] ( 3, 2 ) long -> rdx "spilling helperCall"
-; V28 tmp12 [V28,T68] ( 3, 1.50) int -> r15
+; V27 tmp11 [V27,T57] ( 3, 2 ) long -> rdx "spilling helperCall"
+; V28 tmp12 [V28,T64] ( 3, 1.50) int -> r15
;* V29 tmp13 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V30 tmp14 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V31 tmp15 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -48,9 +48,9 @@
; V37 tmp21 [V37,T32] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
; V38 tmp22 [V38,T33] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V39 tmp23 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp24 [V40,T80] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp24 [V40,T74] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V41 tmp25 [V41 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp26 [V42,T81] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp26 [V42,T75] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V43 tmp27 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V44 tmp28 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp29 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -58,9 +58,9 @@
; V47 tmp31 [V47,T34] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
; V48 tmp32 [V48,T35] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V49 tmp33 [V49 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V50 tmp34 [V50,T82] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V50 tmp34 [V50,T76] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V52 tmp36 [V52,T83] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V52 tmp36 [V52,T77] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V55 tmp39 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -68,62 +68,56 @@
; V57 tmp41 [V57,T36] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
; V58 tmp42 [V58,T37] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V60 tmp44 [V60,T84] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V60 tmp44 [V60,T78] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V61 tmp45 [V61 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V62 tmp46 [V62,T85] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V62 tmp46 [V62,T79] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V63 tmp47 [V63 ] ( 6, 10.50) ref -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64 ] ( 9, 19 ) int -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V65 tmp49 [V65,T71] ( 2, 1 ) ref -> rcx single-def "field V33._items (fldOffset=0x0)" P-INDEP
-; V66 tmp50 [V66,T74] ( 2, 1 ) int -> rdx single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V67 tmp51 [V67,T72] ( 2, 1 ) ref -> rcx single-def "field V43._items (fldOffset=0x0)" P-INDEP
-; V68 tmp52 [V68,T75] ( 2, 1 ) int -> rdx single-def "field V43._length (fldOffset=0x8)" P-INDEP
-; V69 tmp53 [V69,T73] ( 2, 1 ) ref -> rcx single-def "field V53._items (fldOffset=0x0)" P-INDEP
-; V70 tmp54 [V70,T76] ( 2, 1 ) int -> rdx single-def "field V53._length (fldOffset=0x8)" P-INDEP
+; V65 tmp49 [V65,T67] ( 2, 1 ) ref -> rcx single-def "field V33._items (fldOffset=0x0)" P-INDEP
+; V66 tmp50 [V66,T70] ( 2, 1 ) int -> rdx single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V67 tmp51 [V67,T68] ( 2, 1 ) ref -> rcx single-def "field V43._items (fldOffset=0x0)" P-INDEP
+; V68 tmp52 [V68,T71] ( 2, 1 ) int -> rdx single-def "field V43._length (fldOffset=0x8)" P-INDEP
+; V69 tmp53 [V69,T69] ( 2, 1 ) ref -> rcx single-def "field V53._items (fldOffset=0x0)" P-INDEP
+; V70 tmp54 [V70,T72] ( 2, 1 ) int -> rdx single-def "field V53._length (fldOffset=0x8)" P-INDEP
; V71 tmp55 [V71,T41] ( 3, 3 ) int -> rax "index expr"
; V72 tmp56 [V72,T42] ( 3, 3 ) int -> rdx "index expr"
; V73 tmp57 [V73,T43] ( 3, 3 ) int -> rax "index expr"
; V74 tmp58 [V74,T44] ( 3, 3 ) int -> rdx "index expr"
; V75 tmp59 [V75,T12] ( 2, 16 ) long -> rdx "argument with side effect"
; V76 tmp60 [V76,T13] ( 2, 16 ) long -> rdx "argument with side effect"
-; V77 tmp61 [V77,T64] ( 2, 2 ) int -> rdx "argument with side effect"
+; V77 tmp61 [V77,T60] ( 2, 2 ) int -> rdx "argument with side effect"
; V78 tmp62 [V78,T45] ( 3, 3 ) int -> rax "index expr"
; V79 tmp63 [V79,T46] ( 3, 3 ) int -> rdx "index expr"
-; V80 tmp64 [V80,T65] ( 2, 2 ) long -> rdx "argument with side effect"
-; V81 cse0 [V81,T69] ( 3, 1.50) int -> rcx "CSE - conservative"
-; V82 cse1 [V82,T70] ( 3, 1.50) int -> r12 "CSE - conservative"
-; V83 rat0 [V83,T54] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
-; V84 rat1 [V84,T62] ( 3, 2 ) long -> rdx "runtime lookup"
+; V80 tmp64 [V80,T61] ( 2, 2 ) long -> rdx "argument with side effect"
+; V81 cse0 [V81,T65] ( 3, 1.50) int -> rcx "CSE - conservative"
+; V82 cse1 [V82,T66] ( 3, 1.50) int -> r12 "CSE - conservative"
+; V83 rat0 [V83,T52] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V84 rat1 [V84,T58] ( 3, 2 ) long -> rdx "runtime lookup"
; V85 rat2 [V85,T47] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V86 rat3 [V86,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V87 rat4 [V87,T77] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V88 rat5 [V88,T48] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V89 rat6 [V89,T06] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
-; V90 rat7 [V90,T10] ( 3, 16 ) long -> rdx "runtime lookup"
-; V91 rat8 [V91,T02] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V92 rat9 [V92,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V93 rat10 [V93,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V94 rat11 [V94,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V95 rat12 [V95,T56] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
-; V96 rat13 [V96,T49] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V97 rat14 [V97,T57] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V98 rat15 [V98,T78] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V99 rat16 [V99,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V100 rat17 [V100,T08] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
-; V101 rat18 [V101,T11] ( 3, 16 ) long -> rdx "runtime lookup"
-; V102 rat19 [V102,T04] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
-; V103 rat20 [V103,T22] ( 3, 8.80) long -> rcx "Spilling to split statement for tree"
-; V104 rat21 [V104,T19] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V105 rat22 [V105,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V106 rat23 [V106,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V107 rat24 [V107,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V108 rat25 [V108,T58] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V86 rat3 [V86,T06] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
+; V87 rat4 [V87,T10] ( 3, 16 ) long -> rdx "runtime lookup"
+; V88 rat5 [V88,T02] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V89 rat6 [V89,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V90 rat7 [V90,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V91 rat8 [V91,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V92 rat9 [V92,T53] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V93 rat10 [V93,T48] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
+; V94 rat11 [V94,T08] ( 3, 17.60) long -> rcx "Spilling to split statement for tree"
+; V95 rat12 [V95,T11] ( 3, 16 ) long -> rdx "runtime lookup"
+; V96 rat13 [V96,T04] ( 3, 22.40) long -> rdx "fgMakeTemp is creating a new local variable"
+; V97 rat14 [V97,T22] ( 3, 8.80) long -> rcx "Spilling to split statement for tree"
+; V98 rat15 [V98,T19] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
+;* V99 rat16 [V99,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V100 rat17 [V100,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V101 rat18 [V101,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V102 rat19 [V102,T54] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V103 rat20 [V103,T49] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V104 rat21 [V104,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V105 rat22 [V105,T73] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V106 rat23 [V106,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V107 rat24 [V107,T56] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V108 rat25 [V108,T59] ( 3, 2 ) long -> rdx "runtime lookup"
; V109 rat26 [V109,T51] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V110 rat27 [V110,T59] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V111 rat28 [V111,T79] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V112 rat29 [V112,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V113 rat30 [V113,T60] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
-; V114 rat31 [V114,T63] ( 3, 2 ) long -> rdx "runtime lookup"
-; V115 rat32 [V115,T53] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 72
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
aspnet.run.windows.x64.checked.mch |
6 |
6 |
0 |
0 |
-94 |
+0 |
benchmarks.run.windows.x64.checked.mch |
1 |
0 |
0 |
1 |
-0 |
+0 |
benchmarks.run_pgo.windows.x64.checked.mch |
1 |
1 |
0 |
0 |
-16 |
+0 |
benchmarks.run_tiered.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
coreclr_tests.run.windows.x64.checked.mch |
3 |
2 |
0 |
1 |
-43 |
+0 |
libraries.crossgen2.windows.x64.checked.mch |
11 |
11 |
0 |
0 |
-191 |
+0 |
libraries.pmi.windows.x64.checked.mch |
32 |
21 |
0 |
11 |
-389 |
+0 |
libraries_tests.run.windows.x64.Release.mch |
41 |
34 |
1 |
6 |
-2,053 |
+21 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
16 |
12 |
0 |
4 |
-324 |
+0 |
realworld.run.windows.x64.checked.mch |
6 |
4 |
0 |
2 |
-101 |
+0 |
smoke_tests.nativeaot.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
117 |
91 |
1 |
25 |
-3,211 |
+21 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
aspnet.run.windows.x64.checked.mch |
113,442 |
48,462 |
64,980 |
972 (0.85%) |
972 (0.85%) |
benchmarks.run.windows.x64.checked.mch |
28,174 |
4 |
28,170 |
4 (0.01%) |
4 (0.01%) |
benchmarks.run_pgo.windows.x64.checked.mch |
101,022 |
50,170 |
50,852 |
131 (0.13%) |
131 (0.13%) |
benchmarks.run_tiered.windows.x64.checked.mch |
54,253 |
36,844 |
17,409 |
2 (0.00%) |
2 (0.00%) |
coreclr_tests.run.windows.x64.checked.mch |
574,111 |
341,113 |
232,998 |
301 (0.05%) |
301 (0.05%) |
libraries.crossgen2.windows.x64.checked.mch |
243,023 |
15 |
243,008 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.windows.x64.checked.mch |
307,632 |
6 |
307,626 |
9 (0.00%) |
9 (0.00%) |
libraries_tests.run.windows.x64.Release.mch |
682,150 |
485,176 |
196,974 |
2,467 (0.36%) |
2,467 (0.36%) |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
319,776 |
21,886 |
297,890 |
10 (0.00%) |
10 (0.00%) |
realworld.run.windows.x64.checked.mch |
36,885 |
3 |
36,882 |
3 (0.01%) |
3 (0.01%) |
smoke_tests.nativeaot.windows.x64.checked.mch |
32,444 |
10 |
32,434 |
0 (0.00%) |
0 (0.00%) |
|
2,492,912 |
983,689 |
1,509,223 |
3,899 (0.16%) |
3,899 (0.16%) |
jit-analyze output
aspnet.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 42179557 (overridden on cmd)
Total bytes of diff: 42179463 (overridden on cmd)
Total bytes of delta: -94 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-31 : 45958.dasm (-0.18 % of base)
-14 : 100842.dasm (-0.32 % of base)
-14 : 91547.dasm (-0.32 % of base)
-14 : 9404.dasm (-0.85 % of base)
-14 : 5346.dasm (-0.85 % of base)
-7 : 17006.dasm (-1.04 % of base)
6 total files with Code Size differences (6 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-31 (-0.18 % of base) : 45958.dasm - Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression:.ctor(Microsoft.EntityFrameworkCore.Metadata.IEntityType,Microsoft.EntityFrameworkCore.Query.ISqlExpressionFactory):this (FullOpts)
-14 (-0.32 % of base) : 100842.dasm - Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory:AddActionDataToBuilder(Microsoft.AspNetCore.Builder.EndpointBuilder,System.Collections.Generic.HashSet`1[System.String],Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor,System.String,Microsoft.AspNetCore.Routing.RouteValueDictionary,ubyte,ubyte,System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]]) (Tier1-OSR)
-14 (-0.32 % of base) : 91547.dasm - Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory:AddActionDataToBuilder(Microsoft.AspNetCore.Builder.EndpointBuilder,System.Collections.Generic.HashSet`1[System.String],Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor,System.String,Microsoft.AspNetCore.Routing.RouteValueDictionary,ubyte,ubyte,System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]]) (Tier1-OSR)
-14 (-0.85 % of base) : 9404.dasm - Microsoft.Extensions.Configuration.ChainedConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1-OSR)
-14 (-0.85 % of base) : 5346.dasm - Microsoft.Extensions.Configuration.ChainedConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1-OSR)
-7 (-1.04 % of base) : 17006.dasm - Microsoft.Extensions.Internal.PropertyHelper:<GetProperties>g__AddInterestingProperties|39_0(System.Collections.Generic.List`1[Microsoft.Extensions.Internal.PropertyHelper],System.Type) (Tier1-OSR)
Top method improvements (percentages):
-7 (-1.04 % of base) : 17006.dasm - Microsoft.Extensions.Internal.PropertyHelper:<GetProperties>g__AddInterestingProperties|39_0(System.Collections.Generic.List`1[Microsoft.Extensions.Internal.PropertyHelper],System.Type) (Tier1-OSR)
-14 (-0.85 % of base) : 9404.dasm - Microsoft.Extensions.Configuration.ChainedConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1-OSR)
-14 (-0.85 % of base) : 5346.dasm - Microsoft.Extensions.Configuration.ChainedConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1-OSR)
-14 (-0.32 % of base) : 100842.dasm - Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory:AddActionDataToBuilder(Microsoft.AspNetCore.Builder.EndpointBuilder,System.Collections.Generic.HashSet`1[System.String],Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor,System.String,Microsoft.AspNetCore.Routing.RouteValueDictionary,ubyte,ubyte,System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]]) (Tier1-OSR)
-14 (-0.32 % of base) : 91547.dasm - Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory:AddActionDataToBuilder(Microsoft.AspNetCore.Builder.EndpointBuilder,System.Collections.Generic.HashSet`1[System.String],Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor,System.String,Microsoft.AspNetCore.Routing.RouteValueDictionary,ubyte,ubyte,System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]]) (Tier1-OSR)
-31 (-0.18 % of base) : 45958.dasm - Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression:.ctor(Microsoft.EntityFrameworkCore.Metadata.IEntityType,Microsoft.EntityFrameworkCore.Query.ISqlExpressionFactory):this (FullOpts)
6 total methods with Code Size differences (6 improved, 0 regressed).
benchmarks.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 8747570 (overridden on cmd)
Total bytes of diff: 8747570 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 1 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
benchmarks.run_pgo.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 35391293 (overridden on cmd)
Total bytes of diff: 35391277 (overridden on cmd)
Total bytes of delta: -16 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-16 : 68276.dasm (-1.65 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-16 (-1.65 % of base) : 68276.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
Top method improvements (percentages):
-16 (-1.65 % of base) : 68276.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
1 total methods with Code Size differences (1 improved, 0 regressed).
coreclr_tests.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 393404923 (overridden on cmd)
Total bytes of diff: 393404880 (overridden on cmd)
Total bytes of delta: -43 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-24 : 558210.dasm (-2.97 % of base)
-19 : 571581.dasm (-5.11 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 1 unchanged.
Top method improvements (bytes):
-24 (-2.97 % of base) : 558210.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
-19 (-5.11 % of base) : 571581.dasm - Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]):ubyte:this (FullOpts)
Top method improvements (percentages):
-19 (-5.11 % of base) : 571581.dasm - Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]:EntriesAreReferenceEquals(Microsoft.Build.Collections.RetrievableEntryHashSet`1[System.__Canon]):ubyte:this (FullOpts)
-24 (-2.97 % of base) : 558210.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
2 total methods with Code Size differences (2 improved, 0 regressed).
libraries.crossgen2.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 39443922 (overridden on cmd)
Total bytes of diff: 39443731 (overridden on cmd)
Total bytes of delta: -191 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-45 : 13609.dasm (-0.94 % of base)
-25 : 97212.dasm (-2.23 % of base)
-23 : 134353.dasm (-1.53 % of base)
-23 : 116813.dasm (-1.13 % of base)
-19 : 14105.dasm (-5.62 % of base)
-17 : 132263.dasm (-1.28 % of base)
-8 : 171569.dasm (-0.39 % of base)
-8 : 196185.dasm (-0.50 % of base)
-8 : 196186.dasm (-0.39 % of base)
-8 : 171568.dasm (-0.49 % of base)
-7 : 117086.dasm (-0.20 % of base)
11 total files with Code Size differences (11 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-45 (-0.94 % of base) : 13609.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-25 (-2.23 % of base) : 97212.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
-23 (-1.13 % of base) : 116813.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
-23 (-1.53 % of base) : 134353.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-19 (-5.62 % of base) : 14105.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
-17 (-1.28 % of base) : 132263.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
-8 (-0.50 % of base) : 196185.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-8 (-0.49 % of base) : 171568.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-8 (-0.39 % of base) : 171569.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-8 (-0.39 % of base) : 196186.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-7 (-0.20 % of base) : 117086.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
Top method improvements (percentages):
-19 (-5.62 % of base) : 14105.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
-25 (-2.23 % of base) : 97212.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
-23 (-1.53 % of base) : 134353.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-17 (-1.28 % of base) : 132263.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
-23 (-1.13 % of base) : 116813.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
-45 (-0.94 % of base) : 13609.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
-8 (-0.50 % of base) : 196185.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-8 (-0.49 % of base) : 171568.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-8 (-0.39 % of base) : 196186.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-8 (-0.39 % of base) : 171569.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-7 (-0.20 % of base) : 117086.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
11 total methods with Code Size differences (11 improved, 0 regressed).
libraries.pmi.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 61389190 (overridden on cmd)
Total bytes of diff: 61388801 (overridden on cmd)
Total bytes of delta: -389 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-46 : 124257.dasm (-1.14 % of base)
-26 : 207837.dasm (-3.24 % of base)
-23 : 163630.dasm (-3.14 % of base)
-23 : 191240.dasm (-6.42 % of base)
-23 : 203464.dasm (-3.14 % of base)
-23 : 208019.dasm (-2.92 % of base)
-23 : 209201.dasm (-3.27 % of base)
-23 : 209206.dasm (-3.41 % of base)
-23 : 210355.dasm (-3.54 % of base)
-23 : 144270.dasm (-1.28 % of base)
-23 : 151309.dasm (-6.42 % of base)
-21 : 101993.dasm (-1.48 % of base)
-19 : 206668.dasm (-2.88 % of base)
-17 : 256568.dasm (-2.20 % of base)
-8 : 187309.dasm (-0.47 % of base)
-8 : 187310.dasm (-0.39 % of base)
-8 : 237004.dasm (-0.48 % of base)
-8 : 237005.dasm (-0.39 % of base)
-7 : 124536.dasm (-0.16 % of base)
-7 : 108530.dasm (-0.16 % of base)
21 total files with Code Size differences (21 improved, 0 regressed), 11 unchanged.
Top method improvements (bytes):
-46 (-1.14 % of base) : 124257.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
-26 (-3.24 % of base) : 207837.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-23 (-3.14 % of base) : 163630.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-23 (-3.14 % of base) : 203464.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-23 (-6.42 % of base) : 191240.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-23 (-6.42 % of base) : 151309.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-23 (-2.92 % of base) : 208019.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-23 (-3.41 % of base) : 209206.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-23 (-3.27 % of base) : 209201.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
-23 (-3.54 % of base) : 210355.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-23 (-1.28 % of base) : 144270.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-21 (-1.48 % of base) : 101993.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
-19 (-2.88 % of base) : 206668.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-17 (-2.20 % of base) : 256568.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
-8 (-0.47 % of base) : 187309.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-8 (-0.48 % of base) : 237004.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-8 (-0.39 % of base) : 187310.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-8 (-0.39 % of base) : 237005.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-7 (-0.13 % of base) : 108533.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitAllElementInitializersRecursive(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator+IndexDesc],ubyte):this (FullOpts)
-7 (-0.16 % of base) : 108530.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
Top method improvements (percentages):
-23 (-6.42 % of base) : 191240.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-23 (-6.42 % of base) : 151309.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-23 (-3.54 % of base) : 210355.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-23 (-3.41 % of base) : 209206.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-23 (-3.27 % of base) : 209201.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
-26 (-3.24 % of base) : 207837.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-23 (-3.14 % of base) : 163630.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-23 (-3.14 % of base) : 203464.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-23 (-2.92 % of base) : 208019.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-19 (-2.88 % of base) : 206668.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-17 (-2.20 % of base) : 256568.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
-21 (-1.48 % of base) : 101993.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
-23 (-1.28 % of base) : 144270.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-46 (-1.14 % of base) : 124257.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
-8 (-0.48 % of base) : 237004.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-8 (-0.47 % of base) : 187309.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-8 (-0.39 % of base) : 237005.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-8 (-0.39 % of base) : 187310.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-7 (-0.16 % of base) : 124536.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
-7 (-0.16 % of base) : 108530.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
21 total methods with Code Size differences (21 improved, 0 regressed).
libraries_tests.run.windows.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 281642309 (overridden on cmd)
Total bytes of diff: 281640277 (overridden on cmd)
Total bytes of delta: -2032 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
21 : 52945.dasm (1.18 % of base)
Top file improvements (bytes):
-150 : 36195.dasm (-1.41 % of base)
-136 : 341659.dasm (-4.86 % of base)
-132 : 218609.dasm (-4.70 % of base)
-132 : 235309.dasm (-4.65 % of base)
-132 : 352146.dasm (-4.70 % of base)
-132 : 407427.dasm (-4.76 % of base)
-132 : 674831.dasm (-4.76 % of base)
-132 : 119097.dasm (-4.71 % of base)
-130 : 299396.dasm (-4.74 % of base)
-128 : 207408.dasm (-4.56 % of base)
-128 : 669332.dasm (-4.57 % of base)
-70 : 618534.dasm (-3.85 % of base)
-70 : 166806.dasm (-3.85 % of base)
-60 : 128409.dasm (-7.55 % of base)
-54 : 14755.dasm (-0.49 % of base)
-52 : 222593.dasm (-3.55 % of base)
-30 : 320678.dasm (-0.29 % of base)
-26 : 73477.dasm (-0.24 % of base)
-25 : 655560.dasm (-2.59 % of base)
-25 : 415447.dasm (-0.76 % of base)
35 total files with Code Size differences (34 improved, 1 regressed), 6 unchanged.
Top method regressions (bytes):
21 (1.18 % of base) : 52945.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
Top method improvements (bytes):
-150 (-1.41 % of base) : 36195.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
-136 (-4.86 % of base) : 341659.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-132 (-4.70 % of base) : 218609.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-132 (-4.65 % of base) : 235309.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-132 (-4.70 % of base) : 352146.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-132 (-4.76 % of base) : 407427.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-132 (-4.76 % of base) : 674831.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-132 (-4.71 % of base) : 119097.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-130 (-4.74 % of base) : 299396.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-128 (-4.56 % of base) : 207408.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-128 (-4.57 % of base) : 669332.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-70 (-3.85 % of base) : 618534.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-70 (-3.85 % of base) : 166806.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-60 (-7.55 % of base) : 128409.dasm - Microsoft.Extensions.Options.OptionsFactory`1[System.__Canon]:Create(System.String):System.__Canon:this (Tier1)
-54 (-0.49 % of base) : 14755.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
-52 (-3.55 % of base) : 222593.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:Heapify():this (Tier1)
-30 (-0.29 % of base) : 320678.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1-OSR)
-26 (-0.24 % of base) : 73477.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
-25 (-2.59 % of base) : 655560.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this (Tier1)
-25 (-0.76 % of base) : 415447.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (Tier1)
Top method regressions (percentages):
21 (1.18 % of base) : 52945.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
Top method improvements (percentages):
-60 (-7.55 % of base) : 128409.dasm - Microsoft.Extensions.Options.OptionsFactory`1[System.__Canon]:Create(System.String):System.__Canon:this (Tier1)
-136 (-4.86 % of base) : 341659.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-132 (-4.76 % of base) : 407427.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-132 (-4.76 % of base) : 674831.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-130 (-4.74 % of base) : 299396.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-132 (-4.71 % of base) : 119097.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-132 (-4.70 % of base) : 218609.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-132 (-4.70 % of base) : 352146.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-132 (-4.65 % of base) : 235309.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-128 (-4.57 % of base) : 669332.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-128 (-4.56 % of base) : 207408.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-70 (-3.85 % of base) : 618534.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-70 (-3.85 % of base) : 166806.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-52 (-3.55 % of base) : 222593.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:Heapify():this (Tier1)
-21 (-2.83 % of base) : 596833.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (Tier1)
-21 (-2.65 % of base) : 653502.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.NullabilityInfo,System.__Canon]]]):int:this (Tier1)
-25 (-2.59 % of base) : 655560.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this (Tier1)
-17 (-2.22 % of base) : 110081.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
-19 (-2.05 % of base) : 66860.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this (Tier1)
-150 (-1.41 % of base) : 36195.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
35 total methods with Code Size differences (34 improved, 1 regressed).
librariestestsnotieredcompilation.run.windows.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 133913806 (overridden on cmd)
Total bytes of diff: 133913482 (overridden on cmd)
Total bytes of delta: -324 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-80 : 315097.dasm (-2.85 % of base)
-27 : 23255.dasm (-3.58 % of base)
-26 : 73805.dasm (-3.32 % of base)
-23 : 23440.dasm (-5.58 % of base)
-23 : 63142.dasm (-1.28 % of base)
-23 : 6407.dasm (-3.14 % of base)
-23 : 70935.dasm (-3.32 % of base)
-23 : 71861.dasm (-3.54 % of base)
-23 : 71537.dasm (-2.97 % of base)
-23 : 99796.dasm (-5.61 % of base)
-22 : 71165.dasm (-3.26 % of base)
-8 : 186797.dasm (-0.48 % of base)
12 total files with Code Size differences (12 improved, 0 regressed), 4 unchanged.
Top method improvements (bytes):
-80 (-2.85 % of base) : 315097.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
-27 (-3.58 % of base) : 23255.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
-26 (-3.32 % of base) : 73805.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-23 (-3.14 % of base) : 6407.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-23 (-5.58 % of base) : 23440.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-23 (-2.97 % of base) : 71537.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-23 (-3.32 % of base) : 70935.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
-23 (-3.54 % of base) : 71861.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-23 (-5.61 % of base) : 99796.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
-23 (-1.28 % of base) : 63142.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-22 (-3.26 % of base) : 71165.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-8 (-0.48 % of base) : 186797.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
Top method improvements (percentages):
-23 (-5.61 % of base) : 99796.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
-23 (-5.58 % of base) : 23440.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-27 (-3.58 % of base) : 23255.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
-23 (-3.54 % of base) : 71861.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.Array,int):this (FullOpts)
-23 (-3.32 % of base) : 70935.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
-26 (-3.32 % of base) : 73805.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-22 (-3.26 % of base) : 71165.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-23 (-3.14 % of base) : 6407.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (FullOpts)
-23 (-2.97 % of base) : 71537.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-80 (-2.85 % of base) : 315097.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
-23 (-1.28 % of base) : 63142.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-8 (-0.48 % of base) : 186797.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
12 total methods with Code Size differences (12 improved, 0 regressed).
realworld.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 14170687 (overridden on cmd)
Total bytes of diff: 14170586 (overridden on cmd)
Total bytes of delta: -101 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-32 : 16193.dasm (-0.41 % of base)
-27 : 27731.dasm (-3.58 % of base)
-23 : 27272.dasm (-5.58 % of base)
-19 : 35053.dasm (-0.28 % of base)
4 total files with Code Size differences (4 improved, 0 regressed), 2 unchanged.
Top method improvements (bytes):
-32 (-0.41 % of base) : 16193.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
-27 (-3.58 % of base) : 27731.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
-23 (-5.58 % of base) : 27272.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-19 (-0.28 % of base) : 35053.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
Top method improvements (percentages):
-23 (-5.58 % of base) : 27272.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
-27 (-3.58 % of base) : 27731.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:IndexOf(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],int,int,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):int:this (FullOpts)
-32 (-0.41 % of base) : 16193.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
-19 (-0.28 % of base) : 35053.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
4 total methods with Code Size differences (4 improved, 0 regressed).