Assembly Diffs

linux arm

Diffs are based on 2,231,354 contexts (827,812 MinOpts, 1,403,542 FullOpts).

MISSED contexts: base: 74,588 (3.23%), diff: 80,924 (3.50%)

Overall (-6 bytes)

Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.linux.arm.checked.mch 321,168,304 -66
libraries_tests.run.linux.arm.Release.mch 241,530,954 +60

FullOpts (-6 bytes)

Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.linux.arm.checked.mch 108,438,170 -66
libraries_tests.run.linux.arm.Release.mch 119,528,010 +60

Example diffs

coreclr_tests.run.linux.arm.checked.mch

-38 (-3.19%) : 312368.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

@@ -15,83 +15,82 @@ ; V03 loc1 [V03,T04] ( 7, 4.90) ref -> r7 class-hnd exact <Internal.TypeSystem.InstantiatedType> ; V04 OutArgs [V04 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.InstantiatedType>
-;* V06 tmp2 [V06,T38] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" -; V07 tmp3 [V07,T37] ( 2, 0.85) ref -> r0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType> -; V08 tmp4 [V08,T19] ( 3, 1.70) int -> r2 "fgMakeTemp is creating a new local variable" -; V09 tmp5 [V09,T51] ( 2, 0 ) ref -> r4 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2 [V06,T37] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" +; V07 tmp3 [V07,T36] ( 2, 0.85) ref -> r0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType> +; V08 tmp4 [V08,T18] ( 3, 1.70) int -> r2 "fgMakeTemp is creating a new local variable" +; V09 tmp5 [V09,T50] ( 2, 0 ) ref -> r4 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
; V10 tmp6 [V10,T02] ( 7, 5.77) ref -> r8 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType> ; V11 tmp7 [V11,T03] ( 14, 5.15) ref -> r6 "guarded devirt return temp" ;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.MethodForInstantiatedType>
-; V13 tmp9 [V13,T10] ( 8, 2.86) ref -> r9 "guarded devirt return temp"
+; V13 tmp9 [V13,T09] ( 8, 2.86) ref -> r9 "guarded devirt return temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V15 tmp11 [V15,T17] ( 4, 1.72) ref -> r5 "guarded devirt return temp"
+; V15 tmp11 [V15,T16] ( 4, 1.72) ref -> r5 "guarded devirt return temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V17 tmp13 [V17,T15] ( 8, 2.14) ref -> r7 "guarded devirt return temp"
+; V17 tmp13 [V17,T14] ( 8, 2.14) ref -> r7 "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod> ;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref
-; V20 tmp16 [V20,T29] ( 3, 1.15) int -> r0 -; V21 tmp17 [V21,T16] ( 3, 1.85) ref -> r10 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V20 tmp16 [V20,T28] ( 3, 1.15) int -> r0 +; V21 tmp17 [V21,T15] ( 3, 1.85) ref -> r10 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V22 tmp18 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.InstantiatedType>
-; V23 tmp19 [V23,T35] ( 3, 0.92) ref -> r3 "guarded devirt return temp"
+; V23 tmp19 [V23,T34] ( 3, 0.92) ref -> r3 "guarded devirt return temp"
;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.InstantiatedType>
-; V25 tmp21 [V25,T40] ( 3, 0.44) ref -> r10 "guarded devirt return temp" -; V26 tmp22 [V26,T23] ( 5, 1.33) ref -> r0 single-def "guarded devirt arg temp"
+; V25 tmp21 [V25,T39] ( 3, 0.44) ref -> r10 "guarded devirt return temp" +; V26 tmp22 [V26,T22] ( 5, 1.33) ref -> r0 single-def "guarded devirt arg temp"
;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V28 tmp24 [V28,T41] ( 3, 0.44) ref -> r10 "guarded devirt return temp" -; V29 tmp25 [V29,T24] ( 5, 1.33) ref -> r0 single-def "guarded devirt arg temp"
+; V28 tmp24 [V28,T40] ( 3, 0.44) ref -> r10 "guarded devirt return temp" +; V29 tmp25 [V29,T23] ( 5, 1.33) ref -> r0 single-def "guarded devirt arg temp"
;* V30 tmp26 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V31 tmp27 [V31,T42] ( 3, 0.44) ref -> r3 "guarded devirt return temp" -; V32 tmp28 [V32,T25] ( 5, 1.33) ref -> r0 single-def "guarded devirt arg temp"
+; V31 tmp27 [V31,T41] ( 3, 0.44) ref -> r3 "guarded devirt return temp" +; V32 tmp28 [V32,T24] ( 5, 1.33) ref -> r0 single-def "guarded devirt arg temp"
;* V33 tmp29 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V34 tmp30 [V34,T43] ( 3, 0.44) ref -> r3 "guarded devirt return temp" -; V35 tmp31 [V35,T26] ( 5, 1.33) ref -> r0 single-def "guarded devirt arg temp"
+; V34 tmp30 [V34,T42] ( 3, 0.44) ref -> r3 "guarded devirt return temp" +; V35 tmp31 [V35,T25] ( 5, 1.33) ref -> r0 single-def "guarded devirt arg temp"
;* V36 tmp32 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V37 tmp33 [V37,T09] ( 5, 2.90) ref -> r0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule> -; V38 tmp34 [V38,T34] ( 3, 0.97) ref -> r5 "guarded devirt return temp"
+; V37 tmp33 [V37,T08] ( 5, 2.90) ref -> r0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule> +; V38 tmp34 [V38,T33] ( 3, 0.97) ref -> r5 "guarded devirt return temp"
;* V39 tmp35 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly> ;* V40 tmp36 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaType> ; V41 tmp37 [V41,T06] ( 4, 3.74) ref -> r0 class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType> ; V42 tmp38 [V42,T07] ( 4, 3.74) ref -> r0 class-hnd "spilling QMark2" <<unknown class>> ;* V43 tmp39 [V43 ] ( 0, 0 ) struct (12) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey> ; V44 tmp40 [V44,T05] ( 4, 4.47) ref -> r5 class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V45 tmp41 [V45,T14] ( 2, 2.30) int -> r8 "impAppendStmt" -; V46 tmp42 [V46,T27] ( 4, 1.15) ref -> r0 "guarded devirt return temp"
+; V45 tmp41 [V45,T13] ( 2, 2.30) int -> r8 "impAppendStmt" +; V46 tmp42 [V46,T26] ( 4, 1.15) ref -> r0 "guarded devirt return temp"
;* V47 tmp43 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V48 tmp44 [V48,T49] ( 2, 0.06) byref -> r8 single-def "impAppendStmt" -; V49 tmp45 [V49,T50] ( 3, 0.03) int -> r0 "guarded devirt return temp" -; V50 tmp46 [V50,T48] ( 5, 0.09) ref -> r0 single-def "guarded devirt arg temp"
+; V48 tmp44 [V48,T48] ( 2, 0.06) byref -> r8 single-def "impAppendStmt" +; V49 tmp45 [V49,T49] ( 3, 0.03) int -> r0 "guarded devirt return temp" +; V50 tmp46 [V50,T47] ( 5, 0.09) ref -> r0 single-def "guarded devirt arg temp"
;* V51 tmp47 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType> ;* V52 tmp48 [V52 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V53 tmp49 [V53,T28] ( 3, 1.15) ref -> r0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V53 tmp49 [V53,T27] ( 3, 1.15) ref -> r0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
;* V54 tmp50 [V54 ] ( 0, 0 ) struct (12) zero-ref "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey> ; V55 tmp51 [V55 ] ( 2, 0.64) ref -> [sp+0x0C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V56 tmp52 [V56,T20] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType> -; V57 tmp53 [V57,T13] ( 4, 2.76) ref -> r0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc> -; V58 tmp54 [V58,T36] ( 3, 0.85) int -> r0 -; V59 tmp55 [V59,T22] ( 3, 1.37) ref -> r8 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V56 tmp52 [V56,T19] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType> +; V57 tmp53 [V57,T12] ( 3, 2.55) ref -> r0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc> +; V58 tmp54 [V58,T35] ( 3, 0.85) int -> r0 +; V59 tmp55 [V59,T21] ( 3, 1.37) ref -> r8 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V60 tmp56 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.InstantiatedType>
-; V61 tmp57 [V61,T39] ( 3, 0.68) ref -> r3 "guarded devirt return temp"
+; V61 tmp57 [V61,T38] ( 3, 0.68) ref -> r0 "guarded devirt return temp"
;* V62 tmp58 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.InstantiatedType>
-; V63 tmp59 [V63,T44] ( 3, 0.33) ref -> r8 "guarded devirt return temp" -; V64 tmp60 [V64,T30] ( 5, 0.98) ref -> r0 single-def "guarded devirt arg temp"
+; V63 tmp59 [V63,T43] ( 3, 0.33) ref -> r8 "guarded devirt return temp" +; V64 tmp60 [V64,T29] ( 5, 0.98) ref -> r0 single-def "guarded devirt arg temp"
;* V65 tmp61 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V66 tmp62 [V66,T45] ( 3, 0.33) ref -> r8 "guarded devirt return temp" -; V67 tmp63 [V67,T31] ( 5, 0.98) ref -> r0 single-def "guarded devirt arg temp"
+; V66 tmp62 [V66,T44] ( 3, 0.33) ref -> r8 "guarded devirt return temp" +; V67 tmp63 [V67,T30] ( 5, 0.98) ref -> r0 single-def "guarded devirt arg temp"
;* V68 tmp64 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V69 tmp65 [V69,T46] ( 3, 0.33) ref -> r3 "guarded devirt return temp" -; V70 tmp66 [V70,T32] ( 5, 0.98) ref -> r0 single-def "guarded devirt arg temp"
+; V69 tmp65 [V69,T45] ( 3, 0.33) ref -> r0 "guarded devirt return temp" +; V70 tmp66 [V70,T31] ( 5, 0.98) ref -> r0 single-def "guarded devirt arg temp"
;* V71 tmp67 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V72 tmp68 [V72,T47] ( 3, 0.33) ref -> r3 "guarded devirt return temp" -; V73 tmp69 [V73,T33] ( 5, 0.98) ref -> r0 single-def "guarded devirt arg temp"
+; V72 tmp68 [V72,T46] ( 3, 0.33) ref -> r0 "guarded devirt return temp" +; V73 tmp69 [V73,T32] ( 5, 0.98) ref -> r0 single-def "guarded devirt arg temp"
;* V74 tmp70 [V74 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V75 tmp71 [V75,T12] ( 8, 2.81) ref -> r6 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP -; V76 tmp72 [V76,T11] ( 8, 2.86) ref -> r7 single-def "field V43._instantiatedType (fldOffset=0x4)" P-INDEP -; V77 tmp73 [V77,T21] ( 3, 1.66) int -> r4 single-def "field V43._hashcode (fldOffset=0x8)" P-INDEP
+; V75 tmp71 [V75,T11] ( 8, 2.81) ref -> r6 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP +; V76 tmp72 [V76,T10] ( 8, 2.86) ref -> r7 single-def "field V43._instantiatedType (fldOffset=0x4)" P-INDEP +; V77 tmp73 [V77,T20] ( 3, 1.66) int -> r4 single-def "field V43._hashcode (fldOffset=0x8)" P-INDEP
;* V78 tmp74 [V78 ] ( 0, 0 ) ref -> zero-ref single-def "field V54._typicalMethodDef (fldOffset=0x0)" P-INDEP ;* V79 tmp75 [V79 ] ( 0, 0 ) ref -> zero-ref single-def "field V54._instantiatedType (fldOffset=0x4)" P-INDEP ;* V80 tmp76 [V80 ] ( 0, 0 ) int -> zero-ref single-def "field V54._hashcode (fldOffset=0x8)" P-INDEP
-; V81 cse0 [V81,T18] ( 3, 1.72) ref -> r0 "CSE - moderate" -; V82 rat0 [V82,T08] ( 6, 3.40) ref -> r3 class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
+; V81 cse0 [V81,T17] ( 3, 1.72) ref -> r0 "CSE - moderate"
; ; Lcl frame size = 20 @@ -165,7 +164,7 @@ G_M10698_IG09: ; bbWeight=0.57, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000 movw r3, 0xd1ff movt r3, 0xd1ff cmp r0, r3
- bne G_M10698_IG74
+ bne G_M10698_IG81
ldr r9, [r6+0x08] ; gcrRegs +[r9] ;; size=24 bbWeight=0.57 PerfScore 4.02 @@ -191,13 +190,13 @@ G_M10698_IG13: ; bbWeight=0.22, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefReg movw r2, 0xd1ff movt r2, 0xd1ff cmp r3, r2
- bne G_M10698_IG76
+ bne G_M10698_IG83
ldr r0, [r0+0x38] ldr r3, [r0] movw r2, 0xd1ff movt r2, 0xd1ff cmp r3, r2
- bne G_M10698_IG75
+ bne G_M10698_IG82
ldr r10, [r0+0x04] ; gcrRegs +[r10] ;; size=42 bbWeight=0.22 PerfScore 2.88 @@ -231,13 +230,13 @@ G_M10698_IG17: ; bbWeight=0.22, gcrefRegs=07D0 {r4 r6 r7 r8 r9 r10}, byre movw r2, 0xd1ff movt r2, 0xd1ff cmp r3, r2
- bne G_M10698_IG78
+ bne G_M10698_IG85
ldr r0, [r0+0x38] ldr r3, [r0] movw r2, 0xd1ff movt r2, 0xd1ff cmp r3, r2
- bne G_M10698_IG77
+ bne G_M10698_IG84
ldr r3, [r0+0x04] ; gcrRegs +[r3] ;; size=40 bbWeight=0.22 PerfScore 2.88 @@ -300,7 +299,7 @@ G_M10698_IG25: ; bbWeight=0.48, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000 movw r2, 0xd1ff movt r2, 0xd1ff cmp r3, r2
- bne G_M10698_IG79
+ bne G_M10698_IG86
ldr r5, [r0+0x04] ; gcrRegs +[r5] b SHORT G_M10698_IG27 @@ -319,7 +318,7 @@ G_M10698_IG27: ; bbWeight=0.57, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 movw r2, 0xd1ff movt r2, 0xd1ff cmp r3, r2
- bne G_M10698_IG53
+ bne G_M10698_IG58
;; size=22 bbWeight=0.57 PerfScore 4.02 G_M10698_IG28: ; bbWeight=0.57, gcrefRegs=00E1 {r0 r5 r6 r7}, byrefRegs=0000 {}, byref, isz cmp r0, 0 @@ -342,7 +341,7 @@ G_M10698_IG30: ; bbWeight=0.57, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 movw r2, 0xd1ff movt r2, 0xd1ff cmp r3, r2
- bne G_M10698_IG47
+ bne G_M10698_IG49
;; size=30 bbWeight=0.57 PerfScore 5.75 G_M10698_IG31: ; bbWeight=0.57, gcrefRegs=00E1 {r0 r5 r6 r7}, byrefRegs=0000 {}, byref, isz cmp r0, 0 @@ -362,7 +361,7 @@ G_M10698_IG33: ; bbWeight=0.57, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 ldr r5, [r5+0x28] ldr r0, [r7+0x40] cmp r0, 0
- beq SHORT G_M10698_IG45
+ beq SHORT G_M10698_IG47
;; size=20 bbWeight=0.57 PerfScore 4.60 G_M10698_IG34: ; bbWeight=0.57, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz ldr r8, [r7+0x40] @@ -370,12 +369,12 @@ G_M10698_IG34: ; bbWeight=0.57, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 movw r3, 0xd1ff movt r3, 0xd1ff cmp r0, r3
- bne G_M10698_IG82
+ bne G_M10698_IG72
ldr r0, [r6+0x10] ; gcrRegs +[r0] cmp r0, 0
- beq G_M10698_IG80 - ;; size=28 bbWeight=0.57 PerfScore 5.17
+ beq SHORT G_M10698_IG46 + ;; size=26 bbWeight=0.57 PerfScore 5.17
G_M10698_IG35: ; bbWeight=0.57, gcrefRegs=00E1 {r0 r5 r6 r7}, byrefRegs=0000 {}, byref, isz movw r3, 0xd1ff movt r3, 0xd1ff @@ -430,17 +429,17 @@ G_M10698_IG38: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=007 movw r3, 0xd1ff movt r3, 0xd1ff cmp r0, r3
- bne G_M10698_IG86
+ bne G_M10698_IG76
ldr r7, [r6+0x08] ; gcrRegs +[r7] ;; size=32 bbWeight=0.43 PerfScore 4.68 G_M10698_IG39: ; bbWeight=0.43, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r4] cmp r7, 0
- beq SHORT G_M10698_IG54
+ beq SHORT G_M10698_IG50
;; size=4 bbWeight=0.43 PerfScore 0.85 G_M10698_IG40: ; bbWeight=0.34, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M10698_IG59
+ b SHORT G_M10698_IG55
;; size=2 bbWeight=0.34 PerfScore 0.34 G_M10698_IG41: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r5-r7] @@ -457,20 +456,6 @@ G_M10698_IG42: ; bbWeight=0.43, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ldr r3, [r3+0x0C] blx r3 // <unknown method> ldrsb r1, [r0]
- mov r3, r0 - ; gcrRegs +[r3] - cmp r3, 0 - beq SHORT G_M10698_IG49 - ;; size=20 bbWeight=0.43 PerfScore 3.83
...

-28 (-2.61%) : 309676.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

@@ -15,71 +15,70 @@ ; V03 loc1 [V03,T04] ( 7, 4.90) ref -> r7 class-hnd exact <Internal.TypeSystem.InstantiatedType> ; V04 OutArgs [V04 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.InstantiatedType>
-;* V06 tmp2 [V06,T33] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" -; V07 tmp3 [V07,T32] ( 2, 0.85) ref -> r0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType> -; V08 tmp4 [V08,T21] ( 3, 1.69) int -> r2 "fgMakeTemp is creating a new local variable" -; V09 tmp5 [V09,T43] ( 2, 0 ) ref -> r4 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2 [V06,T32] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" +; V07 tmp3 [V07,T31] ( 2, 0.85) ref -> r0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType> +; V08 tmp4 [V08,T20] ( 3, 1.69) int -> r2 "fgMakeTemp is creating a new local variable" +; V09 tmp5 [V09,T42] ( 2, 0 ) ref -> r4 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
; V10 tmp6 [V10,T02] ( 7, 5.54) ref -> r8 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType> ; V11 tmp7 [V11,T03] ( 14, 5.15) ref -> r6 "guarded devirt return temp" ;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.MethodForInstantiatedType>
-; V13 tmp9 [V13,T12] ( 8, 2.72) ref -> r9 "guarded devirt return temp"
+; V13 tmp9 [V13,T10] ( 8, 2.72) ref -> r9 "guarded devirt return temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V15 tmp11 [V15,T19] ( 4, 1.73) ref -> r5 "guarded devirt return temp"
+; V15 tmp11 [V15,T18] ( 4, 1.73) ref -> r5 "guarded devirt return temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V17 tmp13 [V17,T15] ( 8, 2.02) ref -> r7 "guarded devirt return temp"
+; V17 tmp13 [V17,T14] ( 8, 2.02) ref -> r7 "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod> ;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref
-; V20 tmp16 [V20,T29] ( 3, 1.15) int -> r0 -; V21 tmp17 [V21,T17] ( 3, 1.78) ref -> r10 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V20 tmp16 [V20,T28] ( 3, 1.15) int -> r0 +; V21 tmp17 [V21,T16] ( 3, 1.78) ref -> r10 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V22 tmp18 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V23 tmp19 [V23,T30] ( 3, 0.89) ref -> r3 "guarded devirt return temp"
+; V23 tmp19 [V23,T29] ( 3, 0.89) ref -> r3 "guarded devirt return temp"
;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V25 tmp21 [V25,T37] ( 3, 0.59) ref -> r10 "guarded devirt return temp" -; V26 tmp22 [V26,T18] ( 5, 1.76) ref -> r0 single-def "guarded devirt arg temp"
+; V25 tmp21 [V25,T36] ( 3, 0.59) ref -> r10 "guarded devirt return temp" +; V26 tmp22 [V26,T17] ( 5, 1.76) ref -> r0 single-def "guarded devirt arg temp"
;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V28 tmp24 [V28,T36] ( 3, 0.64) ref -> r3 "guarded devirt return temp" -; V29 tmp25 [V29,T16] ( 5, 1.92) ref -> r0 single-def "guarded devirt arg temp"
+; V28 tmp24 [V28,T35] ( 3, 0.64) ref -> r3 "guarded devirt return temp" +; V29 tmp25 [V29,T15] ( 5, 1.92) ref -> r0 single-def "guarded devirt arg temp"
;* V30 tmp26 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V31 tmp27 [V31,T13] ( 5, 2.45) ref -> r0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule> -; V32 tmp28 [V32,T34] ( 3, 0.82) ref -> r5 "guarded devirt return temp"
+; V31 tmp27 [V31,T12] ( 5, 2.45) ref -> r0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule> +; V32 tmp28 [V32,T33] ( 3, 0.82) ref -> r5 "guarded devirt return temp"
;* V33 tmp29 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly> ;* V34 tmp30 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaType> ; V35 tmp31 [V35,T06] ( 4, 3.75) ref -> r0 class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType> ; V36 tmp32 [V36,T07] ( 4, 3.75) ref -> r0 class-hnd "spilling QMark2" <<unknown class>> ;* V37 tmp33 [V37 ] ( 0, 0 ) struct (12) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey> ; V38 tmp34 [V38,T05] ( 4, 4.49) ref -> r5 class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V39 tmp35 [V39,T14] ( 2, 2.31) int -> r8 "impAppendStmt" -; V40 tmp36 [V40,T27] ( 4, 1.15) ref -> r0 "guarded devirt return temp"
+; V39 tmp35 [V39,T13] ( 2, 2.31) int -> r8 "impAppendStmt" +; V40 tmp36 [V40,T26] ( 4, 1.15) ref -> r0 "guarded devirt return temp"
;* V41 tmp37 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V42 tmp38 [V42,T41] ( 2, 0.06) byref -> r8 single-def "impAppendStmt" -; V43 tmp39 [V43,T42] ( 3, 0.03) int -> r0 "guarded devirt return temp" -; V44 tmp40 [V44,T40] ( 5, 0.08) ref -> r0 single-def "guarded devirt arg temp"
+; V42 tmp38 [V42,T40] ( 2, 0.06) byref -> r8 single-def "impAppendStmt" +; V43 tmp39 [V43,T41] ( 3, 0.03) int -> r0 "guarded devirt return temp" +; V44 tmp40 [V44,T39] ( 5, 0.08) ref -> r0 single-def "guarded devirt arg temp"
;* V45 tmp41 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType> ;* V46 tmp42 [V46 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V47 tmp43 [V47,T28] ( 3, 1.15) ref -> r0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V47 tmp43 [V47,T27] ( 3, 1.15) ref -> r0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
;* V48 tmp44 [V48 ] ( 0, 0 ) struct (12) zero-ref "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey> ; V49 tmp45 [V49 ] ( 2, 0.64) ref -> [sp+0x0C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V50 tmp46 [V50,T26] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType> -; V51 tmp47 [V51,T11] ( 4, 2.74) ref -> r1 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc> -; V52 tmp48 [V52,T31] ( 3, 0.85) int -> r0 -; V53 tmp49 [V53,T24] ( 3, 1.31) ref -> r8 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V50 tmp46 [V50,T25] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType> +; V51 tmp47 [V51,T11] ( 3, 2.54) ref -> r0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc> +; V52 tmp48 [V52,T30] ( 3, 0.85) int -> r0 +; V53 tmp49 [V53,T23] ( 3, 1.31) ref -> r8 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V54 tmp50 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V55 tmp51 [V55,T35] ( 3, 0.65) ref -> r3 "guarded devirt return temp"
+; V55 tmp51 [V55,T34] ( 3, 0.65) ref -> r3 "guarded devirt return temp"
;* V56 tmp52 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V57 tmp53 [V57,T39] ( 3, 0.43) ref -> r8 "guarded devirt return temp" -; V58 tmp54 [V58,T25] ( 5, 1.30) ref -> r0 single-def "guarded devirt arg temp"
+; V57 tmp53 [V57,T38] ( 3, 0.43) ref -> r8 "guarded devirt return temp" +; V58 tmp54 [V58,T24] ( 5, 1.30) ref -> r0 single-def "guarded devirt arg temp"
;* V59 tmp55 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V60 tmp56 [V60,T38] ( 3, 0.47) ref -> r3 "guarded devirt return temp" -; V61 tmp57 [V61,T23] ( 5, 1.41) ref -> r0 single-def "guarded devirt arg temp"
+; V60 tmp56 [V60,T37] ( 3, 0.47) ref -> r3 "guarded devirt return temp" +; V61 tmp57 [V61,T22] ( 5, 1.41) ref -> r0 single-def "guarded devirt arg temp"
;* V62 tmp58 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V63 tmp59 [V63,T10] ( 8, 2.82) ref -> r6 single-def "field V37._typicalMethodDef (fldOffset=0x0)" P-INDEP -; V64 tmp60 [V64,T09] ( 8, 2.86) ref -> r7 single-def "field V37._instantiatedType (fldOffset=0x4)" P-INDEP -; V65 tmp61 [V65,T22] ( 3, 1.67) int -> r4 single-def "field V37._hashcode (fldOffset=0x8)" P-INDEP
+; V63 tmp59 [V63,T09] ( 8, 2.82) ref -> r6 single-def "field V37._typicalMethodDef (fldOffset=0x0)" P-INDEP +; V64 tmp60 [V64,T08] ( 8, 2.86) ref -> r7 single-def "field V37._instantiatedType (fldOffset=0x4)" P-INDEP +; V65 tmp61 [V65,T21] ( 3, 1.67) int -> r4 single-def "field V37._hashcode (fldOffset=0x8)" P-INDEP
;* V66 tmp62 [V66 ] ( 0, 0 ) ref -> zero-ref single-def "field V48._typicalMethodDef (fldOffset=0x0)" P-INDEP ;* V67 tmp63 [V67 ] ( 0, 0 ) ref -> zero-ref single-def "field V48._instantiatedType (fldOffset=0x4)" P-INDEP ;* V68 tmp64 [V68 ] ( 0, 0 ) int -> zero-ref single-def "field V48._hashcode (fldOffset=0x8)" P-INDEP
-; V69 cse0 [V69,T20] ( 3, 1.73) ref -> r0 "CSE - moderate" -; V70 rat0 [V70,T08] ( 6, 3.39) ref -> r3 class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
+; V69 cse0 [V69,T19] ( 3, 1.73) ref -> r0 "CSE - moderate"
; ; Lcl frame size = 20 @@ -140,7 +139,7 @@ G_M10698_IG08: ; bbWeight=0.58, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000 movw r3, 0xd1ff movt r3, 0xd1ff cmp r0, r3
- bne G_M10698_IG47
+ bne G_M10698_IG74
ldr r9, [r6+0x08] ; gcrRegs +[r9] ;; size=24 bbWeight=0.58 PerfScore 4.03 @@ -157,7 +156,7 @@ G_M10698_IG11: ; bbWeight=0.45, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefReg movw r3, 0xd1ff movt r3, 0xd1ff cmp r0, r3
- bne G_M10698_IG51
+ bne G_M10698_IG56
;; size=18 bbWeight=0.45 PerfScore 2.23 G_M10698_IG12: ; bbWeight=0.29, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz ldr r0, [r8+0x38] @@ -166,10 +165,10 @@ G_M10698_IG12: ; bbWeight=0.29, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefReg movw r2, 0xd1ff movt r2, 0xd1ff cmp r3, r2
- bne G_M10698_IG48
+ bne G_M10698_IG75
ldr r10, [r0+0x04] ; gcrRegs +[r10]
- b SHORT G_M10698_IG49
+ b SHORT G_M10698_IG60
;; size=26 bbWeight=0.29 PerfScore 2.35 G_M10698_IG13: ; bbWeight=0.47, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0 r6-r10] +[r5] @@ -210,7 +209,7 @@ G_M10698_IG17: ; bbWeight=0.58, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000 movw r3, 0xd1ff movt r3, 0xd1ff cmp r0, r3
- bne G_M10698_IG53
+ bne G_M10698_IG61
;; size=28 bbWeight=0.58 PerfScore 5.19 G_M10698_IG18: ; bbWeight=0.41, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000 {}, byref, isz ldr r0, [r4+0x08] @@ -220,7 +219,7 @@ G_M10698_IG18: ; bbWeight=0.41, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000 movw r2, 0xd1ff movt r2, 0xd1ff cmp r3, r2
- bne G_M10698_IG81
+ bne G_M10698_IG77
ldr r5, [r0+0x04] ; gcrRegs +[r5] ;; size=22 bbWeight=0.41 PerfScore 3.27 @@ -233,7 +232,7 @@ G_M10698_IG19: ; bbWeight=0.58, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 movw r2, 0xd1ff movt r2, 0xd1ff cmp r3, r2
- bne G_M10698_IG41
+ bne G_M10698_IG43
;; size=22 bbWeight=0.58 PerfScore 4.03 G_M10698_IG20: ; bbWeight=0.58, gcrefRegs=00E1 {r0 r5 r6 r7}, byrefRegs=0000 {}, byref, isz cmp r0, 0 @@ -284,11 +283,11 @@ G_M10698_IG26: ; bbWeight=0.58, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 movw r3, 0xd1ff movt r3, 0xd1ff cmp r0, r3
- bne G_M10698_IG73
+ bne G_M10698_IG67
ldr r0, [r6+0x10] ; gcrRegs +[r0] cmp r0, 0
- beq G_M10698_IG72
+ beq G_M10698_IG66
;; size=28 bbWeight=0.58 PerfScore 5.19 G_M10698_IG27: ; bbWeight=0.58, gcrefRegs=00E1 {r0 r5 r6 r7}, byrefRegs=0000 {}, byref, isz movw r3, 0xd1ff @@ -368,7 +367,7 @@ G_M10698_IG34: ; bbWeight=0.42, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 ;; size=14 bbWeight=0.42 PerfScore 2.12 G_M10698_IG35: ; bbWeight=0.21, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r4]
- b SHORT G_M10698_IG54
+ b SHORT G_M10698_IG44
;; size=2 bbWeight=0.21 PerfScore 0.21 G_M10698_IG36: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r5-r6] @@ -386,13 +385,13 @@ G_M10698_IG37: ; bbWeight=0.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 movw r2, 0xd1ff movt r2, 0xd1ff cmp r3, r2
- bne G_M10698_IG82
+ bne G_M10698_IG78
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // Internal.TypeSystem.Ecma.EcmaType:GetHashCode():int:this ; gcrRegs -[r0]
- b SHORT G_M10698_IG71
+ b SHORT G_M10698_IG65
;; size=36 bbWeight=0.01 PerfScore 0.17 G_M10698_IG38: ; bbWeight=0.14, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz ; byrRegs -[r8] @@ -407,39 +406,26 @@ G_M10698_IG39: ; bbWeight=0.42, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ldr r3, [r3+0x34] ldr r3, [r3+0x0C] blx r3 // <unknown method>
+ ldrsb r1, [r0]
mov r1, r0 ; gcrRegs +[r1]
- ldrsb r0, [r1]
+ movw r0, 0xd1ff
; gcrRegs -[r0]
- mov r3, r1 - ; gcrRegs +[r3] - cmp r3, 0 - beq SHORT G_M10698_IG43 - ;; size=22 bbWeight=0.42 PerfScore 4.24 -G_M10698_IG40: ; bbWeight=0.21, gcrefRegs=003A {r1 r3 r4 r5}, byrefRegs=0000 {}, byref, isz - b SHORT G_M10698_IG66 - ;; size=2 bbWeight=0.21 PerfScore 0.21 -G_M10698_IG41: ; bbWeight=0.14, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r1 r3-r4] +[r6-r7]
+ movt r0, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs -[r1] +[r0] + cmp r0, 0 + bne SHORT G_M10698_IG40
movs r0, 0
- b SHORT G_M10698_IG20 - ;; size=4 bbWeight=0.14 PerfScore 0.29 -G_M10698_IG42: ; bbWeight=0.11, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref - ; gcrRegs -[r6-r7] +[r4] - movs r3, 0 - ;; size=2 bbWeight=0.11 PerfScore 0.11 -G_M10698_IG43: ; bbWeight=0.42, gcrefRegs=0038 {r3 r4 r5}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r3] - cmp r3, 0 - bne SHORT G_M10698_IG44 - movs r0, 0 - b SHORT G_M10698_IG45 - ;; size=8 bbWeight=0.42 PerfScore 1.69 -G_M10698_IG44: ; bbWeight=0.42, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref - ; gcrRegs -[r3]
+ ; gcrRegs -[r0] + b SHORT G_M10698_IG41 + ;; size=42 bbWeight=0.42 PerfScore 6.78
...

libraries_tests.run.linux.arm.Release.mch

-6 (-0.39%) : 52734.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:LineBreaksAfter(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):int:this (Tier1)

@@ -25,12 +25,12 @@ ; V13 tmp7 [V13,T44] ( 2, 0.21) ref -> r3 single-def "CASTCLASS eval op1" ; V14 tmp8 [V14,T41] ( 3, 0.26) ref -> r3 class-hnd "spilling QMark2" <<unknown class>> ;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode>
-; V16 tmp10 [V16,T61] ( 2, 0.01) ref -> r1 single-def "CASTCLASS eval op1" -; V17 tmp11 [V17,T59] ( 3, 0.01) ref -> r1 class-hnd "spilling QMark2" <<unknown class>>
+; V16 tmp10 [V16,T61] ( 2, 0.01) ref -> r3 single-def "CASTCLASS eval op1" +; V17 tmp11 [V17,T59] ( 3, 0.01) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V18 tmp12 [V18,T52] ( 2, 0.06) ref -> lr single-def "CASTCLASS eval op1" ; V19 tmp13 [V19,T51] ( 3, 0.07) ref -> lr class-hnd "spilling QMark2" <<unknown class>>
-; V20 tmp14 [V20,T58] ( 2, 0.02) ref -> lr single-def "CASTCLASS eval op1" -; V21 tmp15 [V21,T54] ( 3, 0.02) ref -> lr class-hnd "spilling QMark2" <<unknown class>>
+; V20 tmp14 [V20,T58] ( 2, 0.02) ref -> r0 single-def "CASTCLASS eval op1" +; V21 tmp15 [V21,T54] ( 3, 0.02) ref -> r0 class-hnd "spilling QMark2" <<unknown class>>
; V22 tmp16 [V22,T47] ( 3, 0.11) ref -> r0 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V23 tmp17 [V23 ] ( 0, 0 ) ref -> zero-ref single-def ; V24 tmp18 [V24,T53] ( 3, 0.04) ref -> r0 @@ -130,7 +130,7 @@ ; V118 tmp112 [V118,T34] ( 18, 1.07) ref -> r6 single-def "V02.[000..004)" ; V119 cse0 [V119,T00] ( 18, 10.37) ref -> r7 "CSE - aggressive" ; V120 cse1 [V120,T05] ( 9, 3.91) ref -> r5 "CSE - moderate"
-; V121 rat0 [V121,T43] ( 3, 0.23) ref -> r1 "Spilling to split statement for tree"
+; V121 rat0 [V121,T43] ( 3, 0.22) ref -> r1 "Spilling to split statement for tree"
; V122 rat1 [V122,T36] ( 6, 0.42) ref -> r3 class-hnd "replacement local" <<unknown class>> ; V123 rat2 [V123,T60] ( 3, 0.01) ref -> r1 "Spilling to split statement for tree" ; V124 rat3 [V124,T56] ( 6, 0.02) ref -> r3 class-hnd "replacement local" <<unknown class>> @@ -167,7 +167,7 @@ G_M34265_IG04: ; bbWeight=1.00, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0 ; gcrRegs -[r0] movw r1, 0xd1ff cmp r0, r1
- beq G_M34265_IG77
+ beq G_M34265_IG71
;; size=12 bbWeight=1.00 PerfScore 4.00 G_M34265_IG05: ; bbWeight=1.00, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz mov r0, r5 @@ -255,11 +255,11 @@ G_M34265_IG13: ; bbWeight=0.25, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 DD G_M34265_IG53 DD G_M34265_IG56 DD G_M34265_IG16
- DD G_M34265_IG67
+ DD G_M34265_IG65
DD G_M34265_IG16 DD G_M34265_IG16
- DD G_M34265_IG83 - DD G_M34265_IG66
+ DD G_M34265_IG81 + DD G_M34265_IG64
ldr pc, [r0+4*r4] ;; size=24 bbWeight=0.25 PerfScore 2.02 G_M34265_IG14: ; bbWeight=0.84, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -387,16 +387,16 @@ G_M34265_IG25: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 movt r0, HIGH ADDRESS J_M34265_DS32 J_M34265_DS32 LABEL DWORD
- DD G_M34265_IG82
+ DD G_M34265_IG76
DD G_M34265_IG90
- DD G_M34265_IG79
+ DD G_M34265_IG73
ldr pc, [r0+4*r8] ;; size=28 bbWeight=0.50 PerfScore 3.97 G_M34265_IG26: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r5-r7] movw r1, 0xd1ff cmp r0, r1
- beq G_M34265_IG77
+ beq G_M34265_IG71
b SHORT G_M34265_IG14 ;; size=12 bbWeight=0.48 PerfScore 1.91 G_M34265_IG27: ; bbWeight=0.40, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz @@ -406,7 +406,7 @@ G_M34265_IG27: ; bbWeight=0.40, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 beq G_M34265_IG99 movw r3, 0xd1ff cmp r0, r3
- beq G_M34265_IG77
+ beq G_M34265_IG71
;; size=20 bbWeight=0.40 PerfScore 2.39 G_M34265_IG28: ; bbWeight=0.40, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz b SHORT G_M34265_IG16 @@ -462,7 +462,7 @@ G_M34265_IG36: ; bbWeight=0.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[r5-r7] movw r1, 0xd1ff cmp r0, r1
- beq G_M34265_IG77
+ beq G_M34265_IG71
movw r1, 0xd1ff cmp r0, r1 beq G_M34265_IG92 @@ -489,7 +489,7 @@ G_M34265_IG39: ; bbWeight=0.03, gcrefRegs=00C1 {r0 r6 r7}, byrefRegs=0000 movw r3, 0xd1ff movt r3, 0xd1ff cmp r0, r3
- beq G_M34265_IG73
+ beq G_M34265_IG69
;; size=16 bbWeight=0.03 PerfScore 0.14 G_M34265_IG40: ; bbWeight=0.04, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref, isz cmp r7, 0 @@ -500,7 +500,7 @@ G_M34265_IG41: ; bbWeight=0.02, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {} movw r3, 0xd1ff movt r3, 0xd1ff cmp r0, r3
- beq G_M34265_IG73
+ beq G_M34265_IG69
;; size=16 bbWeight=0.02 PerfScore 0.10 G_M34265_IG42: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r6-r7] @@ -516,7 +516,7 @@ G_M34265_IG43: ; bbWeight=0.03, gcrefRegs=0088 {r3 r7}, byrefRegs=0000 {} movw r1, 0xd1ff movt r1, 0xd1ff cmp r0, r1
- beq G_M34265_IG76
+ beq G_M34265_IG83
;; size=16 bbWeight=0.03 PerfScore 0.14 G_M34265_IG44: ; bbWeight=0.05, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r3] @@ -532,7 +532,7 @@ G_M34265_IG45: ; bbWeight=0.03, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b movw r1, 0xd1ff movt r1, 0xd1ff cmp r0, r1
- beq G_M34265_IG76
+ beq G_M34265_IG83
;; size=16 bbWeight=0.03 PerfScore 0.14 G_M34265_IG46: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movs r0, 0 @@ -569,7 +569,7 @@ G_M34265_IG52: ; bbWeight=0.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 blx r3 // Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:IsSingleLineInitializerContext(Microsoft.CodeAnalysis.SyntaxNode):ubyte ; gcrRegs -[r0] cmp r0, 0
- beq G_M34265_IG77
+ beq G_M34265_IG71
b SHORT G_M34265_IG08 ;; size=22 bbWeight=0.00 PerfScore 0.01 G_M34265_IG53: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz @@ -634,7 +634,7 @@ G_M34265_IG57: ; bbWeight=0.05, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 ; gcrRegs -[r0] movw r3, 0xd1ff cmp r0, r3
- beq SHORT G_M34265_IG61
+ beq SHORT G_M34265_IG70
;; size=16 bbWeight=0.05 PerfScore 0.36 G_M34265_IG58: ; bbWeight=0.05, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz ldr r1, [sp+0x34] @@ -642,7 +642,7 @@ G_M34265_IG58: ; bbWeight=0.05, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 mov r3, r1 ; gcrRegs +[r3] cmp r3, 0
- beq SHORT G_M34265_IG63
+ beq SHORT G_M34265_IG61
;; size=8 bbWeight=0.05 PerfScore 0.21 G_M34265_IG59: ; bbWeight=0.03, gcrefRegs=00EA {r1 r3 r5 r6 r7}, byrefRegs=0000 {}, byref, isz ldr r0, [r3] @@ -650,41 +650,18 @@ G_M34265_IG59: ; bbWeight=0.03, gcrefRegs=00EA {r1 r3 r5 r6 r7}, byrefReg ; gcrRegs -[r3] movt r3, 0xd1ff cmp r0, r3
- beq SHORT G_M34265_IG62
+ bne SHORT G_M34265_IG68
;; size=14 bbWeight=0.03 PerfScore 0.13
-G_M34265_IG60: ; bbWeight=0.01, gcrefRegs=00E2 {r1 r5 r6 r7}, byrefRegs=0000 {}, byref, isz - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[r1] +[r0] - mov r3, r0 - ; gcrRegs +[r3] - b SHORT G_M34265_IG63 - ;; size=22 bbWeight=0.01 PerfScore 0.07 -G_M34265_IG61: ; bbWeight=0.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r0 r3] - mov r0, r6 - ; gcrRegs +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:IsInitializerInSingleLineContext(Microsoft.CodeAnalysis.SyntaxNode):ubyte - ; gcrRegs -[r0] - cmp r0, 0 - bne G_M34265_IG14 - b SHORT G_M34265_IG58 - ;; size=22 bbWeight=0.01 PerfScore 0.04 -G_M34265_IG62: ; bbWeight=0.02, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref
+G_M34265_IG60: ; bbWeight=0.02, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1]
movs r3, 0 ;; size=2 bbWeight=0.02 PerfScore 0.02
-G_M34265_IG63: ; bbWeight=0.05, gcrefRegs=00E8 {r3 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M34265_IG61: ; bbWeight=0.05, gcrefRegs=00E8 {r3 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r3] cmp r3, 0
- bne SHORT G_M34265_IG69
+ bne SHORT G_M34265_IG67
;; size=4 bbWeight=0.05 PerfScore 0.10
-G_M34265_IG64: ; bbWeight=0.05, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M34265_IG62: ; bbWeight=0.05, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3 r6] mov r0, r5 ; gcrRegs +[r0] @@ -699,9 +676,9 @@ G_M34265_IG64: ; bbWeight=0.05, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} ; gcrRegs -[r0-r1] movw r1, 0xd1ff cmp r0, r1
- beq SHORT G_M34265_IG77
+ beq SHORT G_M34265_IG71
;; size=30 bbWeight=0.05 PerfScore 0.55
-G_M34265_IG65: ; bbWeight=0.05, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M34265_IG63: ; bbWeight=0.05, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
mov r0, r5 ; gcrRegs +[r0] mov r1, r7 @@ -715,10 +692,10 @@ G_M34265_IG65: ; bbWeight=0.05, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} ; gcrRegs -[r0-r1 r5 r7] movw r3, 0xd1ff cmp r0, r3
- beq SHORT G_M34265_IG77
+ beq SHORT G_M34265_IG71
b SHORT G_M34265_IG14 ;; size=32 bbWeight=0.05 PerfScore 0.55
-G_M34265_IG66: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M34265_IG64: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr r0, [sp+0x44] ; gcrRegs +[r0] str r0, [sp] @@ -742,47 +719,38 @@ G_M34265_IG66: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[r0-r1] b SHORT G_M34265_IG37 ;; size=40 bbWeight=0.05 PerfScore 0.85
-G_M34265_IG67: ; bbWeight=0.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M34265_IG65: ; bbWeight=0.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r5-r7] ldr lr, [sp+0x34] ; gcrRegs +[lr] cmp lr, 0 beq G_M34265_IG16 ;; size=12 bbWeight=0.01 PerfScore 0.04
-G_M34265_IG68: ; bbWeight=0.01, gcrefRegs=40E0 {r5 r6 r7 lr}, byrefRegs=0000 {}, byref, isz - b SHORT G_M34265_IG70
+G_M34265_IG66: ; bbWeight=0.01, gcrefRegs=40E0 {r5 r6 r7 lr}, byrefRegs=0000 {}, byref, isz + b SHORT G_M34265_IG77
;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M34265_IG69: ; bbWeight=0.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M34265_IG67: ; bbWeight=0.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[lr] ldr r0, [sp+0x34] ; gcrRegs +[r0] cmp r6, r0
- bne SHORT G_M34265_IG77 - b SHORT G_M34265_IG64
+ bne SHORT G_M34265_IG71
...

+0 (0.00%) : 124962.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsNonStringEnumerable(System.Object):System.Collections.IEnumerable (Tier1)

@@ -8,14 +8,14 @@ ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6372 ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 6, 5.16) ref -> r0 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 6, 5.14) ref -> r0 class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02,T02] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> ; V03 rat0 [V03,T01] ( 6, 7.83) ref -> r3 class-hnd "replacement local" <System.Collections.IEnumerable> ; ; Lcl frame size = 0
-G_M8290_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M8290_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r11,lr} mov r11, sp ;; size=6 bbWeight=1 PerfScore 2.00 @@ -33,7 +33,7 @@ G_M8290_IG03: ; bbWeight=0.98, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, by mov r3, r0 ; gcrRegs +[r3] cmp r3, 0
- beq SHORT G_M8290_IG07
+ beq SHORT G_M8290_IG06
;; size=6 bbWeight=0.98 PerfScore 2.94 G_M8290_IG04: ; bbWeight=0.49, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz ldr r1, [r3] @@ -41,9 +41,22 @@ G_M8290_IG04: ; bbWeight=0.49, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, ; gcrRegs -[r3] movt r3, 0xd1ff cmp r1, r3
- beq SHORT G_M8290_IG06
+ bne SHORT G_M8290_IG08
;; size=14 bbWeight=0.49 PerfScore 2.45
-G_M8290_IG05: ; bbWeight=0.18, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M8290_IG05: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0] + movs r3, 0 + ;; size=2 bbWeight=0.33 PerfScore 0.33 +G_M8290_IG06: ; bbWeight=0.98, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref + ; gcrRegs +[r3] + mov r0, r3 + ; gcrRegs +[r0] + ;; size=2 bbWeight=0.98 PerfScore 0.98 +G_M8290_IG07: ; bbWeight=0.98, epilog, nogc, extend + pop {r11,pc} + ;; size=4 bbWeight=0.98 PerfScore 0.98 +G_M8290_IG08: ; bbWeight=0.16, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r3]
mov r1, r0 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -55,21 +68,9 @@ G_M8290_IG05: ; bbWeight=0.18, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, by ; gcrRegs -[r1] +[r0] mov r3, r0 ; gcrRegs +[r3]
- b SHORT G_M8290_IG07 - ;; size=24 bbWeight=0.18 PerfScore 1.41 -G_M8290_IG06: ; bbWeight=0.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0 r3] - movs r3, 0 - ;; size=2 bbWeight=0.31 PerfScore 0.31 -G_M8290_IG07: ; bbWeight=0.98, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref - ; gcrRegs +[r3] - mov r0, r3 - ; gcrRegs +[r0] - ;; size=2 bbWeight=0.98 PerfScore 0.98 -G_M8290_IG08: ; bbWeight=0.98, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=0.98 PerfScore 0.98 -G_M8290_IG09: ; bbWeight=0.02, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ b SHORT G_M8290_IG06 + ;; size=24 bbWeight=0.16 PerfScore 1.29 +G_M8290_IG09: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0 r3] movs r0, 0 ;; size=2 bbWeight=0.02 PerfScore 0.02 @@ -77,7 +78,7 @@ G_M8290_IG10: ; bbWeight=0.02, epilog, nogc, extend pop {r11,pc} ;; size=4 bbWeight=0.02 PerfScore 0.02
-; Total bytes of code 82, prolog size 6, PerfScore 18.11, instruction count 30, allocated bytes for code 82 (MethodHash=a242df9d) for method Xunit.Sdk.CollectionTrackerExtensions:AsNonStringEnumerable(System.Object):System.Collections.IEnumerable (Tier1)
+; Total bytes of code 82, prolog size 6, PerfScore 18.01, instruction count 30, allocated bytes for code 82 (MethodHash=a242df9d) for method Xunit.Sdk.CollectionTrackerExtensions:AsNonStringEnumerable(System.Object):System.Collections.IEnumerable (Tier1)
; ============================================================ Unwind Info:

+0 (0.00%) : 659706.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:IsRequired(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte (Tier1)

@@ -8,14 +8,14 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 205 ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 6, 4.21) ref -> r4 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V00 arg0 [V00,T02] ( 6, 4.16) ref -> r4 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
; V01 loc0 [V01,T03] ( 6, 2.35) ref -> r0 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol> ; V02 loc1 [V02,T05] ( 6, 1.81) ref -> r0 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol> ; V03 loc2 [V03,T04] ( 3, 2 ) ubyte -> r0 ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T06] ( 3, 0.32) int -> r0 "guarded devirt return temp" ;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol>
-; V07 tmp3 [V07,T07] ( 4, 0.14) int -> r0 "guarded devirt return temp"
+; V07 tmp3 [V07,T07] ( 3, 0.14) int -> r0 "guarded devirt return temp"
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol> ; V09 rat0 [V09,T00] ( 6, 8 ) ref -> r0 class-hnd "replacement local" <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol> ; V10 rat1 [V10,T01] ( 6, 6.71) ref -> r0 class-hnd "replacement local" <Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol> @@ -42,7 +42,7 @@ G_M20550_IG03: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {} cmp r1, r0 beq SHORT G_M20550_IG05 ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M20550_IG04: ; bbWeight=0.21, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M20550_IG04: ; bbWeight=0.17, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r1, r4 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -52,32 +52,92 @@ G_M20550_IG04: ; bbWeight=0.21, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[r1] +[r0] b SHORT G_M20550_IG06
- ;; size=22 bbWeight=0.21 PerfScore 1.47 -G_M20550_IG05: ; bbWeight=0.29, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ;; size=22 bbWeight=0.17 PerfScore 1.16 +G_M20550_IG05: ; bbWeight=0.34, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] movs r0, 0
- ;; size=2 bbWeight=0.29 PerfScore 0.29
+ ;; size=2 bbWeight=0.34 PerfScore 0.34
G_M20550_IG06: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0] cmp r0, 0
- bne SHORT G_M20550_IG14
+ bne SHORT G_M20550_IG10
;; size=4 bbWeight=1 PerfScore 2.00 G_M20550_IG07: ; bbWeight=0.84, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0] mov r0, r4 ; gcrRegs +[r0] cmp r0, 0
- beq SHORT G_M20550_IG11
+ beq SHORT G_M20550_IG17
;; size=6 bbWeight=0.84 PerfScore 2.52 G_M20550_IG08: ; bbWeight=0.42, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r0] - movw r0, 0xd1ff
+ ldr r0, [r0]
; gcrRegs -[r0]
- movt r0, 0xd1ff - cmp r1, r0 - beq SHORT G_M20550_IG10
+ movw r3, 0xd1ff + movt r3, 0xd1ff + cmp r0, r3 + beq SHORT G_M20550_IG16
;; size=14 bbWeight=0.42 PerfScore 2.10
-G_M20550_IG09: ; bbWeight=0.16, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M20550_IG09: ; bbWeight=0.24, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + b SHORT G_M20550_IG19 + ;; size=2 bbWeight=0.24 PerfScore 0.24 +G_M20550_IG10: ; bbWeight=0.16, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r4] +[r0] + ldr r3, [r0] + movw r2, 0xd1ff + movt r2, 0xd1ff + cmp r3, r2 + bne SHORT G_M20550_IG13 + ;; size=14 bbWeight=0.16 PerfScore 0.80 +G_M20550_IG11: ; bbWeight=0.13, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol:get_IsRequired():ubyte:this + ; gcrRegs -[r0] + ;; size=12 bbWeight=0.13 PerfScore 0.52 +G_M20550_IG12: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + cmp r0, 0 + bne SHORT G_M20550_IG21 + b SHORT G_M20550_IG14 + ;; size=6 bbWeight=0.16 PerfScore 0.48 +G_M20550_IG13: ; bbWeight=0.03, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r0] + ldr r3, [r0] + ldr r3, [r3+0x70] + ldr r3, [r3+0x08] + blx r3 // <unknown method> + ; gcrRegs -[r0] + b SHORT G_M20550_IG12 + ;; size=10 bbWeight=0.03 PerfScore 0.15 +G_M20550_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 0 + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M20550_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r3,r4,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M20550_IG16: ; bbWeight=0.27, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + movs r0, 0 + ;; size=2 bbWeight=0.27 PerfScore 0.27 +G_M20550_IG17: ; bbWeight=0.84, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r0] + cmp r0, 0 + beq SHORT G_M20550_IG14 + ;; size=4 bbWeight=0.84 PerfScore 1.68 +G_M20550_IG18: ; bbWeight=0.07, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz + ldr r3, [r0] + movw r2, 0xd1ff + movt r2, 0xd1ff + cmp r3, r2 + bne SHORT G_M20550_IG22 + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:get_IsRequired():ubyte:this + ; gcrRegs -[r0] + b SHORT G_M20550_IG20 + ;; size=28 bbWeight=0.07 PerfScore 0.68 +G_M20550_IG19: ; bbWeight=0.15, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r4]
mov r1, r4 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -86,85 +146,28 @@ G_M20550_IG09: ; bbWeight=0.16, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b movt r3, 0xd1ff blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[r1 r4] +[r0]
- b SHORT G_M20550_IG11 - ;; size=22 bbWeight=0.16 PerfScore 1.15 -G_M20550_IG10: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0] - movs r0, 0 - ;; size=2 bbWeight=0.26 PerfScore 0.26 -G_M20550_IG11: ; bbWeight=0.84, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0] - cmp r0, 0 - bne SHORT G_M20550_IG17 - ;; size=4 bbWeight=0.84 PerfScore 1.68 -G_M20550_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0] - movs r0, 0 - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M20550_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r3,r4,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M20550_IG14: ; bbWeight=0.16, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r0] - ldr r3, [r0] - movw r2, 0xd1ff - movt r2, 0xd1ff - cmp r3, r2 - bne SHORT G_M20550_IG18 - ;; size=14 bbWeight=0.16 PerfScore 0.80 -G_M20550_IG15: ; bbWeight=0.13, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol:get_IsRequired():ubyte:this - ; gcrRegs -[r0] - ;; size=12 bbWeight=0.13 PerfScore 0.52 -G_M20550_IG16: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cmp r0, 0 - bne SHORT G_M20550_IG20 - b SHORT G_M20550_IG12 - ;; size=6 bbWeight=0.16 PerfScore 0.48 -G_M20550_IG17: ; bbWeight=0.07, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0] - ldr r3, [r0] - movw r2, 0xd1ff - movt r2, 0xd1ff - cmp r3, r2 - bne SHORT G_M20550_IG19 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:get_IsRequired():ubyte:this
+ b SHORT G_M20550_IG17 + ;; size=22 bbWeight=0.15 PerfScore 1.06 +G_M20550_IG20: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] cmp r0, 0
- bne SHORT G_M20550_IG20 - b SHORT G_M20550_IG12 - ;; size=32 bbWeight=0.07 PerfScore 0.82 -G_M20550_IG18: ; bbWeight=0.03, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0] - ldr r3, [r0] - ldr r3, [r3+0x70] - ldr r3, [r3+0x08] - blx r3 // <unknown method> - ; gcrRegs -[r0] - b SHORT G_M20550_IG16 - ;; size=10 bbWeight=0.03 PerfScore 0.15 -G_M20550_IG19: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ beq SHORT G_M20550_IG14 + ;; size=4 bbWeight=0.07 PerfScore 0.14 +G_M20550_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + movs r0, 1 + b SHORT G_M20550_IG15 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M20550_IG22: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0] ldr r3, [r0] ldr r3, [r3+0x64] ldr r3, [r3+0x1C] blx r3 // <unknown method> ; gcrRegs -[r0]
- cmp r0, 0 - beq SHORT G_M20550_IG12 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M20550_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movs r0, 1 - b SHORT G_M20550_IG13 - ;; size=4 bbWeight=0 PerfScore 0.00
+ b SHORT G_M20550_IG20 + ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 202, prolog size 8, PerfScore 24.74, instruction count 78, allocated bytes for code 202 (MethodHash=e43aafb9) for method Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:IsRequired(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte (Tier1)
+; Total bytes of code 202, prolog size 8, PerfScore 24.63, instruction count 78, allocated bytes for code 202 (MethodHash=e43aafb9) for method Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:IsRequired(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte (Tier1)
; ============================================================ Unwind Info:

+6 (+1.38%) : 75223.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ; V00 this [V00,T04] ( 5, 4.31) ref -> r5 this class-hnd single-def <System.Threading.ThreadPoolWorkQueue>
-; V01 arg1 [V01,T02] ( 10, 5.39) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T02] ( 10, 5.33) ref -> r4 class-hnd single-def <System.Object>
; V02 arg2 [V02,T07] ( 3, 3 ) ubyte -> r6 single-def ;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ; V04 loc1 [V04,T11] ( 3, 0.61) ref -> r6 class-hnd single-def <<unknown class>> @@ -24,7 +24,7 @@ ; V12 tmp7 [V12,T10] ( 2, 3.11) int -> r5 "impAppendStmt" ; V13 rat0 [V13,T00] ( 6, 8 ) ref -> r3 class-hnd "replacement local" <<unknown class>> ; V14 rat1 [V14,T09] ( 2, 4 ) int -> r7 "Spilling to split statement for tree"
-; V15 rat2 [V15,T03] ( 5, 7.39) ref -> r3 class-hnd "replacement local" <System.Threading.Tasks.Task>
+; V15 rat2 [V15,T03] ( 5, 7.33) ref -> r3 class-hnd "replacement local" <System.Threading.Tasks.Task>
; ; Lcl frame size = 0 @@ -41,82 +41,54 @@ G_M3523_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, by mov r3, r4 ; gcrRegs +[r3] cmp r3, 0
- beq SHORT G_M3523_IG06
+ beq SHORT G_M3523_IG05
;; size=6 bbWeight=1 PerfScore 3.00 G_M3523_IG03: ; bbWeight=0.50, gcrefRegs=0038 {r3 r4 r5}, byrefRegs=0000 {}, byref, isz ldr r1, [r3] movw r0, 0xd1ff movt r0, 0xd1ff cmp r1, r0
- beq SHORT G_M3523_IG05 - ;; size=14 bbWeight=0.50 PerfScore 2.50 -G_M3523_IG04: ; bbWeight=0.19, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ bne G_M3523_IG20 + ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M3523_IG04: ; bbWeight=0.34, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
; gcrRegs -[r3]
- mov r1, r4 - ; gcrRegs +[r1] - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_ISINSTANCEOFINTERFACE - ; gcrRegs -[r1] +[r0] - mov r3, r0 - ; gcrRegs +[r3] - b SHORT G_M3523_IG06 - ;; size=24 bbWeight=0.19 PerfScore 1.56 -G_M3523_IG05: ; bbWeight=0.30, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0 r3]
movs r3, 0
- ;; size=2 bbWeight=0.30 PerfScore 0.30 -G_M3523_IG06: ; bbWeight=1, gcrefRegs=0038 {r3 r4 r5}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.34 PerfScore 0.34 +G_M3523_IG05: ; bbWeight=1, gcrefRegs=0038 {r3 r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r3] cmp r3, 0
- bne SHORT G_M3523_IG07
+ bne SHORT G_M3523_IG06
movs r7, 0
- b SHORT G_M3523_IG08
+ b SHORT G_M3523_IG07
;; size=8 bbWeight=1 PerfScore 4.00
-G_M3523_IG07: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+G_M3523_IG06: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
; gcrRegs -[r3] movs r7, 1 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M3523_IG08: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M3523_IG07: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
mov r3, r4 ; gcrRegs +[r3] cmp r3, 0
- beq SHORT G_M3523_IG11
+ beq SHORT G_M3523_IG09
;; size=6 bbWeight=1 PerfScore 3.00
-G_M3523_IG09: ; bbWeight=0.50, gcrefRegs=0038 {r3 r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M3523_IG08: ; bbWeight=0.50, gcrefRegs=0038 {r3 r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r1, [r3] movw r0, 0xd1ff movt r0, 0xd1ff cmp r1, r0
- beq SHORT G_M3523_IG11
+ bne SHORT G_M3523_IG19
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M3523_IG10: ; bbWeight=0.19, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref - ; gcrRegs -[r3] - mov r1, r4 - ; gcrRegs +[r1] - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[r1] +[r0] - mov r3, r0 - ; gcrRegs +[r3] - ;; size=22 bbWeight=0.19 PerfScore 1.36 -G_M3523_IG11: ; bbWeight=1, gcrefRegs=0038 {r3 r4 r5}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r0]
+G_M3523_IG09: ; bbWeight=1, gcrefRegs=0038 {r3 r4 r5}, byrefRegs=0000 {}, byref, isz
cmp r3, 0
- bne SHORT G_M3523_IG12
+ bne SHORT G_M3523_IG10
movs r0, 0
- b SHORT G_M3523_IG13
+ b SHORT G_M3523_IG11
;; size=8 bbWeight=1 PerfScore 4.00
-G_M3523_IG12: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+G_M3523_IG10: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
; gcrRegs -[r3] movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M3523_IG13: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M3523_IG11: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
eors r0, r7 movw r3, 0xd1ff movt r3, 0xd1ff @@ -124,12 +96,12 @@ G_M3523_IG13: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, by blx r3 // <unknown method> ldrb r0, [r5+0x1C] cmp r0, 0
- bne SHORT G_M3523_IG24 - ;; size=20 bbWeight=1 PerfScore 8.00 -G_M3523_IG14: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ bne G_M3523_IG24 + ;; size=22 bbWeight=1 PerfScore 8.00 +G_M3523_IG12: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
uxtb r0, r6 cmp r0, 0
- bne SHORT G_M3523_IG19
+ bne SHORT G_M3523_IG17
movw r0, 0xd1ff movt r0, 0xd1ff mov r1, 836 @@ -141,9 +113,9 @@ G_M3523_IG14: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, by ; gcrRegs +[r0] ; byrRegs -[r0] cmp r0, 0
- beq SHORT G_M3523_IG19
+ beq SHORT G_M3523_IG17
;; size=34 bbWeight=1 PerfScore 12.00
-G_M3523_IG15: ; bbWeight=0.69, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref
+G_M3523_IG13: ; bbWeight=0.69, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref
ldr r0, [r0+0x0C] mov r1, r4 ; gcrRegs +[r1] @@ -154,7 +126,7 @@ G_M3523_IG15: ; bbWeight=0.69, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 blx r3 // <unknown method> ; gcrRegs -[r0-r1 r4] ;; size=18 bbWeight=0.69 PerfScore 4.86
-G_M3523_IG16: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M3523_IG14: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
add r0, r5, 92 ; byrRegs +[r0] cmp r0, 0 @@ -167,9 +139,9 @@ G_M3523_IG16: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref ; gcrRegs -[r5] ; byrRegs -[r0] cmp r0, 0
- bne SHORT G_M3523_IG18
+ bne SHORT G_M3523_IG16
;; size=26 bbWeight=1 PerfScore 10.00
-G_M3523_IG17: ; bbWeight=0.78, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M3523_IG15: ; bbWeight=0.78, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff movt r0, 0xd1ff ldr r4, [r0] @@ -205,11 +177,11 @@ G_M3523_IG17: ; bbWeight=0.78, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre cmp r5, 6 bne SHORT G_M3523_IG21 ;; size=84 bbWeight=0.78 PerfScore 22.54
-G_M3523_IG18: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M3523_IG16: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r4] pop {r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=1.00 PerfScore 1.00
-G_M3523_IG19: ; bbWeight=0.31, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3523_IG17: ; bbWeight=0.31, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4-r5] ldr r6, [r5+0x04] ; gcrRegs +[r6] @@ -225,9 +197,9 @@ G_M3523_IG19: ; bbWeight=0.31, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5} blx r3 // System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this ; gcrRegs -[r0-r1] cmp r0, 0
- bne SHORT G_M3523_IG16
+ bne SHORT G_M3523_IG14
;; size=28 bbWeight=0.31 PerfScore 3.36
-G_M3523_IG20: ; bbWeight=0.00, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M3523_IG18: ; bbWeight=0.00, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
mov r0, r6 ; gcrRegs +[r0] mov r1, r4 @@ -237,10 +209,38 @@ G_M3523_IG20: ; bbWeight=0.00, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 ldr r3, [r3] blx r3 // <unknown method> ; gcrRegs -[r0-r1 r4 r6]
- b SHORT G_M3523_IG16
+ b SHORT G_M3523_IG14
;; size=18 bbWeight=0.00 PerfScore 0.02
+G_M3523_IG19: ; bbWeight=0.17, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r4] + mov r1, r4 + ; gcrRegs +[r1] + movw r0, 0xd1ff + movt r0, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs -[r1] +[r0] + mov r3, r0 + ; gcrRegs +[r3] + b SHORT G_M3523_IG09 + ;; size=24 bbWeight=0.17 PerfScore 1.32 +G_M3523_IG20: ; bbWeight=0.17, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r0 r3] + mov r1, r4 + ; gcrRegs +[r1] + movw r0, 0xd1ff + movt r0, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_ISINSTANCEOFINTERFACE + ; gcrRegs -[r1] +[r0] + mov r3, r0 + ; gcrRegs +[r3] + b SHORT G_M3523_IG05 + ;; size=24 bbWeight=0.17 PerfScore 1.32
G_M3523_IG21: ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r5] +[r4]
+ ; gcrRegs -[r0 r3 r5]
mov r0, r4 ; gcrRegs +[r0] movw r3, 0xd1ff @@ -268,7 +268,7 @@ G_M3523_IG24: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, by ldrb r0, [r0+0x5D] ; gcrRegs -[r0] cmp r0, 0
- beq G_M3523_IG14
+ beq G_M3523_IG12
movw r0, 0xd1ff movt r0, 0xd1ff ldr r0, [r0] @@ -281,10 +281,10 @@ G_M3523_IG24: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, by ldr r2, [r0] blx r3 // <unknown method> ; gcrRegs -[r0-r1]
- b SHORT G_M3523_IG14
...

+4 (+1.74%) : 179696.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 15, 7.76) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]>
-; V01 arg1 [V01,T03] ( 7, 3.20) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundNode>
+; V01 arg1 [V01,T03] ( 7, 3.19) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundNode>
; V02 loc0 [V02,T04] ( 5, 3.16) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundExpression> @@ -23,7 +23,7 @@ ; V11 tmp8 [V11,T08] ( 3, 1.02) ref -> r0 "guarded devirt return temp" ;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker> ;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundNode>
-; V14 rat0 [V14,T02] ( 5, 7.40) ref -> r6 class-hnd "replacement local" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V14 rat0 [V14,T02] ( 5, 7.37) ref -> r6 class-hnd "replacement local" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
; ; Lcl frame size = 4 @@ -39,17 +39,51 @@ G_M16580_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b mov r6, r5 ; gcrRegs +[r6] cmp r6, 0
- beq SHORT G_M16580_IG05
+ beq SHORT G_M16580_IG04
;; size=6 bbWeight=1 PerfScore 3.00 G_M16580_IG03: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz ldr r1, [r6] movw r0, 0xd1ff movt r0, 0xd1ff cmp r1, r0
- beq SHORT G_M16580_IG05
+ bne SHORT G_M16580_IG07
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M16580_IG04: ; bbWeight=0.20, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref - ; gcrRegs -[r6]
+G_M16580_IG04: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz + cmp r6, 0 + beq SHORT G_M16580_IG16 + add r5, r4, 52 + ; gcrRegs -[r5] + ; byrRegs +[r5] + ldr r0, [r5] + adds r0, r0, 1 + str r0, [r5] + ldr r0, [r5] + cmp r0, 1 + bgt SHORT G_M16580_IG11 + ;; size=20 bbWeight=1 PerfScore 9.00 +G_M16580_IG05: ; bbWeight=0.57, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz + ldr r0, [r4] + movw r3, 0xd1ff + movt r3, 0xd1ff + cmp r0, r3 + beq SHORT G_M16580_IG08 + mov r0, r4 + ; gcrRegs +[r0] + ldr r3, [r4] + ldr r3, [r3+0x2C] + ldr r3, [r3+0x1C] + blx r3 // <unknown method> + ; gcrRegs -[r0] + ; gcr arg pop 0 + cmp r0, 0 + bne SHORT G_M16580_IG08 + ;; size=28 bbWeight=0.57 PerfScore 6.82 +G_M16580_IG06: ; bbWeight=0.43, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz + b SHORT G_M16580_IG11 + ;; size=2 bbWeight=0.43 PerfScore 0.43 +G_M16580_IG07: ; bbWeight=0.18, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r6] +[r5] + ; byrRegs -[r5]
mov r1, r5 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -61,47 +95,40 @@ G_M16580_IG04: ; bbWeight=0.20, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ; gcr arg pop 0 mov r6, r0 ; gcrRegs +[r6]
- ;; size=22 bbWeight=0.20 PerfScore 1.40 -G_M16580_IG05: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r0] - cmp r6, 0 - beq SHORT G_M16580_IG15 - add r5, r4, 52 - ; gcrRegs -[r5]
+ b SHORT G_M16580_IG04 + ;; size=24 bbWeight=0.18 PerfScore 1.48 +G_M16580_IG08: ; bbWeight=0.57, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref + ; gcrRegs -[r0 r5]
; byrRegs +[r5]
- ldr r0, [r5] - adds r0, r0, 1 - str r0, [r5] - ldr r0, [r5] - cmp r0, 1 - bgt SHORT G_M16580_IG07 - ;; size=20 bbWeight=1 PerfScore 9.00 -G_M16580_IG06: ; bbWeight=0.57, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz - ldr r0, [r4] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r0, r3 - beq SHORT G_M16580_IG12
mov r0, r4 ; gcrRegs +[r0]
- ldr r3, [r4] - ldr r3, [r3+0x2C] - ldr r3, [r3+0x1C]
+ mov r1, r6 + ; gcrRegs +[r1] + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3]
blx r3 // <unknown method>
- ; gcrRegs -[r0]
+ ; gcrRegs -[r1 r4 r6]
; gcr arg pop 0
- cmp r0, 0 - bne SHORT G_M16580_IG12 - ;; size=28 bbWeight=0.57 PerfScore 6.82 -G_M16580_IG07: ; bbWeight=0.43, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
+ ;; size=16 bbWeight=0.57 PerfScore 3.41 +G_M16580_IG09: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0020 {r5}, byref + ldr r1, [r5] + subs r1, r1, 1 + str r1, [r5] + ;; size=6 bbWeight=1 PerfScore 3.00 +G_M16580_IG10: ; bbWeight=1, epilog, nogc, extend + pop {r3,r4,r5,r6,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M16580_IG11: ; bbWeight=0.43, gcVars=00000000 {}, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, gcvars, byref, isz + ; gcrRegs -[r0] +[r4 r6]
ldr r1, [r5] ldr r0, [r4] movw r3, 0xd1ff movt r3, 0xd1ff cmp r0, r3
- bne SHORT G_M16580_IG09
+ bne SHORT G_M16580_IG13
;; size=16 bbWeight=0.43 PerfScore 2.59
-G_M16580_IG08: ; bbWeight=0.17, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
+G_M16580_IG12: ; bbWeight=0.17, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
mov r0, r4 ; gcrRegs +[r0] movw r3, 0xd1ff @@ -110,9 +137,9 @@ G_M16580_IG08: ; bbWeight=0.17, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r blx r3 // Microsoft.CodeAnalysis.CSharp.NullableWalker:EnsureSufficientExecutionStack(int):this ; gcrRegs -[r0] ; gcr arg pop 0
- b SHORT G_M16580_IG11
+ b SHORT G_M16580_IG15
;; size=16 bbWeight=0.17 PerfScore 1.04
-G_M16580_IG09: ; bbWeight=0.43, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref
+G_M16580_IG13: ; bbWeight=0.43, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref
mov r0, r4 ; gcrRegs +[r0] ldr r3, [r4] @@ -132,10 +159,10 @@ G_M16580_IG09: ; bbWeight=0.43, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r ; gcrRegs -[r1 r4 r6] ; gcr arg pop 0 ;; size=22 bbWeight=0.43 PerfScore 4.75
-G_M16580_IG10: ; bbWeight=0.43, gcrefRegs=0001 {r0}, byrefRegs=0020 {r5}, byref, isz - b SHORT G_M16580_IG13
+G_M16580_IG14: ; bbWeight=0.43, gcrefRegs=0001 {r0}, byrefRegs=0020 {r5}, byref, isz + b SHORT G_M16580_IG09
;; size=2 bbWeight=0.43 PerfScore 0.43
-G_M16580_IG11: ; bbWeight=0.16, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
+G_M16580_IG15: ; bbWeight=0.16, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
; gcrRegs -[r0] +[r4 r6] mov r0, r4 ; gcrRegs +[r0] @@ -147,34 +174,13 @@ G_M16580_IG11: ; bbWeight=0.16, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r blx r3 // Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitExpressionWithoutStackGuard(Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this ; gcrRegs -[r1 r4 r6] ; gcr arg pop 0
- b SHORT G_M16580_IG10
+ b SHORT G_M16580_IG14
;; size=18 bbWeight=0.16 PerfScore 1.09
-G_M16580_IG12: ; bbWeight=0.57, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref - ; gcrRegs -[r0] +[r4 r6] - mov r0, r4 - ; gcrRegs +[r0] - mov r1, r6 - ; gcrRegs +[r1] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; gcrRegs -[r1 r4 r6] - ; gcr arg pop 0 - ;; size=16 bbWeight=0.57 PerfScore 3.41 -G_M16580_IG13: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0020 {r5}, byref - ldr r1, [r5] - subs r1, r1, 1 - str r1, [r5] - ;; size=6 bbWeight=1 PerfScore 3.00 -G_M16580_IG14: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r5,r6,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M16580_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M16580_IG16: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] +[r4-r5] ; byrRegs -[r5] cmp r5, 0
- beq SHORT G_M16580_IG17
+ beq SHORT G_M16580_IG18
mov r0, r5 ; gcrRegs +[r0] mov r1, r4 @@ -183,21 +189,21 @@ G_M16580_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, ldr r3, [r3+0x2C] ldr r3, [r3+0x14] ;; size=14 bbWeight=0 PerfScore 0.00
-G_M16580_IG16: ; bbWeight=0, epilog, nogc, extend
+G_M16580_IG17: ; bbWeight=0, epilog, nogc, extend
add sp, 4 pop {r4,r5,r6,r11,lr} bx r3 // <unknown method> ; gcr arg pop 0 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M16580_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M16580_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0-r1 r4-r5] movs r0, 0 ;; size=2 bbWeight=0 PerfScore 0.00
-G_M16580_IG18: ; bbWeight=0, epilog, nogc, extend
+G_M16580_IG19: ; bbWeight=0, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc} ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 230, prolog size 12, PerfScore 44.02, instruction count 93, allocated bytes for code 230 (MethodHash=f609bf3b) for method Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
+; Total bytes of code 234, prolog size 12, PerfScore 44.54, instruction count 95, allocated bytes for code 234 (MethodHash=f609bf3b) for method Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
; ============================================================ Unwind Info: @@ -209,7 +215,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 115 (0x00073) Actual length = 230 (0x0000e6)
+ Function Length : 117 (0x00075) Actual length = 234 (0x0000ea)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+1.89%) : 726577.dasm - System.Linq.Expressions.Compiler.CompilerScope:GetVariables(System.Object):System.Collections.Generic.IReadOnlyList`1System.Linq.Expressions.ParameterExpression

@@ -9,8 +9,8 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 7, 3.23) ref -> r4 class-hnd single-def <System.Object> -; V01 loc0 [V01,T03] ( 3, 3 ) ref -> r5 class-hnd single-def <<unknown class>>
+; V00 arg0 [V00,T02] ( 7, 3.13) ref -> r4 class-hnd single-def <System.Object> +; V01 loc0 [V01,T03] ( 5, 3 ) ref -> r5 class-hnd single-def <<unknown class>>
; V02 loc1 [V02,T04] ( 4, 0 ) ref -> r0 class-hnd single-def <System.Linq.Expressions.BlockExpression> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T06] ( 3, 0 ) ref -> r5 class-hnd exact single-def "dup spill" <<unknown class>> @@ -18,7 +18,7 @@ ; V06 tmp3 [V06,T05] ( 4, 0 ) ref -> r3 class-hnd single-def "spilling QMark2" <System.Linq.Expressions.CatchBlock> ; V07 tmp4 [V07,T08] ( 2, 0 ) ref -> r1 class-hnd single-def "Strict ordering of exceptions for Array store" <System.Linq.Expressions.ParameterExpression> ; V08 tmp5 [V08,T01] ( 3, 6 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.ParameterList>
-; V09 rat0 [V09,T00] ( 5, 7.45) ref -> r5 class-hnd "replacement local" <<unknown class>>
+; V09 rat0 [V09,T00] ( 6, 7.27) ref -> r5 class-hnd "replacement local" <<unknown class>>
; ; Lcl frame size = 0 @@ -32,39 +32,20 @@ G_M13340_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre mov r5, r4 ; gcrRegs +[r5] cmp r5, 0
- beq SHORT G_M13340_IG05
+ bne SHORT G_M13340_IG06
;; size=6 bbWeight=1 PerfScore 3.00
-G_M13340_IG03: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz - ldr r1, [r5] - movw r0, 0xd1ff - movt r0, 0xd1ff - cmp r1, r0 - beq SHORT G_M13340_IG05 - ;; size=14 bbWeight=0.50 PerfScore 2.50 -G_M13340_IG04: ; bbWeight=0.23, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - ; gcrRegs -[r5] - mov r1, r4 - ; gcrRegs +[r1] - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[r1] +[r0] - ; gcr arg pop 0 - mov r5, r0 - ; gcrRegs +[r5] - ;; size=22 bbWeight=0.23 PerfScore 1.58 -G_M13340_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r0]
+G_M13340_IG03: ; bbWeight=0.87, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
cmp r5, 0
- beq SHORT G_M13340_IG07
+ beq SHORT G_M13340_IG08 + ;; size=4 bbWeight=0.87 PerfScore 1.73 +G_M13340_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref + ; gcrRegs -[r4]
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_NEWSFAST
- ; gcrRegs -[r4] +[r0]
+ ; gcrRegs +[r0]
; gcr arg pop 0 mov r2, r0 ; gcrRegs +[r2] @@ -80,12 +61,36 @@ G_M13340_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ; byrRegs -[r0] mov r0, r2 ; gcrRegs +[r0]
- ;; size=40 bbWeight=1 PerfScore 14.00 -G_M13340_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=36 bbWeight=1 PerfScore 12.00 +G_M13340_IG05: ; bbWeight=1, epilog, nogc, extend
pop {r4,r5,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-G_M13340_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0 r2] +[r4]
+G_M13340_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r0 r2] +[r4-r5] + ldr r1, [r5] + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r1, r0 + beq SHORT G_M13340_IG03 + ;; size=14 bbWeight=0.50 PerfScore 2.50 +G_M13340_IG07: ; bbWeight=0.14, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r5] + mov r1, r4 + ; gcrRegs +[r1] + movw r0, 0xd1ff + movt r0, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs -[r1] +[r0] + ; gcr arg pop 0 + mov r5, r0 + ; gcrRegs +[r5] + cmp r5, 0 + bne SHORT G_M13340_IG04 + ;; size=26 bbWeight=0.14 PerfScore 1.22 +G_M13340_IG08: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r0 r5]
mov r1, r4 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -96,17 +101,17 @@ G_M13340_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr ; gcrRegs -[r1] +[r0] ; gcr arg pop 0 cmp r0, 0
- beq SHORT G_M13340_IG09
+ beq SHORT G_M13340_IG10
ldr r3, [r0] ldr r3, [r3+0x30] ldr r3, [r3+0x1C] ;; size=30 bbWeight=0 PerfScore 0.00
-G_M13340_IG08: ; bbWeight=0, epilog, nogc, extend
+G_M13340_IG09: ; bbWeight=0, epilog, nogc, extend
pop {r4,r5,r11,lr} bx r3 // <unknown method> ; gcr arg pop 0 ;; size=6 bbWeight=0 PerfScore 0.00
-G_M13340_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M13340_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] movw r0, 0xd1ff movt r0, 0xd1ff @@ -121,13 +126,13 @@ G_M13340_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr mov r3, r4 ; gcrRegs +[r3] cmp r3, 0
- beq SHORT G_M13340_IG10
+ beq SHORT G_M13340_IG11
ldr r0, [r3] ; gcrRegs -[r0] movw r1, 0xd1ff movt r1, 0xd1ff cmp r0, r1
- beq SHORT G_M13340_IG10
+ beq SHORT G_M13340_IG11
mov r0, r1 mov r1, r4 ; gcrRegs +[r1] @@ -139,7 +144,7 @@ G_M13340_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr ; gcr arg pop 0 bkpt ;; size=58 bbWeight=0 PerfScore 0.00
-G_M13340_IG10: ; bbWeight=0, gcrefRegs=0028 {r3 r5}, byrefRegs=0000 {}, byref
+G_M13340_IG11: ; bbWeight=0, gcrefRegs=0028 {r3 r5}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] +[r3 r5] ldr r1, [r3+0x04] ; gcrRegs +[r1] @@ -153,11 +158,11 @@ G_M13340_IG10: ; bbWeight=0, gcrefRegs=0028 {r3 r5}, byrefRegs=0000 {}, b mov r0, r5 ; gcrRegs +[r0] ;; size=18 bbWeight=0 PerfScore 0.00
-G_M13340_IG11: ; bbWeight=0, epilog, nogc, extend
+G_M13340_IG12: ; bbWeight=0, epilog, nogc, extend
pop {r4,r5,r11,pc} ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 212, prolog size 10, PerfScore 25.07, instruction count 74, allocated bytes for code 212 (MethodHash=78bdcbe3) for method System.Linq.Expressions.Compiler.CompilerScope:GetVariables(System.Object):System.Collections.Generic.IReadOnlyList`1[System.Linq.Expressions.ParameterExpression] (Tier1)
+; Total bytes of code 216, prolog size 10, PerfScore 24.45, instruction count 76, allocated bytes for code 216 (MethodHash=78bdcbe3) for method System.Linq.Expressions.Compiler.CompilerScope:GetVariables(System.Object):System.Collections.Generic.IReadOnlyList`1[System.Linq.Expressions.ParameterExpression] (Tier1)
; ============================================================ Unwind Info: @@ -169,7 +174,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 106 (0x0006a) Actual length = 212 (0x0000d4)
+ Function Length : 108 (0x0006c) Actual length = 216 (0x0000d8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.linux.arm.checked.mch 0 0 0 0 -0 +0
benchmarks.run_tiered.linux.arm.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.linux.arm.checked.mch 2 2 0 0 -66 +0
libraries.crossgen2.linux.arm.checked.mch 0 0 0 0 -0 +0
libraries.pmi.linux.arm.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.linux.arm.Release.mch 22 1 16 5 -6 +66
librariestestsnotieredcompilation.run.linux.arm.Release.mch 0 0 0 0 -0 +0
realworld.run.linux.arm.checked.mch 0 0 0 0 -0 +0
24 3 16 5 -72 +66

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm.checked.mch 46,064 5,344 40,720 1,208 (2.54%) 1,428 (3.01%)
benchmarks.run_pgo.linux.arm.checked.mch 155,004 54,949 100,055 3,309 (2.09%) 3,615 (2.28%)
benchmarks.run_tiered.linux.arm.checked.mch 81,649 45,099 36,550 1,122 (1.35%) 1,299 (1.57%)
coreclr_tests.run.linux.arm.checked.mch 471,343 258,996 212,347 7,543 (1.57%) 7,977 (1.66%)
libraries.crossgen2.linux.arm.checked.mch 193,690 14 193,676 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm.checked.mch 269,106 6 269,100 7,827 (2.81%) 9,519 (3.42%)
libraries_tests.run.linux.arm.Release.mch 706,403 441,682 264,721 18,888 (2.60%) 20,243 (2.79%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch 272,024 21,565 250,459 33,279 (10.84%) 35,104 (11.43%)
realworld.run.linux.arm.checked.mch 36,071 157 35,914 1,412 (3.73%) 1,739 (4.60%)
2,231,354 827,812 1,403,542 74,588 (3.23%) 80,924 (3.50%)

jit-analyze output

coreclr_tests.run.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 321168304 (overridden on cmd)
Total bytes of diff: 321168238 (overridden on cmd)
Total bytes of delta: -66 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -38 : 312368.dasm (-3.19 % of base)
         -28 : 309676.dasm (-2.61 % of base)

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

Top method improvements (bytes):
         -38 (-3.19 % of base) : 312368.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
         -28 (-2.61 % of base) : 309676.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

Top method improvements (percentages):
         -38 (-3.19 % of base) : 312368.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
         -28 (-2.61 % of base) : 309676.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

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


libraries_tests.run.linux.arm.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 241530954 (overridden on cmd)
Total bytes of diff: 241531014 (overridden on cmd)
Total bytes of delta: 60 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          14 : 533166.dasm (1.11 % of base)
           6 : 75223.dasm (1.38 % of base)
           6 : 75708.dasm (0.39 % of base)
           4 : 195416.dasm (0.33 % of base)
           4 : 331642.dasm (0.73 % of base)
           4 : 179696.dasm (1.74 % of base)
           4 : 200407.dasm (0.71 % of base)
           4 : 59769.dasm (0.16 % of base)
           4 : 659581.dasm (0.85 % of base)
           4 : 726577.dasm (1.89 % of base)
           2 : 74730.dasm (0.45 % of base)
           2 : 12511.dasm (0.45 % of base)
           2 : 195339.dasm (0.18 % of base)
           2 : 601956.dasm (0.30 % of base)
           2 : 626940.dasm (0.12 % of base)
           2 : 661316.dasm (0.73 % of base)

Top file improvements (bytes):
          -6 : 52734.dasm (-0.39 % of base)

17 total files with Code Size differences (1 improved, 16 regressed), 5 unchanged.

Top method regressions (bytes):
          14 (1.11 % of base) : 533166.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[System.__Canon](System.__Canon,System.String):this (Tier1)
           6 (0.39 % of base) : 75708.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
           6 (1.38 % of base) : 75223.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
           4 (1.74 % of base) : 179696.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
           4 (0.85 % of base) : 659581.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuard:Visit(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
           4 (0.16 % of base) : 59769.dasm - Microsoft.CodeAnalysis.Options.SolutionOptionSet:GetInternalOptionValue(Microsoft.CodeAnalysis.Options.OptionKey):System.Object:this (Tier1)
           4 (0.33 % of base) : 195416.dasm - Microsoft.VisualBasic.CompilerServices.StringType:FromObject(System.Object):System.String (Tier1)
           4 (0.71 % of base) : 200407.dasm - ReflectionAbstractionExtensions:DisposeTestClass(Xunit.Abstractions.ITest,System.Object,Xunit.Sdk.IMessageBus,Xunit.Sdk.ExecutionTimer,System.Threading.CancellationTokenSource) (Tier1)
           4 (1.89 % of base) : 726577.dasm - System.Linq.Expressions.Compiler.CompilerScope:GetVariables(System.Object):System.Collections.Generic.IReadOnlyList`1[System.Linq.Expressions.ParameterExpression] (Tier1)
           4 (0.73 % of base) : 331642.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
           2 (0.73 % of base) : 661316.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetTupleCardinality(Microsoft.CodeAnalysis.CSharp.BoundExpression):int (Tier1)
           2 (0.18 % of base) : 195339.dasm - Microsoft.VisualBasic.CompilerServices.ShortType:FromObject(System.Object):short (Tier1)
           2 (0.45 % of base) : 74730.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
           2 (0.45 % of base) : 12511.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
           2 (0.30 % of base) : 601956.dasm - System.Text.Json.ReadStack:<JsonPath>g__AppendStackFrame|22_0(System.Text.StringBuilder,byref) (Tier1)
           2 (0.12 % of base) : 626940.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)

Top method improvements (bytes):
          -6 (-0.39 % of base) : 52734.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:LineBreaksAfter(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):int:this (Tier1)

Top method regressions (percentages):
           4 (1.89 % of base) : 726577.dasm - System.Linq.Expressions.Compiler.CompilerScope:GetVariables(System.Object):System.Collections.Generic.IReadOnlyList`1[System.Linq.Expressions.ParameterExpression] (Tier1)
           4 (1.74 % of base) : 179696.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
           6 (1.38 % of base) : 75223.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
          14 (1.11 % of base) : 533166.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[System.__Canon](System.__Canon,System.String):this (Tier1)
           4 (0.85 % of base) : 659581.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuard:Visit(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
           2 (0.73 % of base) : 661316.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetTupleCardinality(Microsoft.CodeAnalysis.CSharp.BoundExpression):int (Tier1)
           4 (0.73 % of base) : 331642.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
           4 (0.71 % of base) : 200407.dasm - ReflectionAbstractionExtensions:DisposeTestClass(Xunit.Abstractions.ITest,System.Object,Xunit.Sdk.IMessageBus,Xunit.Sdk.ExecutionTimer,System.Threading.CancellationTokenSource) (Tier1)
           2 (0.45 % of base) : 74730.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
           2 (0.45 % of base) : 12511.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
           6 (0.39 % of base) : 75708.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
           4 (0.33 % of base) : 195416.dasm - Microsoft.VisualBasic.CompilerServices.StringType:FromObject(System.Object):System.String (Tier1)
           2 (0.30 % of base) : 601956.dasm - System.Text.Json.ReadStack:<JsonPath>g__AppendStackFrame|22_0(System.Text.StringBuilder,byref) (Tier1)
           2 (0.18 % of base) : 195339.dasm - Microsoft.VisualBasic.CompilerServices.ShortType:FromObject(System.Object):short (Tier1)
           4 (0.16 % of base) : 59769.dasm - Microsoft.CodeAnalysis.Options.SolutionOptionSet:GetInternalOptionValue(Microsoft.CodeAnalysis.Options.OptionKey):System.Object:this (Tier1)
           2 (0.12 % of base) : 626940.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)

Top method improvements (percentages):
          -6 (-0.39 % of base) : 52734.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:LineBreaksAfter(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):int:this (Tier1)

17 total methods with Code Size differences (1 improved, 16 regressed).



windows x86

Diffs are based on 2,289,781 contexts (841,817 MinOpts, 1,447,964 FullOpts).

MISSED contexts: base: 5,093 (0.22%), diff: 11,589 (0.50%)

Overall (+144 bytes)

Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.x86.checked.mch 308,593,818 -53
libraries_tests.run.windows.x86.Release.mch 184,833,802 +197

FullOpts (+144 bytes)

Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.x86.checked.mch 106,922,049 -53
libraries_tests.run.windows.x86.Release.mch 86,502,295 +197

Example diffs

coreclr_tests.run.windows.x86.checked.mch

-27 (-2.59%) : 373234.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

@@ -14,72 +14,71 @@ ;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Internal.TypeSystem.MethodDesc> ; V03 loc1 [V03,T04] ( 8, 5.68) ref -> [ebp-0x1C] class-hnd exact <Internal.TypeSystem.InstantiatedType> ;* V04 tmp0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.InstantiatedType>
-;* V05 tmp1 [V05,T32] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" -; V06 tmp2 [V06,T31] ( 2, 0.82) ref -> ecx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType> -; V07 tmp3 [V07,T20] ( 3, 1.64) int -> eax "fgMakeTemp is creating a new local variable" -; V08 tmp4 [V08,T44] ( 2, 0 ) ref -> esi class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V05 tmp1 [V05,T31] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" +; V06 tmp2 [V06,T30] ( 2, 0.82) ref -> ecx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType> +; V07 tmp3 [V07,T19] ( 3, 1.64) int -> eax "fgMakeTemp is creating a new local variable" +; V08 tmp4 [V08,T43] ( 2, 0 ) ref -> esi class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
; V09 tmp5 [V09,T06] ( 7, 5.06) ref -> edi class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType> ; V10 tmp6 [V10,T05] ( 14, 5.18) ref -> ebx "guarded devirt return temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.MethodForInstantiatedType>
-; V12 tmp8 [V12,T10] ( 8, 2.56) ref -> [ebp-0x20] "guarded devirt return temp"
+; V12 tmp8 [V12,T08] ( 8, 2.56) ref -> [ebp-0x20] "guarded devirt return temp"
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V14 tmp10 [V14,T18] ( 4, 1.77) ref -> edi "guarded devirt return temp"
+; V14 tmp10 [V14,T17] ( 4, 1.77) ref -> edi "guarded devirt return temp"
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V16 tmp12 [V16,T17] ( 8, 1.78) ref -> esi "guarded devirt return temp"
+; V16 tmp12 [V16,T16] ( 8, 1.78) ref -> esi "guarded devirt return temp"
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod> ;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref
-; V19 tmp15 [V19,T28] ( 3, 1.18) int -> ecx -; V20 tmp16 [V20,T22] ( 3, 1.52) ref -> [ebp-0x24] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V19 tmp15 [V19,T27] ( 3, 1.18) int -> ecx +; V20 tmp16 [V20,T21] ( 3, 1.52) ref -> [ebp-0x24] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V22 tmp18 [V22,T33] ( 3, 0.73) ref -> [ebp-0x28] "guarded devirt return temp"
+; V22 tmp18 [V22,T32] ( 3, 0.73) ref -> [ebp-0x28] "guarded devirt return temp"
;* V23 tmp19 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V24 tmp20 [V24,T34] ( 3, 0.71) ref -> ecx "guarded devirt return temp" -; V25 tmp21 [V25,T15] ( 5, 2.04) ref -> ecx single-def "guarded devirt arg temp"
+; V24 tmp20 [V24,T33] ( 3, 0.71) ref -> ecx "guarded devirt return temp" +; V25 tmp21 [V25,T14] ( 5, 2.04) ref -> ecx single-def "guarded devirt arg temp"
;* V26 tmp22 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V27 tmp23 [V27,T36] ( 3, 0.60) ref -> ecx "guarded devirt return temp" -; V28 tmp24 [V28,T16] ( 5, 1.80) ref -> ecx single-def "guarded devirt arg temp"
+; V27 tmp23 [V27,T35] ( 3, 0.60) ref -> ecx "guarded devirt return temp" +; V28 tmp24 [V28,T15] ( 5, 1.80) ref -> ecx single-def "guarded devirt arg temp"
;* V29 tmp25 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V30 tmp26 [V30,T14] ( 5, 2.09) ref -> ecx class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule> -; V31 tmp27 [V31,T35] ( 3, 0.70) ref -> eax "guarded devirt return temp"
+; V30 tmp26 [V30,T13] ( 5, 2.09) ref -> ecx class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule> +; V31 tmp27 [V31,T34] ( 3, 0.70) ref -> eax "guarded devirt return temp"
;* V32 tmp28 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly> ;* V33 tmp29 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaType> ; V34 tmp30 [V34,T02] ( 5, 5.91) ref -> ecx class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType> ; V35 tmp31 [V35,T03] ( 5, 5.91) ref -> ecx class-hnd "spilling QMark2" <<unknown class>> ;* V36 tmp32 [V36 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey> ; V37 tmp33 [V37,T07] ( 4, 3.72) ref -> edi class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V38 tmp34 [V38,T13] ( 2, 2.36) int -> [ebp-0x10] spill-single-def "impAppendStmt" -; V39 tmp35 [V39,T26] ( 4, 1.18) ref -> ecx "guarded devirt return temp"
+; V38 tmp34 [V38,T12] ( 2, 2.36) int -> [ebp-0x10] spill-single-def "impAppendStmt" +; V39 tmp35 [V39,T25] ( 4, 1.18) ref -> ecx "guarded devirt return temp"
;* V40 tmp36 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V41 tmp37 [V41,T41] ( 2, 0.00) byref -> [ebp-0x2C] spill-single-def "impAppendStmt" -; V42 tmp38 [V42,T43] ( 3, 0.00) int -> eax "guarded devirt return temp" -; V43 tmp39 [V43,T40] ( 5, 0.00) ref -> ecx single-def "guarded devirt arg temp"
+; V41 tmp37 [V41,T40] ( 2, 0.00) byref -> [ebp-0x2C] spill-single-def "impAppendStmt" +; V42 tmp38 [V42,T42] ( 3, 0.00) int -> eax "guarded devirt return temp" +; V43 tmp39 [V43,T39] ( 5, 0.00) ref -> ecx single-def "guarded devirt arg temp"
;* V44 tmp40 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType> ;* V45 tmp41 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V46 tmp42 [V46,T27] ( 3, 1.18) ref -> eax class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V46 tmp42 [V46,T26] ( 3, 1.18) ref -> eax class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
;* V47 tmp43 [V47 ] ( 0, 0 ) struct (12) zero-ref "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey> ; V48 tmp44 [V48 ] ( 3, 1.69) ref -> [ebp-0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V49 tmp45 [V49,T21] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType> -; V50 tmp46 [V50,T09] ( 4, 2.59) ref -> eax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc> -; V51 tmp47 [V51,T30] ( 3, 0.82) int -> ecx -; V52 tmp48 [V52,T29] ( 3, 1.05) ref -> [ebp-0x30] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V49 tmp45 [V49,T20] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType> +; V50 tmp46 [V50,T09] ( 3, 2.45) ref -> eax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc> +; V51 tmp47 [V51,T29] ( 3, 0.82) int -> ecx +; V52 tmp48 [V52,T28] ( 3, 1.05) ref -> [ebp-0x30] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V53 tmp49 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V54 tmp50 [V54,T37] ( 3, 0.51) ref -> eax "guarded devirt return temp"
+; V54 tmp50 [V54,T36] ( 3, 0.51) ref -> eax "guarded devirt return temp"
;* V55 tmp51 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V56 tmp52 [V56,T38] ( 3, 0.49) ref -> registers "guarded devirt return temp" -; V57 tmp53 [V57,T23] ( 5, 1.42) ref -> ecx single-def "guarded devirt arg temp"
+; V56 tmp52 [V56,T37] ( 3, 0.49) ref -> registers "guarded devirt return temp" +; V57 tmp53 [V57,T22] ( 5, 1.42) ref -> ecx single-def "guarded devirt arg temp"
;* V58 tmp54 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V59 tmp55 [V59,T39] ( 3, 0.42) ref -> eax "guarded devirt return temp" -; V60 tmp56 [V60,T25] ( 5, 1.25) ref -> ecx single-def "guarded devirt arg temp"
+; V59 tmp55 [V59,T38] ( 3, 0.42) ref -> eax "guarded devirt return temp" +; V60 tmp56 [V60,T24] ( 5, 1.25) ref -> ecx single-def "guarded devirt arg temp"
;* V61 tmp57 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V62 tmp58 [V62,T12] ( 8, 2.45) ref -> ebx single-def "field V36._typicalMethodDef (fldOffset=0x0)" P-INDEP -; V63 tmp59 [V63,T11] ( 8, 2.45) ref -> esi single-def "field V36._instantiatedType (fldOffset=0x4)" P-INDEP -; V64 tmp60 [V64,T24] ( 3, 1.27) int -> [ebp-0x18] spill-single-def "field V36._hashcode (fldOffset=0x8)" P-INDEP
+; V62 tmp58 [V62,T11] ( 8, 2.45) ref -> ebx single-def "field V36._typicalMethodDef (fldOffset=0x0)" P-INDEP +; V63 tmp59 [V63,T10] ( 8, 2.45) ref -> esi single-def "field V36._instantiatedType (fldOffset=0x4)" P-INDEP +; V64 tmp60 [V64,T23] ( 3, 1.27) int -> [ebp-0x18] spill-single-def "field V36._hashcode (fldOffset=0x8)" P-INDEP
;* V65 tmp61 [V65 ] ( 0, 0 ) ref -> zero-ref single-def "field V47._typicalMethodDef (fldOffset=0x0)" P-INDEP ;* V66 tmp62 [V66 ] ( 0, 0 ) ref -> zero-ref single-def "field V47._instantiatedType (fldOffset=0x4)" P-INDEP ;* V67 tmp63 [V67 ] ( 0, 0 ) int -> zero-ref single-def "field V47._hashcode (fldOffset=0x8)" P-INDEP
-; V68 tmp64 [V68,T42] ( 2, 0.00) ref -> edx single-def "argument with side effect" -; V69 cse0 [V69,T19] ( 3, 1.77) ref -> ecx "CSE - conservative" -; V70 rat0 [V70,T08] ( 6, 3.27) ref -> ecx class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
+; V68 tmp64 [V68,T41] ( 2, 0.00) ref -> edx single-def "argument with side effect" +; V69 cse0 [V69,T18] ( 3, 1.77) ref -> ecx "CSE - conservative"
; TEMP_02 ref -> [ebp-0x34] ; TEMP_01 int -> [ebp-0x38] ; @@ -139,7 +138,7 @@ G_M10698_IG07: ; bbWeight=0.59, gcVars=0000000000000000 {}, gcrefRegs=000 mov edi, gword ptr [eax+0x34] ; gcrRegs +[edi] cmp dword ptr [ebx], 0xD1FFAB1E
- jne G_M10698_IG56
+ jne G_M10698_IG40
mov edx, gword ptr [ebx+0x08] ; gcrRegs +[edx] ;; size=21 bbWeight=0.59 PerfScore 5.32 @@ -154,15 +153,15 @@ G_M10698_IG09: ; bbWeight=0.58, gcrefRegs=000000CC {edx ebx esi edi}, byr ;; size=4 bbWeight=0.58 PerfScore 0.73 G_M10698_IG10: ; bbWeight=0.37, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref cmp dword ptr [edi], 0xD1FFAB1E
- jne G_M10698_IG49
+ jne G_M10698_IG50
;; size=12 bbWeight=0.37 PerfScore 1.47 G_M10698_IG11: ; bbWeight=0.34, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref mov ecx, gword ptr [edi+0x38] ; gcrRegs +[ecx] cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M10698_IG57
+ jne G_M10698_IG41
mov ecx, gword ptr [ecx+0x04]
- jmp G_M10698_IG46
+ jmp G_M10698_IG42
;; size=23 bbWeight=0.34 PerfScore 3.41 G_M10698_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[edx] @@ -191,7 +190,7 @@ G_M10698_IG14: ; bbWeight=0.22, gcVars=0000000000000010 {V03}, gcrefRegs= mov gword ptr [ebp-0x20], edx ; GC ptr vars +{V12} ;; size=8 bbWeight=0.22 PerfScore 0.28
-G_M10698_IG15: ; bbWeight=0.59, gcVars=0000000000000410 {V03 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M10698_IG15: ; bbWeight=0.59, gcVars=0000000000000110 {V03 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[edx] call [<unknown method>] xor ecx, ecx @@ -201,14 +200,14 @@ G_M10698_IG15: ; bbWeight=0.59, gcVars=0000000000000410 {V03 V12}, gcrefR call [<unknown method>] ; gcrRegs -[edi] cmp dword ptr [esi], 0xD1FFAB1E
- jne G_M10698_IG51
+ jne G_M10698_IG47
;; size=32 bbWeight=0.59 PerfScore 7.83 G_M10698_IG16: ; bbWeight=0.35, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref mov ecx, gword ptr [esi+0x08] ; gcrRegs +[ecx] mov ecx, gword ptr [ecx+0x38] cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M10698_IG59
+ jne G_M10698_IG55
mov eax, gword ptr [ecx+0x04] ; gcrRegs +[eax] ;; size=21 bbWeight=0.35 PerfScore 3.49 @@ -259,11 +258,11 @@ G_M10698_IG19: ; bbWeight=0.59, gcVars=0000000000000000 {}, gcrefRegs=000 mov eax, dword ptr [esi+0x40] mov dword ptr [ebp-0x10], eax cmp dword ptr [ebx], 0xD1FFAB1E
- jne G_M10698_IG61
+ jne G_M10698_IG57
mov ecx, gword ptr [ebx+0x10] ; gcrRegs +[ecx] test ecx, ecx
- je G_M10698_IG60
+ je G_M10698_IG56
;; size=29 bbWeight=0.59 PerfScore 6.06 G_M10698_IG20: ; bbWeight=0.59, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref call [Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int] @@ -281,7 +280,7 @@ G_M10698_IG20: ; bbWeight=0.59, gcrefRegs=000000CA {ecx ebx esi edi}, byr call [<unknown method>] ; gcrRegs -[ecx] test eax, eax
- je G_M10698_IG53
+ je G_M10698_IG49
;; size=38 bbWeight=0.59 PerfScore 10.19 G_M10698_IG21: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[ebx esi edi] @@ -312,7 +311,7 @@ G_M10698_IG24: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=000 cmp dword ptr [ecx], 0xD1FFAB1E je SHORT G_M10698_IG26 ;; size=17 bbWeight=0.00 PerfScore 0.00
-G_M10698_IG25: ; bbWeight=0, gcVars=0000020000000000 {V41}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M10698_IG25: ; bbWeight=0, gcVars=0000010000000000 {V41}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[eax] mov edx, dword ptr [ecx] mov edx, dword ptr [edx+0x2C] @@ -343,22 +342,22 @@ G_M10698_IG28: ; bbWeight=0.41, gcrefRegs=000000C8 {ebx esi edi}, byrefRe cmp dword ptr [edi], 0xD1FFAB1E je G_M10698_IG38 cmp dword ptr [ebx], 0xD1FFAB1E
- jne G_M10698_IG65
+ jne G_M10698_IG61
mov esi, gword ptr [ebx+0x08] ;; size=27 bbWeight=0.41 PerfScore 4.09 G_M10698_IG29: ; bbWeight=0.41, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref test esi, esi
- je G_M10698_IG52
+ je G_M10698_IG48
;; size=8 bbWeight=0.41 PerfScore 0.51 G_M10698_IG30: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref cmp dword ptr [edi], 0xD1FFAB1E
- jne G_M10698_IG54
+ jne G_M10698_IG52
;; size=12 bbWeight=0.25 PerfScore 1.01 G_M10698_IG31: ; bbWeight=0.24, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref mov ecx, gword ptr [edi+0x38] ; gcrRegs +[ecx] cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M10698_IG66
+ jne G_M10698_IG62
mov eax, gword ptr [ecx+0x04] ; gcrRegs +[eax] ;; size=18 bbWeight=0.24 PerfScore 1.89 @@ -374,7 +373,7 @@ G_M10698_IG33: ; bbWeight=0.21, gcrefRegs=000000CC {edx ebx esi edi}, byr mov ecx, gword ptr [esi+0x38] ; gcrRegs +[ecx] cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M10698_IG67
+ jne G_M10698_IG63
mov eax, gword ptr [ecx+0x04] ; gcrRegs +[eax] ;; size=18 bbWeight=0.21 PerfScore 1.66 @@ -407,9 +406,9 @@ G_M10698_IG37: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs -[eax] +[edx esi edi] mov gword ptr [ebp-0x30], edx ; GC ptr vars +{V52}
- jmp G_M10698_IG55
+ jmp G_M10698_IG53
;; size=8 bbWeight=0.13 PerfScore 0.38
-G_M10698_IG38: ; bbWeight=0.41, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M10698_IG38: ; bbWeight=0.41, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx ebx] ; GC ptr vars -{V52} mov ecx, esi @@ -419,74 +418,83 @@ G_M10698_IG38: ; bbWeight=0.41, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [eax+0x0C]<unknown method> ; gcrRegs -[ecx] +[eax] cmp byte ptr [eax], al
- mov ecx, eax - ; gcrRegs +[ecx] - test ecx, ecx
...

-26 (-2.50%) : 370295.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

@@ -14,72 +14,71 @@ ;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Internal.TypeSystem.MethodDesc> ; V03 loc1 [V03,T02] ( 8, 5.61) ref -> [ebp-0x1C] class-hnd exact <Internal.TypeSystem.InstantiatedType> ;* V04 tmp0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.InstantiatedType>
-;* V05 tmp1 [V05,T32] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" -; V06 tmp2 [V06,T31] ( 2, 0.89) ref -> ecx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType> -; V07 tmp3 [V07,T17] ( 3, 1.77) int -> eax "fgMakeTemp is creating a new local variable" -; V08 tmp4 [V08,T44] ( 2, 0 ) ref -> esi class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V05 tmp1 [V05,T31] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" +; V06 tmp2 [V06,T30] ( 2, 0.89) ref -> ecx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType> +; V07 tmp3 [V07,T16] ( 3, 1.77) int -> eax "fgMakeTemp is creating a new local variable" +; V08 tmp4 [V08,T43] ( 2, 0 ) ref -> esi class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
; V09 tmp5 [V09,T06] ( 7, 4.73) ref -> edi class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType> ; V10 tmp6 [V10,T05] ( 14, 5.11) ref -> ebx "guarded devirt return temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V12 tmp8 [V12,T11] ( 8, 2.43) ref -> [ebp-0x20] "guarded devirt return temp"
+; V12 tmp8 [V12,T10] ( 8, 2.43) ref -> [ebp-0x20] "guarded devirt return temp"
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V14 tmp10 [V14,T19] ( 4, 1.67) ref -> edi "guarded devirt return temp"
+; V14 tmp10 [V14,T18] ( 4, 1.67) ref -> edi "guarded devirt return temp"
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V16 tmp12 [V16,T16] ( 8, 1.94) ref -> esi "guarded devirt return temp"
+; V16 tmp12 [V16,T15] ( 8, 1.94) ref -> esi "guarded devirt return temp"
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod> ;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref
-; V19 tmp15 [V19,T28] ( 3, 1.11) int -> ecx -; V20 tmp16 [V20,T23] ( 3, 1.36) ref -> [ebp-0x24] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V19 tmp15 [V19,T27] ( 3, 1.11) int -> ecx +; V20 tmp16 [V20,T22] ( 3, 1.36) ref -> [ebp-0x24] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V22 tmp18 [V22,T34] ( 3, 0.68) ref -> [ebp-0x28] "guarded devirt return temp"
+; V22 tmp18 [V22,T33] ( 3, 0.68) ref -> [ebp-0x28] "guarded devirt return temp"
;* V23 tmp19 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V24 tmp20 [V24,T35] ( 3, 0.65) ref -> ecx "guarded devirt return temp" -; V25 tmp21 [V25,T15] ( 5, 1.96) ref -> ecx single-def "guarded devirt arg temp"
+; V24 tmp20 [V24,T34] ( 3, 0.65) ref -> ecx "guarded devirt return temp" +; V25 tmp21 [V25,T14] ( 5, 1.96) ref -> ecx single-def "guarded devirt arg temp"
;* V26 tmp22 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V27 tmp23 [V27,T38] ( 3, 0.50) ref -> ecx "guarded devirt return temp" -; V28 tmp24 [V28,T22] ( 5, 1.49) ref -> ecx single-def "guarded devirt arg temp"
+; V27 tmp23 [V27,T37] ( 3, 0.50) ref -> ecx "guarded devirt return temp" +; V28 tmp24 [V28,T21] ( 5, 1.49) ref -> ecx single-def "guarded devirt arg temp"
;* V29 tmp25 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V30 tmp26 [V30,T10] ( 5, 2.61) ref -> ecx class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule> -; V31 tmp27 [V31,T33] ( 3, 0.87) ref -> eax "guarded devirt return temp"
+; V30 tmp26 [V30,T09] ( 5, 2.61) ref -> ecx class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule> +; V31 tmp27 [V31,T32] ( 3, 0.87) ref -> eax "guarded devirt return temp"
;* V32 tmp28 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly> ;* V33 tmp29 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaType> ; V34 tmp30 [V34,T03] ( 5, 5.57) ref -> ecx class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType> ; V35 tmp31 [V35,T04] ( 5, 5.57) ref -> ecx class-hnd "spilling QMark2" <<unknown class>> ;* V36 tmp32 [V36 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-; V37 tmp33 [V37,T08] ( 4, 3.51) ref -> edi class-hnd exact single-def "impAppendStmt" <<unknown class>> -; V38 tmp34 [V38,T14] ( 2, 2.23) int -> [ebp-0x10] spill-single-def "impAppendStmt" -; V39 tmp35 [V39,T26] ( 4, 1.11) ref -> ecx "guarded devirt return temp"
+; V37 tmp33 [V37,T07] ( 4, 3.51) ref -> edi class-hnd exact single-def "impAppendStmt" <<unknown class>> +; V38 tmp34 [V38,T13] ( 2, 2.23) int -> [ebp-0x10] spill-single-def "impAppendStmt" +; V39 tmp35 [V39,T25] ( 4, 1.11) ref -> ecx "guarded devirt return temp"
;* V40 tmp36 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V41 tmp37 [V41,T41] ( 2, 0.00) byref -> [ebp-0x2C] spill-single-def "impAppendStmt" -; V42 tmp38 [V42,T43] ( 3, 0.00) int -> eax "guarded devirt return temp" -; V43 tmp39 [V43,T40] ( 5, 0.00) ref -> ecx single-def "guarded devirt arg temp"
+; V41 tmp37 [V41,T40] ( 2, 0.00) byref -> [ebp-0x2C] spill-single-def "impAppendStmt" +; V42 tmp38 [V42,T42] ( 3, 0.00) int -> eax "guarded devirt return temp" +; V43 tmp39 [V43,T39] ( 5, 0.00) ref -> ecx single-def "guarded devirt arg temp"
;* V44 tmp40 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType> ;* V45 tmp41 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V46 tmp42 [V46,T27] ( 3, 1.11) ref -> eax class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V46 tmp42 [V46,T26] ( 3, 1.11) ref -> eax class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
;* V47 tmp43 [V47 ] ( 0, 0 ) struct (12) zero-ref "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey> ; V48 tmp44 [V48 ] ( 3, 1.59) ref -> [ebp-0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V49 tmp45 [V49,T18] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType> -; V50 tmp46 [V50,T09] ( 4, 2.86) ref -> eax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc> -; V51 tmp47 [V51,T30] ( 3, 0.89) int -> ecx -; V52 tmp48 [V52,T29] ( 3, 1.08) ref -> [ebp-0x30] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V49 tmp45 [V49,T17] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType> +; V50 tmp46 [V50,T08] ( 3, 2.66) ref -> eax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc> +; V51 tmp47 [V51,T29] ( 3, 0.89) int -> ecx +; V52 tmp48 [V52,T28] ( 3, 1.08) ref -> [ebp-0x30] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V53 tmp49 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V54 tmp50 [V54,T36] ( 3, 0.54) ref -> eax "guarded devirt return temp"
+; V54 tmp50 [V54,T35] ( 3, 0.54) ref -> eax "guarded devirt return temp"
;* V55 tmp51 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V56 tmp52 [V56,T37] ( 3, 0.52) ref -> registers "guarded devirt return temp" -; V57 tmp53 [V57,T21] ( 5, 1.56) ref -> ecx single-def "guarded devirt arg temp"
+; V56 tmp52 [V56,T36] ( 3, 0.52) ref -> registers "guarded devirt return temp" +; V57 tmp53 [V57,T20] ( 5, 1.56) ref -> ecx single-def "guarded devirt arg temp"
;* V58 tmp54 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V59 tmp55 [V59,T39] ( 3, 0.39) ref -> eax "guarded devirt return temp" -; V60 tmp56 [V60,T25] ( 5, 1.18) ref -> ecx single-def "guarded devirt arg temp"
+; V59 tmp55 [V59,T38] ( 3, 0.39) ref -> eax "guarded devirt return temp" +; V60 tmp56 [V60,T24] ( 5, 1.18) ref -> ecx single-def "guarded devirt arg temp"
;* V61 tmp57 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V62 tmp58 [V62,T13] ( 8, 2.31) ref -> ebx single-def "field V36._typicalMethodDef (fldOffset=0x0)" P-INDEP -; V63 tmp59 [V63,T12] ( 8, 2.32) ref -> esi single-def "field V36._instantiatedType (fldOffset=0x4)" P-INDEP -; V64 tmp60 [V64,T24] ( 3, 1.20) int -> [ebp-0x18] spill-single-def "field V36._hashcode (fldOffset=0x8)" P-INDEP
+; V62 tmp58 [V62,T12] ( 8, 2.31) ref -> ebx single-def "field V36._typicalMethodDef (fldOffset=0x0)" P-INDEP +; V63 tmp59 [V63,T11] ( 8, 2.32) ref -> esi single-def "field V36._instantiatedType (fldOffset=0x4)" P-INDEP +; V64 tmp60 [V64,T23] ( 3, 1.20) int -> [ebp-0x18] spill-single-def "field V36._hashcode (fldOffset=0x8)" P-INDEP
;* V65 tmp61 [V65 ] ( 0, 0 ) ref -> zero-ref single-def "field V47._typicalMethodDef (fldOffset=0x0)" P-INDEP ;* V66 tmp62 [V66 ] ( 0, 0 ) ref -> zero-ref single-def "field V47._instantiatedType (fldOffset=0x4)" P-INDEP ;* V67 tmp63 [V67 ] ( 0, 0 ) int -> zero-ref single-def "field V47._hashcode (fldOffset=0x8)" P-INDEP
-; V68 tmp64 [V68,T42] ( 2, 0.00) ref -> edx single-def "argument with side effect" -; V69 cse0 [V69,T20] ( 3, 1.67) ref -> ecx "CSE - conservative" -; V70 rat0 [V70,T07] ( 6, 3.54) ref -> ecx class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
+; V68 tmp64 [V68,T41] ( 2, 0.00) ref -> edx single-def "argument with side effect" +; V69 cse0 [V69,T19] ( 3, 1.67) ref -> ecx "CSE - conservative"
; TEMP_02 ref -> [ebp-0x34] ; TEMP_01 int -> [ebp-0x38] ; @@ -139,7 +138,7 @@ G_M10698_IG07: ; bbWeight=0.56, gcVars=0000000000000000 {}, gcrefRegs=000 mov edi, gword ptr [eax+0x34] ; gcrRegs +[edi] cmp dword ptr [ebx], 0xD1FFAB1E
- jne G_M10698_IG57
+ jne G_M10698_IG41
mov edx, gword ptr [ebx+0x08] ; gcrRegs +[edx] ;; size=21 bbWeight=0.56 PerfScore 5.02 @@ -154,18 +153,18 @@ G_M10698_IG09: ; bbWeight=0.54, gcrefRegs=000000CC {edx ebx esi edi}, byr test edx, edx je SHORT G_M10698_IG12 ;; size=7 bbWeight=0.54 PerfScore 1.22
-G_M10698_IG10: ; bbWeight=0.34, gcVars=0000000000000804 {V03 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M10698_IG10: ; bbWeight=0.34, gcVars=0000000000000404 {V03 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[edx] cmp dword ptr [edi], 0xD1FFAB1E
- jne G_M10698_IG44
+ jne G_M10698_IG45
;; size=12 bbWeight=0.34 PerfScore 1.36 G_M10698_IG11: ; bbWeight=0.33, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref mov ecx, gword ptr [edi+0x38] ; gcrRegs +[ecx] cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M10698_IG58
+ jne G_M10698_IG42
mov ecx, gword ptr [ecx+0x04]
- jmp G_M10698_IG42
+ jmp G_M10698_IG43
;; size=23 bbWeight=0.33 PerfScore 3.26 G_M10698_IG12: ; bbWeight=0.27, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[ecx] @@ -200,7 +199,7 @@ G_M10698_IG15: ; bbWeight=0.22, gcVars=0000000000000004 {V03}, gcrefRegs= mov gword ptr [ebp-0x20], edx ; GC ptr vars +{V12} ;; size=8 bbWeight=0.22 PerfScore 0.27
-G_M10698_IG16: ; bbWeight=0.56, gcVars=0000000000000804 {V03 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M10698_IG16: ; bbWeight=0.56, gcVars=0000000000000404 {V03 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[edx] call [<unknown method>] xor ecx, ecx @@ -210,14 +209,14 @@ G_M10698_IG16: ; bbWeight=0.56, gcVars=0000000000000804 {V03 V12}, gcrefR call [<unknown method>] ; gcrRegs -[edi] cmp dword ptr [esi], 0xD1FFAB1E
- jne G_M10698_IG51
+ jne G_M10698_IG49
;; size=32 bbWeight=0.56 PerfScore 7.38 G_M10698_IG17: ; bbWeight=0.43, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref mov ecx, gword ptr [esi+0x08] ; gcrRegs +[ecx] mov ecx, gword ptr [ecx+0x38] cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M10698_IG60
+ jne G_M10698_IG56
mov eax, gword ptr [ecx+0x04] ; gcrRegs +[eax] ;; size=21 bbWeight=0.43 PerfScore 4.35 @@ -268,11 +267,11 @@ G_M10698_IG20: ; bbWeight=0.56, gcVars=0000000000000000 {}, gcrefRegs=000 mov eax, dword ptr [esi+0x40] mov dword ptr [ebp-0x10], eax cmp dword ptr [ebx], 0xD1FFAB1E
- jne G_M10698_IG62
+ jne G_M10698_IG58
mov ecx, gword ptr [ebx+0x10] ; gcrRegs +[ecx] test ecx, ecx
- je G_M10698_IG61
+ je G_M10698_IG57
;; size=29 bbWeight=0.56 PerfScore 5.71 G_M10698_IG21: ; bbWeight=0.56, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref call [Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int] @@ -290,7 +289,7 @@ G_M10698_IG21: ; bbWeight=0.56, gcrefRegs=000000CA {ecx ebx esi edi}, byr call [<unknown method>] ; gcrRegs -[ecx] test eax, eax
- je G_M10698_IG53
+ je G_M10698_IG51
;; size=38 bbWeight=0.56 PerfScore 9.61 G_M10698_IG22: ; bbWeight=0.47, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[ebx esi edi] @@ -321,7 +320,7 @@ G_M10698_IG25: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=000 cmp dword ptr [ecx], 0xD1FFAB1E je SHORT G_M10698_IG27 ;; size=17 bbWeight=0.00 PerfScore 0.00
-G_M10698_IG26: ; bbWeight=0, gcVars=0000020000000000 {V41}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M10698_IG26: ; bbWeight=0, gcVars=0000010000000000 {V41}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[eax] mov edx, dword ptr [ecx] mov edx, dword ptr [edx+0x2C] @@ -352,22 +351,22 @@ G_M10698_IG29: ; bbWeight=0.44, gcrefRegs=000000C8 {ebx esi edi}, byrefRe cmp dword ptr [edi], 0xD1FFAB1E je SHORT G_M10698_IG39 cmp dword ptr [ebx], 0xD1FFAB1E
- jne G_M10698_IG66
+ jne G_M10698_IG62
mov esi, gword ptr [ebx+0x08] ;; size=23 bbWeight=0.44 PerfScore 4.43 G_M10698_IG30: ; bbWeight=0.44, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref test esi, esi
- je G_M10698_IG52
+ je G_M10698_IG48
;; size=8 bbWeight=0.44 PerfScore 0.55 G_M10698_IG31: ; bbWeight=0.27, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref cmp dword ptr [edi], 0xD1FFAB1E
- jne G_M10698_IG55
+ jne G_M10698_IG53
;; size=12 bbWeight=0.27 PerfScore 1.08 G_M10698_IG32: ; bbWeight=0.26, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref mov ecx, gword ptr [edi+0x38] ; gcrRegs +[ecx] cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M10698_IG67
+ jne G_M10698_IG63
mov eax, gword ptr [ecx+0x04] ; gcrRegs +[eax] ;; size=18 bbWeight=0.26 PerfScore 2.07 @@ -379,13 +378,13 @@ G_M10698_IG33: ; bbWeight=0.26, gcrefRegs=000000C9 {eax ebx esi edi}, byr G_M10698_IG34: ; bbWeight=0.27, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref ; gcrRegs -[eax] cmp dword ptr [esi], 0xD1FFAB1E
- jne G_M10698_IG54
+ jne G_M10698_IG52
;; size=12 bbWeight=0.27 PerfScore 1.08 G_M10698_IG35: ; bbWeight=0.20, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref mov ecx, gword ptr [esi+0x38] ; gcrRegs +[ecx] cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M10698_IG56
+ jne G_M10698_IG54
mov eax, gword ptr [ecx+0x04] ; gcrRegs +[eax] ;; size=18 bbWeight=0.20 PerfScore 1.58 @@ -414,7 +413,7 @@ G_M10698_IG38: ; bbWeight=0.44, epilog, nogc, extend pop ebp ret ;; size=8 bbWeight=0.44 PerfScore 1.55
-G_M10698_IG39: ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M10698_IG39: ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax ebx] +[esi edi] ...

+0 (0.00%) : 373261.dasm - Internal.JitInterface.JitObjectComparer:GetHashCode(System.Object):int:this (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Internal.JitInterface.JitObjectComparer>
-; V01 arg1 [V01,T00] ( 9, 6.20) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 9, 6.15) ref -> esi class-hnd single-def <System.Object>
; V02 loc0 [V02,T03] ( 3, 2 ) ref -> ecx class-hnd single-def <<unknown class>> ; V03 tmp0 [V03,T02] ( 4, 2.54) int -> eax "guarded devirt return temp" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType> @@ -30,14 +30,31 @@ G_M9793_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov ecx, esi ; gcrRegs +[ecx] test ecx, ecx
- je SHORT G_M9793_IG06
+ je SHORT G_M9793_IG05
;; size=6 bbWeight=1 PerfScore 1.50 G_M9793_IG03: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz cmp dword ptr [ecx], 0xD1FFAB1E
- je SHORT G_M9793_IG05
+ jne SHORT G_M9793_IG07
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M9793_IG04: ; bbWeight=0.19, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M9793_IG04: ; bbWeight=0.35, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
+ xor ecx, ecx + ; gcrRegs +[ecx] + ;; size=2 bbWeight=0.35 PerfScore 0.09 +G_M9793_IG05: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + test ecx, ecx + jne SHORT G_M9793_IG11 + cmp dword ptr [esi], 0xD1FFAB1E + jne SHORT G_M9793_IG09 + ;; size=12 bbWeight=1 PerfScore 5.25 +G_M9793_IG06: ; bbWeight=0.54, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx] + mov eax, dword ptr [esi+0x50] + test eax, eax + je SHORT G_M9793_IG08 + jmp SHORT G_M9793_IG10 + ;; size=9 bbWeight=0.54 PerfScore 2.83 +G_M9793_IG07: ; bbWeight=0.15, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, esi ; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; <unknown class> @@ -45,27 +62,10 @@ G_M9793_IG04: ; bbWeight=0.19, gcrefRegs=00000040 {esi}, byrefRegs=000000 ; gcrRegs -[edx] +[eax] mov ecx, eax ; gcrRegs +[ecx]
- jmp SHORT G_M9793_IG06 - ;; size=16 bbWeight=0.19 PerfScore 0.73 -G_M9793_IG05: ; bbWeight=0.30, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax ecx] - xor ecx, ecx - ; gcrRegs +[ecx] - ;; size=2 bbWeight=0.30 PerfScore 0.08 -G_M9793_IG06: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz - test ecx, ecx - jne SHORT G_M9793_IG11 - cmp dword ptr [esi], 0xD1FFAB1E - jne SHORT G_M9793_IG09 - ;; size=12 bbWeight=1 PerfScore 5.25 -G_M9793_IG07: ; bbWeight=0.54, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] - mov eax, dword ptr [esi+0x50] - test eax, eax - je SHORT G_M9793_IG08 - jmp SHORT G_M9793_IG10 - ;; size=9 bbWeight=0.54 PerfScore 2.83
+ jmp SHORT G_M9793_IG05 + ;; size=16 bbWeight=0.15 PerfScore 0.56
G_M9793_IG08: ; bbWeight=0.54, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax ecx]
mov ecx, esi ; gcrRegs +[ecx] call [Internal.TypeSystem.Ecma.EcmaType:InitializeHashCode():int:this] @@ -97,6 +97,6 @@ G_M9793_IG12: ; bbWeight=0, epilog, nogc, extend ret ;; size=3 bbWeight=0 PerfScore 0.00
-; Total bytes of code 91, prolog size 4, PerfScore 23.06, instruction count 37, allocated bytes for code 91 (MethodHash=f3bed9be) for method Internal.JitInterface.JitObjectComparer:GetHashCode(System.Object):int:this (Tier1)
+; Total bytes of code 91, prolog size 4, PerfScore 22.91, instruction count 37, allocated bytes for code 91 (MethodHash=f3bed9be) for method Internal.JitInterface.JitObjectComparer:GetHashCode(System.Object):int:this (Tier1)
; ============================================================

libraries_tests.run.windows.x86.Release.mch

-12 (-0.99%) : 385379.dasm - System.Xml.Serialization.XmlSerializationWriter:WritePotentiallyReferencingElement(System.String,System.String,System.Object,System.Type,ubyte,ubyte):this (Tier1)

@@ -12,7 +12,7 @@ ; V00 this [V00,T00] ( 20, 4.60) ref -> esi this class-hnd single-def <System.Xml.Serialization.XmlSerializationWriter> ; V01 arg1 [V01,T02] ( 9, 3.21) ref -> edi class-hnd single-def <System.String> ; V02 arg2 [V02,T14] ( 5, 1.00) ref -> [ebp+0x18] class-hnd single-def <System.String>
-; V03 arg3 [V03,T05] ( 11, 4.59) ref -> ebx class-hnd single-def <System.Object>
+; V03 arg3 [V03,T05] ( 11, 4.54) ref -> ebx class-hnd single-def <System.Object>
; V04 arg4 [V04,T19] ( 2, 0.75) ref -> [ebp+0x10] class-hnd single-def <System.Type> ; V05 arg5 [V05,T20] ( 1, 0.75) ubyte -> [ebp+0x0C] single-def ; V06 arg6 [V06,T27] ( 3, 0.25) ubyte -> [ebp+0x08] single-def @@ -86,7 +86,7 @@ G_M43184_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=27 bbWeight=1 PerfScore 9.25 G_M43184_IG02: ; bbWeight=1, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref test ebx, ebx
- je G_M43184_IG62
+ je G_M43184_IG59
;; size=8 bbWeight=1 PerfScore 1.25 G_M43184_IG03: ; bbWeight=0.96, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz mov gword ptr [ebp+0x18], eax @@ -136,35 +136,86 @@ G_M43184_IG06: ; bbWeight=0.96, gcrefRegs=000000C9 {eax ebx esi edi}, byr call [<unknown method>] ; gcrRegs -[ecx] ;; size=8 bbWeight=0.96 PerfScore 3.11
-G_M43184_IG07: ; bbWeight=0.96, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M43184_IG07: ; bbWeight=0.96, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [eax+0x48] ; gcrRegs -[eax] test eax, eax
- je SHORT G_M43184_IG12 - ;; size=7 bbWeight=0.96 PerfScore 3.11
+ je G_M43184_IG20 + ;; size=11 bbWeight=0.96 PerfScore 3.11
G_M43184_IG08: ; bbWeight=0.96, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref cmp eax, 1
- jne G_M43184_IG44
+ jne G_M43184_IG41
;; size=9 bbWeight=0.96 PerfScore 1.20
-G_M43184_IG09: ; bbWeight=0.75, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M43184_IG09: ; bbWeight=0.75, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, ebx ; gcrRegs +[edx] cmp dword ptr [edx], 0xD1FFAB1E
- je G_M43184_IG44
+ je G_M43184_IG41
cmp gword ptr [ebp-0x18], 0xD1FFAB1E
- je G_M43184_IG44
+ je G_M43184_IG41
mov ecx, ebx ; gcrRegs +[ecx] test ecx, ecx
- je G_M43184_IG36 - ;; size=37 bbWeight=0.75 PerfScore 6.56 -G_M43184_IG10: ; bbWeight=0.38, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M43184_IG12 + ;; size=33 bbWeight=0.75 PerfScore 6.56 +G_M43184_IG10: ; bbWeight=0.38, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx] cmp dword ptr [ecx], 0xD1FFAB1E
- je G_M43184_IG35 - ;; size=12 bbWeight=0.38 PerfScore 1.50 -G_M43184_IG11: ; bbWeight=0.18, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M43184_IG18 + ;; size=8 bbWeight=0.38 PerfScore 1.50 +G_M43184_IG11: ; bbWeight=0.26, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
+ xor ecx, ecx + ; gcrRegs +[ecx] + ;; size=2 bbWeight=0.26 PerfScore 0.06 +G_M43184_IG12: ; bbWeight=0.75, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz + test ecx, ecx + jne G_M43184_IG41 + mov eax, gword ptr [ebp-0x18] + ; gcrRegs +[eax] + cmp eax, 0xD1FFAB1E + je SHORT G_M43184_IG16 + cmp byte ptr [ebp+0x0C], 0 + je SHORT G_M43184_IG17 + ;; size=24 bbWeight=0.75 PerfScore 4.88 +G_M43184_IG13: ; bbWeight=0.54, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[ecx] + cmp gword ptr [esi+0x10], 0 + jne G_M43184_IG79 + ;; size=10 bbWeight=0.54 PerfScore 2.17 +G_M43184_IG14: ; bbWeight=0.54, gcVars=0000000000000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax] + ; GC ptr vars -{V07} + push gword ptr [ebp+0x18] + push ebx + push gword ptr [ebp+0x10] + mov ecx, esi + ; gcrRegs +[ecx] + mov edx, edi + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx ebx esi edi] + ;; size=17 bbWeight=0.54 PerfScore 3.52 +G_M43184_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc + lea esp, [ebp-0x0C] + pop ebx + pop esi + pop edi + pop ebp + ret 20 + ;; size=10 bbWeight=1 PerfScore 4.50 +G_M43184_IG16: ; bbWeight=0.38, gcVars=0000000000000008 {V07}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs +[eax ebx esi edi] + ; GC ptr vars +{V03 V07} + jmp G_M43184_IG41 + ;; size=5 bbWeight=0.38 PerfScore 0.75 +G_M43184_IG17: ; bbWeight=0.21, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz + cmp byte ptr [esi+0x34], 0 + je SHORT G_M43184_IG19 + jmp SHORT G_M43184_IG13 + ;; size=8 bbWeight=0.21 PerfScore 1.25 +G_M43184_IG18: ; bbWeight=0.12, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax]
mov edx, ebx ; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; <unknown class> @@ -172,10 +223,28 @@ G_M43184_IG11: ; bbWeight=0.18, gcrefRegs=000000C8 {ebx esi edi}, byrefRe ; gcrRegs -[edx] +[eax] mov ecx, eax ; gcrRegs +[ecx]
- jmp G_M43184_IG36 - ;; size=19 bbWeight=0.18 PerfScore 0.66 -G_M43184_IG12: ; bbWeight=0.08, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax ecx]
+ jmp SHORT G_M43184_IG12 + ;; size=16 bbWeight=0.12 PerfScore 0.45 +G_M43184_IG19: ; bbWeight=0.21, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx] + test edi, edi + je G_M43184_IG73 + push gword ptr [ebp+0x18] + push ebx + movzx ecx, byte ptr [ebp+0x08] + push ecx + mov ecx, esi + ; gcrRegs +[ecx] + mov edx, edi + ; gcrRegs +[edx] + ; GC ptr vars -{V03 V07} + call [System.Xml.Serialization.XmlSerializationWriter:WriteReferencingElement(System.String,System.String,System.Object,ubyte):this] + ; gcrRegs -[eax ecx edx ebx esi edi] + jmp SHORT G_M43184_IG15 + ;; size=29 bbWeight=0.21 PerfScore 2.24 +G_M43184_IG20: ; bbWeight=0.08, gcVars=0000000000000008 {V07}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs +[ebx esi edi] + ; GC ptr vars +{V03 V07}
mov edx, gword ptr [ebp-0x18] ; gcrRegs +[edx] mov eax, edx @@ -184,94 +253,95 @@ G_M43184_IG12: ; bbWeight=0.08, gcrefRegs=000000C8 {ebx esi edi}, byrefRe ; GC ptr vars +{V26} mov ecx, eax ; gcrRegs +[ecx]
+ ; GC ptr vars -{V03}
call [System.RuntimeType:get_IsActualEnum():ubyte:this] ; gcrRegs -[eax ecx edx] test eax, eax
- jne G_M43184_IG64
+ jne G_M43184_IG61
;; size=24 bbWeight=0.08 PerfScore 0.53
-G_M43184_IG13: ; bbWeight=0.08, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M43184_IG21: ; bbWeight=0.08, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [ebp-0x24] ; gcrRegs +[ecx] cmp ecx, 0xD1FFAB1E
- je G_M43184_IG72
+ je G_M43184_IG71
;; size=15 bbWeight=0.08 PerfScore 0.18
-G_M43184_IG14: ; bbWeight=0.08, gcVars=0000000000000008 {V07}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M43184_IG22: ; bbWeight=0.08, gcVars=0000000000000008 {V07}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V26} cmp ecx, 0xD1FFAB1E
- je G_M43184_IG66
+ je G_M43184_IG63
;; size=12 bbWeight=0.08 PerfScore 0.10
-G_M43184_IG15: ; bbWeight=0.07, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref - cmp ecx, 0xD1FFAB1E - je G_M43184_IG71 - ;; size=12 bbWeight=0.07 PerfScore 0.09 -G_M43184_IG16: ; bbWeight=0.07, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M43184_IG23: ; bbWeight=0.07, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
cmp ecx, 0xD1FFAB1E je G_M43184_IG70 ;; size=12 bbWeight=0.07 PerfScore 0.09
-G_M43184_IG17: ; bbWeight=0.07, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref - cmp ecx, 0xD1FFAB1E - je G_M43184_IG63 - ;; size=12 bbWeight=0.07 PerfScore 0.08 -G_M43184_IG18: ; bbWeight=0.05, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref - cmp ecx, 0xD1FFAB1E - je G_M43184_IG67 - ;; size=12 bbWeight=0.05 PerfScore 0.07 -G_M43184_IG19: ; bbWeight=0.05, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M43184_IG24: ; bbWeight=0.07, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
cmp ecx, 0xD1FFAB1E je G_M43184_IG69
- ;; size=12 bbWeight=0.05 PerfScore 0.06 -G_M43184_IG20: ; bbWeight=0.04, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+ ;; size=12 bbWeight=0.07 PerfScore 0.09 +G_M43184_IG25: ; bbWeight=0.07, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
cmp ecx, 0xD1FFAB1E
- je G_M43184_IG59
+ je G_M43184_IG60 + ;; size=12 bbWeight=0.07 PerfScore 0.08 +G_M43184_IG26: ; bbWeight=0.05, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref + cmp ecx, 0xD1FFAB1E + je G_M43184_IG64 + ;; size=12 bbWeight=0.05 PerfScore 0.07 +G_M43184_IG27: ; bbWeight=0.05, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref + cmp ecx, 0xD1FFAB1E + je G_M43184_IG68 + ;; size=12 bbWeight=0.05 PerfScore 0.06 +G_M43184_IG28: ; bbWeight=0.04, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref + cmp ecx, 0xD1FFAB1E + je G_M43184_IG67
;; size=12 bbWeight=0.04 PerfScore 0.06
-G_M43184_IG21: ; bbWeight=0.04, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M43184_IG29: ; bbWeight=0.04, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref + cmp ecx, 0xD1FFAB1E + je G_M43184_IG66 + ;; size=12 bbWeight=0.04 PerfScore 0.05 +G_M43184_IG30: ; bbWeight=0.04, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
cmp ecx, 0xD1FFAB1E je G_M43184_IG56 ;; size=12 bbWeight=0.04 PerfScore 0.05
-G_M43184_IG22: ; bbWeight=0.04, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M43184_IG31: ; bbWeight=0.04, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
cmp ecx, 0xD1FFAB1E
- je G_M43184_IG54
+ je G_M43184_IG53
;; size=12 bbWeight=0.04 PerfScore 0.05
-G_M43184_IG23: ; bbWeight=0.04, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M43184_IG32: ; bbWeight=0.04, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
cmp ecx, 0xD1FFAB1E
- je G_M43184_IG50
+ je G_M43184_IG51
;; size=12 bbWeight=0.04 PerfScore 0.05
-G_M43184_IG24: ; bbWeight=0.04, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M43184_IG33: ; bbWeight=0.03, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
cmp ecx, 0xD1FFAB1E
- je G_M43184_IG46 - ;; size=12 bbWeight=0.04 PerfScore 0.05 -G_M43184_IG25: ; bbWeight=0.03, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref - cmp ecx, 0xD1FFAB1E - je G_M43184_IG43
+ je G_M43184_IG47
;; size=12 bbWeight=0.03 PerfScore 0.04
-G_M43184_IG26: ; bbWeight=0.03, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
...

+0 (0.00%) : 610704.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:ShouldSkipSyntaxNodeAnalysis(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol):ubyte:this (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel>
-; V01 arg1 [V01,T00] ( 7, 4.04) ref -> esi class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
+; V01 arg1 [V01,T00] ( 7, 4.00) ref -> esi class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
; V02 arg2 [V02,T06] ( 3, 2 ) ref -> ecx class-hnd single-def <Microsoft.CodeAnalysis.ISymbol> ;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref single-def ; V04 tmp0 [V04,T02] ( 3, 3.14) ref -> eax class-hnd "spilling QMark2" <<unknown class>> @@ -37,7 +37,7 @@ G_M39093_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=10 bbWeight=1 PerfScore 4.50 G_M39093_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz cmp dword ptr [ecx], 0xD1FFAB1E
- jne SHORT G_M39093_IG13
+ jne SHORT G_M39093_IG18
;; size=8 bbWeight=1 PerfScore 4.00 G_M39093_IG03: ; bbWeight=0.57, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ecx+0x04] @@ -78,61 +78,61 @@ G_M39093_IG10: ; bbWeight=0.63, gcVars=00000000 {}, gcrefRegs=00000040 {e mov eax, esi ; gcrRegs +[eax] test eax, eax
- je SHORT G_M39093_IG15
+ je SHORT G_M39093_IG13
;; size=6 bbWeight=0.63 PerfScore 0.94 G_M39093_IG11: ; bbWeight=0.31, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz cmp dword ptr [eax], 0xD1FFAB1E
- je SHORT G_M39093_IG14
+ jne SHORT G_M39093_IG19
;; size=8 bbWeight=0.31 PerfScore 1.26
-G_M39093_IG12: ; bbWeight=0.13, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M39093_IG12: ; bbWeight=0.22, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
- mov edx, esi - ; gcrRegs +[edx] - mov ecx, 0xD1FFAB1E ; <unknown class> - call CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[edx] +[eax] - jmp SHORT G_M39093_IG15 - ;; size=14 bbWeight=0.13 PerfScore 0.46 -G_M39093_IG13: ; bbWeight=0.43, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax] +[ecx] - call [<unknown method>] - ; gcrRegs -[ecx] - mov edi, eax - jmp SHORT G_M39093_IG06 - ;; size=10 bbWeight=0.43 PerfScore 2.26 -G_M39093_IG14: ; bbWeight=0.18, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
xor eax, eax ; gcrRegs +[eax]
- ;; size=2 bbWeight=0.18 PerfScore 0.05 -G_M39093_IG15: ; bbWeight=0.63, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=0.22 PerfScore 0.05 +G_M39093_IG13: ; bbWeight=0.63, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
test eax, eax jne SHORT G_M39093_IG22 mov eax, esi test eax, eax
- je SHORT G_M39093_IG17
+ je SHORT G_M39093_IG15
;; size=10 bbWeight=0.63 PerfScore 1.73
-G_M39093_IG16: ; bbWeight=0.31, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+G_M39093_IG14: ; bbWeight=0.31, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [eax], 0xD1FFAB1E je SHORT G_M39093_IG22 ;; size=8 bbWeight=0.31 PerfScore 1.26
-G_M39093_IG17: ; bbWeight=0.63, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M39093_IG15: ; bbWeight=0.63, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] mov eax, esi ; gcrRegs +[eax] test eax, eax je SHORT G_M39093_IG08 ;; size=6 bbWeight=0.63 PerfScore 0.94
-G_M39093_IG18: ; bbWeight=0.31, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+G_M39093_IG16: ; bbWeight=0.31, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi] cmp dword ptr [eax], 0xD1FFAB1E je SHORT G_M39093_IG22 ;; size=8 bbWeight=0.31 PerfScore 1.26
-G_M39093_IG19: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M39093_IG17: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] jmp SHORT G_M39093_IG08 ;; size=2 bbWeight=0.16 PerfScore 0.31
+G_M39093_IG18: ; bbWeight=0.43, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[ecx esi] + call [<unknown method>] + ; gcrRegs -[ecx] + mov edi, eax + jmp SHORT G_M39093_IG06 + ;; size=10 bbWeight=0.43 PerfScore 2.26 +G_M39093_IG19: ; bbWeight=0.09, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov edx, esi + ; gcrRegs +[edx] + mov ecx, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs -[edx] +[eax] + jmp SHORT G_M39093_IG13 + ;; size=14 bbWeight=0.09 PerfScore 0.33
G_M39093_IG20: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[esi]
+ ; gcrRegs -[eax]
test esi, esi je SHORT G_M39093_IG08 ;; size=4 bbWeight=0.02 PerfScore 0.03 @@ -151,6 +151,6 @@ G_M39093_IG23: ; bbWeight=0, epilog, nogc, extend ret 4 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 159, prolog size 5, PerfScore 29.57, instruction count 59, allocated bytes for code 159 (MethodHash=3d39674a) for method Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:ShouldSkipSyntaxNodeAnalysis(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol):ubyte:this (Tier1)
+; Total bytes of code 159, prolog size 5, PerfScore 29.44, instruction count 59, allocated bytes for code 159 (MethodHash=3d39674a) for method Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:ShouldSkipSyntaxNodeAnalysis(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol):ubyte:this (Tier1)
; ============================================================

+3 (+0.26%) : 359055.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 14, 3.49) ref -> edi this class-hnd single-def <System.Threading.Tasks.Task>
-; V01 arg1 [V01,T01] ( 11, 5.16) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T01] ( 11, 5.12) ref -> esi class-hnd single-def <System.Object>
; V02 loc0 [V02,T07] ( 6, 2 ) ref -> ebx class-hnd exact single-def <System.Threading.Tasks.TplEventSource> ; V03 loc1 [V03,T08] ( 5, 2 ) ubyte -> [ebp-0x24] spill-single-def ; V04 loc2 [V04,T06] ( 11, 2 ) ubyte -> [ebp-0x28] spill-single-def @@ -105,13 +105,13 @@ G_M51094_IG05: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= ;; size=15 bbWeight=1 PerfScore 3.75 G_M51094_IG06: ; bbWeight=0.50, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz cmp dword ptr [ecx], 0xD1FFAB1E
- jne SHORT G_M51094_IG20
+ jne SHORT G_M51094_IG21
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M51094_IG07: ; bbWeight=0.36, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M51094_IG07: ; bbWeight=0.41, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx] xor ecx, ecx ; gcrRegs +[ecx]
- ;; size=2 bbWeight=0.36 PerfScore 0.09
+ ;; size=2 bbWeight=0.41 PerfScore 0.10
G_M51094_IG08: ; bbWeight=1, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz test ecx, ecx jne SHORT G_M51094_IG17 @@ -145,7 +145,7 @@ G_M51094_IG13: ; bbWeight=0.49, gcrefRegs=000000CA {ecx ebx esi edi}, byr G_M51094_IG14: ; bbWeight=0.49, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[ebx esi] cmp dword ptr [ecx], 0xD1FFAB1E
- jne SHORT G_M51094_IG21
+ jne SHORT G_M51094_IG20
;; size=8 bbWeight=0.49 PerfScore 1.96 G_M51094_IG15: ; bbWeight=0.38, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, byref, isz push eax @@ -185,7 +185,18 @@ G_M51094_IG19: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=8 bbWeight=1 PerfScore 3.50
-G_M51094_IG20: ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M51094_IG20: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[ecx edi] + push eax + mov edx, edi + ; gcrRegs +[edx] + mov eax, dword ptr [ecx] + mov eax, dword ptr [eax+0x2C] + call [eax+0x10]<unknown method> + ; gcrRegs -[ecx edx edi] + jmp SHORT G_M51094_IG18 + ;; size=13 bbWeight=0.11 PerfScore 1.10 +G_M51094_IG21: ; bbWeight=0.09, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[ebx esi edi] mov edx, esi ; gcrRegs +[edx] @@ -196,21 +207,10 @@ G_M51094_IG20: ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs +[ecx] mov eax, dword ptr [ebp-0x28] ; gcrRegs -[eax]
- jmp SHORT G_M51094_IG08 - ;; size=19 bbWeight=0.14 PerfScore 0.64 -G_M51094_IG21: ; bbWeight=0.11, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ebx esi] - push eax - mov edx, edi - ; gcrRegs +[edx] - mov eax, dword ptr [ecx] - mov eax, dword ptr [eax+0x2C] - call [eax+0x10]<unknown method> - ; gcrRegs -[ecx edx edi] - jmp SHORT G_M51094_IG18 - ;; size=13 bbWeight=0.11 PerfScore 1.10
+ jmp G_M51094_IG08 + ;; size=22 bbWeight=0.09 PerfScore 0.43
G_M51094_IG22: ; bbWeight=0.03, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs +[ebx esi edi]
+ ; gcrRegs -[ecx]
xor edx, edx mov eax, edx jmp G_M51094_IG05 @@ -719,7 +719,7 @@ G_M51094_IG58: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=000000 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1175, prolog size 27, PerfScore 50.65, instruction count 374, allocated bytes for code 1175 (MethodHash=8bc43869) for method System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
+; Total bytes of code 1178, prolog size 27, PerfScore 50.44, instruction count 374, allocated bytes for code 1178 (MethodHash=8bc43869) for method System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
; ============================================================ *************** EH table for System.Threading.Tasks.Task:RunContinuations(System.Object):this

+8 (+5.67%) : 557328.dasm - Xunit.Internal.ArgumentFormatter:SafeToMultiEnumerate(System.Collections.IEnumerable):ubyte (Tier1)

@@ -8,11 +8,11 @@ ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 63 ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 10, 6.13) ref -> esi class-hnd single-def <System.Collections.IEnumerable>
+; V00 arg0 [V00,T00] ( 10, 6.01) ref -> esi class-hnd single-def <System.Collections.IEnumerable>
; V01 tmp0 [V01,T04] ( 3, 4.05) ref -> edx class-hnd "spilling QMark2" <<unknown class>>
-; V02 rat0 [V02,T01] ( 5, 7.42) ref -> eax class-hnd "replacement local" <<unknown class>>
+; V02 rat0 [V02,T01] ( 5, 7.33) ref -> eax class-hnd "replacement local" <<unknown class>>
; V03 rat1 [V03,T02] ( 6, 6.48) ref -> eax class-hnd "replacement local" <<unknown class>>
-; V04 rat2 [V04,T03] ( 5, 5.98) ref -> eax class-hnd "replacement local" <<unknown class>>
+; V04 rat2 [V04,T03] ( 5, 5.91) ref -> ecx class-hnd "replacement local" <<unknown class>>
; ; Lcl frame size = 0 @@ -27,93 +27,105 @@ G_M49662_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov eax, esi ; gcrRegs +[eax] test eax, eax
- je SHORT G_M49662_IG05
+ je SHORT G_M49662_IG04
;; size=6 bbWeight=1 PerfScore 1.50 G_M49662_IG03: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz cmp dword ptr [eax], 0xD1FFAB1E
- je SHORT G_M49662_IG05
+ jne SHORT G_M49662_IG17
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M49662_IG04: ; bbWeight=0.21, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M49662_IG04: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz + test eax, eax + jne SHORT G_M49662_IG18 + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M49662_IG05: ; bbWeight=0.81, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
+ mov edx, esi + ; gcrRegs +[edx] + test edx, edx + je SHORT G_M49662_IG07 + ;; size=6 bbWeight=0.81 PerfScore 1.21 +G_M49662_IG06: ; bbWeight=0.40, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz + cmp dword ptr [edx], 0xD1FFAB1E + je SHORT G_M49662_IG18 + ;; size=8 bbWeight=0.40 PerfScore 1.62 +G_M49662_IG07: ; bbWeight=0.81, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[edx] + mov eax, esi + ; gcrRegs +[eax] + test eax, eax + je SHORT G_M49662_IG10 + ;; size=6 bbWeight=0.81 PerfScore 1.21 +G_M49662_IG08: ; bbWeight=0.40, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz + cmp dword ptr [eax], 0xD1FFAB1E + jne SHORT G_M49662_IG13 + ;; size=8 bbWeight=0.40 PerfScore 1.62 +G_M49662_IG09: ; bbWeight=0.30, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax] + xor eax, eax + ; gcrRegs +[eax] + ;; size=2 bbWeight=0.30 PerfScore 0.07 +G_M49662_IG10: ; bbWeight=0.81, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz + test eax, eax + jne SHORT G_M49662_IG18 + mov ecx, esi + ; gcrRegs +[ecx] + test ecx, ecx + je SHORT G_M49662_IG15 + ;; size=10 bbWeight=0.81 PerfScore 2.23 +G_M49662_IG11: ; bbWeight=0.40, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax] + cmp dword ptr [ecx], 0xD1FFAB1E + je SHORT G_M49662_IG15 + ;; size=8 bbWeight=0.40 PerfScore 1.62 +G_M49662_IG12: ; bbWeight=0.12, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx] + jmp SHORT G_M49662_IG14 + ;; size=2 bbWeight=0.12 PerfScore 0.24 +G_M49662_IG13: ; bbWeight=0.11, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov edx, esi + ; gcrRegs +[edx] + mov ecx, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_ISINSTANCEOFINTERFACE + ; gcrRegs -[edx] +[eax] + jmp SHORT G_M49662_IG10 + ;; size=14 bbWeight=0.11 PerfScore 0.38 +G_M49662_IG14: ; bbWeight=0.12, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax] + mov edx, esi + ; gcrRegs +[edx] + mov ecx, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_ISINSTANCEOFINTERFACE + ; gcrRegs -[edx] +[eax] + mov ecx, eax + ; gcrRegs +[ecx] + ;; size=14 bbWeight=0.12 PerfScore 0.21 +G_M49662_IG15: ; bbWeight=0.81, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax] + test ecx, ecx + jne SHORT G_M49662_IG18 + ;; size=4 bbWeight=0.81 PerfScore 1.01 +G_M49662_IG16: ; bbWeight=0.19, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx] + jmp SHORT G_M49662_IG20 + ;; size=2 bbWeight=0.19 PerfScore 0.38 +G_M49662_IG17: ; bbWeight=0.16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, esi ; gcrRegs +[edx] mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[edx] +[eax]
- ;; size=12 bbWeight=0.21 PerfScore 0.32 -G_M49662_IG05: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz - test eax, eax - jne SHORT G_M49662_IG16 - ;; size=4 bbWeight=1 PerfScore 1.25 -G_M49662_IG06: ; bbWeight=0.81, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax] - mov edx, esi - ; gcrRegs +[edx] - test edx, edx - je SHORT G_M49662_IG08 - ;; size=6 bbWeight=0.81 PerfScore 1.21 -G_M49662_IG07: ; bbWeight=0.40, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz - cmp dword ptr [edx], 0xD1FFAB1E - je SHORT G_M49662_IG16 - ;; size=8 bbWeight=0.40 PerfScore 1.62 -G_M49662_IG08: ; bbWeight=0.81, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[edx] - mov eax, esi - ; gcrRegs +[eax] - test eax, eax - je SHORT G_M49662_IG12 - ;; size=6 bbWeight=0.81 PerfScore 1.21 -G_M49662_IG09: ; bbWeight=0.40, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz - cmp dword ptr [eax], 0xD1FFAB1E - je SHORT G_M49662_IG11 - ;; size=8 bbWeight=0.40 PerfScore 1.62 -G_M49662_IG10: ; bbWeight=0.15, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax] - mov edx, esi - ; gcrRegs +[edx] - mov ecx, 0xD1FFAB1E ; <unknown class> - call CORINFO_HELP_ISINSTANCEOFINTERFACE - ; gcrRegs -[edx] +[eax] - jmp SHORT G_M49662_IG12 - ;; size=14 bbWeight=0.15 PerfScore 0.51 -G_M49662_IG11: ; bbWeight=0.26, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax] - xor eax, eax - ; gcrRegs +[eax] - ;; size=2 bbWeight=0.26 PerfScore 0.06 -G_M49662_IG12: ; bbWeight=0.81, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz - test eax, eax - jne SHORT G_M49662_IG16 - mov eax, esi - test eax, eax - je SHORT G_M49662_IG15 - ;; size=10 bbWeight=0.81 PerfScore 2.23 -G_M49662_IG13: ; bbWeight=0.40, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz - cmp dword ptr [eax], 0xD1FFAB1E - je SHORT G_M49662_IG15 - ;; size=8 bbWeight=0.40 PerfScore 1.62 -G_M49662_IG14: ; bbWeight=0.16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax] - mov edx, esi - ; gcrRegs +[edx] - mov ecx, 0xD1FFAB1E ; <unknown class> - call CORINFO_HELP_ISINSTANCEOFINTERFACE - ; gcrRegs -[edx] +[eax] - ;; size=12 bbWeight=0.16 PerfScore 0.24 -G_M49662_IG15: ; bbWeight=0.81, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz - test eax, eax - je SHORT G_M49662_IG18 - ;; size=4 bbWeight=0.81 PerfScore 1.01 -G_M49662_IG16: ; bbWeight=0.81, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M49662_IG04 + ;; size=14 bbWeight=0.16 PerfScore 0.58 +G_M49662_IG18: ; bbWeight=0.81, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax esi] mov eax, 1 ;; size=5 bbWeight=0.81 PerfScore 0.20
-G_M49662_IG17: ; bbWeight=0.81, epilog, nogc, extend
+G_M49662_IG19: ; bbWeight=0.81, epilog, nogc, extend
pop esi pop ebp ret ;; size=3 bbWeight=0.81 PerfScore 1.62
-G_M49662_IG18: ; bbWeight=0.19, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M49662_IG20: ; bbWeight=0.19, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi] mov ecx, esi ; gcrRegs +[ecx] @@ -124,12 +136,12 @@ G_M49662_IG18: ; bbWeight=0.19, gcVars=00000000 {}, gcrefRegs=00000040 {e ; gcrRegs -[eax] movzx eax, al ;; size=16 bbWeight=0.19 PerfScore 0.90
-G_M49662_IG19: ; bbWeight=0.19, epilog, nogc, extend
+G_M49662_IG21: ; bbWeight=0.19, epilog, nogc, extend
pop esi pop ebp ret ;; size=3 bbWeight=0.19 PerfScore 0.38
-; Total bytes of code 141, prolog size 4, PerfScore 22.01, instruction count 53, allocated bytes for code 141 (MethodHash=8c233e01) for method Xunit.Internal.ArgumentFormatter:SafeToMultiEnumerate(System.Collections.IEnumerable):ubyte (Tier1)
+; Total bytes of code 149, prolog size 4, PerfScore 22.75, instruction count 57, allocated bytes for code 149 (MethodHash=8c233e01) for method Xunit.Internal.ArgumentFormatter:SafeToMultiEnumerate(System.Collections.IEnumerable):ubyte (Tier1)
; ============================================================

+27 (+7.42%) : 59650.dasm - System.Collections.Immutable.ImmutableArray:CreateRangeSystem.__Canon:System.Collections.Immutable.ImmutableArray`1System.__Canon

@@ -9,7 +9,7 @@ ; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 8, 5.32) ref -> esi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V00 arg0 [V00,T01] ( 8, 5.22) ref -> esi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V01 TypeCtx [V01,T02] ( 11, 5.09) int -> edi single-def ; V02 loc0 [V02,T05] ( 5, 2.92) ref -> ecx class-hnd single-def <System.Collections.Immutable.IImmutableArray> ; V03 loc1 [V03 ] ( 2, 0.85) int -> [ebp-0x10] do-not-enreg[X] addr-exposed ld-addr-op @@ -50,7 +50,7 @@ ; V38 rat8 [V38,T19] ( 3, 0.92) int -> edx "runtime lookup" ; V39 rat9 [V39,T15] ( 3, 1.29) int -> ecx "spilling expr" ; V40 rat10 [V40,T18] ( 3, 1.03) int -> edx "fgMakeTemp is creating a new local variable"
-; V41 rat11 [V41,T00] ( 5, 7.49) ref -> ecx class-hnd "replacement local" <System.Collections.Immutable.IImmutableArray>
+; V41 rat11 [V41,T00] ( 5, 7.28) ref -> ecx class-hnd "replacement local" <System.Collections.Immutable.IImmutableArray>
; ; Lcl frame size = 8 @@ -71,80 +71,69 @@ G_M43512_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov ecx, esi ; gcrRegs +[ecx] test ecx, ecx
- je SHORT G_M43512_IG05
+ je SHORT G_M43512_IG04
;; size=14 bbWeight=1 PerfScore 2.75
-G_M43512_IG03: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG03: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
cmp dword ptr [ecx], 0xD1FFAB1E
- je SHORT G_M43512_IG05 - ;; size=8 bbWeight=0.50 PerfScore 2.00 -G_M43512_IG04: ; bbWeight=0.24, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ecx] - mov edx, esi - ; gcrRegs +[edx] - mov ecx, 0xD1FFAB1E ; System.Collections.Immutable.IImmutableArray - call CORINFO_HELP_ISINSTANCEOFINTERFACE - ; gcrRegs -[edx] +[eax] - mov ecx, eax - ; gcrRegs +[ecx] - ;; size=14 bbWeight=0.24 PerfScore 0.43 -G_M43512_IG05: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax]
+ jne G_M43512_IG29 + ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M43512_IG04: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
test ecx, ecx
- je SHORT G_M43512_IG13
+ je SHORT G_M43512_IG12
;; size=4 bbWeight=1 PerfScore 1.25
-G_M43512_IG06: ; bbWeight=0.46, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+G_M43512_IG05: ; bbWeight=0.46, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi] cmp dword ptr [ecx], 0xD1FFAB1E jne G_M43512_IG31 ;; size=12 bbWeight=0.46 PerfScore 1.85
-G_M43512_IG07: ; bbWeight=0.38, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+G_M43512_IG06: ; bbWeight=0.38, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
mov esi, gword ptr [ecx+0x04] ; gcrRegs +[esi] ;; size=3 bbWeight=0.38 PerfScore 0.77
-G_M43512_IG08: ; bbWeight=0.46, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M43512_IG07: ; bbWeight=0.46, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx] test esi, esi je G_M43512_IG33 mov ecx, dword ptr [edi+0x20] cmp dword ptr [ecx+0x04], 28
- jle G_M43512_IG28
+ jle G_M43512_IG27
;; size=21 bbWeight=0.46 PerfScore 3.35
-G_M43512_IG09: ; bbWeight=0.37, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M43512_IG08: ; bbWeight=0.37, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [ecx+0x1C] test eax, eax
- je G_M43512_IG28
+ je G_M43512_IG27
;; size=11 bbWeight=0.37 PerfScore 1.20
-G_M43512_IG10: ; bbWeight=0.46, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG09: ; bbWeight=0.46, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, eax mov edx, esi ; gcrRegs +[edx] cmp dword ptr [edx], eax
- jne SHORT G_M43512_IG23
+ jne SHORT G_M43512_IG22
;; size=8 bbWeight=0.46 PerfScore 2.08
-G_M43512_IG11: ; bbWeight=0.46, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+G_M43512_IG10: ; bbWeight=0.46, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi] mov eax, edx ; gcrRegs +[eax] ;; size=2 bbWeight=0.46 PerfScore 0.12
-G_M43512_IG12: ; bbWeight=0.46, epilog, nogc, extend
+G_M43512_IG11: ; bbWeight=0.46, epilog, nogc, extend
lea esp, [ebp-0x08] pop esi pop edi pop ebp ret ;; size=7 bbWeight=0.46 PerfScore 1.38
-G_M43512_IG13: ; bbWeight=0.54, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M43512_IG12: ; bbWeight=0.54, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax edx] +[esi] mov ecx, dword ptr [edi+0x20] cmp dword ptr [ecx+0x04], 12
- jle SHORT G_M43512_IG27 - ;; size=9 bbWeight=0.54 PerfScore 3.23 -G_M43512_IG14: ; bbWeight=0.43, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jle G_M43512_IG26 + ;; size=13 bbWeight=0.54 PerfScore 3.23 +G_M43512_IG13: ; bbWeight=0.43, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ecx+0x0C] test eax, eax
- je SHORT G_M43512_IG27
+ je SHORT G_M43512_IG26
;; size=7 bbWeight=0.43 PerfScore 1.40
-G_M43512_IG15: ; bbWeight=0.54, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG14: ; bbWeight=0.54, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
push eax lea edx, [ebp-0x10] mov ecx, esi @@ -152,19 +141,19 @@ G_M43512_IG15: ; bbWeight=0.54, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte] ; gcrRegs -[ecx] test eax, eax
- je SHORT G_M43512_IG20
+ je SHORT G_M43512_IG19
;; size=16 bbWeight=0.54 PerfScore 3.23
-G_M43512_IG16: ; bbWeight=0.31, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG15: ; bbWeight=0.31, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [edi+0x20] cmp dword ptr [ecx+0x04], 24
- jle SHORT G_M43512_IG30 - ;; size=9 bbWeight=0.31 PerfScore 1.85 -G_M43512_IG17: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jle G_M43512_IG30 + ;; size=13 bbWeight=0.31 PerfScore 1.85 +G_M43512_IG16: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [ecx+0x18] test eax, eax
- je SHORT G_M43512_IG30 - ;; size=7 bbWeight=0.25 PerfScore 0.80 -G_M43512_IG18: ; bbWeight=0.31, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ je G_M43512_IG30 + ;; size=11 bbWeight=0.25 PerfScore 0.80 +G_M43512_IG17: ; bbWeight=0.31, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
push eax mov ecx, esi ; gcrRegs +[ecx] @@ -172,85 +161,96 @@ G_M43512_IG18: ; bbWeight=0.31, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [<unknown method>] ; gcrRegs -[ecx esi] +[eax] ;; size=12 bbWeight=0.31 PerfScore 1.62
-G_M43512_IG19: ; bbWeight=0.31, epilog, nogc, extend
+G_M43512_IG18: ; bbWeight=0.31, epilog, nogc, extend
lea esp, [ebp-0x08] pop esi pop edi pop ebp ret ;; size=7 bbWeight=0.31 PerfScore 0.92
-G_M43512_IG20: ; bbWeight=0.23, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M43512_IG19: ; bbWeight=0.23, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[esi] mov ecx, dword ptr [edi+0x20] cmp dword ptr [ecx+0x04], 16
- jle SHORT G_M43512_IG24
+ jle SHORT G_M43512_IG23
;; size=9 bbWeight=0.23 PerfScore 1.38
-G_M43512_IG21: ; bbWeight=0.18, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG20: ; bbWeight=0.18, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ecx+0x10] test edx, edx
- je SHORT G_M43512_IG24
+ je SHORT G_M43512_IG23
;; size=7 bbWeight=0.18 PerfScore 0.60
-G_M43512_IG22: ; bbWeight=0.15, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M43512_IG29
+G_M43512_IG21: ; bbWeight=0.15, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M43512_IG28
;; size=2 bbWeight=0.15 PerfScore 0.30
-G_M43512_IG23: ; bbWeight=0.12, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG22: ; bbWeight=0.12, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, esi ; gcrRegs +[edx] call CORINFO_HELP_CHKCASTARRAY ; gcrRegs -[edx esi] +[eax] mov edx, eax ; gcrRegs +[edx]
- jmp SHORT G_M43512_IG11
+ jmp SHORT G_M43512_IG10
;; size=11 bbWeight=0.12 PerfScore 0.40
-G_M43512_IG24: ; bbWeight=0.08, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M43512_IG23: ; bbWeight=0.08, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax edx] +[esi] mov ecx, edi mov edx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov edx, eax ;; size=14 bbWeight=0.08 PerfScore 0.15
-G_M43512_IG25: ; bbWeight=0.23, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M43512_IG24: ; bbWeight=0.23, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, esi ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx esi] +[eax] ;; size=8 bbWeight=0.23 PerfScore 0.75
-G_M43512_IG26: ; bbWeight=0.23, epilog, nogc, extend
+G_M43512_IG25: ; bbWeight=0.23, epilog, nogc, extend
lea esp, [ebp-0x08] pop esi pop edi pop ebp ret ;; size=7 bbWeight=0.23 PerfScore 0.69
-G_M43512_IG27: ; bbWeight=0.19, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M43512_IG26: ; bbWeight=0.19, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] +[esi] mov ecx, edi mov edx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- jmp SHORT G_M43512_IG15 - ;; size=14 bbWeight=0.19 PerfScore 0.68 -G_M43512_IG28: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ jmp G_M43512_IG14 + ;; size=17 bbWeight=0.19 PerfScore 0.68 +G_M43512_IG27: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, edi mov edx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- jmp G_M43512_IG10
+ jmp G_M43512_IG09
;; size=17 bbWeight=0.17 PerfScore 0.58
-G_M43512_IG29: ; bbWeight=0.15, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M43512_IG25
+G_M43512_IG28: ; bbWeight=0.15, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M43512_IG24
;; size=2 bbWeight=0.15 PerfScore 0.30
-G_M43512_IG30: ; bbWeight=0.11, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG29: ; bbWeight=0.14, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + mov edx, esi + ; gcrRegs +[edx] + mov ecx, 0xD1FFAB1E ; System.Collections.Immutable.IImmutableArray + call CORINFO_HELP_ISINSTANCEOFINTERFACE + ; gcrRegs -[edx] +[eax] + mov ecx, eax + ; gcrRegs +[ecx] + jmp G_M43512_IG04 + ;; size=19 bbWeight=0.14 PerfScore 0.53 +G_M43512_IG30: ; bbWeight=0.11, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
...

+33 (+9.40%) : 29709.dasm - System.Collections.Immutable.ImmutableArray:CreateRangeSystem.__Canon:System.Collections.Immutable.ImmutableArray`1System.__Canon

@@ -9,7 +9,7 @@ ; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 8, 5.81) ref -> esi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V00 arg0 [V00,T01] ( 8, 5.77) ref -> esi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V01 TypeCtx [V01,T02] ( 11, 5.45) int -> edi single-def ; V02 loc0 [V02,T06] ( 5, 2.40) ref -> ecx class-hnd single-def <System.Collections.Immutable.IImmutableArray> ; V03 loc1 [V03 ] ( 2, 1.21) int -> [ebp-0x10] do-not-enreg[X] addr-exposed ld-addr-op @@ -71,44 +71,33 @@ G_M43512_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov ecx, esi ; gcrRegs +[ecx] test ecx, ecx
- je SHORT G_M43512_IG06 - ;; size=14 bbWeight=1 PerfScore 2.75 -G_M43512_IG03: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz - cmp dword ptr [ecx], 0xD1FFAB1E
je SHORT G_M43512_IG05
- ;; size=8 bbWeight=0.50 PerfScore 2.00 -G_M43512_IG04: ; bbWeight=0.21, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=14 bbWeight=1 PerfScore 2.75 +G_M43512_IG03: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref + cmp dword ptr [ecx], 0xD1FFAB1E + jne G_M43512_IG25 + ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M43512_IG04: ; bbWeight=0.34, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
- mov edx, esi - ; gcrRegs +[edx] - mov ecx, 0xD1FFAB1E ; System.Collections.Immutable.IImmutableArray - call CORINFO_HELP_ISINSTANCEOFINTERFACE - ; gcrRegs -[edx] +[eax] - mov ecx, eax - ; gcrRegs +[ecx] - jmp SHORT G_M43512_IG06 - ;; size=16 bbWeight=0.21 PerfScore 0.79 -G_M43512_IG05: ; bbWeight=0.29, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax ecx]
xor ecx, ecx ; gcrRegs +[ecx]
- ;; size=2 bbWeight=0.29 PerfScore 0.07 -G_M43512_IG06: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=0.34 PerfScore 0.08 +G_M43512_IG05: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
test ecx, ecx
- jne SHORT G_M43512_IG19 - ;; size=4 bbWeight=1 PerfScore 1.25 -G_M43512_IG07: ; bbWeight=0.80, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jne G_M43512_IG18 + ;; size=8 bbWeight=1 PerfScore 1.25 +G_M43512_IG06: ; bbWeight=0.80, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx] mov ecx, dword ptr [edi+0x20] cmp dword ptr [ecx+0x04], 12
- jle SHORT G_M43512_IG18
+ jle SHORT G_M43512_IG17
;; size=9 bbWeight=0.80 PerfScore 4.80
-G_M43512_IG08: ; bbWeight=0.64, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG07: ; bbWeight=0.64, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ecx+0x0C] test eax, eax
- je SHORT G_M43512_IG18
+ je SHORT G_M43512_IG17
;; size=7 bbWeight=0.64 PerfScore 2.08
-G_M43512_IG09: ; bbWeight=0.80, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG08: ; bbWeight=0.80, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
push eax lea edx, [ebp-0x10] mov ecx, esi @@ -116,19 +105,19 @@ G_M43512_IG09: ; bbWeight=0.80, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte] ; gcrRegs -[ecx] test eax, eax
- je SHORT G_M43512_IG14
+ je SHORT G_M43512_IG13
;; size=16 bbWeight=0.80 PerfScore 4.80
-G_M43512_IG10: ; bbWeight=0.41, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG09: ; bbWeight=0.41, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [edi+0x20] cmp dword ptr [ecx+0x04], 24
- jle SHORT G_M43512_IG26 - ;; size=9 bbWeight=0.41 PerfScore 2.48 -G_M43512_IG11: ; bbWeight=0.33, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jle G_M43512_IG26 + ;; size=13 bbWeight=0.41 PerfScore 2.48 +G_M43512_IG10: ; bbWeight=0.33, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [ecx+0x18] test eax, eax
- je SHORT G_M43512_IG26 - ;; size=7 bbWeight=0.33 PerfScore 1.08 -G_M43512_IG12: ; bbWeight=0.41, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ je G_M43512_IG26 + ;; size=11 bbWeight=0.33 PerfScore 1.08 +G_M43512_IG11: ; bbWeight=0.41, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
push eax mov ecx, esi ; gcrRegs +[ecx] @@ -136,54 +125,54 @@ G_M43512_IG12: ; bbWeight=0.41, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [<unknown method>] ; gcrRegs -[ecx esi] +[eax] ;; size=12 bbWeight=0.41 PerfScore 2.17
-G_M43512_IG13: ; bbWeight=0.41, epilog, nogc, extend
+G_M43512_IG12: ; bbWeight=0.41, epilog, nogc, extend
lea esp, [ebp-0x08] pop esi pop edi pop ebp ret ;; size=7 bbWeight=0.41 PerfScore 1.24
-G_M43512_IG14: ; bbWeight=0.39, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M43512_IG13: ; bbWeight=0.39, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] +[esi] mov ecx, dword ptr [edi+0x20] cmp dword ptr [ecx+0x04], 16
- jle SHORT G_M43512_IG27 - ;; size=9 bbWeight=0.39 PerfScore 2.32 -G_M43512_IG15: ; bbWeight=0.31, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jle G_M43512_IG27 + ;; size=13 bbWeight=0.39 PerfScore 2.32 +G_M43512_IG14: ; bbWeight=0.31, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ecx+0x10] test edx, edx je SHORT G_M43512_IG27 ;; size=7 bbWeight=0.31 PerfScore 1.01
-G_M43512_IG16: ; bbWeight=0.39, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M43512_IG15: ; bbWeight=0.39, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, esi ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx esi] +[eax] ;; size=8 bbWeight=0.39 PerfScore 1.26
-G_M43512_IG17: ; bbWeight=0.39, epilog, nogc, extend
+G_M43512_IG16: ; bbWeight=0.39, epilog, nogc, extend
lea esp, [ebp-0x08] pop esi pop edi pop ebp ret ;; size=7 bbWeight=0.39 PerfScore 1.16
-G_M43512_IG18: ; bbWeight=0.29, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M43512_IG17: ; bbWeight=0.29, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[esi] mov ecx, edi mov edx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- jmp SHORT G_M43512_IG09
+ jmp SHORT G_M43512_IG08
;; size=14 bbWeight=0.29 PerfScore 1.01
-G_M43512_IG19: ; bbWeight=0.20, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG18: ; bbWeight=0.20, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi] +[ecx] cmp dword ptr [ecx], 0xD1FFAB1E
- jne SHORT G_M43512_IG30 - ;; size=8 bbWeight=0.20 PerfScore 0.80 -G_M43512_IG20: ; bbWeight=0.17, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+ jne G_M43512_IG30 + ;; size=12 bbWeight=0.20 PerfScore 0.80 +G_M43512_IG19: ; bbWeight=0.17, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
mov esi, gword ptr [ecx+0x04] ; gcrRegs +[esi] ;; size=3 bbWeight=0.17 PerfScore 0.34
-G_M43512_IG21: ; bbWeight=0.20, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG20: ; bbWeight=0.20, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx] test esi, esi je G_M43512_IG32 @@ -191,49 +180,60 @@ G_M43512_IG21: ; bbWeight=0.20, gcrefRegs=00000040 {esi}, byrefRegs=00000 cmp dword ptr [ecx+0x04], 28 jle SHORT G_M43512_IG28 ;; size=17 bbWeight=0.20 PerfScore 1.45
-G_M43512_IG22: ; bbWeight=0.16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG21: ; bbWeight=0.16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ecx+0x1C] test eax, eax je SHORT G_M43512_IG28 ;; size=7 bbWeight=0.16 PerfScore 0.52
-G_M43512_IG23: ; bbWeight=0.20, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG22: ; bbWeight=0.20, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, eax mov edx, esi ; gcrRegs +[edx] cmp dword ptr [edx], eax jne SHORT G_M43512_IG29 ;; size=8 bbWeight=0.20 PerfScore 0.90
-G_M43512_IG24: ; bbWeight=0.20, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+G_M43512_IG23: ; bbWeight=0.20, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi] mov eax, edx ; gcrRegs +[eax] ;; size=2 bbWeight=0.20 PerfScore 0.05
-G_M43512_IG25: ; bbWeight=0.20, epilog, nogc, extend
+G_M43512_IG24: ; bbWeight=0.20, epilog, nogc, extend
lea esp, [ebp-0x08] pop esi pop edi pop ebp ret ;; size=7 bbWeight=0.20 PerfScore 0.60
-G_M43512_IG26: ; bbWeight=0.15, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M43512_IG25: ; bbWeight=0.16, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax edx] +[esi]
+ mov edx, esi + ; gcrRegs +[edx] + mov ecx, 0xD1FFAB1E ; System.Collections.Immutable.IImmutableArray + call CORINFO_HELP_ISINSTANCEOFINTERFACE + ; gcrRegs -[edx] +[eax] + mov ecx, eax + ; gcrRegs +[ecx] + jmp G_M43512_IG05 + ;; size=19 bbWeight=0.16 PerfScore 0.62 +G_M43512_IG26: ; bbWeight=0.15, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax ecx]
mov ecx, edi mov edx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- jmp G_M43512_IG12
+ jmp G_M43512_IG11
;; size=17 bbWeight=0.15 PerfScore 0.52
-G_M43512_IG27: ; bbWeight=0.14, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG27: ; bbWeight=0.14, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, edi mov edx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov edx, eax
- jmp SHORT G_M43512_IG16 - ;; size=16 bbWeight=0.14 PerfScore 0.52
+ jmp G_M43512_IG15 + ;; size=19 bbWeight=0.14 PerfScore 0.52
G_M43512_IG28: ; bbWeight=0.07, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov ecx, edi mov edx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- jmp SHORT G_M43512_IG23
+ jmp SHORT G_M43512_IG22
;; size=14 bbWeight=0.07 PerfScore 0.25 G_M43512_IG29: ; bbWeight=0.05, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov edx, esi @@ -242,16 +242,16 @@ G_M43512_IG29: ; bbWeight=0.05, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; gcrRegs -[edx esi] +[eax] mov edx, eax ; gcrRegs +[edx]
- jmp SHORT G_M43512_IG24
+ jmp SHORT G_M43512_IG23
;; size=11 bbWeight=0.05 PerfScore 0.17
-G_M43512_IG30: ; bbWeight=0.03, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG30: ; bbWeight=0.03, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax edx] +[ecx] call [<unknown method>] ; gcrRegs -[ecx] +[eax] mov esi, eax ...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.x86.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.windows.x86.checked.mch 0 0 0 0 -0 +0
benchmarks.run_tiered.windows.x86.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.windows.x86.checked.mch 3 2 0 1 -53 +0
libraries.crossgen2.windows.x86.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.x86.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.windows.x86.Release.mch 18 1 16 1 -12 +209
librariestestsnotieredcompilation.run.windows.x86.Release.mch 0 0 0 0 -0 +0
realworld.run.windows.x86.checked.mch 0 0 0 0 -0 +0
21 3 16 2 -65 +209

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x86.checked.mch 24,258 4 24,254 13 (0.05%) 230 (0.94%)
benchmarks.run_pgo.windows.x86.checked.mch 119,290 42,004 77,286 348 (0.29%) 573 (0.48%)
benchmarks.run_tiered.windows.x86.checked.mch 47,748 28,726 19,022 11 (0.02%) 159 (0.33%)
coreclr_tests.run.windows.x86.checked.mch 574,354 320,010 254,344 569 (0.10%) 1,053 (0.18%)
libraries.crossgen2.windows.x86.checked.mch 241,911 15 241,896 16 (0.01%) 16 (0.01%)
libraries.pmi.windows.x86.checked.mch 301,605 6 301,599 707 (0.23%) 2,627 (0.86%)
libraries_tests.run.windows.x86.Release.mch 631,790 429,177 202,613 2,910 (0.46%) 4,019 (0.63%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch 313,242 21,872 291,370 508 (0.16%) 2,513 (0.80%)
realworld.run.windows.x86.checked.mch 35,583 3 35,580 11 (0.03%) 399 (1.11%)
2,289,781 841,817 1,447,964 5,093 (0.22%) 11,589 (0.50%)

jit-analyze output

coreclr_tests.run.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 308593818 (overridden on cmd)
Total bytes of diff: 308593765 (overridden on cmd)
Total bytes of delta: -53 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -27 : 373234.dasm (-2.59 % of base)
         -26 : 370295.dasm (-2.50 % of base)

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

Top method improvements (bytes):
         -27 (-2.59 % of base) : 373234.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
         -26 (-2.50 % of base) : 370295.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

Top method improvements (percentages):
         -27 (-2.59 % of base) : 373234.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
         -26 (-2.50 % of base) : 370295.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

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


libraries_tests.run.windows.x86.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 184833802 (overridden on cmd)
Total bytes of diff: 184833999 (overridden on cmd)
Total bytes of delta: 197 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          33 : 29709.dasm (9.40 % of base)
          27 : 59650.dasm (7.42 % of base)
          17 : 67250.dasm (0.69 % of base)
          16 : 584215.dasm (5.54 % of base)
          15 : 74559.dasm (0.84 % of base)
          14 : 116486.dasm (2.93 % of base)
          14 : 364851.dasm (0.55 % of base)
          13 : 155416.dasm (2.99 % of base)
          13 : 545722.dasm (0.94 % of base)
          12 : 554234.dasm (1.04 % of base)
           8 : 557328.dasm (5.67 % of base)
           8 : 75668.dasm (0.54 % of base)
           7 : 300865.dasm (0.61 % of base)
           7 : 281788.dasm (0.61 % of base)
           3 : 359055.dasm (0.26 % of base)
           2 : 554101.dasm (0.57 % of base)

Top file improvements (bytes):
         -12 : 385379.dasm (-0.99 % of base)

17 total files with Code Size differences (1 improved, 16 regressed), 1 unchanged.

Top method regressions (bytes):
          33 (9.40 % of base) : 29709.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
          27 (7.42 % of base) : 59650.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
          17 (0.69 % of base) : 67250.dasm - Xunit.Sdk.TestInvoker`1+<<RunAsync>b__47_0>d[System.__Canon]:MoveNext():this (Tier1)
          16 (5.54 % of base) : 584215.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
          15 (0.84 % of base) : 74559.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel:GetDeclaredSymbolCore(Microsoft.CodeAnalysis.SyntaxNode,System.Threading.CancellationToken):Microsoft.CodeAnalysis.ISymbol:this (Tier1)
          14 (2.93 % of base) : 116486.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
          14 (0.55 % of base) : 364851.dasm - Xunit.Sdk.TestInvoker`1+<<RunAsync>b__47_0>d[System.__Canon]:MoveNext():this (Tier1)
          13 (2.99 % of base) : 155416.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
          13 (0.94 % of base) : 545722.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
          12 (1.04 % of base) : 554234.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
           8 (0.54 % of base) : 75668.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:LineBreaksAfter(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):int:this (Tier1)
           8 (5.67 % of base) : 557328.dasm - Xunit.Internal.ArgumentFormatter:SafeToMultiEnumerate(System.Collections.IEnumerable):ubyte (Tier1)
           7 (0.61 % of base) : 300865.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
           7 (0.61 % of base) : 281788.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
           3 (0.26 % of base) : 359055.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
           2 (0.57 % of base) : 554101.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1[System.__Canon]:SetGetter(System.Delegate):this (Tier1)

Top method improvements (bytes):
         -12 (-0.99 % of base) : 385379.dasm - System.Xml.Serialization.XmlSerializationWriter:WritePotentiallyReferencingElement(System.String,System.String,System.Object,System.Type,ubyte,ubyte):this (Tier1)

Top method regressions (percentages):
          33 (9.40 % of base) : 29709.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
          27 (7.42 % of base) : 59650.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
           8 (5.67 % of base) : 557328.dasm - Xunit.Internal.ArgumentFormatter:SafeToMultiEnumerate(System.Collections.IEnumerable):ubyte (Tier1)
          16 (5.54 % of base) : 584215.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
          13 (2.99 % of base) : 155416.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
          14 (2.93 % of base) : 116486.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
          12 (1.04 % of base) : 554234.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
          13 (0.94 % of base) : 545722.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
          15 (0.84 % of base) : 74559.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel:GetDeclaredSymbolCore(Microsoft.CodeAnalysis.SyntaxNode,System.Threading.CancellationToken):Microsoft.CodeAnalysis.ISymbol:this (Tier1)
          17 (0.69 % of base) : 67250.dasm - Xunit.Sdk.TestInvoker`1+<<RunAsync>b__47_0>d[System.__Canon]:MoveNext():this (Tier1)
           7 (0.61 % of base) : 300865.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
           7 (0.61 % of base) : 281788.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
           2 (0.57 % of base) : 554101.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1[System.__Canon]:SetGetter(System.Delegate):this (Tier1)
          14 (0.55 % of base) : 364851.dasm - Xunit.Sdk.TestInvoker`1+<<RunAsync>b__47_0>d[System.__Canon]:MoveNext():this (Tier1)
           8 (0.54 % of base) : 75668.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:LineBreaksAfter(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):int:this (Tier1)
           3 (0.26 % of base) : 359055.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)

Top method improvements (percentages):
         -12 (-0.99 % of base) : 385379.dasm - System.Xml.Serialization.XmlSerializationWriter:WritePotentiallyReferencingElement(System.String,System.String,System.Object,System.Type,ubyte,ubyte):this (Tier1)

17 total methods with Code Size differences (1 improved, 16 regressed).