Diffs are based on 2,501,261 contexts (1,003,806 MinOpts, 1,497,455 FullOpts).
MISSED contexts: 3,956 (0.16%)
Overall (-664 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch
15,579,780
+0
benchmarks.run_pgo.linux.arm64.checked.mch
80,916,176
-4
coreclr_tests.run.linux.arm64.checked.mch
509,788,568
-24
libraries.crossgen2.linux.arm64.checked.mch
55,736,420
-108
libraries.pmi.linux.arm64.checked.mch
75,995,180
-128
libraries_tests.run.linux.arm64.Release.mch
381,263,920
-300
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
162,531,076
-80
realworld.run.linux.arm64.checked.mch
15,906,972
-20
FullOpts (-664 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch
15,276,772
+0
benchmarks.run_pgo.linux.arm64.checked.mch
55,979,716
-4
coreclr_tests.run.linux.arm64.checked.mch
160,563,512
-24
libraries.crossgen2.linux.arm64.checked.mch
55,734,784
-108
libraries.pmi.linux.arm64.checked.mch
75,875,196
-128
libraries_tests.run.linux.arm64.Release.mch
165,966,780
-300
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
149,049,864
-80
realworld.run.linux.arm64.checked.mch
15,321,604
-20
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
-4 (-0.33%) : 85059.dasm - System.Linq.Enumerable:TryGetSingleSystem.__Canon:System.__Canon (Tier1)
@@ -53,7 +53,6 @@
; 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+0x10]
;
; Lcl frame size = 40
@@ -65,7 +64,7 @@ G_M35688_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x25, x26, [sp, #0x68]
str x27, [sp, #0x78]
mov fp, sp
- stp xzr, xzr, [fp, #0x10] // [V06 loc2]
+ str xzr, [fp, #0x18] // [V06 loc2]
add x4, sp, #128
stp x0, x4, [fp, #0x28] // [V31 PSPSym]
mov x19, x0
@@ -362,10 +361,10 @@ G_M35688_IG29: ; bbWeight=0.04, gcrefRegs=2800000 {x23 x25}, byrefRegs=40
; gcrRegs +[x0]
b G_M35688_IG27
;; size=8 bbWeight=0.04 PerfScore 0.07
-G_M35688_IG30: ; bbWeight=0.01, gcrefRegs=2200000 {x21 x25}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs -[x0 x23] +[x21]
+G_M35688_IG30: ; bbWeight=0.01, gcrefRegs=2A00000 {x21 x23 x25}, byrefRegs=400000 {x22}, byref, isz
+ ; gcrRegs -[x0] +[x21]
mov x11, x24
- ldr x0, [fp, #0x20] // [V04 loc0]
+ mov x0, x23
; gcrRegs +[x0]
ldr x1, [x11]
blr x1
@@ -373,8 +372,8 @@ G_M35688_IG30: ; bbWeight=0.01, gcrefRegs=2200000 {x21 x25}, byrefRegs=40
ldr x1, [x21, #0x18]
cmp x1, x26
beq G_M35688_IG38
- ;; size=28 bbWeight=0.01 PerfScore 0.08
-G_M35688_IG31: ; bbWeight=0, gcrefRegs=2200001 {x0 x21 x25}, byrefRegs=400000 {x22}, byref
+ ;; size=28 bbWeight=0.01 PerfScore 0.07
+G_M35688_IG31: ; bbWeight=0, gcrefRegs=2A00001 {x0 x21 x23 x25}, byrefRegs=400000 {x22}, byref
mov x1, x0
; gcrRegs +[x1]
ldr x0, [x21, #0x08]
@@ -383,14 +382,12 @@ G_M35688_IG31: ; 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_IG32: ; bbWeight=0.01, gcrefRegs=2200000 {x21 x25}, byrefRegs=400000 {x22}, byref, isz
+G_M35688_IG32: ; bbWeight=0.01, gcrefRegs=2A00000 {x21 x23 x25}, byrefRegs=400000 {x22}, byref, isz
cbz w0, G_M35688_IG34
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M35688_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35688_IG33: ; bbWeight=0, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x21 x25]
; byrRegs -[x22]
- ldr x23, [fp, #0x20] // [V04 loc0]
- ; gcrRegs +[x23]
movz x0, #0xD1FFAB1E // code for System.Linq.ThrowHelper:ThrowMoreThanOneMatchException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -398,7 +395,7 @@ G_M35688_IG33: ; 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_IG34: ; bbWeight=0.01, gcrefRegs=2200000 {x21 x25}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x23] +[x21 x25]
; byrRegs +[x22]
@@ -417,16 +414,18 @@ G_M35688_IG34: ; bbWeight=0.01, gcrefRegs=2200000 {x21 x25}, byrefRegs=40
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
+ ldr x23, [fp, #0x20] // [V04 loc0]
+ ; gcrRegs +[x23]
cbnz w0, G_M35688_IG30
- ;; size=52 bbWeight=0.01 PerfScore 0.11
-G_M35688_IG35: ; bbWeight=0.04, gcrefRegs=2000000 {x25}, byrefRegs=400000 {x22}, byref
+ ;; size=56 bbWeight=0.01 PerfScore 0.12
+G_M35688_IG35: ; bbWeight=0.04, gcrefRegs=2800000 {x23 x25}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x21]
- ldr x0, [fp, #0x20] // [V04 loc0]
+ mov x0, x23
; gcrRegs +[x0]
b G_M35688_IG27
- ;; size=8 bbWeight=0.04 PerfScore 0.13
+ ;; size=8 bbWeight=0.04 PerfScore 0.07
G_M35688_IG36: ; bbWeight=0.01, gcrefRegs=2200001 {x0 x21 x25}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs +[x21]
+ ; gcrRegs -[x23] +[x21]
ldr x1, [x0, #0x18]
; gcrRegs +[x1]
ldr w2, [x0, #0x14]
@@ -438,9 +437,6 @@ G_M35688_IG36: ; bbWeight=0.01, gcrefRegs=2200001 {x0 x21 x25}, byrefRegs
G_M35688_IG37: ; bbWeight=0.06, gcrefRegs=2200003 {x0 x1 x21 x25}, byrefRegs=400000 {x22}, byref
add w2, w2, #1
str w2, [x0, #0x14]
- add x14, x0, #8
- ; byrRegs +[x14]
- str x14, [fp, #0x10] // [TEMP_01]
ldr x19, [x0, #0x20]
; gcrRegs +[x19]
add x1, x1, #16
@@ -453,9 +449,10 @@ G_M35688_IG37: ; bbWeight=0.06, gcrefRegs=2200003 {x0 x1 x21 x25}, byrefR
ldr x2, [x19, #0x18]
blr x2
; gcrRegs -[x1 x19]
- ; byrRegs -[x14]
; gcr arg pop 0
- ldr x14, [fp, #0x10] // [TEMP_01]
+ ldr x23, [fp, #0x20] // [V04 loc0]
+ ; gcrRegs +[x23]
+ add x14, x23, #8
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
@@ -463,8 +460,8 @@ G_M35688_IG37: ; bbWeight=0.06, gcrefRegs=2200003 {x0 x1 x21 x25}, byrefR
; gcrRegs -[x0 x15]
; byrRegs -[x14]
b G_M35688_IG30
- ;; size=56 bbWeight=0.06 PerfScore 1.24
-G_M35688_IG38: ; bbWeight=0.01, gcrefRegs=2200001 {x0 x21 x25}, byrefRegs=400000 {x22}, byref
+ ;; size=52 bbWeight=0.06 PerfScore 1.18
+G_M35688_IG38: ; bbWeight=0.01, gcrefRegs=2A00001 {x0 x21 x23 x25}, byrefRegs=400000 {x22}, byref
; gcrRegs +[x0]
ldr x27, [x21, #0x08]
; gcrRegs +[x27]
@@ -487,7 +484,7 @@ G_M35688_IG38: ; bbWeight=0.01, gcrefRegs=2200001 {x0 x21 x25}, byrefRegs
b G_M35688_IG32
;; size=56 bbWeight=0.01 PerfScore 0.18
G_M35688_IG39: ; bbWeight=0.01, gcrefRegs=2000001 {x0 x25}, byrefRegs=400000 {x22}, byref
- ; gcrRegs -[x21] +[x0]
+ ; gcrRegs -[x21 x23] +[x0]
str xzr, [x0, #0x08]
movn w11, #0
str w11, [x0, #0x14]
@@ -607,7 +604,7 @@ G_M35688_IG52: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ret lr
;; size=28 bbWeight=0.04 PerfScore 0.78
-; Total bytes of code 1224, prolog size 56, PerfScore 237.68, instruction count 306, allocated bytes for code 1224 (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 1220, prolog size 56, PerfScore 237.56, instruction count 305, allocated bytes for code 1220 (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:
@@ -618,7 +615,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 277 (0x00115) Actual length = 1108 (0x000454)
+ Function Length : 276 (0x00114) Actual length = 1104 (0x000450)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
coreclr_tests.run.linux.arm64.checked.mch
-24 (-2.33%) : 612648.dasm - ILCompiler.LazyGenericsSupport+Graph
1+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] ( 2, 512 ) long -> x0 "spilling expr"
-;* V64 rat9 [V64,T16] ( 0, 0 ) long -> zero-ref "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_IG17
;; 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_IG14
;; 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]
@@ -231,7 +227,7 @@ G_M1799_IG15: ; bbWeight=6.20, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=
sxtw w0, w24
;; size=4 bbWeight=6.20 PerfScore 3.10
G_M1799_IG16: ; 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_IG17: ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
mov x0, x23
@@ -244,32 +240,24 @@ G_M1799_IG17: ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M1799_IG30
+ cbz w0, G_M1799_IG29
;; size=32 bbWeight=512 PerfScore 3840.00
-G_M1799_IG18: ; bbWeight=128, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x08]
- cmp x0, #48
- ble G_M1799_IG19
- ;; size=24 bbWeight=128 PerfScore 1728.00
-G_M1799_IG19: ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19]
+G_M1799_IG18: ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x20]
...
+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.ArrayBuilder
1[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.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)@@ -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 (-1.06%) : 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)@@ -11,7 +11,7 @@
; V00 arg0 [V00,T29] ( 7, 5.50) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax>
; V01 arg1 [V01,T14] ( 6, 11 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]>
; V02 arg2 [V02,T15] ( 6, 10 ) 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+0x38] 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+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
; V04 loc1 [V04,T20] ( 7, 10.04) ref -> x21 class-hnd exact single-def <<unknown class>>
; V05 loc2 [V05,T31] ( 5, 7 ) int -> x22 single-def
; V06 loc3 [V06,T05] ( 16, 25.04) int -> x23
@@ -19,7 +19,7 @@
; V08 loc5 [V08,T10] ( 10, 16 ) ref -> x26 class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
;* V09 loc6 [V09 ] ( 0, 0 ) ushort -> zero-ref
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax>
-; V11 loc8 [V11 ] ( 4, 4 ) struct (24) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
+; V11 loc8 [V11 ] ( 4, 4 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
; V12 loc9 [V12,T33] ( 3, 6 ) int -> x24 single-def
; V13 loc10 [V13,T06] ( 9, 25 ) int -> x20
; V14 loc11 [V14,T00] ( 10,106 ) ref -> x22 class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbol>
@@ -68,10 +68,10 @@
;* V57 tmp38 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
; V58 tmp39 [V58,T28] ( 2, 8 ) ref -> x2 class-hnd "Inlining Arg" <<unknown class>>
; V59 tmp40 [V59,T19] ( 3, 12 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
-; V60 tmp41 [V60 ] ( 2, 2 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V11.<Parent>k__BackingField (fldOffset=0x0)" P-DEP
-; V61 tmp42 [V61 ] ( 4, 4 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V11.<Node>k__BackingField (fldOffset=0x8)" P-DEP
-; V62 tmp43 [V62 ] ( 2, 2 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V11.<Index>k__BackingField (fldOffset=0x10)" P-DEP
-; V63 tmp44 [V63 ] ( 2, 2 ) int -> [fp+0x34] do-not-enreg[X] addr-exposed "field V11.<Position>k__BackingField (fldOffset=0x14)" P-DEP
+; V60 tmp41 [V60 ] ( 2, 2 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V11.<Parent>k__BackingField (fldOffset=0x0)" P-DEP
+; V61 tmp42 [V61 ] ( 4, 4 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V11.<Node>k__BackingField (fldOffset=0x8)" P-DEP
+; V62 tmp43 [V62 ] ( 2, 2 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V11.<Index>k__BackingField (fldOffset=0x10)" P-DEP
+; V63 tmp44 [V63 ] ( 2, 2 ) int -> [fp+0x24] do-not-enreg[X] addr-exposed "field V11.<Position>k__BackingField (fldOffset=0x14)" P-DEP
;* V64 tmp45 [V64 ] ( 0, 0 ) ref -> zero-ref "field V17.array (fldOffset=0x0)" P-INDEP
;* V65 tmp46 [V65 ] ( 0, 0 ) ref -> zero-ref "field V26.array (fldOffset=0x0)" P-INDEP
;* V66 tmp47 [V66 ] ( 0, 0 ) ref -> zero-ref "field V29.array (fldOffset=0x0)" P-INDEP
@@ -86,29 +86,27 @@
; V75 tmp56 [V75,T16] ( 6, 12 ) ref -> x0 "argument with side effect"
; V76 tmp57 [V76,T17] ( 6, 12 ) ref -> x0 "argument with side effect"
; V77 cse0 [V77,T01] ( 7, 88 ) long -> x23 "CSE - aggressive"
-; TEMP_01 byref -> [fp+0x18]
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M1087_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
- stp x19, x20, [sp, #0x50]
- stp x21, x22, [sp, #0x60]
- stp x23, x24, [sp, #0x70]
- stp x25, x26, [sp, #0x80]
+ stp fp, lr, [sp, #-0x80]!
+ stp x19, x20, [sp, #0x40]
+ stp x21, x22, [sp, #0x50]
+ stp x23, x24, [sp, #0x60]
+ stp x25, x26, [sp, #0x70]
mov fp, sp
- add x9, fp, #24
+ add x9, fp, #16
movi v16.16b, #0
stp q16, q16, [x9]
stp xzr, xzr, [x9, #0x20]
- str xzr, [x9, #0x30]
mov x21, x0
; gcrRegs +[x21]
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=56 bbWeight=1 PerfScore 11.00
+ ;; size=52 bbWeight=1 PerfScore 10.00
G_M1087_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldrsb wzr, [x21]
add x22, x21, #40
@@ -179,7 +177,7 @@ G_M1087_IG05: ; bbWeight=0.50, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=4
G_M1087_IG06: ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
; byrRegs -[x22]
- add x8, fp, #56 // [V03 loc0]
+ add x8, fp, #40 // [V03 loc0]
mov x0, x23
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax:get_Arguments():Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]:this
@@ -189,7 +187,7 @@ G_M1087_IG06: ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
ldr wzr, [x0]
blr x1
; gcrRegs -[x0 x23]
- ldrsw x1, [fp, #0x38] // [V03 loc0]
+ ldrsw x1, [fp, #0x28] // [V03 loc0]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -197,7 +195,7 @@ G_M1087_IG06: ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
; gcrRegs +[x0]
mov x21, x0
; gcrRegs +[x21]
- ldr w0, [fp, #0x38] // [V03 loc0]
+ ldr w0, [fp, #0x28] // [V03 loc0]
; gcrRegs -[x0]
sub w22, w0, #1
mov w23, wzr
@@ -207,7 +205,7 @@ G_M1087_IG06: ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
ble G_M1087_IG17
;; size=84 bbWeight=1 PerfScore 23.00
G_M1087_IG07: ; bbWeight=3.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- add x0, fp, #56 // [V03 loc0]
+ add x0, fp, #40 // [V03 loc0]
mov w2, w23
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -237,7 +235,7 @@ G_M1087_IG08: ; bbWeight=1.98, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
movk x0, #0xD1FFAB1E LSL #32
cmp x8, x0
bne G_M1087_IG45
- add x8, fp, #32 // [V11 loc8]
+ add x8, fp, #16 // [V11 loc8]
mov x0, x24
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax:get_Identifier():Microsoft.CodeAnalysis.SyntaxToken:this
@@ -246,7 +244,7 @@ G_M1087_IG08: ; bbWeight=1.98, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
- ldr x0, [fp, #0x28] // [V61 tmp42]
+ ldr x0, [fp, #0x18] // [V61 tmp42]
; gcrRegs +[x0]
cbnz x0, G_M1087_IG09
mov x25, xzr
@@ -396,7 +394,7 @@ G_M1087_IG16: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
;; size=4 bbWeight=1 PerfScore 1.00
G_M1087_IG17: ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
- add x0, fp, #56 // [V03 loc0]
+ add x0, fp, #40 // [V03 loc0]
mov w2, w23
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -426,7 +424,7 @@ G_M1087_IG18: ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
movk x0, #0xD1FFAB1E LSL #32
cmp x8, x0
bne G_M1087_IG45
- add x8, fp, #32 // [V11 loc8]
+ add x8, fp, #16 // [V11 loc8]
mov x0, x24
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax:get_Identifier():Microsoft.CodeAnalysis.SyntaxToken:this
@@ -435,7 +433,7 @@ G_M1087_IG18: ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
- ldr x0, [fp, #0x28] // [V61 tmp42]
+ ldr x0, [fp, #0x18] // [V61 tmp42]
; gcrRegs +[x0]
cbnz x0, G_M1087_IG19
mov x25, xzr
@@ -476,9 +474,6 @@ G_M1087_IG21: ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x25]
; byrRegs -[x14]
- add x14, x26, #48
- ; byrRegs +[x14]
- str x14, [fp, #0x18] // [TEMP_01]
mov x0, x24
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:get_SyntaxTree():Microsoft.CodeAnalysis.SyntaxTree:this
@@ -486,7 +481,6 @@ G_M1087_IG21: ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- ; byrRegs -[x14]
mov x1, x24
; gcrRegs +[x1]
ldr x2, [x0]
@@ -494,7 +488,7 @@ G_M1087_IG21: ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
ldr x2, [x2, #0x38]
blr x2
; gcrRegs -[x1 x24]
- ldr x14, [fp, #0x18] // [TEMP_01]
+ add x14, x26, #48
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
@@ -502,7 +496,7 @@ G_M1087_IG21: ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
; gcrRegs -[x0 x15]
; byrRegs -[x14]
b G_M1087_IG23
- ;; size=104 bbWeight=0.02 PerfScore 0.57
+ ;; size=96 bbWeight=0.02 PerfScore 0.51
G_M1087_IG22: ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
; gcrRegs -[x26] +[x24]
movz x0, #0xD1FFAB1E
@@ -518,9 +512,6 @@ G_M1087_IG22: ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
str x0, [x26, #0x28]
- add x14, x26, #48
- ; byrRegs +[x14]
- str x14, [fp, #0x18] // [TEMP_01]
mov x0, x24
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:get_SyntaxTree():Microsoft.CodeAnalysis.SyntaxTree:this
@@ -528,7 +519,6 @@ G_M1087_IG22: ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- ; byrRegs -[x14]
mov x1, x24
; gcrRegs +[x1]
ldr x2, [x0]
@@ -536,14 +526,14 @@ G_M1087_IG22: ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
ldr x2, [x2, #0x38]
blr x2
; gcrRegs -[x1 x24]
- ldr x14, [fp, #0x18] // [TEMP_01]
+ add x14, x26, #48
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ;; size=104 bbWeight=0.02 PerfScore 0.56
+ ;; size=96 bbWeight=0.02 PerfScore 0.50
G_M1087_IG23: ; bbWeight=0.04, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
ldr w14, [x21, #0x08]
cmp w23, w14
@@ -775,11 +765,11 @@ G_M1087_IG40: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
;; size=12 bbWeight=4 PerfScore 8.00
G_M1087_IG41: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19 x21]
- ldp x25, x26, [sp, #0x80]
- ldp x23, x24, [sp, #0x70]
- ldp x21, x22, [sp, #0x60]
- ldp x19, x20, [sp, #0x50]
- ldp fp, lr, [sp], #0x90
+ ldp x25, x26, [sp, #0x70]
+ ldp x23, x24, [sp, #0x60]
+ ldp x21, x22, [sp, #0x50]
+ ldp x19, x20, [sp, #0x40]
+ ldp fp, lr, [sp], #0x80
ret lr
;; size=24 bbWeight=1 PerfScore 6.00
G_M1087_IG42: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
@@ -830,7 +820,7 @@ G_M1087_IG47: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, by
brk_unix #0
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1892, prolog size 44, PerfScore 1114.05, instruction count 473, allocated bytes for code 1892 (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 1872, prolog size 40, PerfScore 1112.93, instruction count 468, allocated bytes for code 1872 (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:
@@ -841,7 +831,7 @@ Unwind Info:
...
-32 (-0.78%) : 109400.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport
@@ -14,15 +14,15 @@
; V03 loc1 [V03,T42] ( 7, 5.02) ref -> x23 class-hnd exact single-def <<unknown class>>
; V04 loc2 [V04,T51] ( 4, 3 ) ref -> x27 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxTree>
; V05 loc3 [V05,T20] ( 14, 11.00) ref -> x28 class-hnd exact single-def <<unknown class>>
-; V06 loc4 [V06 ] ( 5, 5.50) struct ( 8) [fp+0xC8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
+; V06 loc4 [V06 ] ( 5, 5.50) struct ( 8) [fp+0xB8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
;* V07 loc5 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Threading.CancellationToken>
; V08 loc6 [V08,T41] ( 5, 5.50) int -> x26 single-def
-; V09 loc7 [V09,T04] ( 12, 18.52) int -> [fp+0xC4]
-; V10 loc8 [V10 ] ( 12, 14 ) struct (24) [fp+0xA8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]>
+; V09 loc7 [V09,T04] ( 12, 18.52) int -> [fp+0xB4]
+; V10 loc8 [V10 ] ( 12, 14 ) struct (24) [fp+0x98] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]>
; V11 loc9 [V11,T14] ( 12, 12 ) ref -> x21 must-init class-hnd exact <Microsoft.CodeAnalysis.VisualBasic.OptionsValidator+_Closure$__0-0>
;* V12 loc10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
-; V13 loc11 [V13,T21] ( 10, 10 ) ref -> [fp+0x88] class-hnd <<unknown class>>
-; V14 loc12 [V14,T37] ( 6, 6 ) ref -> [fp+0x80] class-hnd <<unknown class>>
+; V13 loc11 [V13,T21] ( 10, 10 ) ref -> [fp+0x78] class-hnd <<unknown class>>
+; V14 loc12 [V14,T37] ( 6, 6 ) ref -> [fp+0x70] class-hnd <<unknown class>>
;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V16 tmp1 [V16,T24] ( 5, 10 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V17 tmp2 [V17 ] ( 0, 0 ) ref -> zero-ref single-def
@@ -38,14 +38,14 @@
; V27 tmp12 [V27,T62] ( 2, 2 ) ref -> x2 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions>
; V28 tmp13 [V28,T52] ( 3, 3 ) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V29 tmp14 [V29,T15] ( 6, 12 ) ref -> registers class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.OptionsValidator+_Closure$__0-0>
-; V30 tmp15 [V30,T06] ( 8, 16 ) ref -> [fp+0x78] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
+; V30 tmp15 [V30,T06] ( 8, 16 ) ref -> [fp+0x68] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
; V31 tmp16 [V31,T07] ( 8, 16 ) ref -> x0 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V32 tmp17 [V32 ] ( 0, 0 ) ref -> zero-ref
; V33 tmp18 [V33,T02] ( 10, 20 ) ref -> x2 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V34 tmp19 [V34 ] ( 0, 0 ) ref -> zero-ref
; V35 tmp20 [V35,T38] ( 6, 6 ) ref -> x2
-; V36 tmp21 [V36,T00] ( 16, 32 ) ref -> [fp+0x70] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.DiagnosticInfo>
-; V37 tmp22 [V37,T03] ( 10, 20 ) ref -> [fp+0x68] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.VBDiagnostic>
+; V36 tmp21 [V36,T00] ( 16, 32 ) ref -> [fp+0x60] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.DiagnosticInfo>
+; V37 tmp22 [V37,T03] ( 10, 20 ) ref -> [fp+0x58] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.VBDiagnostic>
; V38 tmp23 [V38,T53] ( 3, 3 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
; V39 tmp24 [V39,T54] ( 3, 3 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V40 tmp25 [V40 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
@@ -54,9 +54,9 @@
;* V43 tmp28 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
;* V44 tmp29 [V44 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
;* V45 tmp30 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V46 tmp31 [V46,T46] ( 5, 5 ) byref -> [fp+0x60] spill-single-def "Inlining Arg"
-; V47 tmp32 [V47,T56] ( 4, 2 ) ref -> [fp+0x58] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V48 tmp33 [V48,T57] ( 4, 2 ) ref -> [fp+0x50] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+; V46 tmp31 [V46,T46] ( 5, 5 ) byref -> [fp+0x50] spill-single-def "Inlining Arg"
+; V47 tmp32 [V47,T56] ( 4, 2 ) ref -> [fp+0x48] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V48 tmp33 [V48,T57] ( 4, 2 ) ref -> [fp+0x40] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
; V49 tmp34 [V49,T63] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
; V50 tmp35 [V50,T58] ( 4, 2 ) int -> x26 "Inline return value spill temp"
; V51 tmp36 [V51,T64] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
@@ -64,7 +64,7 @@
;* V53 tmp38 [V53,T78] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
; V54 tmp39 [V54,T47] ( 4, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
; V55 tmp40 [V55,T59] ( 4, 2 ) int -> x26 "Inline stloc first use temp"
-; V56 tmp41 [V56,T11] ( 15, 14.02) ref -> [fp+0x48] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
+; V56 tmp41 [V56,T11] ( 15, 14.02) ref -> [fp+0x38] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
; V57 tmp42 [V57,T12] ( 16, 14 ) ref -> x3 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
; V58 tmp43 [V58,T81] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V59 tmp44 [V59,T26] ( 6, 9 ) ref -> x1 "CASTCLASS eval op1"
@@ -74,27 +74,27 @@
; V63 tmp48 [V63,T28] ( 6, 8 ) ref -> registers class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
; V64 tmp49 [V64,T31] ( 4, 8 ) ref -> x4 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
;* V65 tmp50 [V65 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
-; V66 tmp51 [V66 ] ( 11, 10.02) struct (24) [fp+0x90] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
+; V66 tmp51 [V66 ] ( 11, 10.02) struct (24) [fp+0x80] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
;* V67 tmp52 [V67 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
;* V68 tmp53 [V68 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
-; V69 tmp54 [V69,T16] ( 6, 12 ) ref -> [fp+0x40] class-hnd exact "Inlining Arg" <<unknown class>>
-; V70 tmp55 [V70,T32] ( 4, 8 ) ref -> [fp+0x38] class-hnd "Inlining Arg" <System.Object[]>
+; V69 tmp54 [V69,T16] ( 6, 12 ) ref -> [fp+0x30] class-hnd exact "Inlining Arg" <<unknown class>>
+; V70 tmp55 [V70,T32] ( 4, 8 ) ref -> [fp+0x28] class-hnd "Inlining Arg" <System.Object[]>
;* V71 tmp56 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
; V72 tmp57 [V72,T22] ( 10, 10 ) ref -> x0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
; V73 tmp58 [V73,T82] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V74 tmp59 [V74,T17] ( 6, 12 ) ref -> x1 "CASTCLASS eval op1"
; V75 tmp60 [V75,T30] ( 6, 8 ) long -> x3 "fgMakeTemp is creating a new local variable"
-; V76 tmp61 [V76,T05] ( 10, 18 ) ref -> [fp+0x30] class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
+; V76 tmp61 [V76,T05] ( 10, 18 ) ref -> [fp+0x20] class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
; V77 tmp62 [V77,T33] ( 4, 8 ) ref -> x3 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
; V78 tmp63 [V78,T34] ( 4, 8 ) ref -> x0 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Location>
; V79 tmp64 [V79,T83] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V80 tmp65 [V80,T01] ( 12, 24 ) ref -> [fp+0x28] class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V81 tmp66 [V81,T35] ( 4, 8 ) ref -> [fp+0x20] class-hnd exact "Inlining Arg" <System.String>
+; V80 tmp65 [V80,T01] ( 12, 24 ) ref -> [fp+0x18] class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V81 tmp66 [V81,T35] ( 4, 8 ) ref -> [fp+0x10] class-hnd exact "Inlining Arg" <System.String>
; V82 tmp67 [V82,T18] ( 6, 12 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>>
; V83 tmp68 [V83,T36] ( 8, 7.69) ref -> x3 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport[]>
; V84 tmp69 [V84,T25] ( 10, 9.53) int -> x2 "Inline stloc first use temp"
; V85 tmp70 [V85,T29] ( 6, 8.00) ref -> x1 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
-; V86 tmp71 [V86 ] ( 5, 5.50) ref -> [fp+0xC8] do-not-enreg[X] addr-exposed "field V06._node (fldOffset=0x0)" P-DEP
+; V86 tmp71 [V86 ] ( 5, 5.50) ref -> [fp+0xB8] do-not-enreg[X] addr-exposed "field V06._node (fldOffset=0x0)" P-DEP
;* V87 tmp72 [V87,T79] ( 0, 0 ) ref -> zero-ref single-def "field V07._source (fldOffset=0x0)" P-INDEP
;* V88 tmp73 [V88 ] ( 0, 0 ) ref -> zero-ref "field V40._source (fldOffset=0x0)" P-INDEP
;* V89 tmp74 [V89 ] ( 0, 0 ) ref -> zero-ref "field V41._node (fldOffset=0x0)" P-INDEP
@@ -119,33 +119,27 @@
; V108 cse4 [V108,T10] ( 14, 14.50) long -> x22 "CSE - aggressive"
; V109 cse5 [V109,T13] ( 18, 13 ) long -> x25 "CSE - moderate"
; V110 rat0 [V110,T77] ( 2, 1 ) long -> x0 "Spilling to split statement for tree"
-; TEMP_01 byref -> [fp+0x18]
;
-; Lcl frame size = 192
+; Lcl frame size = 176
G_M28747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #0xD1FFAB1E]!
- stp x19, x20, [sp, #0xD0]
- stp x21, x22, [sp, #0xE0]
- stp x23, x24, [sp, #0xF0]
- stp x25, x26, [sp, #0xD1FFAB1E]
+ stp x19, x20, [sp, #0xC0]
+ stp x21, x22, [sp, #0xD0]
+ stp x23, x24, [sp, #0xE0]
+ stp x25, x26, [sp, #0xF0]
stp x27, x28, [sp, #0xD1FFAB1E]
mov fp, sp
- add x9, fp, #24
+ add x9, fp, #128
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, #0xA0]
- str xzr, [x9, #0xB0]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
; gcrRegs +[x20]
mov x21, xzr
- ;; size=76 bbWeight=1 PerfScore 16.00
+ ;; size=56 bbWeight=1 PerfScore 11.00
G_M28747_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21]
movz x0, #0xD1FFAB1E
@@ -379,11 +373,11 @@ G_M28747_IG11: ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
ldrsb wzr, [x26]
add x2, x26, #48
; byrRegs +[x2]
- str x2, [fp, #0x60] // [V46 tmp31]
+ str x2, [fp, #0x50] // [V46 tmp31]
; GC ptr vars +{V46}
ldr x3, [x2]
; gcrRegs +[x3]
- str x3, [fp, #0x58] // [V47 tmp32]
+ str x3, [fp, #0x48] // [V47 tmp32]
; GC ptr vars +{V47}
cbnz x3, G_M28747_IG12
ldr x0, [x26, #0x18]
@@ -396,7 +390,7 @@ G_M28747_IG11: ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
; byrRegs -[x2]
mov x2, x0
; gcrRegs +[x2]
- str x2, [fp, #0x50] // [V48 tmp33]
+ str x2, [fp, #0x40] // [V48 tmp33]
; GC ptr vars +{V48}
cbz x2, G_M28747_IG12
mov x0, x26
@@ -411,7 +405,7 @@ G_M28747_IG11: ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
sxtw w2, w0
mov x1, x26
; gcrRegs +[x1]
- ldr x0, [fp, #0x50] // [V48 tmp33]
+ ldr x0, [fp, #0x40] // [V48 tmp33]
; gcrRegs +[x0]
ldr x3, [x0]
ldr x3, [x3, #0x68]
@@ -421,7 +415,7 @@ G_M28747_IG11: ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
; gcrRegs -[x1 x26]
mov x1, x0
; gcrRegs +[x1]
- ldr x26, [fp, #0x60] // [V46 tmp31]
+ ldr x26, [fp, #0x50] // [V46 tmp31]
; byrRegs +[x26]
cbz x26, G_M28747_IG72
mov x0, x26
@@ -436,19 +430,19 @@ G_M28747_IG11: ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
mov x26, x3
; gcrRegs +[x26]
; byrRegs -[x26]
- str x26, [fp, #0x58] // [V47 tmp32]
+ str x26, [fp, #0x48] // [V47 tmp32]
; GC ptr vars +{V47}
;; size=300 bbWeight=0.50 PerfScore 43.00
G_M28747_IG12: ; bbWeight=0.50, gcVars=00000000000000000100000000000000 {V47}, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0 x3 x26]
; GC ptr vars -{V46}
- ldr x3, [fp, #0x58] // [V47 tmp32]
+ ldr x3, [fp, #0x48] // [V47 tmp32]
; gcrRegs +[x3]
- str x3, [fp, #0xC8] // [V86 tmp71]
- ldr x0, [fp, #0xC8] // [V86 tmp71]
+ str x3, [fp, #0xB8] // [V86 tmp71]
+ ldr x0, [fp, #0xB8] // [V86 tmp71]
; gcrRegs +[x0]
cbz x0, G_M28747_IG15
- ldr x0, [fp, #0xC8] // [V86 tmp71]
+ ldr x0, [fp, #0xB8] // [V86 tmp71]
ldr x0, [x0, #0x18]
mov x1, x0
; gcrRegs +[x1]
@@ -487,8 +481,8 @@ G_M28747_IG16: ; bbWeight=0.50, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x
ble G_M28747_IG41
;; size=24 bbWeight=0.50 PerfScore 3.25
G_M28747_IG17: ; bbWeight=3.96, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x28}, byrefRegs=0000 {}, byref, isz
- add x0, fp, #200 // [V06 loc4]
- str w3, [fp, #0xC4] // [V09 loc7]
+ add x0, fp, #184 // [V06 loc4]
+ str w3, [fp, #0xB4] // [V09 loc7]
mov w2, w3
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -499,7 +493,7 @@ G_M28747_IG17: ; bbWeight=3.96, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x
ldr x4, [x4]
blr x4
; gcrRegs +[x0]
- add x8, fp, #168 // [V10 loc8]
+ add x8, fp, #152 // [V10 loc8]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax:get_ImportsClauses():Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -539,7 +533,7 @@ G_M28747_IG18: ; bbWeight=1.98, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x
G_M28747_IG19: ; bbWeight=1.98, gcrefRegs=18980004 {x2 x19 x20 x23 x27 x28}, byrefRegs=0000 {}, byref, isz
mov x21, x2
; gcrRegs +[x21]
- ldr x3, [fp, #0xB0] // [V10 loc8+0x08]
+ ldr x3, [fp, #0xA0] // [V10 loc8+0x08]
; gcrRegs +[x3]
cbz x3, G_M28747_IG77
ldr x4, [x3, #0x18]
@@ -578,7 +572,7 @@ G_M28747_IG22: ; bbWeight=1.98, gcrefRegs=18B80004 {x2 x19 x20 x21 x23 x2
;; size=8 bbWeight=1.98 PerfScore 2.97
G_M28747_IG23: ; bbWeight=1.98, gcrefRegs=18B80008 {x3 x19 x20 x21 x23 x27 x28}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2 x4] +[x3]
- ldr w0, [fp, #0xA8] // [V10 loc8]
+ ldr w0, [fp, #0x98] // [V10 loc8]
cbz w0, G_M28747_IG77
mov x0, x3
; gcrRegs +[x0]
@@ -620,15 +614,15 @@ G_M28747_IG27: ; bbWeight=1.98, gcrefRegs=18B80010 {x4 x19 x20 x21 x23 x2
; gcrRegs -[x2]
ldrsb wzr, [x4]
ldr w2, [x4, #0x20]
- str x4, [fp, #0x48] // [V56 tmp41]
+ str x4, [fp, #0x38] // [V56 tmp41]
; GC ptr vars +{V56}
mov x3, x4
; gcrRegs +[x3]
...
-8 (-0.72%) : 266853.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
@@ -27,7 +27,7 @@
;* V16 tmp10 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V18 tmp12 [V18,T00] ( 8, 24 ) ref -> x26 class-hnd exact "Inlining Arg" <System.String>
-; V19 tmp13 [V19,T21] ( 2, 0.04) ubyte -> x14 "Inline return value spill temp"
+;* V19 tmp13 [V19,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp14 [V20 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp15 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V22 tmp16 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -303,10 +303,8 @@ G_M10809_IG19: ; bbWeight=0.02, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
; gcrRegs -[x3]
; byrRegs -[x0 x27]
; gcr arg pop 0
- cmp w0, #0
- cset x14, eq
- cbz w14, G_M10809_IG26
- ;; size=80 bbWeight=0.02 PerfScore 0.38
+ cbnz w0, G_M10809_IG26
+ ;; size=72 bbWeight=0.02 PerfScore 0.36
G_M10809_IG20: ; bbWeight=0.04, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
ldr w14, [fp, #0x18] // [V05 loc3]
mov w15, #0xD1FFAB1E
@@ -538,7 +536,7 @@ G_M10809_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_unix #0
;; size=136 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1112, prolog size 36, PerfScore 149.74, instruction count 278, allocated bytes for code 1112 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 1104, prolog size 36, PerfScore 149.72, instruction count 276, allocated bytes for code 1104 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -549,7 +547,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 278 (0x00116) Actual length = 1112 (0x000458)
+ Function Length : 276 (0x00114) Actual length = 1104 (0x000450)
---- 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.SegmentedDictionary
2[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.SegmentedDictionary
2[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
-12 (-0.89%) : 229613.dasm - System.Collections.Generic.PriorityQueue`2[System.Canon,System.Canon]:Heapify():this (Tier1)
@@ -9,16 +9,16 @@
; 2 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 16, 193.58) ref -> x19 this class-hnd single-def <System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]>
-; V01 loc0 [V01,T37] ( 8, 20.84) ref -> x20 class-hnd exact single-def <<unknown class>>
-; V02 loc1 [V02,T45] ( 3, 2 ) int -> x21
-; V03 loc2 [V03,T53] ( 7, 0 ) int -> x23
-; V04 loc3 [V04,T31] ( 14, 91.51) int -> x21
+; V00 this [V00,T09] ( 16, 193.58) ref -> x19 this class-hnd single-def <System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]>
+; V01 loc0 [V01,T34] ( 8, 20.84) ref -> x20 class-hnd exact single-def <<unknown class>>
+; V02 loc1 [V02,T42] ( 3, 2 ) int -> x21
+; V03 loc2 [V03,T47] ( 7, 0 ) int -> x23
+; V04 loc3 [V04,T30] ( 14, 91.51) 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,T20] ( 6, 153.24) ref -> x26 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V09 tmp4 [V09,T09] ( 14, 255.38) ref -> x27 class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V09 tmp4 [V09,T08] ( 14, 255.38) ref -> x27 class-hnd exact "Inline stloc first use temp" <<unknown class>>
; V10 tmp5 [V10,T23] ( 8, 137.11) int -> x28 "Inline stloc first use temp"
; V11 tmp6 [V11,T06] ( 14, 395.96) int -> x25 "Inlining Arg"
;* V12 tmp7 [V12 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -34,45 +34,39 @@
;* V22 tmp17 [V22 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ValueTuple`2[System.__Canon,System.__Canon]>
;* V23 tmp18 [V23 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V24 tmp19 [V24,T14] ( 8, 209.85) long -> x11 "VirtualCall with runtime lookup"
-; V25 tmp20 [V25,T34] ( 6, 69.95) int -> x22 "Inline return value spill temp"
+; V25 tmp20 [V25,T32] ( 6, 69.95) int -> x22 "Inline return value spill temp"
; V26 tmp21 [V26,T22] ( 6, 139.90) int -> x22 "Inlining Arg"
; V27 tmp22 [V27,T28] ( 6, 101.46) ref -> [fp+0x28] "field V15.Item1 (fldOffset=0x0)" P-INDEP
; V28 tmp23 [V28,T10] ( 10, 237.03) ref -> [fp+0x20] "field V15.Item2 (fldOffset=0x8)" P-INDEP
; V29 tmp24 [V29,T25] ( 4, 135.25) ref -> [fp+0x18] "field V19.Item1 (fldOffset=0x0)" P-INDEP
; V30 tmp25 [V30,T11] ( 6, 235.85) ref -> [fp+0x10] "field V19.Item2 (fldOffset=0x8)" P-INDEP
-; V31 tmp26 [V31,T35] ( 4, 35.33) ref -> x23 "field V22.Item1 (fldOffset=0x0)" P-INDEP
-; V32 tmp27 [V32,T33] ( 6, 70.31) ref -> x24 "field V22.Item2 (fldOffset=0x8)" P-INDEP
+; V31 tmp26 [V31,T33] ( 4, 35.33) ref -> x23 "field V22.Item1 (fldOffset=0x0)" P-INDEP
+; V32 tmp27 [V32,T31] ( 6, 70.31) ref -> x24 "field V22.Item2 (fldOffset=0x8)" P-INDEP
; V33 tmp28 [V33,T26] ( 6, 106 ) byref -> x22 "BlockOp address local"
; V34 tmp29 [V34,T15] ( 6, 209.85) byref -> registers "BlockOp address local"
; V35 tmp30 [V35,T03] ( 6, 603.60) byref -> x9 "BlockOp address local"
; V36 tmp31 [V36,T18] ( 6, 190.97) byref -> x2 "BlockOp address local"
; V37 tmp32 [V37,T27] ( 6, 106 ) byref -> x22 "BlockOp address local"
-; V38 tmp33 [V38,T54] ( 3, 0 ) struct (16) [fp+0x38] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ValueTuple`2[System.__Canon,System.__Canon]>
+; V38 tmp33 [V38,T48] ( 3, 0 ) struct (16) [fp+0x38] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ValueTuple`2[System.__Canon,System.__Canon]>
; V39 cse0 [V39,T12] ( 6, 235.34) int -> [fp+0x34] multi-def "CSE - aggressive"
-; V40 cse1 [V40,T43] ( 6, 2.38) int -> [fp+0x30] multi-def "CSE - moderate"
-;* V41 rat0 [V41,T41] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V42 rat1 [V42,T46] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V43 rat2 [V43,T39] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V44 rat3 [V44,T32] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V45 rat4 [V45,T36] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V46 rat5 [V46,T30] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V47 rat6 [V47,T05] ( 3, 438.21) long -> x0 "Spilling to split statement for tree"
-; V48 rat7 [V48,T04] ( 3, 557.73) long -> x1 "fgMakeTemp is creating a new local variable"
-; V49 rat8 [V49,T21] ( 3, 152.35) long -> x0 "Spilling to split statement for tree"
-; V50 rat9 [V50,T17] ( 3, 193.91) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V51 rat10 [V51,T13] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V52 rat11 [V52,T29] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V53 rat12 [V53,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V54 rat13 [V54,T51] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V55 rat14 [V55,T52] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V56 rat15 [V56,T50] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V57 rat16 [V57,T40] ( 3, 4.43) long -> x0 "Spilling to split statement for tree"
-; V58 rat17 [V58,T38] ( 3, 5.63) long -> x13 "fgMakeTemp is creating a new local variable"
-; V59 rat18 [V59,T48] ( 3, 1.54) long -> x0 "Spilling to split statement for tree"
-; V60 rat19 [V60,T47] ( 3, 1.96) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V61 rat20 [V61,T44] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V62 rat21 [V62,T49] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V63 rat22 [V63,T42] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V40 cse1 [V40,T40] ( 6, 2.38) int -> [fp+0x30] multi-def "CSE - moderate"
+;* V41 rat0 [V41,T38] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V42 rat1 [V42,T43] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V43 rat2 [V43,T36] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V44 rat3 [V44,T05] ( 3, 438.21) long -> x0 "Spilling to split statement for tree"
+; V45 rat4 [V45,T04] ( 3, 557.73) long -> x1 "fgMakeTemp is creating a new local variable"
+; V46 rat5 [V46,T21] ( 3, 152.35) long -> x0 "Spilling to split statement for tree"
+; V47 rat6 [V47,T17] ( 3, 193.91) long -> x11 "fgMakeTemp is creating a new local variable"
+;* V48 rat7 [V48,T13] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V49 rat8 [V49,T29] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V50 rat9 [V50,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V51 rat10 [V51,T37] ( 3, 4.43) long -> x0 "Spilling to split statement for tree"
+; V52 rat11 [V52,T35] ( 3, 5.63) long -> x13 "fgMakeTemp is creating a new local variable"
+; V53 rat12 [V53,T45] ( 3, 1.54) long -> x0 "Spilling to split statement for tree"
+; V54 rat13 [V54,T44] ( 3, 1.96) long -> x11 "fgMakeTemp is creating a new local variable"
+;* V55 rat14 [V55,T41] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V56 rat15 [V56,T46] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V57 rat16 [V57,T39] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 80
@@ -433,21 +427,46 @@ G_M37971_IG29: ; bbWeight=0.18, gcVars=0000000000000000 {}, gcrefRegs=180
ldp x27, x26, [x19, #0x08]
; gcrRegs +[x26-x27]
ldr w28, [x19, #0x20]
- b G_M37971_IG44
+ b G_M37971_IG41
;; size=44 bbWeight=0.18 PerfScore 3.36
-G_M37971_IG30: ; bbWeight=0.35, gcVars=0000000010000000 {V27}, gcrefRegs=D980020 {x5 x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x5]
+G_M37971_IG30: ; bbWeight=0.35, gcrefRegs=D980000 {x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x22]
- ; GC ptr vars +{V27 V28}
+ ldr w3, [x27, #0x08]
+ cmp w22, w3
+ bhs G_M37971_IG49
+ ubfiz x0, x22, #4, #32
+ add x0, x0, #16
+ add x0, x27, x0
+ ; byrRegs +[x0]
+ ldr x15, [x0]
+ ; gcrRegs +[x15]
+ str x15, [fp, #0x28] // [V27 tmp22]
+ ; GC ptr vars +{V27}
+ ldr x15, [x0, #0x08]
+ str x15, [fp, #0x20] // [V28 tmp23]
+ ; GC ptr vars +{V28}
+ sxtw w6, w22
+ add w22, w22, #4
+ cmp w22, w28
+ bgt G_M37971_IG46
+ ;; size=56 bbWeight=0.35 PerfScore 5.95
+G_M37971_IG31: ; bbWeight=0, gcVars=0000000010000400 {V27 V28}, gcrefRegs=D980000 {x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x15]
+ ; byrRegs -[x0]
+ ldr x5, [fp, #0x20] // [V28 tmp23]
+ ; gcrRegs +[x5]
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M37971_IG32: ; bbWeight=0.35, gcVars=0000000010000000 {V27}, gcrefRegs=D980020 {x5 x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V28}
str w6, [fp, #0x50] // [V16 tmp11]
add w0, w6, #1
sxtw w2, w0
sxtw w7, w2
str w7, [fp, #0x54] // [V14 tmp9]
cmp w7, w22
- bge G_M37971_IG32
+ bge G_M37971_IG45
;; size=28 bbWeight=0.35 PerfScore 1.75
-G_M37971_IG31: ; bbWeight=1.01, gcrefRegs=D980020 {x5 x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M37971_IG33: ; bbWeight=1.01, gcrefRegs=D980020 {x5 x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, byref, isz
str w3, [fp, #0x30] // [V40 cse1]
cmp w2, w3
bhs G_M37971_IG49
@@ -468,72 +487,15 @@ G_M37971_IG31: ; bbWeight=1.01, gcrefRegs=D980020 {x5 x19 x20 x23 x24 x26
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x13, [x1, #0x48]
- cbz x13, G_M37971_IG36
- b G_M37971_IG38
- ;; size=68 bbWeight=1.01 PerfScore 27.66
-G_M37971_IG32: ; bbWeight=0.17, gcrefRegs=D980020 {x5 x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, byref
+ cbz x13, G_M37971_IG47
+ ;; size=64 bbWeight=1.01 PerfScore 26.66
+G_M37971_IG34: ; bbWeight=0.80, gcVars=0000000012000800 {V27 V29 V30}, gcrefRegs=D980020 {x5 x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x9]
- ; GC ptr vars -{V28 V29 V30}
- str w3, [fp, #0x30] // [V40 cse1]
- mov x3, x5
- ; gcrRegs +[x3]
- b G_M37971_IG41
- ;; size=12 bbWeight=0.17 PerfScore 0.44
-G_M37971_IG33: ; bbWeight=0.35, gcVars=0000000000000000 {}, gcrefRegs=D980000 {x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x3 x5]
- ; GC ptr vars -{V27}
- ldr w3, [x27, #0x08]
- cmp w22, w3
- bhs G_M37971_IG49
- ubfiz x0, x22, #4, #32
- add x0, x0, #16
- add x0, x27, x0
- ; byrRegs +[x0]
- ldr x15, [x0]
- ; gcrRegs +[x15]
- str x15, [fp, #0x28] // [V27 tmp22]
- ; GC ptr vars +{V27}
- ldr x15, [x0, #0x08]
- str x15, [fp, #0x20] // [V28 tmp23]
- ; GC ptr vars +{V28}
- sxtw w6, w22
- add w22, w22, #4
- cmp w22, w28
- bgt G_M37971_IG35
- ;; size=56 bbWeight=0.35 PerfScore 5.95
-G_M37971_IG34: ; bbWeight=0, gcVars=0000000010000400 {V27 V28}, gcrefRegs=D980000 {x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x15]
- ; byrRegs -[x0]
- ldr x5, [fp, #0x20] // [V28 tmp23]
- ; gcrRegs +[x5]
- b G_M37971_IG30
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M37971_IG35: ; bbWeight=0.35, gcrefRegs=D980000 {x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x5]
- ldr x5, [fp, #0x20] // [V28 tmp23]
- ; gcrRegs +[x5]
- sxtw w22, w28
- b G_M37971_IG30
- ;; size=12 bbWeight=0.35 PerfScore 1.22
-G_M37971_IG36: ; bbWeight=0.20, gcVars=0000000012000800 {V27 V29 V30}, gcrefRegs=D980020 {x5 x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V28} +{V11 V25 V29 V30}
- str x5, [fp, #0x20] // [V28 tmp23]
- ; GC ptr vars +{V28}
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ; GC ptr vars -{V11 V25}
- bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcrRegs -[x5]
- ; gcr arg pop 0
- mov x13, x0
- ldr x5, [fp, #0x20] // [V28 tmp23]
- ; gcrRegs +[x5]
ldr x9, [fp, #0x10] // [V30 tmp25]
; gcrRegs +[x9]
- ;; size=32 bbWeight=0.20 PerfScore 1.61
-G_M37971_IG37: ; bbWeight=1.01, gcVars=0000000012000000 {V27 V29}, gcrefRegs=D980220 {x5 x9 x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V28 V30}
+ ;; size=4 bbWeight=0.80 PerfScore 1.61
+G_M37971_IG35: ; bbWeight=1.01, gcVars=0000000012000000 {V27 V29}, gcrefRegs=D980220 {x5 x9 x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V30}
mov x0, x26
; gcrRegs +[x0]
mov x11, x13
@@ -551,19 +513,11 @@ G_M37971_IG37: ; bbWeight=1.01, gcVars=0000000012000000 {V27 V29}, gcrefR
; gcr arg pop 0
ldr x3, [fp, #0x20] // [V28 tmp23]
; gcrRegs +[x3]
- tbz w0, #31, G_M37971_IG40
- b G_M37971_IG39
- ;; size=44 bbWeight=1.01 PerfScore 12.07
-G_M37971_IG38: ; bbWeight=0.80, gcVars=0000000012000800 {V27 V29 V30}, gcrefRegs=D980020 {x5 x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x3] +[x5]
- ; GC ptr vars -{V28}
- ldr x9, [fp, #0x10] // [V30 tmp25]
- ; gcrRegs +[x9]
- b G_M37971_IG37
- ;; size=8 bbWeight=0.80 PerfScore 2.41
-G_M37971_IG39: ; bbWeight=0.35, gcVars=0000000002000800 {V29 V30}, gcrefRegs=D980000 {x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x5 x9]
- ; GC ptr vars -{V27}
+ tbz w0, #31, G_M37971_IG37
+ ;; size=40 bbWeight=1.01 PerfScore 11.07
+G_M37971_IG36: ; bbWeight=0.35, gcVars=0000000002000800 {V29 V30}, gcrefRegs=D980000 {x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x3]
+ ; GC ptr vars -{V27 V28}
ldr x4, [fp, #0x18] // [V29 tmp24]
; gcrRegs +[x4]
str x4, [fp, #0x28] // [V27 tmp22]
@@ -577,7 +531,7 @@ G_M37971_IG39: ; bbWeight=0.35, gcVars=0000000002000800 {V29 V30}, gcrefR
ldr x3, [fp, #0x20] // [V28 tmp23]
...
-8 (-0.69%) : 66233.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Canon,int]:FindValue(System.Canon):byref:this (Tier1)
@@ -11,35 +11,35 @@
;
; 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] ( 0, 0 ) long -> zero-ref "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] ( 0, 0 ) long -> zero-ref "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"
+; 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
@@ -250,39 +247,21 @@ G_M50578_IG12: ; bbWeight=0.82, gcrefRegs=180000 {x19 x20}, byrefRegs=000
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
bne G_M50578_IG25
- b G_M50578_IG15
- ;; size=64 bbWeight=0.82 PerfScore 12.33
-G_M50578_IG13: ; bbWeight=0.82, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x25}, byref
- ; gcrRegs -[x20 x24]
- ; byrRegs +[x25]
- ldrsb wzr, [x25]
- add x0, x25, #16
- ; byrRegs +[x0]
- ;; size=8 bbWeight=0.82 PerfScore 2.87
-G_M50578_IG14: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, epilog, nogc
- ; byrRegs -[x25]
- ldr x25, [sp, #0x68]
- ldp x23, x24, [sp, #0x58]
- ldp x21, x22, [sp, #0x48]
- ldp x19, x20, [sp, #0x38]
- ldp fp, lr, [sp], #0x70
- ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00
-G_M50578_IG15: ; bbWeight=0.82, gcVars=00000000000000000000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x20]
- ; byrRegs -[x0]
+ ;; size=60 bbWeight=0.82 PerfScore 11.51
+G_M50578_IG13: ; bbWeight=0.82, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x24]
ldr w0, [fp, #0x28] // [V58 tmp44]
cmp w22, w0
bhs G_M50578_IG21
;; size=12 bbWeight=0.82 PerfScore 2.88
-G_M50578_IG16: ; bbWeight=0.81, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M50578_IG14: ; bbWeight=0.81, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19]
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x30]
cbz x1, G_M50578_IG23
;; size=20 bbWeight=0.81 PerfScore 10.54
-G_M50578_IG17: ; bbWeight=0.81, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M50578_IG15: ; bbWeight=0.81, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add x0, fp, #32 // [V07 loc5]
mov w2, w22
movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,int]]:get_Item(int):byref:this
@@ -296,29 +275,42 @@ G_M50578_IG17: ; bbWeight=0.81, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr w0, [x25, #0x08]
; byrRegs -[x0]
cmp w0, w21
- beq G_M50578_IG19
+ beq G_M50578_IG17
;; size=44 bbWeight=0.81 PerfScore 9.33
-G_M50578_IG18: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref
+G_M50578_IG16: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref
ldr w22, [x25, #0x0C]
add w23, w23, #1
b G_M50578_IG47
;; size=12 bbWeight=0 PerfScore 0.00
-G_M50578_IG19: ; bbWeight=0.81, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref, isz
+G_M50578_IG17: ; bbWeight=0.81, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref, isz
ldr x1, [x25]
; gcrRegs +[x1]
- cbz x1, G_M50578_IG18
+ cbz x1, G_M50578_IG16
;; size=8 bbWeight=0.81 PerfScore 3.24
-G_M50578_IG20: ; bbWeight=0.81, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=2000000 {x25}, byref, isz
+G_M50578_IG18: ; bbWeight=0.81, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=2000000 {x25}, byref, isz
cmp x1, x20
- beq G_M50578_IG13
- b G_M50578_IG18
- ;; size=12 bbWeight=0.81 PerfScore 2.03
-G_M50578_IG21: ; bbWeight=0.18, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ bne G_M50578_IG16
+ ;; size=8 bbWeight=0.81 PerfScore 1.22
+G_M50578_IG19: ; bbWeight=0.82, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x25}, byref
; gcrRegs -[x1 x20]
...
-20 (-0.60%) : 170023.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
@@ -168,7 +168,6 @@
; V156 cse15 [V156,T67] ( 3, 0.08) int -> x27 "CSE - conservative"
; V157 cse16 [V157,T74] ( 2, 0.00) int -> x1 "CSE - conservative"
; V158 rat0 [V158,T24] ( 5, 7.43) ref -> x21 class-hnd "replacement local" <System.Collections.Generic.List`1[System.String]>
-; TEMP_01 byref -> [fp-0x90]
;
; Lcl frame size = 64
@@ -181,11 +180,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] // [V140 PSPSym]
movz x2, #0xD1FFAB1E
@@ -197,7 +193,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]
@@ -1259,9 +1255,6 @@ G_M8186_IG86: ; bbWeight=0.02, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
;; size=48 bbWeight=0.02 PerfScore 0.38
G_M8186_IG87: ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x26 x28]
- add x14, x20, #32
- ; byrRegs +[x14]
- str x14, [fp, #-0x90] // [TEMP_01]
mov x0, x26
; gcrRegs +[x0]
mov x1, xzr
@@ -1270,7 +1263,6 @@ G_M8186_IG87: ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byre
ldr x2, [x2, #0x28]
blr x2
; gcrRegs -[x26]
- ; byrRegs -[x14]
; gcr arg pop 0
ldr w2, [x28, #0x08]
mov x1, x28
@@ -1283,7 +1275,7 @@ G_M8186_IG87: ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byre
blr x3
; gcrRegs -[x1 x28]
; gcr arg pop 0
- ldr x14, [fp, #-0x90] // [TEMP_01]
+ add x14, x20, #32
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
@@ -1298,7 +1290,7 @@ G_M8186_IG87: ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byre
; gcrRegs -[x15]
cmp w14, w15
blt G_M8186_IG91
- ;; size=100 bbWeight=0.00 PerfScore 0.01
+ ;; size=92 bbWeight=0.00 PerfScore 0.01
G_M8186_IG88: ; bbWeight=0.02, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
str xzr, [x20, #0x20]
@@ -1510,7 +1502,7 @@ G_M8186_IG106: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=32 bbWeight=0 PerfScore 0.00
-; Total bytes of code 3352, prolog size 88, PerfScore 573.07, instruction count 838, allocated bytes for code 3352 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
+; Total bytes of code 3332, prolog size 76, PerfScore 571.07, instruction count 833, allocated bytes for code 3332 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
; ============================================================
Unwind Info:
@@ -1521,7 +1513,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 802 (0x00322) Actual length = 3208 (0x000c88)
+ Function Length : 797 (0x0031d) Actual length = 3188 (0x000c74)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 228232.dasm - System.Collections.Generic.SortedSet
1[System.__Canon]:IsSupersetOf(System.Collections.Generic.IEnumerable
1[System.__Canon]):ubyte:this (Tier1)@@ -19,24 +19,24 @@
; V07 loc5 [V07,T47] ( 2, 1.49) ubyte -> [fp+0x3C] do-not-enreg[Z] EH-live
;# 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,T59] ( 2, 0.16) int -> x19 "impAppendStmt"
+; V10 tmp2 [V10,T57] ( 2, 0.16) int -> x19 "impAppendStmt"
;* V11 tmp3 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <System.__Canon>
;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling ret_expr" <System.__Canon>
;* V13 tmp5 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V14 tmp6 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V15 tmp7 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V16 tmp8 [V16,T57] ( 6, 0.16) long -> x2 "Indirect call through function pointer"
+; V16 tmp8 [V16,T55] ( 6, 0.16) long -> x2 "Indirect call through function pointer"
; V17 tmp9 [V17,T49] ( 3, 1.10) int -> x20 "guarded devirt return temp"
;* V18 tmp10 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1[System.String]>
-; V19 tmp11 [V19,T65] ( 3, 0.08) ref -> x22 "guarded devirt return temp"
+; V19 tmp11 [V19,T63] ( 3, 0.08) ref -> x22 "guarded devirt return temp"
;* V20 tmp12 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.SortedSet`1+TreeSubSet[System.String]>
; V21 tmp13 [V21,T39] ( 2, 2.98) int -> x0 "guarded devirt return temp"
; V22 tmp14 [V22,T06] ( 10, 14.90) ref -> x20 class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.SortedSet`1+TreeSubSet[System.String]>
;* V23 tmp15 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Collections.Generic.SortedSet`1+TreeSubSet[System.String]>
;* V24 tmp16 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Collections.Generic.SortedSet`1+TreeSubSet[System.String]>
-; V25 tmp17 [V25,T62] ( 4, 0.11) ref -> x19 "guarded devirt return temp"
+; V25 tmp17 [V25,T60] ( 4, 0.11) ref -> x19 "guarded devirt return temp"
;* V26 tmp18 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.SortedSet`1[System.String]>
-; V27 tmp19 [V27,T64] ( 4, 0.08) ref -> x2 "guarded devirt return temp"
+; V27 tmp19 [V27,T62] ( 4, 0.08) ref -> x2 "guarded devirt return temp"
;* V28 tmp20 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.SortedSet`1[System.String]>
; V29 tmp21 [V29 ] ( 3, 0.24) struct (32) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]>
;* V30 tmp22 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -44,7 +44,7 @@
;* V32 tmp24 [V32 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon>
;* V33 tmp25 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Generic.SortedSet`1+Node[System.__Canon]>
; V34 tmp26 [V34,T37] ( 2, 2.98) ref -> x20 class-hnd "Inline return value spill temp" <<unknown class>>
-;* V35 tmp27 [V35,T67] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V35 tmp27 [V35,T64] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V36 tmp28 [V36,T36] ( 2, 2.98) int -> x0
;* V37 tmp29 [V37 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V38 tmp30 [V38,T35] ( 2, 2.98) int -> x0
@@ -63,7 +63,7 @@
; V51 tmp43 [V51,T02] ( 9, 24.50) ref -> x24 class-hnd "impAppendStmt" <System.Collections.Generic.SortedSet`1[System.__Canon]>
; V52 tmp44 [V52,T10] ( 4, 10.89) ref -> x25 class-hnd "spilling ret_expr" <System.__Canon>
;* V53 tmp45 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Collections.Generic.SortedSet`1[System.__Canon]>
-; V54 tmp46 [V54,T68] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V54 tmp46 [V54,T65] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V55 tmp47 [V55,T11] ( 5, 9.18) ref -> x0 "guarded devirt arg temp"
;* V56 tmp48 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.SortedSet`1+TreeSubSet[System.String]>
; V57 tmp49 [V57,T41] ( 2, 2.72) int -> x0 "guarded devirt return temp"
@@ -79,11 +79,11 @@
; V67 tmp59 [V67,T27] ( 3, 4.08) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
; V68 tmp60 [V68,T31] ( 3, 3.45) int -> x0 "Single return block return value"
; V69 tmp61 [V69,T30] ( 2, 3.61) long -> x2 "argument with side effect"
-; V70 tmp62 [V70,T60] ( 2, 0.16) long -> x1 "argument with side effect"
-; V71 tmp63 [V71,T71] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V70 tmp62 [V70,T58] ( 2, 0.16) long -> x1 "argument with side effect"
+; V71 tmp63 [V71,T68] ( 2, 0 ) ref -> x1 "argument with side effect"
; V72 PSPSym [V72,T50] ( 1, 1 ) long -> [fp+0x68] do-not-enreg[V] "PSPSym"
-; V73 cse0 [V73,T63] ( 3, 0.08) long -> x22 "CSE - conservative"
-; V74 cse1 [V74,T61] ( 3, 0.12) long -> x22 "CSE - conservative"
+; V73 cse0 [V73,T61] ( 3, 0.08) long -> x22 "CSE - conservative"
+; V74 cse1 [V74,T59] ( 3, 0.12) long -> x22 "CSE - conservative"
; V75 cse2 [V75,T03] ( 12, 22.98) long -> registers hoist multi-def "CSE - aggressive"
; V76 cse3 [V76,T19] ( 8, 6.07) long -> x21 multi-def "CSE - moderate"
; V77 cse4 [V77,T22] ( 3, 4.57) ref -> x0 "CSE - moderate"
@@ -93,23 +93,20 @@
; V81 rat0 [V81,T28] ( 3, 3.97) long -> x1 "Spilling to split statement for tree"
; V82 rat1 [V82,T29] ( 3, 3.61) long -> registers "runtime lookup"
; V83 rat2 [V83,T21] ( 3, 5.05) long -> x2 "fgMakeTemp is creating a new local variable"
-; V84 rat3 [V84,T54] ( 3, 0.17) long -> x1 "Spilling to split statement for tree"
-; V85 rat4 [V85,T58] ( 3, 0.16) long -> x1 "runtime lookup"
+; V84 rat3 [V84,T53] ( 3, 0.17) long -> x1 "Spilling to split statement for tree"
+; V85 rat4 [V85,T56] ( 3, 0.16) long -> x1 "runtime lookup"
; V86 rat5 [V86,T51] ( 3, 0.22) long -> x2 "fgMakeTemp is creating a new local variable"
-;* V87 rat6 [V87,T55] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V88 rat7 [V88,T66] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V89 rat8 [V89,T52] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V90 rat9 [V90,T18] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V91 rat10 [V91,T40] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V92 rat11 [V92,T14] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V93 rat12 [V93,T17] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V94 rat13 [V94,T33] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V95 rat14 [V95,T13] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V96 rat15 [V96,T56] ( 3, 0.17) long -> x1 "Spilling to split statement for tree"
-; V97 rat16 [V97,T53] ( 3, 0.22) long -> x2 "fgMakeTemp is creating a new local variable"
-; V98 rat17 [V98,T69] ( 3, 0 ) long -> x1 "Spilling to split statement for tree"
-; V99 rat18 [V99,T70] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
-; V100 rat19 [V100,T16] ( 6, 8 ) ref -> x0 class-hnd "replacement local" <System.Collections.ICollection>
+;* V87 rat6 [V87,T18] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V88 rat7 [V88,T40] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V89 rat8 [V89,T14] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V90 rat9 [V90,T17] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V91 rat10 [V91,T33] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V92 rat11 [V92,T13] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V93 rat12 [V93,T54] ( 3, 0.17) long -> x1 "Spilling to split statement for tree"
+; V94 rat13 [V94,T52] ( 3, 0.22) long -> x2 "fgMakeTemp is creating a new local variable"
+; V95 rat14 [V95,T66] ( 3, 0 ) long -> x1 "Spilling to split statement for tree"
+; V96 rat15 [V96,T67] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V97 rat16 [V97,T16] ( 6, 8 ) ref -> x0 class-hnd "replacement local" <System.Collections.ICollection>
;
; Lcl frame size = 96
@@ -491,30 +488,17 @@ G_M55414_IG37: ; bbWeight=0.04, nogc, extend
G_M55414_IG38: ; bbWeight=0.04, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
b G_M55414_IG55
;; size=4 bbWeight=0.04 PerfScore 0.04
-G_M55414_IG39: ; bbWeight=2.22, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x19-x20]
- ldr x0, [x20, #0x10]
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=2.22 PerfScore 6.66
-G_M55414_IG40: ; bbWeight=11.48, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x20]
- mov x20, x0
- ; gcrRegs +[x20]
- cbnz x20, G_M55414_IG48
- b G_M55414_IG56
- ;; size=12 bbWeight=11.48 PerfScore 28.70
-G_M55414_IG41: ; bbWeight=1.49, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0 x19-x20]
+G_M55414_IG39: ; bbWeight=1.49, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x50] // [V05 loc3+0x10]
; gcrRegs +[x0]
- cbnz x0, G_M55414_IG45
+ cbnz x0, G_M55414_IG43
;; size=8 bbWeight=1.49 PerfScore 4.47
-G_M55414_IG42: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M55414_IG40: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
mov x1, xzr
; gcrRegs +[x1]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M55414_IG43: ; bbWeight=1.49, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref, isz
+G_M55414_IG41: ; bbWeight=1.49, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref, isz
mov x19, x1
; gcrRegs +[x19]
ldr x20, [x22]
@@ -534,7 +518,7 @@ G_M55414_IG43: ; bbWeight=1.49, gcrefRegs=400002 {x1 x22}, byrefRegs=0000
; gcrRegs -[x0]
; gcr arg pop 0
ldrb w0, [x20, #0x44]
- cbz w0, G_M55414_IG49
+ cbz w0, G_M55414_IG47
ldr x0, [x20, #0x10]
; gcrRegs +[x0]
ldr x1, [x20, #0x30]
@@ -550,20 +534,32 @@ G_M55414_IG43: ; bbWeight=1.49, gcrefRegs=400002 {x1 x22}, byrefRegs=0000
; gcrRegs -[x0-x2]
; gcr arg pop 0
cmp w0, #0
- ble G_M55414_IG49
+ ble G_M55414_IG47
;; size=100 bbWeight=1.49 PerfScore 44.71
-G_M55414_IG44: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55414_IG42: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20 x22]
b G_M55414_IG74
;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M55414_IG45: ; bbWeight=1.49, gcrefRegs=400001 {x0 x22}, byrefRegs=0000 {}, byref
+G_M55414_IG43: ; bbWeight=1.49, gcrefRegs=400001 {x0 x22}, byrefRegs=0000 {}, byref
; gcrRegs +[x0 x22]
ldr x1, [x0, #0x08]
; gcrRegs +[x1]
- b G_M55414_IG43
+ b G_M55414_IG41
;; size=8 bbWeight=1.49 PerfScore 5.96
-G_M55414_IG46: ; bbWeight=1.49, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M55414_IG44: ; bbWeight=2.22, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x0-x1] +[x19-x20]
+ ldr x0, [x20, #0x10]
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=2.22 PerfScore 6.66
+G_M55414_IG45: ; bbWeight=11.48, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ cbnz x20, G_M55414_IG50
+ b G_M55414_IG56
+ ;; size=12 bbWeight=11.48 PerfScore 28.70
+G_M55414_IG46: ; bbWeight=1.49, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
mov x0, x20
; gcrRegs +[x0]
mov w1, wzr
@@ -576,13 +572,21 @@ G_M55414_IG46: ; bbWeight=1.49, gcrefRegs=580000 {x19 x20 x22}, byrefRegs
; gcr arg pop 0
ldr x20, [x20, #0x08]
cbz x20, G_M55414_IG56
- ;; size=36 bbWeight=1.49 PerfScore 15.65
-G_M55414_IG47: ; bbWeight=1.31, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
+ b G_M55414_IG49
+ ;; size=40 bbWeight=1.49 PerfScore 17.14
+G_M55414_IG47: ; bbWeight=1.49, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [x20, #0x45]
+ cbnz w0, G_M55414_IG51
+ ;; size=8 bbWeight=1.49 PerfScore 5.96
+G_M55414_IG48: ; bbWeight=0.03, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
+ b G_M55414_IG46
+ ;; size=4 bbWeight=0.03 PerfScore 0.03
+G_M55414_IG49: ; bbWeight=1.31, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
movz x21, #0xD1FFAB1E
movk x21, #0xD1FFAB1E LSL #16
movk x21, #0xD1FFAB1E LSL #32
;; size=12 bbWeight=1.31 PerfScore 1.97
-G_M55414_IG48: ; bbWeight=10.13, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M55414_IG50: ; bbWeight=10.13, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x0, [x22, #0x10]
; gcrRegs +[x0]
ldr x2, [x20, #0x08]
@@ -595,20 +599,9 @@ G_M55414_IG48: ; bbWeight=10.13, gcrefRegs=580000 {x19 x20 x22}, byrefReg
; gcrRegs -[x0-x2]
; gcr arg pop 0
cbz w0, G_M55414_IG58
- b G_M55414_IG51
+ b G_M55414_IG52
;; size=32 bbWeight=10.13 PerfScore 131.63
-G_M55414_IG49: ; bbWeight=1.49, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
- ldrb w0, [x20, #0x45]
- cbnz w0, G_M55414_IG52
- ;; size=8 bbWeight=1.49 PerfScore 5.96
-G_M55414_IG50: ; bbWeight=0.03, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
- b G_M55414_IG46
- ;; size=4 bbWeight=0.03 PerfScore 0.03
-G_M55414_IG51: ; bbWeight=9.99, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
- tbnz w0, #31, G_M55414_IG39
- b G_M55414_IG53
- ;; size=8 bbWeight=9.99 PerfScore 19.98
-G_M55414_IG52: ; bbWeight=1.49, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M55414_IG51: ; bbWeight=1.49, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20, #0x10]
; gcrRegs +[x0]
ldr x1, [x20, #0x38]
@@ -626,10 +619,13 @@ G_M55414_IG52: ; bbWeight=1.49, gcrefRegs=580000 {x19 x20 x22}, byrefRegs
tbnz w0, #31, G_M55414_IG74
b G_M55414_IG46
;; size=44 bbWeight=1.49 PerfScore 21.61
+G_M55414_IG52: ; bbWeight=9.99, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+ tbnz w0, #31, G_M55414_IG44
+ ;; size=4 bbWeight=9.99 PerfScore 9.99
G_M55414_IG53: ; bbWeight=7.77, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
ldr x0, [x20, #0x18]
; gcrRegs +[x0]
- b G_M55414_IG40
+ b G_M55414_IG45
;; size=8 bbWeight=7.77 PerfScore 31.07
G_M55414_IG54: ; bbWeight=1.49, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x19-x20] +[x1]
@@ -749,7 +745,7 @@ G_M55414_IG66: ; bbWeight=1.36, gcrefRegs=480000 {x19 x22}, byrefRegs=000
;; size=4 bbWeight=1.36 PerfScore 1.36
G_M55414_IG67: ; bbWeight=1.53, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
...
+4 (+0.18%) : 52405.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.15) 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 -> x28
-; 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 -> x28 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 -> x28
+; 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 -> x28 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 -> x26 "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 -> x26 "CSE - conservative"
; V98 cse1 [V98,T03] ( 31, 6.49) 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] ( 0, 0 ) long -> zero-ref "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] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V126 rat27 [V126,T79] ( 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,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] ( 0, 0 ) long -> zero-ref "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] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V105 rat6 [V105,T22] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V106 rat7 [V106,T01] ( 0, 0 ) long -> zero-ref "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] ( 0, 0 ) long -> zero-ref "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] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V123 rat24 [V123,T76] ( 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,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] ( 0, 0 ) long -> zero-ref "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_IG59
+ cbz x20, G_M33517_IG60
;; 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
- bne G_M33517_IG17
+ bne G_M33517_IG19
;; size=24 bbWeight=1.00 PerfScore 5.98
...
+4 (+0.25%) : 54451.dasm - Roslyn.Utilities.AsyncLazy
1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task
1[System.__Canon],System.Threading.CancellationToken):this (Tier1)@@ -27,10 +27,10 @@
; 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,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V18 tmp11 [V18,T41] ( 2, 0.01) ref -> x0 class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
+; V18 tmp11 [V18,T38] ( 2, 0.01) 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] ( 4, 2.25) int -> x14 single-def "Inline stloc first use temp"
-;* V21 tmp14 [V21,T39] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V21 tmp14 [V21,T37] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V22 tmp15 [V22,T03] ( 10, 7.77) ref -> x21 class-hnd "Inlining Arg" <Roslyn.Utilities.AsyncLazy`1+Request[System.__Canon]>
;* V23 tmp16 [V23,T36] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V24 tmp17 [V24,T19] ( 3, 3.11) byref -> x15 "Inlining Arg"
@@ -44,12 +44,12 @@
; V32 tmp25 [V32,T29] ( 3, 1.55) ref -> x23 class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
; V33 tmp26 [V33,T35] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
; V34 tmp27 [V34,T14] ( 5, 3.89) int -> x14 "Inline stloc first use temp"
-; V35 tmp28 [V35,T42] ( 3, 0 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V35 tmp28 [V35,T39] ( 3, 0 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
; V36 tmp29 [V36,T23] ( 3, 2.21) ref -> x1 class-hnd "Inline stloc first use temp" <System.Object>
; V37 tmp30 [V37,T10] ( 3, 4.57) byref -> x0 "Inlining Arg"
; V38 tmp31 [V38,T21] ( 2, 3.05) 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,T17] ( 4, 3.26) byref -> x20 "Inlining Arg"
; V43 tmp36 [V43,T26] ( 5, 1.71) ref -> x24 class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
@@ -57,11 +57,11 @@
; V45 tmp38 [V45 ] ( 7, 5.00) 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"
+; 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,T32] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
-; V52 cse0 [V52,T49] ( 2, 0 ) byref -> x24 hoist "CSE - moderate"
+; V52 cse0 [V52,T46] ( 2, 0 ) byref -> x24 hoist "CSE - moderate"
; V53 cse1 [V53,T20] ( 4, 3.11) byref -> x14 "CSE - moderate"
; V54 cse2 [V54,T09] ( 6, 4.66) byref -> x0 multi-def "CSE - aggressive"
; V55 cse3 [V55,T07] ( 10, 5.20) long -> x21 multi-def "CSE - aggressive"
@@ -71,13 +71,10 @@
; 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,T38] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V63 rat7 [V63,T40] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V64 rat8 [V64,T37] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V65 rat9 [V65,T16] ( 3, 3.42) long -> x1 "Spilling to split statement for tree"
-; V66 rat10 [V66,T12] ( 3, 4.35) 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,T16] ( 3, 3.42) long -> x1 "Spilling to split statement for tree"
+; V63 rat7 [V63,T12] ( 3, 4.35) 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
@@ -226,7 +223,7 @@ G_M38013_IG15: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=000
ldr x2, [x1, #0x38]
ldr x2, [x2]
ldr x2, [x2, #0x20]
- cbz x2, G_M38013_IG49
+ cbz x2, G_M38013_IG50
;; size=24 bbWeight=1 PerfScore 13.50
G_M38013_IG16: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
@@ -236,7 +233,7 @@ G_M38013_IG16: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x0, [x21, #0x38]
ldr x0, [x0]
ldr x11, [x0, #0x58]
- cbz x11, G_M38013_IG50
+ cbz x11, G_M38013_IG51
;; size=24 bbWeight=1 PerfScore 11.50
G_M38013_IG17: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x20
@@ -256,7 +253,7 @@ G_M38013_IG18: ; bbWeight=1, gcVars=0000000000008001 {V00 V06}, gcrefRegs
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M38013_IG51
+ cbz w0, G_M38013_IG52
;; size=24 bbWeight=1 PerfScore 6.50
G_M38013_IG19: ; bbWeight=0.78, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x20] // [V00 this]
@@ -299,7 +296,7 @@ G_M38013_IG21: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M38013_IG35
+ b G_M38013_IG45
;; size=32 bbWeight=0 PerfScore 0.00
G_M38013_IG22: ; bbWeight=0.78, gcrefRegs=280000 {x19 x21}, byrefRegs=4000 {x14}, byref, isz
; byrRegs +[x14]
@@ -307,7 +304,7 @@ G_M38013_IG22: ; bbWeight=0.78, gcrefRegs=280000 {x19 x21}, byrefRegs=400
; byrRegs +[x15]
ldr x12, [x15]
; gcrRegs +[x12]
- cbz x12, G_M38013_IG30
+ cbz x12, G_M38013_IG39
;; size=12 bbWeight=0.78 PerfScore 3.50
G_M38013_IG23: ; bbWeight=0.00, gcrefRegs=280000 {x19 x21}, byrefRegs=C000 {x14 x15}, byref, isz
; gcrRegs -[x12]
@@ -319,7 +316,7 @@ G_M38013_IG23: ; bbWeight=0.00, gcrefRegs=280000 {x19 x21}, byrefRegs=C00
; byrRegs +[x15]
ldapr w15, [x15]
; byrRegs -[x15]
- cbz w15, G_M38013_IG30
+ cbz w15, G_M38013_IG39
b G_M38013_IG21
;; size=20 bbWeight=0.00 PerfScore 0.02
G_M38013_IG24: ; bbWeight=0.78, gcrefRegs=280000 {x19 x21}, byrefRegs=4000 {x14}, byref, isz
@@ -329,7 +326,7 @@ G_M38013_IG24: ; bbWeight=0.78, gcrefRegs=280000 {x19 x21}, byrefRegs=400
and w14, w14, w15
mov w15, #0xD1FFAB1E
cmp w14, w15
- beq G_M38013_IG29
+ beq G_M38013_IG38
;; size=24 bbWeight=0.78 PerfScore 4.66
G_M38013_IG25: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
mov x0, x19
@@ -354,176 +351,44 @@ G_M38013_IG26: ; bbWeight=0.78, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
ldapr w14, [x0]
mov w15, #0xD1FFAB1E
tst w14, w15
- beq G_M38013_IG28
+ beq G_M38013_IG37
;; size=28 bbWeight=0.78 PerfScore 6.99
G_M38013_IG27: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x20 x22]
; byrRegs -[x0]
- b G_M38013_IG44
+ b G_M38013_IG29
;; size=4 bbWeight=0 PerfScore 0.00
-G_M38013_IG28: ; bbWeight=0.78, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0001 {x0}, byref, isz
- ; gcrRegs +[x20 x22]
- ; byrRegs +[x0]
- orr w15, w14, #0xD1FFAB1E
- mov w12, w14
- casal w12, w15, [x0]
- cmp w12, w14
- beq G_M38013_IG31
- b G_M38013_IG43
- ;; size=24 bbWeight=0.78 PerfScore 5.05
-G_M38013_IG29: ; bbWeight=0.78, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20 x22]
- ; byrRegs -[x0]
- ldr x20, [x19, #0x38]
- ; gcrRegs +[x20]
- b G_M38013_IG26
- ;; size=8 bbWeight=0.78 PerfScore 3.11
-G_M38013_IG30: ; bbWeight=0.78, gcrefRegs=280000 {x19 x21}, byrefRegs=4000 {x14}, byref, isz
- ; gcrRegs -[x20]
- ; byrRegs +[x14]
- ldapr w15, [x14]
- tbz w15, #21, G_M38013_IG24
+G_M38013_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19 x21]
+ movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowNullReferenceException()
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ ldr x0, [x0]
+ blr x0
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M38013_IG29: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x19 x21]
+ cbnz w23, G_M38013_IG45
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M38013_IG30: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ ldr x0, [x21, #0x08]
+ ; gcrRegs +[x0]
+ ldrsb wzr, [x0]
+ str wzr, [fp, #0x28] // [V39 tmp32]
+ add x24, x0, #52
+ ; byrRegs +[x24]
+ b G_M38013_IG36
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M38013_IG31: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0] +[x20 x22]
+ ; byrRegs -[x24]
+ cbz w0, G_M38013_IG30
b G_M38013_IG41
- ;; size=12 bbWeight=0.78 PerfScore 3.89
-G_M38013_IG31: ; bbWeight=0.78, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x20 x22]
- ; byrRegs -[x14]
- add x14, x22, #56
- ; byrRegs +[x14]
- mov x15, x20
- ; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x20]
- ; 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]
- cbz x23, G_M38013_IG33
- ;; size=36 bbWeight=0.78 PerfScore 10.10
-G_M38013_IG32: ; bbWeight=0, gcrefRegs=E80000 {x19 x21 x22 x23}, byrefRegs=0000 {}, byref, isz
- mov x0, x22
- ; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E // code for <unknown method>
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- ; gcrRegs -[x0]
- ; gcr arg pop 0
- add x0, x23, #16
- ; byrRegs +[x0]
- ldapr x0, [x0]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- cbz x0, G_M38013_IG33
- movz x1, #0xD1FFAB1E // code for <unknown method>
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- ; gcrRegs -[x0 x23]
- ; gcr arg pop 0
- ;; size=56 bbWeight=0 PerfScore 0.00
-G_M38013_IG33: ; bbWeight=0.76, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
- add x0, x22, #32
- ; byrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- ; gcrRegs +[x1]
- cbz x0, G_M38013_IG48
- bl <unknown method>
- ; gcrRegs -[x1] +[x0]
- ; byrRegs -[x0]
- ; gcr arg pop 0
- mov x1, x0
- ; gcrRegs +[x1]
- cbz x1, G_M38013_IG35
- ;; size=36 bbWeight=0.76 PerfScore 6.47
...
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
-8 (-1.74%) : 96241.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)
@@ -17,7 +17,7 @@
; V07 tmp2 [V07,T06] ( 6, 8 ) byref -> x26
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V09 tmp4 [V09,T02] ( 8, 12 ) long -> x11 "VirtualCall with runtime lookup"
-; V10 tmp5 [V10,T12] ( 4, 4 ) int -> registers
+; V10 tmp5 [V10,T12] ( 2, 3.96) int -> x0
; V11 tmp6 [V11,T07] ( 4, 8 ) ref -> x0 "argument with side effect"
; V12 cse0 [V12,T03] ( 4, 11.88) long -> x21 "CSE - aggressive"
; V13 cse1 [V13,T09] ( 5, 7 ) int -> x23 "CSE - aggressive"
@@ -121,8 +121,8 @@ G_M22994_IG09: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=5000000
; byrRegs -[x26]
; gcr arg pop 0
cmp w0, #0
- cset x21, eq
- cbnz w21, G_M22994_IG22
+ cset x0, eq
+ cbnz w0, G_M22994_IG22
;; size=32 bbWeight=1.98 PerfScore 24.75
G_M22994_IG10: ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz
add w22, w22, #1
@@ -209,10 +209,8 @@ G_M22994_IG18: ; 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_IG22
- ;; size=44 bbWeight=0.02 PerfScore 0.34
+ cbz w0, G_M22994_IG22
+ ;; size=36 bbWeight=0.02 PerfScore 0.32
G_M22994_IG19: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
add w22, w22, #1
cmp w23, w22
@@ -247,7 +245,7 @@ G_M22994_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 460, prolog size 40, PerfScore 125.20, instruction count 115, allocated bytes for code 460 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 452, prolog size 40, PerfScore 125.18, instruction count 113, allocated bytes for code 452 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -258,7 +256,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 115 (0x00073) Actual length = 460 (0x0001cc)
+ Function Length : 113 (0x00071) Actual length = 452 (0x0001c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-0.78%) : 148202.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
@@ -27,7 +27,7 @@
;* V16 tmp10 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V18 tmp12 [V18,T00] ( 8, 24 ) ref -> x26 class-hnd exact "Inlining Arg" <System.String>
-; V19 tmp13 [V19,T21] ( 2, 0.04) ubyte -> x14 "Inline return value spill temp"
+;* V19 tmp13 [V19,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp14 [V20 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp15 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V22 tmp16 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -274,10 +274,8 @@ G_M10809_IG15: ; bbWeight=0.02, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
; gcrRegs -[x3]
; byrRegs -[x0 x27]
; gcr arg pop 0
- cmp w0, #0
- cset x14, eq
- cbz w14, G_M10809_IG21
- ;; size=80 bbWeight=0.02 PerfScore 0.38
+ cbnz w0, G_M10809_IG21
+ ;; size=72 bbWeight=0.02 PerfScore 0.36
G_M10809_IG16: ; bbWeight=0.04, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
ldr w14, [fp, #0x18] // [V05 loc3]
mov w15, #0xD1FFAB1E
@@ -499,7 +497,7 @@ G_M10809_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_unix #0
;; size=136 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1032, prolog size 36, PerfScore 144.49, instruction count 258, allocated bytes for code 1032 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 1024, prolog size 36, PerfScore 144.47, instruction count 256, allocated bytes for code 1024 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -510,7 +508,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 258 (0x00102) Actual length = 1032 (0x000408)
+ Function Length : 256 (0x00100) Actual length = 1024 (0x000400)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-0.77%) : 151282.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
@@ -27,7 +27,7 @@
;* V16 tmp10 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V18 tmp12 [V18,T00] ( 8, 24 ) ref -> x26 class-hnd exact "Inlining Arg" <System.String>
-; V19 tmp13 [V19,T21] ( 2, 0.04) ubyte -> x14 "Inline return value spill temp"
+;* V19 tmp13 [V19,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp14 [V20 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp15 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V22 tmp16 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -275,10 +275,8 @@ G_M10809_IG15: ; bbWeight=0.02, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
; gcrRegs -[x3]
; byrRegs -[x0 x27]
; gcr arg pop 0
- cmp w0, #0
- cset x14, eq
- cbz w14, G_M10809_IG21
- ;; size=80 bbWeight=0.02 PerfScore 0.38
+ cbnz w0, G_M10809_IG21
+ ;; size=72 bbWeight=0.02 PerfScore 0.36
G_M10809_IG16: ; bbWeight=0.04, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
ldr w14, [fp, #0x18] // [V05 loc3]
mov w15, #0xD1FFAB1E
@@ -500,7 +498,7 @@ G_M10809_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_unix #0
;; size=136 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1036, prolog size 40, PerfScore 145.49, instruction count 259, allocated bytes for code 1036 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 1028, prolog size 40, PerfScore 145.47, instruction count 257, allocated bytes for code 1028 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -511,7 +509,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 259 (0x00103) Actual length = 1036 (0x00040c)
+ Function Length : 257 (0x00101) Actual length = 1028 (0x000404)
---- 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.SegmentedHashSet
1[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
-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.SegmentedHashSet
1[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
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
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
1
0
0
-4
+0
benchmarks.run_tiered.linux.arm64.checked.mch
0
0
0
0
-0
+0
coreclr_tests.run.linux.arm64.checked.mch
2
1
0
1
-24
+0
libraries.crossgen2.linux.arm64.checked.mch
11
11
0
0
-108
+0
libraries.pmi.linux.arm64.checked.mch
24
12
0
12
-128
+0
libraries_tests.run.linux.arm64.Release.mch
42
30
2
10
-308
+8
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
11
7
0
4
-80
+0
realworld.run.linux.arm64.checked.mch
4
2
0
2
-20
+0
smoke_tests.nativeaot.linux.arm64.checked.mch
0
0
0
0
-0
+0
96
64
2
30
-672
+8
Context information
Collection
Diffed contexts
MinOpts
FullOpts
Missed, base
Missed, diff
benchmarks.run.linux.arm64.checked.mch
33,636
2,755
30,881
0 (0.00%)
0 (0.00%)
benchmarks.run_pgo.linux.arm64.checked.mch
153,704
60,106
93,598
152 (0.10%)
152 (0.10%)
benchmarks.run_tiered.linux.arm64.checked.mch
63,983
47,942
16,041
0 (0.00%)
0 (0.00%)
coreclr_tests.run.linux.arm64.checked.mch
628,058
383,770
244,288
413 (0.07%)
413 (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,239
6
294,233
1 (0.00%)
1 (0.00%)
libraries_tests.run.linux.arm64.Release.mch
737,454
487,495
249,959
3,384 (0.46%)
3,384 (0.46%)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
304,065
21,560
282,505
6 (0.00%)
6 (0.00%)
realworld.run.linux.arm64.checked.mch
33,304
151
33,153
0 (0.00%)
0 (0.00%)
smoke_tests.nativeaot.linux.arm64.checked.mch
19,041
6
19,035
0 (0.00%)
0 (0.00%)
2,501,261
1,003,806
1,497,455
3,956 (0.16%)
3,956 (0.16%)
jit-analyze output
benchmarks.run.linux.arm64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15579780 (overridden on cmd)
Total bytes of diff: 15579780 (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
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 80916176 (overridden on cmd)
Total bytes of diff: 80916172 (overridden on cmd)
Total bytes of delta: -4 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-4 : 85059.dasm (-0.33 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-4 (-0.33 % 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 improvements (percentages):
-4 (-0.33 % 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 (1 improved, 0 regressed).
coreclr_tests.run.linux.arm64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 509788568 (overridden on cmd)
Total bytes of diff: 509788544 (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 : 612648.dasm (-2.33 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 1 unchanged.
Top method improvements (bytes):
-24 (-2.33 % of base) : 612648.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
Top method improvements (percentages):
-24 (-2.33 % of base) : 612648.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
1 total methods with Code Size differences (1 improved, 0 regressed).
libraries.crossgen2.linux.arm64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 55736420 (overridden on cmd)
Total bytes of diff: 55736312 (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 : 8200.dasm (-0.53 % of base)
-12 : 10298.dasm (-0.56 % of base)
-8 : 165127.dasm (-1.82 % of base)
-4 : 101327.dasm (-0.10 % of base)
-4 : 165506.dasm (-0.19 % of base)
-4 : 177787.dasm (-0.15 % of base)
-4 : 177786.dasm (-0.19 % of base)
-4 : 165507.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) : 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
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 75995180 (overridden on cmd)
Total bytes of diff: 75995052 (overridden on cmd)
Total bytes of delta: -128 (-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)
-20 : 143677.dasm (-0.25 % of base)
-20 : 87058.dasm (-1.06 % of base)
-12 : 26655.dasm (-0.68 % of base)
-8 : 93646.dasm (-0.18 % of base)
-8 : 93649.dasm (-0.15 % of base)
-8 : 266853.dasm (-0.72 % of base)
-4 : 198327.dasm (-0.16 % of base)
-4 : 247055.dasm (-0.21 % of base)
-4 : 109680.dasm (-0.10 % of base)
-4 : 198326.dasm (-0.20 % of base)
-4 : 247056.dasm (-0.16 % of base)
12 total files with Code Size differences (12 improved, 0 regressed), 12 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)
-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)
-4 (-0.20 % of base) : 198326.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-4 (-0.16 % of base) : 198327.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) : 247056.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
Top method improvements (percentages):
-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)
-4 (-0.16 % of base) : 198327.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) : 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)
-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)
12 total methods with Code Size differences (12 improved, 0 regressed).
libraries_tests.run.linux.arm64.Release.mch
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 381263920 (overridden on cmd)
Total bytes of diff: 381263620 (overridden on cmd)
Total bytes of delta: -300 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
4 : 52405.dasm (0.18 % of base)
4 : 54451.dasm (0.25 % of base)
Top file improvements (bytes):
-20 : 170023.dasm (-0.60 % of base)
-12 : 713368.dasm (-0.35 % of base)
-12 : 134066.dasm (-0.37 % of base)
-12 : 175765.dasm (-0.56 % of base)
-12 : 229613.dasm (-0.89 % of base)
-12 : 281903.dasm (-0.35 % of base)
-12 : 310065.dasm (-0.36 % of base)
-12 : 334811.dasm (-0.35 % of base)
-12 : 341080.dasm (-0.35 % of base)
-12 : 356184.dasm (-0.35 % of base)
-12 : 367256.dasm (-0.35 % of base)
-12 : 379278.dasm (-0.35 % of base)
-12 : 394412.dasm (-0.35 % of base)
-12 : 438287.dasm (-0.35 % of base)
-12 : 446391.dasm (-0.35 % of base)
-12 : 515234.dasm (-0.35 % of base)
-12 : 584429.dasm (-0.35 % of base)
-12 : 96994.dasm (-0.35 % of base)
-8 : 132857.dasm (-0.06 % of base)
-8 : 711230.dasm (-0.12 % of base)
32 total files with Code Size differences (30 improved, 2 regressed), 10 unchanged.
Top method regressions (bytes):
4 (0.18 % of base) : 52405.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
4 (0.25 % of base) : 54451.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
Top method improvements (bytes):
-20 (-0.60 % of base) : 170023.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.56 % of base) : 175765.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-12 (-0.89 % of base) : 229613.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:Heapify():this (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.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) : 281903.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.36 % of base) : 310065.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) : 341080.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 356184.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) : 379278.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 394412.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)
-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) : 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.35 % of base) : 446391.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (Tier1)
-8 (-0.27 % of base) : 277475.dasm - Interop+procfs:ParseMapsModulesCore(System.Collections.Generic.IEnumerable`1[System.String]):System.Diagnostics.ProcessModuleCollection (Tier1)
-8 (-0.69 % of base) : 66233.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this (Tier1)
Top method regressions (percentages):
4 (0.25 % of base) : 54451.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
4 (0.18 % of base) : 52405.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
Top method improvements (percentages):
-12 (-0.89 % of base) : 229613.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:Heapify():this (Tier1)
-8 (-0.69 % of base) : 66233.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref: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.56 % of base) : 175765.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-4 (-0.48 % of base) : 234143.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,int]:Heapify():this (Tier1)
-8 (-0.38 % of base) : 669519.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):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.36 % of base) : 310065.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 341080.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) : 367256.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) : 334811.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) : 356184.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) : 446391.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (Tier1)
-12 (-0.35 % of base) : 438287.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) : 96994.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
32 total methods with Code Size differences (30 improved, 2 regressed).
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 162531076 (overridden on cmd)
Total bytes of diff: 162530996 (overridden on cmd)
Total bytes of delta: -80 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-20 : 299819.dasm (-0.49 % of base)
-20 : 96157.dasm (-0.25 % of base)
-12 : 163424.dasm (-0.67 % of base)
-8 : 148202.dasm (-0.78 % of base)
-8 : 151282.dasm (-0.77 % of base)
-8 : 96241.dasm (-1.74 % of base)
-4 : 179187.dasm (-0.21 % of base)
7 total files with Code Size differences (7 improved, 0 regressed), 4 unchanged.
Top method improvements (bytes):
-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.77 % 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):
-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.77 % 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)
7 total methods with Code Size differences (7 improved, 0 regressed).
realworld.run.linux.arm64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15906972 (overridden on cmd)
Total bytes of diff: 15906952 (overridden on cmd)
Total bytes of delta: -20 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-12 : 14476.dasm (-0.14 % of base)
-8 : 32226.dasm (-0.10 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 2 unchanged.
Top method improvements (bytes):
-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):
-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)
2 total methods with Code Size differences (2 improved, 0 regressed).
Diffs are based on 2,595,036 contexts (1,052,329 MinOpts, 1,542,707 FullOpts).
MISSED contexts: 3,599 (0.14%)
Overall (-1,262 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run.linux.x64.checked.mch
13,736,868
+0
benchmarks.run_pgo.linux.x64.checked.mch
66,799,627
-16
coreclr_tests.run.linux.x64.checked.mch
458,907,683
-28
libraries.crossgen2.linux.x64.checked.mch
38,668,470
-218
libraries.pmi.linux.x64.checked.mch
59,972,922
-183
libraries_tests.run.linux.x64.Release.mch
330,797,007
-575
librariestestsnotieredcompilation.run.linux.x64.Release.mch
129,999,045
-203
realworld.run.linux.x64.checked.mch
13,194,305
-39
FullOpts (-1,262 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run.linux.x64.checked.mch
13,470,075
+0
benchmarks.run_pgo.linux.x64.checked.mch
46,969,870
-16
coreclr_tests.run.linux.x64.checked.mch
132,349,548
-28
libraries.crossgen2.linux.x64.checked.mch
38,667,268
-218
libraries.pmi.linux.x64.checked.mch
59,860,052
-183
libraries_tests.run.linux.x64.Release.mch
146,407,486
-575
librariestestsnotieredcompilation.run.linux.x64.Release.mch
119,340,574
-203
realworld.run.linux.x64.checked.mch
12,805,199
-39
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.63%) : 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, isz
; GC ptr vars +{V06}
test r13, r13
@@ -345,7 +343,7 @@ G_M35688_IG28: ; bbWeight=0.07, gcrefRegs=3000 {r12 r13}, byrefRegs=4000
; gcrRegs -[r15]
jmp SHORT G_M35688_IG26
;; size=2 bbWeight=0.07 PerfScore 0.13
-G_M35688_IG29: ; bbWeight=0.01, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=4000 {r14}, byref
+G_M35688_IG29: ; bbWeight=0.01, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=4000 {r14}, byref, isz
; gcrRegs +[r15]
mov r11, rbx
mov rdi, r13
@@ -355,8 +353,8 @@ G_M35688_IG29: ; bbWeight=0.01, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=4
; gcr arg pop 0
mov rdi, 0xD1FFAB1E ; function address
cmp qword ptr [r15+0x18], rdi
- je G_M35688_IG37
- ;; size=29 bbWeight=0.01 PerfScore 0.08
+ je SHORT G_M35688_IG37
+ ;; size=25 bbWeight=0.01 PerfScore 0.08
G_M35688_IG30: ; bbWeight=0, gcrefRegs=B001 {rax r12 r13 r15}, byrefRegs=4000 {r14}, byref
mov rsi, rax
; gcrRegs +[rsi]
@@ -409,9 +407,6 @@ G_M35688_IG35: ; bbWeight=0.01, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=4
G_M35688_IG36: ; 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
@@ -419,11 +414,10 @@ G_M35688_IG36: ; 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]
@@ -431,7 +425,7 @@ G_M35688_IG36: ; bbWeight=0.09, gcrefRegs=B001 {rax r12 r13 r15}, byrefRe
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
jmp G_M35688_IG29
- ;; size=49 bbWeight=0.09 PerfScore 1.47
+ ;; size=41 bbWeight=0.09 PerfScore 1.29
G_M35688_IG37: ; bbWeight=0.01, gcrefRegs=B001 {rax r12 r13 r15}, byrefRegs=4000 {r14}, byref
; gcrRegs +[rax]
mov rdi, gword ptr [r15+0x08]
@@ -498,7 +492,7 @@ G_M35688_IG42: ; bbWeight=0.93, gcrefRegs=0000 {}, byrefRegs=4000 {r14},
; gcrRegs +[rax]
;; size=6 bbWeight=0.93 PerfScore 1.17
G_M35688_IG43: ; bbWeight=0.93, epilog, nogc, extend
- add rsp, 72
+ add rsp, 56
pop rbx
pop r12
pop r13
@@ -524,7 +518,7 @@ G_M35688_IG46: ; bbWeight=0.07, gcVars=0000000000800000 {V06}, gcrefRegs=
; gcrRegs +[rax]
;; size=4 bbWeight=0.07 PerfScore 0.07
G_M35688_IG47: ; bbWeight=0.07, epilog, nogc, extend
- add rsp, 72
+ add rsp, 56
pop rbx
pop r12
pop r13
@@ -544,7 +538,7 @@ G_M35688_IG48: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
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_IG49: ; bbWeight=0.07, gcVars=0000000000800002 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01 V04}
@@ -579,7 +573,7 @@ G_M35688_IG52: ; bbWeight=0.07, funclet epilog, nogc, extend
ret
;; size=15 bbWeight=0.07 PerfScore 0.28
-; Total bytes of code 981, prolog size 49, PerfScore 242.92, instruction count 265, allocated bytes for code 981 (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 965, prolog size 45, PerfScore 241.74, instruction count 262, allocated bytes for code 965 (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:
@@ -592,7 +586,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
-28 (-3.73%) : 677717.dasm - ILCompiler.LazyGenericsSupport+Graph
1+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] ( 2, 512 ) long -> rdi "spilling expr"
-;* V63 rat10 [V63,T16] ( 0, 0 ) long -> zero-ref "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_IG17
- ;; 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_IG14
;; 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]
@@ -216,9 +212,9 @@ G_M1799_IG15: ; bbWeight=5.94, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=00
mov edi, r12d
;; size=3 bbWeight=5.94 PerfScore 1.49
G_M1799_IG16: ; bbWeight=8, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
- mov dword ptr [r15+0x1C], edi
- ;; size=4 bbWeight=8 PerfScore 8.00
-G_M1799_IG17: ; bbWeight=512, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
+ mov dword ptr [rbx+0x1C], edi
+ ;; size=3 bbWeight=8 PerfScore 8.00
+G_M1799_IG17: ; bbWeight=512, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, r13
; gcrRegs +[rdi]
mov r11, 0xD1FFAB1E ; function address
@@ -226,37 +222,30 @@ G_M1799_IG17: ; bbWeight=512, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=000
; gcrRegs -[rdi]
; gcr arg pop 0
test eax, eax
- je G_M1799_IG30
- ;; size=24 bbWeight=512 PerfScore 2432.00
-G_M1799_IG18: ; 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
...
+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.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)@@ -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
-38 (-2.39%) : 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)@@ -86,7 +86,6 @@
; V75 tmp56 [V75,T16] ( 6, 12 ) ref -> rax "argument with side effect"
; V76 tmp57 [V76,T17] ( 6, 12 ) ref -> rax "argument with side effect"
; V77 cse0 [V77,T01] ( 7, 88 ) long -> [rbp-0x60] spill-single-def "CSE - aggressive"
-; TEMP_01 byref -> [rbp-0xA0]
;
; Lcl frame size = 120
@@ -99,12 +98,10 @@ G_M1087_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 120
lea rbp, [rsp+0xA0]
- vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0xA0], ymm8
- vmovdqu ymmword ptr [rbp-0x80], ymm8
- vmovdqu ymmword ptr [rbp-0x60], ymm8
- vmovdqa xmmword ptr [rbp-0x40], xmm8
xor eax, eax
+ mov qword ptr [rbp-0x58], rax
+ vxorps xmm8, xmm8, xmm8
+ vmovdqu ymmword ptr [rbp-0x50], ymm8
mov qword ptr [rbp-0x30], rax
mov r14, rdi
; gcrRegs +[r14]
@@ -112,7 +109,7 @@ G_M1087_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
mov r15, rdx
; gcrRegs +[r15]
- ;; size=65 bbWeight=1 PerfScore 17.08
+ ;; size=51 bbWeight=1 PerfScore 12.08
G_M1087_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [r14], r14b
lea r13, bword ptr [r14+0x28]
@@ -477,16 +474,10 @@ G_M1087_IG22: ; bbWeight=0.02, gcVars=0000000002000800 {V22 V44}, gcrefRe
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- mov rax, gword ptr [rbp-0x88]
- ; gcrRegs +[rax]
- lea rdi, bword ptr [rax+0x30]
- ; byrRegs +[rdi]
- mov bword ptr [rbp-0xA0], rdi
mov rdi, gword ptr [rbp-0x80]
; gcrRegs +[rdi]
- ; byrRegs -[rdi]
call [Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:get_SyntaxTree():Microsoft.CodeAnalysis.SyntaxTree:this]
- ; gcrRegs -[rdi]
+ ; gcrRegs -[rdi] +[rax]
mov rdi, rax
; gcrRegs +[rdi]
mov rsi, gword ptr [rbp-0x80]
@@ -497,17 +488,19 @@ G_M1087_IG22: ; bbWeight=0.02, gcVars=0000000002000800 {V22 V44}, gcrefRe
; GC ptr vars -{V22}
call [rax+0x38]<unknown method>
; gcrRegs -[rsi rdi] +[rax]
- mov rdi, bword ptr [rbp-0xA0]
+ mov rcx, gword ptr [rbp-0x88]
+ ; gcrRegs +[rcx]
+ lea rdi, bword ptr [rcx+0x30]
; 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-0x88]
; gcrRegs +[rax]
jmp SHORT G_M1087_IG24
- ;; size=111 bbWeight=0.02 PerfScore 0.52
+ ;; size=97 bbWeight=0.02 PerfScore 0.48
G_M1087_IG23: ; bbWeight=0.02, gcVars=0000000000000200 {V07}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
; GC ptr vars -{V23} +{V07}
@@ -517,16 +510,10 @@ G_M1087_IG23: ; bbWeight=0.02, gcVars=0000000000000200 {V07}, gcrefRegs=C
mov dword ptr [rax+0x38], r12d
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
- mov gword ptr [rax+0x28], rdi
mov gword ptr [rbp-0x78], rax
; GC ptr vars +{V20}
- lea rdi, bword ptr [rax+0x30]
- ; gcrRegs -[rdi]
- ; byrRegs +[rdi]
- mov bword ptr [rbp-0xA0], rdi
+ mov gword ptr [rax+0x28], rdi
mov rdi, gword ptr [rbp-0x68]
- ; gcrRegs +[rdi]
- ; byrRegs -[rdi]
call [Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:get_SyntaxTree():Microsoft.CodeAnalysis.SyntaxTree:this]
; gcrRegs -[rdi]
mov rdi, rax
@@ -539,16 +526,18 @@ G_M1087_IG23: ; bbWeight=0.02, gcVars=0000000000000200 {V07}, gcrefRegs=C
; GC ptr vars -{V07}
call [rax+0x38]<unknown method>
; gcrRegs -[rsi rdi] +[rax]
- mov rdi, bword ptr [rbp-0xA0]
+ mov rcx, gword ptr [rbp-0x78]
+ ; gcrRegs +[rcx]
+ lea rdi, bword ptr [rcx+0x30]
; 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-0x78]
; gcrRegs +[rax]
- ;; size=94 bbWeight=0.02 PerfScore 0.43
+ ;; size=84 bbWeight=0.02 PerfScore 0.41
G_M1087_IG24: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V20}
cmp r12d, dword ptr [r14+0x08]
@@ -792,7 +781,7 @@ G_M1087_IG46: ; bbWeight=0, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byre
int3
;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1590, prolog size 56, PerfScore 913.00, instruction count 372, allocated bytes for code 1590 (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 1552, prolog size 42, PerfScore 907.94, instruction count 367, allocated bytes for code 1552 (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:
-26 (-1.40%) : 260701.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
@@ -46,7 +46,7 @@
;* V35 tmp23 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.Serialization.MemberMapping>
;* V36 tmp24 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.Serialization.MemberMapping>
;* V37 tmp25 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.Serialization.MemberMapping>
-; V38 tmp26 [V38,T15] ( 6, 12 ) ref -> registers "argument with side effect"
+; V38 tmp26 [V38,T15] ( 6, 12 ) ref -> rdi "argument with side effect"
; V39 tmp27 [V39,T25] ( 4, 8 ) ref -> rax "argument with side effect"
; V40 tmp28 [V40,T26] ( 4, 8 ) ref -> [rbp-0xA0] "argument with side effect"
; V41 tmp29 [V41,T34] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
@@ -62,7 +62,6 @@
; V51 cse3 [V51,T33] ( 4, 3 ) ref -> rdi "CSE - conservative"
; V52 cse4 [V52,T28] ( 6, 6 ) int -> r13 "CSE - moderate"
; V53 cse5 [V53,T31] ( 4, 5 ) long -> r13 "CSE - moderate"
-; TEMP_01 byref -> [rbp-0xC0]
;
; Lcl frame size = 168
@@ -75,13 +74,11 @@ G_M44608_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 168
lea rbp, [rsp+0xD0]
- xor eax, eax
- mov qword ptr [rbp-0xC0], 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
mov rdi, 0xD1FFAB1E ; System.Xml.Serialization.ReflectionXmlSerializationReader+<>c__DisplayClass47_0
call CORINFO_HELP_NEWSFAST
@@ -119,7 +116,7 @@ G_M44608_IG04: ; bbWeight=0.50, epilog, nogc, extend
G_M44608_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[rbx rdi r14-r15]
test byte ptr [rdi+0x64], 1
- jne G_M44608_IG30
+ jne G_M44608_IG29
mov rdi, gword ptr [rdi+0x40]
call [System.Xml.Serialization.ReflectionXmlSerializationReader:ReflectionCreateObject(System.Type):System.Object]
; gcrRegs -[rdi] +[rax]
@@ -149,7 +146,7 @@ G_M44608_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C08
; gcrRegs -[rax]
mov dword ptr [rbp-0x2C], eax
test r13d, r13d
- jle G_M44608_IG22
+ jle G_M44608_IG21
cmp dword ptr [r12+0x08], r13d
jl G_M44608_IG14
;; size=94 bbWeight=0.50 PerfScore 12.25
@@ -415,7 +412,7 @@ G_M44608_IG12: ; bbWeight=3.96, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRe
;; size=38 bbWeight=3.96 PerfScore 37.62
G_M44608_IG13: ; bbWeight=0.50, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
- jmp G_M44608_IG22
+ jmp G_M44608_IG21
;; size=5 bbWeight=0.50 PerfScore 1.00
G_M44608_IG14: ; bbWeight=0.04, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r15]
@@ -514,13 +511,13 @@ G_M44608_IG16: ; bbWeight=0.02, gcVars=0000000000000008 {V08}, gcrefRegs=
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- jmp G_M44608_IG21
+ jmp G_M44608_IG20
;; size=86 bbWeight=0.02 PerfScore 0.32
G_M44608_IG17: ; bbWeight=0.02, gcVars=0000008000000008 {V08 V49}, gcrefRegs=D009 {rax rbx r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rax]
; GC ptr vars +{V08 V39 V49}
cmp byte ptr [rax+0x72], 0
- jne G_M44608_IG19
+ jne G_M44608_IG18
mov rdi, 0xD1FFAB1E ; System.Xml.Serialization.ReflectionXmlSerializationReader+<>c__DisplayClass47_2
call CORINFO_HELP_NEWSFAST
; gcr arg pop 0
@@ -536,28 +533,19 @@ G_M44608_IG17: ; bbWeight=0.02, gcVars=0000008000000008 {V08 V49}, gcrefR
; byrRegs -[rdi]
mov rax, gword ptr [rbp-0x48]
; gcrRegs +[rax]
- lea rdi, bword ptr [rax+0x08]
- ; byrRegs +[rdi]
- mov bword ptr [rbp-0xC0], rdi
- mov gword ptr [rbp-0x48], rax
- mov rcx, gword ptr [rax+0x10]
- ; gcrRegs +[rcx]
- mov rcx, gword ptr [rcx+0x10]
- mov rcx, gword ptr [rcx+0x10]
- mov gword ptr [rbp-0xA0], rcx
- ; GC ptr vars +{V40}
- mov rdx, gword ptr [rbp-0xB0]
- ; gcrRegs +[rdx]
- mov rdx, gword ptr [rdx+0x50]
- mov rdi, rdx
+ mov rdi, gword ptr [rax+0x10]
; gcrRegs +[rdi]
- ; byrRegs -[rdi]
- mov rdx, qword ptr [rdx]
- ; gcrRegs -[rdx]
+ mov rdi, gword ptr [rdi+0x10]
+ mov rdi, gword ptr [rdi+0x10]
+ mov gword ptr [rbp-0xA0], rdi
+ ; GC ptr vars +{V40}
+ mov rdi, gword ptr [rbp-0xB0]
+ mov rdi, gword ptr [rdi+0x50]
+ mov rdx, qword ptr [rdi]
mov rdx, qword ptr [rdx+0x48]
; GC ptr vars -{V49}
call [rdx+0x30]<unknown method>
- ; gcrRegs -[rcx rdi]
+ ; gcrRegs -[rdi]
; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
@@ -567,12 +555,14 @@ G_M44608_IG17: ; bbWeight=0.02, gcVars=0000008000000008 {V08 V49}, gcrefR
call [<unknown method>]
; gcrRegs -[rsi rdi]
; gcr arg pop 0
- mov rdi, bword ptr [rbp-0xC0]
+ 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 rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
@@ -611,11 +601,9 @@ G_M44608_IG17: ; bbWeight=0.02, gcVars=0000008000000008 {V08 V49}, gcrefR
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- ;; size=216 bbWeight=0.02 PerfScore 1.02
-G_M44608_IG18: ; bbWeight=0.02, extend
- jmp G_M44608_IG21
- ;; size=5 bbWeight=0.02 PerfScore 0.04
-G_M44608_IG19: ; bbWeight=0.02, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ jmp G_M44608_IG20
+ ;; size=204 bbWeight=0.02 PerfScore 1.02
+G_M44608_IG18: ; bbWeight=0.02, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rbp-0x38]
; gcrRegs +[rax]
mov rcx, gword ptr [rax+0x08]
@@ -626,7 +614,7 @@ G_M44608_IG19: ; bbWeight=0.02, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRe
mov rsi, gword ptr [rdi]
; gcrRegs +[rsi]
test rsi, rsi
- jne SHORT G_M44608_IG20
+ jne SHORT G_M44608_IG19
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs -[rcx rsi]
@@ -653,7 +641,7 @@ G_M44608_IG19: ; bbWeight=0.02, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRe
mov rsi, gword ptr [rbp-0x70]
; gcrRegs +[rsi]
;; size=116 bbWeight=0.02 PerfScore 0.37
-G_M44608_IG20: ; bbWeight=0.02, gcVars=0000000000800008 {V08 V20}, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M44608_IG19: ; bbWeight=0.02, gcVars=0000000000800008 {V08 V20}, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V23}
mov rcx, gword ptr [rbp-0x68]
; gcrRegs +[rcx]
@@ -664,14 +652,14 @@ G_M44608_IG20: ; bbWeight=0.02, gcVars=0000000000800008 {V08 V20}, gcrefR
; gcrRegs -[rcx rsi]
; byrRegs -[rdi]
;; size=13 bbWeight=0.02 PerfScore 0.05
-G_M44608_IG21: ; bbWeight=0.04, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
+G_M44608_IG20: ; bbWeight=0.04, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbp-0x38]
; gcrRegs +[rdi]
mov rsi, gword ptr [rdi+0x08]
; gcrRegs +[rsi]
mov eax, dword ptr [rbp-0x2C]
cmp eax, dword ptr [r12+0x08]
- jae G_M44608_IG29
+ jae G_M44608_IG28
mov dword ptr [rbp-0x2C], eax
mov edi, eax
; gcrRegs -[rdi]
@@ -687,7 +675,7 @@ G_M44608_IG21: ; bbWeight=0.04, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRe
mov dword ptr [rbp-0x2C], edx
jg G_M44608_IG14
;; size=54 bbWeight=0.04 PerfScore 0.59
-G_M44608_IG22: ; bbWeight=0.50, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0000 {}, byref, isz
+G_M44608_IG21: ; bbWeight=0.50, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
mov rdx, gword ptr [r14+0x10]
; gcrRegs +[rdx]
@@ -745,7 +733,7 @@ G_M44608_IG22: ; bbWeight=0.50, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0
; gcrRegs -[rdi]
; gcr arg pop 0
test eax, eax
- je SHORT G_M44608_IG24
+ je SHORT G_M44608_IG23
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
mov rax, qword ptr [rdi]
@@ -756,7 +744,7 @@ G_M44608_IG22: ; bbWeight=0.50, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0
mov rax, gword ptr [r14+0x10]
; gcrRegs +[rax]
;; size=150 bbWeight=0.50 PerfScore 23.38
-G_M44608_IG23: ; bbWeight=0.50, epilog, nogc, extend
+G_M44608_IG22: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 168
pop rbx
pop r12
@@ -766,7 +754,7 @@ G_M44608_IG23: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=18 bbWeight=0.50 PerfScore 2.12
-G_M44608_IG24: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M44608_IG23: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[rbx r12 r15]
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
@@ -775,9 +763,9 @@ G_M44608_IG24: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=D00
call [rax+0x20]<unknown method>
; gcrRegs -[rdi]
; gcr arg pop 0
- jmp G_M44608_IG26
+ jmp G_M44608_IG25
;; size=22 bbWeight=0.50 PerfScore 5.50
-G_M44608_IG25: ; bbWeight=2, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
+G_M44608_IG24: ; bbWeight=2, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
mov rdi, r13
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -831,7 +819,7 @@ G_M44608_IG25: ; bbWeight=2, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=
; gcrRegs -[rcx rdx rsi rdi r8-r9]
; gcr arg pop 0
;; size=132 bbWeight=2 PerfScore 39.50
-G_M44608_IG26: ; bbWeight=4, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M44608_IG25: ; bbWeight=4, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
mov rax, qword ptr [rdi]
@@ -847,7 +835,7 @@ G_M44608_IG26: ; bbWeight=4, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=
; gcrRegs -[rdi]
; gcr arg pop 0
cmp eax, 15
- je SHORT G_M44608_IG27
+ je SHORT G_M44608_IG26
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
mov rax, qword ptr [rdi]
@@ -856,9 +844,9 @@ G_M44608_IG26: ; bbWeight=4, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=
; gcrRegs -[rdi]
; gcr arg pop 0
test eax, eax
...
-11 (-1.34%) : 281851.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
@@ -27,7 +27,7 @@
;* V16 tmp10 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V18 tmp12 [V18,T00] ( 8, 24 ) ref -> rdx class-hnd exact "Inlining Arg" <System.String>
-; V19 tmp13 [V19,T20] ( 2, 0.04) ubyte -> rdi "Inline return value spill temp"
+;* V19 tmp13 [V19,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp14 [V20 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp15 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V22 tmp16 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -234,10 +234,10 @@ G_M10809_IG15: ; bbWeight=3.96, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRe
cmp r13d, eax
jg SHORT G_M10809_IG12
;; size=35 bbWeight=3.96 PerfScore 33.66
-G_M10809_IG16: ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref
+G_M10809_IG16: ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r14]
- jmp G_M10809_IG21
- ;; size=5 bbWeight=0.50 PerfScore 1.00
+ jmp SHORT G_M10809_IG21
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
G_M10809_IG17: ; bbWeight=0.04, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r14]
mov dword ptr [rbp-0x2C], eax
@@ -277,12 +277,9 @@ G_M10809_IG19: ; bbWeight=0.02, gcrefRegs=D00C {rdx rbx r12 r14 r15}, byr
; gcrRegs -[rax rcx]
; byrRegs -[rdi]
; gcr arg pop 0
- xor edi, edi
test eax, eax
- sete dil
- test edi, edi
- je G_M10809_IG26
- ;; size=61 bbWeight=0.02 PerfScore 0.33
+ jne G_M10809_IG26
+ ;; size=53 bbWeight=0.02 PerfScore 0.30
G_M10809_IG20: ; bbWeight=0.04, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbp-0x38], 0xFFFF
ja G_M10809_IG27
@@ -455,7 +452,7 @@ G_M10809_IG27: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
int3
;; size=83 bbWeight=0 PerfScore 0.00
-; Total bytes of code 821, prolog size 25, PerfScore 124.63, instruction count 208, allocated bytes for code 821 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 810, prolog size 25, PerfScore 124.60, instruction count 205, allocated bytes for code 810 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 237399.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary
2[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.ConcurrentDictionary
2[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
-22 (-1.81%) : 726995.dasm - Roslyn.Utilities.AsyncLazy
1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task
1[System.__Canon],System.Threading.CancellationToken):this (Tier1)@@ -26,11 +26,11 @@
;* V14 tmp7 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V15 tmp8 [V15,T16] ( 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,T29] ( 2, 0 ) ubyte -> rdi "Inline return value spill temp"
-; V18 tmp11 [V18,T41] ( 2, 0 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
+; V17 tmp10 [V17,T28] ( 2, 0 ) ubyte -> rdi "Inline return value spill temp"
+; V18 tmp11 [V18,T38] ( 2, 0 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
; V19 tmp12 [V19,T22] ( 3, 2 ) ref -> registers class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.__Canon]>
; V20 tmp13 [V20,T03] ( 10, 10 ) ref -> r15 class-hnd "Inlining Arg" <Roslyn.Utilities.AsyncLazy`1+Request[System.__Canon]>
-; V21 tmp14 [V21,T30] ( 2, 0 ) ubyte -> rsi "Inline return value spill temp"
+; V21 tmp14 [V21,T29] ( 2, 0 ) ubyte -> rsi "Inline return value spill temp"
; V22 tmp15 [V22,T17] ( 3, 4 ) byref -> r13 "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]>
@@ -40,14 +40,14 @@
; V28 tmp21 [V28,T25] ( 2, 1 ) ubyte -> rcx "Inline stloc first use temp"
; V29 tmp22 [V29,T00] ( 11, 16.59) ref -> r13 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
; V30 tmp23 [V30,T24] ( 3, 2 ) ref -> r12 class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V31 tmp24 [V31,T28] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V31 tmp24 [V31,T27] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
; V32 tmp25 [V32,T10] ( 5, 5 ) int -> [rbp-0x44] spill-single-def "Inline stloc first use temp"
-; V33 tmp26 [V33,T34] ( 3, 0 ) ref -> rdi class-hnd "Inline stloc first use temp" <<unknown class>>
+; V33 tmp26 [V33,T31] ( 3, 0 ) ref -> rdi class-hnd "Inline stloc first use temp" <<unknown class>>
; V34 tmp27 [V34,T20] ( 3, 2.30) ref -> rax class-hnd "Inline stloc first use temp" <System.Object>
; V35 tmp28 [V35,T06] ( 3, 6 ) byref -> rdi "Inlining Arg"
; V36 tmp29 [V36,T18] ( 2, 4 ) ref -> rsi class-hnd exact "Inlining Arg" <System.Object>
; V37 tmp30 [V37 ] ( 2, 0 ) struct ( 8) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.SpinWait>
-; V38 tmp31 [V38,T35] ( 3, 0 ) ref -> r13 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
+; V38 tmp31 [V38,T32] ( 3, 0 ) ref -> r13 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,T14] ( 4, 4.20) byref -> r15 "Inlining Arg"
; V41 tmp34 [V41,T21] ( 5, 2.20) ref -> r12 class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
@@ -55,24 +55,21 @@
; V43 tmp36 [V43 ] ( 7, 5 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed single-def "field V02._source (fldOffset=0x0)" P-DEP
; V44 tmp37 [V44 ] ( 3, 2 ) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V04.<asyncLazy>P (fldOffset=0x0)" P-DEP
; V45 tmp38 [V45 ] ( 2, 0 ) int -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V37._count (fldOffset=0x0)" P-DEP
-; V46 tmp39 [V46,T42] ( 2, 0 ) ref -> rdi "argument with side effect"
-; V47 tmp40 [V47,T43] ( 2, 0 ) ref -> rsi "argument with side effect"
-; V48 tmp41 [V48,T44] ( 2, 0 ) ref -> rsi "argument with side effect"
-; V49 PSPSym [V49,T31] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
-; V50 rat0 [V50,T36] ( 3, 0 ) long -> rsi "Spilling to split statement for tree"
-; V51 rat1 [V51,T37] ( 3, 0 ) long -> rax "runtime lookup"
-; V52 rat2 [V52,T38] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V46 tmp39 [V46,T39] ( 2, 0 ) ref -> rdi "argument with side effect"
+; V47 tmp40 [V47,T40] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V48 tmp41 [V48,T41] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V49 PSPSym [V49,T30] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
+; V50 rat0 [V50,T33] ( 3, 0 ) long -> rsi "Spilling to split statement for tree"
+; V51 rat1 [V51,T34] ( 3, 0 ) long -> rax "runtime lookup"
+; V52 rat2 [V52,T35] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
; V53 rat3 [V53,T11] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
; V54 rat4 [V54,T07] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
; V55 rat5 [V55,T12] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
; V56 rat6 [V56,T08] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V57 rat7 [V57,T32] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V58 rat8 [V58,T33] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V59 rat9 [V59,T27] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V60 rat10 [V60,T13] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V61 rat11 [V61,T09] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable"
-; V62 rat12 [V62,T39] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
-; V63 rat13 [V63,T40] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V57 rat7 [V57,T13] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V58 rat8 [V58,T09] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable"
+; V59 rat9 [V59,T36] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
+; V60 rat10 [V60,T37] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 72
@@ -267,14 +264,14 @@ G_M38013_IG20: ; bbWeight=1, gcVars=0000000000008002 {V00 V06}, gcrefRegs
test eax, eax
je G_M38013_IG53
;; size=24 bbWeight=1 PerfScore 4.75
-G_M38013_IG21: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+G_M38013_IG21: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [r14]
mov rsi, qword ptr [rdi+0x38]
mov rsi, qword ptr [rsi]
mov r11, qword ptr [rsi+0x60]
test r11, r11
- je G_M38013_IG28
- ;; size=23 bbWeight=1 PerfScore 9.25
+ je SHORT G_M38013_IG26
+ ;; size=19 bbWeight=1 PerfScore 9.25
G_M38013_IG22: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbp-0x60]
; gcrRegs +[rdi]
@@ -304,23 +301,32 @@ G_M38013_IG24: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
lea r13, bword ptr [r15+0x10]
; byrRegs +[r13]
cmp gword ptr [r13], 0
- je SHORT G_M38013_IG26
+ je SHORT G_M38013_IG27
;; size=11 bbWeight=1 PerfScore 4.50
-G_M38013_IG25: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref
+G_M38013_IG25: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
mov rsi, gword ptr [r13]
; gcrRegs +[rsi]
cmp dword ptr [rsi+0x20], 0
setne sil
; gcrRegs -[rsi]
movzx rsi, sil
- jmp G_M38013_IG37
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M38013_IG26: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M38013_IG29
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M38013_IG26: ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r15]
; byrRegs -[r13]
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov r11, rax
+ jmp SHORT G_M38013_IG22
+ ;; size=20 bbWeight=0.20 PerfScore 0.70
+G_M38013_IG27: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r15]
test dword ptr [rbx+0x34], 0xD1FFAB1E
- je SHORT G_M38013_IG29
+ je SHORT G_M38013_IG31
;; size=9 bbWeight=1 PerfScore 4.00
-G_M38013_IG27: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M38013_IG28: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, rbx
; gcrRegs +[rdi]
call [System.Threading.Tasks.Task:get_Exception():System.AggregateException:this]
@@ -339,7 +345,7 @@ G_M38013_IG27: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
; gcrRegs -[rax rdi]
; gcr arg pop 0
test eax, eax
- jle G_M38013_IG38
+ jle SHORT G_M38013_IG30
mov rdi, rbx
; gcrRegs +[rdi]
call [System.Threading.Tasks.Task:get_Exception():System.AggregateException:this]
@@ -359,93 +365,13 @@ G_M38013_IG27: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
; gcrRegs -[rax rsi rdi]
; gcr arg pop 0
jmp G_M38013_IG46
- ;; size=82 bbWeight=0 PerfScore 0.00
-G_M38013_IG28: ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r15]
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov r11, rax
- jmp G_M38013_IG22
- ;; size=23 bbWeight=0.20 PerfScore 0.70
-G_M38013_IG29: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r15]
- mov eax, dword ptr [rbx+0x34]
- and eax, 0xD1FFAB1E
- cmp eax, 0xD1FFAB1E
- je G_M38013_IG41
- ;; size=19 bbWeight=1 PerfScore 3.50
-G_M38013_IG30: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- mov rdi, rbx
- ; gcrRegs +[rdi]
- mov esi, 1
- call [System.Threading.Tasks.Task`1[System.__Canon]:GetResultCore(ubyte):System.__Canon:this]
- ; gcrRegs -[rdi] +[rax]
- ; gcr arg pop 0
- mov r12, rax
- ; gcrRegs +[r12]
- ;; size=17 bbWeight=0 PerfScore 0.00
-G_M38013_IG31: ; bbWeight=1, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov r13, gword ptr [r15+0x08]
- ; gcrRegs +[r13]
- xor ecx, ecx
- mov eax, dword ptr [r13+0x34]
- mov dword ptr [rbp-0x44], eax
- test eax, 0xD1FFAB1E
- jne SHORT G_M38013_IG34
- lea rdi, bword ptr [r13+0x34]
- ; byrRegs +[rdi]
- mov esi, eax
- or esi, 0xD1FFAB1E
- lock
- cmpxchg dword ptr [rdi], esi
- cmp eax, dword ptr [rbp-0x44]
- je G_M38013_IG42
- ;; size=45 bbWeight=1 PerfScore 28.50
-G_M38013_IG32: ; bbWeight=0, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rdi]
- mov rdi, r13
- ; gcrRegs +[rdi]
- mov esi, 0xD1FFAB1E
- mov edx, 0xD1FFAB1E
- call [System.Threading.Tasks.Task:AtomicStateUpdateSlow(int,int):ubyte:this]
- ; gcrRegs -[rdi]
- ; gcr arg pop 0
- jmp SHORT G_M38013_IG36
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M38013_IG33: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx r12-r13 r15]
- call [System.ThrowHelper:ThrowNullReferenceException()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M38013_IG34: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx r15]
- test ecx, ecx
- jne G_M38013_IG46
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M38013_IG35: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- mov r13, gword ptr [r15+0x08]
- ; gcrRegs +[r13]
- cmp byte ptr [r13], r13b
- xor edi, edi
- mov dword ptr [rbp-0x50], edi
- jmp SHORT G_M38013_IG40
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M38013_IG36: ; bbWeight=0, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r12]
- test eax, eax
- je SHORT G_M38013_IG35
- jmp SHORT G_M38013_IG42
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M38013_IG37: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r12-r13]
+ ;; size=78 bbWeight=0 PerfScore 0.00
+G_M38013_IG29: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
test esi, esi
- je G_M38013_IG26
+ je SHORT G_M38013_IG27
jmp G_M38013_IG23
- ;; size=13 bbWeight=0 PerfScore 0.00
-G_M38013_IG38: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ ;; size=9 bbWeight=0 PerfScore 0.00
+G_M38013_IG30: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov rdi, rbx
; gcrRegs +[rdi]
call [System.Threading.Tasks.Task:get_Exception():System.AggregateException:this]
@@ -460,8 +386,78 @@ G_M38013_IG38: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
; gcr arg pop 0
jmp G_M38013_IG46
;; size=26 bbWeight=0 PerfScore 0.00
-G_M38013_IG39: ; bbWeight=0, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M38013_IG31: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ mov eax, dword ptr [rbx+0x34]
+ and eax, 0xD1FFAB1E
+ cmp eax, 0xD1FFAB1E
+ je G_M38013_IG41
+ ;; size=19 bbWeight=1 PerfScore 3.50
+G_M38013_IG32: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ mov rdi, rbx
+ ; gcrRegs +[rdi]
+ mov esi, 1
...
-34 (-1.32%) : 733262.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
@@ -180,7 +180,6 @@
; V168 cse14 [V168,T65] ( 3, 0.07) int -> r15 "CSE - conservative"
; V169 cse15 [V169,T66] ( 3, 0.07) int -> r15 "CSE - conservative"
; V170 rat0 [V170,T24] ( 6, 8 ) ref -> r14 class-hnd "replacement local" <<unknown class>>
-; TEMP_01 byref -> [rbp-0xA8]
;
; Lcl frame size = 136
@@ -194,13 +193,10 @@ G_M8186_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 136
vzeroupper
lea rbp, [rsp+0xB0]
- xor eax, eax
- mov qword ptr [rbp-0xA8], rax
vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0xA0], ymm8
- vmovdqu ymmword ptr [rbp-0x80], ymm8
vmovdqu ymmword ptr [rbp-0x60], ymm8
vmovdqa xmmword ptr [rbp-0x40], xmm8
+ xor eax, eax
mov qword ptr [rbp-0x30], rax
mov qword ptr [rbp-0xB0], rsp
mov rax, 0xD1FFAB1E
@@ -209,7 +205,7 @@ G_M8186_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
mov r15, rsi
; gcrRegs +[r15]
- ;; size=99 bbWeight=1 PerfScore 21.08
+ ;; size=79 bbWeight=1 PerfScore 16.08
G_M8186_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov r14, r15
; gcrRegs +[r14]
@@ -1016,15 +1012,11 @@ G_M8186_IG71: ; bbWeight=0.19, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {
sub eax, esi
cmp eax, r13d
jle G_M8186_IG89
- lea rdi, bword ptr [r14+0x08]
- ; byrRegs +[rdi]
- mov bword ptr [rbp-0xA8], rdi
mov r15, gword ptr [r14+0x20]
; gcrRegs +[r15]
add esi, r13d
mov rdi, gword ptr [r14+0x18]
; gcrRegs +[rdi]
- ; byrRegs -[rdi]
mov r11, 0xD1FFAB1E ; function address
call [r11]<unknown method>
; gcrRegs -[rdi] +[rax]
@@ -1036,7 +1028,7 @@ G_M8186_IG71: ; bbWeight=0.19, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {
call [r15+0x18]<unknown method>
; gcrRegs -[rsi rdi r15]
; gcr arg pop 0
- mov rdi, bword ptr [rbp-0xA8]
+ lea rdi, bword ptr [r14+0x08]
; byrRegs +[rdi]
mov rsi, rax
; gcrRegs +[rsi]
@@ -1045,7 +1037,7 @@ G_M8186_IG71: ; bbWeight=0.19, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {
; byrRegs -[rdi]
inc dword ptr [r14+0x14]
jmp G_M8186_IG64
- ;; size=102 bbWeight=0.19 PerfScore 5.65
+ ;; size=88 bbWeight=0.19 PerfScore 5.27
G_M8186_IG72: ; bbWeight=0.02, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref
; gcrRegs +[r13]
mov r15d, dword ptr [rbp-0x40]
@@ -1366,7 +1358,7 @@ G_M8186_IG102: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2581, prolog size 99, PerfScore 987.71, instruction count 665, allocated bytes for code 2581 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
+; Total bytes of code 2547, prolog size 79, PerfScore 982.33, instruction count 660, allocated bytes for code 2547 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
; ============================================================
Unwind Info:
-16 (-1.29%) : 185770.dasm - Roslyn.Utilities.AsyncLazy
1[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-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) [rbp-0x40] 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 -> r15 class-hnd single-def <<unknown class>>
+; V05 loc2 [V05,T28] ( 2, 2 ) ref -> r15 class-hnd single-def <<unknown class>>
; V06 loc3 [V06,T18] ( 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 ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T22] ( 4, 3 ) ref -> r15
@@ -26,54 +26,51 @@
;* V14 tmp7 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V15 tmp8 [V15,T19] ( 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,T33] ( 2, 0 ) ubyte -> rdi "Inline return value spill temp"
-; V18 tmp11 [V18,T42] ( 2, 0 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
-; V19 tmp12 [V19,T28] ( 3, 2 ) ref -> registers class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.__Canon]>
+; V17 tmp10 [V17,T31] ( 2, 0 ) ubyte -> rdi "Inline return value spill temp"
+; V18 tmp11 [V18,T39] ( 2, 0 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
+; V19 tmp12 [V19,T26] ( 3, 2 ) ref -> registers class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.__Canon]>
; V20 tmp13 [V20,T02] ( 10, 11 ) ref -> r15 class-hnd "Inlining Arg" <Roslyn.Utilities.AsyncLazy`1+Request[System.__Canon]>
-; V21 tmp14 [V21,T34] ( 2, 0 ) ubyte -> rsi "Inline return value spill temp"
+; V21 tmp14 [V21,T32] ( 2, 0 ) ubyte -> rsi "Inline return value spill temp"
; V22 tmp15 [V22,T20] ( 3, 4 ) byref -> r13 "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,T12] ( 3, 5 ) ref -> r12 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,T00] ( 10, 34.43) ref -> r13 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
; V30 tmp23 [V30,T04] ( 3, 9 ) ref -> r12 class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V31 tmp24 [V31,T32] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V31 tmp24 [V31,T30] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
; V32 tmp25 [V32,T13] ( 5, 5.00) int -> [rbp-0x44] spill-single-def "Inline stloc first use temp"
-; V33 tmp26 [V33,T29] ( 3, 2 ) ref -> rdi class-hnd "Inline stloc first use temp" <<unknown class>>
-; V34 tmp27 [V34,T25] ( 3, 2.21) ref -> rax class-hnd "Inline stloc first use temp" <System.Object>
+; V33 tmp26 [V33,T27] ( 3, 2 ) ref -> rdi class-hnd "Inline stloc first use temp" <<unknown class>>
+; V34 tmp27 [V34,T24] ( 3, 2.21) ref -> rax class-hnd "Inline stloc first use temp" <System.Object>
; V35 tmp28 [V35,T07] ( 3, 6 ) byref -> rdi "Inlining Arg"
; V36 tmp29 [V36,T21] ( 2, 4 ) ref -> rsi class-hnd exact "Inlining Arg" <System.Object>
; V37 tmp30 [V37 ] ( 2, 0.50) struct ( 8) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.SpinWait>
; V38 tmp31 [V38,T23] ( 3, 3 ) ref -> r13 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,T17] ( 4, 4.19) byref -> r15 "Inlining Arg"
-; V41 tmp34 [V41,T27] ( 5, 2.19) ref -> r12 class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
+; V41 tmp34 [V41,T25] ( 5, 2.19) ref -> r12 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, 5 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed single-def "field V02._source (fldOffset=0x0)" P-DEP
; V44 tmp37 [V44 ] ( 3, 2 ) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V04.<asyncLazy>P (fldOffset=0x0)" P-DEP
; V45 tmp38 [V45 ] ( 2, 0.50) int -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V37._count (fldOffset=0x0)" P-DEP
-; V46 tmp39 [V46,T43] ( 2, 0 ) ref -> rdi "argument with side effect"
-; V47 tmp40 [V47,T44] ( 2, 0 ) ref -> rsi "argument with side effect"
-; V48 tmp41 [V48,T45] ( 2, 0 ) ref -> rsi "argument with side effect"
-; V49 PSPSym [V49,T36] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
+; V46 tmp39 [V46,T40] ( 2, 0 ) ref -> rdi "argument with side effect"
+; V47 tmp40 [V47,T41] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V48 tmp41 [V48,T42] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V49 PSPSym [V49,T33] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
; V50 cse0 [V50,T08] ( 3, 6.00) byref -> [rbp-0x68] spill-single-def "CSE - moderate"
-; V51 rat0 [V51,T37] ( 3, 0 ) long -> rsi "Spilling to split statement for tree"
-; V52 rat1 [V52,T38] ( 3, 0 ) long -> rax "runtime lookup"
-; V53 rat2 [V53,T39] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V51 rat0 [V51,T34] ( 3, 0 ) long -> rsi "Spilling to split statement for tree"
+; V52 rat1 [V52,T35] ( 3, 0 ) long -> rax "runtime lookup"
+; V53 rat2 [V53,T36] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
; V54 rat3 [V54,T14] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
; V55 rat4 [V55,T09] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
; V56 rat5 [V56,T15] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
; V57 rat6 [V57,T10] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V58 rat7 [V58,T26] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V59 rat8 [V59,T35] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V60 rat9 [V60,T24] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V61 rat10 [V61,T16] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V62 rat11 [V62,T11] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable"
-; V63 rat12 [V63,T40] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
-; V64 rat13 [V64,T41] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V58 rat7 [V58,T16] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V59 rat8 [V59,T11] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable"
+; V60 rat9 [V60,T37] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
+; V61 rat10 [V61,T38] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 72
@@ -233,7 +230,7 @@ G_M38013_IG17: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x20]
test rax, rax
- je G_M38013_IG53
+ je G_M38013_IG52
;; size=27 bbWeight=1 PerfScore 10.25
G_M38013_IG18: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
@@ -247,7 +244,7 @@ G_M38013_IG18: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
mov rsi, qword ptr [rsi]
mov r11, qword ptr [rsi+0x58]
test r11, r11
- je G_M38013_IG54
+ je G_M38013_IG53
;; size=33 bbWeight=1 PerfScore 13.75
G_M38013_IG19: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov rdi, r15
@@ -266,16 +263,16 @@ G_M38013_IG20: ; bbWeight=1, gcVars=0000000000040002 {V00 V06}, gcrefRegs
; gcrRegs -[rax rdi]
; gcr arg pop 0
test eax, eax
- je G_M38013_IG55
+ je G_M38013_IG54
;; size=24 bbWeight=1 PerfScore 4.75
-G_M38013_IG21: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+G_M38013_IG21: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [r14]
mov rsi, qword ptr [rdi+0x38]
mov rsi, qword ptr [rsi]
mov r11, qword ptr [rsi+0x60]
test r11, r11
- je G_M38013_IG27
- ;; size=23 bbWeight=1 PerfScore 9.25
+ je SHORT G_M38013_IG26
+ ;; size=19 bbWeight=1 PerfScore 9.25
G_M38013_IG22: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbp-0x60]
; gcrRegs +[rdi]
@@ -299,14 +296,14 @@ G_M38013_IG23: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
call [System.Threading.Tasks.TaskCompletionSource`1[System.__Canon]:TrySetCanceled(System.Threading.CancellationToken):ubyte:this]
; gcrRegs -[rsi rdi]
; gcr arg pop 0
- jmp G_M38013_IG39
+ jmp G_M38013_IG43
;; size=18 bbWeight=0 PerfScore 0.00
-G_M38013_IG24: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M38013_IG24: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
lea r13, bword ptr [r15+0x10]
; byrRegs +[r13]
cmp gword ptr [r13], 0
- je G_M38013_IG34
- ;; size=15 bbWeight=1 PerfScore 4.50
+ je SHORT G_M38013_IG28
+ ;; size=11 bbWeight=1 PerfScore 4.50
G_M38013_IG25: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref
mov rsi, gword ptr [r13]
; gcrRegs +[rsi]
@@ -314,11 +311,19 @@ G_M38013_IG25: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000
setne sil
; gcrRegs -[rsi]
movzx rsi, sil
- jmp G_M38013_IG50
+ jmp G_M38013_IG32
;; size=21 bbWeight=0 PerfScore 0.00
-G_M38013_IG26: ; bbWeight=4, gcVars=0000000000040102 {V00 V06 V50}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[r12-r13]
+G_M38013_IG26: ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r15]
; byrRegs -[r13]
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov r11, rax
+ jmp SHORT G_M38013_IG22
+ ;; size=20 bbWeight=0.20 PerfScore 0.70
+G_M38013_IG27: ; bbWeight=4, gcVars=0000000000040102 {V00 V06 V50}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[r12-r13 r15]
; GC ptr vars +{V08 V50}
lea rdi, bword ptr [r13+0x38]
; byrRegs +[rdi]
@@ -336,200 +341,16 @@ G_M38013_IG26: ; bbWeight=4, gcVars=0000000000040102 {V00 V06 V50}, gcref
; gcrRegs +[r12]
; byrRegs -[r12]
test r12, r12
- je G_M38013_IG37
- jmp G_M38013_IG35
+ je G_M38013_IG41
+ jmp G_M38013_IG40
;; size=48 bbWeight=4 PerfScore 121.00
-G_M38013_IG27: ; bbWeight=0.20, gcVars=0000000000040002 {V00 V06}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r12-r13 r15]
+G_M38013_IG28: ; bbWeight=1, gcVars=0000000000040002 {V00 V06}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r12-r13]
; GC ptr vars -{V08 V50}
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov r11, rax
- jmp G_M38013_IG22
- ;; size=23 bbWeight=0.20 PerfScore 0.70
-G_M38013_IG28: ; bbWeight=1.00, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r15]
- mov eax, dword ptr [rbx+0x34]
- and eax, 0xD1FFAB1E
- cmp eax, 0xD1FFAB1E
- je SHORT G_M38013_IG33
- ;; size=15 bbWeight=1.00 PerfScore 3.50
-G_M38013_IG29: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- mov rdi, rbx
- ; gcrRegs +[rdi]
- mov esi, 1
- call [System.Threading.Tasks.Task`1[System.__Canon]:GetResultCore(ubyte):System.__Canon:this]
- ; gcrRegs -[rdi] +[rax]
- ; gcr arg pop 0
- mov r12, rax
- ; gcrRegs +[r12]
- ;; size=17 bbWeight=0 PerfScore 0.00
-G_M38013_IG30: ; bbWeight=1, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov r13, gword ptr [r15+0x08]
- ; gcrRegs +[r13]
- mov eax, dword ptr [r13+0x34]
- mov dword ptr [rbp-0x44], eax
- test eax, 0xD1FFAB1E
- je SHORT G_M38013_IG32
- ;; size=18 bbWeight=1 PerfScore 6.25
-G_M38013_IG31: ; bbWeight=0.00, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r12-r13]
- jmp G_M38013_IG44
- ;; size=5 bbWeight=0.00 PerfScore 0.00
-G_M38013_IG32: ; bbWeight=1.00, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r12-r13]
- lea rcx, bword ptr [r13+0x34]
- ; byrRegs +[rcx]
- mov bword ptr [rbp-0x68], rcx
- ; GC ptr vars +{V50}
- mov edi, eax
- or edi, 0xD1FFAB1E
- lock
- cmpxchg dword ptr [rcx], edi
- cmp eax, dword ptr [rbp-0x44]
- je G_M38013_IG26
- jmp G_M38013_IG52
- ;; size=34 bbWeight=1.00 PerfScore 24.99
-G_M38013_IG33: ; bbWeight=1.00, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r12-r13]
- ; byrRegs -[rcx]
- ; GC ptr vars -{V50}
- mov r12, gword ptr [rbx+0x38]
- ; gcrRegs +[r12]
- jmp SHORT G_M38013_IG30
- ;; size=6 bbWeight=1.00 PerfScore 4.00
-G_M38013_IG34: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r12]
test dword ptr [rbx+0x34], 0xD1FFAB1E
- jne G_M38013_IG49
- jmp SHORT G_M38013_IG28
- ;; size=15 bbWeight=1 PerfScore 6.00
-G_M38013_IG35: ; bbWeight=1, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r12-r13]
- mov rdi, r13
- ; gcrRegs +[rdi]
- call [<unknown method>]
- ; gcrRegs -[rdi]
- ; gcr arg pop 0
...
+16 (+0.17%) : 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)@@ -10,28 +10,28 @@
; 19 inlinees with PGO data; 55 single block inlinees; 15 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T47] ( 23, 25.06) ref -> [rbp+0x338] this class-hnd EH-live single-def tier0-frame <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T69] ( 16, 40.99) ref -> r15 class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][]>
+; V00 this [V00,T50] ( 23, 25.06) ref -> [rbp+0x338] this class-hnd EH-live single-def tier0-frame <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V01 arg1 [V01,T67] ( 16, 40.99) ref -> r15 class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][]>
; V02 arg2 [V02,T43] ( 19, 114.53) ref -> [rbp+0x328] class-hnd single-def tier0-frame <System.__Canon[]>
-; V03 arg3 [V03,T151] ( 4, 4 ) struct ( 8) [rbp+0x320] do-not-enreg[SF] ld-addr-op single-def tier0-frame <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V04 arg4 [V04,T70] ( 12, 38.93) int -> r14 single-def
+; V03 arg3 [V03,T148] ( 4, 4 ) struct ( 8) [rbp+0x320] do-not-enreg[SF] ld-addr-op single-def tier0-frame <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
+; V04 arg4 [V04,T68] ( 12, 38.93) int -> r14 single-def
; V05 loc0 [V05,T14] ( 84, 4909.31) ref -> [rbp+0x310] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.Queue`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]]>
-; V06 loc1 [V06,T107] ( 23, 14.86) ref -> [rbp+0x308] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.List`1[System.__Canon]>
+; V06 loc1 [V06,T104] ( 23, 14.86) ref -> [rbp+0x308] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.List`1[System.__Canon]>
; V07 loc2 [V07,T44] ( 7, 111.88) int -> [rbp+0x304] tier0-frame
; V08 loc3 [V08,T46] ( 9, 82.25) int -> [rbp+0x300] tier0-frame
-; V09 loc4 [V09,T79] ( 5, 32.08) struct (16) [rbp+0x2F0] do-not-enreg[SFR] multireg-ret ld-addr-op tier0-frame <System.Collections.Immutable.ImmutableArray`1+Enumerator[System.__Canon]>
+; V09 loc4 [V09,T77] ( 5, 32.08) struct (16) [rbp+0x2F0] do-not-enreg[SFR] multireg-ret ld-addr-op tier0-frame <System.Collections.Immutable.ImmutableArray`1+Enumerator[System.__Canon]>
; V10 loc5 [V10 ] ( 3, 21.31) struct ( 8) [rbp+0x2E8] do-not-enreg[XS] addr-exposed ld-addr-op tier0-frame <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V11 loc6 [V11,T180] ( 2, 1.23) ref -> [rbp+0x2E0] class-hnd spill-single-def tier0-frame <System.__Canon>
-; V12 loc7 [V12,T108] ( 8, 13.12) ubyte -> [rbp+0x2DC] tier0-frame
+; V11 loc6 [V11,T177] ( 2, 1.23) ref -> [rbp+0x2E0] class-hnd spill-single-def tier0-frame <System.__Canon>
+; V12 loc7 [V12,T109] ( 8, 13.12) ubyte -> [rbp+0x2DC] tier0-frame
;* V13 loc8 [V13 ] ( 0, 0 ) struct (16) zero-ref multireg-ret <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
;* V14 loc9 [V14 ] ( 0, 0 ) int -> zero-ref
-; V15 loc10 [V15,T84] ( 10, 28.40) ref -> rdx class-hnd <System.__Canon>
-; V16 loc11 [V16,T129] ( 11, 9.25) ref -> [rbp+0x2B0] class-hnd exact tier0-frame <<unknown class>>
-; V17 loc12 [V17,T127] ( 8, 9.66) int -> [rbp+0x2AC] tier0-frame
-; V18 loc13 [V18,T76] ( 36, 33.48) int -> [rbp+0x2A8] tier0-frame
+; V15 loc10 [V15,T82] ( 10, 28.40) ref -> rdx class-hnd <System.__Canon>
+; V16 loc11 [V16,T126] ( 11, 9.25) ref -> [rbp+0x2B0] class-hnd exact tier0-frame <<unknown class>>
+; V17 loc12 [V17,T124] ( 8, 9.66) int -> [rbp+0x2AC] tier0-frame
+; V18 loc13 [V18,T74] ( 36, 33.48) int -> [rbp+0x2A8] tier0-frame
; V19 loc14 [V19,T05] ( 31,27107.47) ref -> [rbp+0x2A0] class-hnd tier0-frame <System.__Canon>
-; V20 loc15 [V20,T80] ( 25, 31.03) int -> [rbp+0x29C] tier0-frame
-; V21 loc16 [V21,T112] ( 11, 13.28) ref -> [rbp+0x290] class-hnd tier0-frame <System.__Canon>
+; V20 loc15 [V20,T78] ( 25, 31.03) int -> [rbp+0x29C] tier0-frame
+; V21 loc16 [V21,T108] ( 11, 13.28) ref -> [rbp+0x290] class-hnd tier0-frame <System.__Canon>
; V22 loc17 [V22,T31] ( 18, 403.99) int -> r13
;# V23 OutArgs [V23 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V24 tmp1 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -47,102 +47,102 @@
;* V34 tmp11 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
;* V35 tmp12 [V35 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V36 tmp13 [V36 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V37 tmp14 [V37,T144] ( 5, 7.70) int -> [rbp-0x2C] "impAppendStmt"
-; V38 tmp15 [V38,T115] ( 10, 11.55) ref -> rdi class-hnd "spilling ret_expr" <System.__Canon>
+; V37 tmp14 [V37,T141] ( 5, 7.70) int -> [rbp-0x2C] "impAppendStmt"
+; V38 tmp15 [V38,T112] ( 10, 11.55) ref -> rdi class-hnd "spilling ret_expr" <System.__Canon>
;* V39 tmp16 [V39 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V40 tmp17 [V40 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V41 tmp18 [V41 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V42 tmp19 [V42,T03] ( 44,36180.11) ref -> [rbp-0x60] class-hnd "spilling ret_expr" <System.__Canon>
;* V43 tmp20 [V43 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V44 tmp21 [V44,T86] ( 15, 26.45) ref -> rdi class-hnd "spilling ret_expr" <System.__Canon>
+; V44 tmp21 [V44,T84] ( 15, 26.45) ref -> rdi class-hnd "spilling ret_expr" <System.__Canon>
;* V45 tmp22 [V45 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V46 tmp23 [V46,T106] ( 7, 17.63) int -> [rbp-0x30] "impAppendStmt"
-; V47 tmp24 [V47,T87] ( 15, 26.45) ref -> rdi class-hnd "spilling ret_expr" <System.__Canon>
+; V46 tmp23 [V46,T103] ( 7, 17.63) int -> [rbp-0x30] "impAppendStmt"
+; V47 tmp24 [V47,T85] ( 15, 26.45) ref -> rdi class-hnd "spilling ret_expr" <System.__Canon>
;* V48 tmp25 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
;* V49 tmp26 [V49 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V50 tmp27 [V50 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V51 tmp28 [V51,T116] ( 10, 11.66) ref -> registers class-hnd "spilling ret_expr" <System.__Canon>
+; V51 tmp28 [V51,T113] ( 10, 11.66) ref -> registers class-hnd "spilling ret_expr" <System.__Canon>
;* V52 tmp29 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
;* V53 tmp30 [V53 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V54 tmp31 [V54 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V55 tmp32 [V55 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V56 tmp33 [V56,T100] ( 3, 20.29) int -> r8 "guarded devirt return temp"
+; V56 tmp33 [V56,T97] ( 3, 20.29) int -> r8 "guarded devirt return temp"
;* V57 tmp34 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
;* V58 tmp35 [V58 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret "guarded devirt return temp" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
;* V59 tmp36 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
;* V60 tmp37 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager>
-; V61 tmp38 [V61,T158] ( 6, 3.85) int -> r9 "guarded devirt return temp"
+; V61 tmp38 [V61,T155] ( 6, 3.85) int -> r9 "guarded devirt return temp"
;* V62 tmp39 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
;* V63 tmp40 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager>
-; V64 tmp41 [V64,T132] ( 9, 8.82) int -> registers "guarded devirt return temp"
+; V64 tmp41 [V64,T129] ( 9, 8.82) int -> registers "guarded devirt return temp"
;* V65 tmp42 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
-; V66 tmp43 [V66,T133] ( 9, 8.82) int -> registers "guarded devirt return temp"
+; V66 tmp43 [V66,T130] ( 9, 8.82) int -> registers "guarded devirt return temp"
;* V67 tmp44 [V67 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
;* V68 tmp45 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager>
-; V69 tmp46 [V69,T134] ( 9, 8.82) int -> rsi "guarded devirt return temp"
+; V69 tmp46 [V69,T131] ( 9, 8.82) int -> rsi "guarded devirt return temp"
;* V70 tmp47 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
; V71 tmp48 [V71,T40] ( 9, 128.94) ref -> registers "guarded devirt return temp"
;* V72 tmp49 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager>
-; V73 tmp50 [V73,T159] ( 6, 3.89) int -> registers "guarded devirt return temp"
+; V73 tmp50 [V73,T156] ( 6, 3.89) int -> registers "guarded devirt return temp"
; V74 tmp51 [V74,T29] ( 24, 513.46) ref -> [rbp-0x68] class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
-;* V75 tmp52 [V75,T182] ( 0, 0 ) int -> zero-ref single-def "OSR entry state var"
-; V76 tmp53 [V76,T101] ( 3, 20.29) ubyte -> r8 "Inline return value spill temp"
-; V77 tmp54 [V77,T50] ( 6, 69.50) ref -> r13 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PEAssembly>
+;* V75 tmp52 [V75,T179] ( 0, 0 ) int -> zero-ref single-def "OSR entry state var"
+; V76 tmp53 [V76,T98] ( 3, 20.29) ubyte -> r8 "Inline return value spill temp"
+; V77 tmp54 [V77,T49] ( 6, 69.50) ref -> r13 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PEAssembly>
;* V78 tmp55 [V78 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]>
;* V79 tmp56 [V79 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.PEModule]>
;* V80 tmp57 [V80 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]>
;* V81 tmp58 [V81 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.PEModule]>
;* V82 tmp59 [V82 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon[]>
-; V83 tmp60 [V83,T140] ( 4, 8.64) int -> rsi "Inline stloc first use temp"
+; V83 tmp60 [V83,T137] ( 4, 8.64) int -> rsi "Inline stloc first use temp"
;* V84 tmp61 [V84 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V85 tmp62 [V85 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V86 tmp63 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
; V87 tmp64 [V87,T51] ( 4, 60.94) ref -> [rbp-0x70] class-hnd exact spill-single-def "Inlining Arg" <<unknown class>>
; V88 tmp65 [V88,T53] ( 7, 59.60) ref -> [rbp-0x78] class-hnd "Inline stloc first use temp" <<unknown class>>
;* V89 tmp66 [V89 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <<unknown class>>
-; V90 tmp67 [V90,T63] ( 3, 52.93) byref -> rdx "impAppendStmt"
+; V90 tmp67 [V90,T62] ( 3, 52.93) byref -> rdx "impAppendStmt"
;* V91 tmp68 [V91 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V92 tmp69 [V92 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
-; V93 tmp70 [V93,T48] ( 4, 78.59) int -> [rbp-0x34] spill-single-def "Inlining Arg"
-; V94 tmp71 [V94,T49] ( 9, 69.71) int -> rsi "Inline stloc first use temp"
-; V95 tmp72 [V95,T123] ( 3, 10.44) int -> rdi "Inline return value spill temp"
-; V96 tmp73 [V96,T168] ( 3, 3.02) int -> rdi "Inlining Arg"
-; V97 tmp74 [V97,T74] ( 3, 40.52) byref -> rdi "Inlining Arg"
-; V98 tmp75 [V98,T82] ( 4, 30.09) int -> rcx "Inline stloc first use temp"
+; V93 tmp70 [V93,T47] ( 4, 78.59) int -> [rbp-0x34] spill-single-def "Inlining Arg"
+; V94 tmp71 [V94,T48] ( 9, 69.71) int -> rsi "Inline stloc first use temp"
+; V95 tmp72 [V95,T120] ( 3, 10.44) int -> rdi "Inline return value spill temp"
+; V96 tmp73 [V96,T165] ( 3, 3.02) int -> rdi "Inlining Arg"
+; V97 tmp74 [V97,T72] ( 3, 40.52) byref -> rdi "Inlining Arg"
+; V98 tmp75 [V98,T80] ( 4, 30.09) int -> rcx "Inline stloc first use temp"
;* V99 tmp76 [V99 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
;* V100 tmp77 [V100 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V101 tmp78 [V101 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V102 tmp79 [V102,T111] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEAssemblySymbol>
+;* V102 tmp79 [V102,T107] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEAssemblySymbol>
; V103 tmp80 [V103,T13] ( 9, 5646.29) ubyte -> registers "Inline return value spill temp"
; V104 tmp81 [V104,T06] ( 9,18062.83) int -> registers "impAppendStmt"
-; V105 tmp82 [V105,T85] ( 15, 27.31) ref -> [rbp-0x80] class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PEAssembly>
-; V106 tmp83 [V106,T110] ( 6, 13.92) ref -> [rbp-0x88] class-hnd exact "Inlining Arg" <System.String>
+; V105 tmp82 [V105,T83] ( 15, 27.31) ref -> [rbp-0x80] class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PEAssembly>
+; V106 tmp83 [V106,T106] ( 6, 13.92) ref -> [rbp-0x88] class-hnd exact "Inlining Arg" <System.String>
;* V107 tmp84 [V107 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[System.Collections.Immutable.ImmutableArray`1[ubyte]]>
-; V108 tmp85 [V108,T146] ( 9, 6.96) ref -> rdi ld-addr-op class-hnd "Inline ldloca(s) first use temp" <<unknown class>>
+; V108 tmp85 [V108,T143] ( 9, 6.96) ref -> rdi ld-addr-op class-hnd "Inline ldloca(s) first use temp" <<unknown class>>
;* V109 tmp86 [V109 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V110 tmp87 [V110,T109] ( 12, 13.92) ref -> rdi
-; V111 tmp88 [V111,T126] ( 9, 9.66) byref -> [rbp-0x90] "non-inline candidate call"
-; V112 tmp89 [V112,T147] ( 6, 6.44) ref -> rax class-hnd "Inlining Arg" <<unknown class>>
+; V110 tmp87 [V110,T105] ( 12, 13.92) ref -> rdi
+; V111 tmp88 [V111,T123] ( 9, 9.66) byref -> [rbp-0x90] "non-inline candidate call"
+; V112 tmp89 [V112,T144] ( 6, 6.44) ref -> rax class-hnd "Inlining Arg" <<unknown class>>
;* V113 tmp90 [V113 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V114 tmp91 [V114,T94] ( 9, 20.87) ref -> registers class-hnd "Inlining Arg" <<unknown class>>
-; V115 tmp92 [V115,T130] ( 9, 9.34) byref -> rax "Inline stloc first use temp"
+; V114 tmp91 [V114,T92] ( 9, 20.87) ref -> registers class-hnd "Inlining Arg" <<unknown class>>
+; V115 tmp92 [V115,T127] ( 9, 9.34) byref -> rax "Inline stloc first use temp"
; V116 tmp93 [V116,T04] ( 7,36108.03) ref -> registers "CASTCLASS eval op1"
; V117 tmp94 [V117,T08] ( 7, 9027.01) long -> registers "fgMakeTemp is creating a new local variable"
; V118 tmp95 [V118,T00] ( 12,58675.55) ref -> registers class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol>
;* V119 tmp96 [V119 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V120 tmp97 [V120,T135] ( 9, 8.82) ubyte -> registers "Inline return value spill temp"
-; V121 tmp98 [V121,T81] ( 18, 30.20) ref -> [rbp-0x98] class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PEAssembly>
+; V120 tmp97 [V120,T132] ( 9, 8.82) ubyte -> registers "Inline return value spill temp"
+; V121 tmp98 [V121,T79] ( 18, 30.20) ref -> [rbp-0x98] class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PEAssembly>
;* V122 tmp99 [V122 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]>
;* V123 tmp100 [V123 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.PEModule]>
;* V124 tmp101 [V124 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]>
;* V125 tmp102 [V125 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.PEModule]>
;* V126 tmp103 [V126 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon[]>
-; V127 tmp104 [V127,T162] ( 14, 3.77) int -> registers "Inline stloc first use temp"
+; V127 tmp104 [V127,T159] ( 14, 3.77) int -> registers "Inline stloc first use temp"
;* V128 tmp105 [V128 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
; V129 tmp106 [V129,T07] ( 12, 9027.01) int -> [rbp-0x38] "Inlining Arg"
; V130 tmp107 [V130,T09] ( 27, 7905.41) int -> rsi "Inline stloc first use temp"
; V131 tmp108 [V131,T23] ( 9, 1132.78) int -> rax "Inline return value spill temp"
-; V132 tmp109 [V132,T92] ( 9, 21.70) int -> rax "Inlining Arg"
+; V132 tmp109 [V132,T90] ( 9, 21.70) int -> rax "Inlining Arg"
; V133 tmp110 [V133,T15] ( 9, 4522.32) byref -> rsi "Inlining Arg"
; V134 tmp111 [V134,T16] ( 12, 3389.54) int -> r8 "Inline stloc first use temp"
;* V135 tmp112 [V135 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
@@ -151,17 +151,17 @@
; V138 tmp115 [V138,T21] ( 8, 1487.58) ref -> [rbp-0xA8] class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEAssemblySymbol>
; V139 tmp116 [V139,T38] ( 6, 157.44) ubyte -> registers "Inline return value spill temp"
; V140 tmp117 [V140,T30] ( 6, 501.49) int -> registers "impAppendStmt"
-; V141 tmp118 [V141,T114] ( 10, 12.04) ref -> [rbp-0xB0] class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PEAssembly>
-; V142 tmp119 [V142,T150] ( 4, 6.14) ref -> [rbp-0xB8] class-hnd exact "Inlining Arg" <System.String>
+; V141 tmp118 [V141,T111] ( 10, 12.04) ref -> [rbp-0xB0] class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PEAssembly>
+; V142 tmp119 [V142,T147] ( 4, 6.14) ref -> [rbp-0xB8] class-hnd exact "Inlining Arg" <System.String>
;* V143 tmp120 [V143 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[System.Collections.Immutable.ImmutableArray`1[ubyte]]>
-; V144 tmp121 [V144,T167] ( 6, 3.07) ref -> rdi ld-addr-op class-hnd "Inline ldloca(s) first use temp" <<unknown class>>
+; V144 tmp121 [V144,T164] ( 6, 3.07) ref -> rdi ld-addr-op class-hnd "Inline ldloca(s) first use temp" <<unknown class>>
;* V145 tmp122 [V145 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V146 tmp123 [V146,T149] ( 8, 6.14) ref -> rdi
-; V147 tmp124 [V147,T156] ( 6, 4.26) byref -> [rbp-0xC0] "non-inline candidate call"
-; V148 tmp125 [V148,T170] ( 4, 2.84) ref -> rax class-hnd "Inlining Arg" <<unknown class>>
+; V146 tmp123 [V146,T146] ( 8, 6.14) ref -> rdi
+; V147 tmp124 [V147,T153] ( 6, 4.26) byref -> [rbp-0xC0] "non-inline candidate call"
+; V148 tmp125 [V148,T167] ( 4, 2.84) ref -> rax class-hnd "Inlining Arg" <<unknown class>>
;* V149 tmp126 [V149 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V150 tmp127 [V150,T131] ( 6, 9.20) ref -> registers class-hnd "Inlining Arg" <<unknown class>>
-; V151 tmp128 [V151,T157] ( 6, 4.12) byref -> rax "Inline stloc first use temp"
+; V150 tmp127 [V150,T128] ( 6, 9.20) ref -> registers class-hnd "Inlining Arg" <<unknown class>>
+; V151 tmp128 [V151,T154] ( 6, 4.12) byref -> rax "Inline stloc first use temp"
; V152 tmp129 [V152,T28] ( 5, 995.20) ref -> r10 "CASTCLASS eval op1"
; V153 tmp130 [V153,T33] ( 5, 248.80) long -> registers "fgMakeTemp is creating a new local variable"
; V154 tmp131 [V154,T18] ( 8, 1617.21) ref -> registers class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol>
@@ -169,177 +169,174 @@
;* V156 tmp133 [V156 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
; V157 tmp134 [V157,T32] ( 8, 248.80) int -> [rbp-0x3C] "Inlining Arg"
; V158 tmp135 [V158,T34] ( 18, 220.69) int -> rsi "Inline stloc first use temp"
-; V159 tmp136 [V159,T77] ( 6, 33.04) int -> rax "Inline return value spill temp"
-; V160 tmp137 [V160,T128] ( 6, 9.57) int -> rax "Inlining Arg"
+; V159 tmp136 [V159,T75] ( 6, 33.04) int -> rax "Inline return value spill temp"
+; V160 tmp137 [V160,T125] ( 6, 9.57) int -> rax "Inlining Arg"
; V161 tmp138 [V161,T41] ( 6, 128.29) byref -> rdx "Inlining Arg"
; V162 tmp139 [V162,T45] ( 8, 95.24) int -> rsi "Inline stloc first use temp"
-; V163 tmp140 [V163,T96] ( 2, 20.31) int -> r13 "Inline stloc first use temp"
-; V164 tmp141 [V164,T93] ( 17, 21.35) ref -> [rbp+0x2C8] tier0-frame "field V13.AssemblySymbol (fldOffset=0x0)" P-INDEP
-; V165 tmp142 [V165,T75] ( 19, 34.25) int -> [rbp+0x2D0] tier0-frame "field V13.DefinitionIndex (fldOffset=0x8)" P-INDEP
-; V166 tmp143 [V166,T124] ( 2, 10.44) ref -> [rbp-0xC8] spill-single-def "field V34.AssemblySymbol (fldOffset=0x0)" P-INDEP
-; V167 tmp144 [V167,T125] ( 2, 10.44) int -> [rbp-0x40] spill-single-def "field V34.DefinitionIndex (fldOffset=0x8)" P-INDEP
+; V163 tmp140 [V163,T94] ( 2, 20.31) int -> r13 "Inline stloc first use temp"
+; V164 tmp141 [V164,T91] ( 17, 21.35) ref -> [rbp+0x2C8] tier0-frame "field V13.AssemblySymbol (fldOffset=0x0)" P-INDEP
+; V165 tmp142 [V165,T73] ( 19, 34.25) int -> [rbp+0x2D0] tier0-frame "field V13.DefinitionIndex (fldOffset=0x8)" P-INDEP
+; V166 tmp143 [V166,T121] ( 2, 10.44) ref -> [rbp-0xC8] spill-single-def "field V34.AssemblySymbol (fldOffset=0x0)" P-INDEP
+; V167 tmp144 [V167,T122] ( 2, 10.44) int -> [rbp-0x40] spill-single-def "field V34.DefinitionIndex (fldOffset=0x8)" P-INDEP
; V168 tmp145 [V168,T24] ( 6, 1132.78) ref -> [rbp-0xD0] "field V48.AssemblySymbol (fldOffset=0x0)" P-INDEP
; V169 tmp146 [V169,T25] ( 6, 1132.78) int -> [rbp-0x44] "field V48.DefinitionIndex (fldOffset=0x8)" P-INDEP
-; V170 tmp147 [V170,T78] ( 4, 33.04) ref -> [rbp-0xD8] "field V52.AssemblySymbol (fldOffset=0x0)" P-INDEP
-;* V171 tmp148 [V171,T177] ( 0, 0 ) int -> zero-ref "field V52.DefinitionIndex (fldOffset=0x8)" P-INDEP
-; V172 tmp149 [V172,T95] ( 3, 20.31) ref -> rdx "field V58.array (fldOffset=0x0)" P-INDEP
+; V170 tmp147 [V170,T76] ( 4, 33.04) ref -> [rbp-0xD8] "field V52.AssemblySymbol (fldOffset=0x0)" P-INDEP
+;* V171 tmp148 [V171,T174] ( 0, 0 ) int -> zero-ref "field V52.DefinitionIndex (fldOffset=0x8)" P-INDEP
+; V172 tmp149 [V172,T93] ( 3, 20.31) ref -> rdx "field V58.array (fldOffset=0x0)" P-INDEP
;* V173 tmp150 [V173 ] ( 0, 0 ) ref -> zero-ref "field V78.array (fldOffset=0x0)" P-INDEP
-; V174 tmp151 [V174,T139] ( 4, 8.64) ref -> [rbp-0xE0] spill-single-def "field V79._array (fldOffset=0x0)" P-INDEP
-; V175 tmp152 [V175,T119] ( 4, 8.64) int -> [rbp-0x48] "field V79._index (fldOffset=0x8)" P-INDEP
-; V176 tmp153 [V176,T148] ( 3, 6.48) ref -> rdx "field V80.array (fldOffset=0x0)" P-INDEP
-; V177 tmp154 [V177,T155] ( 2, 4.32) ref -> rdx "field V81._array (fldOffset=0x0)" P-INDEP
-;* V178 tmp155 [V178,T175] ( 0, 0 ) int -> zero-ref "field V81._index (fldOffset=0x8)" P-INDEP
+; V174 tmp151 [V174,T136] ( 4, 8.64) ref -> [rbp-0xE0] spill-single-def "field V79._array (fldOffset=0x0)" P-INDEP
+; V175 tmp152 [V175,T116] ( 4, 8.64) int -> [rbp-0x48] "field V79._index (fldOffset=0x8)" P-INDEP
+; V176 tmp153 [V176,T145] ( 3, 6.48) ref -> rdx "field V80.array (fldOffset=0x0)" P-INDEP
+; V177 tmp154 [V177,T152] ( 2, 4.32) ref -> rdx "field V81._array (fldOffset=0x0)" P-INDEP
+;* V178 tmp155 [V178,T172] ( 0, 0 ) int -> zero-ref "field V81._index (fldOffset=0x8)" P-INDEP
;* V179 tmp156 [V179 ] ( 0, 0 ) ref -> zero-ref "field V92.AssemblySymbol (fldOffset=0x0)" P-INDEP
;* V180 tmp157 [V180 ] ( 0, 0 ) int -> zero-ref "field V92.DefinitionIndex (fldOffset=0x8)" P-INDEP
;* V181 tmp158 [V181 ] ( 0, 0 ) ref -> zero-ref "field V122.array (fldOffset=0x0)" P-INDEP
...
+4 (+0.51%) : 338153.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
@@ -10,23 +10,23 @@
; 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 -> r15 "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"
@@ -38,23 +38,20 @@
; 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 -> r15 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 -> r15 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
@@ -77,7 +74,7 @@ G_M26324_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
G_M26324_IG03: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; System.Linq.Enumerable+UnionIterator2`1[System.String]
cmp qword ptr [rbx], rdi
- je G_M26324_IG28
+ je G_M26324_IG25
;; size=19 bbWeight=0.20 PerfScore 0.85
G_M26324_IG04: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, rbx
@@ -93,7 +90,7 @@ G_M26324_IG04: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
G_M26324_IG05: ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
test r14, r14
- je G_M26324_IG41
+ je G_M26324_IG40
;; size=9 bbWeight=0.20 PerfScore 0.25
G_M26324_IG06: ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rbx]
@@ -118,14 +115,14 @@ G_M26324_IG08: ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
mov rdi, gword ptr [rbx+0x20]
; gcrRegs +[rdi]
test rdi, rdi
- je G_M26324_IG33
+ je G_M26324_IG29
;; size=22 bbWeight=0.20 PerfScore 1.35
G_M26324_IG09: ; bbWeight=0.10, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rsi, 0xD1FFAB1E ; System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetData>d__13
cmp qword ptr [rdi], rsi
- je G_M26324_IG33
- jmp G_M26324_IG51
+ je G_M26324_IG29
+ jmp G_M26324_IG50
;; size=24 bbWeight=0.10 PerfScore 0.62
G_M26324_IG10: ; bbWeight=0.16, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
@@ -134,7 +131,7 @@ G_M26324_IG10: ; bbWeight=0.16, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
G_M26324_IG11: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r14]
test r15d, r15d
- jle G_M26324_IG41
+ jle G_M26324_IG40
;; size=9 bbWeight=0.80 PerfScore 1.00
G_M26324_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov r15, gword ptr [rbx+0x28]
@@ -145,7 +142,7 @@ G_M26324_IG13: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
; gcrRegs +[rdi]
mov rax, 0xD1FFAB1E ; System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetData>d__13
cmp qword ptr [rdi], rax
- jne G_M26324_IG39
+ jne G_M26324_IG38
;; size=23 bbWeight=1 PerfScore 6.25
G_M26324_IG14: ; bbWeight=0.80, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref
call [System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetData>d__13:MoveNext():ubyte:this]
@@ -174,7 +171,7 @@ G_M26324_IG16: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
G_M26324_IG17: ; bbWeight=0.40, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
test r15, r15
- je G_M26324_IG41
+ je G_M26324_IG40
;; size=9 bbWeight=0.40 PerfScore 0.50
G_M26324_IG18: ; bbWeight=0.20, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rbx]
@@ -199,14 +196,14 @@ G_M26324_IG20: ; bbWeight=0.20, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
mov rdi, gword ptr [rbx+0x20]
; gcrRegs +[rdi]
test rdi, rdi
- je G_M26324_IG40
+ je G_M26324_IG39
;; size=22 bbWeight=0.20 PerfScore 1.35
G_M26324_IG21: ; bbWeight=0.10, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rsi, 0xD1FFAB1E ; System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetData>d__13
cmp qword ptr [rdi], rsi
- je G_M26324_IG40
- jmp G_M26324_IG52
+ je G_M26324_IG39
+ jmp G_M26324_IG51
;; size=24 bbWeight=0.10 PerfScore 0.62
G_M26324_IG22: ; bbWeight=0.16, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
@@ -218,17 +215,21 @@ G_M26324_IG23: ; bbWeight=0.60, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
mov rsi, qword ptr [rsi+0x08]
mov r11, qword ptr [rsi+0x28]
test r11, r11
- je G_M26324_IG42
- jmp SHORT G_M26324_IG27
+ je G_M26324_IG41
+ jmp SHORT G_M26324_IG28
;; size=26 bbWeight=0.60 PerfScore 6.75
-G_M26324_IG24: ; bbWeight=0.40, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M26324_IG24: ; bbWeight=0.40, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
test esi, esi
- je G_M26324_IG47
- jmp SHORT G_M26324_IG31
- ;; size=10 bbWeight=0.40 PerfScore 1.30
-G_M26324_IG25: ; bbWeight=0.60, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+ je G_M26324_IG46
+ jmp G_M26324_IG35
+ ;; size=13 bbWeight=0.40 PerfScore 1.30
+G_M26324_IG25: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov r14, gword ptr [rbx+0x30]
; gcrRegs +[r14]
+ jmp G_M26324_IG05
+ ;; size=9 bbWeight=0.20 PerfScore 0.80
+G_M26324_IG26: ; bbWeight=0.60, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
lea rdi, bword ptr [rbx+0x08]
; byrRegs +[rdi]
mov rsi, r14
@@ -238,7 +239,7 @@ G_M26324_IG25: ; bbWeight=0.60, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
; byrRegs -[rdi]
mov eax, 1
;; size=17 bbWeight=0.60 PerfScore 1.20
-G_M26324_IG26: ; bbWeight=0.60, epilog, nogc, extend
+G_M26324_IG27: ; bbWeight=0.60, epilog, nogc, extend
add rsp, 24
pop rbx
pop r14
@@ -246,7 +247,7 @@ G_M26324_IG26: ; bbWeight=0.60, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=0.60 PerfScore 1.95
-G_M26324_IG27: ; bbWeight=0.60, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M26324_IG28: ; bbWeight=0.60, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r15]
mov rdi, gword ptr [rbx+0x20]
; gcrRegs +[rdi]
@@ -263,33 +264,11 @@ G_M26324_IG27: ; bbWeight=0.60, gcVars=0000000000000000 {}, gcrefRegs=800
call [<unknown method>]
; gcrRegs -[rax rsi rdi]
test eax, eax
- jne SHORT G_M26324_IG25
- jmp G_M26324_IG13
- ;; size=38 bbWeight=0.60 PerfScore 9.30
-G_M26324_IG28: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14-r15]
- mov r14, gword ptr [rbx+0x30]
- ; gcrRegs +[r14]
- jmp G_M26324_IG05
- ;; size=9 bbWeight=0.20 PerfScore 0.80
-G_M26324_IG29: ; bbWeight=0.13, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14]
- xor r15, r15
- ; gcrRegs +[r15]
- ;; size=3 bbWeight=0.13 PerfScore 0.03
-G_M26324_IG30: ; bbWeight=0.40, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- jmp G_M26324_IG17
- ;; size=5 bbWeight=0.40 PerfScore 0.80
-G_M26324_IG31: ; bbWeight=0.27, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je G_M26324_IG13
+ jmp SHORT G_M26324_IG26
+ ;; size=39 bbWeight=0.60 PerfScore 9.30
+G_M26324_IG29: ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
- cmp esi, 1
- je G_M26324_IG48
- ;; size=9 bbWeight=0.27 PerfScore 0.33
-G_M26324_IG32: ; bbWeight=0.13, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M26324_IG29
- ;; size=2 bbWeight=0.13 PerfScore 0.27
-G_M26324_IG33: ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r14]
lea rdi, bword ptr [rbx+0x20]
; byrRegs +[rdi]
mov rsi, r14
@@ -300,18 +279,18 @@ G_M26324_IG33: ; 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
- je SHORT G_M26324_IG36
+ je SHORT G_M26324_IG32
;; size=30 bbWeight=0.20 PerfScore 1.80
-G_M26324_IG34: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+G_M26324_IG30: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov rdi, r14
; gcrRegs +[rdi]
mov r11, 0xD1FFAB1E ; code for <unknown method>
call [r11]<unknown method>
; gcrRegs -[rdi r14]
;; size=16 bbWeight=0 PerfScore 0.00
-G_M26324_IG35: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M26324_IG31: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test eax, eax
- jne SHORT G_M26324_IG37
+ jne SHORT G_M26324_IG36
...
+13 (+1.68%) : 375790.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
@@ -18,9 +18,9 @@
; 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 -> r15 "guarded devirt return temp"
; V14 tmp10 [V14,T07] ( 4, 3.51) int -> rsi "guarded devirt arg temp"
@@ -44,19 +44,16 @@
;* 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"
+; 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
@@ -75,13 +72,13 @@ G_M26324_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M26324_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov r15d, dword ptr [rbx+0x14]
cmp r15d, 1
- jne G_M26324_IG29
+ jne G_M26324_IG28
;; size=14 bbWeight=1 PerfScore 3.25
-G_M26324_IG03: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M26324_IG03: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; System.Linq.Enumerable+UnionIterator2`1[System.String]
cmp qword ptr [rbx], rdi
- je SHORT G_M26324_IG07
- ;; size=15 bbWeight=0.23 PerfScore 0.96
+ je G_M26324_IG13
+ ;; size=19 bbWeight=0.23 PerfScore 0.96
G_M26324_IG04: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, rbx
; gcrRegs +[rdi]
@@ -96,40 +93,17 @@ G_M26324_IG04: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
G_M26324_IG05: ; bbWeight=0.23, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
test r14, r14
- je G_M26324_IG42
+ je G_M26324_IG41
;; size=9 bbWeight=0.23 PerfScore 0.28
-G_M26324_IG06: ; bbWeight=0.11, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M26324_IG10
- ;; size=2 bbWeight=0.11 PerfScore 0.23
-G_M26324_IG07: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r14]
- mov r14, gword ptr [rbx+0x30]
- ; gcrRegs +[r14]
- jmp SHORT G_M26324_IG05
- ;; size=6 bbWeight=0.23 PerfScore 0.90
-G_M26324_IG08: ; bbWeight=11.15, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14] +[rdi]
- mov dword ptr [rdi+0x08], r14d
- ;; size=4 bbWeight=11.15 PerfScore 11.15
-G_M26324_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- 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_IG52
- jmp G_M26324_IG33
- ;; size=29 bbWeight=1 PerfScore 8.50
-G_M26324_IG10: ; bbWeight=0.23, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r14]
+G_M26324_IG06: ; bbWeight=0.23, 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+0x20]
test r11, r11
- je G_M26324_IG17
+ je G_M26324_IG16
;; size=24 bbWeight=0.23 PerfScore 2.09
-G_M26324_IG11: ; bbWeight=0.23, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M26324_IG07: ; bbWeight=0.23, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rdi, r14
; gcrRegs +[rdi]
call [r11]
@@ -139,20 +113,20 @@ G_M26324_IG11: ; bbWeight=0.23, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
mov rdi, gword ptr [rbx+0x20]
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M26324_IG14
+ je SHORT G_M26324_IG10
;; size=18 bbWeight=0.23 PerfScore 1.52
-G_M26324_IG12: ; bbWeight=0.11, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
+G_M26324_IG08: ; bbWeight=0.11, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov r11, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[System.String]
cmp qword ptr [rdi], r11
- je SHORT G_M26324_IG14
+ je SHORT G_M26324_IG10
;; size=15 bbWeight=0.11 PerfScore 0.48
-G_M26324_IG13: ; bbWeight=0.05, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref
+G_M26324_IG09: ; bbWeight=0.05, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref
mov r11, 0xD1FFAB1E ; code for <unknown method>
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, isz
+G_M26324_IG10: ; bbWeight=0.23, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
lea rdi, bword ptr [rbx+0x20]
; byrRegs +[rdi]
mov rsi, r15
@@ -163,17 +137,17 @@ 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 SHORT G_M26324_IG20
- ;; size=30 bbWeight=0.23 PerfScore 2.03
-G_M26324_IG15: ; bbWeight=0.13, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ jne G_M26324_IG19
+ ;; size=34 bbWeight=0.23 PerfScore 2.03
+G_M26324_IG11: ; bbWeight=0.13, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rdi, r15
; gcrRegs +[rdi]
call [System.SZGenericArrayEnumeratorBase:MoveNext():ubyte:this]
; gcrRegs -[rdi r15]
;; size=9 bbWeight=0.13 PerfScore 0.43
-G_M26324_IG16: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M26324_IG12: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
test eax, eax
- jne SHORT G_M26324_IG22
+ jne G_M26324_IG21
mov esi, dword ptr [rbx+0x14]
dec esi
mov rdi, rbx
@@ -185,45 +159,64 @@ G_M26324_IG16: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov r14, rax
; gcrRegs +[r14]
test r14, r14
- je G_M26324_IG42
- jmp G_M26324_IG10
- ;; size=39 bbWeight=0.23 PerfScore 3.22
-G_M26324_IG17: ; bbWeight=0.05, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+ je G_M26324_IG41
+ jmp G_M26324_IG06
+ ;; size=43 bbWeight=0.23 PerfScore 3.22
+G_M26324_IG13: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax r14]
+ mov r14, gword ptr [rbx+0x30]
+ ; gcrRegs +[r14]
+ jmp G_M26324_IG05
+ ;; size=9 bbWeight=0.23 PerfScore 0.90
+G_M26324_IG14: ; bbWeight=11.15, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14] +[rdi]
+ mov dword ptr [rdi+0x08], r14d
+ ;; size=4 bbWeight=11.15 PerfScore 11.15
+G_M26324_IG15: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi]
+ 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
+ jmp G_M26324_IG32
+ ;; size=29 bbWeight=1 PerfScore 8.50
+G_M26324_IG16: ; bbWeight=0.05, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r14]
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r11, rax
- jmp G_M26324_IG11
+ jmp G_M26324_IG07
;; size=23 bbWeight=0.05 PerfScore 0.16
-G_M26324_IG18: ; bbWeight=1.29, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
+G_M26324_IG17: ; 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>
; gcrRegs -[rdi]
test eax, eax
- jne SHORT G_M26324_IG24
+ jne SHORT G_M26324_IG23
;; size=17 bbWeight=1.29 PerfScore 5.81
-G_M26324_IG19: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M26324_IG18: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
- jmp G_M26324_IG09
- ;; size=5 bbWeight=4 PerfScore 8.00
-G_M26324_IG20: ; bbWeight=0.09, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M26324_IG15
+ ;; size=2 bbWeight=4 PerfScore 8.00
+G_M26324_IG19: ; bbWeight=0.09, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs +[r15]
mov rdi, r15
; gcrRegs +[rdi]
mov r11, 0xD1FFAB1E ; code for <unknown method>
call [r11]<unknown method>
; gcrRegs -[rdi r15]
- jmp SHORT G_M26324_IG16
- ;; size=18 bbWeight=0.09 PerfScore 0.52
-G_M26324_IG21: ; bbWeight=0.17, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ jmp G_M26324_IG12
+ ;; size=21 bbWeight=0.09 PerfScore 0.52
+G_M26324_IG20: ; bbWeight=0.17, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r15]
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r11, rax
- jmp SHORT G_M26324_IG25
+ jmp SHORT G_M26324_IG24
;; size=20 bbWeight=0.17 PerfScore 0.59
-G_M26324_IG22: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M26324_IG21: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
mov rdi, rbx
; gcrRegs +[rdi]
@@ -231,7 +224,7 @@ G_M26324_IG22: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rdi]
mov eax, 1
;; size=14 bbWeight=0.23 PerfScore 0.79
-G_M26324_IG23: ; bbWeight=0.23, epilog, nogc, extend
+G_M26324_IG22: ; bbWeight=0.23, epilog, nogc, extend
add rsp, 16
pop rbx
pop r13
@@ -240,16 +233,16 @@ G_M26324_IG23: ; bbWeight=0.23, epilog, nogc, extend
pop rbp
ret
;; size=13 bbWeight=0.23 PerfScore 0.85
-G_M26324_IG24: ; bbWeight=0.84, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M26324_IG23: ; bbWeight=0.84, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r15]
mov rdi, qword ptr [rbx]
...
librariestestsnotieredcompilation.run.linux.x64.Release.mch
-8 (-1.83%) : 97920.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)
@@ -17,7 +17,7 @@
; V07 tmp2 [V07,T07] ( 6, 8 ) byref -> [rbp-0x48]
;* 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,T11] ( 4, 4 ) int -> rax
+; V10 tmp5 [V10,T11] ( 2, 3.96) int -> rdi
; V11 tmp6 [V11,T08] ( 4, 8 ) ref -> rdi "argument with side effect"
; V12 cse0 [V12,T10] ( 5, 7 ) int -> r12 "CSE - moderate"
; V13 cse1 [V13,T03] ( 4, 11.88) long -> [rbp-0x40] spill-single-def "CSE - aggressive"
@@ -124,10 +124,10 @@ G_M22994_IG09: ; bbWeight=1.98, gcVars=0000000000000000 {}, gcrefRegs=800
; gcrRegs -[rsi rdi]
; byrRegs -[rdx]
; 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_IG22
;; size=27 bbWeight=1.98 PerfScore 19.30
G_M22994_IG10: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
@@ -215,11 +215,8 @@ G_M22994_IG18: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=800
; byrRegs -[rax]
; gcr arg pop 0
test eax, eax
- sete al
- movzx rax, al
- test eax, eax
- jne SHORT G_M22994_IG22
- ;; size=32 bbWeight=0.02 PerfScore 0.28
+ je SHORT G_M22994_IG22
+ ;; size=24 bbWeight=0.02 PerfScore 0.25
G_M22994_IG19: ; bbWeight=0.04, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
inc r13d
cmp r12d, r13d
@@ -258,7 +255,7 @@ G_M22994_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 436, prolog size 38, PerfScore 119.24, instruction count 129, allocated bytes for code 436 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 428, prolog size 38, PerfScore 119.21, instruction count 126, allocated bytes for code 428 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
; ============================================================
Unwind Info:
-11 (-1.44%) : 149488.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
@@ -27,7 +27,7 @@
;* V16 tmp10 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V18 tmp12 [V18,T00] ( 8, 24 ) ref -> rdx class-hnd exact "Inlining Arg" <System.String>
-; V19 tmp13 [V19,T20] ( 2, 0.04) ubyte -> rdi "Inline return value spill temp"
+;* V19 tmp13 [V19,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp14 [V20 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp15 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V22 tmp16 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -207,10 +207,10 @@ G_M10809_IG11: ; bbWeight=3.96, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRe
cmp r13d, eax
jg SHORT G_M10809_IG08
;; size=35 bbWeight=3.96 PerfScore 33.66
-G_M10809_IG12: ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref
+G_M10809_IG12: ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r14]
- jmp G_M10809_IG17
- ;; size=5 bbWeight=0.50 PerfScore 1.00
+ jmp SHORT G_M10809_IG17
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
G_M10809_IG13: ; bbWeight=0.04, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r14]
mov dword ptr [rbp-0x2C], eax
@@ -250,12 +250,9 @@ G_M10809_IG15: ; bbWeight=0.02, gcrefRegs=D00C {rdx rbx r12 r14 r15}, byr
; gcrRegs -[rax rcx]
; byrRegs -[rdi]
; gcr arg pop 0
- xor edi, edi
test eax, eax
- sete dil
- test edi, edi
- je G_M10809_IG21
- ;; size=61 bbWeight=0.02 PerfScore 0.33
+ jne G_M10809_IG21
+ ;; size=53 bbWeight=0.02 PerfScore 0.30
G_M10809_IG16: ; bbWeight=0.04, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbp-0x38], 0xFFFF
ja G_M10809_IG22
@@ -420,7 +417,7 @@ G_M10809_IG22: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
int3
;; size=83 bbWeight=0 PerfScore 0.00
-; Total bytes of code 762, prolog size 25, PerfScore 120.62, instruction count 192, allocated bytes for code 762 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 751, prolog size 25, PerfScore 120.59, instruction count 189, allocated bytes for code 751 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
; ============================================================
Unwind Info:
-11 (-1.43%) : 152537.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
@@ -27,7 +27,7 @@
;* V16 tmp10 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V18 tmp12 [V18,T00] ( 8, 24 ) ref -> rdx class-hnd exact "Inlining Arg" <System.String>
-; V19 tmp13 [V19,T20] ( 2, 0.04) ubyte -> rdi "Inline return value spill temp"
+;* V19 tmp13 [V19,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp14 [V20 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp15 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V22 tmp16 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -209,10 +209,10 @@ G_M10809_IG11: ; bbWeight=3.96, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRe
cmp r13d, eax
jg SHORT G_M10809_IG08
;; size=35 bbWeight=3.96 PerfScore 33.66
-G_M10809_IG12: ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref
+G_M10809_IG12: ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r14]
- jmp G_M10809_IG17
- ;; size=5 bbWeight=0.50 PerfScore 1.00
+ jmp SHORT G_M10809_IG17
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
G_M10809_IG13: ; bbWeight=0.04, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r14]
mov dword ptr [rbp-0x2C], eax
@@ -252,12 +252,9 @@ G_M10809_IG15: ; bbWeight=0.02, gcrefRegs=D00C {rdx rbx r12 r14 r15}, byr
; gcrRegs -[rax rcx]
; byrRegs -[rdi]
; gcr arg pop 0
- xor edi, edi
test eax, eax
- sete dil
- test edi, edi
- je G_M10809_IG21
- ;; size=61 bbWeight=0.02 PerfScore 0.33
+ jne G_M10809_IG21
+ ;; size=53 bbWeight=0.02 PerfScore 0.30
G_M10809_IG16: ; bbWeight=0.04, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbp-0x38], 0xFFFF
ja G_M10809_IG22
@@ -422,7 +419,7 @@ G_M10809_IG22: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
int3
;; size=83 bbWeight=0 PerfScore 0.00
-; Total bytes of code 768, prolog size 31, PerfScore 121.87, instruction count 194, allocated bytes for code 768 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 757, prolog size 31, PerfScore 121.84, instruction count 191, allocated bytes for code 757 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 9834.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet
1[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 (-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.SegmentedHashSet
1[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
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
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
2
1
0
1
-28
+0
libraries.crossgen2.linux.x64.checked.mch
11
11
0
0
-218
+0
libraries.pmi.linux.x64.checked.mch
24
13
0
11
-183
+0
libraries_tests.run.linux.x64.Release.mch
42
33
3
6
-608
+33
librariestestsnotieredcompilation.run.linux.x64.Release.mch
11
7
0
4
-203
+0
realworld.run.linux.x64.checked.mch
4
2
0
2
-39
+0
smoke_tests.nativeaot.linux.x64.checked.mch
0
0
0
0
-0
+0
96
68
3
25
-1,295
+33
Context information
Collection
Diffed contexts
MinOpts
FullOpts
Missed, base
Missed, diff
benchmarks.run.linux.x64.checked.mch
34,999
3,164
31,835
0 (0.00%)
0 (0.00%)
benchmarks.run_pgo.linux.x64.checked.mch
155,971
58,399
97,572
149 (0.10%)
149 (0.10%)
benchmarks.run_tiered.linux.x64.checked.mch
58,890
44,312
14,578
0 (0.00%)
0 (0.00%)
coreclr_tests.run.linux.x64.checked.mch
694,088
429,241
264,847
325 (0.05%)
325 (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,421
6
295,415
1 (0.00%)
1 (0.00%)
libraries_tests.run.linux.x64.Release.mch
756,825
495,271
261,554
3,118 (0.41%)
3,118 (0.41%)
librariestestsnotieredcompilation.run.linux.x64.Release.mch
304,609
21,873
282,736
6 (0.00%)
6 (0.00%)
realworld.run.linux.x64.checked.mch
33,167
39
33,128
0 (0.00%)
0 (0.00%)
smoke_tests.nativeaot.linux.x64.checked.mch
27,440
9
27,431
0 (0.00%)
0 (0.00%)
2,595,036
1,052,329
1,542,707
3,599 (0.14%)
3,599 (0.14%)
jit-analyze output
benchmarks.run.linux.x64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13736868 (overridden on cmd)
Total bytes of diff: 13736868 (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
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 66799627 (overridden on cmd)
Total bytes of diff: 66799611 (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.63 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-16 (-1.63 % 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.63 % 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
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 458907683 (overridden on cmd)
Total bytes of diff: 458907655 (overridden on cmd)
Total bytes of delta: -28 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-28 : 677717.dasm (-3.73 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 1 unchanged.
Top method improvements (bytes):
-28 (-3.73 % of base) : 677717.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
Top method improvements (percentages):
-28 (-3.73 % of base) : 677717.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
1 total methods with Code Size differences (1 improved, 0 regressed).
libraries.crossgen2.linux.x64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 38668470 (overridden on cmd)
Total bytes of diff: 38668252 (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 : 202570.dasm (-1.47 % of base)
-23 : 204659.dasm (-1.49 % of base)
-10 : 135209.dasm (-0.49 % of base)
-10 : 135208.dasm (-0.60 % of base)
-10 : 127542.dasm (-0.60 % of base)
-10 : 127543.dasm (-0.48 % of base)
-8 : 122495.dasm (-2.22 % of base)
-8 : 44551.dasm (-0.19 % 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) : 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)
-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
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 59972922 (overridden on cmd)
Total bytes of diff: 59972739 (overridden on cmd)
Total bytes of delta: -183 (-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)
-27 : 36963.dasm (-0.67 % of base)
-26 : 260701.dasm (-1.40 % of base)
-12 : 37243.dasm (-0.27 % of base)
-11 : 281851.dasm (-1.34 % of base)
-10 : 138592.dasm (-0.48 % of base)
-10 : 147195.dasm (-0.59 % of base)
-10 : 147196.dasm (-0.49 % of base)
-10 : 138591.dasm (-0.58 % of base)
-8 : 20949.dasm (-0.15 % of base)
-8 : 20946.dasm (-0.18 % of base)
-7 : 84554.dasm (-1.00 % of base)
-6 : 195324.dasm (-0.10 % of base)
13 total files with Code Size differences (13 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)
-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 (-1.40 % of base) : 260701.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object: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)
-11 (-1.34 % of base) : 281851.dasm - System.Net.Cookie:set_Port(System.String):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.58 % of base) : 138591.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase: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)
-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)
-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)
-8 (-0.18 % of base) : 20946.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
-7 (-1.00 % of base) : 84554.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
-6 (-0.10 % of base) : 195324.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
Top method improvements (percentages):
-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)
-11 (-1.34 % of base) : 281851.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-7 (-1.00 % of base) : 84554.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):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)
-8 (-0.18 % of base) : 20946.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.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)
-6 (-0.10 % of base) : 195324.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
13 total methods with Code Size differences (13 improved, 0 regressed).
libraries_tests.run.linux.x64.Release.mch
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 330797007 (overridden on cmd)
Total bytes of diff: 330796432 (overridden on cmd)
Total bytes of delta: -575 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
16 : 38696.dasm (0.17 % of base)
13 : 375790.dasm (1.68 % of base)
4 : 338153.dasm (0.51 % of base)
Top file improvements (bytes):
-51 : 290466.dasm (-1.93 % of base)
-34 : 733262.dasm (-1.32 % of base)
-30 : 98224.dasm (-1.15 % of base)
-30 : 347447.dasm (-1.16 % of base)
-30 : 407618.dasm (-1.16 % of base)
-30 : 369617.dasm (-1.17 % of base)
-30 : 451471.dasm (-1.15 % of base)
-30 : 454105.dasm (-1.15 % of base)
-27 : 242113.dasm (-1.08 % of base)
-27 : 247849.dasm (-1.04 % of base)
-27 : 381820.dasm (-1.09 % of base)
-27 : 602983.dasm (-1.04 % of base)
-26 : 460619.dasm (-0.78 % of base)
-23 : 71201.dasm (-0.18 % of base)
-22 : 726995.dasm (-1.81 % of base)
-17 : 177905.dasm (-1.01 % of base)
-17 : 690002.dasm (-0.99 % of base)
-17 : 137245.dasm (-0.68 % of base)
-17 : 183403.dasm (-0.99 % of base)
-16 : 185770.dasm (-1.29 % of base)
35 total files with Code Size differences (32 improved, 3 regressed), 6 unchanged.
Top method regressions (bytes):
16 (0.17 % 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)
13 (1.68 % of base) : 375790.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
4 (0.51 % of base) : 338153.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
Top method improvements (bytes):
-51 (-1.93 % of base) : 290466.dasm - Interop+procfs:ParseMapsModulesCore(System.Collections.Generic.IEnumerable`1[System.String]):System.Diagnostics.ProcessModuleCollection (Tier1)
-34 (-1.32 % of base) : 733262.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-30 (-1.15 % of base) : 98224.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-30 (-1.16 % of base) : 347447.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-30 (-1.16 % of base) : 407618.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-30 (-1.17 % of base) : 369617.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-30 (-1.15 % of base) : 451471.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-30 (-1.15 % of base) : 454105.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-27 (-1.08 % of base) : 242113.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-27 (-1.04 % of base) : 247849.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-27 (-1.09 % of base) : 381820.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-27 (-1.04 % of base) : 602983.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-26 (-0.78 % of base) : 460619.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (Tier1)
-23 (-0.18 % of base) : 71201.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1)
-22 (-1.81 % of base) : 726995.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
-17 (-1.01 % of base) : 177905.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-17 (-0.99 % of base) : 690002.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-17 (-0.99 % of base) : 183403.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-17 (-0.68 % of base) : 137245.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-16 (-1.29 % of base) : 185770.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
Top method regressions (percentages):
13 (1.68 % of base) : 375790.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
4 (0.51 % of base) : 338153.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
16 (0.17 % 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)
Top method improvements (percentages):
-51 (-1.93 % of base) : 290466.dasm - Interop+procfs:ParseMapsModulesCore(System.Collections.Generic.IEnumerable`1[System.String]):System.Diagnostics.ProcessModuleCollection (Tier1)
-22 (-1.81 % of base) : 726995.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
-34 (-1.32 % of base) : 733262.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-16 (-1.29 % 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.17 % of base) : 369617.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-30 (-1.16 % of base) : 347447.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-30 (-1.16 % of base) : 407618.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-30 (-1.15 % of base) : 451471.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-30 (-1.15 % of base) : 454105.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-30 (-1.15 % of base) : 98224.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-27 (-1.09 % of base) : 381820.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-27 (-1.08 % of base) : 242113.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-27 (-1.04 % of base) : 247849.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-27 (-1.04 % of base) : 602983.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-17 (-1.01 % of base) : 177905.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-17 (-0.99 % of base) : 690002.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-17 (-0.99 % of base) : 183403.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-11 (-0.91 % of base) : 91661.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
-26 (-0.78 % of base) : 460619.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (Tier1)
-17 (-0.68 % of base) : 137245.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
librariestestsnotieredcompilation.run.linux.x64.Release.mch
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 129999045 (overridden on cmd)
Total bytes of diff: 129998842 (overridden on cmd)
Total bytes of delta: -203 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-131 : 300445.dasm (-4.39 % of base)
-26 : 61464.dasm (-1.40 % of base)
-11 : 152537.dasm (-1.43 % of base)
-11 : 149488.dasm (-1.44 % of base)
-10 : 178586.dasm (-0.59 % of base)
-8 : 97920.dasm (-1.83 % of base)
-6 : 97771.dasm (-0.10 % of base)
7 total files with Code Size differences (7 improved, 0 regressed), 4 unchanged.
Top method improvements (bytes):
-131 (-4.39 % of base) : 300445.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
-26 (-1.40 % of base) : 61464.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
-11 (-1.43 % of base) : 152537.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-11 (-1.44 % of base) : 149488.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)
-8 (-1.83 % of base) : 97920.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
-6 (-0.10 % of base) : 97771.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
Top method improvements (percentages):
-131 (-4.39 % of base) : 300445.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
-8 (-1.83 % of base) : 97920.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
-11 (-1.44 % of base) : 149488.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-11 (-1.43 % of base) : 152537.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-26 (-1.40 % of base) : 61464.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):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)
-6 (-0.10 % of base) : 97771.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
7 total methods with Code Size differences (7 improved, 0 regressed).
realworld.run.linux.x64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13194305 (overridden on cmd)
Total bytes of diff: 13194266 (overridden on cmd)
Total bytes of delta: -39 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-23 : 13016.dasm (-0.30 % of base)
-16 : 32808.dasm (-0.25 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 2 unchanged.
Top method improvements (bytes):
-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 (-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)
2 total methods with Code Size differences (2 improved, 0 regressed).
Diffs are based on 2,262,764 contexts (930,876 MinOpts, 1,331,888 FullOpts).
MISSED contexts: 3,201 (0.14%)
Overall (-672 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch
11,180,928
+0
coreclr_tests.run.osx.arm64.checked.mch
485,345,676
-24
libraries.crossgen2.osx.arm64.checked.mch
55,620,496
-108
libraries.pmi.osx.arm64.checked.mch
79,959,756
-124
libraries_tests.run.osx.arm64.Release.mch
312,760,116
-316
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
160,789,980
-80
realworld.run.osx.arm64.checked.mch
15,071,744
-20
FullOpts (-672 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch
11,180,392
+0
coreclr_tests.run.osx.arm64.checked.mch
153,039,220
-24
libraries.crossgen2.osx.arm64.checked.mch
55,618,868
-108
libraries.pmi.osx.arm64.checked.mch
79,838,628
-124
libraries_tests.run.osx.arm64.Release.mch
108,819,612
-316
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
147,652,452
-80
realworld.run.osx.arm64.checked.mch
14,503,340
-20
Example diffs
benchmarks.run.osx.arm64.checked.mch
+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 (-2.33%) : 570536.dasm - ILCompiler.LazyGenericsSupport+Graph
1+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] ( 2, 512 ) long -> x0 "spilling expr"
-;* V64 rat9 [V64,T17] ( 0, 0 ) long -> zero-ref "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_IG17
;; 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_IG14
;; 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]
@@ -231,7 +227,7 @@ G_M1799_IG15: ; bbWeight=5.94, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=
sxtw w0, w24
;; size=4 bbWeight=5.94 PerfScore 2.97
G_M1799_IG16: ; 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_IG17: ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
mov x0, x23
@@ -244,32 +240,24 @@ G_M1799_IG17: ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M1799_IG30
+ cbz w0, G_M1799_IG29
;; size=32 bbWeight=512 PerfScore 3840.00
-G_M1799_IG18: ; bbWeight=128, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x08]
- cmp x0, #48
- ble G_M1799_IG19
- ;; size=24 bbWeight=128 PerfScore 1728.00
-G_M1799_IG19: ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19]
+G_M1799_IG18: ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x20]
...
+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.ArrayBuilder
1[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.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)@@ -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 (-1.07%) : 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)@@ -11,7 +11,7 @@
; V00 arg0 [V00,T29] ( 7, 5.50) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax>
; V01 arg1 [V01,T14] ( 6, 11 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]>
; V02 arg2 [V02,T15] ( 6, 10 ) 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+0x38] 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+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
; V04 loc1 [V04,T20] ( 7, 10.04) ref -> x21 class-hnd exact single-def <<unknown class>>
; V05 loc2 [V05,T31] ( 5, 7 ) int -> x22 single-def
; V06 loc3 [V06,T05] ( 16, 25.04) int -> x23
@@ -19,7 +19,7 @@
; V08 loc5 [V08,T10] ( 10, 16 ) ref -> x26 class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
;* V09 loc6 [V09 ] ( 0, 0 ) ushort -> zero-ref
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax>
-; V11 loc8 [V11 ] ( 4, 4 ) struct (24) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
+; V11 loc8 [V11 ] ( 4, 4 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
; V12 loc9 [V12,T33] ( 3, 6 ) int -> x24 single-def
; V13 loc10 [V13,T06] ( 9, 25 ) int -> x20
; V14 loc11 [V14,T00] ( 10,106 ) ref -> x22 class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbol>
@@ -68,10 +68,10 @@
;* V57 tmp38 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
; V58 tmp39 [V58,T28] ( 2, 8 ) ref -> x2 class-hnd "Inlining Arg" <<unknown class>>
; V59 tmp40 [V59,T19] ( 3, 12 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
-; V60 tmp41 [V60 ] ( 2, 2 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V11.<Parent>k__BackingField (fldOffset=0x0)" P-DEP
-; V61 tmp42 [V61 ] ( 4, 4 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V11.<Node>k__BackingField (fldOffset=0x8)" P-DEP
-; V62 tmp43 [V62 ] ( 2, 2 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V11.<Index>k__BackingField (fldOffset=0x10)" P-DEP
-; V63 tmp44 [V63 ] ( 2, 2 ) int -> [fp+0x34] do-not-enreg[X] addr-exposed "field V11.<Position>k__BackingField (fldOffset=0x14)" P-DEP
+; V60 tmp41 [V60 ] ( 2, 2 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V11.<Parent>k__BackingField (fldOffset=0x0)" P-DEP
+; V61 tmp42 [V61 ] ( 4, 4 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V11.<Node>k__BackingField (fldOffset=0x8)" P-DEP
+; V62 tmp43 [V62 ] ( 2, 2 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V11.<Index>k__BackingField (fldOffset=0x10)" P-DEP
+; V63 tmp44 [V63 ] ( 2, 2 ) int -> [fp+0x24] do-not-enreg[X] addr-exposed "field V11.<Position>k__BackingField (fldOffset=0x14)" P-DEP
;* V64 tmp45 [V64 ] ( 0, 0 ) ref -> zero-ref "field V17.array (fldOffset=0x0)" P-INDEP
;* V65 tmp46 [V65 ] ( 0, 0 ) ref -> zero-ref "field V26.array (fldOffset=0x0)" P-INDEP
;* V66 tmp47 [V66 ] ( 0, 0 ) ref -> zero-ref "field V29.array (fldOffset=0x0)" P-INDEP
@@ -86,29 +86,27 @@
; V75 tmp56 [V75,T16] ( 6, 12 ) ref -> x0 "argument with side effect"
; V76 tmp57 [V76,T17] ( 6, 12 ) ref -> x0 "argument with side effect"
; V77 cse0 [V77,T01] ( 7, 88 ) long -> x23 "CSE - aggressive"
-; TEMP_01 byref -> [fp+0x18]
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M1087_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
- stp x19, x20, [sp, #0x50]
- stp x21, x22, [sp, #0x60]
- stp x23, x24, [sp, #0x70]
- stp x25, x26, [sp, #0x80]
+ stp fp, lr, [sp, #-0x80]!
+ stp x19, x20, [sp, #0x40]
+ stp x21, x22, [sp, #0x50]
+ stp x23, x24, [sp, #0x60]
+ stp x25, x26, [sp, #0x70]
mov fp, sp
- add x9, fp, #24
+ add x9, fp, #16
movi v16.16b, #0
stp q16, q16, [x9]
stp xzr, xzr, [x9, #0x20]
- str xzr, [x9, #0x30]
mov x21, x0
; gcrRegs +[x21]
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=56 bbWeight=1 PerfScore 11.00
+ ;; size=52 bbWeight=1 PerfScore 10.00
G_M1087_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldrsb wzr, [x21]
add x22, x21, #40
@@ -179,7 +177,7 @@ G_M1087_IG05: ; bbWeight=0.50, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=4
G_M1087_IG06: ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
; byrRegs -[x22]
- add x8, fp, #56 // [V03 loc0]
+ add x8, fp, #40 // [V03 loc0]
mov x0, x23
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax:get_Arguments():Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]:this
@@ -189,7 +187,7 @@ G_M1087_IG06: ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
ldr wzr, [x0]
blr x1
; gcrRegs -[x0 x23]
- ldrsw x1, [fp, #0x38] // [V03 loc0]
+ ldrsw x1, [fp, #0x28] // [V03 loc0]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -197,7 +195,7 @@ G_M1087_IG06: ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
; gcrRegs +[x0]
mov x21, x0
; gcrRegs +[x21]
- ldr w0, [fp, #0x38] // [V03 loc0]
+ ldr w0, [fp, #0x28] // [V03 loc0]
; gcrRegs -[x0]
sub w22, w0, #1
mov w23, wzr
@@ -207,7 +205,7 @@ G_M1087_IG06: ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
ble G_M1087_IG15
;; size=84 bbWeight=1 PerfScore 23.00
G_M1087_IG07: ; bbWeight=3.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- add x0, fp, #56 // [V03 loc0]
+ add x0, fp, #40 // [V03 loc0]
mov w2, w23
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -237,7 +235,7 @@ G_M1087_IG08: ; bbWeight=1.98, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
movk x0, #1 LSL #32
cmp x8, x0
bne G_M1087_IG41
- add x8, fp, #32 // [V11 loc8]
+ add x8, fp, #16 // [V11 loc8]
mov x0, x24
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax:get_Identifier():Microsoft.CodeAnalysis.SyntaxToken:this
@@ -246,7 +244,7 @@ G_M1087_IG08: ; bbWeight=1.98, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
- ldr x0, [fp, #0x28] // [V61 tmp42]
+ ldr x0, [fp, #0x18] // [V61 tmp42]
; gcrRegs +[x0]
cbnz x0, G_M1087_IG09
mov x25, xzr
@@ -385,7 +383,7 @@ G_M1087_IG14: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
;; size=4 bbWeight=1 PerfScore 1.00
G_M1087_IG15: ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
- add x0, fp, #56 // [V03 loc0]
+ add x0, fp, #40 // [V03 loc0]
mov w2, w23
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -415,7 +413,7 @@ G_M1087_IG16: ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
movk x0, #1 LSL #32
cmp x8, x0
bne G_M1087_IG41
- add x8, fp, #32 // [V11 loc8]
+ add x8, fp, #16 // [V11 loc8]
mov x0, x24
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax:get_Identifier():Microsoft.CodeAnalysis.SyntaxToken:this
@@ -424,7 +422,7 @@ G_M1087_IG16: ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
- ldr x0, [fp, #0x28] // [V61 tmp42]
+ ldr x0, [fp, #0x18] // [V61 tmp42]
; gcrRegs +[x0]
cbnz x0, G_M1087_IG17
mov x25, xzr
@@ -465,9 +463,6 @@ G_M1087_IG19: ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x25]
; byrRegs -[x14]
- add x14, x26, #48
- ; byrRegs +[x14]
- str x14, [fp, #0x18] // [TEMP_01]
mov x0, x24
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:get_SyntaxTree():Microsoft.CodeAnalysis.SyntaxTree:this
@@ -475,7 +470,6 @@ G_M1087_IG19: ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1
- ; byrRegs -[x14]
mov x1, x24
; gcrRegs +[x1]
ldr x2, [x0]
@@ -483,7 +477,7 @@ G_M1087_IG19: ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
ldr x2, [x2, #0x38]
blr x2
; gcrRegs -[x1 x24]
- ldr x14, [fp, #0x18] // [TEMP_01]
+ add x14, x26, #48
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
@@ -491,7 +485,7 @@ G_M1087_IG19: ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
; gcrRegs -[x0 x15]
; byrRegs -[x14]
b G_M1087_IG21
- ;; size=104 bbWeight=0.02 PerfScore 0.57
+ ;; size=96 bbWeight=0.02 PerfScore 0.51
G_M1087_IG20: ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
; gcrRegs -[x26] +[x24]
movz x0, #0xD1FFAB1E
@@ -507,9 +501,6 @@ G_M1087_IG20: ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
str x0, [x26, #0x28]
- add x14, x26, #48
- ; byrRegs +[x14]
- str x14, [fp, #0x18] // [TEMP_01]
mov x0, x24
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:get_SyntaxTree():Microsoft.CodeAnalysis.SyntaxTree:this
@@ -517,7 +508,6 @@ G_M1087_IG20: ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1
- ; byrRegs -[x14]
mov x1, x24
; gcrRegs +[x1]
ldr x2, [x0]
@@ -525,14 +515,14 @@ G_M1087_IG20: ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
ldr x2, [x2, #0x38]
blr x2
; gcrRegs -[x1 x24]
- ldr x14, [fp, #0x18] // [TEMP_01]
+ add x14, x26, #48
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ;; size=104 bbWeight=0.02 PerfScore 0.56
+ ;; size=96 bbWeight=0.02 PerfScore 0.50
G_M1087_IG21: ; bbWeight=0.04, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
ldr w14, [x21, #0x08]
cmp w23, w14
@@ -761,11 +751,11 @@ G_M1087_IG36: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
;; size=12 bbWeight=4 PerfScore 8.00
G_M1087_IG37: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19 x21]
- ldp x25, x26, [sp, #0x80]
- ldp x23, x24, [sp, #0x70]
- ldp x21, x22, [sp, #0x60]
- ldp x19, x20, [sp, #0x50]
- ldp fp, lr, [sp], #0x90
+ ldp x25, x26, [sp, #0x70]
+ ldp x23, x24, [sp, #0x60]
+ ldp x21, x22, [sp, #0x50]
+ ldp x19, x20, [sp, #0x40]
+ ldp fp, lr, [sp], #0x80
ret lr
;; size=24 bbWeight=1 PerfScore 6.00
G_M1087_IG38: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
@@ -816,7 +806,7 @@ G_M1087_IG43: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, by
brk_unix #0
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1868, prolog size 44, PerfScore 1133.05, instruction count 467, allocated bytes for code 1868 (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 1848, prolog size 40, PerfScore 1131.93, instruction count 462, allocated bytes for code 1848 (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:
@@ -827,7 +817,7 @@ Unwind Info:
...
-32 (-0.78%) : 137541.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport
@@ -14,15 +14,15 @@
; V03 loc1 [V03,T43] ( 7, 5.02) ref -> x23 class-hnd exact single-def <<unknown class>>
; V04 loc2 [V04,T52] ( 4, 3 ) ref -> x27 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxTree>
; V05 loc3 [V05,T14] ( 14, 13 ) ref -> x28 class-hnd exact single-def <<unknown class>>
-; V06 loc4 [V06 ] ( 5, 5.50) struct ( 8) [fp+0xC8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
+; V06 loc4 [V06 ] ( 5, 5.50) struct ( 8) [fp+0xB8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
;* V07 loc5 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Threading.CancellationToken>
; V08 loc6 [V08,T42] ( 5, 5.50) int -> x26 single-def
-; V09 loc7 [V09,T04] ( 12, 18.52) int -> [fp+0xC4]
-; V10 loc8 [V10 ] ( 12, 14 ) struct (24) [fp+0xA8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]>
+; V09 loc7 [V09,T04] ( 12, 18.52) int -> [fp+0xB4]
+; V10 loc8 [V10 ] ( 12, 14 ) struct (24) [fp+0x98] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]>
; V11 loc9 [V11,T15] ( 12, 12 ) ref -> x21 must-init class-hnd exact <Microsoft.CodeAnalysis.VisualBasic.OptionsValidator+_Closure$__0-0>
;* V12 loc10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
-; V13 loc11 [V13,T22] ( 10, 10 ) ref -> [fp+0x88] class-hnd <<unknown class>>
-; V14 loc12 [V14,T37] ( 6, 6 ) ref -> [fp+0x80] class-hnd <<unknown class>>
+; V13 loc11 [V13,T22] ( 10, 10 ) ref -> [fp+0x78] class-hnd <<unknown class>>
+; V14 loc12 [V14,T37] ( 6, 6 ) ref -> [fp+0x70] class-hnd <<unknown class>>
;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V16 tmp1 [V16,T26] ( 5, 10 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V17 tmp2 [V17 ] ( 0, 0 ) ref -> zero-ref single-def
@@ -38,14 +38,14 @@
; V27 tmp12 [V27,T63] ( 2, 2 ) ref -> x2 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions>
; V28 tmp13 [V28,T53] ( 3, 3 ) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V29 tmp14 [V29,T16] ( 6, 12 ) ref -> registers class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.OptionsValidator+_Closure$__0-0>
-; V30 tmp15 [V30,T06] ( 8, 16 ) ref -> [fp+0x78] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
+; V30 tmp15 [V30,T06] ( 8, 16 ) ref -> [fp+0x68] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
; V31 tmp16 [V31,T07] ( 8, 16 ) ref -> x0 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V32 tmp17 [V32 ] ( 0, 0 ) ref -> zero-ref
; V33 tmp18 [V33,T02] ( 10, 20 ) ref -> x2 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V34 tmp19 [V34 ] ( 0, 0 ) ref -> zero-ref
; V35 tmp20 [V35,T38] ( 6, 6 ) ref -> x2
-; V36 tmp21 [V36,T00] ( 16, 32 ) ref -> [fp+0x70] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.DiagnosticInfo>
-; V37 tmp22 [V37,T03] ( 10, 20 ) ref -> [fp+0x68] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.VBDiagnostic>
+; V36 tmp21 [V36,T00] ( 16, 32 ) ref -> [fp+0x60] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.DiagnosticInfo>
+; V37 tmp22 [V37,T03] ( 10, 20 ) ref -> [fp+0x58] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.VBDiagnostic>
; V38 tmp23 [V38,T54] ( 3, 3 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
; V39 tmp24 [V39,T55] ( 3, 3 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V40 tmp25 [V40 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
@@ -54,9 +54,9 @@
;* V43 tmp28 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
;* V44 tmp29 [V44 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
;* V45 tmp30 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V46 tmp31 [V46,T47] ( 5, 5 ) byref -> [fp+0x60] spill-single-def "Inlining Arg"
-; V47 tmp32 [V47,T57] ( 4, 2 ) ref -> [fp+0x58] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V48 tmp33 [V48,T58] ( 4, 2 ) ref -> [fp+0x50] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+; V46 tmp31 [V46,T47] ( 5, 5 ) byref -> [fp+0x50] spill-single-def "Inlining Arg"
+; V47 tmp32 [V47,T57] ( 4, 2 ) ref -> [fp+0x48] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V48 tmp33 [V48,T58] ( 4, 2 ) ref -> [fp+0x40] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
; V49 tmp34 [V49,T64] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
; V50 tmp35 [V50,T59] ( 4, 2 ) int -> x26 "Inline return value spill temp"
; V51 tmp36 [V51,T65] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
@@ -64,7 +64,7 @@
;* V53 tmp38 [V53,T79] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
; V54 tmp39 [V54,T48] ( 4, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
; V55 tmp40 [V55,T60] ( 4, 2 ) int -> x26 "Inline stloc first use temp"
-; V56 tmp41 [V56,T10] ( 15, 14.02) ref -> [fp+0x48] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
+; V56 tmp41 [V56,T10] ( 15, 14.02) ref -> [fp+0x38] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
; V57 tmp42 [V57,T11] ( 16, 14 ) ref -> x3 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
; V58 tmp43 [V58,T82] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V59 tmp44 [V59,T27] ( 6, 9 ) ref -> x1 "CASTCLASS eval op1"
@@ -74,27 +74,27 @@
; V63 tmp48 [V63,T29] ( 6, 8 ) ref -> registers class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
; V64 tmp49 [V64,T31] ( 4, 8 ) ref -> x4 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
;* V65 tmp50 [V65 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
-; V66 tmp51 [V66 ] ( 11, 10.02) struct (24) [fp+0x90] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
+; V66 tmp51 [V66 ] ( 11, 10.02) struct (24) [fp+0x80] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
;* V67 tmp52 [V67 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
;* V68 tmp53 [V68 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
-; V69 tmp54 [V69,T17] ( 6, 12 ) ref -> [fp+0x40] class-hnd exact "Inlining Arg" <<unknown class>>
-; V70 tmp55 [V70,T32] ( 4, 8 ) ref -> [fp+0x38] class-hnd "Inlining Arg" <System.Object[]>
+; V69 tmp54 [V69,T17] ( 6, 12 ) ref -> [fp+0x30] class-hnd exact "Inlining Arg" <<unknown class>>
+; V70 tmp55 [V70,T32] ( 4, 8 ) ref -> [fp+0x28] class-hnd "Inlining Arg" <System.Object[]>
;* V71 tmp56 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
; V72 tmp57 [V72,T23] ( 10, 10 ) ref -> x0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
; V73 tmp58 [V73,T83] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V74 tmp59 [V74,T18] ( 6, 12 ) ref -> x1 "CASTCLASS eval op1"
; V75 tmp60 [V75,T30] ( 6, 8 ) long -> x3 "fgMakeTemp is creating a new local variable"
-; V76 tmp61 [V76,T05] ( 10, 18 ) ref -> [fp+0x30] class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
+; V76 tmp61 [V76,T05] ( 10, 18 ) ref -> [fp+0x20] class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
; V77 tmp62 [V77,T33] ( 4, 8 ) ref -> x3 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
; V78 tmp63 [V78,T34] ( 4, 8 ) ref -> x0 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Location>
; V79 tmp64 [V79,T84] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V80 tmp65 [V80,T01] ( 12, 24 ) ref -> [fp+0x28] class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V81 tmp66 [V81,T35] ( 4, 8 ) ref -> [fp+0x20] class-hnd exact "Inlining Arg" <System.String>
+; V80 tmp65 [V80,T01] ( 12, 24 ) ref -> [fp+0x18] class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V81 tmp66 [V81,T35] ( 4, 8 ) ref -> [fp+0x10] class-hnd exact "Inlining Arg" <System.String>
; V82 tmp67 [V82,T19] ( 6, 12 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>>
; V83 tmp68 [V83,T36] ( 7, 6.02) ref -> x3 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport[]>
; V84 tmp69 [V84,T24] ( 10, 10 ) int -> x2 "Inline stloc first use temp"
; V85 tmp70 [V85,T20] ( 6, 12 ) ref -> x1 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
-; V86 tmp71 [V86 ] ( 5, 5.50) ref -> [fp+0xC8] do-not-enreg[X] addr-exposed "field V06._node (fldOffset=0x0)" P-DEP
+; V86 tmp71 [V86 ] ( 5, 5.50) ref -> [fp+0xB8] do-not-enreg[X] addr-exposed "field V06._node (fldOffset=0x0)" P-DEP
;* V87 tmp72 [V87,T80] ( 0, 0 ) ref -> zero-ref single-def "field V07._source (fldOffset=0x0)" P-INDEP
;* V88 tmp73 [V88 ] ( 0, 0 ) ref -> zero-ref "field V40._source (fldOffset=0x0)" P-INDEP
;* V89 tmp74 [V89 ] ( 0, 0 ) ref -> zero-ref "field V41._node (fldOffset=0x0)" P-INDEP
@@ -120,33 +120,27 @@
; V109 cse5 [V109,T12] ( 14, 14 ) long -> x22 "CSE - aggressive"
; V110 cse6 [V110,T41] ( 3, 5.94) int -> x14 "CSE - moderate"
; V111 rat0 [V111,T78] ( 2, 1 ) long -> x0 "Spilling to split statement for tree"
-; TEMP_01 byref -> [fp+0x18]
;
-; Lcl frame size = 192
+; Lcl frame size = 176
G_M28747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #0xD1FFAB1E]!
- stp x19, x20, [sp, #0xD0]
- stp x21, x22, [sp, #0xE0]
- stp x23, x24, [sp, #0xF0]
- stp x25, x26, [sp, #0xD1FFAB1E]
+ stp x19, x20, [sp, #0xC0]
+ stp x21, x22, [sp, #0xD0]
+ stp x23, x24, [sp, #0xE0]
+ stp x25, x26, [sp, #0xF0]
stp x27, x28, [sp, #0xD1FFAB1E]
mov fp, sp
- add x9, fp, #24
+ add x9, fp, #128
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, #0xA0]
- str xzr, [x9, #0xB0]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
; gcrRegs +[x20]
mov x21, xzr
- ;; size=76 bbWeight=1 PerfScore 16.00
+ ;; size=56 bbWeight=1 PerfScore 11.00
G_M28747_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21]
movz x22, #0xD1FFAB1E
@@ -364,11 +358,11 @@ G_M28747_IG09: ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
ldrsb wzr, [x26]
add x2, x26, #48
; byrRegs +[x2]
- str x2, [fp, #0x60] // [V46 tmp31]
+ str x2, [fp, #0x50] // [V46 tmp31]
; GC ptr vars +{V46}
ldr x3, [x2]
; gcrRegs +[x3]
- str x3, [fp, #0x58] // [V47 tmp32]
+ str x3, [fp, #0x48] // [V47 tmp32]
; GC ptr vars +{V47}
cbnz x3, G_M28747_IG10
ldr x0, [x26, #0x18]
@@ -381,7 +375,7 @@ G_M28747_IG09: ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
; byrRegs -[x2]
mov x2, x0
; gcrRegs +[x2]
- str x2, [fp, #0x50] // [V48 tmp33]
+ str x2, [fp, #0x40] // [V48 tmp33]
; GC ptr vars +{V48}
cbz x2, G_M28747_IG10
mov x0, x26
@@ -396,7 +390,7 @@ G_M28747_IG09: ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
sxtw w2, w0
mov x1, x26
; gcrRegs +[x1]
- ldr x0, [fp, #0x50] // [V48 tmp33]
+ ldr x0, [fp, #0x40] // [V48 tmp33]
; gcrRegs +[x0]
ldr x3, [x0]
ldr x3, [x3, #0x68]
@@ -406,7 +400,7 @@ G_M28747_IG09: ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
; gcrRegs -[x1 x26]
mov x1, x0
; gcrRegs +[x1]
- ldr x26, [fp, #0x60] // [V46 tmp31]
+ ldr x26, [fp, #0x50] // [V46 tmp31]
; byrRegs +[x26]
cbz x26, G_M28747_IG68
mov x0, x26
@@ -421,19 +415,19 @@ G_M28747_IG09: ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
mov x26, x3
; gcrRegs +[x26]
; byrRegs -[x26]
- str x26, [fp, #0x58] // [V47 tmp32]
+ str x26, [fp, #0x48] // [V47 tmp32]
; GC ptr vars +{V47}
;; size=300 bbWeight=0.50 PerfScore 43.00
G_M28747_IG10: ; bbWeight=0.50, gcVars=00000000000000000200000000000000 {V47}, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0 x3 x26]
; GC ptr vars -{V46 V47}
- ldr x3, [fp, #0x58] // [V47 tmp32]
+ ldr x3, [fp, #0x48] // [V47 tmp32]
; gcrRegs +[x3]
- str x3, [fp, #0xC8] // [V86 tmp71]
- ldr x0, [fp, #0xC8] // [V86 tmp71]
+ str x3, [fp, #0xB8] // [V86 tmp71]
+ ldr x0, [fp, #0xB8] // [V86 tmp71]
; gcrRegs +[x0]
cbz x0, G_M28747_IG13
- ldr x0, [fp, #0xC8] // [V86 tmp71]
+ ldr x0, [fp, #0xB8] // [V86 tmp71]
ldr x0, [x0, #0x18]
mov x1, x0
; gcrRegs +[x1]
@@ -471,8 +465,8 @@ G_M28747_IG14: ; bbWeight=0.50, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x
ble G_M28747_IG38
;; size=24 bbWeight=0.50 PerfScore 3.25
G_M28747_IG15: ; bbWeight=3.96, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x28}, byrefRegs=0000 {}, byref, isz
- add x0, fp, #200 // [V06 loc4]
- str w3, [fp, #0xC4] // [V09 loc7]
+ add x0, fp, #184 // [V06 loc4]
+ str w3, [fp, #0xB4] // [V09 loc7]
mov w2, w3
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -483,7 +477,7 @@ G_M28747_IG15: ; bbWeight=3.96, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x
ldr x4, [x4]
blr x4
; gcrRegs +[x0]
- add x8, fp, #168 // [V10 loc8]
+ add x8, fp, #152 // [V10 loc8]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax:get_ImportsClauses():Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -523,7 +517,7 @@ G_M28747_IG16: ; bbWeight=1.98, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x
G_M28747_IG17: ; bbWeight=1.98, gcrefRegs=18980004 {x2 x19 x20 x23 x27 x28}, byrefRegs=0000 {}, byref, isz
mov x21, x2
; gcrRegs +[x21]
- ldr x3, [fp, #0xB0] // [V10 loc8+0x08]
+ ldr x3, [fp, #0xA0] // [V10 loc8+0x08]
; gcrRegs +[x3]
cbz x3, G_M28747_IG73
ldr x4, [x3, #0x18]
@@ -562,7 +556,7 @@ G_M28747_IG20: ; bbWeight=1.98, gcrefRegs=18B80004 {x2 x19 x20 x21 x23 x2
;; size=8 bbWeight=1.98 PerfScore 2.97
G_M28747_IG21: ; bbWeight=1.98, gcrefRegs=18B80008 {x3 x19 x20 x21 x23 x27 x28}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2 x4] +[x3]
- ldr w0, [fp, #0xA8] // [V10 loc8]
+ ldr w0, [fp, #0x98] // [V10 loc8]
cbz w0, G_M28747_IG73
mov x0, x3
; gcrRegs +[x0]
@@ -604,15 +598,15 @@ G_M28747_IG25: ; bbWeight=1.98, gcrefRegs=18B80010 {x4 x19 x20 x21 x23 x2
; gcrRegs -[x2]
ldrsb wzr, [x4]
ldr w2, [x4, #0x20]
- str x4, [fp, #0x48] // [V56 tmp41]
+ str x4, [fp, #0x38] // [V56 tmp41]
; GC ptr vars +{V56}
mov x3, x4
; gcrRegs +[x3]
...
-8 (-0.73%) : 308247.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
@@ -15,9 +15,9 @@
; V04 loc2 [V04,T01] ( 11, 16.58) int -> x24
; V05 loc3 [V05 ] ( 8, 10 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T23] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Net.CookieException>
-; V08 tmp2 [V08,T24] ( 3, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp" <System.Net.CookieException>
-; V09 tmp3 [V09,T25] ( 3, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp" <System.Net.CookieException>
+; V07 tmp1 [V07,T22] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Net.CookieException>
+; V08 tmp2 [V08,T23] ( 3, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp" <System.Net.CookieException>
+; V09 tmp3 [V09,T24] ( 3, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp" <System.Net.CookieException>
;* V10 tmp4 [V10,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V11 tmp5 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V12 tmp6 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -27,7 +27,7 @@
;* V16 tmp10 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V18 tmp12 [V18,T00] ( 8, 24 ) ref -> x26 class-hnd exact "Inlining Arg" <System.String>
-; V19 tmp13 [V19,T22] ( 2, 0.04) ubyte -> x14 "Inline return value spill temp"
+;* V19 tmp13 [V19,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp14 [V20 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp15 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V22 tmp16 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -50,15 +50,15 @@
;* V39 tmp33 [V39 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP
;* V40 tmp34 [V40 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
; V41 tmp35 [V41,T04] ( 4, 8 ) ref -> x0 "argument with side effect"
-; V42 tmp36 [V42,T26] ( 2, 0 ) ref -> x21 "argument with side effect"
-; V43 tmp37 [V43,T27] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V44 tmp38 [V44,T28] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V45 tmp39 [V45,T29] ( 2, 0 ) ref -> x21 "argument with side effect"
-; V46 tmp40 [V46,T30] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V47 tmp41 [V47,T31] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V48 tmp42 [V48,T32] ( 2, 0 ) ref -> x21 single-def "argument with side effect"
-; V49 tmp43 [V49,T33] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V50 tmp44 [V50,T34] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V42 tmp36 [V42,T25] ( 2, 0 ) ref -> x21 "argument with side effect"
+; V43 tmp37 [V43,T26] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V44 tmp38 [V44,T27] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V45 tmp39 [V45,T28] ( 2, 0 ) ref -> x21 "argument with side effect"
+; V46 tmp40 [V46,T29] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V47 tmp41 [V47,T30] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V48 tmp42 [V48,T31] ( 2, 0 ) ref -> x21 single-def "argument with side effect"
+; V49 tmp43 [V49,T32] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V50 tmp44 [V50,T33] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V51 cse0 [V51,T08] ( 6, 6 ) int -> x22 "CSE - aggressive"
; V52 cse1 [V52,T20] ( 2, 1 ) ref -> x15 "CSE - aggressive"
; V53 cse2 [V53,T10] ( 4, 4.54) byref -> x25 hoist multi-def "CSE - aggressive"
@@ -282,10 +282,8 @@ G_M10809_IG15: ; bbWeight=0.02, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
; gcrRegs -[x3]
; byrRegs -[x0 x27]
; gcr arg pop 0
- cmp w0, #0
- cset x14, eq
- cbz w14, G_M10809_IG24
- ;; size=80 bbWeight=0.02 PerfScore 0.38
+ cbnz w0, G_M10809_IG24
+ ;; size=72 bbWeight=0.02 PerfScore 0.36
G_M10809_IG16: ; bbWeight=0.04, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
ldr w14, [fp, #0x18] // [V05 loc3]
mov w15, #0xD1FFAB1E
@@ -524,7 +522,7 @@ G_M10809_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_unix #0
;; size=136 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1096, prolog size 36, PerfScore 149.37, instruction count 274, allocated bytes for code 1096 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 1088, prolog size 36, PerfScore 149.35, instruction count 272, allocated bytes for code 1088 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -535,7 +533,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 274 (0x00112) Actual length = 1096 (0x000448)
+ Function Length : 272 (0x00110) Actual length = 1088 (0x000440)
---- 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.SegmentedHashSet
1[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.SegmentedHashSet
1[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.ConcurrentDictionary
2[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 (-0.60%) : 323886.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
@@ -169,7 +169,6 @@
; V157 cse16 [V157,T59] ( 3, 0.10) int -> x27 "CSE - conservative"
; V158 cse17 [V158,T67] ( 2, 0.00) int -> x1 "CSE - conservative"
; V159 rat0 [V159,T26] ( 5, 7.12) ref -> x21 class-hnd "replacement local" <System.Collections.Generic.List`1[System.String]>
-; TEMP_01 byref -> [fp-0x90]
;
; Lcl frame size = 64
@@ -182,11 +181,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] // [V140 PSPSym]
movz x2, #0xD1FFAB1E
@@ -198,7 +194,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]
@@ -1256,9 +1252,6 @@ G_M8186_IG85: ; bbWeight=0.03, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
;; size=48 bbWeight=0.03 PerfScore 0.51
G_M8186_IG86: ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x26 x28]
- add x14, x20, #32
- ; byrRegs +[x14]
- str x14, [fp, #-0x90] // [TEMP_01]
mov x0, x26
; gcrRegs +[x0]
mov x1, xzr
@@ -1267,7 +1260,6 @@ G_M8186_IG86: ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byre
ldr x2, [x2, #0x28]
blr x2
; gcrRegs -[x26]
- ; byrRegs -[x14]
; gcr arg pop 0
ldr w2, [x28, #0x08]
mov x1, x28
@@ -1280,7 +1272,7 @@ G_M8186_IG86: ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byre
blr x3
; gcrRegs -[x1 x28]
; gcr arg pop 0
- ldr x14, [fp, #-0x90] // [TEMP_01]
+ add x14, x20, #32
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
@@ -1295,7 +1287,7 @@ G_M8186_IG86: ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byre
; gcrRegs -[x15]
cmp w14, w15
blt G_M8186_IG90
- ;; size=100 bbWeight=0.00 PerfScore 0.01
+ ;; size=92 bbWeight=0.00 PerfScore 0.01
G_M8186_IG87: ; bbWeight=0.03, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
str xzr, [x20, #0x20]
@@ -1507,7 +1499,7 @@ G_M8186_IG105: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=32 bbWeight=0 PerfScore 0.00
-; Total bytes of code 3360, prolog size 88, PerfScore 759.58, instruction count 840, allocated bytes for code 3360 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
+; Total bytes of code 3340, prolog size 76, PerfScore 757.58, instruction count 835, allocated bytes for code 3340 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
; ============================================================
Unwind Info:
@@ -1518,7 +1510,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 804 (0x00324) Actual length = 3216 (0x000c90)
+ Function Length : 799 (0x0031f) Actual length = 3196 (0x000c7c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-0.56%) : 159796.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.31) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T01] ( 15, 6.30) 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.78) 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.51) int -> x24 single-def
-; V07 loc3 [V07,T33] ( 7, 2.34) int -> x25
-; V08 loc4 [V08,T24] ( 5, 3.07) byref -> x26
-; V09 loc5 [V09,T13] ( 13, 5.28) int -> x27
-; V10 loc6 [V10,T35] ( 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.51) int -> x24 single-def
+; V07 loc3 [V07,T31] ( 7, 2.34) int -> x25
+; V08 loc4 [V08,T22] ( 5, 3.07) byref -> x26
+; V09 loc5 [V09,T12] ( 13, 5.28) int -> x27
+; V10 loc6 [V10,T33] ( 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,T38] ( 3, 2 ) int -> x24
+; V14 tmp1 [V14,T36] ( 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,T39] ( 3, 2 ) int -> x0 "guarded devirt return temp"
+; V38 tmp25 [V38,T66] ( 4, 0 ) long -> x11 "VirtualCall with runtime lookup"
+; V39 tmp26 [V39,T37] ( 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.TransformNode`2[System.ValueTuple`2[Microsoft.CodeAnalysis.SyntaxTree,int],System.ValueTuple`2[Microsoft.CodeAnalysis.SyntaxTree,int]]>
-; V42 tmp29 [V42,T55] ( 3, 1.00) int -> x2 "guarded devirt return temp"
-; V43 tmp30 [V43,T19] ( 7, 4.27) 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.27) 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.39) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V04._items (fldOffset=0x0)" P-DEP
; V72 tmp59 [V72 ] ( 17, 6.78) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V04._length (fldOffset=0x8)" P-DEP
-; V73 tmp60 [V73,T40] ( 2, 2 ) ref -> x0 single-def "field V46._items (fldOffset=0x0)" P-INDEP
-; V74 tmp61 [V74,T41] ( 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,T38] ( 2, 2 ) ref -> x0 single-def "field V46._items (fldOffset=0x0)" P-INDEP
+; V74 tmp61 [V74,T39] ( 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.78) long -> x1 "argument with side effect"
-; V80 tmp67 [V80,T45] ( 2, 2.00) long -> x1 "argument with side effect"
-; V81 tmp68 [V81,T49] ( 2, 1.78) 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,T37] ( 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,T46] ( 2, 2.00) long -> x1 "argument with side effect"
+; V79 tmp66 [V79,T20] ( 2, 3.78) long -> x1 "argument with side effect"
+; V80 tmp67 [V80,T42] ( 2, 2.00) long -> x1 "argument with side effect"
+; V81 tmp68 [V81,T46] ( 2, 1.78) 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,T35] ( 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,T43] ( 2, 2.00) long -> x1 "argument with side effect"
; V93 cse0 [V93,T03] ( 31, 6.22) 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"
+; 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] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V100 rat6 [V100,T42] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V101 rat7 [V101,T11] ( 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,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V105 rat11 [V105,T21] ( 3, 3.78) long -> x1 "runtime lookup"
-; V106 rat12 [V106,T12] ( 3, 5.29) long -> x1 "fgMakeTemp is creating a new local variable"
-; V107 rat13 [V107,T43] ( 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,T47] ( 3, 1.96) long -> x0 "Spilling to split statement for tree"
-; V110 rat16 [V110,T48] ( 3, 1.78) long -> x1 "runtime lookup"
-; V111 rat17 [V111,T31] ( 3, 2.49) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V112 rat18 [V112,T57] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V113 rat19 [V113,T32] ( 0, 0 ) long -> zero-ref "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,T44] ( 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] ( 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,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V102 rat8 [V102,T19] ( 3, 3.78) long -> x1 "runtime lookup"
+; V103 rat9 [V103,T11] ( 3, 5.29) long -> x1 "fgMakeTemp is creating a new local variable"
+; V104 rat10 [V104,T40] ( 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,T44] ( 3, 1.96) long -> x0 "Spilling to split statement for tree"
+; V107 rat13 [V107,T45] ( 3, 1.78) long -> x1 "runtime lookup"
+; V108 rat14 [V108,T29] ( 3, 2.49) 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,T41] ( 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] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V138 rat44 [V138,T36] ( 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] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V135 rat41 [V135,T34] ( 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_IG45
+ cbz x20, G_M33517_IG46
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_IG46
+ cbnz x23, G_M33517_IG47
ldr x0, [x20]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- bne G_M33517_IG11
+ bne G_M33517_IG13
;; size=32 bbWeight=1 PerfScore 10.00
G_M33517_IG05: ; bbWeight=0.70, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
mov x0, x20
@@ -215,7 +212,7 @@ G_M33517_IG07: ; bbWeight=1, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefReg
...
-12 (-0.36%) : 280433.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
@@ -196,7 +196,6 @@
; V184 cse19 [V184,T81] ( 5, 0.04) int -> x0 multi-def "CSE - conservative"
; V185 cse20 [V185,T82] ( 5, 0.04) int -> x0 multi-def "CSE - conservative"
; V186 rat0 [V186,T17] ( 6, 8 ) ref -> x21 class-hnd "replacement local" <<unknown class>>
-; TEMP_01 byref -> [fp-0xA0]
;
; Lcl frame size = 80
@@ -209,11 +208,10 @@ G_M8186_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x27, x28, [sp, #0x90]
stp fp, lr, [sp, #0xA0]
add fp, sp, #160
- sub x9, fp, #160
+ sub x9, fp, #136
movi v16.16b, #0
stp q16, q16, [x9]
- stp q16, q16, [x9, #0x20]
- str xzr, [x9, #0x40]
+ stp xzr, xzr, [x9, #0x20]
add x2, sp, #176
str x2, [fp, #-0x58] // [V164 PSPSym]
movz x2, #0xD1FFAB1E
@@ -225,7 +223,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=84 bbWeight=1 PerfScore 15.50
G_M8186_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x21, x20
; gcrRegs +[x21]
@@ -1321,9 +1319,6 @@ G_M8186_IG78: ; bbWeight=0.14, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
sub w0, w0, w1
cmp w0, w27
ble G_M8186_IG79
- add x14, x21, #8
- ; byrRegs +[x14]
- str x14, [fp, #-0xA0] // [TEMP_01]
ldr x25, [x21, #0x20]
; gcrRegs +[x25]
add w1, w1, w27
@@ -1332,7 +1327,6 @@ G_M8186_IG78: ; bbWeight=0.14, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
add x11, x24, #64
ldr x2, [x11]
blr x2
- ; byrRegs -[x14]
; gcr arg pop 0
mov x1, x0
; gcrRegs +[x1]
@@ -1341,7 +1335,7 @@ G_M8186_IG78: ; bbWeight=0.14, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
blr x2
; gcrRegs -[x1 x25]
; gcr arg pop 0
- ldr x14, [fp, #-0xA0] // [TEMP_01]
+ add x14, x21, #8
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
@@ -1352,7 +1346,7 @@ G_M8186_IG78: ; bbWeight=0.14, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
add w0, w0, #1
str w0, [x21, #0x14]
b G_M8186_IG62
- ;; size=108 bbWeight=0.14 PerfScore 6.00
+ ;; size=100 bbWeight=0.14 PerfScore 5.57
G_M8186_IG79: ; bbWeight=0.02, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
str xzr, [x21, #0x08]
@@ -1492,7 +1486,7 @@ G_M8186_IG91: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=32 bbWeight=0 PerfScore 0.00
-; Total bytes of code 3376, prolog size 88, PerfScore 975.12, instruction count 844, allocated bytes for code 3376 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
+; Total bytes of code 3364, prolog size 84, PerfScore 973.69, instruction count 841, allocated bytes for code 3364 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
; ============================================================
Unwind Info:
@@ -1503,7 +1497,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 808 (0x00328) Actual length = 3232 (0x000ca0)
+ Function Length : 805 (0x00325) Actual length = 3220 (0x000c94)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 162184.dasm - Roslyn.Utilities.AsyncLazy
1[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) [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.00) ref -> x20 class-hnd single-def <<unknown class>>
+; V05 loc2 [V05,T30] ( 2, 2.00) ref -> x20 class-hnd single-def <<unknown class>>
; V06 loc3 [V06,T21] ( 9, 4 ) 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,T25] ( 4, 3.00) ref -> x20
@@ -26,11 +26,11 @@
;* V14 tmp7 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V15 tmp8 [V15,T22] ( 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] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
-; V18 tmp11 [V18,T43] ( 2, 0 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
-; V19 tmp12 [V19,T30] ( 3, 2 ) ref -> x21 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.__Canon]>
+; V17 tmp10 [V17,T32] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V18 tmp11 [V18,T40] ( 2, 0 ) 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]>
; V20 tmp13 [V20,T04] ( 10, 17 ) ref -> x20 class-hnd "Inlining Arg" <Roslyn.Utilities.AsyncLazy`1+Request[System.__Canon]>
-; V21 tmp14 [V21,T35] ( 2, 0 ) ubyte -> x1 "Inline return value spill temp"
+; V21 tmp14 [V21,T33] ( 2, 0 ) ubyte -> x1 "Inline return value spill temp"
; V22 tmp15 [V22,T24] ( 3, 4 ) byref -> x22 "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]>
@@ -40,9 +40,9 @@
;* V28 tmp21 [V28,T15] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V29 tmp22 [V29,T00] ( 8, 32 ) ref -> x24 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
; V30 tmp23 [V30,T07] ( 3, 9 ) ref -> x22 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"
+; V31 tmp24 [V31,T31] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
; V32 tmp25 [V32,T16] ( 5, 5.00) int -> x14 "Inline stloc first use temp"
-; V33 tmp26 [V33,T31] ( 3, 2 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V33 tmp26 [V33,T29] ( 3, 2 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
; V34 tmp27 [V34,T02] ( 3, 12 ) ref -> x1 class-hnd "Inline stloc first use temp" <System.Object>
; V35 tmp28 [V35,T03] ( 3, 12 ) byref -> x0 "Inlining Arg"
; V36 tmp29 [V36,T06] ( 2, 10 ) ref -> x1 class-hnd exact "Inlining Arg" <System.Object>
@@ -50,31 +50,28 @@
; V38 tmp31 [V38,T26] ( 3, 3 ) ref -> x26 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,T20] ( 4, 16.18) byref -> x22 "Inlining Arg"
-; V41 tmp34 [V41,T29] ( 5, 8.18) ref -> x23 class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
+; V41 tmp34 [V41,T27] ( 5, 8.18) ref -> x23 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, 5 ) 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.50) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V37._count (fldOffset=0x0)" P-DEP
-; V46 tmp39 [V46,T44] ( 2, 0 ) ref -> x0 "argument with side effect"
-; V47 tmp40 [V47,T45] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V48 tmp41 [V48,T46] ( 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,T41] ( 2, 0 ) ref -> x0 "argument with side effect"
+; V47 tmp40 [V47,T42] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V48 tmp41 [V48,T43] ( 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,T05] ( 5, 11.00) byref -> x25 "CSE - aggressive"
; V51 cse1 [V51,T23] ( 4, 4 ) byref -> x21 "CSE - moderate"
-; V52 rat0 [V52,T38] ( 3, 0 ) long -> x1 "Spilling to split statement for tree"
-; V53 rat1 [V53,T39] ( 3, 0 ) long -> x2 "runtime lookup"
-; V54 rat2 [V54,T40] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V52 rat0 [V52,T35] ( 3, 0 ) long -> x1 "Spilling to split statement for tree"
+; V53 rat1 [V53,T36] ( 3, 0 ) long -> x2 "runtime lookup"
+; V54 rat2 [V54,T37] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
; V55 rat3 [V55,T17] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
; V56 rat4 [V56,T11] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
; V57 rat5 [V57,T18] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
; V58 rat6 [V58,T12] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V59 rat7 [V59,T28] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V60 rat8 [V60,T36] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V61 rat9 [V61,T27] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V62 rat10 [V62,T19] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V63 rat11 [V63,T13] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"
-; V64 rat12 [V64,T41] ( 3, 0 ) long -> x1 "Spilling to split statement for tree"
-; V65 rat13 [V65,T42] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V59 rat7 [V59,T19] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
+; V60 rat8 [V60,T13] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"
+; V61 rat9 [V61,T38] ( 3, 0 ) long -> x1 "Spilling to split statement for tree"
+; V62 rat10 [V62,T39] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 64
@@ -274,7 +271,7 @@ G_M38013_IG19: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x2, [x1, #0x38]
ldr x2, [x2]
ldr x11, [x2, #0x60]
- cbz x11, G_M38013_IG25
+ cbz x11, G_M38013_IG24
;; size=24 bbWeight=1 PerfScore 15.00
G_M38013_IG20: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
@@ -307,7 +304,7 @@ G_M38013_IG21: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M38013_IG28
+ b G_M38013_IG42
;; size=32 bbWeight=0 PerfScore 0.00
G_M38013_IG22: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
; byrRegs +[x21]
@@ -315,7 +312,7 @@ G_M38013_IG22: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000
; byrRegs +[x22]
ldr x14, [x22]
; gcrRegs +[x14]
- cbz x14, G_M38013_IG29
+ cbz x14, G_M38013_IG26
;; size=12 bbWeight=1 PerfScore 4.50
G_M38013_IG23: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=600000 {x21 x22}, byref
; gcrRegs -[x14]
@@ -325,11 +322,23 @@ G_M38013_IG23: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=600000
; gcrRegs -[x1]
cmp w1, #0
cset x1, ne
- b G_M38013_IG33
+ b G_M38013_IG29
;; size=20 bbWeight=0 PerfScore 0.00
-G_M38013_IG24: ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=2000000 {x25}, byref, isz
- ; gcrRegs +[x23-x24]
- ; byrRegs -[x21-x22] +[x25]
+G_M38013_IG24: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
+ ; byrRegs -[x21-x22]
+ mov x0, x1
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov x11, x0
+ b G_M38013_IG20
+ ;; size=28 bbWeight=0.20 PerfScore 0.90
+G_M38013_IG25: ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=2000000 {x25}, byref, isz
+ ; gcrRegs +[x20 x23-x24]
+ ; byrRegs +[x25]
add x14, x24, #56
; byrRegs +[x14]
mov x15, x23
@@ -342,64 +351,16 @@ G_M38013_IG24: ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRe
swpal w0, w0, [x25]
ldr x22, [x24, #0x28]
; gcrRegs +[x22]
- cbz x22, G_M38013_IG26
+ cbz x22, G_M38013_IG40
b G_M38013_IG43
;; size=36 bbWeight=4 PerfScore 54.00
-G_M38013_IG25: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20 x22 x24]
- ; byrRegs -[x25]
- mov x0, x1
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov x11, x0
- b G_M38013_IG20
- ;; size=28 bbWeight=0.20 PerfScore 0.90
-G_M38013_IG26: ; bbWeight=1, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x20 x24]
- add x0, x24, #32
- ; byrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #2 LSL #32
- ldr x1, [x1]
- ; gcrRegs +[x1]
- cbz x0, G_M38013_IG40
- ;; size=24 bbWeight=1 PerfScore 6.00
-G_M38013_IG27: ; bbWeight=4, gcrefRegs=1180002 {x1 x19 x20 x24}, byrefRegs=0001 {x0}, byref, isz
- bl <unknown method>
- ; gcrRegs -[x1] +[x0]
- ; byrRegs -[x0]
- ; gcr arg pop 0
- mov x1, x0
- ; gcrRegs +[x1]
- cbz x1, G_M38013_IG28
- mov x0, x24
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x0-x1 x24]
- ; gcr arg pop 0
- ;; size=36 bbWeight=4 PerfScore 34.00
-G_M38013_IG28: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- add x22, x20, #24
- ; byrRegs +[x22]
- ldr x23, [x22]
- ; gcrRegs +[x23]
- cbz x23, G_M38013_IG48
- b G_M38013_IG46
- ;; size=16 bbWeight=4 PerfScore 22.00
-G_M38013_IG29: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
- ; gcrRegs -[x23]
- ; byrRegs -[x22] +[x21]
+G_M38013_IG26: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
+ ; gcrRegs -[x22 x24]
+ ; byrRegs -[x25] +[x21]
ldapr w14, [x21]
- tbz w14, #21, G_M38013_IG35
+ tbz w14, #21, G_M38013_IG31
;; size=8 bbWeight=1 PerfScore 4.00
-G_M38013_IG30: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M38013_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x21]
mov x0, x19
; gcrRegs +[x0]
@@ -425,7 +386,7 @@ G_M38013_IG30: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs -[x0]
; gcr arg pop 0
cmp w0, #0
- ble G_M38013_IG34
+ ble G_M38013_IG30
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Threading.Tasks.Task:get_Exception():System.AggregateException:this
@@ -451,33 +412,21 @@ G_M38013_IG30: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M38013_IG28
+ b G_M38013_IG42
;; size=160 bbWeight=0 PerfScore 0.00
-G_M38013_IG31: ; bbWeight=0, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=2000000 {x25}, byref, isz
+G_M38013_IG28: ; bbWeight=0, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=2000000 {x25}, byref, isz
; gcrRegs +[x23-x24]
; byrRegs +[x25]
cbz w0, G_M38013_IG44
- b G_M38013_IG24
+ b G_M38013_IG25
;; size=8 bbWeight=0 PerfScore 0.00
-G_M38013_IG32: ; bbWeight=0, gcrefRegs=1180001 {x0 x19 x20 x24}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x23] +[x0]
- ; byrRegs -[x25]
- movz x1, #0xD1FFAB1E // code for <unknown method>
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- blr x1
- ; gcrRegs -[x0]
- ; gcr arg pop 0
- b G_M38013_IG26
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M38013_IG33: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
- ; gcrRegs -[x24]
- ; byrRegs +[x21]
- cbz w1, G_M38013_IG29
+G_M38013_IG29: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
+ ; gcrRegs -[x23-x24]
+ ; byrRegs -[x25] +[x21]
...
+0 (0.00%) : 442012.dasm - System.Text.Unicode.Tests.Utf8Tests:.cctor() (Tier1-OSR)
@@ -1288,9 +1288,7 @@ G_M41182_IG56: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[x0]
; gcr arg pop 0
cbz w0, G_M41182_IG57
- ldr x22, [fp, #0xD1FFAB1E] // [V02 loc2]
- ; gcrRegs +[x22]
- mov x0, x22
+ ldr x0, [fp, #0xD1FFAB1E] // [V02 loc2]
; gcrRegs +[x0]
ldr x21, [x0, #0x20]
; gcrRegs +[x21]
@@ -1308,11 +1306,13 @@ G_M41182_IG56: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
blr x2
; gcrRegs -[x0 x21]
; gcr arg pop 0
- str w0, [x22, #0x10]
+ ldr x1, [fp, #0xD1FFAB1E] // [V02 loc2]
+ ; gcrRegs +[x1]
+ str w0, [x1, #0x10]
b G_M41182_IG31
- ;; size=92 bbWeight=4.00 PerfScore 146.00
+ ;; size=92 bbWeight=4.00 PerfScore 152.00
G_M41182_IG57: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x22]
+ ; gcrRegs -[x1]
ldr x0, [fp, #0xD1FFAB1E] // [V02 loc2]
; gcrRegs +[x0]
ldr x0, [x0, #0x28]
@@ -1474,7 +1474,7 @@ G_M41182_IG66: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=32 bbWeight=0 PerfScore 0.00
-; Total bytes of code 3644, prolog size 60, PerfScore 81643.37, instruction count 911, allocated bytes for code 3644 (MethodHash=7d905f21) for method System.Text.Unicode.Tests.Utf8Tests:.cctor() (Tier1-OSR)
+; Total bytes of code 3644, prolog size 60, PerfScore 81649.37, instruction count 911, allocated bytes for code 3644 (MethodHash=7d905f21) for method System.Text.Unicode.Tests.Utf8Tests:.cctor() (Tier1-OSR)
; ============================================================
Unwind Info:
+4 (+0.18%) : 51336.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.21) 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 -> x28
-; 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 -> x28 single-def
+; V10 loc6 [V10,T36] ( 5, 2.03) int -> x28
+; 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 -> x28 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 -> x26 "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 -> x26 "CSE - conservative"
; V98 cse1 [V98,T03] ( 31, 6.49) 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] ( 0, 0 ) long -> zero-ref "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] ( 0, 0 ) long -> zero-ref "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] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V105 rat6 [V105,T23] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V106 rat7 [V106,T01] ( 0, 0 ) long -> zero-ref "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] ( 0, 0 ) long -> zero-ref "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] ( 0, 0 ) long -> zero-ref "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_IG60
+ cbz x20, G_M33517_IG61
;; 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
+ bne G_M33517_IG19
;; size=24 bbWeight=0.99 PerfScore 5.95
G_M33517_IG07: ; bbWeight=0.75, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
...
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
-8 (-1.74%) : 96197.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)
@@ -17,7 +17,7 @@
; V07 tmp2 [V07,T06] ( 6, 8 ) byref -> x26
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V09 tmp4 [V09,T02] ( 8, 12 ) long -> x11 "VirtualCall with runtime lookup"
-; V10 tmp5 [V10,T12] ( 4, 4 ) int -> registers
+; V10 tmp5 [V10,T12] ( 2, 3.96) int -> x0
; V11 tmp6 [V11,T07] ( 4, 8 ) ref -> x0 "argument with side effect"
; V12 cse0 [V12,T03] ( 4, 11.88) long -> x21 "CSE - aggressive"
; V13 cse1 [V13,T09] ( 5, 7 ) int -> x23 "CSE - aggressive"
@@ -121,8 +121,8 @@ G_M22994_IG09: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=5000000
; byrRegs -[x26]
; gcr arg pop 0
cmp w0, #0
- cset x21, eq
- cbnz w21, G_M22994_IG22
+ cset x0, eq
+ cbnz w0, G_M22994_IG22
;; size=32 bbWeight=1.98 PerfScore 24.75
G_M22994_IG10: ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz
add w22, w22, #1
@@ -209,10 +209,8 @@ G_M22994_IG18: ; 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_IG22
- ;; size=44 bbWeight=0.02 PerfScore 0.34
+ cbz w0, G_M22994_IG22
+ ;; size=36 bbWeight=0.02 PerfScore 0.32
G_M22994_IG19: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
add w22, w22, #1
cmp w23, w22
@@ -247,7 +245,7 @@ G_M22994_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 460, prolog size 40, PerfScore 125.20, instruction count 115, allocated bytes for code 460 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 452, prolog size 40, PerfScore 125.18, instruction count 113, allocated bytes for code 452 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -258,7 +256,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 115 (0x00073) Actual length = 460 (0x0001cc)
+ Function Length : 113 (0x00071) Actual length = 452 (0x0001c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-0.78%) : 148131.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
@@ -27,7 +27,7 @@
;* V16 tmp10 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V18 tmp12 [V18,T00] ( 8, 24 ) ref -> x26 class-hnd exact "Inlining Arg" <System.String>
-; V19 tmp13 [V19,T21] ( 2, 0.04) ubyte -> x14 "Inline return value spill temp"
+;* V19 tmp13 [V19,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp14 [V20 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp15 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V22 tmp16 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -274,10 +274,8 @@ G_M10809_IG15: ; bbWeight=0.02, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
; gcrRegs -[x3]
; byrRegs -[x0 x27]
; gcr arg pop 0
- cmp w0, #0
- cset x14, eq
- cbz w14, G_M10809_IG21
- ;; size=80 bbWeight=0.02 PerfScore 0.38
+ cbnz w0, G_M10809_IG21
+ ;; size=72 bbWeight=0.02 PerfScore 0.36
G_M10809_IG16: ; bbWeight=0.04, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
ldr w14, [fp, #0x18] // [V05 loc3]
mov w15, #0xD1FFAB1E
@@ -499,7 +497,7 @@ G_M10809_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_unix #0
;; size=136 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1032, prolog size 36, PerfScore 144.50, instruction count 258, allocated bytes for code 1032 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 1024, prolog size 36, PerfScore 144.48, instruction count 256, allocated bytes for code 1024 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -510,7 +508,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 258 (0x00102) Actual length = 1032 (0x000408)
+ Function Length : 256 (0x00100) Actual length = 1024 (0x000400)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-0.77%) : 151115.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
@@ -27,7 +27,7 @@
;* V16 tmp10 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V18 tmp12 [V18,T00] ( 8, 24 ) ref -> x26 class-hnd exact "Inlining Arg" <System.String>
-; V19 tmp13 [V19,T21] ( 2, 0.04) ubyte -> x14 "Inline return value spill temp"
+;* V19 tmp13 [V19,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp14 [V20 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp15 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V22 tmp16 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -275,10 +275,8 @@ G_M10809_IG15: ; bbWeight=0.02, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
; gcrRegs -[x3]
; byrRegs -[x0 x27]
; gcr arg pop 0
- cmp w0, #0
- cset x14, eq
- cbz w14, G_M10809_IG21
- ;; size=80 bbWeight=0.02 PerfScore 0.38
+ cbnz w0, G_M10809_IG21
+ ;; size=72 bbWeight=0.02 PerfScore 0.36
G_M10809_IG16: ; bbWeight=0.04, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
ldr w14, [fp, #0x18] // [V05 loc3]
mov w15, #0xD1FFAB1E
@@ -500,7 +498,7 @@ G_M10809_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_unix #0
;; size=136 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1036, prolog size 40, PerfScore 145.50, instruction count 259, allocated bytes for code 1036 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 1028, prolog size 40, PerfScore 145.48, instruction count 257, allocated bytes for code 1028 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -511,7 +509,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 259 (0x00103) Actual length = 1036 (0x00040c)
+ Function Length : 257 (0x00101) Actual length = 1028 (0x000404)
---- 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.HashSet
1[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
@@ -560,7 +557,7 @@ G_M10461_IG40: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
add sp, sp, #160
ret lr
;; size=36 bbWeight=0.50 PerfScore 4.50
-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]
@@ -572,7 +569,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
-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.SegmentedHashSet
1[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
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
Details
Improvements/regressions per collection
Collection
Contexts with diffs
Improvements
Regressions
Same size
Improvements (bytes)
Regressions (bytes)
benchmarks.run.osx.arm64.checked.mch
1
0
0
1
-0
+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
2
1
0
1
-24
+0
libraries.crossgen2.osx.arm64.checked.mch
11
11
0
0
-108
+0
libraries.pmi.osx.arm64.checked.mch
24
12
0
12
-124
+0
libraries_tests.run.osx.arm64.Release.mch
37
31
1
5
-320
+4
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
11
7
0
4
-80
+0
realworld.run.osx.arm64.checked.mch
4
2
0
2
-20
+0
90
64
1
25
-676
+4
Context information
Collection
Diffed contexts
MinOpts
FullOpts
Missed, base
Missed, diff
benchmarks.run.osx.arm64.checked.mch
24,855
4
24,851
0 (0.00%)
0 (0.00%)
benchmarks.run_pgo.osx.arm64.checked.mch
84,590
48,412
36,178
84 (0.10%)
84 (0.10%)
benchmarks.run_tiered.osx.arm64.checked.mch
48,261
37,318
10,943
0 (0.00%)
0 (0.00%)
coreclr_tests.run.osx.arm64.checked.mch
585,832
357,177
228,655
389 (0.07%)
389 (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,716
18
314,698
0 (0.00%)
0 (0.00%)
libraries_tests.run.osx.arm64.Release.mch
637,144
466,371
170,773
2,722 (0.43%)
2,722 (0.43%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
302,469
21,558
280,911
6 (0.00%)
6 (0.00%)
realworld.run.osx.arm64.checked.mch
31,544
3
31,541
0 (0.00%)
0 (0.00%)
2,262,764
930,876
1,331,888
3,201 (0.14%)
3,201 (0.14%)
jit-analyze output
benchmarks.run.osx.arm64.checked.mch
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 11180928 (overridden on cmd)
Total bytes of diff: 11180928 (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).
coreclr_tests.run.osx.arm64.checked.mch
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 485345676 (overridden on cmd)
Total bytes of diff: 485345652 (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 : 570536.dasm (-2.33 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 1 unchanged.
Top method improvements (bytes):
-24 (-2.33 % of base) : 570536.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
Top method improvements (percentages):
-24 (-2.33 % of base) : 570536.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
1 total methods with Code Size differences (1 improved, 0 regressed).
libraries.crossgen2.osx.arm64.checked.mch
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 55620496 (overridden on cmd)
Total bytes of diff: 55620388 (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 : 109800.dasm (-0.10 % of base)
-4 : 183363.dasm (-0.15 % of base)
-4 : 124600.dasm (-0.15 % of base)
-4 : 124599.dasm (-0.19 % 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
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 79959756 (overridden on cmd)
Total bytes of diff: 79959632 (overridden on cmd)
Total bytes of delta: -124 (-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)
-20 : 115297.dasm (-1.07 % of base)
-16 : 182355.dasm (-0.21 % of base)
-12 : 230868.dasm (-0.68 % of base)
-8 : 121839.dasm (-0.18 % of base)
-8 : 121842.dasm (-0.15 % of base)
-8 : 308247.dasm (-0.73 % of base)
-4 : 144757.dasm (-0.20 % of base)
-4 : 200927.dasm (-0.21 % of base)
-4 : 137816.dasm (-0.10 % of base)
-4 : 144758.dasm (-0.16 % of base)
-4 : 200928.dasm (-0.16 % of base)
12 total files with Code Size differences (12 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)
-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.20 % of base) : 144757.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase: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.16 % of base) : 144758.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) : 200928.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
Top method improvements (percentages):
-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)
-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)
-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)
12 total methods with Code Size differences (12 improved, 0 regressed).
libraries_tests.run.osx.arm64.Release.mch
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 312760116 (overridden on cmd)
Total bytes of diff: 312759800 (overridden on cmd)
Total bytes of delta: -316 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
4 : 51336.dasm (0.18 % of base)
Top file improvements (bytes):
-20 : 323886.dasm (-0.60 % of base)
-12 : 172501.dasm (-0.35 % of base)
-12 : 216887.dasm (-0.35 % of base)
-12 : 280433.dasm (-0.36 % of base)
-12 : 380502.dasm (-0.09 % of base)
-12 : 469127.dasm (-0.35 % of base)
-12 : 496300.dasm (-0.35 % of base)
-12 : 95843.dasm (-0.35 % of base)
-12 : 120159.dasm (-0.35 % of base)
-12 : 318781.dasm (-0.35 % of base)
-12 : 329098.dasm (-0.35 % of base)
-12 : 370555.dasm (-0.35 % of base)
-12 : 439419.dasm (-0.35 % of base)
-12 : 178273.dasm (-0.35 % of base)
-12 : 159796.dasm (-0.56 % of base)
-12 : 191353.dasm (-0.35 % of base)
-12 : 202501.dasm (-0.35 % of base)
-12 : 309760.dasm (-0.35 % of base)
-12 : 332729.dasm (-0.35 % of base)
-12 : 381256.dasm (-0.09 % of base)
32 total files with Code Size differences (31 improved, 1 regressed), 5 unchanged.
Top method regressions (bytes):
4 (0.18 % of base) : 51336.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
Top method improvements (bytes):
-20 (-0.60 % of base) : 323886.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.56 % of base) : 159796.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (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) : 216887.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.36 % of base) : 280433.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 469127.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)
-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) : 120159.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) : 370555.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 439419.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 178273.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) : 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) : 332729.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.09 % of base) : 381256.dasm - System.Xml.XPath.XPathDocument:LoadFromReader(System.Xml.XmlReader,int):this (Tier1)
-12 (-0.09 % of base) : 380502.dasm - System.Xml.XPath.XPathDocument:LoadFromReader(System.Xml.XmlReader,int):this (Tier1-OSR)
Top method regressions (percentages):
4 (0.18 % of base) : 51336.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
Top method improvements (percentages):
-20 (-0.60 % of base) : 323886.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.56 % of base) : 159796.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-12 (-0.36 % of base) : 280433.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) : 332729.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) : 496300.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) : 172501.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 469127.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) : 202501.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) : 329098.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) : 439419.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 178273.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 370555.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-4 (-0.35 % of base) : 61837.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this (Tier1)
-4 (-0.25 % of base) : 53775.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
32 total methods with Code Size differences (31 improved, 1 regressed).
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 160789980 (overridden on cmd)
Total bytes of diff: 160789900 (overridden on cmd)
Total bytes of delta: -80 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-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.77 % of base)
-8 : 148131.dasm (-0.78 % of base)
-8 : 96197.dasm (-1.74 % of base)
-4 : 177151.dasm (-0.21 % of base)
7 total files with Code Size differences (7 improved, 0 regressed), 4 unchanged.
Top method improvements (bytes):
-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.77 % 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):
-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.77 % 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)
7 total methods with Code Size differences (7 improved, 0 regressed).
realworld.run.osx.arm64.checked.mch
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15071744 (overridden on cmd)
Total bytes of diff: 15071724 (overridden on cmd)
Total bytes of delta: -20 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-12 : 13443.dasm (-0.14 % of base)
-8 : 30385.dasm (-0.10 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 2 unchanged.
Top method improvements (bytes):
-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):
-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)
2 total methods with Code Size differences (2 improved, 0 regressed).
Diffs are based on 2,318,293 contexts (931,543 MinOpts, 1,386,750 FullOpts).
MISSED contexts: 2,601 (0.11%)
Overall (-616 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch
10,964,124
+0
coreclr_tests.run.windows.arm64.checked.mch
495,343,752
-24
libraries.crossgen2.windows.arm64.checked.mch
58,963,136
-108
libraries.pmi.windows.arm64.checked.mch
79,568,032
-128
libraries_tests.run.windows.arm64.Release.mch
310,410,132
-256
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
169,004,112
-80
realworld.run.windows.arm64.checked.mch
15,891,296
-20
FullOpts (-616 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch
10,963,588
+0
coreclr_tests.run.windows.arm64.checked.mch
156,252,224
-24
libraries.crossgen2.windows.arm64.checked.mch
58,961,500
-108
libraries.pmi.windows.arm64.checked.mch
79,448,048
-128
libraries_tests.run.windows.arm64.Release.mch
108,828,628
-256
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
155,866,648
-80
realworld.run.windows.arm64.checked.mch
15,322,872
-20
Example diffs
benchmarks.run.windows.arm64.checked.mch
+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 (-2.33%) : 579631.dasm - ILCompiler.LazyGenericsSupport+Graph
1+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] ( 2, 512 ) long -> x0 "spilling expr"
-;* V64 rat9 [V64,T17] ( 0, 0 ) long -> zero-ref "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_IG17
;; 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_IG14
;; 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]
@@ -231,7 +227,7 @@ G_M1799_IG15: ; bbWeight=6.04, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=
sxtw w0, w24
;; size=4 bbWeight=6.04 PerfScore 3.02
G_M1799_IG16: ; 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_IG17: ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
mov x0, x23
@@ -244,32 +240,24 @@ G_M1799_IG17: ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M1799_IG30
+ cbz w0, G_M1799_IG29
;; size=32 bbWeight=512 PerfScore 3840.00
-G_M1799_IG18: ; bbWeight=128, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x08]
- cmp x0, #48
- ble G_M1799_IG19
- ;; size=24 bbWeight=128 PerfScore 1728.00
-G_M1799_IG19: ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19]
+G_M1799_IG18: ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x20]
...
+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.ArrayBuilder
1[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.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)@@ -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 (-1.06%) : 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)@@ -11,7 +11,7 @@
; V00 arg0 [V00,T29] ( 7, 5.50) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax>
; V01 arg1 [V01,T14] ( 6, 11 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]>
; V02 arg2 [V02,T15] ( 6, 10 ) 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+0x38] 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+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
; V04 loc1 [V04,T20] ( 7, 10.04) ref -> x21 class-hnd exact single-def <<unknown class>>
; V05 loc2 [V05,T31] ( 5, 7 ) int -> x22 single-def
; V06 loc3 [V06,T05] ( 16, 25.04) int -> x23
@@ -19,7 +19,7 @@
; V08 loc5 [V08,T10] ( 10, 16 ) ref -> x26 class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
;* V09 loc6 [V09 ] ( 0, 0 ) ushort -> zero-ref
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax>
-; V11 loc8 [V11 ] ( 4, 4 ) struct (24) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
+; V11 loc8 [V11 ] ( 4, 4 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
; V12 loc9 [V12,T33] ( 3, 6 ) int -> x24 single-def
; V13 loc10 [V13,T06] ( 9, 25 ) int -> x20
; V14 loc11 [V14,T00] ( 10,106 ) ref -> x22 class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbol>
@@ -68,10 +68,10 @@
;* V57 tmp38 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
; V58 tmp39 [V58,T28] ( 2, 8 ) ref -> x2 class-hnd "Inlining Arg" <<unknown class>>
; V59 tmp40 [V59,T19] ( 3, 12 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
-; V60 tmp41 [V60 ] ( 2, 2 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V11.<Parent>k__BackingField (fldOffset=0x0)" P-DEP
-; V61 tmp42 [V61 ] ( 4, 4 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V11.<Node>k__BackingField (fldOffset=0x8)" P-DEP
-; V62 tmp43 [V62 ] ( 2, 2 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V11.<Index>k__BackingField (fldOffset=0x10)" P-DEP
-; V63 tmp44 [V63 ] ( 2, 2 ) int -> [fp+0x34] do-not-enreg[X] addr-exposed "field V11.<Position>k__BackingField (fldOffset=0x14)" P-DEP
+; V60 tmp41 [V60 ] ( 2, 2 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V11.<Parent>k__BackingField (fldOffset=0x0)" P-DEP
+; V61 tmp42 [V61 ] ( 4, 4 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V11.<Node>k__BackingField (fldOffset=0x8)" P-DEP
+; V62 tmp43 [V62 ] ( 2, 2 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V11.<Index>k__BackingField (fldOffset=0x10)" P-DEP
+; V63 tmp44 [V63 ] ( 2, 2 ) int -> [fp+0x24] do-not-enreg[X] addr-exposed "field V11.<Position>k__BackingField (fldOffset=0x14)" P-DEP
;* V64 tmp45 [V64 ] ( 0, 0 ) ref -> zero-ref "field V17.array (fldOffset=0x0)" P-INDEP
;* V65 tmp46 [V65 ] ( 0, 0 ) ref -> zero-ref "field V26.array (fldOffset=0x0)" P-INDEP
;* V66 tmp47 [V66 ] ( 0, 0 ) ref -> zero-ref "field V29.array (fldOffset=0x0)" P-INDEP
@@ -86,29 +86,27 @@
; V75 tmp56 [V75,T16] ( 6, 12 ) ref -> x0 "argument with side effect"
; V76 tmp57 [V76,T17] ( 6, 12 ) ref -> x0 "argument with side effect"
; V77 cse0 [V77,T01] ( 7, 88 ) long -> x23 "CSE - aggressive"
-; TEMP_01 byref -> [fp+0x18]
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M1087_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
- stp x19, x20, [sp, #0x50]
- stp x21, x22, [sp, #0x60]
- stp x23, x24, [sp, #0x70]
- stp x25, x26, [sp, #0x80]
+ stp fp, lr, [sp, #-0x80]!
+ stp x19, x20, [sp, #0x40]
+ stp x21, x22, [sp, #0x50]
+ stp x23, x24, [sp, #0x60]
+ stp x25, x26, [sp, #0x70]
mov fp, sp
- add x9, fp, #24
+ add x9, fp, #16
movi v16.16b, #0
stp q16, q16, [x9]
stp xzr, xzr, [x9, #0x20]
- str xzr, [x9, #0x30]
mov x21, x0
; gcrRegs +[x21]
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=56 bbWeight=1 PerfScore 11.00
+ ;; size=52 bbWeight=1 PerfScore 10.00
G_M1087_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldrsb wzr, [x21]
add x22, x21, #40
@@ -179,7 +177,7 @@ G_M1087_IG05: ; bbWeight=0.50, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=4
G_M1087_IG06: ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
; byrRegs -[x22]
- add x8, fp, #56 // [V03 loc0]
+ add x8, fp, #40 // [V03 loc0]
mov x0, x23
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax:get_Arguments():Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]:this
@@ -189,7 +187,7 @@ G_M1087_IG06: ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
ldr wzr, [x0]
blr x1
; gcrRegs -[x0 x23]
- ldrsw x1, [fp, #0x38] // [V03 loc0]
+ ldrsw x1, [fp, #0x28] // [V03 loc0]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -197,7 +195,7 @@ G_M1087_IG06: ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
; gcrRegs +[x0]
mov x21, x0
; gcrRegs +[x21]
- ldr w0, [fp, #0x38] // [V03 loc0]
+ ldr w0, [fp, #0x28] // [V03 loc0]
; gcrRegs -[x0]
sub w22, w0, #1
mov w23, wzr
@@ -207,7 +205,7 @@ G_M1087_IG06: ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
ble G_M1087_IG17
;; size=84 bbWeight=1 PerfScore 23.00
G_M1087_IG07: ; bbWeight=3.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- add x0, fp, #56 // [V03 loc0]
+ add x0, fp, #40 // [V03 loc0]
mov w2, w23
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -237,7 +235,7 @@ G_M1087_IG08: ; bbWeight=1.98, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
movk x0, #0xD1FFAB1E LSL #32
cmp x8, x0
bne G_M1087_IG45
- add x8, fp, #32 // [V11 loc8]
+ add x8, fp, #16 // [V11 loc8]
mov x0, x24
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax:get_Identifier():Microsoft.CodeAnalysis.SyntaxToken:this
@@ -246,7 +244,7 @@ G_M1087_IG08: ; bbWeight=1.98, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
- ldr x0, [fp, #0x28] // [V61 tmp42]
+ ldr x0, [fp, #0x18] // [V61 tmp42]
; gcrRegs +[x0]
cbnz x0, G_M1087_IG09
mov x25, xzr
@@ -396,7 +394,7 @@ G_M1087_IG16: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
;; size=4 bbWeight=1 PerfScore 1.00
G_M1087_IG17: ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
- add x0, fp, #56 // [V03 loc0]
+ add x0, fp, #40 // [V03 loc0]
mov w2, w23
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -426,7 +424,7 @@ G_M1087_IG18: ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
movk x0, #0xD1FFAB1E LSL #32
cmp x8, x0
bne G_M1087_IG45
- add x8, fp, #32 // [V11 loc8]
+ add x8, fp, #16 // [V11 loc8]
mov x0, x24
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax:get_Identifier():Microsoft.CodeAnalysis.SyntaxToken:this
@@ -435,7 +433,7 @@ G_M1087_IG18: ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
- ldr x0, [fp, #0x28] // [V61 tmp42]
+ ldr x0, [fp, #0x18] // [V61 tmp42]
; gcrRegs +[x0]
cbnz x0, G_M1087_IG19
mov x25, xzr
@@ -476,9 +474,6 @@ G_M1087_IG21: ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x25]
; byrRegs -[x14]
- add x14, x26, #48
- ; byrRegs +[x14]
- str x14, [fp, #0x18] // [TEMP_01]
mov x0, x24
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:get_SyntaxTree():Microsoft.CodeAnalysis.SyntaxTree:this
@@ -486,7 +481,6 @@ G_M1087_IG21: ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- ; byrRegs -[x14]
mov x1, x24
; gcrRegs +[x1]
ldr x2, [x0]
@@ -494,7 +488,7 @@ G_M1087_IG21: ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
ldr x2, [x2, #0x38]
blr x2
; gcrRegs -[x1 x24]
- ldr x14, [fp, #0x18] // [TEMP_01]
+ add x14, x26, #48
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
@@ -502,7 +496,7 @@ G_M1087_IG21: ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
; gcrRegs -[x0 x15]
; byrRegs -[x14]
b G_M1087_IG23
- ;; size=104 bbWeight=0.02 PerfScore 0.57
+ ;; size=96 bbWeight=0.02 PerfScore 0.51
G_M1087_IG22: ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
; gcrRegs -[x26] +[x24]
movz x0, #0xD1FFAB1E
@@ -518,9 +512,6 @@ G_M1087_IG22: ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
str x0, [x26, #0x28]
- add x14, x26, #48
- ; byrRegs +[x14]
- str x14, [fp, #0x18] // [TEMP_01]
mov x0, x24
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:get_SyntaxTree():Microsoft.CodeAnalysis.SyntaxTree:this
@@ -528,7 +519,6 @@ G_M1087_IG22: ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- ; byrRegs -[x14]
mov x1, x24
; gcrRegs +[x1]
ldr x2, [x0]
@@ -536,14 +526,14 @@ G_M1087_IG22: ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
ldr x2, [x2, #0x38]
blr x2
; gcrRegs -[x1 x24]
- ldr x14, [fp, #0x18] // [TEMP_01]
+ add x14, x26, #48
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ;; size=104 bbWeight=0.02 PerfScore 0.56
+ ;; size=96 bbWeight=0.02 PerfScore 0.50
G_M1087_IG23: ; bbWeight=0.04, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
ldr w14, [x21, #0x08]
cmp w23, w14
@@ -775,11 +765,11 @@ G_M1087_IG40: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
;; size=12 bbWeight=4 PerfScore 8.00
G_M1087_IG41: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19 x21]
- ldp x25, x26, [sp, #0x80]
- ldp x23, x24, [sp, #0x70]
- ldp x21, x22, [sp, #0x60]
- ldp x19, x20, [sp, #0x50]
- ldp fp, lr, [sp], #0x90
+ ldp x25, x26, [sp, #0x70]
+ ldp x23, x24, [sp, #0x60]
+ ldp x21, x22, [sp, #0x50]
+ ldp x19, x20, [sp, #0x40]
+ ldp fp, lr, [sp], #0x80
ret lr
;; size=24 bbWeight=1 PerfScore 6.00
G_M1087_IG42: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
@@ -830,7 +820,7 @@ G_M1087_IG47: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, by
brk_windows #0
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1892, prolog size 44, PerfScore 1114.05, instruction count 473, allocated bytes for code 1892 (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 1872, prolog size 40, PerfScore 1112.93, instruction count 468, allocated bytes for code 1872 (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:
@@ -841,7 +831,7 @@ Unwind Info:
...
-32 (-0.77%) : 118236.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport
@@ -14,15 +14,15 @@
; V03 loc1 [V03,T42] ( 7, 5.02) ref -> x23 class-hnd exact single-def <<unknown class>>
; V04 loc2 [V04,T51] ( 4, 3 ) ref -> x27 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxTree>
; V05 loc3 [V05,T19] ( 14, 11 ) ref -> x28 class-hnd exact single-def <<unknown class>>
-; V06 loc4 [V06 ] ( 5, 5.50) struct ( 8) [fp+0xC8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
+; V06 loc4 [V06 ] ( 5, 5.50) struct ( 8) [fp+0xB8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
;* V07 loc5 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Threading.CancellationToken>
; V08 loc6 [V08,T41] ( 5, 5.50) int -> x26 single-def
-; V09 loc7 [V09,T04] ( 12, 18.52) int -> [fp+0xC4]
-; V10 loc8 [V10 ] ( 12, 14 ) struct (24) [fp+0xA8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]>
+; V09 loc7 [V09,T04] ( 12, 18.52) int -> [fp+0xB4]
+; V10 loc8 [V10 ] ( 12, 14 ) struct (24) [fp+0x98] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]>
; V11 loc9 [V11,T13] ( 12, 12 ) ref -> x21 must-init class-hnd exact <Microsoft.CodeAnalysis.VisualBasic.OptionsValidator+_Closure$__0-0>
;* V12 loc10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
-; V13 loc11 [V13,T20] ( 10, 10 ) ref -> [fp+0x88] class-hnd <<unknown class>>
-; V14 loc12 [V14,T37] ( 6, 6 ) ref -> [fp+0x80] class-hnd <<unknown class>>
+; V13 loc11 [V13,T20] ( 10, 10 ) ref -> [fp+0x78] class-hnd <<unknown class>>
+; V14 loc12 [V14,T37] ( 6, 6 ) ref -> [fp+0x70] class-hnd <<unknown class>>
;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V16 tmp1 [V16,T24] ( 5, 10 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V17 tmp2 [V17 ] ( 0, 0 ) ref -> zero-ref single-def
@@ -38,14 +38,14 @@
; V27 tmp12 [V27,T62] ( 2, 2 ) ref -> x2 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions>
; V28 tmp13 [V28,T52] ( 3, 3 ) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V29 tmp14 [V29,T14] ( 6, 12 ) ref -> registers class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.OptionsValidator+_Closure$__0-0>
-; V30 tmp15 [V30,T06] ( 8, 16 ) ref -> [fp+0x78] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
+; V30 tmp15 [V30,T06] ( 8, 16 ) ref -> [fp+0x68] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
; V31 tmp16 [V31,T07] ( 8, 16 ) ref -> x0 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V32 tmp17 [V32 ] ( 0, 0 ) ref -> zero-ref
; V33 tmp18 [V33,T02] ( 10, 20 ) ref -> x2 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V34 tmp19 [V34 ] ( 0, 0 ) ref -> zero-ref
; V35 tmp20 [V35,T38] ( 6, 6 ) ref -> x2
-; V36 tmp21 [V36,T00] ( 16, 32 ) ref -> [fp+0x70] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.DiagnosticInfo>
-; V37 tmp22 [V37,T03] ( 10, 20 ) ref -> [fp+0x68] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.VBDiagnostic>
+; V36 tmp21 [V36,T00] ( 16, 32 ) ref -> [fp+0x60] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.DiagnosticInfo>
+; V37 tmp22 [V37,T03] ( 10, 20 ) ref -> [fp+0x58] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.VBDiagnostic>
; V38 tmp23 [V38,T53] ( 3, 3 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
; V39 tmp24 [V39,T54] ( 3, 3 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V40 tmp25 [V40 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
@@ -54,9 +54,9 @@
;* V43 tmp28 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
;* V44 tmp29 [V44 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
;* V45 tmp30 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V46 tmp31 [V46,T46] ( 5, 5 ) byref -> [fp+0x60] spill-single-def "Inlining Arg"
-; V47 tmp32 [V47,T56] ( 4, 2 ) ref -> [fp+0x58] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V48 tmp33 [V48,T57] ( 4, 2 ) ref -> [fp+0x50] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+; V46 tmp31 [V46,T46] ( 5, 5 ) byref -> [fp+0x50] spill-single-def "Inlining Arg"
+; V47 tmp32 [V47,T56] ( 4, 2 ) ref -> [fp+0x48] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V48 tmp33 [V48,T57] ( 4, 2 ) ref -> [fp+0x40] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
; V49 tmp34 [V49,T63] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
; V50 tmp35 [V50,T58] ( 4, 2 ) int -> x26 "Inline return value spill temp"
; V51 tmp36 [V51,T64] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
@@ -64,7 +64,7 @@
;* V53 tmp38 [V53,T78] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
; V54 tmp39 [V54,T47] ( 4, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
; V55 tmp40 [V55,T59] ( 4, 2 ) int -> x26 "Inline stloc first use temp"
-; V56 tmp41 [V56,T10] ( 15, 14.02) ref -> [fp+0x48] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
+; V56 tmp41 [V56,T10] ( 15, 14.02) ref -> [fp+0x38] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
; V57 tmp42 [V57,T11] ( 16, 14 ) ref -> x3 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
; V58 tmp43 [V58,T81] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V59 tmp44 [V59,T26] ( 6, 9 ) ref -> x1 "CASTCLASS eval op1"
@@ -74,27 +74,27 @@
; V63 tmp48 [V63,T28] ( 6, 8 ) ref -> registers class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
; V64 tmp49 [V64,T31] ( 4, 8 ) ref -> x4 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
;* V65 tmp50 [V65 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
-; V66 tmp51 [V66 ] ( 11, 10.02) struct (24) [fp+0x90] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
+; V66 tmp51 [V66 ] ( 11, 10.02) struct (24) [fp+0x80] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
;* V67 tmp52 [V67 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
;* V68 tmp53 [V68 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
-; V69 tmp54 [V69,T15] ( 6, 12 ) ref -> [fp+0x40] class-hnd exact "Inlining Arg" <<unknown class>>
-; V70 tmp55 [V70,T32] ( 4, 8 ) ref -> [fp+0x38] class-hnd "Inlining Arg" <System.Object[]>
+; V69 tmp54 [V69,T15] ( 6, 12 ) ref -> [fp+0x30] class-hnd exact "Inlining Arg" <<unknown class>>
+; V70 tmp55 [V70,T32] ( 4, 8 ) ref -> [fp+0x28] class-hnd "Inlining Arg" <System.Object[]>
;* V71 tmp56 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
; V72 tmp57 [V72,T21] ( 10, 10 ) ref -> x0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
; V73 tmp58 [V73,T82] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V74 tmp59 [V74,T16] ( 6, 12 ) ref -> x1 "CASTCLASS eval op1"
; V75 tmp60 [V75,T30] ( 6, 8 ) long -> x3 "fgMakeTemp is creating a new local variable"
-; V76 tmp61 [V76,T05] ( 10, 18 ) ref -> [fp+0x30] class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
+; V76 tmp61 [V76,T05] ( 10, 18 ) ref -> [fp+0x20] class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
; V77 tmp62 [V77,T33] ( 4, 8 ) ref -> x3 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
; V78 tmp63 [V78,T34] ( 4, 8 ) ref -> x0 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Location>
; V79 tmp64 [V79,T83] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V80 tmp65 [V80,T01] ( 12, 24 ) ref -> [fp+0x28] class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V81 tmp66 [V81,T35] ( 4, 8 ) ref -> [fp+0x20] class-hnd exact "Inlining Arg" <System.String>
+; V80 tmp65 [V80,T01] ( 12, 24 ) ref -> [fp+0x18] class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V81 tmp66 [V81,T35] ( 4, 8 ) ref -> [fp+0x10] class-hnd exact "Inlining Arg" <System.String>
; V82 tmp67 [V82,T17] ( 6, 12 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>>
; V83 tmp68 [V83,T36] ( 8, 7.56) ref -> x3 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport[]>
; V84 tmp69 [V84,T25] ( 10, 9.34) int -> x2 "Inline stloc first use temp"
; V85 tmp70 [V85,T29] ( 6, 8 ) ref -> x1 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
-; V86 tmp71 [V86 ] ( 5, 5.50) ref -> [fp+0xC8] do-not-enreg[X] addr-exposed "field V06._node (fldOffset=0x0)" P-DEP
+; V86 tmp71 [V86 ] ( 5, 5.50) ref -> [fp+0xB8] do-not-enreg[X] addr-exposed "field V06._node (fldOffset=0x0)" P-DEP
;* V87 tmp72 [V87,T79] ( 0, 0 ) ref -> zero-ref single-def "field V07._source (fldOffset=0x0)" P-INDEP
;* V88 tmp73 [V88 ] ( 0, 0 ) ref -> zero-ref "field V40._source (fldOffset=0x0)" P-INDEP
;* V89 tmp74 [V89 ] ( 0, 0 ) ref -> zero-ref "field V41._node (fldOffset=0x0)" P-INDEP
@@ -119,33 +119,27 @@
; V108 cse4 [V108,T12] ( 18, 13 ) long -> x25 "CSE - aggressive"
; V109 cse5 [V109,T22] ( 10, 10 ) long -> x22 "CSE - moderate"
; V110 rat0 [V110,T77] ( 2, 1 ) long -> x0 "Spilling to split statement for tree"
-; TEMP_01 byref -> [fp+0x18]
;
-; Lcl frame size = 192
+; Lcl frame size = 176
G_M28747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #0xD1FFAB1E]!
- stp x19, x20, [sp, #0xD0]
- stp x21, x22, [sp, #0xE0]
- stp x23, x24, [sp, #0xF0]
- stp x25, x26, [sp, #0xD1FFAB1E]
+ stp x19, x20, [sp, #0xC0]
+ stp x21, x22, [sp, #0xD0]
+ stp x23, x24, [sp, #0xE0]
+ stp x25, x26, [sp, #0xF0]
stp x27, x28, [sp, #0xD1FFAB1E]
mov fp, sp
- add x9, fp, #24
+ add x9, fp, #128
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, #0xA0]
- str xzr, [x9, #0xB0]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
; gcrRegs +[x20]
mov x21, xzr
- ;; size=76 bbWeight=1 PerfScore 16.00
+ ;; size=56 bbWeight=1 PerfScore 11.00
G_M28747_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21]
movz x22, #0xD1FFAB1E
@@ -375,11 +369,11 @@ G_M28747_IG11: ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
ldrsb wzr, [x26]
add x2, x26, #48
; byrRegs +[x2]
- str x2, [fp, #0x60] // [V46 tmp31]
+ str x2, [fp, #0x50] // [V46 tmp31]
; GC ptr vars +{V46}
ldr x3, [x2]
; gcrRegs +[x3]
- str x3, [fp, #0x58] // [V47 tmp32]
+ str x3, [fp, #0x48] // [V47 tmp32]
; GC ptr vars +{V47}
cbnz x3, G_M28747_IG12
ldr x0, [x26, #0x18]
@@ -392,7 +386,7 @@ G_M28747_IG11: ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
; byrRegs -[x2]
mov x2, x0
; gcrRegs +[x2]
- str x2, [fp, #0x50] // [V48 tmp33]
+ str x2, [fp, #0x40] // [V48 tmp33]
; GC ptr vars +{V48}
cbz x2, G_M28747_IG12
mov x0, x26
@@ -407,7 +401,7 @@ G_M28747_IG11: ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
sxtw w2, w0
mov x1, x26
; gcrRegs +[x1]
- ldr x0, [fp, #0x50] // [V48 tmp33]
+ ldr x0, [fp, #0x40] // [V48 tmp33]
; gcrRegs +[x0]
ldr x3, [x0]
ldr x3, [x3, #0x68]
@@ -417,7 +411,7 @@ G_M28747_IG11: ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
; gcrRegs -[x1 x26]
mov x1, x0
; gcrRegs +[x1]
- ldr x26, [fp, #0x60] // [V46 tmp31]
+ ldr x26, [fp, #0x50] // [V46 tmp31]
; byrRegs +[x26]
cbz x26, G_M28747_IG72
mov x0, x26
@@ -432,19 +426,19 @@ G_M28747_IG11: ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
mov x26, x3
; gcrRegs +[x26]
; byrRegs -[x26]
- str x26, [fp, #0x58] // [V47 tmp32]
+ str x26, [fp, #0x48] // [V47 tmp32]
; GC ptr vars +{V47}
;; size=300 bbWeight=0.50 PerfScore 43.00
G_M28747_IG12: ; bbWeight=0.50, gcVars=00000000000000000100000000000000 {V47}, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0 x3 x26]
; GC ptr vars -{V46}
- ldr x3, [fp, #0x58] // [V47 tmp32]
+ ldr x3, [fp, #0x48] // [V47 tmp32]
; gcrRegs +[x3]
- str x3, [fp, #0xC8] // [V86 tmp71]
- ldr x0, [fp, #0xC8] // [V86 tmp71]
+ str x3, [fp, #0xB8] // [V86 tmp71]
+ ldr x0, [fp, #0xB8] // [V86 tmp71]
; gcrRegs +[x0]
cbz x0, G_M28747_IG15
- ldr x0, [fp, #0xC8] // [V86 tmp71]
+ ldr x0, [fp, #0xB8] // [V86 tmp71]
ldr x0, [x0, #0x18]
mov x1, x0
; gcrRegs +[x1]
@@ -483,8 +477,8 @@ G_M28747_IG16: ; bbWeight=0.50, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x
ble G_M28747_IG41
;; size=24 bbWeight=0.50 PerfScore 3.25
G_M28747_IG17: ; bbWeight=3.96, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x28}, byrefRegs=0000 {}, byref, isz
- add x0, fp, #200 // [V06 loc4]
- str w3, [fp, #0xC4] // [V09 loc7]
+ add x0, fp, #184 // [V06 loc4]
+ str w3, [fp, #0xB4] // [V09 loc7]
mov w2, w3
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -495,7 +489,7 @@ G_M28747_IG17: ; bbWeight=3.96, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x
ldr x4, [x4]
blr x4
; gcrRegs +[x0]
- add x8, fp, #168 // [V10 loc8]
+ add x8, fp, #152 // [V10 loc8]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax:get_ImportsClauses():Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -535,7 +529,7 @@ G_M28747_IG18: ; bbWeight=1.98, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x
G_M28747_IG19: ; bbWeight=1.98, gcrefRegs=18980004 {x2 x19 x20 x23 x27 x28}, byrefRegs=0000 {}, byref, isz
mov x21, x2
; gcrRegs +[x21]
- ldr x3, [fp, #0xB0] // [V10 loc8+0x08]
+ ldr x3, [fp, #0xA0] // [V10 loc8+0x08]
; gcrRegs +[x3]
cbz x3, G_M28747_IG77
ldr x4, [x3, #0x18]
@@ -574,7 +568,7 @@ G_M28747_IG22: ; bbWeight=1.98, gcrefRegs=18B80004 {x2 x19 x20 x21 x23 x2
;; size=8 bbWeight=1.98 PerfScore 2.97
G_M28747_IG23: ; bbWeight=1.98, gcrefRegs=18B80008 {x3 x19 x20 x21 x23 x27 x28}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2 x4] +[x3]
- ldr w0, [fp, #0xA8] // [V10 loc8]
+ ldr w0, [fp, #0x98] // [V10 loc8]
cbz w0, G_M28747_IG77
mov x0, x3
; gcrRegs +[x0]
@@ -616,15 +610,15 @@ G_M28747_IG27: ; bbWeight=1.98, gcrefRegs=18B80010 {x4 x19 x20 x21 x23 x2
; gcrRegs -[x2]
ldrsb wzr, [x4]
ldr w2, [x4, #0x20]
- str x4, [fp, #0x48] // [V56 tmp41]
+ str x4, [fp, #0x38] // [V56 tmp41]
; GC ptr vars +{V56}
mov x3, x4
; gcrRegs +[x3]
...
-8 (-0.72%) : 283548.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
@@ -27,7 +27,7 @@
;* V16 tmp10 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V18 tmp12 [V18,T00] ( 8, 24 ) ref -> x26 class-hnd exact "Inlining Arg" <System.String>
-; V19 tmp13 [V19,T21] ( 2, 0.04) ubyte -> x14 "Inline return value spill temp"
+;* V19 tmp13 [V19,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp14 [V20 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp15 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V22 tmp16 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -303,10 +303,8 @@ G_M10809_IG19: ; bbWeight=0.02, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
; gcrRegs -[x3]
; byrRegs -[x0 x27]
; gcr arg pop 0
- cmp w0, #0
- cset x14, eq
- cbz w14, G_M10809_IG26
- ;; size=80 bbWeight=0.02 PerfScore 0.38
+ cbnz w0, G_M10809_IG26
+ ;; size=72 bbWeight=0.02 PerfScore 0.36
G_M10809_IG20: ; bbWeight=0.04, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
ldr w14, [fp, #0x18] // [V05 loc3]
mov w15, #0xD1FFAB1E
@@ -538,7 +536,7 @@ G_M10809_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_windows #0
;; size=136 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1112, prolog size 36, PerfScore 149.72, instruction count 278, allocated bytes for code 1112 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 1104, prolog size 36, PerfScore 149.70, instruction count 276, allocated bytes for code 1104 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -549,7 +547,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 278 (0x00116) Actual length = 1112 (0x000458)
+ Function Length : 276 (0x00114) Actual length = 1104 (0x000450)
---- 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.SegmentedHashSet
1[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.ConcurrentDictionary
2[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
-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]
@@ -1262,9 +1258,6 @@ G_M8186_IG92: ; bbWeight=0.09, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
sub w0, w0, w1
cmp w0, w28
ble G_M8186_IG93
- add x14, x21, #8
- ; byrRegs +[x14]
- str x14, [fp, #-0x90] // [TEMP_01]
ldr x26, [x21, #0x20]
; gcrRegs +[x26]
add w1, w1, w28
@@ -1273,7 +1266,6 @@ G_M8186_IG92: ; 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]
@@ -1282,7 +1274,7 @@ G_M8186_IG92: ; 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]
@@ -1293,7 +1285,7 @@ G_M8186_IG92: ; bbWeight=0.09, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
add w0, w0, #1
str w0, [x21, #0x14]
b G_M8186_IG71
- ;; size=120 bbWeight=0.09 PerfScore 3.73
+ ;; size=112 bbWeight=0.09 PerfScore 3.47
G_M8186_IG93: ; bbWeight=0.01, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
str xzr, [x21, #0x08]
@@ -1450,7 +1442,7 @@ G_M8186_IG106: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=32 bbWeight=0 PerfScore 0.00
-; Total bytes of code 3208, prolog size 88, PerfScore 661.49, instruction count 802, allocated bytes for code 3208 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
+; Total bytes of code 3188, prolog size 76, PerfScore 659.23, instruction count 797, allocated bytes for code 3188 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
; ============================================================
Unwind Info:
@@ -1461,7 +1453,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 766 (0x002fe) Actual length = 3064 (0x000bf8)
+ Function Length : 761 (0x002f9) Actual length = 3044 (0x000be4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-0.60%) : 275343.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
@@ -167,7 +167,6 @@
; V155 cse16 [V155,T59] ( 3, 0.08) int -> x27 "CSE - conservative"
; V156 cse17 [V156,T67] ( 2, 0.00) int -> x1 "CSE - conservative"
; V157 rat0 [V157,T26] ( 5, 7.06) ref -> x21 class-hnd "replacement local" <System.Collections.Generic.List`1[System.String]>
-; TEMP_01 byref -> [fp-0x90]
;
; Lcl frame size = 64
@@ -180,11 +179,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] // [V138 PSPSym]
movz x2, #0xD1FFAB1E
@@ -196,7 +192,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]
@@ -1260,9 +1256,6 @@ G_M8186_IG88: ; bbWeight=0.03, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
;; size=48 bbWeight=0.03 PerfScore 0.43
G_M8186_IG89: ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x26 x28]
- add x14, x20, #32
- ; byrRegs +[x14]
- str x14, [fp, #-0x90] // [TEMP_01]
mov x0, x26
; gcrRegs +[x0]
mov x1, xzr
@@ -1271,7 +1264,6 @@ G_M8186_IG89: ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byre
ldr x2, [x2, #0x28]
blr x2
; gcrRegs -[x26]
- ; byrRegs -[x14]
; gcr arg pop 0
ldr w2, [x28, #0x08]
mov x1, x28
@@ -1284,7 +1276,7 @@ G_M8186_IG89: ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byre
blr x3
; gcrRegs -[x1 x28]
; gcr arg pop 0
- ldr x14, [fp, #-0x90] // [TEMP_01]
+ add x14, x20, #32
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
@@ -1299,7 +1291,7 @@ G_M8186_IG89: ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byre
; gcrRegs -[x15]
cmp w14, w15
blt G_M8186_IG93
- ;; size=100 bbWeight=0.00 PerfScore 0.01
+ ;; size=92 bbWeight=0.00 PerfScore 0.01
G_M8186_IG90: ; bbWeight=0.03, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
str xzr, [x20, #0x20]
@@ -1511,7 +1503,7 @@ G_M8186_IG108: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=32 bbWeight=0 PerfScore 0.00
-; Total bytes of code 3360, prolog size 88, PerfScore 649.89, instruction count 840, allocated bytes for code 3360 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
+; Total bytes of code 3340, prolog size 76, PerfScore 647.89, instruction count 835, allocated bytes for code 3340 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
; ============================================================
Unwind Info:
@@ -1522,7 +1514,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 804 (0x00324) Actual length = 3216 (0x000c90)
+ Function Length : 799 (0x0031f) Actual length = 3196 (0x000c7c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-0.56%) : 153084.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.35) 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"
+; 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] ( 31, 6.34) 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"
+; 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] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V100 rat6 [V100,T43] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V101 rat7 [V101,T11] ( 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,T02] ( 0, 0 ) long -> zero-ref "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] ( 0, 0 ) long -> zero-ref "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] ( 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,T02] ( 0, 0 ) long -> zero-ref "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] ( 0, 0 ) long -> zero-ref "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] ( 0, 0 ) long -> zero-ref "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_IG45
+ cbz x20, G_M33517_IG46
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_IG46
+ cbnz x23, G_M33517_IG47
ldr x0, [x20]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M33517_IG11
+ bne G_M33517_IG13
;; size=32 bbWeight=1 PerfScore 10.00
G_M33517_IG05: ; bbWeight=0.58, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
mov x0, x20
@@ -215,7 +212,7 @@ G_M33517_IG07: ; bbWeight=1, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefReg
...
+0 (0.00%) : 156043.dasm - Roslyn.Utilities.AsyncLazy
1[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) [fp+0x30] 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+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Roslyn.Utilities.AsyncLazy`1+WaitThatValidatesInvariants[System.__Canon]>
-; V05 loc2 [V05,T31] ( 2, 2.00) ref -> x20 class-hnd single-def <<unknown class>>
+; V05 loc2 [V05,T29] ( 2, 2.00) ref -> x20 class-hnd single-def <<unknown class>>
; V06 loc3 [V06,T21] ( 9, 4 ) ref -> [fp+0x10] 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,T25] ( 4, 3.00) ref -> x20
@@ -26,11 +26,11 @@
;* V14 tmp7 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V15 tmp8 [V15,T22] ( 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,T33] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
-; V18 tmp11 [V18,T43] ( 2, 0 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
-; V19 tmp12 [V19,T29] ( 3, 2 ) ref -> x21 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.__Canon]>
+; V17 tmp10 [V17,T31] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V18 tmp11 [V18,T40] ( 2, 0 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
+; V19 tmp12 [V19,T27] ( 3, 2 ) ref -> x21 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.__Canon]>
; V20 tmp13 [V20,T05] ( 10, 10 ) ref -> x20 class-hnd "Inlining Arg" <Roslyn.Utilities.AsyncLazy`1+Request[System.__Canon]>
-; V21 tmp14 [V21,T34] ( 2, 0 ) ubyte -> x1 "Inline return value spill temp"
+; V21 tmp14 [V21,T32] ( 2, 0 ) ubyte -> x1 "Inline return value spill temp"
; V22 tmp15 [V22,T24] ( 3, 4 ) byref -> x22 "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]>
@@ -40,41 +40,38 @@
; V28 tmp21 [V28,T17] ( 2, 1 ) ubyte -> x25 "Inline stloc first use temp"
; V29 tmp22 [V29,T00] ( 9, 40 ) ref -> x24 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
; V30 tmp23 [V30,T07] ( 3, 9 ) ref -> x22 class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V31 tmp24 [V31,T32] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V31 tmp24 [V31,T30] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
; V32 tmp25 [V32,T15] ( 5, 5 ) int -> x14 "Inline stloc first use temp"
-; V33 tmp26 [V33,T30] ( 3, 2 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V33 tmp26 [V33,T28] ( 3, 2 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
; V34 tmp27 [V34,T03] ( 3, 12 ) ref -> x1 class-hnd "Inline stloc first use temp" <System.Object>
; V35 tmp28 [V35,T04] ( 3, 12 ) byref -> x0 "Inlining Arg"
; V36 tmp29 [V36,T06] ( 2, 10 ) ref -> x1 class-hnd exact "Inlining Arg" <System.Object>
; V37 tmp30 [V37 ] ( 2, 0 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.SpinWait>
-; V38 tmp31 [V38,T37] ( 3, 0 ) ref -> x21 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
+; V38 tmp31 [V38,T34] ( 3, 0 ) ref -> x21 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,T20] ( 4, 4.18) byref -> x22 "Inlining Arg"
-; V41 tmp34 [V41,T28] ( 5, 2.18) ref -> x23 class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
+; V41 tmp34 [V41,T26] ( 5, 2.18) ref -> x23 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, 5 ) ref -> [fp+0x30] do-not-enreg[X] addr-exposed single-def "field V02._source (fldOffset=0x0)" P-DEP
; V44 tmp37 [V44 ] ( 3, 2 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V04.<asyncLazy>P (fldOffset=0x0)" P-DEP
; V45 tmp38 [V45 ] ( 2, 0 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V37._count (fldOffset=0x0)" P-DEP
-; V46 tmp39 [V46,T44] ( 2, 0 ) ref -> x0 "argument with side effect"
-; V47 tmp40 [V47,T45] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V48 tmp41 [V48,T46] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V49 PSPSym [V49,T36] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
+; V46 tmp39 [V46,T41] ( 2, 0 ) ref -> x0 "argument with side effect"
+; V47 tmp40 [V47,T42] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V48 tmp41 [V48,T43] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V49 PSPSym [V49,T33] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
; V50 cse0 [V50,T01] ( 6, 15 ) byref -> x0 multi-def "CSE - aggressive"
; V51 cse1 [V51,T23] ( 4, 4 ) byref -> x21 "CSE - moderate"
; V52 cse2 [V52,T14] ( 10, 5.20) long -> x21 multi-def "CSE - aggressive"
-; V53 rat0 [V53,T38] ( 3, 0 ) long -> x1 "Spilling to split statement for tree"
-; V54 rat1 [V54,T39] ( 3, 0 ) long -> x2 "runtime lookup"
-; V55 rat2 [V55,T40] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V53 rat0 [V53,T35] ( 3, 0 ) long -> x1 "Spilling to split statement for tree"
+; V54 rat1 [V54,T36] ( 3, 0 ) long -> x2 "runtime lookup"
+; V55 rat2 [V55,T37] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
; V56 rat3 [V56,T18] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
; V57 rat4 [V57,T11] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
; V58 rat5 [V58,T12] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V59 rat6 [V59,T27] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V60 rat7 [V60,T35] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V61 rat8 [V61,T26] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V62 rat9 [V62,T19] ( 3, 4.40) long -> x21 "Spilling to split statement for tree"
-; V63 rat10 [V63,T13] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"
-; V64 rat11 [V64,T41] ( 3, 0 ) long -> x1 "Spilling to split statement for tree"
-; V65 rat12 [V65,T42] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V59 rat6 [V59,T19] ( 3, 4.40) long -> x21 "Spilling to split statement for tree"
+; V60 rat7 [V60,T13] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"
+; V61 rat8 [V61,T38] ( 3, 0 ) long -> x1 "Spilling to split statement for tree"
+; V62 rat9 [V62,T39] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 56
@@ -275,7 +272,7 @@ G_M38013_IG19: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x1, [x21, #0x38]
ldr x1, [x1]
ldr x11, [x1, #0x60]
- cbz x11, G_M38013_IG25
+ cbz x11, G_M38013_IG24
;; size=24 bbWeight=1 PerfScore 15.00
G_M38013_IG20: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
@@ -316,7 +313,7 @@ G_M38013_IG22: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000
; byrRegs +[x22]
ldr x14, [x22]
; gcrRegs +[x14]
- cbz x14, G_M38013_IG28
+ cbz x14, G_M38013_IG26
;; size=12 bbWeight=1 PerfScore 4.50
G_M38013_IG23: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=600000 {x21 x22}, byref
; gcrRegs -[x14]
@@ -329,11 +326,22 @@ G_M38013_IG23: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=600000
; byrRegs -[x1]
cmp w1, #0
cset x1, ne
- b G_M38013_IG36
+ b G_M38013_IG29
;; size=24 bbWeight=0 PerfScore 0.00
-G_M38013_IG24: ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x23-x24]
+G_M38013_IG24: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
; byrRegs -[x21-x22]
+ mov x0, x21
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov x11, x0
+ b G_M38013_IG20
+ ;; size=28 bbWeight=0.20 PerfScore 0.90
+G_M38013_IG25: ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x20 x23-x24]
add x14, x24, #56
; byrRegs +[x14]
mov x15, x23
@@ -349,55 +357,16 @@ G_M38013_IG24: ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRe
; byrRegs -[x0]
ldr x22, [x24, #0x28]
; gcrRegs +[x22]
- cbz x22, G_M38013_IG26
+ cbz x22, G_M38013_IG42
b G_M38013_IG44
;; size=40 bbWeight=4 PerfScore 56.00
-G_M38013_IG25: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20 x22 x24]
- mov x0, x21
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov x11, x0
- b G_M38013_IG20
- ;; size=28 bbWeight=0.20 PerfScore 0.90
-G_M38013_IG26: ; bbWeight=1, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x20 x24]
- add x0, x24, #32
- ; byrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- ; gcrRegs +[x1]
- cbz x0, G_M38013_IG42
- ;; size=24 bbWeight=1 PerfScore 6.00
-G_M38013_IG27: ; bbWeight=4, gcrefRegs=1180002 {x1 x19 x20 x24}, byrefRegs=0001 {x0}, byref, isz
- bl <unknown method>
- ; gcrRegs -[x1] +[x0]
- ; byrRegs -[x0]
- ; gcr arg pop 0
- mov x1, x0
- ; gcrRegs +[x1]
- cbz x1, G_M38013_IG45
- mov x0, x24
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x0-x1 x24]
- ; gcr arg pop 0
- b G_M38013_IG45
- ;; size=40 bbWeight=4 PerfScore 38.00
-G_M38013_IG28: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
+G_M38013_IG26: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
+ ; gcrRegs -[x22 x24]
; byrRegs +[x21]
ldapr w14, [x21]
- tbz w14, #21, G_M38013_IG38
+ tbz w14, #21, G_M38013_IG31
;; size=8 bbWeight=1 PerfScore 4.00
-G_M38013_IG29: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M38013_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x21]
mov x0, x19
; gcrRegs +[x0]
@@ -423,7 +392,7 @@ G_M38013_IG29: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs -[x0]
; gcr arg pop 0
cmp w0, #0
- ble G_M38013_IG37
+ ble G_M38013_IG30
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Threading.Tasks.Task:get_Exception():System.AggregateException:this
@@ -451,60 +420,18 @@ G_M38013_IG29: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcr arg pop 0
b G_M38013_IG45
;; size=160 bbWeight=0 PerfScore 0.00
-G_M38013_IG30: ; bbWeight=0, gcrefRegs=1180001 {x0 x19 x20 x24}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0 x24]
- movz x1, #0xD1FFAB1E // code for <unknown method>
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- ; gcrRegs -[x0]
- ; gcr arg pop 0
- b G_M38013_IG26
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M38013_IG31: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x24]
- cbnz w25, G_M38013_IG45
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M38013_IG32: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ldr x21, [x20, #0x08]
- ; gcrRegs +[x21]
- ldrsb wzr, [x21]
- str wzr, [fp, #0x20] // [V37 tmp30]
- b G_M38013_IG34
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M38013_IG33: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
- add x0, fp, #32 // [V37 tmp30]
- mov w1, #20
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcr arg pop 0
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M38013_IG34: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- add x0, x21, #52
- ; byrRegs +[x0]
- ldapr w0, [x0]
- ; byrRegs -[x0]
- mov w1, #0xD1FFAB1E
- tst w0, w1
- beq G_M38013_IG33
- b G_M38013_IG45
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M38013_IG35: ; bbWeight=0, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x21] +[x23-x24]
- cbz w0, G_M38013_IG32
- b G_M38013_IG24
+G_M38013_IG28: ; bbWeight=0, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x23-x24]
+ cbz w0, G_M38013_IG38
+ b G_M38013_IG25
...
+0 (0.00%) : 17120.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet
1[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,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%) : 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,T13] ( 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"
@@ -595,9 +595,7 @@ G_M64835_IG35: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
b G_M64835_IG26
;; size=64 bbWeight=0 PerfScore 0.00
G_M64835_IG36: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
- 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]
@@ -606,8 +604,11 @@ G_M64835_IG36: ; 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]
@@ -618,7 +619,7 @@ G_M64835_IG36: ; 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_IG45
;; size=64 bbWeight=0 PerfScore 0.00
@@ -921,8 +922,8 @@ G_M64835_IG56: ; bbWeight=0, gcVars=0000000040000200 {V04 V06}, gcrefRegs
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
@@ -933,7 +934,7 @@ G_M64835_IG56: ; bbWeight=0, gcVars=0000000040000200 {V04 V06}, gcrefRegs
; 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
@@ -941,10 +942,10 @@ G_M64835_IG56: ; bbWeight=0, gcVars=0000000040000200 {V04 V06}, gcrefRegs
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_IG57: ; bbWeight=1.36, gcVars=0000000040000201 {V04 V06 V08}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref, isz
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
-8 (-1.74%) : 97684.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)
@@ -17,7 +17,7 @@
; V07 tmp2 [V07,T06] ( 6, 8 ) byref -> x26
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V09 tmp4 [V09,T02] ( 8, 12 ) long -> x11 "VirtualCall with runtime lookup"
-; V10 tmp5 [V10,T12] ( 4, 4 ) int -> registers
+; V10 tmp5 [V10,T12] ( 2, 3.96) int -> x0
; V11 tmp6 [V11,T07] ( 4, 8 ) ref -> x0 "argument with side effect"
; V12 cse0 [V12,T03] ( 4, 11.88) long -> x21 "CSE - aggressive"
; V13 cse1 [V13,T09] ( 5, 7 ) int -> x23 "CSE - aggressive"
@@ -121,8 +121,8 @@ G_M22994_IG09: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=5000000
; byrRegs -[x26]
; gcr arg pop 0
cmp w0, #0
- cset x21, eq
- cbnz w21, G_M22994_IG22
+ cset x0, eq
+ cbnz w0, G_M22994_IG22
;; size=32 bbWeight=1.98 PerfScore 24.75
G_M22994_IG10: ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz
add w22, w22, #1
@@ -209,10 +209,8 @@ G_M22994_IG18: ; 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_IG22
- ;; size=44 bbWeight=0.02 PerfScore 0.34
+ cbz w0, G_M22994_IG22
+ ;; size=36 bbWeight=0.02 PerfScore 0.32
G_M22994_IG19: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
add w22, w22, #1
cmp w23, w22
@@ -247,7 +245,7 @@ G_M22994_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 460, prolog size 40, PerfScore 125.20, instruction count 115, allocated bytes for code 460 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 452, prolog size 40, PerfScore 125.18, instruction count 113, allocated bytes for code 452 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -258,7 +256,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 115 (0x00073) Actual length = 460 (0x0001cc)
+ Function Length : 113 (0x00071) Actual length = 452 (0x0001c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-0.78%) : 156054.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
@@ -27,7 +27,7 @@
;* V16 tmp10 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V18 tmp12 [V18,T00] ( 8, 24 ) ref -> x26 class-hnd exact "Inlining Arg" <System.String>
-; V19 tmp13 [V19,T21] ( 2, 0.04) ubyte -> x14 "Inline return value spill temp"
+;* V19 tmp13 [V19,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp14 [V20 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp15 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V22 tmp16 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -274,10 +274,8 @@ G_M10809_IG15: ; bbWeight=0.02, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
; gcrRegs -[x3]
; byrRegs -[x0 x27]
; gcr arg pop 0
- cmp w0, #0
- cset x14, eq
- cbz w14, G_M10809_IG21
- ;; size=80 bbWeight=0.02 PerfScore 0.38
+ cbnz w0, G_M10809_IG21
+ ;; size=72 bbWeight=0.02 PerfScore 0.36
G_M10809_IG16: ; bbWeight=0.04, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
ldr w14, [fp, #0x18] // [V05 loc3]
mov w15, #0xD1FFAB1E
@@ -499,7 +497,7 @@ G_M10809_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_windows #0
;; size=136 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1032, prolog size 36, PerfScore 144.47, instruction count 258, allocated bytes for code 1032 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 1024, prolog size 36, PerfScore 144.45, instruction count 256, allocated bytes for code 1024 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -510,7 +508,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 258 (0x00102) Actual length = 1032 (0x000408)
+ Function Length : 256 (0x00100) Actual length = 1024 (0x000400)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-0.77%) : 159325.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
@@ -27,7 +27,7 @@
;* V16 tmp10 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V18 tmp12 [V18,T00] ( 8, 24 ) ref -> x26 class-hnd exact "Inlining Arg" <System.String>
-; V19 tmp13 [V19,T21] ( 2, 0.04) ubyte -> x14 "Inline return value spill temp"
+;* V19 tmp13 [V19,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp14 [V20 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp15 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V22 tmp16 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -275,10 +275,8 @@ G_M10809_IG15: ; bbWeight=0.02, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
; gcrRegs -[x3]
; byrRegs -[x0 x27]
; gcr arg pop 0
- cmp w0, #0
- cset x14, eq
- cbz w14, G_M10809_IG21
- ;; size=80 bbWeight=0.02 PerfScore 0.38
+ cbnz w0, G_M10809_IG21
+ ;; size=72 bbWeight=0.02 PerfScore 0.36
G_M10809_IG16: ; bbWeight=0.04, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
ldr w14, [fp, #0x18] // [V05 loc3]
mov w15, #0xD1FFAB1E
@@ -500,7 +498,7 @@ G_M10809_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_windows #0
;; size=136 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1036, prolog size 40, PerfScore 145.47, instruction count 259, allocated bytes for code 1036 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 1028, prolog size 40, PerfScore 145.45, instruction count 257, allocated bytes for code 1028 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -511,7 +509,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 259 (0x00103) Actual length = 1036 (0x00040c)
+ Function Length : 257 (0x00101) Actual length = 1028 (0x000404)
---- 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.HashSet
1[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
@@ -560,7 +557,7 @@ G_M10461_IG40: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
add sp, sp, #160
ret lr
;; size=36 bbWeight=0.50 PerfScore 4.50
-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]
@@ -572,7 +569,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
-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.SegmentedHashSet
1[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
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
Details
Improvements/regressions per collection
Collection
Contexts with diffs
Improvements
Regressions
Same size
Improvements (bytes)
Regressions (bytes)
benchmarks.run.windows.arm64.checked.mch
1
0
0
1
-0
+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
2
1
0
1
-24
+0
libraries.crossgen2.windows.arm64.checked.mch
11
11
0
0
-108
+0
libraries.pmi.windows.arm64.checked.mch
24
12
0
12
-128
+0
libraries_tests.run.windows.arm64.Release.mch
29
23
0
6
-256
+0
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
11
7
0
4
-80
+0
realworld.run.windows.arm64.checked.mch
4
2
0
2
-20
+0
smoke_tests.nativeaot.windows.arm64.checked.mch
0
0
0
0
-0
+0
82
56
0
26
-616
+0
Context information
Collection
Diffed contexts
MinOpts
FullOpts
Missed, base
Missed, diff
benchmarks.run.windows.arm64.checked.mch
24,449
4
24,445
0 (0.00%)
0 (0.00%)
benchmarks.run_pgo.windows.arm64.checked.mch
98,319
48,543
49,776
114 (0.12%)
114 (0.12%)
benchmarks.run_tiered.windows.arm64.checked.mch
48,505
36,685
11,820
0 (0.00%)
0 (0.00%)
coreclr_tests.run.windows.arm64.checked.mch
595,369
362,737
232,632
316 (0.05%)
316 (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,053
6
304,047
0 (0.00%)
0 (0.00%)
libraries_tests.run.windows.arm64.Release.mch
630,491
461,984
168,507
2,171 (0.34%)
2,171 (0.34%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
316,301
21,559
294,742
0 (0.00%)
0 (0.00%)
realworld.run.windows.arm64.checked.mch
33,195
3
33,192
0 (0.00%)
0 (0.00%)
smoke_tests.nativeaot.windows.arm64.checked.mch
24,181
7
24,174
0 (0.00%)
0 (0.00%)
2,318,293
931,543
1,386,750
2,601 (0.11%)
2,601 (0.11%)
jit-analyze output
benchmarks.run.windows.arm64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 10964124 (overridden on cmd)
Total bytes of diff: 10964124 (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).
coreclr_tests.run.windows.arm64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 495343752 (overridden on cmd)
Total bytes of diff: 495343728 (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 : 579631.dasm (-2.33 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 1 unchanged.
Top method improvements (bytes):
-24 (-2.33 % of base) : 579631.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
Top method improvements (percentages):
-24 (-2.33 % of base) : 579631.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
1 total methods with Code Size differences (1 improved, 0 regressed).
libraries.crossgen2.windows.arm64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 58963136 (overridden on cmd)
Total bytes of diff: 58963028 (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 : 199959.dasm (-0.53 % of base)
-12 : 202047.dasm (-0.56 % of base)
-12 : 94048.dasm (-0.68 % of base)
-8 : 169639.dasm (-1.82 % of base)
-4 : 209717.dasm (-0.19 % of base)
-4 : 240065.dasm (-0.19 % of base)
-4 : 113946.dasm (-0.10 % 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) : 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) : 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
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 79568032 (overridden on cmd)
Total bytes of diff: 79567904 (overridden on cmd)
Total bytes of delta: -128 (-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)
-20 : 184600.dasm (-0.25 % of base)
-20 : 95953.dasm (-1.06 % of base)
-12 : 218502.dasm (-0.67 % of base)
-8 : 102512.dasm (-0.15 % of base)
-8 : 283548.dasm (-0.72 % of base)
-8 : 102509.dasm (-0.18 % of base)
-4 : 248338.dasm (-0.16 % of base)
-4 : 118516.dasm (-0.10 % of base)
-4 : 220235.dasm (-0.21 % of base)
-4 : 220236.dasm (-0.16 % of base)
-4 : 248337.dasm (-0.20 % of base)
12 total files with Code Size differences (12 improved, 0 regressed), 12 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)
-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)
-4 (-0.20 % of base) : 248337.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
-4 (-0.16 % of base) : 248338.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) : 220236.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
Top method improvements (percentages):
-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)
-4 (-0.16 % of base) : 248338.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) : 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)
-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)
12 total methods with Code Size differences (12 improved, 0 regressed).
libraries_tests.run.windows.arm64.Release.mch
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 310410132 (overridden on cmd)
Total bytes of diff: 310409876 (overridden on cmd)
Total bytes of delta: -256 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-28 : 231484.dasm (-0.49 % of base)
-20 : 99183.dasm (-0.56 % of base)
-20 : 122796.dasm (-0.62 % of base)
-20 : 275343.dasm (-0.60 % of base)
-12 : 153084.dasm (-0.56 % of base)
-12 : 264954.dasm (-0.34 % of base)
-12 : 383593.dasm (-0.09 % of base)
-12 : 501081.dasm (-0.35 % of base)
-12 : 207046.dasm (-0.35 % of base)
-12 : 433988.dasm (-0.34 % of base)
-12 : 497982.dasm (-0.34 % of base)
-12 : 306213.dasm (-0.35 % of base)
-12 : 383711.dasm (-0.08 % of base)
-8 : 167319.dasm (-0.06 % of base)
-8 : 288019.dasm (-0.08 % of base)
-8 : 63266.dasm (-0.12 % of base)
-8 : 122068.dasm (-0.06 % of base)
-8 : 90900.dasm (-0.12 % of base)
-4 : 280435.dasm (-0.41 % of base)
-4 : 53901.dasm (-0.19 % of base)
23 total files with Code Size differences (23 improved, 0 regressed), 6 unchanged.
Top method improvements (bytes):
-28 (-0.49 % of base) : 231484.dasm - System.Diagnostics.PerformanceCounterLib:CreateIniFile(System.String,System.String,System.Diagnostics.CounterCreationDataCollection,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)
-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)
-12 (-0.56 % of base) : 153084.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (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.35 % of base) : 501081.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % of base) : 207046.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.35 % of base) : 306213.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.08 % of base) : 383711.dasm - System.Xml.XPath.XPathDocument:LoadFromReader(System.Xml.XmlReader,int):this (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) : 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)
-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.19 % of base) : 53901.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-4 (-0.25 % of base) : 56897.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
Top method improvements (percentages):
-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)
-12 (-0.56 % of base) : 153084.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (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.35 % of base) : 501081.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-12 (-0.35 % 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) : 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)
-4 (-0.25 % of base) : 56897.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
-4 (-0.25 % of base) : 88804.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
-4 (-0.25 % of base) : 604847.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
-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)
-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)
23 total methods with Code Size differences (23 improved, 0 regressed).
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 169004112 (overridden on cmd)
Total bytes of diff: 169004032 (overridden on cmd)
Total bytes of delta: -80 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-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.77 % of base)
-8 : 156054.dasm (-0.78 % of base)
-8 : 97684.dasm (-1.74 % of base)
-4 : 186374.dasm (-0.21 % of base)
7 total files with Code Size differences (7 improved, 0 regressed), 4 unchanged.
Top method improvements (bytes):
-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.77 % 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):
-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.77 % 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)
7 total methods with Code Size differences (7 improved, 0 regressed).
realworld.run.windows.arm64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15891296 (overridden on cmd)
Total bytes of diff: 15891276 (overridden on cmd)
Total bytes of delta: -20 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-12 : 13724.dasm (-0.14 % of base)
-8 : 31371.dasm (-0.10 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 2 unchanged.
Top method improvements (bytes):
-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):
-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)
2 total methods with Code Size differences (2 improved, 0 regressed).
Diffs are based on 2,492,949 contexts (983,689 MinOpts, 1,509,260 FullOpts).
MISSED contexts: 3,862 (0.15%)
Overall (-2,177 bytes)
Collection
Base size (bytes)
Diff size (bytes)
aspnet.run.windows.x64.checked.mch
41,788,751
-94
benchmarks.run.windows.x64.checked.mch
8,749,669
+0
benchmarks.run_pgo.windows.x64.checked.mch
34,741,684
-16
coreclr_tests.run.windows.x64.checked.mch
392,888,034
-21
libraries.crossgen2.windows.x64.checked.mch
39,442,225
-191
libraries.pmi.windows.x64.checked.mch
61,196,803
-143
libraries_tests.run.windows.x64.Release.mch
279,865,544
-1,527
librariestestsnotieredcompilation.run.windows.x64.Release.mch
133,434,685
-134
realworld.run.windows.x64.checked.mch
14,170,666
-51
FullOpts (-2,177 bytes)
Collection
Base size (bytes)
Diff size (bytes)
aspnet.run.windows.x64.checked.mch
27,130,026
-94
benchmarks.run.windows.x64.checked.mch
8,749,308
+0
benchmarks.run_pgo.windows.x64.checked.mch
20,506,707
-16
coreclr_tests.run.windows.x64.checked.mch
119,345,042
-21
libraries.crossgen2.windows.x64.checked.mch
39,441,036
-191
libraries.pmi.windows.x64.checked.mch
61,083,284
-143
libraries_tests.run.windows.x64.Release.mch
101,497,228
-1,527
librariestestsnotieredcompilation.run.windows.x64.Release.mch
123,011,315
-134
realworld.run.windows.x64.checked.mch
13,780,961
-51
Example diffs
aspnet.run.windows.x64.checked.mch
-7 (-1.03%) : 17006.dasm - Microsoft.Extensions.Internal.PropertyHelper:
@@ -12,7 +12,7 @@
;
; V00 arg0 [V00,T07] ( 14,2240.75) 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,2525.62) 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>
@@ -174,13 +174,10 @@ G_M11033_IG06: ; 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 G_M11033_IG15
+ jne G_M11033_IG15
jmp G_M11033_IG12
- ;; size=133 bbWeight=3.75 PerfScore 208.13
+ ;; size=126 bbWeight=3.75 PerfScore 202.50
G_M11033_IG07: ; bbWeight=92.81, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax r14]
mov ecx, esi
@@ -394,7 +391,7 @@ G_M11033_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 680, prolog size 52, PerfScore 32147.27, instruction count 180, allocated bytes for code 680 (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 673, prolog size 52, PerfScore 32141.64, instruction count 177, allocated bytes for code 673 (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.84%) : 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)@@ -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=6.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
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=6.25 PerfScore 75.00
+ ;; size=66 bbWeight=6.25 PerfScore 67.19
G_M4592_IG02: ; bbWeight=6.25, gcVars=0000000004002002 {V01 V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01 V04 V06}
cmp gword ptr [rbp+0xE8], 0
@@ -632,20 +629,11 @@ G_M4592_IG41: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
je SHORT G_M4592_IG42
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
@@ -656,7 +644,10 @@ G_M4592_IG41: ; 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]
@@ -664,7 +655,7 @@ G_M4592_IG41: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
jmp G_M4592_IG23
- ;; size=105 bbWeight=4.00 PerfScore 115.00
+ ;; size=97 bbWeight=4.00 PerfScore 107.00
G_M4592_IG42: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbp+0xE8]
; gcrRegs +[rcx]
@@ -785,7 +776,7 @@ G_M4592_IG52: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1661, prolog size 72, PerfScore 42584.23, instruction count 372, allocated bytes for code 1661 (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 1647, prolog size 66, PerfScore 42568.42, instruction count 368, 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)
; ============================================================
Unwind Info:
-14 (-0.84%) : 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)@@ -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=6.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
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=6.25 PerfScore 75.00
+ ;; size=66 bbWeight=6.25 PerfScore 67.19
G_M4592_IG02: ; bbWeight=6.25, gcVars=0000000004002002 {V01 V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01 V04 V06}
cmp gword ptr [rbp+0xE8], 0
@@ -632,20 +629,11 @@ G_M4592_IG41: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
je SHORT G_M4592_IG42
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
@@ -656,7 +644,10 @@ G_M4592_IG41: ; 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]
@@ -664,7 +655,7 @@ G_M4592_IG41: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
jmp G_M4592_IG23
- ;; size=105 bbWeight=4.00 PerfScore 115.00
+ ;; size=97 bbWeight=4.00 PerfScore 107.00
G_M4592_IG42: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbp+0xE8]
; gcrRegs +[rcx]
@@ -785,7 +776,7 @@ G_M4592_IG52: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1661, prolog size 72, PerfScore 42584.23, instruction count 372, allocated bytes for code 1661 (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 1647, prolog size 66, PerfScore 42568.42, instruction count 368, 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)
; ============================================================
Unwind Info:
-14 (-0.32%) : 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.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] ( 7, 17.22) ref -> r14 class-hnd "replacement local" <Microsoft.AspNetCore.Mvc.ConsumesAttribute>
; V191 rat2 [V191,T48] ( 5, 0.15) ref -> r13 class-hnd "replacement local" <Microsoft.AspNetCore.Mvc.ActionConstraints.HttpMethodActionConstraint>
; V192 rat3 [V192,T47] ( 6, 0.17) ref -> r14 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=00000000000000040000000000000401 {V00 V13 V17}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V00 V10 V13 V17}
jmp SHORT G_M6458_IG05
@@ -545,20 +542,11 @@ G_M6458_IG31: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
je SHORT G_M6458_IG32
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
@@ -569,7 +557,10 @@ G_M6458_IG31: ; 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]
@@ -577,7 +568,7 @@ G_M6458_IG31: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
jmp G_M6458_IG19
- ;; size=105 bbWeight=4.00 PerfScore 115.00
+ ;; size=97 bbWeight=4.00 PerfScore 107.00
G_M6458_IG32: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbp+0x5E0]
; gcrRegs +[rcx]
@@ -2086,7 +2077,7 @@ G_M6458_IG154: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 4377, prolog size 87, PerfScore 29291.68, instruction count 976, allocated bytes for code 4377 (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 4363, prolog size 81, PerfScore 29282.43, instruction count 972, allocated bytes for code 4363 (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.HashSet
1[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] ( 7, 17.22) ref -> r14 class-hnd "replacement local" <Microsoft.AspNetCore.Mvc.ConsumesAttribute>
; V191 rat2 [V191,T48] ( 5, 0.15) ref -> r13 class-hnd "replacement local" <Microsoft.AspNetCore.Mvc.ActionConstraints.HttpMethodActionConstraint>
; V192 rat3 [V192,T47] ( 6, 0.17) ref -> r14 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=00000000000000040000000000000401 {V00 V13 V17}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V00 V10 V13 V17}
jmp SHORT G_M6458_IG05
@@ -545,20 +542,11 @@ G_M6458_IG31: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
je SHORT G_M6458_IG32
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
@@ -569,7 +557,10 @@ G_M6458_IG31: ; 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]
@@ -577,7 +568,7 @@ G_M6458_IG31: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
jmp G_M6458_IG19
- ;; size=105 bbWeight=4.00 PerfScore 115.00
+ ;; size=97 bbWeight=4.00 PerfScore 107.00
G_M6458_IG32: ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbp+0x5E0]
; gcrRegs +[rcx]
@@ -2086,7 +2077,7 @@ G_M6458_IG154: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 4377, prolog size 87, PerfScore 29291.68, instruction count 976, allocated bytes for code 4377 (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 4363, prolog size 81, PerfScore 29282.43, instruction count 972, allocated bytes for code 4363 (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 -> rsi 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 -> r14 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, isz
; GC ptr vars +{V06}
test r14, r14
@@ -333,7 +331,7 @@ G_M35688_IG28: ; bbWeight=0.08, gcrefRegs=5000 {r12 r14}, byrefRegs=0040
; gcrRegs -[rbx]
jmp SHORT G_M35688_IG26
;; size=2 bbWeight=0.08 PerfScore 0.17
-G_M35688_IG29: ; bbWeight=0.02, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0040 {rsi}, byref
+G_M35688_IG29: ; bbWeight=0.02, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0040 {rsi}, byref, isz
; gcrRegs +[rbx]
mov r11, r13
mov rcx, r14
@@ -343,8 +341,8 @@ G_M35688_IG29: ; bbWeight=0.02, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0
; gcr arg pop 0
mov rcx, 0xD1FFAB1E ; function address
cmp qword ptr [rbx+0x18], rcx
- je G_M35688_IG37
- ;; size=29 bbWeight=0.02 PerfScore 0.12
+ je SHORT G_M35688_IG37
+ ;; size=25 bbWeight=0.02 PerfScore 0.12
G_M35688_IG30: ; bbWeight=0, gcrefRegs=5009 {rax rbx r12 r14}, byrefRegs=0040 {rsi}, byref
mov rdx, rax
; gcrRegs +[rdx]
@@ -397,9 +395,6 @@ G_M35688_IG35: ; bbWeight=0.02, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0
G_M35688_IG36: ; 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
@@ -407,11 +402,10 @@ G_M35688_IG36: ; 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]
@@ -419,7 +413,7 @@ G_M35688_IG36: ; bbWeight=0.13, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRe
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
jmp G_M35688_IG29
- ;; size=50 bbWeight=0.13 PerfScore 2.06
+ ;; size=42 bbWeight=0.13 PerfScore 1.81
G_M35688_IG37: ; bbWeight=0.02, gcrefRegs=5009 {rax rbx r12 r14}, byrefRegs=0040 {rsi}, byref
; gcrRegs +[rax]
mov r15, gword ptr [rbx+0x08]
@@ -572,7 +566,7 @@ G_M35688_IG52: ; bbWeight=0.08, funclet epilog, nogc, extend
ret
;; size=17 bbWeight=0.08 PerfScore 0.44
-; Total bytes of code 967, prolog size 54, PerfScore 317.20, instruction count 266, allocated bytes for code 967 (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 951, prolog size 50, PerfScore 315.95, instruction count 263, allocated bytes for code 951 (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
-21 (-2.63%) : 558210.dasm - ILCompiler.LazyGenericsSupport+Graph
1+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] ( 2, 512 ) long -> rcx "spilling expr"
-;* V63 rat9 [V63,T16] ( 0, 0 ) long -> zero-ref "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_IG17
;; 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_IG14
;; 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]
@@ -226,9 +222,9 @@ G_M1799_IG15: ; bbWeight=5.71, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=00
mov ecx, r15d
;; size=3 bbWeight=5.71 PerfScore 1.43
G_M1799_IG16: ; 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_IG17: ; bbWeight=512, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+G_M1799_IG17: ; bbWeight=512, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
mov rcx, r14
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; function address
@@ -236,37 +232,30 @@ G_M1799_IG17: ; bbWeight=512, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=000
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- je G_M1799_IG30
- ;; size=24 bbWeight=512 PerfScore 2432.00
-G_M1799_IG18: ; 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
- jle SHORT G_M1799_IG19
- ;; size=17 bbWeight=128 PerfScore 1280.00
-G_M1799_IG19: ; bbWeight=512, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx]
+ je SHORT G_M1799_IG29
+ ;; size=20 bbWeight=512 PerfScore 2432.00
+G_M1799_IG18: ; bbWeight=512, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
...
+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.ArrayBuilder
1[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.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)@@ -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
-21 (-1.48%) : 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)@@ -11,7 +11,7 @@
; V00 arg0 [V00,T29] ( 7, 5.50) ref -> rdi class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax>
; V01 arg1 [V01,T14] ( 6, 11 ) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]>
; V02 arg2 [V02,T15] ( 6, 10 ) 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+0x38] 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,T20] ( 7, 10.04) ref -> rdi class-hnd exact single-def <<unknown class>>
; V05 loc2 [V05,T31] ( 5, 7 ) int -> rbp single-def
; V06 loc3 [V06,T05] ( 16, 25.04) int -> r14
@@ -19,7 +19,7 @@
; V08 loc5 [V08,T10] ( 10, 16 ) ref -> r12 class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
;* V09 loc6 [V09 ] ( 0, 0 ) ushort -> zero-ref
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax>
-; V11 loc8 [V11 ] ( 4, 4 ) struct (24) [rsp+0x20] 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,T33] ( 3, 6 ) int -> r15 single-def
; V13 loc10 [V13,T06] ( 9, 25 ) int -> rsi
; V14 loc11 [V14,T00] ( 10,106 ) ref -> rbp class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbol>
@@ -68,10 +68,10 @@
;* V57 tmp38 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
; V58 tmp39 [V58,T28] ( 2, 8 ) ref -> r8 class-hnd "Inlining Arg" <<unknown class>>
; V59 tmp40 [V59,T19] ( 3, 12 ) ref -> rcx class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
-; V60 tmp41 [V60 ] ( 2, 2 ) ref -> [rsp+0x20] do-not-enreg[X] addr-exposed "field V11.<Parent>k__BackingField (fldOffset=0x0)" P-DEP
-; V61 tmp42 [V61 ] ( 4, 4 ) ref -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V11.<Node>k__BackingField (fldOffset=0x8)" P-DEP
-; V62 tmp43 [V62 ] ( 2, 2 ) int -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V11.<Index>k__BackingField (fldOffset=0x10)" P-DEP
-; V63 tmp44 [V63 ] ( 2, 2 ) int -> [rsp+0x34] do-not-enreg[X] addr-exposed "field V11.<Position>k__BackingField (fldOffset=0x14)" P-DEP
+; V60 tmp41 [V60 ] ( 2, 2 ) ref -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V11.<Parent>k__BackingField (fldOffset=0x0)" P-DEP
+; V61 tmp42 [V61 ] ( 4, 4 ) ref -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V11.<Node>k__BackingField (fldOffset=0x8)" P-DEP
+; V62 tmp43 [V62 ] ( 2, 2 ) int -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V11.<Index>k__BackingField (fldOffset=0x10)" P-DEP
+; V63 tmp44 [V63 ] ( 2, 2 ) int -> [rsp+0x3C] do-not-enreg[X] addr-exposed "field V11.<Position>k__BackingField (fldOffset=0x14)" P-DEP
;* V64 tmp45 [V64 ] ( 0, 0 ) ref -> zero-ref "field V17.array (fldOffset=0x0)" P-INDEP
;* V65 tmp46 [V65 ] ( 0, 0 ) ref -> zero-ref "field V26.array (fldOffset=0x0)" P-INDEP
;* V66 tmp47 [V66 ] ( 0, 0 ) ref -> zero-ref "field V29.array (fldOffset=0x0)" P-INDEP
@@ -86,7 +86,6 @@
; V75 tmp56 [V75,T16] ( 6, 12 ) ref -> rax "argument with side effect"
; V76 tmp57 [V76,T17] ( 6, 12 ) ref -> rax "argument with side effect"
; V77 cse0 [V77,T01] ( 7, 88 ) long -> r14 "CSE - aggressive"
-; TEMP_01 byref -> [rsp+0x50]
;
; Lcl frame size = 88
@@ -100,10 +99,10 @@ G_M1087_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbp
push rbx
sub rsp, 88
- vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rsp+0x20], ymm4
- vmovdqa xmmword ptr [rsp+0x40], xmm4
xor eax, eax
+ mov qword ptr [rsp+0x28], rax
+ vxorps xmm4, xmm4, xmm4
+ vmovdqu ymmword ptr [rsp+0x30], ymm4
mov qword ptr [rsp+0x50], rax
mov rdi, rcx
; gcrRegs +[rdi]
@@ -111,7 +110,7 @@ G_M1087_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
mov rsi, r8
; gcrRegs +[rsi]
- ;; size=48 bbWeight=1 PerfScore 14.58
+ ;; size=47 bbWeight=1 PerfScore 13.58
G_M1087_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rdi], dil
lea rbp, bword ptr [rdi+0x28]
@@ -178,21 +177,21 @@ G_M1087_IG05: ; bbWeight=0.50, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=00
G_M1087_IG06: ; bbWeight=1, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
; byrRegs -[rbp]
- lea rdx, [rsp+0x38]
+ lea rdx, [rsp+0x40]
mov rcx, r14
; gcrRegs +[rcx]
cmp dword ptr [rcx], ecx
call [Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax:get_Arguments():Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]:this]
; gcrRegs -[rcx r14]
; gcr arg pop 0
- movsxd rdx, dword ptr [rsp+0x38]
+ movsxd rdx, dword ptr [rsp+0x40]
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[rax]
; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
- mov ebp, dword ptr [rsp+0x38]
+ mov ebp, dword ptr [rsp+0x40]
dec ebp
xor r14d, r14d
test ebp, ebp
@@ -202,7 +201,7 @@ G_M1087_IG06: ; bbWeight=1, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000
;; size=65 bbWeight=1 PerfScore 18.00
G_M1087_IG07: ; bbWeight=3.96, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- lea rcx, [rsp+0x38]
+ lea rcx, [rsp+0x40]
mov r8d, r14d
mov rdx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]
call [Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this]
@@ -223,13 +222,13 @@ G_M1087_IG08: ; bbWeight=1.98, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefReg
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax
cmp qword ptr [r15], rcx
jne G_M1087_IG45
- lea rdx, [rsp+0x20]
+ lea rdx, [rsp+0x28]
mov rcx, r15
; gcrRegs +[rcx]
call [Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax:get_Identifier():Microsoft.CodeAnalysis.SyntaxToken:this]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rcx, gword ptr [rsp+0x28]
+ mov rcx, gword ptr [rsp+0x30]
; gcrRegs +[rcx]
test rcx, rcx
jne SHORT G_M1087_IG09
@@ -369,7 +368,7 @@ G_M1087_IG16: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {},
;; size=5 bbWeight=1 PerfScore 2.00
G_M1087_IG17: ; bbWeight=0.04, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- lea rcx, [rsp+0x38]
+ lea rcx, [rsp+0x40]
mov r8d, r14d
mov rdx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]
call [Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this]
@@ -390,13 +389,13 @@ G_M1087_IG18: ; bbWeight=0.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefReg
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax
cmp qword ptr [r15], rcx
jne G_M1087_IG45
- lea rdx, [rsp+0x20]
+ lea rdx, [rsp+0x28]
mov rcx, r15
; gcrRegs +[rcx]
call [Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax:get_Identifier():Microsoft.CodeAnalysis.SyntaxToken:this]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rcx, gword ptr [rsp+0x28]
+ mov rcx, gword ptr [rsp+0x30]
; gcrRegs +[rcx]
test rcx, rcx
jne SHORT G_M1087_IG19
@@ -435,12 +434,8 @@ G_M1087_IG21: ; bbWeight=0.02, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byre
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx r13]
; byrRegs -[rcx]
- lea rcx, bword ptr [r12+0x30]
- ; byrRegs +[rcx]
- mov bword ptr [rsp+0x50], rcx
mov rcx, r15
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
call [Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:get_SyntaxTree():Microsoft.CodeAnalysis.SyntaxTree:this]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
@@ -454,7 +449,7 @@ G_M1087_IG21: ; bbWeight=0.02, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byre
call [rax+0x38]<unknown method>
; gcrRegs -[rcx rdx r15] +[rax]
; gcr arg pop 0
- mov rcx, bword ptr [rsp+0x50]
+ lea rcx, bword ptr [r12+0x30]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
@@ -462,7 +457,7 @@ G_M1087_IG21: ; bbWeight=0.02, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byre
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
jmp SHORT G_M1087_IG23
- ;; size=86 bbWeight=0.02 PerfScore 0.42
+ ;; size=76 bbWeight=0.02 PerfScore 0.38
G_M1087_IG22: ; bbWeight=0.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r12] +[r15]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol
@@ -475,13 +470,7 @@ G_M1087_IG22: ; bbWeight=0.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefReg
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov gword ptr [r12+0x28], rcx
- lea rcx, bword ptr [r12+0x30]
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- mov bword ptr [rsp+0x50], rcx
mov rcx, r15
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
call [Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:get_SyntaxTree():Microsoft.CodeAnalysis.SyntaxTree:this]
; gcrRegs -[rcx]
; gcr arg pop 0
@@ -495,14 +484,14 @@ G_M1087_IG22: ; bbWeight=0.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefReg
call [rax+0x38]<unknown method>
; gcrRegs -[rcx rdx r15] +[rax]
; gcr arg pop 0
- mov rcx, bword ptr [rsp+0x50]
+ lea rcx, bword ptr [r12+0x30]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- ;; size=86 bbWeight=0.02 PerfScore 0.37
+ ;; size=76 bbWeight=0.02 PerfScore 0.33
G_M1087_IG23: ; bbWeight=0.04, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
cmp r14d, dword ptr [rdi+0x08]
jae G_M1087_IG42
@@ -771,7 +760,7 @@ G_M1087_IG47: ; bbWeight=0, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byre
int3
;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1416, prolog size 39, PerfScore 804.76, instruction count 343, allocated bytes for code 1416 (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 1395, prolog size 38, PerfScore 803.68, instruction count 339, allocated bytes for code 1395 (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.28%) : 144270.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
@@ -46,7 +46,7 @@
;* V35 tmp23 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.Serialization.MemberMapping>
;* V36 tmp24 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.Serialization.MemberMapping>
;* V37 tmp25 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.Serialization.MemberMapping>
-; V38 tmp26 [V38,T15] ( 6, 12 ) ref -> registers "argument with side effect"
+; V38 tmp26 [V38,T15] ( 6, 12 ) ref -> rcx "argument with side effect"
; V39 tmp27 [V39,T25] ( 4, 8 ) ref -> rax "argument with side effect"
; V40 tmp28 [V40,T26] ( 4, 8 ) ref -> [rbp-0x88] "argument with side effect"
; V41 tmp29 [V41,T34] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
@@ -62,9 +62,8 @@
; V51 cse3 [V51,T33] ( 4, 3 ) ref -> rcx "CSE - moderate"
; V52 cse4 [V52,T28] ( 6, 6 ) int -> r14 "CSE - moderate"
; V53 cse5 [V53,T31] ( 4, 5 ) long -> 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
@@ -75,15 +74,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
mov rcx, 0xD1FFAB1E ; System.Xml.Serialization.ReflectionXmlSerializationReader+<>c__DisplayClass47_0
call CORINFO_HELP_NEWSFAST
@@ -109,7 +106,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
@@ -520,28 +517,19 @@ G_M44608_IG17: ; bbWeight=0.02, gcVars=0000008000000000 {V49}, 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 rdx, gword ptr [rax+0x10]
- ; gcrRegs +[rdx]
- mov rdx, gword ptr [rdx+0x10]
- mov rdx, gword ptr [rdx+0x10]
- mov gword ptr [rbp-0x88], rdx
- ; GC ptr vars +{V40}
- mov r8, gword ptr [rbp-0x98]
- ; gcrRegs +[r8]
- mov r8, gword ptr [r8+0x50]
- mov rcx, r8
+ mov rcx, gword ptr [rax+0x10]
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
- mov r8, qword ptr [r8]
- ; gcrRegs -[r8]
+ mov rcx, gword ptr [rcx+0x10]
+ mov rcx, gword ptr [rcx+0x10]
+ mov gword ptr [rbp-0x88], rcx
+ ; GC ptr vars +{V40}
+ mov rcx, gword ptr [rbp-0x98]
+ mov rcx, gword ptr [rcx+0x50]
+ mov r8, qword ptr [rcx]
mov r8, qword ptr [r8+0x48]
; GC ptr vars -{V49}
call [r8+0x30]<unknown method>
- ; gcrRegs -[rcx rdx]
+ ; gcrRegs -[rcx]
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
@@ -551,30 +539,33 @@ G_M44608_IG17: ; bbWeight=0.02, gcVars=0000008000000000 {V49}, 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 rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov rdx, gword ptr [rbp-0x48]
- ; gcrRegs +[rdx]
- mov rcx, gword ptr [rdx+0x10]
- ; gcrRegs +[rcx]
- mov r8, gword ptr [rcx+0x08]
+ mov r8, gword ptr [rbp-0x48]
; gcrRegs +[r8]
- mov gword ptr [rbp-0x80], r8
+ mov rcx, gword ptr [r8+0x10]
+ ; gcrRegs +[rcx]
+ mov rcx, gword ptr [rcx+0x08]
+ mov gword ptr [rbp-0x80], rcx
; GC ptr vars +{V27}
mov gword ptr [rbp-0x78], rax
; GC ptr vars +{V26}
lea rcx, bword ptr [rax+0x08]
; gcrRegs -[rcx]
; byrRegs +[rcx]
+ mov rdx, r8
+ ; gcrRegs +[rdx]
; GC ptr vars -{V11}
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx r8]
@@ -595,7 +586,7 @@ G_M44608_IG17: ; bbWeight=0.02, gcVars=0000008000000000 {V49}, gcrefRegs=
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
jmp G_M44608_IG20
- ;; size=218 bbWeight=0.02 PerfScore 1.04
+ ;; size=204 bbWeight=0.02 PerfScore 1.00
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]
@@ -729,7 +720,7 @@ G_M44608_IG21: ; bbWeight=0.50, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0
; gcrRegs +[rax]
;; size=148 bbWeight=0.50 PerfScore 23.12
G_M44608_IG22: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 184
+ add rsp, 168
pop rbx
pop rsi
pop rdi
@@ -847,7 +838,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
@@ -882,7 +873,7 @@ G_M44608_IG31: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
int3
;; size=26 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1796, prolog size 42, PerfScore 521.37, instruction count 406, allocated bytes for code 1796 (MethodHash=bd8b51bf) for method System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
+; Total bytes of code 1773, prolog size 33, PerfScore 520.08, instruction count 402, allocated bytes for code 1773 (MethodHash=bd8b51bf) for method System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -896,7 +887,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)
-46 (-1.14%) : 124257.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport
@@ -14,15 +14,15 @@
; V03 loc1 [V03,T41] ( 7, 5.02) ref -> rbp class-hnd exact single-def <<unknown class>>
; V04 loc2 [V04,T50] ( 4, 3 ) ref -> r15 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxTree>
; V05 loc3 [V05,T19] ( 14, 11 ) ref -> r13 class-hnd exact single-def <<unknown class>>
-; V06 loc4 [V06 ] ( 5, 5.50) struct ( 8) [rsp+0xF8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
+; V06 loc4 [V06 ] ( 5, 5.50) struct ( 8) [rsp+0xF0] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
;* V07 loc5 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Threading.CancellationToken>
; V08 loc6 [V08,T40] ( 5, 5.50) int -> r14 single-def
; V09 loc7 [V09,T04] ( 12, 18.52) int -> r12
-; V10 loc8 [V10 ] ( 12, 14 ) struct (24) [rsp+0xE0] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]>
+; V10 loc8 [V10 ] ( 12, 14 ) struct (24) [rsp+0xD8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]>
; V11 loc9 [V11,T12] ( 12, 12 ) ref -> rdi must-init class-hnd exact <Microsoft.CodeAnalysis.VisualBasic.OptionsValidator+_Closure$__0-0>
;* V12 loc10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
-; V13 loc11 [V13,T20] ( 10, 10 ) ref -> [rsp+0xB8] class-hnd <<unknown class>>
-; V14 loc12 [V14,T36] ( 6, 6 ) ref -> [rsp+0xB0] class-hnd <<unknown class>>
+; V13 loc11 [V13,T20] ( 10, 10 ) ref -> [rsp+0xB0] class-hnd <<unknown class>>
+; V14 loc12 [V14,T36] ( 6, 6 ) ref -> [rsp+0xA8] class-hnd <<unknown class>>
; V15 OutArgs [V15 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V16 tmp1 [V16,T13] ( 6, 12 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V17 tmp2 [V17 ] ( 0, 0 ) ref -> zero-ref single-def
@@ -37,15 +37,15 @@
; V26 tmp11 [V26,T60] ( 2, 2 ) ref -> r14 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.Text.SourceText>
; V27 tmp12 [V27,T61] ( 2, 2 ) ref -> r8 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions>
; V28 tmp13 [V28,T51] ( 3, 3 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V29 tmp14 [V29,T14] ( 6, 12 ) ref -> [rsp+0xA8] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.OptionsValidator+_Closure$__0-0>
-; V30 tmp15 [V30,T06] ( 8, 16 ) ref -> [rsp+0xA0] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
-; V31 tmp16 [V31,T07] ( 8, 16 ) ref -> [rsp+0x98] class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V29 tmp14 [V29,T14] ( 6, 12 ) ref -> [rsp+0xA0] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.OptionsValidator+_Closure$__0-0>
+; V30 tmp15 [V30,T06] ( 8, 16 ) ref -> [rsp+0x98] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
+; V31 tmp16 [V31,T07] ( 8, 16 ) ref -> [rsp+0x90] class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V32 tmp17 [V32 ] ( 0, 0 ) ref -> zero-ref
-; V33 tmp18 [V33,T02] ( 10, 20 ) ref -> [rsp+0x90] class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V33 tmp18 [V33,T02] ( 10, 20 ) ref -> [rsp+0x88] class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V34 tmp19 [V34 ] ( 0, 0 ) ref -> zero-ref
; V35 tmp20 [V35,T37] ( 6, 6 ) ref -> r8
-; V36 tmp21 [V36,T00] ( 16, 32 ) ref -> [rsp+0x88] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.DiagnosticInfo>
-; V37 tmp22 [V37,T03] ( 10, 20 ) ref -> [rsp+0x80] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.VBDiagnostic>
+; V36 tmp21 [V36,T00] ( 16, 32 ) ref -> [rsp+0x80] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.DiagnosticInfo>
+; V37 tmp22 [V37,T03] ( 10, 20 ) ref -> [rsp+0x78] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.VBDiagnostic>
; V38 tmp23 [V38,T52] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <<unknown class>>
; V39 tmp24 [V39,T53] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V40 tmp25 [V40 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
@@ -55,8 +55,8 @@
;* V44 tmp29 [V44 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
;* V45 tmp30 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
; V46 tmp31 [V46,T45] ( 5, 5 ) byref -> r12 single-def "Inlining Arg"
-; V47 tmp32 [V47,T55] ( 4, 2 ) ref -> [rsp+0x78] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V48 tmp33 [V48,T56] ( 4, 2 ) ref -> [rsp+0x70] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+; V47 tmp32 [V47,T55] ( 4, 2 ) ref -> [rsp+0x70] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V48 tmp33 [V48,T56] ( 4, 2 ) ref -> [rsp+0x68] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
; V49 tmp34 [V49,T62] ( 2, 2 ) ref -> rdx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
; V50 tmp35 [V50,T57] ( 4, 2 ) int -> r14 "Inline return value spill temp"
; V51 tmp36 [V51,T63] ( 2, 2 ) ref -> rcx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
@@ -64,7 +64,7 @@
;* V53 tmp38 [V53,T75] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
; V54 tmp39 [V54,T46] ( 4, 4 ) ref -> rcx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
; V55 tmp40 [V55,T58] ( 4, 2 ) int -> r14 "Inline stloc first use temp"
-; V56 tmp41 [V56,T10] ( 15, 14.02) ref -> [rsp+0x68] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
+; V56 tmp41 [V56,T10] ( 15, 14.02) ref -> [rsp+0x60] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
; V57 tmp42 [V57,T11] ( 16, 14 ) ref -> r8 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
; V58 tmp43 [V58,T78] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
; V59 tmp44 [V59,T24] ( 6, 9 ) ref -> rax "CASTCLASS eval op1"
@@ -74,27 +74,27 @@
; V63 tmp48 [V63,T27] ( 6, 8 ) ref -> registers class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
; V64 tmp49 [V64,T30] ( 4, 8 ) ref -> r10 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
;* V65 tmp50 [V65 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
-; V66 tmp51 [V66 ] ( 11, 10.02) struct (24) [rsp+0xC8] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
+; V66 tmp51 [V66 ] ( 11, 10.02) struct (24) [rsp+0xC0] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
;* V67 tmp52 [V67 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
;* V68 tmp53 [V68 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
-; V69 tmp54 [V69,T15] ( 6, 12 ) ref -> [rsp+0x60] class-hnd exact "Inlining Arg" <<unknown class>>
-; V70 tmp55 [V70,T31] ( 4, 8 ) ref -> [rsp+0x58] class-hnd "Inlining Arg" <System.Object[]>
+; V69 tmp54 [V69,T15] ( 6, 12 ) ref -> [rsp+0x58] class-hnd exact "Inlining Arg" <<unknown class>>
+; V70 tmp55 [V70,T31] ( 4, 8 ) ref -> [rsp+0x50] class-hnd "Inlining Arg" <System.Object[]>
;* V71 tmp56 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
; V72 tmp57 [V72,T21] ( 10, 10 ) ref -> rcx class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
; V73 tmp58 [V73,T79] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
; V74 tmp59 [V74,T16] ( 6, 12 ) ref -> rax "CASTCLASS eval op1"
; V75 tmp60 [V75,T29] ( 6, 8 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V76 tmp61 [V76,T05] ( 10, 18 ) ref -> [rsp+0x50] class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
+; V76 tmp61 [V76,T05] ( 10, 18 ) ref -> [rsp+0x48] class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
; V77 tmp62 [V77,T32] ( 4, 8 ) ref -> rax class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
-; V78 tmp63 [V78,T33] ( 4, 8 ) ref -> [rsp+0x48] class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Location>
+; V78 tmp63 [V78,T33] ( 4, 8 ) ref -> [rsp+0x40] class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Location>
; V79 tmp64 [V79,T80] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V80 tmp65 [V80,T01] ( 12, 24 ) ref -> [rsp+0x40] class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V81 tmp66 [V81,T34] ( 4, 8 ) ref -> [rsp+0x38] class-hnd exact "Inlining Arg" <System.String>
+; V80 tmp65 [V80,T01] ( 12, 24 ) ref -> [rsp+0x38] class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V81 tmp66 [V81,T34] ( 4, 8 ) ref -> [rsp+0x30] class-hnd exact "Inlining Arg" <System.String>
; V82 tmp67 [V82,T17] ( 6, 12 ) ref -> rdx class-hnd exact "Inlining Arg" <<unknown class>>
; V83 tmp68 [V83,T35] ( 8, 7.64) ref -> rax class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport[]>
; V84 tmp69 [V84,T23] ( 10, 9.45) int -> r8 "Inline stloc first use temp"
; V85 tmp70 [V85,T28] ( 6, 8.00) ref -> rdx class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
-; V86 tmp71 [V86 ] ( 5, 5.50) ref -> [rsp+0xF8] do-not-enreg[X] addr-exposed "field V06._node (fldOffset=0x0)" P-DEP
+; V86 tmp71 [V86 ] ( 5, 5.50) ref -> [rsp+0xF0] do-not-enreg[X] addr-exposed "field V06._node (fldOffset=0x0)" P-DEP
;* V87 tmp72 [V87,T76] ( 0, 0 ) ref -> zero-ref single-def "field V07._source (fldOffset=0x0)" P-INDEP
;* V88 tmp73 [V88 ] ( 0, 0 ) ref -> zero-ref "field V40._source (fldOffset=0x0)" P-INDEP
;* V89 tmp74 [V89 ] ( 0, 0 ) ref -> zero-ref "field V41._node (fldOffset=0x0)" P-INDEP
@@ -115,10 +115,9 @@
;* V104 cse0 [V104,T77] ( 0, 0 ) long -> zero-ref "CSE - moderate"
;* V105 cse1 [V105,T69] ( 0, 0 ) long -> zero-ref multi-def "CSE - conservative"
; V106 cse2 [V106,T72] ( 3, 1.50) ref -> rcx "CSE - conservative"
-; V107 cse3 [V107,T26] ( 8, 8 ) long -> [rsp+0xC0] multi-def "CSE - moderate"
-; TEMP_01 byref -> [rsp+0x100]
+; V107 cse3 [V107,T26] ( 8, 8 ) long -> [rsp+0xB8] multi-def "CSE - moderate"
;
-; Lcl frame size = 264
+; Lcl frame size = 248
G_M28747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -129,20 +128,19 @@ G_M28747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 264
+ sub rsp, 248
vzeroupper
- xor edi, edi
- mov qword ptr [rsp+0xC8], rdi
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rsp+0xD0], ymm4
- vmovdqa xmmword ptr [rsp+0xF0], xmm4
- mov qword ptr [rsp+0x100], rdi
+ vmovdqu ymmword ptr [rsp+0xC0], ymm4
+ vmovdqa xmmword ptr [rsp+0xE0], xmm4
+ xor edi, edi
+ mov qword ptr [rsp+0xF0], rdi
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, rdx
; gcrRegs +[rsi]
xor edi, edi
- ;; size=70 bbWeight=1 PerfScore 16.58
+ ;; size=62 bbWeight=1 PerfScore 15.58
G_M28747_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
mov rcx, 0xD1FFAB1E ; <unknown class>
@@ -352,7 +350,7 @@ G_M28747_IG12: ; bbWeight=0.50, gcrefRegs=41E8 {rbx rbp rsi rdi r8 r14},
lea r12, bword ptr [r14+0x30]
; byrRegs +[r12]
mov rax, gword ptr [r12]
- mov gword ptr [rsp+0x78], rax
+ mov gword ptr [rsp+0x70], rax
; GC ptr vars +{V47}
test rax, rax
jne SHORT G_M28747_IG13
@@ -364,7 +362,7 @@ G_M28747_IG12: ; bbWeight=0.50, gcrefRegs=41E8 {rbx rbp rsi rdi r8 r14},
call [r8+0x20]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- mov gword ptr [rsp+0x70], rax
+ mov gword ptr [rsp+0x68], rax
; GC ptr vars +{V48}
test rax, rax
je SHORT G_M28747_IG13
@@ -378,7 +376,7 @@ G_M28747_IG12: ; bbWeight=0.50, gcrefRegs=41E8 {rbx rbp rsi rdi r8 r14},
mov r8d, eax
mov rdx, r14
; gcrRegs +[rdx]
- mov rcx, gword ptr [rsp+0x70]
+ mov rcx, gword ptr [rsp+0x68]
; gcrRegs +[rcx]
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x68]
@@ -401,18 +399,18 @@ G_M28747_IG12: ; bbWeight=0.50, gcrefRegs=41E8 {rbx rbp rsi rdi r8 r14},
mov rax, gword ptr [r12]
mov r14, rax
; gcrRegs +[r14]
- mov gword ptr [rsp+0x78], r14
+ mov gword ptr [rsp+0x70], r14
; GC ptr vars +{V47}
;; size=222 bbWeight=0.50 PerfScore 26.38
G_M28747_IG13: ; bbWeight=0.50, gcVars=00000000000000000080000000000000 {V47}, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax r14]
; byrRegs -[r12]
- mov rax, gword ptr [rsp+0x78]
+ mov rax, gword ptr [rsp+0x70]
; gcrRegs +[rax]
- mov gword ptr [rsp+0xF8], rax
- cmp gword ptr [rsp+0xF8], 0
+ mov gword ptr [rsp+0xF0], rax
+ cmp gword ptr [rsp+0xF0], 0
je SHORT G_M28747_IG16
- mov rcx, gword ptr [rsp+0xF8]
+ mov rcx, gword ptr [rsp+0xF0]
; gcrRegs +[rcx]
mov rcx, gword ptr [rcx+0x18]
mov rax, rcx
@@ -449,7 +447,7 @@ G_M28747_IG17: ; bbWeight=0.50, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15},
jle G_M28747_IG43
;; size=25 bbWeight=0.50 PerfScore 2.88
G_M28747_IG18: ; bbWeight=3.96, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byrefRegs=0000 {}, byref
- lea rcx, [rsp+0xF8]
+ lea rcx, [rsp+0xF0]
mov r8d, r12d
mov rdx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]
call [Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this]
@@ -457,7 +455,7 @@ G_M28747_IG18: ; bbWeight=3.96, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15},
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
- lea rdx, [rsp+0xE0]
+ lea rdx, [rsp+0xD8]
cmp dword ptr [rcx], ecx
call [Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax:get_ImportsClauses():Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]:this]
; gcrRegs -[rax rcx]
@@ -480,21 +478,21 @@ G_M28747_IG19: ; bbWeight=1.98, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15},
je SHORT G_M28747_IG20
mov rdx, gword ptr [rdi+0x08]
; gcrRegs +[rdx]
- mov gword ptr [rsp+0xA8], rax
+ mov gword ptr [rsp+0xA0], rax
; GC ptr vars +{V29}
lea rcx, bword ptr [rax+0x08]
; byrRegs +[rcx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx rdi]
; byrRegs -[rcx]
- mov rax, gword ptr [rsp+0xA8]
+ mov rax, gword ptr [rsp+0xA0]
; gcrRegs +[rax]
;; size=49 bbWeight=1.98 PerfScore 15.84
G_M28747_IG20: ; bbWeight=1.98, gcVars=00000000000000000000000000000000 {}, gcrefRegs=A069 {rax rbx rbp rsi r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V29}
mov rdi, rax
; gcrRegs +[rdi]
- mov r8, gword ptr [rsp+0xE8]
+ mov r8, gword ptr [rsp+0xE0]
; gcrRegs +[r8]
test r8, r8
je G_M28747_IG80
@@ -528,7 +526,7 @@ G_M28747_IG23: ; bbWeight=1.98, gcrefRegs=A0E9 {rax rbx rbp rsi rdi r13 r
;; size=5 bbWeight=1.98 PerfScore 4.46
G_M28747_IG24: ; bbWeight=1.98, gcrefRegs=A1E8 {rbx rbp rsi rdi r8 r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax r10] +[r8]
- cmp dword ptr [rsp+0xE0], 0
+ cmp dword ptr [rsp+0xD8], 0
je G_M28747_IG80
mov rcx, r8
; gcrRegs +[rcx]
@@ -568,31 +566,31 @@ G_M28747_IG28: ; bbWeight=1.98, gcrefRegs=A4E8 {rbx rbp rsi rdi r10 r13 r
; gcrRegs -[rax]
cmp byte ptr [r10], r10b
mov eax, dword ptr [r10+0x20]
- mov gword ptr [rsp+0x68], r10
+ mov gword ptr [rsp+0x60], r10
; GC ptr vars +{V56}
mov r8, r10
; gcrRegs +[r8]
...
+0 (0.00%) : 201228.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary
2[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
+0 (0.00%) : 256568.dasm - ILCompiler.LazyGenericsSupport+Graph
1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph
1+Vertex[System.__Canon]):this (FullOpts)@@ -8,72 +8,69 @@
; 4 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 13,1139 ) ref -> rbx this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
-; V01 arg1 [V01,T05] ( 18,1118 ) ref -> rsi class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
+; V00 this [V00,T07] ( 13,1139 ) ref -> rsi this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
+; V01 arg1 [V01,T04] ( 18,1118 ) ref -> rbx class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
; V02 loc0 [V02,T03] ( 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,T06] ( 9,1216 ) ref -> r14 class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
+; V06 loc4 [V06,T05] ( 9,1216 ) ref -> r14 class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
; V07 loc5 [V07,T08] ( 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,T29] ( 3, 48 ) long -> r11 "VirtualCall with runtime lookup"
+; V10 tmp2 [V10,T26] ( 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,T18] ( 3, 192 ) ref -> r14 class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
+; V13 tmp5 [V13,T15] ( 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,T26] ( 4, 48 ) long -> r11 "VirtualCall with runtime lookup"
-; V17 tmp9 [V17,T31] ( 3, 43.43) int -> r15 "non-inline candidate call"
+; V16 tmp8 [V16,T23] ( 4, 48 ) long -> r11 "VirtualCall with runtime lookup"
+; V17 tmp9 [V17,T28] ( 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,T25] ( 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,T33] ( 3, 36.57) int -> rcx "Inlining Arg"
-; V24 tmp16 [V24,T20] ( 7, 160 ) ref -> rsi class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-; V25 tmp17 [V25,T27] ( 4, 48 ) int -> r15 "Inline stloc first use temp"
-; V26 tmp18 [V26,T32] ( 3, 40 ) ref -> rcx class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V19 tmp11 [V19,T22] ( 7, 64 ) ref -> r14 class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
+; V20 tmp12 [V20,T36] ( 4, 20 ) int -> r15 "Inline stloc first use temp"
+; V21 tmp13 [V21,T37] ( 3, 18 ) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>>
+; V22 tmp14 [V22,T38] ( 3, 16 ) int -> rcx "Inline return value spill temp"
+; V23 tmp15 [V23,T30] ( 3, 36.57) int -> rcx "Inlining Arg"
+; V24 tmp16 [V24,T17] ( 7, 160 ) ref -> rbx class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
+; V25 tmp17 [V25,T24] ( 4, 48 ) int -> r15 "Inline stloc first use temp"
+; V26 tmp18 [V26,T29] ( 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,T16] ( 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>>
+; V28 tmp20 [V28,T14] ( 3, 256 ) int -> rcx "Inline return value spill temp"
+; V29 tmp21 [V29,T10] ( 3, 694.86) int -> r11 "Inlining Arg"
+; V30 tmp22 [V30,T12] ( 3, 585.14) int -> rcx "Inlining Arg"
+; V31 tmp23 [V31,T11] ( 3, 628.35) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>>
; V32 tmp24 [V32,T09] ( 4, 744.71) int -> rdx "Inline stloc first use temp"
-; V33 tmp25 [V33,T15] ( 7, 384 ) ref -> rcx class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-; V34 tmp26 [V34,T24] ( 3, 93.09) ref -> r8 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V35 tmp27 [V35,T23] ( 4, 122.18) int -> rdx "Inline stloc first use temp"
+; V33 tmp25 [V33,T13] ( 7, 384 ) ref -> rcx class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+; V34 tmp26 [V34,T21] ( 3, 93.09) ref -> r8 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V35 tmp27 [V35,T20] ( 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,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
+; V41 tmp33 [V41,T32] ( 3, 32 ) ref -> rdx "field V05.Vertex (fldOffset=0x0)" P-INDEP
+; V42 tmp34 [V42,T33] ( 3, 32 ) ref -> r14 "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
+; V43 tmp35 [V43,T35] ( 2, 24 ) ref -> [rsp+0x38] do-not-enreg[H] hidden-struct-arg "field V18.Destination (fldOffset=0x0)" P-DEP
+; V44 tmp36 [V44,T39] ( 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,T37] ( 2, 32 ) ref -> rsi "argument with side effect"
-; V49 tmp41 [V49,T28] ( 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, 11.60) long -> rdi hoist "CSE - moderate"
-; V54 rat0 [V54,T46] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
-; V55 rat1 [V55,T47] ( 3, 4 ) long -> rbp "runtime lookup"
-; V56 rat2 [V56,T45] ( 3, 5.60) long -> rbp "fgMakeTemp is creating a new local variable"
-; V57 rat3 [V57,T30] ( 3, 44.80) long -> r11 "fgMakeTemp is creating a new local variable"
-;* V58 rat4 [V58,T14] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V59 rat5 [V59,T17] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V60 rat6 [V60,T10] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V61 rat7 [V61,T02] ( 3,2252.80) long -> rcx "Spilling to split statement for tree"
-; V62 rat8 [V62,T01] ( 3,2867.20) long -> r11 "fgMakeTemp is creating a new local variable"
-; V63 rat9 [V63,T21] ( 3, 140.80) long -> rcx "Spilling to split statement for tree"
-; V64 rat10 [V64,T22] ( 3, 128 ) long -> rdx "runtime lookup"
-; V65 rat11 [V65,T19] ( 3, 179.20) long -> rdx "fgMakeTemp is creating a new local variable"
+; V48 tmp40 [V48,T34] ( 2, 32 ) ref -> rbx "argument with side effect"
+; V49 tmp41 [V49,T25] ( 3, 48 ) byref -> r13 "BlockOp address local"
+; V50 cse0 [V50,T41] ( 2, 9 ) long -> rbp hoist "CSE - moderate"
+; V51 cse1 [V51,T06] ( 3,1152 ) int -> rcx "CSE - aggressive"
+; V52 cse2 [V52,T31] ( 4, 32 ) int -> rdx "CSE - moderate"
+; V53 cse3 [V53,T40] ( 4, 11.60) long -> rdi "CSE - moderate"
+; V54 rat0 [V54,T43] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
+; V55 rat1 [V55,T44] ( 3, 4 ) long -> rbp "runtime lookup"
+; V56 rat2 [V56,T42] ( 3, 5.60) long -> rbp "fgMakeTemp is creating a new local variable"
+; V57 rat3 [V57,T27] ( 3, 44.80) long -> r11 "fgMakeTemp is creating a new local variable"
+; V58 rat4 [V58,T02] ( 3,2252.80) long -> rcx "Spilling to split statement for tree"
+; V59 rat5 [V59,T01] ( 3,2867.20) long -> r11 "fgMakeTemp is creating a new local variable"
+; V60 rat6 [V60,T18] ( 3, 140.80) long -> rcx "Spilling to split statement for tree"
+; V61 rat7 [V61,T19] ( 3, 128 ) long -> rdx "runtime lookup"
+; V62 rat8 [V62,T16] ( 3, 179.20) long -> rdx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 112
@@ -93,13 +90,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]
@@ -117,12 +114,12 @@ G_M1799_IG04: ; bbWeight=0.20, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {
mov rbp, rax
;; size=18 bbWeight=0.20 PerfScore 0.30
G_M1799_IG05: ; 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]
@@ -132,7 +129,7 @@ G_M1799_IG05: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
;; size=32 bbWeight=8 PerfScore 122.00
G_M1799_IG06: ; 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]
@@ -145,16 +142,16 @@ G_M1799_IG06: ; bbWeight=2, gcrefRegs=404A {rcx rbx rsi r14}, byrefRegs=0
G_M1799_IG07: ; 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_IG08: ; 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]
@@ -164,17 +161,17 @@ G_M1799_IG08: ; 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_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax rsi r14]
- mov rcx, gword ptr [rbx+0x20]
+G_M1799_IG09: ; 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]
@@ -184,7 +181,7 @@ G_M1799_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
je SHORT G_M1799_IG12
;; size=43 bbWeight=8 PerfScore 142.00
G_M1799_IG10: ; 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]
@@ -213,7 +210,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, isz
mov rcx, r14
@@ -226,7 +223,7 @@ G_M1799_IG15: ; bbWeight=512, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=000
je SHORT G_M1799_IG26
;; size=20 bbWeight=512 PerfScore 2432.00
G_M1799_IG16: ; bbWeight=512, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx]
+ mov rcx, qword ptr [rsi]
mov rdx, qword ptr [rcx+0x38]
mov rdx, qword ptr [rdx]
mov r11, qword ptr [rdx+0x18]
@@ -264,7 +261,7 @@ G_M1799_IG20: ; bbWeight=256, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=000
;; size=12 bbWeight=256 PerfScore 1280.00
G_M1799_IG21: ; bbWeight=128, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r11]
- mov r11d, dword ptr [rsi+0x1C]
+ mov r11d, dword ptr [rbx+0x1C]
cmp r11d, ecx
jle SHORT G_M1799_IG23
;; size=9 bbWeight=128 PerfScore 416.00
@@ -275,7 +272,7 @@ G_M1799_IG23: ; bbWeight=91.43, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0
mov ecx, r11d
;; size=3 bbWeight=91.43 PerfScore 22.86
G_M1799_IG24: ; bbWeight=128, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
- mov dword ptr [rsi+0x1C], ecx
+ mov dword ptr [rbx+0x1C], ecx
;; size=3 bbWeight=128 PerfScore 128.00
G_M1799_IG25: ; bbWeight=256, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
mov rcx, r14
@@ -289,12 +286,12 @@ G_M1799_IG25: ; bbWeight=256, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=000
;; size=20 bbWeight=256 PerfScore 1216.00
G_M1799_IG26: ; bbWeight=256, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
...
libraries_tests.run.windows.x64.Release.mch
-34 (-4.38%) : 128409.dasm - Microsoft.Extensions.Options.OptionsFactory`1[System.Canon]:Create(System.String):System.Canon:this (Tier1)
@@ -9,60 +9,56 @@
; 1 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 16, 9.37) ref -> rbx this class-hnd single-def <Microsoft.Extensions.Options.OptionsFactory`1[System.__Canon]>
+; V00 this [V00,T00] ( 15, 9.04) ref -> rbx this class-hnd single-def <Microsoft.Extensions.Options.OptionsFactory`1[System.__Canon]>
; V01 arg1 [V01,T01] ( 13, 5.11) ref -> rsi class-hnd single-def <System.String>
; V02 loc0 [V02,T06] ( 6, 3.18) ref -> rdi class-hnd single-def <System.__Canon>
; V03 loc1 [V03,T09] ( 4, 3 ) ref -> rbp class-hnd single-def <<unknown class>>
; V04 loc2 [V04,T08] ( 5, 3 ) int -> r14
-; V05 loc3 [V05,T26] ( 3, 1.25) ref -> r15 class-hnd <<unknown class>>
-; V06 loc4 [V06,T27] ( 3, 1.25) ref -> r13 class-hnd <<unknown class>>
+; V05 loc3 [V05,T23] ( 3, 1.25) ref -> r15 class-hnd <<unknown class>>
+; V06 loc4 [V06,T24] ( 3, 1.25) ref -> r13 class-hnd <<unknown class>>
; V07 loc5 [V07,T11] ( 3, 2.68) ref -> rbp class-hnd single-def <<unknown class>>
; V08 loc6 [V08,T04] ( 5, 3.70) int -> r14
-; V09 loc7 [V09,T25] ( 2, 1.35) ref -> r13 class-hnd <<unknown class>>
-; V10 loc8 [V10,T35] ( 4, 0 ) ref -> rbp class-hnd exact single-def <<unknown class>>
-; V11 loc9 [V11,T38] ( 3, 0 ) ref -> r14 class-hnd single-def <<unknown class>>
-; V12 loc10 [V12,T34] ( 5, 0 ) int -> r15
-; V13 loc11 [V13,T44] ( 2, 0 ) ref -> r13 class-hnd <<unknown class>>
-; V14 loc12 [V14,T36] ( 4, 0 ) ref -> rax class-hnd <Microsoft.Extensions.Options.ValidateOptionsResult>
+; V09 loc7 [V09,T22] ( 2, 1.35) ref -> r13 class-hnd <<unknown class>>
+; V10 loc8 [V10,T31] ( 4, 0 ) ref -> rbp class-hnd exact single-def <<unknown class>>
+; V11 loc9 [V11,T34] ( 3, 0 ) ref -> r14 class-hnd single-def <<unknown class>>
+; V12 loc10 [V12,T30] ( 5, 0 ) int -> r15
+; V13 loc11 [V13,T40] ( 2, 0 ) ref -> r13 class-hnd <<unknown class>>
+; V14 loc12 [V14,T32] ( 4, 0 ) ref -> rax class-hnd <Microsoft.Extensions.Options.ValidateOptionsResult>
; V15 OutArgs [V15 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V16 tmp1 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V17 tmp2 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V18 tmp3 [V18,T21] ( 4, 1.50) long -> r11 "VirtualCall with runtime lookup"
+; V18 tmp3 [V18,T18] ( 4, 1.50) long -> r11 "VirtualCall with runtime lookup"
;* V19 tmp4 [V19 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V20 tmp5 [V20,T22] ( 4, 1.50) long -> r11 "VirtualCall with runtime lookup"
+; V20 tmp5 [V20,T19] ( 4, 1.50) long -> r11 "VirtualCall with runtime lookup"
;* V21 tmp6 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V22 tmp7 [V22,T02] ( 4, 4.05) long -> r11 "VirtualCall with runtime lookup"
-; V23 tmp8 [V23,T39] ( 3, 0 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V23 tmp8 [V23,T35] ( 3, 0 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V24 tmp9 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V25 tmp10 [V25,T37] ( 4, 0 ) long -> r11 "VirtualCall with runtime lookup"
-; V26 tmp11 [V26,T40] ( 3, 0 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V25 tmp10 [V25,T33] ( 4, 0 ) long -> r11 "VirtualCall with runtime lookup"
+; V26 tmp11 [V26,T36] ( 3, 0 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V27 tmp12 [V27,T15] ( 3, 2 ) ref -> rdi "guarded devirt return temp"
;* V28 tmp13 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.Extensions.Options.OptionsFactory`1[Microsoft.Extensions.Logging.LoggerFilterOptions]>
-; V29 tmp14 [V29,T32] ( 2, 0.50) ubyte -> rax "Inline return value spill temp"
+; V29 tmp14 [V29,T29] ( 2, 0.50) ubyte -> rax "Inline return value spill temp"
;* V30 tmp15 [V30 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
; V31 tmp16 [V31,T17] ( 2, 2 ) long -> rcx "argument with side effect"
-; V32 tmp17 [V32,T45] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
+; V32 tmp17 [V32,T41] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
; V33 cse0 [V33,T12] ( 3, 2.68) int -> r15 "CSE - aggressive"
-; V34 rat0 [V34,T19] ( 2, 1.35) long -> rcx "Spilling to split statement for tree"
-;* V35 rat1 [V35,T33] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V36 rat2 [V36,T18] ( 2, 1.35) long -> rcx "spilling expr"
-;* V37 rat3 [V37,T20] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V38 rat4 [V38,T13] ( 3, 2.36) long -> rcx "Spilling to split statement for tree"
-; V39 rat5 [V39,T16] ( 3, 2 ) long -> rcx "runtime lookup"
-; V40 rat6 [V40,T10] ( 3, 2.80) long -> rdx "spilling expr"
-; V41 rat7 [V41,T14] ( 3, 2.24) long -> rax "fgMakeTemp is creating a new local variable"
-; V42 rat8 [V42,T28] ( 3, 1.18) long -> rcx "Spilling to split statement for tree"
-; V43 rat9 [V43,T23] ( 3, 1.40) long -> rdx "spilling expr"
-; V44 rat10 [V44,T30] ( 3, 1.12) long -> r11 "fgMakeTemp is creating a new local variable"
-; V45 rat11 [V45,T29] ( 3, 1.18) long -> rcx "Spilling to split statement for tree"
-; V46 rat12 [V46,T24] ( 3, 1.40) long -> rdx "spilling expr"
-; V47 rat13 [V47,T31] ( 3, 1.12) long -> r11 "fgMakeTemp is creating a new local variable"
-; V48 rat14 [V48,T05] ( 3, 3.19) long -> rcx "Spilling to split statement for tree"
-; V49 rat15 [V49,T03] ( 3, 3.78) long -> rdx "spilling expr"
-; V50 rat16 [V50,T07] ( 3, 3.03) long -> r11 "fgMakeTemp is creating a new local variable"
-; V51 rat17 [V51,T41] ( 3, 0 ) long -> rcx "Spilling to split statement for tree"
-; V52 rat18 [V52,T42] ( 3, 0 ) long -> rdx "spilling expr"
-; V53 rat19 [V53,T43] ( 3, 0 ) long -> r11 "fgMakeTemp is creating a new local variable"
+; V34 rat0 [V34,T13] ( 3, 2.36) long -> rcx "Spilling to split statement for tree"
+; V35 rat1 [V35,T16] ( 3, 2 ) long -> rcx "runtime lookup"
+; V36 rat2 [V36,T10] ( 3, 2.80) long -> rdx "spilling expr"
+; V37 rat3 [V37,T14] ( 3, 2.24) long -> rax "fgMakeTemp is creating a new local variable"
+; V38 rat4 [V38,T25] ( 3, 1.18) long -> rcx "Spilling to split statement for tree"
+; V39 rat5 [V39,T20] ( 3, 1.40) long -> rdx "spilling expr"
+; V40 rat6 [V40,T27] ( 3, 1.12) long -> r11 "fgMakeTemp is creating a new local variable"
+; V41 rat7 [V41,T26] ( 3, 1.18) long -> rcx "Spilling to split statement for tree"
+; V42 rat8 [V42,T21] ( 3, 1.40) long -> rdx "spilling expr"
+; V43 rat9 [V43,T28] ( 3, 1.12) long -> r11 "fgMakeTemp is creating a new local variable"
+; V44 rat10 [V44,T05] ( 3, 3.19) long -> rcx "Spilling to split statement for tree"
+; V45 rat11 [V45,T03] ( 3, 3.78) long -> rdx "spilling expr"
+; V46 rat12 [V46,T07] ( 3, 3.03) long -> r11 "fgMakeTemp is creating a new local variable"
+; V47 rat13 [V47,T37] ( 3, 0 ) long -> rcx "Spilling to split statement for tree"
+; V48 rat14 [V48,T38] ( 3, 0 ) long -> rdx "spilling expr"
+; V49 rat15 [V49,T39] ( 3, 0 ) long -> r11 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 48
@@ -115,16 +111,9 @@ G_M22830_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; gcrRegs +[rbp]
xor r14d, r14d
cmp dword ptr [rbp+0x08], 0
- jle G_M22830_IG24
+ jle G_M22830_IG23
;; size=17 bbWeight=1 PerfScore 6.25
-G_M22830_IG06: ; bbWeight=0.34, gcrefRegs=00E8 {rbx rbp rsi rdi}, 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], 64
- jle SHORT G_M22830_IG07
- ;; size=17 bbWeight=0.34 PerfScore 3.36
-G_M22830_IG07: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M22830_IG06: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
mov ecx, r14d
mov r15, gword ptr [rbp+8*rcx+0x10]
; gcrRegs +[r15]
@@ -132,17 +121,17 @@ G_M22830_IG07: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRe
mov rdx, qword ptr [rcx+0x38]
mov rdx, qword ptr [rdx]
cmp qword ptr [rdx+0x08], 64
- jle SHORT G_M22830_IG15
+ jle SHORT G_M22830_IG13
;; size=25 bbWeight=0.50 PerfScore 6.12
-G_M22830_IG08: ; bbWeight=0.40, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+G_M22830_IG07: ; bbWeight=0.40, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref, isz
mov rax, qword ptr [rdx+0x40]
test rax, rax
- je SHORT G_M22830_IG15
+ je SHORT G_M22830_IG13
;; size=9 bbWeight=0.40 PerfScore 1.30
-G_M22830_IG09: ; bbWeight=0.32, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref
+G_M22830_IG08: ; bbWeight=0.32, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref
mov rcx, rax
;; size=3 bbWeight=0.32 PerfScore 0.08
-G_M22830_IG10: ; bbWeight=0.50, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref
+G_M22830_IG09: ; bbWeight=0.50, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref
mov rdx, r15
; gcrRegs +[rdx]
call CORINFO_HELP_ISINSTANCEOFANY
@@ -151,22 +140,22 @@ G_M22830_IG10: ; bbWeight=0.50, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byr
mov r13, rax
; gcrRegs +[r13]
test r13, r13
- je G_M22830_IG19
+ je G_M22830_IG17
;; size=20 bbWeight=0.50 PerfScore 1.38
-G_M22830_IG11: ; bbWeight=0.25, gcrefRegs=20E8 {rbx rbp rsi rdi r13}, byrefRegs=0000 {}, byref
+G_M22830_IG10: ; bbWeight=0.25, gcrefRegs=20E8 {rbx rbp rsi rdi r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax r15]
mov rcx, qword ptr [rbx]
mov rdx, qword ptr [rcx+0x38]
mov rdx, qword ptr [rdx]
cmp qword ptr [rdx+0x08], 80
- jle G_M22830_IG17
- ;; size=21 bbWeight=0.25 PerfScore 2.50
-G_M22830_IG12: ; bbWeight=0.20, gcrefRegs=20E8 {rbx rbp rsi rdi r13}, byrefRegs=0000 {}, byref
+ jle SHORT G_M22830_IG15
+ ;; size=17 bbWeight=0.25 PerfScore 2.50
+G_M22830_IG11: ; bbWeight=0.20, gcrefRegs=20E8 {rbx rbp rsi rdi r13}, byrefRegs=0000 {}, byref, isz
mov r11, qword ptr [rdx+0x50]
test r11, r11
- je G_M22830_IG17
- ;; size=13 bbWeight=0.20 PerfScore 0.65
-G_M22830_IG13: ; bbWeight=0.25, gcrefRegs=20E8 {rbx rbp rsi rdi r13}, byrefRegs=0000 {}, byref
+ je SHORT G_M22830_IG15
+ ;; size=9 bbWeight=0.20 PerfScore 0.65
+G_M22830_IG12: ; bbWeight=0.25, gcrefRegs=20E8 {rbx rbp rsi rdi r13}, byrefRegs=0000 {}, byref
mov rcx, r13
; gcrRegs +[rcx]
mov rdx, rsi
@@ -176,24 +165,33 @@ G_M22830_IG13: ; bbWeight=0.25, gcrefRegs=20E8 {rbx rbp rsi rdi r13}, byr
call [r11]
; gcrRegs -[rcx rdx r8 r13]
; gcr arg pop 0
- jmp G_M22830_IG23
+ jmp G_M22830_IG22
;; size=17 bbWeight=0.25 PerfScore 1.44
-G_M22830_IG14: ; bbWeight=0.09, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref
+G_M22830_IG13: ; bbWeight=0.18, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r15]
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
- mov r11, rax
- jmp G_M22830_IG22
- ;; size=23 bbWeight=0.09 PerfScore 0.31
-G_M22830_IG15: ; bbWeight=0.18, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ mov rcx, rax
+ jmp SHORT G_M22830_IG09
+ ;; size=20 bbWeight=0.18 PerfScore 0.63
+G_M22830_IG14: ; bbWeight=0.09, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
- mov rcx, rax
- jmp SHORT G_M22830_IG10
- ;; size=20 bbWeight=0.18 PerfScore 0.63
+ mov r11, rax
+ jmp G_M22830_IG21
+ ;; size=23 bbWeight=0.09 PerfScore 0.31
+G_M22830_IG15: ; bbWeight=0.09, gcrefRegs=20E8 {rbx rbp rsi rdi r13}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r15] +[r13]
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov r11, rax
+ jmp SHORT G_M22830_IG12
+ ;; size=20 bbWeight=0.09 PerfScore 0.31
G_M22830_IG16: ; bbWeight=0.25, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r13] +[r15]
mov ecx, 1
call [<unknown method>]
; gcr arg pop 0
@@ -215,47 +213,37 @@ G_M22830_IG16: ; bbWeight=0.25, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byr
; byrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- je SHORT G_M22830_IG23
- jmp SHORT G_M22830_IG18
+ je SHORT G_M22830_IG22
+ jmp SHORT G_M22830_IG19
;; size=70 bbWeight=0.25 PerfScore 5.75
-G_M22830_IG17: ; bbWeight=0.09, gcrefRegs=20E8 {rbx rbp rsi rdi r13}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r15] +[r13]
- mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov r11, rax
- jmp G_M22830_IG13
- ;; size=23 bbWeight=0.09 PerfScore 0.31
-G_M22830_IG18: ; bbWeight=0.25, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r13] +[r15]
+G_M22830_IG17: ; bbWeight=0.25, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ cmp rsi, rcx
+ je SHORT G_M22830_IG19
+ test rsi, rsi
+ je SHORT G_M22830_IG22
+ cmp dword ptr [rsi+0x08], 0
+ je SHORT G_M22830_IG16
+ ;; size=26 bbWeight=0.25 PerfScore 1.69
+G_M22830_IG18: ; bbWeight=0.23, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx r15]
+ jmp SHORT G_M22830_IG22
+ ;; size=2 bbWeight=0.23 PerfScore 0.45
+G_M22830_IG19: ; bbWeight=0.25, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r15]
mov rcx, qword ptr [rbx]
mov rdx, qword ptr [rcx+0x38]
mov rdx, qword ptr [rdx]
cmp qword ptr [rdx+0x08], 72
jle G_M22830_IG14
- jmp SHORT G_M22830_IG21
...
-20 (-1.15%) : 166806.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.34) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T01] ( 15, 6.36) ref -> rsi ld-addr-op class-hnd single-def <System.__Canon>
-; V02 arg2 [V02,T15] ( 5, 3 ) ref -> rdi class-hnd single-def <System.__Canon>
-; V03 arg3 [V03,T16] ( 6, 2.50) ubyte -> rbp single-def
+; V02 arg2 [V02,T14] ( 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, 6.91) 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,T25] ( 5, 3 ) ref -> [rsp+0x30] class-hnd single-def <<unknown class>>
-; V06 loc2 [V06,T23] ( 6, 3.54) int -> r15 single-def
-; V07 loc3 [V07,T33] ( 7, 2.43) int -> r13
-; V08 loc4 [V08,T24] ( 5, 3.07) byref -> r12
-; V09 loc5 [V09,T13] ( 13, 5.41) int -> [rsp+0x4C]
-; V10 loc6 [V10,T36] ( 5, 2.00) int -> r13
-; V11 loc7 [V11,T52] ( 4, 1.50) ref -> [rsp+0x28] class-hnd spill-single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
-; V12 loc8 [V12,T51] ( 3, 1.50) int -> r13 single-def
+; V05 loc1 [V05,T23] ( 5, 3 ) ref -> [rsp+0x30] class-hnd single-def <<unknown class>>
+; V06 loc2 [V06,T21] ( 6, 3.54) int -> r15 single-def
+; V07 loc3 [V07,T31] ( 7, 2.43) int -> r13
+; V08 loc4 [V08,T22] ( 5, 3.07) byref -> r12
+; V09 loc5 [V09,T12] ( 13, 5.41) int -> [rsp+0x4C]
+; V10 loc6 [V10,T34] ( 5, 2.00) int -> r13
+; V11 loc7 [V11,T49] ( 4, 1.50) ref -> [rsp+0x28] class-hnd spill-single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+; V12 loc8 [V12,T48] ( 3, 1.50) int -> r13 single-def
; V13 OutArgs [V13 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T39] ( 3, 2 ) int -> r15
+; V14 tmp1 [V14,T37] ( 3, 2 ) int -> r15
;* 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 -> rbp single-def "dup spill"
-; V19 tmp6 [V19,T71] ( 3, 0 ) long -> rdx "spilling helperCall"
+; V18 tmp5 [V18,T13] ( 5, 5.00) byref -> rbp single-def "dup spill"
+; V19 tmp6 [V19,T68] ( 3, 0 ) 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,T72] ( 3, 0 ) long -> [rsp+0x40] "spilling helperCall"
+; V23 tmp10 [V23,T69] ( 3, 0 ) long -> [rsp+0x40] "spilling helperCall"
;* V24 tmp11 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V25 tmp12 [V25,T69] ( 4, 0 ) long -> [rsp+0x38] "VirtualCall with runtime lookup"
+; V25 tmp12 [V25,T66] ( 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,T70] ( 4, 0 ) long -> r11 "VirtualCall with runtime lookup"
-; V39 tmp26 [V39,T40] ( 3, 2 ) int -> rax "guarded devirt return temp"
+; V38 tmp25 [V38,T67] ( 4, 0 ) long -> r11 "VirtualCall with runtime lookup"
+; V39 tmp26 [V39,T38] ( 3, 2 ) 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.TransformNode`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SourceGeneration.GlobalAliases],Microsoft.CodeAnalysis.SourceGeneration.GlobalAliases]>
-; V42 tmp29 [V42,T56] ( 3, 1.00) int -> rax "guarded devirt return temp"
-; V43 tmp30 [V43,T19] ( 7, 4.24) ref -> r14 "guarded devirt arg temp"
+; V42 tmp29 [V42,T53] ( 3, 1.00) int -> rax "guarded devirt return temp"
+; V43 tmp30 [V43,T17] ( 7, 4.24) 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,95 +62,92 @@
; V50 tmp37 [V50,T05] ( 3, 6 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
; V51 tmp38 [V51,T06] ( 3, 6 ) 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,T54] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V53 tmp40 [V53,T51] ( 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,T55] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V55 tmp42 [V55,T52] ( 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 -> rax "guarded devirt return temp"
+; V58 tmp45 [V58,T54] ( 3, 1.00) int -> rax "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.PEModuleSymbol>
-; V61 tmp48 [V61,T50] ( 2, 1.52) ref -> rax class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V61 tmp48 [V61,T47] ( 2, 1.52) ref -> rax 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 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V64 tmp51 [V64 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V65 tmp52 [V65 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V66 tmp53 [V66,T61] ( 3, 0.41) int -> rdx "Inlining Arg"
-; V67 tmp54 [V67,T59] ( 3, 0.41) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
-; V68 tmp55 [V68,T60] ( 3, 0.41) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V66 tmp53 [V66,T58] ( 3, 0.41) int -> rdx "Inlining Arg"
+; V67 tmp54 [V67,T56] ( 3, 0.41) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V68 tmp55 [V68,T57] ( 3, 0.41) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* 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 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V72 tmp59 [V72,T68] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V72 tmp59 [V72,T65] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V73 tmp60 [V73 ] ( 12, 4.45) ref -> [rsp+0x50] do-not-enreg[X] addr-exposed "field V04._items (fldOffset=0x0)" P-DEP
; V74 tmp61 [V74 ] ( 17, 6.91) int -> [rsp+0x58] do-not-enreg[X] addr-exposed "field V04._length (fldOffset=0x8)" P-DEP
-; V75 tmp62 [V75,T41] ( 2, 2 ) ref -> rcx single-def "field V46._items (fldOffset=0x0)" P-INDEP
-; V76 tmp63 [V76,T42] ( 2, 2 ) int -> rdx single-def "field V46._length (fldOffset=0x8)" P-INDEP
-; V77 tmp64 [V77,T65] ( 2, 0.14) ref -> rcx single-def "field V63._items (fldOffset=0x0)" P-INDEP
-; V78 tmp65 [V78,T66] ( 2, 0.14) int -> rdx single-def "field V63._length (fldOffset=0x8)" P-INDEP
+; V75 tmp62 [V75,T39] ( 2, 2 ) ref -> rcx single-def "field V46._items (fldOffset=0x0)" P-INDEP
+; V76 tmp63 [V76,T40] ( 2, 2 ) int -> rdx single-def "field V46._length (fldOffset=0x8)" P-INDEP
+; V77 tmp64 [V77,T62] ( 2, 0.14) ref -> rcx single-def "field V63._items (fldOffset=0x0)" P-INDEP
+; V78 tmp65 [V78,T63] ( 2, 0.14) int -> rdx single-def "field V63._length (fldOffset=0x8)" P-INDEP
; V79 tmp66 [V79,T08] ( 3, 6 ) int -> rax "index expr"
; V80 tmp67 [V80,T09] ( 3, 6 ) int -> rdx "index expr"
-; V81 tmp68 [V81,T22] ( 2, 3.91) long -> rdx "argument with side effect"
-; V82 tmp69 [V82,T46] ( 2, 2.00) long -> rdx "argument with side effect"
-; V83 tmp70 [V83,T49] ( 2, 1.91) long -> rdx "argument with side effect"
-; V84 tmp71 [V84,T64] ( 2, 0.27) int -> rdx "argument with side effect"
-; V85 tmp72 [V85,T62] ( 3, 0.41) int -> rax "index expr"
-; V86 tmp73 [V86,T63] ( 3, 0.41) int -> rdx "index expr"
-; V87 tmp74 [V87,T38] ( 2, 2.00) long -> rdx "argument with side effect"
-; V88 tmp75 [V88,T93] ( 2, 0 ) long -> rdx "argument with side effect"
-; V89 tmp76 [V89,T92] ( 2, 0 ) ref -> rdx "argument with side effect"
-; V90 tmp77 [V90,T94] ( 2, 0 ) long -> rdx "argument with side effect"
-; V91 tmp78 [V91,T95] ( 2, 0 ) long -> rcx "argument with side effect"
-; V92 tmp79 [V92,T96] ( 2, 0 ) long -> rdx "argument with side effect"
-; V93 tmp80 [V93,T97] ( 2, 0 ) long -> rcx "argument with side effect"
-; V94 tmp81 [V94,T47] ( 2, 2.00) long -> rdx "argument with side effect"
+; V81 tmp68 [V81,T20] ( 2, 3.91) long -> rdx "argument with side effect"
+; V82 tmp69 [V82,T43] ( 2, 2.00) long -> rdx "argument with side effect"
+; V83 tmp70 [V83,T46] ( 2, 1.91) long -> rdx "argument with side effect"
+; V84 tmp71 [V84,T61] ( 2, 0.27) int -> rdx "argument with side effect"
+; V85 tmp72 [V85,T59] ( 3, 0.41) int -> rax "index expr"
+; V86 tmp73 [V86,T60] ( 3, 0.41) int -> rdx "index expr"
+; V87 tmp74 [V87,T36] ( 2, 2.00) long -> rdx "argument with side effect"
+; V88 tmp75 [V88,T90] ( 2, 0 ) long -> rdx "argument with side effect"
+; V89 tmp76 [V89,T89] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V90 tmp77 [V90,T91] ( 2, 0 ) long -> rdx "argument with side effect"
+; V91 tmp78 [V91,T92] ( 2, 0 ) long -> rcx "argument with side effect"
+; V92 tmp79 [V92,T93] ( 2, 0 ) long -> rdx "argument with side effect"
+; V93 tmp80 [V93,T94] ( 2, 0 ) long -> rcx "argument with side effect"
+; V94 tmp81 [V94,T44] ( 2, 2.00) long -> rdx "argument with side effect"
; V95 cse0 [V95,T03] ( 31, 6.32) long -> registers multi-def "CSE - aggressive"
-; V96 rat0 [V96,T73] ( 3, 0 ) long -> rcx "Spilling to split statement for tree"
-; V97 rat1 [V97,T74] ( 3, 0 ) long -> r11 "fgMakeTemp is creating a new local variable"
-; V98 rat2 [V98,T17] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
-; V99 rat3 [V99,T20] ( 3, 4 ) long -> rdx "runtime lookup"
+; V96 rat0 [V96,T70] ( 3, 0 ) long -> rcx "Spilling to split statement for tree"
+; V97 rat1 [V97,T71] ( 3, 0 ) long -> r11 "fgMakeTemp is creating a new local variable"
+; V98 rat2 [V98,T16] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
+; V99 rat3 [V99,T18] ( 3, 4 ) long -> rdx "runtime lookup"
; V100 rat4 [V100,T10] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V101 rat5 [V101,T18] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V102 rat6 [V102,T43] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V103 rat7 [V103,T11] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V104 rat8 [V104,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V105 rat9 [V105,T26] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V106 rat10 [V106,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V107 rat11 [V107,T21] ( 3, 3.91) long -> rdx "runtime lookup"
-; V108 rat12 [V108,T12] ( 3, 5.47) long -> rdx "fgMakeTemp is creating a new local variable"
-; V109 rat13 [V109,T44] ( 3, 2.00) long -> rdx "runtime lookup"
-; V110 rat14 [V110,T29] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
-; V111 rat15 [V111,T35] ( 3, 2.10) long -> rcx "Spilling to split statement for tree"
-; V112 rat16 [V112,T48] ( 3, 1.91) long -> rdx "runtime lookup"
-; V113 rat17 [V113,T31] ( 3, 2.67) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V114 rat18 [V114,T58] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V115 rat19 [V115,T32] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V116 rat20 [V116,T34] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
-; V117 rat21 [V117,T45] ( 3, 2.00) long -> rdx "runtime lookup"
-; V118 rat22 [V118,T30] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
-; V119 rat23 [V119,T75] ( 3, 0 ) long -> rcx "Spilling to split statement for tree"
-; V120 rat24 [V120,T76] ( 3, 0 ) long -> rcx "runtime lookup"
-; V121 rat25 [V121,T77] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
-;* V122 rat26 [V122,T78] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V123 rat27 [V123,T98] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V124 rat28 [V124,T79] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V125 rat29 [V125,T80] ( 3, 0 ) long -> rdx "runtime lookup"
-; V126 rat30 [V126,T81] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
-; V127 rat31 [V127,T82] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
-; V128 rat32 [V128,T83] ( 3, 0 ) long -> r8 "fgMakeTemp is creating a new local variable"
-; V129 rat33 [V129,T84] ( 3, 0 ) long -> rdx "runtime lookup"
-; V130 rat34 [V130,T85] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V131 rat35 [V131,T99] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V132 rat36 [V132,T86] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V133 rat37 [V133,T87] ( 3, 0 ) long -> rdx "runtime lookup"
+;* V101 rat5 [V101,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V102 rat6 [V102,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V103 rat7 [V103,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V104 rat8 [V104,T19] ( 3, 3.91) long -> rdx "runtime lookup"
+; V105 rat9 [V105,T11] ( 3, 5.47) long -> rdx "fgMakeTemp is creating a new local variable"
+; V106 rat10 [V106,T41] ( 3, 2.00) long -> rdx "runtime lookup"
+; V107 rat11 [V107,T27] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
+; V108 rat12 [V108,T33] ( 3, 2.10) long -> rcx "Spilling to split statement for tree"
+; V109 rat13 [V109,T45] ( 3, 1.91) long -> rdx "runtime lookup"
+; V110 rat14 [V110,T29] ( 3, 2.67) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V111 rat15 [V111,T55] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V112 rat16 [V112,T30] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V113 rat17 [V113,T32] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V114 rat18 [V114,T42] ( 3, 2.00) long -> rdx "runtime lookup"
+; V115 rat19 [V115,T28] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
+; V116 rat20 [V116,T72] ( 3, 0 ) long -> rcx "Spilling to split statement for tree"
+; V117 rat21 [V117,T73] ( 3, 0 ) long -> rcx "runtime lookup"
+; V118 rat22 [V118,T74] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+;* V119 rat23 [V119,T75] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V120 rat24 [V120,T95] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V121 rat25 [V121,T76] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V122 rat26 [V122,T77] ( 3, 0 ) long -> rdx "runtime lookup"
+; V123 rat27 [V123,T78] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
+; V124 rat28 [V124,T79] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V125 rat29 [V125,T80] ( 3, 0 ) long -> r8 "fgMakeTemp is creating a new local variable"
+; V126 rat30 [V126,T81] ( 3, 0 ) long -> rdx "runtime lookup"
+; V127 rat31 [V127,T82] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V128 rat32 [V128,T96] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V129 rat33 [V129,T83] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V130 rat34 [V130,T84] ( 3, 0 ) long -> rdx "runtime lookup"
+; V131 rat35 [V131,T85] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
+; V132 rat36 [V132,T86] ( 3, 0 ) long -> rcx "runtime lookup"
+; V133 rat37 [V133,T87] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable"
; V134 rat38 [V134,T88] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
-; V135 rat39 [V135,T89] ( 3, 0 ) long -> rcx "runtime lookup"
-; V136 rat40 [V136,T90] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V137 rat41 [V137,T91] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V138 rat42 [V138,T53] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V139 rat43 [V139,T27] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V140 rat44 [V140,T37] ( 3, 2.00) long -> rdx "runtime lookup"
-; V141 rat45 [V141,T28] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V135 rat39 [V135,T50] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V136 rat40 [V136,T25] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V137 rat41 [V137,T35] ( 3, 2.00) long -> rdx "runtime lookup"
+; V138 rat42 [V138,T26] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 104
@@ -179,7 +176,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_IG45
+ je G_M33517_IG46
cmp dword ptr [rbx+0x40], 0
je G_M33517_IG09
;; size=19 bbWeight=1 PerfScore 5.25
@@ -191,10 +188,10 @@ G_M33517_IG04: ; bbWeight=1, extend
mov r14, gword ptr [rbx+0x08]
; gcrRegs +[r14]
test r14, r14
- jne G_M33517_IG46
+ jne G_M33517_IG47
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.TransformNode`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SourceGeneration.GlobalAliases],Microsoft.CodeAnalysis.SourceGeneration.GlobalAliases]
cmp qword ptr [rsi], rcx
- jne G_M33517_IG11
+ jne G_M33517_IG13
;; size=32 bbWeight=1 PerfScore 7.50
G_M33517_IG05: ; bbWeight=0.64, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
mov rcx, rsi
@@ -220,11 +217,11 @@ G_M33517_IG07: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=
...
-20 (-1.15%) : 618534.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.34) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 15, 6.27) ref -> rsi ld-addr-op class-hnd single-def <System.__Canon>
-; V02 arg2 [V02,T15] ( 5, 3 ) ref -> rdi class-hnd single-def <System.__Canon>
-; V03 arg3 [V03,T16] ( 6, 2.50) ubyte -> rbp single-def
+; V02 arg2 [V02,T14] ( 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, 6.92) 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,T25] ( 5, 3 ) ref -> [rsp+0x30] class-hnd single-def <<unknown class>>
-; V06 loc2 [V06,T23] ( 6, 3.55) int -> r15 single-def
-; V07 loc3 [V07,T33] ( 7, 2.44) int -> r13
-; V08 loc4 [V08,T24] ( 5, 3.07) byref -> r12
-; V09 loc5 [V09,T13] ( 13, 5.42) int -> [rsp+0x4C]
-; V10 loc6 [V10,T36] ( 5, 2.00) int -> r13
-; V11 loc7 [V11,T51] ( 4, 1.50) ref -> [rsp+0x28] class-hnd spill-single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
-; V12 loc8 [V12,T50] ( 3, 1.50) int -> r13 single-def
+; V05 loc1 [V05,T23] ( 5, 3 ) ref -> [rsp+0x30] class-hnd single-def <<unknown class>>
+; V06 loc2 [V06,T21] ( 6, 3.55) int -> r15 single-def
+; V07 loc3 [V07,T31] ( 7, 2.44) int -> r13
+; V08 loc4 [V08,T22] ( 5, 3.07) byref -> r12
+; V09 loc5 [V09,T12] ( 13, 5.42) int -> [rsp+0x4C]
+; V10 loc6 [V10,T34] ( 5, 2.00) int -> r13
+; V11 loc7 [V11,T48] ( 4, 1.50) ref -> [rsp+0x28] class-hnd spill-single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+; V12 loc8 [V12,T47] ( 3, 1.50) int -> r13 single-def
; V13 OutArgs [V13 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T39] ( 3, 2 ) int -> r15
+; V14 tmp1 [V14,T37] ( 3, 2 ) int -> r15
;* 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 -> rbp single-def "dup spill"
-; V19 tmp6 [V19,T71] ( 3, 0 ) long -> rdx "spilling helperCall"
+; V18 tmp5 [V18,T13] ( 5, 5.00) byref -> rbp single-def "dup spill"
+; V19 tmp6 [V19,T68] ( 3, 0 ) 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,T72] ( 3, 0 ) long -> [rsp+0x40] "spilling helperCall"
+; V23 tmp10 [V23,T69] ( 3, 0 ) long -> [rsp+0x40] "spilling helperCall"
;* V24 tmp11 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V25 tmp12 [V25,T69] ( 4, 0 ) long -> [rsp+0x38] "VirtualCall with runtime lookup"
+; V25 tmp12 [V25,T66] ( 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,T70] ( 4, 0 ) long -> r11 "VirtualCall with runtime lookup"
-; V39 tmp26 [V39,T40] ( 3, 2 ) int -> rax "guarded devirt return temp"
+; V38 tmp25 [V38,T67] ( 4, 0 ) long -> r11 "VirtualCall with runtime lookup"
+; V39 tmp26 [V39,T38] ( 3, 2 ) 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.InputNode`1[Microsoft.CodeAnalysis.Compilation]>
-; V42 tmp29 [V42,T56] ( 3, 1.00) int -> rax "guarded devirt return temp"
-; V43 tmp30 [V43,T17] ( 7, 4.47) ref -> r14 "guarded devirt arg temp"
+; V42 tmp29 [V42,T53] ( 3, 1.00) int -> rax "guarded devirt return temp"
+; V43 tmp30 [V43,T16] ( 7, 4.47) 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,95 +62,92 @@
; V50 tmp37 [V50,T05] ( 3, 6 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
; V51 tmp38 [V51,T06] ( 3, 6 ) 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,T54] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V53 tmp40 [V53,T51] ( 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,T55] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V55 tmp42 [V55,T52] ( 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 -> rax "guarded devirt return temp"
+; V58 tmp45 [V58,T54] ( 3, 1.00) int -> rax "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.SynthesizedLocal>
-; V61 tmp48 [V61,T52] ( 2, 1.06) ref -> rax class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V61 tmp48 [V61,T49] ( 2, 1.06) ref -> rax 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 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
;* V64 tmp51 [V64 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V65 tmp52 [V65 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V66 tmp53 [V66,T61] ( 3, 0.41) int -> rdx "Inlining Arg"
-; V67 tmp54 [V67,T59] ( 3, 0.41) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
-; V68 tmp55 [V68,T60] ( 3, 0.41) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V66 tmp53 [V66,T58] ( 3, 0.41) int -> rdx "Inlining Arg"
+; V67 tmp54 [V67,T56] ( 3, 0.41) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V68 tmp55 [V68,T57] ( 3, 0.41) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* 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 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-;* V72 tmp59 [V72,T68] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V72 tmp59 [V72,T65] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V73 tmp60 [V73 ] ( 12, 4.46) ref -> [rsp+0x50] do-not-enreg[X] addr-exposed "field V04._items (fldOffset=0x0)" P-DEP
; V74 tmp61 [V74 ] ( 17, 6.92) int -> [rsp+0x58] do-not-enreg[X] addr-exposed "field V04._length (fldOffset=0x8)" P-DEP
-; V75 tmp62 [V75,T41] ( 2, 2 ) ref -> rcx single-def "field V46._items (fldOffset=0x0)" P-INDEP
-; V76 tmp63 [V76,T42] ( 2, 2 ) int -> rdx single-def "field V46._length (fldOffset=0x8)" P-INDEP
-; V77 tmp64 [V77,T65] ( 2, 0.14) ref -> rcx single-def "field V63._items (fldOffset=0x0)" P-INDEP
-; V78 tmp65 [V78,T66] ( 2, 0.14) int -> rdx single-def "field V63._length (fldOffset=0x8)" P-INDEP
+; V75 tmp62 [V75,T39] ( 2, 2 ) ref -> rcx single-def "field V46._items (fldOffset=0x0)" P-INDEP
+; V76 tmp63 [V76,T40] ( 2, 2 ) int -> rdx single-def "field V46._length (fldOffset=0x8)" P-INDEP
+; V77 tmp64 [V77,T62] ( 2, 0.14) ref -> rcx single-def "field V63._items (fldOffset=0x0)" P-INDEP
+; V78 tmp65 [V78,T63] ( 2, 0.14) int -> rdx single-def "field V63._length (fldOffset=0x8)" P-INDEP
; V79 tmp66 [V79,T08] ( 3, 6 ) int -> rax "index expr"
; V80 tmp67 [V80,T09] ( 3, 6 ) int -> rdx "index expr"
-; V81 tmp68 [V81,T22] ( 2, 3.92) long -> rdx "argument with side effect"
-; V82 tmp69 [V82,T46] ( 2, 2.00) long -> rdx "argument with side effect"
-; V83 tmp70 [V83,T49] ( 2, 1.92) long -> rdx "argument with side effect"
-; V84 tmp71 [V84,T64] ( 2, 0.27) int -> rdx "argument with side effect"
-; V85 tmp72 [V85,T62] ( 3, 0.41) int -> rax "index expr"
-; V86 tmp73 [V86,T63] ( 3, 0.41) int -> rdx "index expr"
-; V87 tmp74 [V87,T38] ( 2, 2.00) long -> rdx "argument with side effect"
-; V88 tmp75 [V88,T93] ( 2, 0 ) long -> rdx "argument with side effect"
-; V89 tmp76 [V89,T92] ( 2, 0 ) ref -> rdx "argument with side effect"
-; V90 tmp77 [V90,T94] ( 2, 0 ) long -> rdx "argument with side effect"
-; V91 tmp78 [V91,T95] ( 2, 0 ) long -> rcx "argument with side effect"
-; V92 tmp79 [V92,T96] ( 2, 0 ) long -> rdx "argument with side effect"
-; V93 tmp80 [V93,T97] ( 2, 0 ) long -> rcx "argument with side effect"
-; V94 tmp81 [V94,T47] ( 2, 2.00) long -> rdx "argument with side effect"
+; V81 tmp68 [V81,T20] ( 2, 3.92) long -> rdx "argument with side effect"
+; V82 tmp69 [V82,T43] ( 2, 2.00) long -> rdx "argument with side effect"
+; V83 tmp70 [V83,T46] ( 2, 1.92) long -> rdx "argument with side effect"
+; V84 tmp71 [V84,T61] ( 2, 0.27) int -> rdx "argument with side effect"
+; V85 tmp72 [V85,T59] ( 3, 0.41) int -> rax "index expr"
+; V86 tmp73 [V86,T60] ( 3, 0.41) int -> rdx "index expr"
+; V87 tmp74 [V87,T36] ( 2, 2.00) long -> rdx "argument with side effect"
+; V88 tmp75 [V88,T90] ( 2, 0 ) long -> rdx "argument with side effect"
+; V89 tmp76 [V89,T89] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V90 tmp77 [V90,T91] ( 2, 0 ) long -> rdx "argument with side effect"
+; V91 tmp78 [V91,T92] ( 2, 0 ) long -> rcx "argument with side effect"
+; V92 tmp79 [V92,T93] ( 2, 0 ) long -> rdx "argument with side effect"
+; V93 tmp80 [V93,T94] ( 2, 0 ) long -> rcx "argument with side effect"
+; V94 tmp81 [V94,T44] ( 2, 2.00) long -> rdx "argument with side effect"
; V95 cse0 [V95,T03] ( 31, 6.33) long -> registers multi-def "CSE - aggressive"
-; V96 rat0 [V96,T73] ( 3, 0 ) long -> rcx "Spilling to split statement for tree"
-; V97 rat1 [V97,T74] ( 3, 0 ) long -> r11 "fgMakeTemp is creating a new local variable"
-; V98 rat2 [V98,T18] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
-; V99 rat3 [V99,T20] ( 3, 4 ) long -> rdx "runtime lookup"
+; V96 rat0 [V96,T70] ( 3, 0 ) long -> rcx "Spilling to split statement for tree"
+; V97 rat1 [V97,T71] ( 3, 0 ) long -> r11 "fgMakeTemp is creating a new local variable"
+; V98 rat2 [V98,T17] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
+; V99 rat3 [V99,T18] ( 3, 4 ) long -> rdx "runtime lookup"
; V100 rat4 [V100,T10] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V101 rat5 [V101,T19] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V102 rat6 [V102,T43] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V103 rat7 [V103,T11] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V104 rat8 [V104,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V105 rat9 [V105,T26] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V106 rat10 [V106,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V107 rat11 [V107,T21] ( 3, 3.92) long -> rdx "runtime lookup"
-; V108 rat12 [V108,T12] ( 3, 5.49) long -> rdx "fgMakeTemp is creating a new local variable"
-; V109 rat13 [V109,T44] ( 3, 2.00) long -> rdx "runtime lookup"
-; V110 rat14 [V110,T29] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
-; V111 rat15 [V111,T35] ( 3, 2.11) long -> rcx "Spilling to split statement for tree"
-; V112 rat16 [V112,T48] ( 3, 1.92) long -> rdx "runtime lookup"
-; V113 rat17 [V113,T31] ( 3, 2.69) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V114 rat18 [V114,T58] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V115 rat19 [V115,T32] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V116 rat20 [V116,T34] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
-; V117 rat21 [V117,T45] ( 3, 2.00) long -> rdx "runtime lookup"
-; V118 rat22 [V118,T30] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
-; V119 rat23 [V119,T75] ( 3, 0 ) long -> rcx "Spilling to split statement for tree"
-; V120 rat24 [V120,T76] ( 3, 0 ) long -> rcx "runtime lookup"
-; V121 rat25 [V121,T77] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
-;* V122 rat26 [V122,T78] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V123 rat27 [V123,T98] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V124 rat28 [V124,T79] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V125 rat29 [V125,T80] ( 3, 0 ) long -> rdx "runtime lookup"
-; V126 rat30 [V126,T81] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
-; V127 rat31 [V127,T82] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
-; V128 rat32 [V128,T83] ( 3, 0 ) long -> r8 "fgMakeTemp is creating a new local variable"
-; V129 rat33 [V129,T84] ( 3, 0 ) long -> rdx "runtime lookup"
-; V130 rat34 [V130,T85] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V131 rat35 [V131,T99] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V132 rat36 [V132,T86] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V133 rat37 [V133,T87] ( 3, 0 ) long -> rdx "runtime lookup"
+;* V101 rat5 [V101,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V102 rat6 [V102,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V103 rat7 [V103,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V104 rat8 [V104,T19] ( 3, 3.92) long -> rdx "runtime lookup"
+; V105 rat9 [V105,T11] ( 3, 5.49) long -> rdx "fgMakeTemp is creating a new local variable"
+; V106 rat10 [V106,T41] ( 3, 2.00) long -> rdx "runtime lookup"
+; V107 rat11 [V107,T27] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
+; V108 rat12 [V108,T33] ( 3, 2.11) long -> rcx "Spilling to split statement for tree"
+; V109 rat13 [V109,T45] ( 3, 1.92) long -> rdx "runtime lookup"
+; V110 rat14 [V110,T29] ( 3, 2.69) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V111 rat15 [V111,T55] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V112 rat16 [V112,T30] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V113 rat17 [V113,T32] ( 3, 2.20) long -> rcx "Spilling to split statement for tree"
+; V114 rat18 [V114,T42] ( 3, 2.00) long -> rdx "runtime lookup"
+; V115 rat19 [V115,T28] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
+; V116 rat20 [V116,T72] ( 3, 0 ) long -> rcx "Spilling to split statement for tree"
+; V117 rat21 [V117,T73] ( 3, 0 ) long -> rcx "runtime lookup"
+; V118 rat22 [V118,T74] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+;* V119 rat23 [V119,T75] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V120 rat24 [V120,T95] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V121 rat25 [V121,T76] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V122 rat26 [V122,T77] ( 3, 0 ) long -> rdx "runtime lookup"
+; V123 rat27 [V123,T78] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
+; V124 rat28 [V124,T79] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V125 rat29 [V125,T80] ( 3, 0 ) long -> r8 "fgMakeTemp is creating a new local variable"
+; V126 rat30 [V126,T81] ( 3, 0 ) long -> rdx "runtime lookup"
+; V127 rat31 [V127,T82] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V128 rat32 [V128,T96] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V129 rat33 [V129,T83] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V130 rat34 [V130,T84] ( 3, 0 ) long -> rdx "runtime lookup"
+; V131 rat35 [V131,T85] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
+; V132 rat36 [V132,T86] ( 3, 0 ) long -> rcx "runtime lookup"
+; V133 rat37 [V133,T87] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable"
; V134 rat38 [V134,T88] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
-; V135 rat39 [V135,T89] ( 3, 0 ) long -> rcx "runtime lookup"
-; V136 rat40 [V136,T90] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V137 rat41 [V137,T91] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
-;* V138 rat42 [V138,T53] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V139 rat43 [V139,T27] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V140 rat44 [V140,T37] ( 3, 2.00) long -> rdx "runtime lookup"
-; V141 rat45 [V141,T28] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
+;* V135 rat39 [V135,T50] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V136 rat40 [V136,T25] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V137 rat41 [V137,T35] ( 3, 2.00) long -> rdx "runtime lookup"
+; V138 rat42 [V138,T26] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 104
@@ -179,7 +176,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_IG46
+ je G_M33517_IG47
cmp dword ptr [rbx+0x40], 0
je G_M33517_IG09
;; size=19 bbWeight=1 PerfScore 5.25
@@ -191,10 +188,10 @@ G_M33517_IG04: ; bbWeight=1, extend
mov r14, gword ptr [rbx+0x08]
; gcrRegs +[r14]
test r14, r14
- jne G_M33517_IG47
+ jne G_M33517_IG48
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.InputNode`1[Microsoft.CodeAnalysis.Compilation]
cmp qword ptr [rsi], rcx
- jne G_M33517_IG11
+ jne G_M33517_IG13
;; size=32 bbWeight=1 PerfScore 7.50
G_M33517_IG05: ; bbWeight=0.73, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
mov rcx, rsi
@@ -220,11 +217,11 @@ G_M33517_IG07: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=
...
+10 (+0.09%) : 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)@@ -13,25 +13,25 @@
; V00 this [V00,T68] ( 23, 15.83) ref -> [rbp+0x3B0] this class-hnd EH-live single-def tier0-frame <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T76] ( 16, 30.05) ref -> [rbp+0x3B8] class-hnd single-def tier0-frame <Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][]>
; V02 arg2 [V02,T53] ( 25, 113.60) ref -> [rbp+0x3C0] class-hnd single-def tier0-frame <System.__Canon[]>
-; V03 arg3 [V03,T151] ( 4, 4 ) struct ( 8) [rbp+0x3C8] do-not-enreg[SF] ld-addr-op single-def tier0-frame <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
+; V03 arg3 [V03,T148] ( 4, 4 ) struct ( 8) [rbp+0x3C8] do-not-enreg[SF] ld-addr-op single-def tier0-frame <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
; V04 arg4 [V04,T81] ( 10, 28.62) int -> rdi single-def
; V05 loc0 [V05,T20] ( 96, 5513.78) ref -> [rbp+0x358] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.Queue`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]]>
-; V06 loc1 [V06,T114] ( 23, 15.19) ref -> [rbp+0x350] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.List`1[System.__Canon]>
+; V06 loc1 [V06,T112] ( 23, 15.19) ref -> [rbp+0x350] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.List`1[System.__Canon]>
; V07 loc2 [V07,T55] ( 7, 106.55) int -> r15
; V08 loc3 [V08,T72] ( 10, 36.80) int -> [rbp+0x348] tier0-frame
; V09 loc4 [V09 ] ( 12, 18.50) struct (16) [rbp+0x338] do-not-enreg[XS] addr-exposed ld-addr-op tier0-frame <System.Collections.Immutable.ImmutableArray`1+Enumerator[System.__Canon]>
; V10 loc5 [V10 ] ( 3, 9.14) struct ( 8) [rbp+0x330] do-not-enreg[XS] addr-exposed ld-addr-op tier0-frame <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V11 loc6 [V11,T188] ( 4, 1.23) ref -> r14 class-hnd <System.__Canon>
-; V12 loc7 [V12,T110] ( 10, 15.26) ubyte -> [rbp+0x324] tier0-frame
+; V11 loc6 [V11,T185] ( 4, 1.23) ref -> r14 class-hnd <System.__Canon>
+; V12 loc7 [V12,T108] ( 10, 15.26) ubyte -> [rbp+0x324] tier0-frame
; V13 loc8 [V13 ] ( 19, 27.35) struct (16) [rbp+0x310] do-not-enreg[XS] addr-exposed tier0-frame <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
; V14 loc9 [V14,T75] ( 19, 31.94) int -> [rbp+0x30C] tier0-frame
; V15 loc10 [V15,T84] ( 10, 29.30) ref -> rdx class-hnd <System.__Canon>
-; V16 loc11 [V16,T131] ( 11, 9.53) ref -> [rbp+0x2F8] class-hnd exact tier0-frame <<unknown class>>
-; V17 loc12 [V17,T132] ( 8, 9.47) int -> [rbp+0x2F4] tier0-frame
+; V16 loc11 [V16,T129] ( 11, 9.53) ref -> [rbp+0x2F8] class-hnd exact tier0-frame <<unknown class>>
+; V17 loc12 [V17,T130] ( 8, 9.47) int -> [rbp+0x2F4] tier0-frame
; V18 loc13 [V18,T71] ( 36, 39.23) int -> [rbp+0x2F0] tier0-frame
; V19 loc14 [V19,T07] ( 31, 30959.59) ref -> [rbp+0x2E8] class-hnd tier0-frame <System.__Canon>
; V20 loc15 [V20,T73] ( 25, 35.44) int -> [rbp+0x2E4] tier0-frame
-; V21 loc16 [V21,T113] ( 11, 10.35) ref -> [rbp+0x2D8] class-hnd tier0-frame <System.__Canon>
+; V21 loc16 [V21,T111] ( 11, 10.35) ref -> [rbp+0x2D8] class-hnd tier0-frame <System.__Canon>
; V22 loc17 [V22,T41] ( 18, 403.41) int -> r14
; V23 OutArgs [V23 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V24 tmp1 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -47,8 +47,8 @@
;* V34 tmp11 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
;* V35 tmp12 [V35 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V36 tmp13 [V36 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V37 tmp14 [V37,T150] ( 5, 5.97) int -> [rbp-0x3C] "impAppendStmt"
-; V38 tmp15 [V38,T133] ( 10, 8.95) ref -> rcx class-hnd "spilling ret_expr" <System.__Canon>
+; V37 tmp14 [V37,T147] ( 5, 5.97) int -> [rbp-0x3C] "impAppendStmt"
+; V38 tmp15 [V38,T131] ( 10, 8.95) ref -> rcx class-hnd "spilling ret_expr" <System.__Canon>
;* V39 tmp16 [V39 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V40 tmp17 [V40 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V41 tmp18 [V41 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -56,44 +56,44 @@
;* V43 tmp20 [V43 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V44 tmp21 [V44,T77] ( 15, 30.20) ref -> registers class-hnd "spilling ret_expr" <System.__Canon>
;* V45 tmp22 [V45 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V46 tmp23 [V46,T104] ( 7, 20.14) int -> [rbp-0x40] "impAppendStmt"
+; V46 tmp23 [V46,T103] ( 7, 20.14) int -> [rbp-0x40] "impAppendStmt"
; V47 tmp24 [V47,T78] ( 15, 30.20) ref -> rcx class-hnd "spilling ret_expr" <System.__Canon>
;* V48 tmp25 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
;* V49 tmp26 [V49 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V50 tmp27 [V50 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V51 tmp28 [V51,T134] ( 10, 9.04) ref -> registers class-hnd "spilling ret_expr" <System.__Canon>
+; V51 tmp28 [V51,T132] ( 10, 9.04) ref -> registers class-hnd "spilling ret_expr" <System.__Canon>
;* V52 tmp29 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
;* V53 tmp30 [V53 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V54 tmp31 [V54 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V55 tmp32 [V55 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V56 tmp33 [V56,T140] ( 3, 8.14) int -> rax "guarded devirt return temp"
+; V56 tmp33 [V56,T138] ( 3, 8.14) int -> rax "guarded devirt return temp"
;* V57 tmp34 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
;* V58 tmp35 [V58 ] ( 0, 0 ) struct ( 8) zero-ref "guarded devirt return temp" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
;* V59 tmp36 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
;* V60 tmp37 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager>
-; V61 tmp38 [V61,T164] ( 6, 2.98) int -> r9 "guarded devirt return temp"
+; V61 tmp38 [V61,T161] ( 6, 2.98) int -> r9 "guarded devirt return temp"
;* V62 tmp39 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
;* V63 tmp40 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager>
-; V64 tmp41 [V64,T124] ( 9, 10.07) int -> registers "guarded devirt return temp"
+; V64 tmp41 [V64,T122] ( 9, 10.07) int -> registers "guarded devirt return temp"
;* V65 tmp42 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
-; V66 tmp43 [V66,T125] ( 9, 10.07) int -> registers "guarded devirt return temp"
+; V66 tmp43 [V66,T123] ( 9, 10.07) int -> registers "guarded devirt return temp"
;* V67 tmp44 [V67 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
;* V68 tmp45 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager>
-; V69 tmp46 [V69,T126] ( 9, 10.07) int -> r10 "guarded devirt return temp"
+; V69 tmp46 [V69,T124] ( 9, 10.07) int -> r10 "guarded devirt return temp"
;* V70 tmp47 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
; V71 tmp48 [V71,T57] ( 9, 99.94) ref -> registers "guarded devirt return temp"
;* V72 tmp49 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager>
-; V73 tmp50 [V73,T165] ( 6, 3.01) int -> rcx "guarded devirt return temp"
+; V73 tmp50 [V73,T162] ( 6, 3.01) int -> rcx "guarded devirt return temp"
; V74 tmp51 [V74,T26] ( 24, 1352.83) ref -> [rbp-0xA0] class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
-;* V75 tmp52 [V75,T191] ( 0, 0 ) int -> zero-ref single-def "OSR entry state var"
-; V76 tmp53 [V76,T141] ( 3, 8.14) ubyte -> rax "Inline return value spill temp"
+;* V75 tmp52 [V75,T188] ( 0, 0 ) int -> zero-ref single-def "OSR entry state var"
+; V76 tmp53 [V76,T139] ( 3, 8.14) ubyte -> rax "Inline return value spill temp"
; V77 tmp54 [V77,T89] ( 6, 27.55) ref -> r14 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PEAssembly>
;* V78 tmp55 [V78 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]>
;* V79 tmp56 [V79 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.PEModule]>
;* V80 tmp57 [V80 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]>
;* V81 tmp58 [V81 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.PEModule]>
;* V82 tmp59 [V82 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon[]>
-; V83 tmp60 [V83,T162] ( 4, 3.15) int -> r8 "Inline stloc first use temp"
+; V83 tmp60 [V83,T159] ( 4, 3.15) int -> r8 "Inline stloc first use temp"
;* V84 tmp61 [V84 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V85 tmp62 [V85 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V86 tmp63 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
@@ -103,15 +103,15 @@
; V90 tmp67 [V90,T61] ( 3, 97.63) byref -> r8 "impAppendStmt"
;* V91 tmp68 [V91 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V92 tmp69 [V92 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
-; V93 tmp70 [V93,T187] ( 10, 1.23) byref -> [rbp-0xB8] "Inline stloc first use temp"
-; V94 tmp71 [V94,T182] ( 8, 1.84) int -> [rbp-0x44] "Inline stloc first use temp"
-; V95 tmp72 [V95,T163] ( 14, 3.06) long -> [rbp-0x50] "Inline stloc first use temp"
-; V96 tmp73 [V96,T174] ( 8, 2.45) int -> r10 "Inline stloc first use temp"
-; V97 tmp74 [V97,T183] ( 6, 1.84) long -> rdx "Inline stloc first use temp"
-; V98 tmp75 [V98,T189] ( 8, 1.23) byref -> rcx "Inline stloc first use temp"
-; V99 tmp76 [V99,T158] ( 6, 3.68) int -> [rbp-0x54] "Inlining Arg"
-; V100 tmp77 [V100,T178] ( 12, 2.22) long -> [rbp-0x60] "Inline stloc first use temp"
-; V101 tmp78 [V101,T284] ( 6, 0 ) int -> registers "Inline stloc first use temp"
+; V93 tmp70 [V93,T184] ( 10, 1.23) byref -> [rbp-0xB8] "Inline stloc first use temp"
+; V94 tmp71 [V94,T179] ( 8, 1.84) int -> [rbp-0x44] "Inline stloc first use temp"
+; V95 tmp72 [V95,T160] ( 14, 3.06) long -> [rbp-0x50] "Inline stloc first use temp"
+; V96 tmp73 [V96,T171] ( 8, 2.45) int -> r10 "Inline stloc first use temp"
+; V97 tmp74 [V97,T180] ( 6, 1.84) long -> rdx "Inline stloc first use temp"
+; V98 tmp75 [V98,T186] ( 8, 1.23) byref -> rcx "Inline stloc first use temp"
+; V99 tmp76 [V99,T155] ( 6, 3.68) int -> [rbp-0x54] "Inlining Arg"
+; V100 tmp77 [V100,T175] ( 12, 2.22) long -> [rbp-0x60] "Inline stloc first use temp"
+; V101 tmp78 [V101,T281] ( 6, 0 ) int -> registers "Inline stloc first use temp"
;* V102 tmp79 [V102 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V103 tmp80 [V103 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
;* V104 tmp81 [V104 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -119,14 +119,14 @@
; V106 tmp83 [V106,T62] ( 8, 78.44) int -> [rbp-0x64] "Inlining Arg"
; V107 tmp84 [V107,T64] ( 18, 69.74) int -> registers "Inline stloc first use temp"
;* V108 tmp85 [V108 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V109 tmp86 [V109,T121] ( 6, 10.42) int -> r10 "Inline return value spill temp"
-; V110 tmp87 [V110,T171] ( 6, 2.69) int -> registers "Inlining Arg"
+; V109 tmp86 [V109,T119] ( 6, 10.42) int -> r10 "Inline return value spill temp"
+; V110 tmp87 [V110,T168] ( 6, 2.69) int -> registers "Inlining Arg"
; V111 tmp88 [V111,T69] ( 6, 40.45) byref -> r8 "Inlining Arg"
; V112 tmp89 [V112,T83] ( 8, 30.03) int -> r10 "Inline stloc first use temp"
;* V113 tmp90 [V113 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
;* V114 tmp91 [V114 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V115 tmp92 [V115 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V116 tmp93 [V116,T115] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEAssemblySymbol>
+;* V116 tmp93 [V116,T113] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEAssemblySymbol>
; V117 tmp94 [V117,T19] ( 9, 6448.66) ubyte -> registers "Inline return value spill temp"
; V118 tmp95 [V118,T05] ( 9, 41239.18) int -> registers "impAppendStmt"
; V119 tmp96 [V119,T04] ( 15, 41249.25) ref -> rbx class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PEAssembly>
@@ -139,25 +139,25 @@
; V126 tmp103 [V126,T11] ( 6, 20619.59) ref -> rax class-hnd "Inlining Arg" <<unknown class>>
;* V127 tmp104 [V127 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V128 tmp105 [V128,T79] ( 9, 30.20) ref -> rbx class-hnd "Inlining Arg" <<unknown class>>
-; V129 tmp106 [V129,T117] ( 9, 12.65) byref -> rax "Inline stloc first use temp"
+; V129 tmp106 [V129,T115] ( 9, 12.65) byref -> rax "Inline stloc first use temp"
; V130 tmp107 [V130,T06] ( 7, 41239.18) ref -> rbx "CASTCLASS eval op1"
; V131 tmp108 [V131,T14] ( 7, 10309.80) long -> r13 "fgMakeTemp is creating a new local variable"
; V132 tmp109 [V132,T01] ( 12, 67013.67) ref -> rsi class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol>
;* V133 tmp110 [V133 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V134 tmp111 [V134,T127] ( 9, 10.07) ubyte -> registers "Inline return value spill temp"
+; V134 tmp111 [V134,T125] ( 9, 10.07) ubyte -> registers "Inline return value spill temp"
; V135 tmp112 [V135,T74] ( 18, 34.10) ref -> [rbp-0xC8] class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PEAssembly>
;* V136 tmp113 [V136 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]>
;* V137 tmp114 [V137 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.PEModule]>
;* V138 tmp115 [V138 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]>
;* V139 tmp116 [V139 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.PEModule]>
;* V140 tmp117 [V140 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon[]>
-; V141 tmp118 [V141,T154] ( 14, 3.91) int -> [rbp-0x68] "Inline stloc first use temp"
+; V141 tmp118 [V141,T151] ( 14, 3.91) int -> [rbp-0x68] "Inline stloc first use temp"
;* V142 tmp119 [V142 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
; V143 tmp120 [V143,T13] ( 12, 10309.80) int -> [rbp-0x6C] "Inlining Arg"
; V144 tmp121 [V144,T15] ( 27, 9030.14) int -> registers "Inline stloc first use temp"
;* V145 tmp122 [V145 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V146 tmp123 [V146,T28] ( 9, 1293.76) int -> registers "Inline return value spill temp"
-; V147 tmp124 [V147,T98] ( 9, 22.13) int -> registers "Inlining Arg"
+; V147 tmp124 [V147,T97] ( 9, 22.13) int -> registers "Inlining Arg"
; V148 tmp125 [V148,T21] ( 9, 5164.97) byref -> r8 "Inlining Arg"
; V149 tmp126 [V149,T24] ( 12, 3871.21) int -> r10 "Inline stloc first use temp"
;* V150 tmp127 [V150 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
@@ -175,8 +175,8 @@
; V162 tmp139 [V162,T40] ( 6, 578.49) byref -> [rbp-0xF0] "non-inline candidate call"
; V163 tmp140 [V163,T43] ( 4, 385.66) ref -> rax class-hnd "Inlining Arg" <<unknown class>>
;* V164 tmp141 [V164 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V165 tmp142 [V165,T135] ( 6, 9.04) ref -> registers class-hnd "Inlining Arg" <<unknown class>>
-; V166 tmp143 [V166,T156] ( 6, 3.79) byref -> rax "Inline stloc first use temp"
+; V165 tmp142 [V165,T133] ( 6, 9.04) ref -> registers class-hnd "Inlining Arg" <<unknown class>>
+; V166 tmp143 [V166,T153] ( 6, 3.79) byref -> rax "Inline stloc first use temp"
; V167 tmp144 [V167,T39] ( 5, 771.32) ref -> [rbp-0xF8] "CASTCLASS eval op1"
; V168 tmp145 [V168,T46] ( 5, 192.83) long -> registers "fgMakeTemp is creating a new local variable"
; V169 tmp146 [V169,T33] ( 8, 1253.40) ref -> registers class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol>
@@ -186,209 +186,206 @@
; V173 tmp150 [V173,T47] ( 18, 171.44) int -> registers "Inline stloc first use temp"
;* V174 tmp151 [V174 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V175 tmp152 [V175,T90] ( 6, 25.61) int -> r11 "Inline return value spill temp"
-; V176 tmp153 [V176,T146] ( 6, 6.62) int -> registers "Inlining Arg"
+; V176 tmp153 [V176,T143] ( 6, 6.62) int -> registers "Inlining Arg"
; V177 tmp154 [V177,T58] ( 6, 99.43) byref -> r8 "Inlining Arg"
; V178 tmp155 [V178,T63] ( 8, 73.82) int -> r10 "Inline stloc first use temp"
-; V179 tmp156 [V179,T118] ( 6, 12.20) int -> r8 "Inline stloc first use temp"
+; V179 tmp156 [V179,T116] ( 6, 12.20) int -> r8 "Inline stloc first use temp"
; V180 tmp157 [V180 ] ( 17, 20.22) ref -> [rbp+0x310] do-not-enreg[X] addr-exposed tier0-frame "field V13.AssemblySymbol (fldOffset=0x0)" P-DEP
; V181 tmp158 [V181 ] ( 4, 14.25) int -> [rbp+0x318] do-not-enreg[X] addr-exposed tier0-frame "field V13.DefinitionIndex (fldOffset=0x8)" P-DEP
-; V182 tmp159 [V182,T122] ( 4, 10.42) ref -> r14 "field V34.AssemblySymbol (fldOffset=0x0)" P-INDEP
-; V183 tmp160 [V183,T123] ( 4, 10.42) int -> [rbp-0x74] "field V34.DefinitionIndex (fldOffset=0x8)" P-INDEP
+; V182 tmp159 [V182,T120] ( 4, 10.42) ref -> r14 "field V34.AssemblySymbol (fldOffset=0x0)" P-INDEP
+; V183 tmp160 [V183,T121] ( 4, 10.42) int -> [rbp-0x74] "field V34.DefinitionIndex (fldOffset=0x8)" P-INDEP
; V184 tmp161 [V184,T29] ( 6, 1293.76) ref -> [rbp-0x100] "field V48.AssemblySymbol (fldOffset=0x0)" P-INDEP
; V185 tmp162 [V185,T30] ( 6, 1293.76) int -> [rbp-0x78] "field V48.DefinitionIndex (fldOffset=0x8)" P-INDEP
; V186 tmp163 [V186,T91] ( 4, 25.61) ref -> [rbp-0x108] "field V52.AssemblySymbol (fldOffset=0x0)" P-INDEP
-;* V187 tmp164 [V187,T186] ( 0, 0 ) int -> zero-ref "field V52.DefinitionIndex (fldOffset=0x8)" P-INDEP
-; V188 tmp165 [V188,T139] ( 3, 8.14) ref -> rax "field V58.array (fldOffset=0x0)" P-INDEP
+;* V187 tmp164 [V187,T183] ( 0, 0 ) int -> zero-ref "field V52.DefinitionIndex (fldOffset=0x8)" P-INDEP
+; V188 tmp165 [V188,T137] ( 3, 8.14) ref -> rax "field V58.array (fldOffset=0x0)" P-INDEP
;* V189 tmp166 [V189 ] ( 0, 0 ) ref -> zero-ref "field V78.array (fldOffset=0x0)" P-INDEP
-; V190 tmp167 [V190,T184] ( 2, 1.57) ref -> [rbp-0x110] spill-single-def "field V79._array (fldOffset=0x0)" P-INDEP
-; V191 tmp168 [V191,T155] ( 4, 3.15) int -> [rbp-0x7C] "field V79._index (fldOffset=0x8)" P-INDEP
-; V192 tmp169 [V192,T176] ( 3, 2.36) ref -> rax "field V80.array (fldOffset=0x0)" P-INDEP
-; V193 tmp170 [V193,T185] ( 2, 1.57) ref -> rax "field V81._array (fldOffset=0x0)" P-INDEP
-;* V194 tmp171 [V194,T194] ( 0, 0 ) int -> zero-ref "field V81._index (fldOffset=0x8)" P-INDEP
+; V190 tmp167 [V190,T181] ( 2, 1.57) ref -> [rbp-0x110] spill-single-def "field V79._array (fldOffset=0x0)" P-INDEP
+; V191 tmp168 [V191,T152] ( 4, 3.15) int -> [rbp-0x7C] "field V79._index (fldOffset=0x8)" P-INDEP
+; V192 tmp169 [V192,T173] ( 3, 2.36) ref -> rax "field V80.array (fldOffset=0x0)" P-INDEP
+; V193 tmp170 [V193,T182] ( 2, 1.57) ref -> rax "field V81._array (fldOffset=0x0)" P-INDEP
+;* V194 tmp171 [V194,T191] ( 0, 0 ) int -> zero-ref "field V81._index (fldOffset=0x8)" P-INDEP
;* V195 tmp172 [V195 ] ( 0, 0 ) ref -> zero-ref "field V105.AssemblySymbol (fldOffset=0x0)" P-INDEP
;* V196 tmp173 [V196 ] ( 0, 0 ) int -> zero-ref "field V105.DefinitionIndex (fldOffset=0x8)" P-INDEP
;* V197 tmp174 [V197 ] ( 0, 0 ) ref -> zero-ref "field V136.array (fldOffset=0x0)" P-INDEP
-; V198 tmp175 [V198,T179] ( 9, 1.98) ref -> [rbp-0x118] "field V137._array (fldOffset=0x0)" P-INDEP
-; V199 tmp176 [V199,T153] ( 12, 3.89) int -> [rbp-0x80] "field V137._index (fldOffset=0x8)" P-INDEP
-; V200 tmp177 [V200,T168] ( 9, 2.92) ref -> [rbp-0x120] "field V138.array (fldOffset=0x0)" P-INDEP
-; V201 tmp178 [V201,T180] ( 6, 1.95) ref -> registers "field V139._array (fldOffset=0x0)" P-INDEP
-;* V202 tmp179 [V202,T193] ( 0, 0 ) int -> zero-ref "field V139._index (fldOffset=0x8)" P-INDEP
+; V198 tmp175 [V198,T176] ( 9, 1.98) ref -> [rbp-0x118] "field V137._array (fldOffset=0x0)" P-INDEP
+; V199 tmp176 [V199,T150] ( 12, 3.89) int -> [rbp-0x80] "field V137._index (fldOffset=0x8)" P-INDEP
+; V200 tmp177 [V200,T165] ( 9, 2.92) ref -> [rbp-0x120] "field V138.array (fldOffset=0x0)" P-INDEP
+; V201 tmp178 [V201,T177] ( 6, 1.95) ref -> registers "field V139._array (fldOffset=0x0)" P-INDEP
+;* V202 tmp179 [V202,T190] ( 0, 0 ) int -> zero-ref "field V139._index (fldOffset=0x8)" P-INDEP
;* V203 tmp180 [V203 ] ( 0, 0 ) ref -> zero-ref "field V142.AssemblySymbol (fldOffset=0x0)" P-INDEP
;* V204 tmp181 [V204 ] ( 0, 0 ) int -> zero-ref "field V142.DefinitionIndex (fldOffset=0x8)" P-INDEP
;* V205 tmp182 [V205 ] ( 0, 0 ) ref -> zero-ref "field V171.AssemblySymbol (fldOffset=0x0)" P-INDEP
;* V206 tmp183 [V206 ] ( 0, 0 ) int -> zero-ref "field V171.DefinitionIndex (fldOffset=0x8)" P-INDEP
; V207 tmp184 [V207,T70] ( 28, 39.54) ref -> r12 single-def "V03.[000..008)"
-; V208 tmp185 [V208,T112] ( 2, 16.27) long -> r8 "argument with side effect"
+; V208 tmp185 [V208,T110] ( 2, 16.27) long -> r8 "argument with side effect"
; V209 tmp186 [V209,T34] ( 6, 1156.99) ref -> registers "arr expr"
; V210 tmp187 [V210,T35] ( 6, 1156.99) ref -> rcx "argument with side effect"
; V211 tmp188 [V211,T48] ( 6, 144.62) ref -> rax "arr expr"
; V212 tmp189 [V212,T50] ( 6, 144.62) int -> r8 "index expr"
; V213 tmp190 [V213,T49] ( 6, 144.62) byref -> [rbp-0x128] "BlockOp address local"
-; V214 tmp191 [V214,T157] ( 6, 3.68) ref -> r14 "arr expr"
-; V215 tmp192 [V215,T159] ( 6, 3.68) int -> registers "index expr"
+; V214 tmp191 [V214,T154] ( 6, 3.68) ref -> r14 "arr expr"
+; V215 tmp192 [V215,T156] ( 6, 3.68) int -> registers "index expr"
; V216 tmp193 [V216,T65] ( 6, 58.83) ref -> r8 "arr expr"
; V217 tmp194 [V217,T67] ( 6, 58.83) int -> r10 "index expr"
; V218 tmp195 [V218,T66] ( 6, 58.83) byref -> [rbp-0x130] "BlockOp address local"
...
+2 (+0.12%) : 52945.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.24) 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 -> [rsp+0x30] 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 -> [rsp+0x30] 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 -> r14 single-def "dup spill"
-; V19 tmp6 [V19,T73] ( 3, 0.00) long -> rdx "spilling helperCall"
+; V18 tmp5 [V18,T14] ( 5, 4.99) byref -> r14 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 -> rdx "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 -> rdx "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] ( 31, 6.51) long -> registers 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 -> rdx "runtime lookup"
-; V124 rat30 [V124,T82] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
-; V125 rat31 [V125,T83] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
-; V126 rat32 [V126,T84] ( 3, 0 ) long -> r8 "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] ( 0, 0 ) long -> zero-ref "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] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V100 rat6 [V100,T23] ( 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.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 -> rdx "runtime lookup"
+; V121 rat27 [V121,T79] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
+; V122 rat28 [V122,T80] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V123 rat29 [V123,T81] ( 3, 0 ) long -> r8 "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] ( 0, 0 ) long -> zero-ref "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_IG57
+ je G_M33517_IG58
;; 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_IG19
;; 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]
- jae G_M33517_IG56
+ jae G_M33517_IG57
mov rcx, gword ptr [rcx+8*rax+0x10]
...
+2 (+0.27%) : 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)@@ -12,72 +12,69 @@
; V00 this [V00,T01] ( 9, 10.21) ref -> rbx 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,T17] ( 3, 3.11) int -> rsi single-def
+; V03 arg3 [V03,T16] ( 3, 3.11) int -> rsi single-def
; V04 loc0 [V04 ] ( 5, 6.32) struct (32) [rsp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.__Canon]>
-; V05 loc1 [V05,T34] ( 3, 3.11) ref -> r12 class-hnd exact single-def <<unknown class>>
+; V05 loc1 [V05,T32] ( 3, 3.11) ref -> r12 class-hnd exact single-def <<unknown class>>
; V06 loc2 [V06,T12] ( 7, 6.42) int -> r13
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T26] ( 2, 4 ) ref -> r8 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.__Canon]]>
+; V08 tmp1 [V08,T24] ( 2, 4 ) ref -> r8 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,T20] ( 2, 4.42) long -> rdx "spilling helperCall"
+; V11 tmp4 [V11,T19] ( 2, 4.42) long -> rdx "spilling helperCall"
;* V12 tmp5 [V12 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V13 tmp6 [V13,T19] ( 2, 4.42) ref -> r15 class-hnd "impAppendStmt" <System.__Canon>
+; V13 tmp6 [V13,T18] ( 2, 4.42) ref -> r15 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,T27] ( 2, 4 ) ref -> r13 class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V16 tmp9 [V16,T28] ( 2, 4 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <System.String>
+; V15 tmp8 [V15,T25] ( 2, 4 ) ref -> r13 class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V16 tmp9 [V16,T26] ( 2, 4 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <System.String>
; V17 tmp10 [V17,T03] ( 6, 12 ) ref -> rsi 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 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <<unknown class>>
-; V22 tmp15 [V22,T24] ( 3, 4 ) int -> r15 "Inlining Arg"
+; V22 tmp15 [V22,T22] ( 3, 4 ) int -> r15 "Inlining Arg"
;* V23 tmp16 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
; V24 tmp17 [V24,T13] ( 4, 6.00) ref -> r13 class-hnd exact single-def "Inlining Arg" <<unknown class>>
; V25 tmp18 [V25,T14] ( 8, 5.79) ref -> r12 class-hnd "Inline stloc first use temp" <<unknown class>>
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <<unknown class>>
-; V27 tmp20 [V27,T18] ( 3, 4.73) byref -> rcx single-def "impAppendStmt"
+; V27 tmp20 [V27,T17] ( 3, 4.73) byref -> rcx single-def "impAppendStmt"
;* V28 tmp21 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V29 tmp22 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`2[System.__Canon,int]]>
-; V30 tmp23 [V30,T38] ( 3, 2.21) int -> r8 "Inline return value spill temp"
-; V31 tmp24 [V31,T21] ( 2, 4.42) int -> rax "Inlining Arg"
+; V30 tmp23 [V30,T36] ( 3, 2.21) int -> r8 "Inline return value spill temp"
+; V31 tmp24 [V31,T20] ( 2, 4.42) int -> rax "Inlining Arg"
;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ValueTuple`2[System.Object,int]>
; V33 tmp26 [V33,T00] ( 8, 13.26) ref -> [rsp+0x30] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`2[System.__Canon,int]]>
-; V34 tmp27 [V34,T32] ( 5, 3.32) int -> [rsp+0x3C] spill-single-def "Inline stloc first use temp"
+; V34 tmp27 [V34,T30] ( 5, 3.32) int -> [rsp+0x3C] spill-single-def "Inline stloc first use temp"
;* V35 tmp28 [V35 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V36 tmp29 [V36,T46] ( 3, 0 ) int -> rcx "Inline return value spill temp"
-; V37 tmp30 [V37,T47] ( 3, 0 ) int -> rdx "Inlining Arg"
+; V36 tmp29 [V36,T43] ( 3, 0 ) int -> rcx "Inline return value spill temp"
+; V37 tmp30 [V37,T44] ( 3, 0 ) int -> rdx "Inlining Arg"
; V38 tmp31 [V38,T02] ( 8, 12.04) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
-; V39 tmp32 [V39,T36] ( 5, 3.02) int -> rbp single-def "Inline stloc first use temp"
+; V39 tmp32 [V39,T34] ( 5, 3.02) int -> rbp single-def "Inline stloc first use temp"
;* V40 tmp33 [V40 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V41 tmp34 [V41,T44] ( 2, 0.02) int -> r8 "Inline return value spill temp"
-; V42 tmp35 [V42,T43] ( 3, 0.06) int -> r8 "Inlining Arg"
-; V43 tmp36 [V43,T30] ( 2, 2 ) long -> rbp single-def "field V01._ticks (fldOffset=0x0)" P-INDEP
-; V44 tmp37 [V44,T29] ( 2, 2 ) ref -> rdi single-def "field V02.array (fldOffset=0x0)" P-INDEP
-; V45 tmp38 [V45,T39] ( 2, 2.21) ref -> r15 "field V14.Item1 (fldOffset=0x0)" P-INDEP
-; V46 tmp39 [V46,T40] ( 2, 2.21) int -> [rsp+0x38] spill-single-def "field V14.Item2 (fldOffset=0x8)" P-INDEP
-; V47 tmp40 [V47,T41] ( 2, 2 ) ref -> r14 "field V18.array (fldOffset=0x0)" P-INDEP
+; V41 tmp34 [V41,T41] ( 2, 0.02) int -> r8 "Inline return value spill temp"
+; V42 tmp35 [V42,T40] ( 3, 0.06) int -> r8 "Inlining Arg"
+; V43 tmp36 [V43,T28] ( 2, 2 ) long -> rbp single-def "field V01._ticks (fldOffset=0x0)" P-INDEP
+; V44 tmp37 [V44,T27] ( 2, 2 ) ref -> rdi single-def "field V02.array (fldOffset=0x0)" P-INDEP
+; V45 tmp38 [V45,T37] ( 2, 2.21) ref -> r15 "field V14.Item1 (fldOffset=0x0)" P-INDEP
+; V46 tmp39 [V46,T38] ( 2, 2.21) int -> [rsp+0x38] spill-single-def "field V14.Item2 (fldOffset=0x8)" P-INDEP
+; V47 tmp40 [V47,T39] ( 2, 2 ) ref -> r14 "field V18.array (fldOffset=0x0)" P-INDEP
;* V48 tmp41 [V48 ] ( 0, 0 ) ref -> zero-ref "field V32.Item1 (fldOffset=0x0)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "field V32.Item2 (fldOffset=0x8)" P-INDEP
-; V50 tmp43 [V50,T31] ( 2, 4 ) long -> rdx "argument with side effect"
+; V50 tmp43 [V50,T29] ( 2, 4 ) long -> rdx "argument with side effect"
; V51 tmp44 [V51,T07] ( 2, 8.42) long -> rdx "argument with side effect"
; V52 tmp45 [V52,T08] ( 3, 6.63) ref -> rcx "arr expr"
-; V53 tmp46 [V53,T45] ( 3, 0 ) ref -> rdx "arr expr"
+; V53 tmp46 [V53,T42] ( 3, 0 ) ref -> rdx "arr expr"
; V54 tmp47 [V54,T09] ( 3, 6.63) ref -> rcx "arr expr"
; V55 tmp48 [V55,T11] ( 3, 6.63) int -> rdx "index expr"
; V56 tmp49 [V56,T10] ( 3, 6.63) byref -> [rsp+0x28] spill-single-def "BlockOp address local"
-; V57 cse0 [V57,T35] ( 3, 3.11) long -> r14 "CSE - moderate"
-; V58 cse1 [V58,T37] ( 3, 3 ) ref -> rcx "CSE - moderate"
-; V59 cse2 [V59,T33] ( 4, 3.32) ref -> rcx "CSE - moderate"
-; V60 rat0 [V60,T22] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
-; V61 rat1 [V61,T25] ( 3, 4 ) long -> r14 "runtime lookup"
+; V57 cse0 [V57,T33] ( 3, 3.11) long -> r14 "CSE - moderate"
+; V58 cse1 [V58,T35] ( 3, 3 ) ref -> rcx "CSE - moderate"
+; V59 cse2 [V59,T31] ( 4, 3.32) ref -> rcx "CSE - moderate"
+; V60 rat0 [V60,T21] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
+; V61 rat1 [V61,T23] ( 3, 4 ) long -> r14 "runtime lookup"
; V62 rat2 [V62,T15] ( 3, 5.60) long -> r14 "fgMakeTemp is creating a new local variable"
-;* V63 rat3 [V63,T23] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V64 rat4 [V64,T42] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V65 rat5 [V65,T16] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V66 rat6 [V66,T05] ( 3, 9.26) long -> rcx "Spilling to split statement for tree"
-; V67 rat7 [V67,T06] ( 3, 8.42) long -> rdx "runtime lookup"
-; V68 rat8 [V68,T04] ( 3, 11.79) long -> rdx "fgMakeTemp is creating a new local variable"
+; V63 rat3 [V63,T05] ( 3, 9.26) long -> rcx "Spilling to split statement for tree"
+; V64 rat4 [V64,T06] ( 3, 8.42) long -> rdx "runtime lookup"
+; V65 rat5 [V65,T04] ( 3, 11.79) long -> rdx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 104
@@ -227,11 +224,9 @@ G_M31021_IG11: ; bbWeight=2.11, gcVars=0000000000000000 {}, gcrefRegs=108
mov rdx, qword ptr [rdx+0x28]
test rdx, rdx
je SHORT G_M31021_IG15
- ;; size=19 bbWeight=2.11 PerfScore 19.47
-G_M31021_IG12: ; bbWeight=1.68, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M31021_IG16
- ;; size=2 bbWeight=1.68 PerfScore 3.37
-G_M31021_IG13: ; bbWeight=1.11, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M31021_IG14
+ ;; size=21 bbWeight=2.11 PerfScore 23.69
+G_M31021_IG12: ; bbWeight=1.11, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0000 {}, byref
mov rdx, r14
lea rcx, [rsp+0x40]
mov r8d, r13d
@@ -248,7 +243,7 @@ G_M31021_IG13: ; bbWeight=1.11, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0
jbe G_M31021_IG21
mov r8d, dword ptr [rcx+0x10]
;; size=49 bbWeight=1.11 PerfScore 16.86
-G_M31021_IG14: ; bbWeight=1.11, gcrefRegs=9088 {rbx rdi r12 r15}, byrefRegs=0000 {}, byref
+G_M31021_IG13: ; bbWeight=1.11, gcrefRegs=9088 {rbx rdi r12 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rcx]
mov rcx, qword ptr [rbx]
mov edx, esi
@@ -268,9 +263,12 @@ G_M31021_IG14: ; bbWeight=1.11, gcrefRegs=9088 {rbx rdi r12 r15}, byrefRe
jl G_M31021_IG25
jmp G_M31021_IG10
;; size=56 bbWeight=1.11 PerfScore 22.66
-G_M31021_IG15: ; bbWeight=0.42, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0000 {}, byref
+G_M31021_IG14: ; bbWeight=1.68, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx r8 r15]
; GC ptr vars -{V33}
+ jmp SHORT G_M31021_IG16
+ ;; size=2 bbWeight=1.68 PerfScore 3.37
+G_M31021_IG15: ; bbWeight=0.42, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
@@ -281,7 +279,7 @@ G_M31021_IG16: ; bbWeight=2.11, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0
call [Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.__Canon]:get_Count():int:this]
; gcr arg pop 0
cmp eax, r13d
- jg G_M31021_IG13
+ jg G_M31021_IG12
;; size=20 bbWeight=2.11 PerfScore 10.00
G_M31021_IG17: ; bbWeight=1, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0000 {}, byref, isz
mov r13, gword ptr [rbx+0x28]
@@ -403,7 +401,7 @@ G_M31021_IG24: ; bbWeight=0, gcrefRegs=908A {rcx rbx rdi r12 r15}, byrefR
jae SHORT G_M31021_IG21
mov r8d, r13d
mov r8d, dword ptr [rdx+4*r8+0x10]
- jmp G_M31021_IG14
+ jmp G_M31021_IG13
;; size=22 bbWeight=0 PerfScore 0.00
G_M31021_IG25: ; bbWeight=0, gcVars=0000000000000001 {V33}, gcrefRegs=9188 {rbx rdi r8 r12 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx rdx] +[r8]
@@ -436,7 +434,7 @@ G_M31021_IG27: ; bbWeight=0, gcrefRegs=9188 {rbx rdi r8 r12 r15}, byrefRe
jmp G_M31021_IG10
;; size=33 bbWeight=0 PerfScore 0.00
-; Total bytes of code 745, prolog size 31, PerfScore 194.22, instruction count 193, allocated bytes for code 745 (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 747, prolog size 31, PerfScore 198.43, instruction count 194, allocated bytes for code 747 (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:
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 (-1.28%) : 63142.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
@@ -46,7 +46,7 @@
;* V35 tmp23 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.Serialization.MemberMapping>
;* V36 tmp24 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.Serialization.MemberMapping>
;* V37 tmp25 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.Serialization.MemberMapping>
-; V38 tmp26 [V38,T15] ( 6, 12 ) ref -> registers "argument with side effect"
+; V38 tmp26 [V38,T15] ( 6, 12 ) ref -> rcx "argument with side effect"
; V39 tmp27 [V39,T25] ( 4, 8 ) ref -> rax "argument with side effect"
; V40 tmp28 [V40,T26] ( 4, 8 ) ref -> [rbp-0x88] "argument with side effect"
; V41 tmp29 [V41,T34] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
@@ -62,9 +62,8 @@
; V51 cse3 [V51,T33] ( 4, 3 ) ref -> rcx "CSE - moderate"
; V52 cse4 [V52,T28] ( 6, 6 ) int -> r14 "CSE - moderate"
; V53 cse5 [V53,T31] ( 4, 5 ) long -> 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
@@ -75,15 +74,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
mov rcx, 0xD1FFAB1E ; System.Xml.Serialization.ReflectionXmlSerializationReader+<>c__DisplayClass47_0
call CORINFO_HELP_NEWSFAST
@@ -109,7 +106,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
@@ -520,28 +517,19 @@ G_M44608_IG17: ; bbWeight=0.02, gcVars=0000008000000000 {V49}, 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 rdx, gword ptr [rax+0x10]
- ; gcrRegs +[rdx]
- mov rdx, gword ptr [rdx+0x10]
- mov rdx, gword ptr [rdx+0x10]
- mov gword ptr [rbp-0x88], rdx
- ; GC ptr vars +{V40}
- mov r8, gword ptr [rbp-0x98]
- ; gcrRegs +[r8]
- mov r8, gword ptr [r8+0x50]
- mov rcx, r8
+ mov rcx, gword ptr [rax+0x10]
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
- mov r8, qword ptr [r8]
- ; gcrRegs -[r8]
+ mov rcx, gword ptr [rcx+0x10]
+ mov rcx, gword ptr [rcx+0x10]
+ mov gword ptr [rbp-0x88], rcx
+ ; GC ptr vars +{V40}
+ mov rcx, gword ptr [rbp-0x98]
+ mov rcx, gword ptr [rcx+0x50]
+ mov r8, qword ptr [rcx]
mov r8, qword ptr [r8+0x48]
; GC ptr vars -{V49}
call [r8+0x30]<unknown method>
- ; gcrRegs -[rcx rdx]
+ ; gcrRegs -[rcx]
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
@@ -551,30 +539,33 @@ G_M44608_IG17: ; bbWeight=0.02, gcVars=0000008000000000 {V49}, 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 rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov rdx, gword ptr [rbp-0x48]
- ; gcrRegs +[rdx]
- mov rcx, gword ptr [rdx+0x10]
- ; gcrRegs +[rcx]
- mov r8, gword ptr [rcx+0x08]
+ mov r8, gword ptr [rbp-0x48]
; gcrRegs +[r8]
- mov gword ptr [rbp-0x80], r8
+ mov rcx, gword ptr [r8+0x10]
+ ; gcrRegs +[rcx]
+ mov rcx, gword ptr [rcx+0x08]
+ mov gword ptr [rbp-0x80], rcx
; GC ptr vars +{V27}
mov gword ptr [rbp-0x78], rax
; GC ptr vars +{V26}
lea rcx, bword ptr [rax+0x08]
; gcrRegs -[rcx]
; byrRegs +[rcx]
+ mov rdx, r8
+ ; gcrRegs +[rdx]
; GC ptr vars -{V11}
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx r8]
@@ -595,7 +586,7 @@ G_M44608_IG17: ; bbWeight=0.02, gcVars=0000008000000000 {V49}, gcrefRegs=
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
jmp G_M44608_IG20
- ;; size=218 bbWeight=0.02 PerfScore 1.04
+ ;; size=204 bbWeight=0.02 PerfScore 1.00
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]
@@ -729,7 +720,7 @@ G_M44608_IG21: ; bbWeight=0.50, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0
; gcrRegs +[rax]
;; size=148 bbWeight=0.50 PerfScore 23.12
G_M44608_IG22: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 184
+ add rsp, 168
pop rbx
pop rsi
pop rdi
@@ -847,7 +838,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
@@ -882,7 +873,7 @@ G_M44608_IG31: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
int3
;; size=26 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1796, prolog size 42, PerfScore 521.37, instruction count 406, allocated bytes for code 1796 (MethodHash=bd8b51bf) for method System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
+; Total bytes of code 1773, prolog size 33, PerfScore 520.08, instruction count 402, allocated bytes for code 1773 (MethodHash=bd8b51bf) for method System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -896,7 +887,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.48%) : 186797.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
@@ -33,8 +33,8 @@
; V22 tmp3 [V22,T46] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V23 tmp4 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
; V24 tmp5 [V24,T26] ( 4, 16 ) int -> r14 "impSpillLclRefs"
-; V25 tmp6 [V25,T39] ( 2, 8 ) ref -> rdx class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase>
-; V26 tmp7 [V26,T42] ( 2, 0.04) ubyte -> rcx "Inline return value spill temp"
+; V25 tmp6 [V25,T38] ( 2, 8 ) ref -> rdx class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase>
+;* V26 tmp7 [V26,T42] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V27 tmp8 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
; V28 tmp9 [V28,T32] ( 8, 12 ) ref -> rax class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
;* V29 tmp10 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -43,7 +43,7 @@
; V32 tmp13 [V32,T27] ( 2, 15.84) ubyte -> rax "Inline return value spill temp"
; V33 tmp14 [V33,T00] ( 5,126.72) ref -> [rbp-0x80] class-hnd spill-single-def "Inlining Arg" <System.Type>
; V34 tmp15 [V34,T01] ( 5, 95.04) ref -> [rbp-0x88] class-hnd spill-single-def "Inlining Arg" <System.Reflection.ParameterInfo>
-;* V35 tmp16 [V35,T37] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V35 tmp16 [V35,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V36 tmp17 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
; V37 tmp18 [V37,T13] ( 4, 31.68) ref -> rax class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
;* V38 tmp19 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -69,7 +69,7 @@
; V58 cse2 [V58,T11] ( 15, 35.92) int -> [rbp-0x4C] multi-def "CSE - aggressive"
; V59 cse3 [V59,T19] ( 4, 31.68) long -> [rbp-0x58] spill-single-def "CSE - moderate"
; V60 cse4 [V60,T28] ( 10, 13.54) int -> r15 "CSE - moderate"
-; V61 cse5 [V61,T38] ( 6, 8 ) int -> r14 "CSE - moderate"
+; V61 cse5 [V61,T37] ( 6, 8 ) int -> r14 "CSE - moderate"
; V62 cse6 [V62,T05] ( 5, 71.28) long -> [rbp-0x60] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 152
@@ -231,14 +231,10 @@ G_M46704_IG09: ; bbWeight=0.02, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byr
mov rcx, gword ptr [rax+0x28]
; gcrRegs +[rcx]
cmp rcx, gword ptr [rsi+0x08]
- sete cl
- ; gcrRegs -[rcx]
- movzx rcx, cl
- test ecx, ecx
- jne SHORT G_M46704_IG11
- ;; size=47 bbWeight=0.02 PerfScore 0.44
+ je SHORT G_M46704_IG11
+ ;; size=39 bbWeight=0.02 PerfScore 0.41
G_M46704_IG10: ; bbWeight=0.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+ ; gcrRegs -[rax rcx]
mov ecx, r13d
mov rcx, gword ptr [r15+8*rcx+0x10]
; gcrRegs +[rcx]
@@ -874,7 +870,7 @@ G_M46704_IG54: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
int3
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1667, prolog size 36, PerfScore 1991.92, instruction count 446, allocated bytes for code 1667 (MethodHash=f916498f) for method System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
+; Total bytes of code 1659, prolog size 36, PerfScore 1991.89, instruction count 443, allocated bytes for code 1659 (MethodHash=f916498f) for method System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 5179.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet
1[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.HashSet
1[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
@@ -532,7 +529,7 @@ G_M10461_IG44: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=17 bbWeight=0.50 PerfScore 2.75
-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
@@ -548,7 +545,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
-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.SegmentedHashSet
1[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
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
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
2
1
0
1
-21
+0
libraries.crossgen2.windows.x64.checked.mch
11
11
0
0
-191
+0
libraries.pmi.windows.x64.checked.mch
22
10
0
12
-143
+0
libraries_tests.run.windows.x64.Release.mch
39
30
4
5
-1,546
+19
librariestestsnotieredcompilation.run.windows.x64.Release.mch
8
4
0
4
-134
+0
realworld.run.windows.x64.checked.mch
4
2
0
2
-51
+0
smoke_tests.nativeaot.windows.x64.checked.mch
0
0
0
0
-0
+0
94
65
4
25
-2,196
+19
Context information
Collection
Diffed contexts
MinOpts
FullOpts
Missed, base
Missed, diff
aspnet.run.windows.x64.checked.mch
113,446
48,462
64,984
968 (0.85%)
968 (0.85%)
benchmarks.run.windows.x64.checked.mch
28,178
4
28,174
0 (0.00%)
0 (0.00%)
benchmarks.run_pgo.windows.x64.checked.mch
101,027
50,170
50,857
126 (0.12%)
126 (0.12%)
benchmarks.run_tiered.windows.x64.checked.mch
54,255
36,844
17,411
0 (0.00%)
0 (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,639
6
307,633
2 (0.00%)
2 (0.00%)
libraries_tests.run.windows.x64.Release.mch
682,158
485,176
196,982
2,459 (0.36%)
2,459 (0.36%)
librariestestsnotieredcompilation.run.windows.x64.Release.mch
319,780
21,886
297,894
6 (0.00%)
6 (0.00%)
realworld.run.windows.x64.checked.mch
36,888
3
36,885
0 (0.00%)
0 (0.00%)
smoke_tests.nativeaot.windows.x64.checked.mch
32,444
10
32,434
0 (0.00%)
0 (0.00%)
2,492,949
983,689
1,509,260
3,862 (0.15%)
3,862 (0.15%)
jit-analyze output
aspnet.run.windows.x64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 41788751 (overridden on cmd)
Total bytes of diff: 41788657 (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 : 5346.dasm (-0.84 % of base)
-14 : 91547.dasm (-0.32 % of base)
-14 : 9404.dasm (-0.84 % of base)
-14 : 100842.dasm (-0.32 % of base)
-7 : 17006.dasm (-1.03 % 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) : 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.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.84 % 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.84 % 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)
-7 (-1.03 % 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.03 % 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.84 % 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.84 % 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.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.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)
-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
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 8749669 (overridden on cmd)
Total bytes of diff: 8749669 (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
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 34741684 (overridden on cmd)
Total bytes of diff: 34741668 (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
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 392888034 (overridden on cmd)
Total bytes of diff: 392888013 (overridden on cmd)
Total bytes of delta: -21 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-21 : 558210.dasm (-2.63 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 1 unchanged.
Top method improvements (bytes):
-21 (-2.63 % of base) : 558210.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
Top method improvements (percentages):
-21 (-2.63 % of base) : 558210.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
1 total methods with Code Size differences (1 improved, 0 regressed).
libraries.crossgen2.windows.x64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 39442225 (overridden on cmd)
Total bytes of diff: 39442034 (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 : 116813.dasm (-1.13 % of base)
-23 : 134353.dasm (-1.53 % of base)
-19 : 14105.dasm (-5.62 % of base)
-17 : 132263.dasm (-1.28 % of base)
-8 : 171568.dasm (-0.49 % of base)
-8 : 196186.dasm (-0.39 % of base)
-8 : 171569.dasm (-0.39 % of base)
-8 : 196185.dasm (-0.50 % 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.49 % of base) : 171568.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase: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.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)
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
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 61196803 (overridden on cmd)
Total bytes of diff: 61196660 (overridden on cmd)
Total bytes of delta: -143 (-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)
-23 : 144270.dasm (-1.28 % of base)
-21 : 101993.dasm (-1.48 % of base)
-8 : 187310.dasm (-0.39 % of base)
-8 : 237004.dasm (-0.48 % of base)
-8 : 237005.dasm (-0.39 % of base)
-8 : 187309.dasm (-0.47 % of base)
-7 : 124536.dasm (-0.16 % of base)
-7 : 108530.dasm (-0.16 % of base)
-7 : 108533.dasm (-0.13 % of base)
10 total files with Code Size differences (10 improved, 0 regressed), 12 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)
-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)
-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) : 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)
-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)
Top method improvements (percentages):
-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)
-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)
10 total methods with Code Size differences (10 improved, 0 regressed).
libraries_tests.run.windows.x64.Release.mch
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 279865544 (overridden on cmd)
Total bytes of diff: 279864017 (overridden on cmd)
Total bytes of delta: -1527 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
10 : 73477.dasm (0.09 % of base)
5 : 14755.dasm (0.05 % of base)
2 : 110081.dasm (0.27 % of base)
2 : 52945.dasm (0.12 % of base)
Top file improvements (bytes):
-136 : 341659.dasm (-5.03 % of base)
-134 : 407427.dasm (-4.96 % of base)
-130 : 207408.dasm (-4.80 % of base)
-130 : 669332.dasm (-4.80 % of base)
-130 : 674831.dasm (-4.83 % of base)
-126 : 218609.dasm (-4.75 % of base)
-126 : 119097.dasm (-4.76 % of base)
-126 : 352146.dasm (-4.75 % of base)
-123 : 235309.dasm (-4.62 % of base)
-117 : 299396.dasm (-4.40 % of base)
-34 : 128409.dasm (-4.38 % of base)
-34 : 320678.dasm (-0.33 % of base)
-25 : 415447.dasm (-0.78 % of base)
-23 : 126805.dasm (-0.19 % of base)
-22 : 391535.dasm (-0.18 % of base)
-20 : 166806.dasm (-1.15 % of base)
-20 : 36195.dasm (-0.20 % of base)
-20 : 618534.dasm (-1.15 % of base)
-13 : 184016.dasm (-0.50 % of base)
-13 : 522897.dasm (-0.49 % of base)
34 total files with Code Size differences (30 improved, 4 regressed), 5 unchanged.
Top method regressions (bytes):
10 (0.09 % 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)
5 (0.05 % 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)
2 (0.12 % of base) : 52945.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
2 (0.27 % 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)
Top method improvements (bytes):
-136 (-5.03 % of base) : 341659.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-134 (-4.96 % of base) : 407427.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-130 (-4.80 % of base) : 207408.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-130 (-4.80 % of base) : 669332.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-130 (-4.83 % of base) : 674831.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-126 (-4.75 % of base) : 218609.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-126 (-4.76 % of base) : 119097.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-126 (-4.75 % of base) : 352146.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-123 (-4.62 % of base) : 235309.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-117 (-4.40 % of base) : 299396.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-34 (-4.38 % of base) : 128409.dasm - Microsoft.Extensions.Options.OptionsFactory`1[System.__Canon]:Create(System.String):System.__Canon:this (Tier1)
-34 (-0.33 % of base) : 320678.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1-OSR)
-25 (-0.78 % of base) : 415447.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (Tier1)
-23 (-0.19 % of base) : 126805.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1)
-22 (-0.18 % of base) : 391535.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1)
-20 (-1.15 % of base) : 166806.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-20 (-1.15 % of base) : 618534.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-20 (-0.20 % 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)
-13 (-0.50 % of base) : 184016.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-13 (-0.49 % of base) : 522897.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
Top method regressions (percentages):
2 (0.27 % 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)
2 (0.12 % of base) : 52945.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
10 (0.09 % 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)
5 (0.05 % 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)
Top method improvements (percentages):
-136 (-5.03 % of base) : 341659.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-134 (-4.96 % of base) : 407427.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-130 (-4.83 % of base) : 674831.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-130 (-4.80 % of base) : 669332.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-130 (-4.80 % of base) : 207408.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-126 (-4.76 % of base) : 119097.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-126 (-4.75 % of base) : 218609.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-126 (-4.75 % of base) : 352146.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-123 (-4.62 % of base) : 235309.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-117 (-4.40 % of base) : 299396.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-34 (-4.38 % of base) : 128409.dasm - Microsoft.Extensions.Options.OptionsFactory`1[System.__Canon]:Create(System.String):System.__Canon:this (Tier1)
-20 (-1.15 % of base) : 166806.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-20 (-1.15 % of base) : 618534.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
-25 (-0.78 % of base) : 415447.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (Tier1)
-5 (-0.66 % of base) : 311023.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-7 (-0.58 % of base) : 56277.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
-7 (-0.57 % of base) : 87733.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
-13 (-0.50 % of base) : 184016.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-13 (-0.49 % of base) : 522897.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-6 (-0.44 % of base) : 651851.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
34 total methods with Code Size differences (30 improved, 4 regressed).
librariestestsnotieredcompilation.run.windows.x64.Release.mch
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 133434685 (overridden on cmd)
Total bytes of diff: 133434551 (overridden on cmd)
Total bytes of delta: -134 (-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)
-23 : 99796.dasm (-5.61 % of base)
-23 : 63142.dasm (-1.28 % of base)
-8 : 186797.dasm (-0.48 % of base)
4 total files with Code Size differences (4 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)
-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)
-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)
-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)
4 total methods with Code Size differences (4 improved, 0 regressed).
realworld.run.windows.x64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 14170666 (overridden on cmd)
Total bytes of diff: 14170615 (overridden on cmd)
Total bytes of delta: -51 (-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)
-19 : 35053.dasm (-0.28 % of base)
2 total files with Code Size differences (2 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)
-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):
-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)
2 total methods with Code Size differences (2 improved, 0 regressed).