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 : 75708.dasm (0.39 % of base)
           6 : 75223.dasm (1.38 % of base)
           4 : 179696.dasm (1.74 % of base)
           4 : 331642.dasm (0.73 % of base)
           4 : 200407.dasm (0.71 % of base)
           4 : 659581.dasm (0.85 % of base)
           4 : 59769.dasm (0.16 % of base)
           4 : 195416.dasm (0.33 % of base)
           4 : 726577.dasm (1.89 % of base)
           2 : 626940.dasm (0.12 % of base)
           2 : 74730.dasm (0.45 % of base)
           2 : 12511.dasm (0.45 % of base)
           2 : 661316.dasm (0.73 % of base)
           2 : 195339.dasm (0.18 % of base)
           2 : 601956.dasm (0.30 % 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 : 364851.dasm (0.55 % of base)
          14 : 116486.dasm (2.93 % 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 : 281788.dasm (0.61 % of base)
           7 : 300865.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) : 281788.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
           7 (0.61 % of base) : 300865.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) : 281788.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
           7 (0.61 % of base) : 300865.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).