Assembly Diffs

linux arm64

Diffs are based on 2,494,760 contexts (1,003,806 MinOpts, 1,490,954 FullOpts).

MISSED contexts: base: 4,060 (0.16%), diff: 10,457 (0.42%)

Overall (+80 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 80,916,664 +36
coreclr_tests.run.linux.arm64.checked.mch 508,918,764 -88
libraries_tests.run.linux.arm64.Release.mch 379,714,156 +132

FullOpts (+80 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 55,980,204 +36
coreclr_tests.run.linux.arm64.checked.mch 159,693,708 -88
libraries_tests.run.linux.arm64.Release.mch 164,417,016 +132

Example diffs

benchmarks.run_pgo.linux.arm64.checked.mch

+36 (+7.63%) : 128897.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)

@@ -10,54 +10,56 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  8,  6.00)     ref  ->  x19         this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-;  V01 loc0         [V01,T01] (  5,  3.00)     int  ->  x20        
-;  V02 loc1         [V02,T17] (  3,  0.00)     ref  ->  x21         class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V03 loc2         [V03,T03] (  7,  2.50)     int  ->  x21        
-;  V04 loc3         [V04,T11] (  7,  0.00)     int  ->   x2        
+;  V01 loc0         [V01,T02] (  5,  3.00)     int  ->  x20        
+;  V02 loc1         [V02,T19] (  3,  0.00)     ref  ->  x22         class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V03 loc2         [V03,T04] (  7,  2.50)     int  ->  x21        
+;  V04 loc3         [V04,T13] (  7,  0.00)     int  ->   x2        
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T23] (  3,  0.00)     ref  ->   x1         single-def "CASTCLASS eval op1"
-;  V07 tmp2         [V07,T26] (  3,  0.00)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V08 tmp3         [V08,T13] (  5,  0.00)     ref  ->  x21         class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V09 tmp4         [V09,T14] (  2,  0.00)     ref  ->   x4         class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
-;  V10 tmp5         [V10,T06] (  4,  2   )     int  ->  x20         "Inline return value spill temp"
-;  V11 tmp6         [V11,T08] (  3,  1.43)     ref  ->   x0         class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V12 tmp7         [V12,T09] (  3,  1.00)     ref  ->   x0         class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
-;  V13 tmp8         [V13,T05] (  2,  2.00)     ref  ->   x0         "CASTCLASS eval op1"
+;  V06 tmp1         [V06,T25] (  3,  0.00)     ref  ->   x1         single-def "CASTCLASS eval op1"
+;  V07 tmp2         [V07,T28] (  3,  0.00)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V08 tmp3         [V08,T15] (  5,  0.00)     ref  ->  x22         class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V09 tmp4         [V09,T16] (  2,  0.00)     ref  ->   x4         class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
+;  V10 tmp5         [V10,T08] (  4,  2   )     int  ->  x20         "Inline return value spill temp"
+;  V11 tmp6         [V11,T10] (  3,  1.43)     ref  ->   x0         class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V12 tmp7         [V12,T11] (  3,  1.00)     ref  ->   x0         class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+;  V13 tmp8         [V13,T07] (  2,  2.00)     ref  ->   x0         "CASTCLASS eval op1"
 ;* V14 tmp9         [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
-;  V15 tmp10        [V15,T07] (  4,  1.75)     ref  ->   x0         class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-;  V16 tmp11        [V16,T04] (  3,  2.00)     ref  ->   x0         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V17 tmp12        [V17,T10] (  4,  0.00)     int  ->   x2         "Inlining Arg"
-;  V18 tmp13        [V18,T27] (  3,  0   )     ref  ->   x0         "arr expr"
-;  V19 tmp14        [V19,T12] (  3,  0.00)     ref  ->   x1         "arr expr"
-;* V20 tmp15        [V20,T25] (  0,  0   )     ref  ->  zero-ref    "arr expr"
-;  V21 tmp16        [V21,T15] (  2,  0.00)     ref  ->   x0         "argument with side effect"
-;  V22 tmp17        [V22,T16] (  2,  0.00)     ref  ->   x1         "argument with side effect"
-;  V23 cse0         [V23,T20] (  3,  0.00)     int  ->   x0         "CSE - conservative"
-;  V24 cse1         [V24,T18] (  2,  0.00)     ref  ->   x1         "CSE - conservative"
-;  V25 cse2         [V25,T24] (  3,  0.00)     int  ->  x19         "CSE - conservative"
-;  V26 cse3         [V26,T21] (  3,  0.00)     int  ->   x3         "CSE - conservative"
-;  V27 cse4         [V27,T19] (  3,  0.00)   byref  ->   x1         "CSE - conservative"
-;  V28 cse5         [V28,T22] (  3,  0.00)     int  ->  x20         "CSE - conservative"
-;  V29 cse6         [V29,T02] (  3,  2.71)     ref  ->   x1         "CSE - aggressive"
+;  V15 tmp10        [V15,T09] (  4,  1.75)     ref  ->   x0         class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
+;  V16 tmp11        [V16,T06] (  3,  2.00)     ref  ->  x22         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V17 tmp12        [V17,T12] (  4,  0.00)     int  ->   x2         "Inlining Arg"
+;  V18 tmp13        [V18,T29] (  3,  0   )     ref  ->   x0         "arr expr"
+;  V19 tmp14        [V19,T14] (  3,  0.00)     ref  ->   x1         "arr expr"
+;* V20 tmp15        [V20,T27] (  0,  0   )     ref  ->  zero-ref    "arr expr"
+;  V21 tmp16        [V21,T17] (  2,  0.00)     ref  ->   x0         "argument with side effect"
+;  V22 tmp17        [V22,T18] (  2,  0.00)     ref  ->   x1         "argument with side effect"
+;  V23 cse0         [V23,T22] (  3,  0.00)     int  ->   x0         "CSE - conservative"
+;  V24 cse1         [V24,T20] (  2,  0.00)     ref  ->   x1         "CSE - conservative"
+;  V25 cse2         [V25,T26] (  3,  0.00)     int  ->  x21         "CSE - conservative"
+;  V26 cse3         [V26,T23] (  3,  0.00)     int  ->   x3         "CSE - conservative"
+;  V27 cse4         [V27,T21] (  3,  0.00)   byref  ->   x1         "CSE - conservative"
+;  V28 cse5         [V28,T24] (  3,  0.00)     int  ->  x19         "CSE - conservative"
+;  V29 cse6         [V29,T03] (  3,  2.71)     ref  ->   x1         "CSE - aggressive"
+;  V30 rat0         [V30,T05] (  3,  2.25)     ref  ->   x1         "Spilling to split statement for tree"
+;  V31 rat1         [V31,T01] (  5,  3.75)     ref  ->  x22         class-hnd "replacement local" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
 ;
-; Lcl frame size = 8
+; Lcl frame size = 0
 
 G_M41283_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x30]!
-            stp     x19, x20, [sp, #0x18]
-            str     x21, [sp, #0x28]
+            stp     x19, x20, [sp, #0x10]
+            stp     x21, x22, [sp, #0x20]
             mov     fp, sp
             mov     x19, x0
             ; gcrRegs +[x19]
                        ;; size=20 bbWeight=1 PerfScore 4.00
 G_M41283_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             bl      <unknown method>
-            cbz     w0, G_M41283_IG21
+            cbz     w0, G_M41283_IG24
             ldr     w1, [x19, #0x28]
-            tbnz    w1, #6, G_M41283_IG21
+            tbnz    w1, #6, G_M41283_IG24
             ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
-            cbz     x1, G_M41283_IG11
+            cbz     x1, G_M41283_IG14
                        ;; size=24 bbWeight=1 PerfScore 10.00
 G_M41283_IG03:        ; bbWeight=0.71, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
             movz    x0, #0xD1FFAB1E
@@ -65,17 +67,17 @@ G_M41283_IG03:        ; bbWeight=0.71, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
             movk    x0, #0xD1FFAB1E LSL #32
             bl      CORINFO_HELP_ISINSTANCEOFCLASS
             ; gcrRegs -[x1] +[x0]
-            cbnz    x0, G_M41283_IG22
+            cbnz    x0, G_M41283_IG25
             mov     w20, #1
                        ;; size=24 bbWeight=0.71 PerfScore 2.85
 G_M41283_IG04:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
-            cbz     w20, G_M41283_IG13
+            cbz     w20, G_M41283_IG16
                        ;; size=4 bbWeight=1 PerfScore 1.00
 G_M41283_IG05:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             mov     w21, wzr
             cmp     w20, #0
-            ble     G_M41283_IG13
+            ble     G_M41283_IG16
                        ;; size=12 bbWeight=0.50 PerfScore 1.00
 G_M41283_IG06:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x19, #0x08]
@@ -88,23 +90,42 @@ G_M41283_IG07:        ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            beq     G_M41283_IG12
+            beq     G_M41283_IG15
                        ;; size=24 bbWeight=0.25 PerfScore 1.50
 G_M41283_IG08:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
             ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
+            mov     x22, x1
+            ; gcrRegs +[x22]
+            cbz     x22, G_M41283_IG11
+                       ;; size=12 bbWeight=0.50 PerfScore 2.25
+G_M41283_IG09:        ; bbWeight=0.25, gcrefRegs=480002 {x1 x19 x22}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x22]
+            movz    x2, #0xD1FFAB1E
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #0xD1FFAB1E LSL #32
+            cmp     x0, x2
+            beq     G_M41283_IG11
+                       ;; size=24 bbWeight=0.25 PerfScore 1.50
+G_M41283_IG10:        ; bbWeight=0.13, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x22]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             bl      CORINFO_HELP_CHKCASTCLASS
             ; gcrRegs -[x1] +[x0]
-            ldr     w1, [x0, #0x10]
-            cmp     w21, w1
-            blo     G_M41283_IG10
-                       ;; size=32 bbWeight=0.50 PerfScore 5.00
-G_M41283_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0 x19]
+            mov     x22, x0
+            ; gcrRegs +[x22]
+                       ;; size=20 bbWeight=0.13 PerfScore 0.38
+G_M41283_IG11:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x0]
+            ldr     w0, [x22, #0x10]
+            cmp     w21, w0
+            blo     G_M41283_IG13
+                       ;; size=12 bbWeight=0.50 PerfScore 2.25
+G_M41283_IG12:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x19 x22]
             movz    x0, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -112,26 +133,27 @@ G_M41283_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             blr     x0
             brk_unix #0
                        ;; size=24 bbWeight=0 PerfScore 0.00
-G_M41283_IG10:        ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs +[x0 x19]
-            ldr     x0, [x0, #0x08]
+G_M41283_IG13:        ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs +[x19 x22]
+            ldr     x0, [x22, #0x08]
+            ; gcrRegs +[x0]
             ldr     w1, [x0, #0x08]
             cmp     w21, w1
-            bhs     G_M41283_IG20
+            bhs     G_M41283_IG23
             add     x0, x0, #16
             ; gcrRegs -[x0]
             ; byrRegs +[x0]
             ldr     x0, [x0, w21, UXTW #3]
             ; gcrRegs +[x0]
             ; byrRegs -[x0]
-            b       G_M41283_IG12
+            b       G_M41283_IG15
                        ;; size=28 bbWeight=0 PerfScore 0.00
-G_M41283_IG11:        ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
+G_M41283_IG14:        ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0 x22]
             mov     w20, wzr
             b       G_M41283_IG04
                        ;; size=8 bbWeight=0.29 PerfScore 0.43
-G_M41283_IG12:        ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG15:        ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this
             movk    x1, #0xD1FFAB1E LSL #16
@@ -144,47 +166,47 @@ G_M41283_IG12:        ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
             cmp     w21, w20
             blt     G_M41283_IG06
                        ;; size=36 bbWeight=0.50 PerfScore 5.25
-G_M41283_IG13:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG16:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldrb    w0, [x19, #0x2E]
             cmp     w0, #25
-            bne     G_M41283_IG21
+            bne     G_M41283_IG24
                        ;; size=12 bbWeight=1 PerfScore 4.50
-G_M41283_IG14:        ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG17:        ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
-            mov     x21, x1
-            ; gcrRegs +[x21]
-            cbnz    x21, G_M41283_IG18
+            mov     x22, x1
+            ; gcrRegs +[x22]
+            cbnz    x22, G_M41283_IG21
                        ;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG15:        ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG18:        ; bbWeight=0.00, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x1 x19]
             mov     w2, wzr
-            sub     w19, w20, #1
-            cmp     w19, #0
-            ble     G_M41283_IG21
+            sub     w21, w20, #1
+            cmp     w21, #0
+            ble     G_M41283_IG24
                        ;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG16:        ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
-            ldr     w0, [x21, #0x10]
+G_M41283_IG19:        ; bbWeight=0.00, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+            ldr     w0, [x22, #0x10]
             cmp     w2, w0
-            bhs     G_M41283_IG09
-            ldr     x1, [x21, #0x08]
+            bhs     G_M41283_IG12
+            ldr     x1, [x22, #0x08]
             ; gcrRegs +[x1]
             ldr     w3, [x1, #0x08]
             cmp     w2, w3
-            bhs     G_M41283_IG20
+            bhs     G_M41283_IG23
             add     x1, x1, #16
             ; gcrRegs -[x1]
             ; byrRegs +[x1]
             ldr     x4, [x1, w2, UXTW #3]
             ; gcrRegs +[x4]
-            add     w20, w2, #1
...

coreclr_tests.run.linux.arm64.checked.mch

-48 (-2.84%) : 425431.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

@@ -15,75 +15,74 @@
 ;  V03 loc1         [V03,T02] (  8,  5.61)     ref  ->  x23         class-hnd exact <Internal.TypeSystem.InstantiatedType>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [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,T35] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V07 tmp3         [V07,T34] (  2,  0.89)     ref  ->   x0         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-;  V08 tmp4         [V08,T17] (  3,  1.78)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V09 tmp5         [V09,T46] (  2,  0   )     ref  ->  x19         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2         [V06,T34] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V07 tmp3         [V07,T33] (  2,  0.89)     ref  ->   x0         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+;  V08 tmp4         [V08,T16] (  3,  1.78)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V09 tmp5         [V09,T45] (  2,  0   )     ref  ->  x19         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
 ;  V10 tmp6         [V10,T06] (  7,  5.04)     ref  ->  x24         class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
 ;  V11 tmp7         [V11,T05] ( 14,  5.11)     ref  ->  x22         "guarded devirt return temp"
 ;* V12 tmp8         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-;  V13 tmp9         [V13,T12] (  8,  2.51)     ref  ->  x25         "guarded devirt return temp"
+;  V13 tmp9         [V13,T11] (  8,  2.51)     ref  ->  x25         "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,T20] (  4,  1.66)     ref  ->  x27         "guarded devirt return temp"
+;  V15 tmp11        [V15,T19] (  4,  1.66)     ref  ->  x27         "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,T16] (  8,  2.04)     ref  ->  x23         "guarded devirt return temp"
+;  V17 tmp13        [V17,T15] (  8,  2.04)     ref  ->  x23         "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,T30] (  3,  1.11)     int  ->   x0        
-;  V21 tmp17        [V21,T23] (  3,  1.53)     ref  ->  x26         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;  V20 tmp16        [V20,T29] (  3,  1.11)     int  ->   x0        
+;  V21 tmp17        [V21,T22] (  3,  1.53)     ref  ->  x26         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,T36] (  3,  0.77)     ref  ->  x27         "guarded devirt return temp"
+;  V23 tmp19        [V23,T35] (  3,  0.77)     ref  ->  x27         "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,T39] (  3,  0.58)     ref  ->  x26         "guarded devirt return temp"
-;  V26 tmp22        [V26,T19] (  5,  1.75)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V25 tmp21        [V25,T38] (  3,  0.58)     ref  ->  x26         "guarded devirt return temp"
+;  V26 tmp22        [V26,T18] (  5,  1.75)     ref  ->   x0         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,T40] (  3,  0.55)     ref  ->  x27         "guarded devirt return temp"
-;  V29 tmp25        [V29,T22] (  5,  1.65)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V28 tmp24        [V28,T39] (  3,  0.55)     ref  ->  x27         "guarded devirt return temp"
+;  V29 tmp25        [V29,T21] (  5,  1.65)     ref  ->   x0         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,T10] (  5,  2.99)     ref  ->   x0         class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-;  V32 tmp28        [V32,T32] (  3,  1.00)     ref  ->  x27         "guarded devirt return temp"
+;  V31 tmp27        [V31,T09] (  5,  2.99)     ref  ->   x0         class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+;  V32 tmp28        [V32,T31] (  3,  1.00)     ref  ->  x27         "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,T03] (  5,  5.54)     ref  ->   x0         class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
 ;  V36 tmp32        [V36,T04] (  5,  5.54)     ref  ->   x0         class-hnd "spilling QMark2" <<unknown class>>
 ;* V37 tmp33        [V37    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
 ;  V38 tmp34        [V38,T07] (  4,  3.65)     ref  ->  x27         class-hnd exact single-def "impAppendStmt" <<unknown class>>
-;  V39 tmp35        [V39,T15] (  2,  2.22)     int  ->  x28         "impAppendStmt"
-;  V40 tmp36        [V40,T28] (  4,  1.11)     ref  ->   x0         "guarded devirt return temp"
+;  V39 tmp35        [V39,T14] (  2,  2.22)     int  ->  x28         "impAppendStmt"
+;  V40 tmp36        [V40,T27] (  4,  1.11)     ref  ->   x0         "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,T44] (  2,  0.06)   byref  ->  x28         single-def "impAppendStmt"
-;  V43 tmp39        [V43,T45] (  3,  0.03)     int  ->   x0         "guarded devirt return temp"
-;  V44 tmp40        [V44,T43] (  5,  0.09)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V42 tmp38        [V42,T43] (  2,  0.06)   byref  ->  x28         single-def "impAppendStmt"
+;  V43 tmp39        [V43,T44] (  3,  0.03)     int  ->   x0         "guarded devirt return temp"
+;  V44 tmp40        [V44,T42] (  5,  0.09)     ref  ->   x0         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,T29] (  3,  1.11)     ref  ->   x0         class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+;  V47 tmp43        [V47,T28] (  3,  1.11)     ref  ->   x0         class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
 ;* V48 tmp44        [V48    ] (  0,  0   )  struct (24) zero-ref    "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
 ;  V49 tmp45        [V49    ] (  2,  0.95)     ref  ->  [fp+0x28]  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,T18] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-;  V51 tmp47        [V51,T11] (  4,  2.85)     ref  ->   x0         class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-;  V52 tmp48        [V52,T33] (  3,  0.89)     int  ->   x0        
-;  V53 tmp49        [V53,T27] (  3,  1.23)     ref  ->  x27         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V50 tmp46        [V50,T17] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+;  V51 tmp47        [V51,T10] (  3,  2.68)     ref  ->   x0         class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+;  V52 tmp48        [V52,T32] (  3,  0.89)     int  ->   x0        
+;  V53 tmp49        [V53,T26] (  3,  1.23)     ref  ->  x27         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,T38] (  3,  0.62)     ref  ->   x1         "guarded devirt return temp"
+;  V55 tmp51        [V55,T37] (  3,  0.62)     ref  ->   x1         "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,T41] (  3,  0.47)     ref  ->  x27         "guarded devirt return temp"
-;  V58 tmp54        [V58,T24] (  5,  1.40)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V57 tmp53        [V57,T40] (  3,  0.47)     ref  ->  x27         "guarded devirt return temp"
+;  V58 tmp54        [V58,T23] (  5,  1.40)     ref  ->   x0         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,T42] (  3,  0.44)     ref  ->   x1         "guarded devirt return temp"
-;  V61 tmp57        [V61,T25] (  5,  1.33)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V60 tmp56        [V60,T41] (  3,  0.44)     ref  ->   x1         "guarded devirt return temp"
+;  V61 tmp57        [V61,T24] (  5,  1.33)     ref  ->   x0         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,T14] (  8,  2.38)     ref  ->  x22         single-def "field V37._typicalMethodDef (fldOffset=0x0)" P-INDEP
-;  V64 tmp60        [V64,T13] (  8,  2.42)     ref  ->  x23         single-def "field V37._instantiatedType (fldOffset=0x8)" P-INDEP
-;  V65 tmp61        [V65,T26] (  3,  1.27)     int  ->  x20         single-def "field V37._hashcode (fldOffset=0x10)" P-INDEP
+;  V63 tmp59        [V63,T13] (  8,  2.38)     ref  ->  x22         single-def "field V37._typicalMethodDef (fldOffset=0x0)" P-INDEP
+;  V64 tmp60        [V64,T12] (  8,  2.42)     ref  ->  x23         single-def "field V37._instantiatedType (fldOffset=0x8)" P-INDEP
+;  V65 tmp61        [V65,T25] (  3,  1.27)     int  ->  x20         single-def "field V37._hashcode (fldOffset=0x10)" 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=0x8)" P-INDEP
 ;* V68 tmp64        [V68    ] (  0,  0   )     int  ->  zero-ref    single-def "field V48._hashcode (fldOffset=0x10)" P-INDEP
 ;  V69 tmp65        [V69    ] (  8,  5.74)  struct (24) [fp+0x10]  do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-;* V70 tmp66        [V70,T31] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V71 tmp67        [V71,T37] (  2,  0.65)     ref  ->   x0         single-def "argument with side effect"
-;  V72 cse0         [V72,T21] (  3,  1.66)     ref  ->   x0         "CSE - moderate"
+;* V70 tmp66        [V70,T30] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;  V71 tmp67        [V71,T36] (  2,  0.65)     ref  ->   x0         single-def "argument with side effect"
+;  V72 cse0         [V72,T20] (  3,  1.66)     ref  ->   x0         "CSE - moderate"
 ;  V73 cse1         [V73,T08] (  6,  4.11)    long  ->  x21         "CSE - aggressive"
-;  V74 rat0         [V74,T09] (  6,  3.57)     ref  ->   x2         class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
 ;
 ; Lcl frame size = 32
 
@@ -143,7 +142,7 @@ G_M10698_IG07:        ; bbWeight=0.55, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs
             ; gcrRegs +[x24]
             ldr     x0, [x22]
             cmp     x0, x21
-            bne     G_M10698_IG49
+            bne     G_M10698_IG34
             ldr     x25, [x22, #0x10]
             ; gcrRegs +[x25]
                        ;; size=20 bbWeight=0.55 PerfScore 5.82
@@ -159,7 +158,7 @@ G_M10698_IG10:        ; bbWeight=0.38, gcrefRegs=3C80000 {x19 x22 x23 x24 x25},
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x0, x1
-            bne     G_M10698_IG37
+            bne     G_M10698_IG38
                        ;; size=24 bbWeight=0.38 PerfScore 2.30
 G_M10698_IG11:        ; bbWeight=0.29, gcrefRegs=3C80000 {x19 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x24, #0x58]
@@ -169,10 +168,10 @@ G_M10698_IG11:        ; bbWeight=0.29, gcrefRegs=3C80000 {x19 x22 x23 x24 x25},
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG50
+            bne     G_M10698_IG35
             ldr     x26, [x0, #0x08]
             ; gcrRegs +[x26]
-            b       G_M10698_IG35
+            b       G_M10698_IG36
                        ;; size=36 bbWeight=0.29 PerfScore 3.78
 G_M10698_IG12:        ; bbWeight=0.38, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0 x22-x26] +[x20]
@@ -217,7 +216,7 @@ G_M10698_IG15:        ; bbWeight=0.50, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG52
+            bne     G_M10698_IG48
             ldr     x27, [x0, #0x08]
             ; gcrRegs +[x27]
                        ;; size=36 bbWeight=0.50 PerfScore 7.48
@@ -264,10 +263,10 @@ G_M10698_IG17:        ; bbWeight=0.55, gcrefRegs=8C00000 {x22 x23 x27}, byrefReg
             ldr     w28, [x23, #0x68]
             ldr     x0, [x22]
             cmp     x0, x21
-            bne     G_M10698_IG55
+            bne     G_M10698_IG51
             ldr     x0, [x22, #0x20]
             ; gcrRegs +[x0]
-            cbz     x0, G_M10698_IG54
+            cbz     x0, G_M10698_IG50
                        ;; size=24 bbWeight=0.55 PerfScore 6.37
 G_M10698_IG18:        ; bbWeight=0.55, gcrefRegs=8C00001 {x0 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
             movz    x1, #0xD1FFAB1E      // code for Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int
@@ -290,7 +289,7 @@ G_M10698_IG18:        ; bbWeight=0.55, gcrefRegs=8C00001 {x0 x22 x23 x27}, byref
             ldr     x3, [x3]
             blr     x3
             ; gcrRegs -[x0]
-            cbz     w0, G_M10698_IG44
+            cbz     w0, G_M10698_IG40
                        ;; size=72 bbWeight=0.55 PerfScore 10.53
 G_M10698_IG19:        ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x22-x23 x27]
@@ -317,7 +316,7 @@ G_M10698_IG21:        ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=8C0
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG53
+            bne     G_M10698_IG49
             movz    x1, #0xD1FFAB1E      // code for Internal.TypeSystem.Ecma.EcmaType:GetHashCode():int:this
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
@@ -352,13 +351,13 @@ G_M10698_IG23:        ; bbWeight=0.45, gcrefRegs=580000 {x19 x20 x22}, byrefRegs
             beq     G_M10698_IG32
             ldr     x0, [x22]
             cmp     x0, x21
-            bne     G_M10698_IG59
+            bne     G_M10698_IG55
             ldr     x23, [x22, #0x10]
             ; gcrRegs +[x23]
                        ;; size=40 bbWeight=0.45 PerfScore 6.02
 G_M10698_IG24:        ; bbWeight=0.45, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x19]
-            cbz     x23, G_M10698_IG45
+            cbz     x23, G_M10698_IG41
                        ;; size=4 bbWeight=0.45 PerfScore 0.45
 G_M10698_IG25:        ; bbWeight=0.31, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x20]
@@ -366,7 +365,7 @@ G_M10698_IG25:        ; bbWeight=0.31, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x0, x1
-            bne     G_M10698_IG47
+            bne     G_M10698_IG45
                        ;; size=24 bbWeight=0.31 PerfScore 1.85
 G_M10698_IG26:        ; bbWeight=0.23, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x20, #0x58]
@@ -376,7 +375,7 @@ G_M10698_IG26:        ; bbWeight=0.23, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG60
+            bne     G_M10698_IG56
             ldr     x27, [x0, #0x08]
             ; gcrRegs +[x27]
                        ;; size=32 bbWeight=0.23 PerfScore 2.81
@@ -387,7 +386,7 @@ G_M10698_IG27:        ; bbWeight=0.31, gcrefRegs=8D00000 {x20 x22 x23 x27}, byre
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x0, x1
-            bne     G_M10698_IG46
+            bne     G_M10698_IG44
                        ;; size=24 bbWeight=0.31 PerfScore 1.85
 G_M10698_IG28:        ; bbWeight=0.22, gcrefRegs=8D00000 {x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x23, #0x58]
@@ -397,7 +396,7 @@ G_M10698_IG28:        ; bbWeight=0.22, gcrefRegs=8D00000 {x20 x22 x23 x27}, byre
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG48
+            bne     G_M10698_IG46
             ldr     x1, [x0, #0x08]
             ; gcrRegs +[x1]
                        ;; size=32 bbWeight=0.22 PerfScore 2.66
@@ -442,20 +441,6 @@ G_M10698_IG32:        ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=180
             ldr     x1, [x1, #0x18]
             blr     x1
             ldrsb   wzr, [x0]
-            mov     x2, x0
-            ; gcrRegs +[x2]
-            cbz     x2, G_M10698_IG40
-                       ;; size=32 bbWeight=0.45 PerfScore 6.69
-G_M10698_IG33:        ; bbWeight=0.22, gcrefRegs=180005 {x0 x2 x19 x20}, byrefRegs=0000 {}, byref, isz
-            ldr     x1, [x2]
-            movz    x2, #0xD1FFAB1E
-            ; gcrRegs -[x2]
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
...

-40 (-2.30%) : 416664.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

@@ -15,90 +15,89 @@
 ;  V03 loc1         [V03,T06] (  5,  3.59)     ref  ->  x22         class-hnd exact <Internal.TypeSystem.InstantiatedType>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [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,T37] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V07 tmp3         [V07,T36] (  2,  0.91)     ref  ->   x0         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-;  V08 tmp4         [V08,T18] (  3,  1.83)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V09 tmp5         [V09,T48] (  2,  0   )     ref  ->  x19         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2         [V06,T36] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V07 tmp3         [V07,T35] (  2,  0.91)     ref  ->   x0         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+;  V08 tmp4         [V08,T17] (  3,  1.83)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V09 tmp5         [V09,T47] (  2,  0   )     ref  ->  x19         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
 ;  V10 tmp6         [V10,T04] (  7,  4.81)     ref  ->  x23         class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
-;  V11 tmp7         [V11,T16] (  3,  2   )     ref  ->  x21         "guarded devirt return temp"
+;  V11 tmp7         [V11,T15] (  3,  2   )     ref  ->  x21         "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.36)     ref  ->  x25         "guarded devirt return temp"
+;  V13 tmp9         [V13,T11] (  8,  2.36)     ref  ->  x25         "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,T23] (  4,  1.63)     ref  ->  x26         "guarded devirt return temp"
+;  V15 tmp11        [V15,T22] (  4,  1.63)     ref  ->  x26         "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  ->  x25         "guarded devirt return temp"
+;  V17 tmp13        [V17,T14] (  8,  2.02)     ref  ->  x25         "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    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V21 tmp17        [V21    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V22 tmp18        [V22,T29] (  2,  0.74)     int  ->   x0        
-;  V23 tmp19        [V23,T27] (  3,  1.56)     ref  ->  x20         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;  V22 tmp18        [V22,T28] (  2,  0.74)     int  ->   x0        
+;  V23 tmp19        [V23,T26] (  3,  1.56)     ref  ->  x20         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
 ;* V24 tmp20        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V25 tmp21        [V25,T38] (  3,  0.74)     ref  ->  x26         "guarded devirt return temp"
+;  V25 tmp21        [V25,T37] (  3,  0.74)     ref  ->  x26         "guarded devirt return temp"
 ;* V26 tmp22        [V26    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V27 tmp23        [V27,T40] (  3,  0.70)     ref  ->  x20         "guarded devirt return temp"
-;  V28 tmp24        [V28,T17] (  5,  2.00)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V27 tmp23        [V27,T39] (  3,  0.70)     ref  ->  x20         "guarded devirt return temp"
+;  V28 tmp24        [V28,T16] (  5,  2.00)     ref  ->   x0         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,T41] (  3,  0.70)     ref  ->  x26         "guarded devirt return temp"
-;  V31 tmp27        [V31,T14] (  5,  2.09)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V30 tmp26        [V30,T40] (  3,  0.70)     ref  ->  x26         "guarded devirt return temp"
+;  V31 tmp27        [V31,T13] (  5,  2.09)     ref  ->   x0         single-def "guarded devirt arg 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   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V34 tmp30        [V34    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V35 tmp31        [V35    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V36 tmp32        [V36    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V37 tmp33        [V37,T09] (  5,  3.03)     ref  ->   x0         class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-;  V38 tmp34        [V38,T35] (  3,  1.01)     ref  ->  x26         "guarded devirt return temp"
+;  V37 tmp33        [V37,T08] (  5,  3.03)     ref  ->   x0         class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+;  V38 tmp34        [V38,T34] (  3,  1.01)     ref  ->  x26         "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,T25] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V42 tmp38        [V42,T26] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;* V41 tmp37        [V41,T24] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
+;* V42 tmp38        [V42,T25] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
 ;* V43 tmp39        [V43    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
 ;  V44 tmp40        [V44,T05] (  4,  3.61)     ref  ->  x26         class-hnd exact single-def "impAppendStmt" <<unknown class>>
 ;* V45 tmp41        [V45    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V46 tmp42        [V46    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V47 tmp43        [V47    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V48 tmp44        [V48    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V49 tmp45        [V49,T13] (  2,  2.17)     int  ->  x28         "impAppendStmt"
-;  V50 tmp46        [V50,T31] (  4,  1.09)     ref  ->   x0         "guarded devirt return temp"
+;  V49 tmp45        [V49,T12] (  2,  2.17)     int  ->  x28         "impAppendStmt"
+;  V50 tmp46        [V50,T30] (  4,  1.09)     ref  ->   x0         "guarded devirt return temp"
 ;* V51 tmp47        [V51    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-;  V52 tmp48        [V52,T46] (  2,  0.07)   byref  ->  x27         single-def "impAppendStmt"
-;  V53 tmp49        [V53,T47] (  3,  0.03)     int  ->   x0         "guarded devirt return temp"
-;  V54 tmp50        [V54,T45] (  5,  0.10)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V52 tmp48        [V52,T45] (  2,  0.07)   byref  ->  x27         single-def "impAppendStmt"
+;  V53 tmp49        [V53,T46] (  3,  0.03)     int  ->   x0         "guarded devirt return temp"
+;  V54 tmp50        [V54,T44] (  5,  0.10)     ref  ->   x0         single-def "guarded devirt arg temp"
 ;* V55 tmp51        [V55    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
 ;* V56 tmp52        [V56    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V57 tmp53        [V57,T32] (  3,  1.09)     ref  ->   x0         class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+;  V57 tmp53        [V57,T31] (  3,  1.09)     ref  ->   x0         class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
 ;* V58 tmp54        [V58    ] (  0,  0   )  struct (24) zero-ref    "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
 ;  V59 tmp55        [V59    ] (  2,  0.91)     ref  ->  [fp+0x28]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V60 tmp56        [V60,T19] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-;  V61 tmp57        [V61,T10] (  4,  2.96)     ref  ->   x0         class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-;  V62 tmp58        [V62,T34] (  2,  0.62)     int  ->   x0        
-;  V63 tmp59        [V63,T28] (  3,  1.31)     ref  ->  x26         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V60 tmp56        [V60,T18] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+;  V61 tmp57        [V61,T09] (  3,  2.74)     ref  ->   x0         class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+;  V62 tmp58        [V62,T33] (  2,  0.62)     int  ->   x0        
+;  V63 tmp59        [V63,T27] (  3,  1.31)     ref  ->  x26         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
 ;* V64 tmp60        [V64    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V65 tmp61        [V65,T42] (  3,  0.62)     ref  ->  x27         "guarded devirt return temp"
+;  V65 tmp61        [V65,T41] (  3,  0.62)     ref  ->  x27         "guarded devirt return temp"
 ;* V66 tmp62        [V66    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V67 tmp63        [V67,T43] (  3,  0.59)     ref  ->  x26         "guarded devirt return temp"
-;  V68 tmp64        [V68,T22] (  5,  1.69)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V67 tmp63        [V67,T42] (  3,  0.59)     ref  ->  x26         "guarded devirt return temp"
+;  V68 tmp64        [V68,T21] (  5,  1.69)     ref  ->   x0         single-def "guarded devirt arg temp"
 ;* V69 tmp65        [V69    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-;  V70 tmp66        [V70,T44] (  3,  0.59)     ref  ->  x27         "guarded devirt return temp"
-;  V71 tmp67        [V71,T21] (  5,  1.76)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V70 tmp66        [V70,T43] (  3,  0.59)     ref  ->  x27         "guarded devirt return temp"
+;  V71 tmp67        [V71,T20] (  5,  1.76)     ref  ->   x0         single-def "guarded devirt arg temp"
 ;* V72 tmp68        [V72    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
 ;* V73 tmp69        [V73    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V74 tmp70        [V74    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V75 tmp71        [V75    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V76 tmp72        [V76    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V77 tmp73        [V77,T20] (  6,  1.80)     ref  ->  x21         single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
-;  V78 tmp74        [V78,T11] (  8,  2.40)     ref  ->  x22         single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
-;  V79 tmp75        [V79,T30] (  3,  1.26)     int  ->  x24         single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
+;  V77 tmp73        [V77,T19] (  6,  1.80)     ref  ->  x21         single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
+;  V78 tmp74        [V78,T10] (  8,  2.40)     ref  ->  x22         single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
+;  V79 tmp75        [V79,T29] (  3,  1.26)     int  ->  x24         single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
 ;* V80 tmp76        [V80    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V58._typicalMethodDef (fldOffset=0x0)" P-INDEP
 ;* V81 tmp77        [V81    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V58._instantiatedType (fldOffset=0x8)" P-INDEP
 ;* V82 tmp78        [V82    ] (  0,  0   )     int  ->  zero-ref    single-def "field V58._hashcode (fldOffset=0x10)" P-INDEP
 ;  V83 tmp79        [V83    ] (  8,  5.75)  struct (24) [fp+0x10]  do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-;* V84 tmp80        [V84,T33] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V85 tmp81        [V85,T39] (  2,  0.71)     ref  ->   x0         single-def "argument with side effect"
-;  V86 cse0         [V86,T24] (  3,  1.63)     ref  ->   x0         "CSE - moderate"
+;* V84 tmp80        [V84,T32] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;  V85 tmp81        [V85,T38] (  2,  0.71)     ref  ->   x0         single-def "argument with side effect"
+;  V86 cse0         [V86,T23] (  3,  1.63)     ref  ->   x0         "CSE - moderate"
 ;  V87 cse1         [V87,T00] ( 18,  9.26)     ref  ->   x1         multi-def "CSE - aggressive"
-;  V88 cse2         [V88,T08] ( 10,  3.63)    long  ->  x24         multi-def "CSE - aggressive"
-;  V89 rat0         [V89,T07] (  6,  3.66)     ref  ->   x2         class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
+;  V88 cse2         [V88,T07] ( 10,  3.63)    long  ->  x24         multi-def "CSE - aggressive"
 ;
 ; Lcl frame size = 32
 
@@ -152,7 +151,7 @@ G_M10698_IG06:        ; bbWeight=0.54, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             cmp     x24, x0
-            bne     G_M10698_IG55
+            bne     G_M10698_IG49
             b       G_M10698_IG08
                        ;; size=32 bbWeight=0.54 PerfScore 5.43
 G_M10698_IG07:        ; bbWeight=0.47, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
@@ -194,7 +193,7 @@ G_M10698_IG12:        ; bbWeight=0.33, gcrefRegs=2E80000 {x19 x21 x22 x23 x25},
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG56
+            bne     G_M10698_IG50
             ldr     x20, [x0, #0x08]
             ; gcrRegs +[x20]
                        ;; size=32 bbWeight=0.33 PerfScore 4.00
@@ -215,7 +214,7 @@ G_M10698_IG14:        ; bbWeight=0.35, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x2
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG57
+            bne     G_M10698_IG51
             ldr     x26, [x0, #0x08]
             ; gcrRegs +[x26]
                        ;; size=32 bbWeight=0.35 PerfScore 4.18
@@ -296,7 +295,7 @@ G_M10698_IG21:        ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG58
+            bne     G_M10698_IG52
             ldr     x26, [x0, #0x08]
             ; gcrRegs +[x26]
                        ;; size=36 bbWeight=0.50 PerfScore 7.57
@@ -364,10 +363,10 @@ G_M10698_IG26:        ; bbWeight=0.54, gcrefRegs=4600000 {x21 x22 x26}, byrefReg
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             cmp     x24, x0
-            bne     G_M10698_IG61
+            bne     G_M10698_IG54
             ldr     x0, [x21, #0x20]
             ; gcrRegs +[x0]
-            cbz     x0, G_M10698_IG59
+            cbz     x0, G_M10698_IG43
                        ;; size=32 bbWeight=0.54 PerfScore 5.43
 G_M10698_IG27:        ; bbWeight=0.54, gcrefRegs=4600001 {x0 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
             movz    x1, #0xD1FFAB1E      // code for Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int
@@ -419,7 +418,7 @@ G_M10698_IG30:        ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=380
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             cmp     x24, x0
-            bne     G_M10698_IG51
+            bne     G_M10698_IG58
             ldr     x25, [x21, #0x10]
             ; gcrRegs +[x25]
                        ;; size=52 bbWeight=0.46 PerfScore 6.86
@@ -433,7 +432,7 @@ G_M10698_IG32:        ; bbWeight=0.31, gcrefRegs=2300000 {x20 x21 x25}, byrefReg
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x0, x1
-            bne     G_M10698_IG53
+            bne     G_M10698_IG47
                        ;; size=24 bbWeight=0.31 PerfScore 1.87
 G_M10698_IG33:        ; bbWeight=0.28, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x20, #0x58]
@@ -443,7 +442,7 @@ G_M10698_IG33:        ; bbWeight=0.28, gcrefRegs=2300000 {x20 x21 x25}, byrefReg
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG52
+            bne     G_M10698_IG59
             ldr     x26, [x0, #0x08]
             ; gcrRegs +[x26]
                        ;; size=32 bbWeight=0.28 PerfScore 3.37
@@ -454,7 +453,7 @@ G_M10698_IG34:        ; bbWeight=0.31, gcrefRegs=6300000 {x20 x21 x25 x26}, byre
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x0, x1
-            bne     G_M10698_IG54
+            bne     G_M10698_IG48
                        ;; size=24 bbWeight=0.31 PerfScore 1.87
 G_M10698_IG35:        ; bbWeight=0.29, gcrefRegs=6300000 {x20 x21 x25 x26}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x25, #0x58]
@@ -464,7 +463,7 @@ G_M10698_IG35:        ; bbWeight=0.29, gcrefRegs=6300000 {x20 x21 x25 x26}, byre
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG63
+            bne     G_M10698_IG60
             ldr     x27, [x0, #0x08]
             ; gcrRegs +[x27]
                        ;; size=32 bbWeight=0.29 PerfScore 3.52
@@ -526,20 +525,6 @@ G_M10698_IG41:        ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=180
             ldr     x1, [x1, #0x18]
             blr     x1
             ldrsb   wzr, [x0]
-            mov     x2, x0
-            ; gcrRegs +[x2]
-            cbz     x2, G_M10698_IG48
-                       ;; size=32 bbWeight=0.46 PerfScore 6.86
-G_M10698_IG42:        ; bbWeight=0.23, gcrefRegs=180005 {x0 x2 x19 x20}, byrefRegs=0000 {}, byref, isz
-            ldr     x1, [x2]
-            movz    x2, #0xD1FFAB1E
-            ; gcrRegs -[x2]
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            cmp     x1, x2
-            beq     G_M10698_IG47
-                       ;; size=24 bbWeight=0.23 PerfScore 1.37
-G_M10698_IG43:        ; bbWeight=0.11, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
             mov     x1, x0
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
@@ -548,12 +533,40 @@ G_M10698_IG43:        ; bbWeight=0.11, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=
             movk    x0, #0xD1FFAB1E LSL #32
             bl      CORINFO_HELP_ISINSTANCEOFCLASS
...

libraries_tests.run.linux.arm64.Release.mch

-8 (-0.61%) : 176599.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:g_tryCalculateRequiredMembers|1910(byref):ubyte:this (Tier1)

@@ -15,7 +15,7 @@
 ;  V03 loc1         [V03,T29] (  3,  1.07)   ubyte  ->  x24        
 ;* V04 loc2         [V04    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbol]>
 ;* V05 loc3         [V05    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]>
-;  V06 loc4         [V06,T01] ( 13, 81.29)     ref  ->  x28         class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+;  V06 loc4         [V06,T01] ( 13, 81.07)     ref  ->  x28         class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
 ;  V07 loc5         [V07,T06] (  8, 39.13)     ref  ->  x21         class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol>
 ;  V08 loc6         [V08,T14] (  2,  0.10)     ref  ->  x19         ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
 ;  V09 loc7         [V09,T38] (  4,  0   )     ref  ->   x0         class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
@@ -108,7 +108,7 @@ G_M20484_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20
             movk    x22, #0xD1FFAB1E LSL #16
             movk    x22, #0xD1FFAB1E LSL #32
             cmp     x21, x22
-            bne     G_M20484_IG51
+            bne     G_M20484_IG52
             ldr     x0, [x19, #0x60]
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E
@@ -117,7 +117,7 @@ G_M20484_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20
             ldr     x1, [x1]
             ; gcrRegs +[x1]
             cmp     x0, x1
-            beq     G_M20484_IG27
+            beq     G_M20484_IG41
                        ;; size=56 bbWeight=1 PerfScore 16.00
 G_M20484_IG03:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
             ; gcrRegs -[x0-x1]
@@ -132,11 +132,11 @@ G_M20484_IG04:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {
             ldr     x1, [x1]
             blr     x1
             ; gcrRegs -[x0]
-            cbnz    w0, G_M20484_IG48
+            cbnz    w0, G_M20484_IG46
                        ;; size=28 bbWeight=1 PerfScore 7.50
 G_M20484_IG05:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
             cmp     x21, x22
-            bne     G_M20484_IG32
+            bne     G_M20484_IG44
                        ;; size=8 bbWeight=1 PerfScore 1.50
 G_M20484_IG06:        ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
             ldr     x0, [x19, #0x60]
@@ -147,7 +147,7 @@ G_M20484_IG06:        ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=100000 {
             ldr     x1, [x1]
             ; gcrRegs +[x1]
             cmp     x0, x1
-            beq     G_M20484_IG24
+            beq     G_M20484_IG42
                        ;; size=28 bbWeight=0.96 PerfScore 8.64
 G_M20484_IG07:        ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
             ; gcrRegs -[x0-x1]
@@ -155,7 +155,7 @@ G_M20484_IG07:        ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=100000 {
             ; gcrRegs +[x0]
                        ;; size=4 bbWeight=0.96 PerfScore 2.88
 G_M20484_IG08:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref, isz
-            cbz     x0, G_M20484_IG20
+            cbz     x0, G_M20484_IG40
                        ;; size=4 bbWeight=1 PerfScore 1.00
 G_M20484_IG09:        ; bbWeight=0.84, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref
             movz    x1, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:get_AllRequiredMembers():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.String,Microsoft.CodeAnalysis.CSharp.Symbol]:this
@@ -169,7 +169,7 @@ G_M20484_IG09:        ; bbWeight=0.84, gcrefRegs=80001 {x0 x19}, byrefRegs=10000
 G_M20484_IG10:        ; bbWeight=1, gcrefRegs=880000 {x19 x23}, byrefRegs=100000 {x20}, byref, isz
             ; gcrRegs -[x0]
             cmp     x21, x22
-            bne     G_M20484_IG46
+            bne     G_M20484_IG43
             mov     x0, x19
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_HasDeclaredRequiredMembers():ubyte:this
@@ -181,7 +181,7 @@ G_M20484_IG10:        ; bbWeight=1, gcrefRegs=880000 {x19 x23}, byrefRegs=100000
             sxtw    w24, w0
             ldr     x0, [x19, #0x50]
             ; gcrRegs +[x0]
-            cbz     x0, G_M20484_IG16
+            cbz     x0, G_M20484_IG39
                        ;; size=44 bbWeight=1 PerfScore 12.00
 G_M20484_IG11:        ; bbWeight=0.93, gcrefRegs=880000 {x19 x23}, byrefRegs=100000 {x20}, byref
             ; gcrRegs -[x0]
@@ -196,7 +196,7 @@ G_M20484_IG12:        ; bbWeight=1, gcrefRegs=800001 {x0 x23}, byrefRegs=100000
             mov     w2, wzr
             mov     w27, wzr
             cmp     w25, #0
-            ble     G_M20484_IG34
+            ble     G_M20484_IG28
                        ;; size=24 bbWeight=1 PerfScore 6.00
 G_M20484_IG13:        ; bbWeight=14.75, gcrefRegs=4800000 {x23 x26}, byrefRegs=100000 {x20}, byref, isz
             ; gcrRegs -[x0]
@@ -206,7 +206,7 @@ G_M20484_IG13:        ; bbWeight=14.75, gcrefRegs=4800000 {x23 x26}, byrefRegs=1
             ; gcrRegs +[x28]
             mov     x22, x28
             ; gcrRegs +[x22]
-            cbz     x22, G_M20484_IG22
+            cbz     x22, G_M20484_IG16
                        ;; size=16 bbWeight=14.75 PerfScore 73.76
 G_M20484_IG14:        ; bbWeight=7.38, gcrefRegs=14C00000 {x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref, isz
             ; byrRegs -[x1]
@@ -215,46 +215,32 @@ G_M20484_IG14:        ; bbWeight=7.38, gcrefRegs=14C00000 {x22 x23 x26 x28}, byr
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             cmp     x1, x0
-            beq     G_M20484_IG21
+            bne     G_M20484_IG26
                        ;; size=24 bbWeight=7.38 PerfScore 44.26
-G_M20484_IG15:        ; bbWeight=2.66, gcrefRegs=14800000 {x23 x26 x28}, byrefRegs=100000 {x20}, byref
+G_M20484_IG15:        ; bbWeight=4.94, gcrefRegs=14800000 {x23 x26 x28}, byrefRegs=100000 {x20}, byref
             ; gcrRegs -[x22]
-            mov     x1, x28
-            ; gcrRegs +[x1]
-            movz    x0, #0xD1FFAB1E
-            movk    x0, #0xD1FFAB1E LSL #16
-            movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFCLASS
-            ; gcrRegs -[x1] +[x0]
-            mov     x22, x0
+            mov     x22, xzr
             ; gcrRegs +[x22]
-            b       G_M20484_IG22
-                       ;; size=28 bbWeight=2.66 PerfScore 11.95
-G_M20484_IG16:        ; bbWeight=0.19, gcrefRegs=880000 {x19 x23}, byrefRegs=100000 {x20}, byref
-            ; gcrRegs -[x0 x22 x26 x28] +[x19]
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            movz    x1, #0xD1FFAB1E      // code for <unknown method>
+                       ;; size=4 bbWeight=4.94 PerfScore 2.47
+G_M20484_IG16:        ; bbWeight=14.75, gcrefRegs=14C00000 {x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref, isz
+            mov     x21, x22
+            ; gcrRegs +[x21]
+            cbnz    x21, G_M20484_IG24
+                       ;; size=8 bbWeight=14.75 PerfScore 22.13
+G_M20484_IG17:        ; bbWeight=14.75, gcrefRegs=14C00000 {x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref, isz
+            ; gcrRegs -[x21]
+            ldr     x0, [x28]
+            movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            ldr     x1, [x1]
-            blr     x1
-            ; gcrRegs -[x0]
-            b       G_M20484_IG11
-                       ;; size=28 bbWeight=0.19 PerfScore 1.36
-G_M20484_IG17:        ; bbWeight=4.87, gcrefRegs=14C00000 {x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref
-            ; gcrRegs -[x19] +[x22 x26 x28]
-            mov     x0, x28
-            ; gcrRegs +[x0]
-            ldr     x1, [x28]
-            ldr     x1, [x1, #0x50]
-            ldr     x1, [x1, #0x28]
-            blr     x1
-            mov     x1, x0
+            cmp     x0, x1
+            bne     G_M20484_IG30
+                       ;; size=24 bbWeight=14.75 PerfScore 88.52
+G_M20484_IG18:        ; bbWeight=9.88, gcrefRegs=14C00000 {x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref
+            ldr     x1, [x28, #0x18]
             ; gcrRegs +[x1]
-                       ;; size=24 bbWeight=4.87 PerfScore 53.55
-G_M20484_IG18:        ; bbWeight=14.75, gcrefRegs=14C00002 {x1 x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref, isz
-            ; gcrRegs -[x0]
+                       ;; size=4 bbWeight=9.88 PerfScore 29.65
+G_M20484_IG19:        ; bbWeight=14.75, gcrefRegs=14C00002 {x1 x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref, isz
             ldrsb   wzr, [x23]
             mov     x0, x23
             ; gcrRegs +[x0]
@@ -266,104 +252,10 @@ G_M20484_IG18:        ; bbWeight=14.75, gcrefRegs=14C00002 {x1 x22 x23 x26 x28},
             ; gcrRegs -[x0-x1]
             ; byrRegs +[x0]
             mov     x1, x0
-            cbz     x1, G_M20484_IG28
+            cbnz    x1, G_M20484_IG33
                        ;; size=36 bbWeight=14.75 PerfScore 154.91
-G_M20484_IG19:        ; bbWeight=0.10, gcrefRegs=14C00000 {x22 x23 x26 x28}, byrefRegs=100001 {x0 x20}, byref
-            b       G_M20484_IG39
-                       ;; size=4 bbWeight=0.10 PerfScore 0.10
-G_M20484_IG20:        ; bbWeight=0.16, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
-            ; gcrRegs -[x22-x23 x26 x28] +[x19]
+G_M20484_IG20:        ; bbWeight=14.75, gcrefRegs=14C00000 {x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref, isz
             ; byrRegs -[x0]
-            movz    x0, #0xD1FFAB1E      // box for <unknown class>:<unknown field>
-            movk    x0, #0xD1FFAB1E LSL #16
-            movk    x0, #0xD1FFAB1E LSL #32
-            ldr     x0, [x0]
-            ; gcrRegs +[x0]
-            ldr     x23, [x0, #0x08]
-            ; gcrRegs +[x23]
-            b       G_M20484_IG10
-                       ;; size=24 bbWeight=0.16 PerfScore 1.35
-G_M20484_IG21:        ; bbWeight=4.72, gcrefRegs=14800000 {x23 x26 x28}, byrefRegs=100000 {x20}, byref
-            ; gcrRegs -[x0 x19] +[x26 x28]
-            mov     x22, xzr
-            ; gcrRegs +[x22]
-                       ;; size=4 bbWeight=4.72 PerfScore 2.36
-G_M20484_IG22:        ; bbWeight=14.75, gcrefRegs=14C00000 {x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref, isz
-            mov     x21, x22
-            ; gcrRegs +[x21]
-            cbz     x21, G_M20484_IG25
-                       ;; size=8 bbWeight=14.75 PerfScore 22.13
-G_M20484_IG23:        ; bbWeight=1.71, gcrefRegs=14E00000 {x21 x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref
-            b       G_M20484_IG37
-                       ;; size=4 bbWeight=1.71 PerfScore 1.71
-G_M20484_IG24:        ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
-            ; gcrRegs -[x21-x23 x26 x28] +[x19]
-            add     x23, x19, #96
-            ; byrRegs +[x23]
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            movz    x1, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:MakeAcyclicBaseType():Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #0xD1FFAB1E LSL #32
-            ldr     x1, [x1]
-            blr     x1
-            mov     x1, x0
-            ; gcrRegs +[x1]
-            movz    x0, #0xD1FFAB1E
-            ; gcrRegs -[x0]
-            movk    x0, #0xD1FFAB1E LSL #16
-            movk    x0, #0xD1FFAB1E LSL #32
-            ldr     x2, [x0]
-            ; gcrRegs +[x2]
-            cbz     x23, G_M20484_IG50
-            mov     x0, x23
-            ; byrRegs +[x0]
-            bl      <unknown method>
-            ; gcrRegs -[x1-x2] +[x0]
-            ; byrRegs -[x0 x23]
-            b       G_M20484_IG07
-                       ;; size=64 bbWeight=0.12 PerfScore 1.81
-G_M20484_IG25:        ; bbWeight=14.75, gcrefRegs=14C00000 {x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref, isz
-            ; gcrRegs -[x0 x19] +[x22-x23 x26 x28]
-            ldr     x0, [x28]
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #0xD1FFAB1E LSL #32
-            cmp     x0, x1
-            bne     G_M20484_IG17
-                       ;; size=24 bbWeight=14.75 PerfScore 88.52
-G_M20484_IG26:        ; bbWeight=9.88, gcrefRegs=14C00000 {x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref
-            b       G_M20484_IG36
-                       ;; size=4 bbWeight=9.88 PerfScore 9.88
-G_M20484_IG27:        ; bbWeight=0.13, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
-            ; gcrRegs -[x22-x23 x26 x28] +[x19]
-            add     x23, x19, #96
-            ; byrRegs +[x23]
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            movz    x1, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:MakeAcyclicBaseType():Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #0xD1FFAB1E LSL #32
-            ldr     x1, [x1]
-            blr     x1
-            mov     x1, x0
-            ; gcrRegs +[x1]
...

+0 (0.00%) : 380365.dasm - ReflectionAbstractionExtensions:DisposeTestClass(Xunit.Abstractions.ITest,System.Object,Xunit.Sdk.IMessageBus,Xunit.Sdk.ExecutionTimer,System.Threading.CancellationTokenSource) (Tier1)

@@ -10,7 +10,7 @@
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T03] (  5,  2.08)     ref  ->  [fp+0x28]  class-hnd EH-live single-def <Xunit.Abstractions.ITest>
-;  V01 arg1         [V01,T01] (  4,  3.18)     ref  ->   x1         class-hnd single-def <System.Object>
+;  V01 arg1         [V01,T01] (  4,  3.15)     ref  ->   x1         class-hnd single-def <System.Object>
 ;  V02 arg2         [V02,T02] ( 11,  2.17)     ref  ->  [fp+0x20]  class-hnd EH-live single-def <Xunit.Sdk.IMessageBus>
 ;  V03 arg3         [V03,T04] (  3,  2.04)     ref  ->  x19         class-hnd single-def <Xunit.Sdk.ExecutionTimer>
 ;  V04 arg4         [V04,T05] (  8,  2   )     ref  ->  [fp+0x18]  class-hnd EH-live single-def <System.Threading.CancellationTokenSource>
@@ -47,7 +47,7 @@ G_M6630_IG02:        ; bbWeight=1, gcVars=000000000000002C {V00 V02 V04}, gcrefR
             ; gcrRegs +[x1]
             mov     x20, x1
             ; gcrRegs +[x20]
-            cbz     x20, G_M6630_IG06
+            cbz     x20, G_M6630_IG05
                        ;; size=8 bbWeight=1 PerfScore 1.50
 G_M6630_IG03:        ; bbWeight=0.50, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x20]
@@ -55,10 +55,27 @@ G_M6630_IG03:        ; bbWeight=0.50, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0
             movk    x3, #0xD1FFAB1E LSL #16
             movk    x3, #0xD1FFAB1E LSL #32
             cmp     x0, x3
-            beq     G_M6630_IG05
+            bne     G_M6630_IG07
                        ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M6630_IG04:        ; bbWeight=0.18, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x20]
+G_M6630_IG04:        ; bbWeight=0.35, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x1 x20]
+            mov     x20, xzr
+            ; gcrRegs +[x20]
+                       ;; size=4 bbWeight=0.35 PerfScore 0.17
+G_M6630_IG05:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+            cbnz    x20, G_M6630_IG08
+                       ;; size=4 bbWeight=1 PerfScore 1.00
+G_M6630_IG06:        ; bbWeight=0.96, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+            ; gcrRegs -[x19-x20]
+            ; GC ptr vars -{V00 V02 V04}
+            ldr     x21, [sp, #0x48]
+            ldp     x19, x20, [sp, #0x38]
+            ldp     fp, lr, [sp], #0x50
+            ret     lr
+                       ;; size=16 bbWeight=0.96 PerfScore 4.79
+G_M6630_IG07:        ; bbWeight=0.15, gcVars=000000000000002C {V00 V02 V04}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs +[x1 x19]
+            ; GC ptr vars +{V00 V02 V03 V04 V05}
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -67,27 +84,10 @@ G_M6630_IG04:        ; bbWeight=0.18, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {
             ; gcr arg pop 0
             mov     x20, x0
             ; gcrRegs +[x20]
-            b       G_M6630_IG06
-                       ;; size=24 bbWeight=0.18 PerfScore 0.72
-G_M6630_IG05:        ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0 x20]
-            mov     x20, xzr
-            ; gcrRegs +[x20]
-                       ;; size=4 bbWeight=0.32 PerfScore 0.16
-G_M6630_IG06:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
-            cbnz    x20, G_M6630_IG08
-                       ;; size=4 bbWeight=1 PerfScore 1.00
-G_M6630_IG07:        ; bbWeight=0.96, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
-            ; gcrRegs -[x19-x20]
-            ; GC ptr vars -{V00 V02 V04}
-            ldr     x21, [sp, #0x48]
-            ldp     x19, x20, [sp, #0x38]
-            ldp     fp, lr, [sp], #0x50
-            ret     lr
-                       ;; size=16 bbWeight=0.96 PerfScore 4.79
-G_M6630_IG08:        ; bbWeight=0.04, gcVars=000000000000002C {V00 V02 V04}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs +[x19-x20]
-            ; GC ptr vars +{V00 V02 V03 V04 V05}
+            b       G_M6630_IG05
+                       ;; size=24 bbWeight=0.15 PerfScore 0.60
+G_M6630_IG08:        ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x0]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -220,7 +220,7 @@ G_M6630_IG12:        ; bbWeight=0, gcVars=0000000000000024 {V02 V04}, gcrefRegs=
             ; gcr arg pop 0
                        ;; size=24 bbWeight=0 PerfScore 0.00
 G_M6630_IG13:        ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            cbnz    w0, G_M6630_IG07
+            cbnz    w0, G_M6630_IG06
                        ;; size=4 bbWeight=0.04 PerfScore 0.04
 G_M6630_IG14:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [fp, #0x18]    // [V04 arg4]
@@ -252,7 +252,7 @@ G_M6630_IG16:        ; bbWeight=0, gcVars=0000000000000020 {V04}, gcrefRegs=0001
             blr     x2
             ; gcrRegs -[x0]
             ; gcr arg pop 0
-            b       G_M6630_IG07
+            b       G_M6630_IG06
                        ;; size=28 bbWeight=0 PerfScore 0.00
 G_M6630_IG17:        ; bbWeight=0, gcVars=000000000000002C {V00 V02 V04}, gcrefRegs=380004 {x2 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs +[x2 x19-x21]
@@ -389,7 +389,7 @@ G_M6630_IG25:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ret     lr
                        ;; size=16 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 812, prolog size 32, PerfScore 20.69, instruction count 203, allocated bytes for code 812 (MethodHash=aaffe619) for method ReflectionAbstractionExtensions:DisposeTestClass(Xunit.Abstractions.ITest,System.Object,Xunit.Sdk.IMessageBus,Xunit.Sdk.ExecutionTimer,System.Threading.CancellationTokenSource) (Tier1)
+; Total bytes of code 812, prolog size 32, PerfScore 20.58, instruction count 203, allocated bytes for code 812 (MethodHash=aaffe619) for method ReflectionAbstractionExtensions:DisposeTestClass(Xunit.Abstractions.ITest,System.Object,Xunit.Sdk.IMessageBus,Xunit.Sdk.ExecutionTimer,System.Threading.CancellationTokenSource) (Tier1)
 ; ============================================================
 
 Unwind Info:

+0 (0.00%) : 639261.dasm - System.Convert:ToString(System.Object,System.IFormatProvider):System.String (Tier1)

@@ -9,7 +9,7 @@
 ; 3 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T00] ( 10,  4.32)     ref  ->  x19         class-hnd single-def <System.Object>
+;  V00 arg0         [V00,T00] ( 10,  4.31)     ref  ->  x19         class-hnd single-def <System.Object>
 ;  V01 arg1         [V01,T01] (  5,  2.32)     ref  ->  x20         class-hnd single-def <System.IFormatProvider>
 ;  V02 loc0         [V02,T03] (  5,  3.37)     ref  ->   x0         class-hnd single-def <System.IConvertible>
 ;  V03 loc1         [V03,T09] (  5,  0.64)     ref  ->   x0         class-hnd single-def <System.IFormattable>
@@ -145,12 +145,12 @@ G_M7429_IG12:        ; bbWeight=0.16, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             cmp     x1, x0
-            bne     G_M7429_IG18
+            bne     G_M7429_IG20
                        ;; size=24 bbWeight=0.16 PerfScore 0.94
-G_M7429_IG13:        ; bbWeight=0.10, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M7429_IG13:        ; bbWeight=0.12, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
             mov     x0, xzr
             ; gcrRegs +[x0]
-                       ;; size=4 bbWeight=0.10 PerfScore 0.05
+                       ;; size=4 bbWeight=0.12 PerfScore 0.06
 G_M7429_IG14:        ; bbWeight=0.31, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
             cbnz    x0, G_M7429_IG21
                        ;; size=4 bbWeight=0.31 PerfScore 0.31
@@ -162,7 +162,7 @@ G_M7429_IG15:        ; bbWeight=0.30, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x0, x1
-            bne     G_M7429_IG19
+            bne     G_M7429_IG18
                        ;; size=28 bbWeight=0.30 PerfScore 2.13
 G_M7429_IG16:        ; bbWeight=0.26, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x0, x19
@@ -182,8 +182,22 @@ G_M7429_IG17:        ; bbWeight=0.26, epilog, nogc, extend
             br      x2
             ; gcr arg pop 0
                        ;; size=12 bbWeight=0.26 PerfScore 0.78
-G_M7429_IG18:        ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
-            ; gcrRegs -[x0] +[x19-x20]
+G_M7429_IG18:        ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs -[x0] +[x19]
+            mov     x0, x19
+            ; gcrRegs +[x0]
+            ldr     x1, [x19]
+            ldr     x1, [x1, #0x48]
+            ldr     x1, [x1, #0x08]
+                       ;; size=16 bbWeight=0.05 PerfScore 0.43
+G_M7429_IG19:        ; bbWeight=0.05, epilog, nogc, extend
+            ldp     x19, x20, [sp, #0x10]
+            ldp     fp, lr, [sp], #0x20
+            br      x1
+            ; gcr arg pop 0
+                       ;; size=12 bbWeight=0.05 PerfScore 0.14
+G_M7429_IG20:        ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs -[x0] +[x20]
             mov     x1, x19
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
@@ -193,23 +207,9 @@ G_M7429_IG18:        ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=1800
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             b       G_M7429_IG14
-                       ;; size=24 bbWeight=0.05 PerfScore 0.21
-G_M7429_IG19:        ; bbWeight=0.05, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0 x20]
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            ldr     x1, [x19]
-            ldr     x1, [x1, #0x48]
-            ldr     x1, [x1, #0x08]
-                       ;; size=16 bbWeight=0.05 PerfScore 0.43
-G_M7429_IG20:        ; bbWeight=0.05, epilog, nogc, extend
-            ldp     x19, x20, [sp, #0x10]
-            ldp     fp, lr, [sp], #0x20
-            br      x1
-            ; gcr arg pop 0
-                       ;; size=12 bbWeight=0.05 PerfScore 0.14
-G_M7429_IG21:        ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs -[x19] +[x20]
+                       ;; size=24 bbWeight=0.04 PerfScore 0.15
+G_M7429_IG21:        ; bbWeight=0.01, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x19]
             ldr     x2, [x0]
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
@@ -270,7 +270,7 @@ G_M7429_IG28:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
             ret     lr
                        ;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 532, prolog size 20, PerfScore 34.35, instruction count 133, allocated bytes for code 532 (MethodHash=f538e2fa) for method System.Convert:ToString(System.Object,System.IFormatProvider):System.String (Tier1)
+; Total bytes of code 532, prolog size 20, PerfScore 34.30, instruction count 133, allocated bytes for code 532 (MethodHash=f538e2fa) for method System.Convert:ToString(System.Object,System.IFormatProvider):System.String (Tier1)
 ; ============================================================
 
 Unwind Info:

+12 (+1.30%) : 471778.dasm - OLEDB.Test.ModuleCore.CTestModule+d__56:MoveNext():ubyte:this (Tier1)

@@ -60,12 +60,12 @@ G_M23047_IG02:        ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=000
             ldr     w1, [x0, #0x20]
             ldr     x2, [x0, #0x10]
             ; gcrRegs +[x2]
-            cbz     w1, G_M23047_IG12
+            cbz     w1, G_M23047_IG07
                        ;; size=12 bbWeight=1 PerfScore 7.00
 G_M23047_IG03:        ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x2]
             cmp     w1, #1
-            bne     G_M23047_IG11
+            bne     G_M23047_IG17
                        ;; size=8 bbWeight=1.00 PerfScore 1.50
 G_M23047_IG04:        ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
             movn    w11, #3
@@ -79,7 +79,7 @@ G_M23047_IG04:        ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
             blr     x1
             ; gcrRegs -[x0]
             ; gcr arg pop 0
-            cbz     w0, G_M23047_IG24
+            cbz     w0, G_M23047_IG23
                        ;; size=40 bbWeight=0.01 PerfScore 0.16
 G_M23047_IG05:        ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [fp, #0x10]    // [V00 this]
@@ -91,7 +91,7 @@ G_M23047_IG05:        ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movk    x15, #0xD1FFAB1E LSL #16
             movk    x15, #0xD1FFAB1E LSL #32
             cmp     x14, x15
-            bne     G_M23047_IG10
+            bne     G_M23047_IG16
             ldr     x15, [x1, #0x08]
             ; gcrRegs +[x15]
                        ;; size=36 bbWeight=1.00 PerfScore 13.99
@@ -104,59 +104,9 @@ G_M23047_IG06:        ; bbWeight=1.00, gcrefRegs=8001 {x0 x15}, byrefRegs=0000 {
             ; byrRegs -[x14]
             mov     w11, #1
             str     w11, [x0, #0x20]
-            b       G_M23047_IG29
+            b       G_M23047_IG30
                        ;; size=20 bbWeight=1.00 PerfScore 4.00
-G_M23047_IG07:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0] +[x19]
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            ldr     x1, [x19]
-            ldr     x1, [x1, #0x48]
-            ldr     x1, [x1, #0x20]
-            blr     x1
-            ; gcr arg pop 0
-                       ;; size=20 bbWeight=0 PerfScore 0.00
-G_M23047_IG08:        ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
-            ldr     x1, [x0]
-            ldr     x1, [x1, #0x48]
-            ldr     x1, [x1, #0x38]
-            blr     x1
-            ; gcr arg pop 0
-            b       G_M23047_IG21
-                       ;; size=20 bbWeight=0 PerfScore 0.00
-G_M23047_IG09:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x19]
-            movz    x20, #0xD1FFAB1E      // code for <unknown method>
-            movk    x20, #0xD1FFAB1E LSL #16
-            movk    x20, #0xD1FFAB1E LSL #32
-            mov     x11, x20
-            ldr     x1, [x11]
-            blr     x1
-            ; gcr arg pop 0
-            mov     x15, x0
-            ; gcrRegs +[x15]
-            b       G_M23047_IG22
-                       ;; size=32 bbWeight=0 PerfScore 0.00
-G_M23047_IG10:        ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0 x15] +[x1]
-            mov     x0, x1
-            ; gcrRegs +[x0]
-            add     x11, x20, #16
-            ldr     x1, [x11]
-            ; gcrRegs -[x1]
-            blr     x1
-            ; gcr arg pop 0
-            mov     x15, x0
-            ; gcrRegs +[x15]
-            ldr     x0, [fp, #0x10]    // [V00 this]
-            b       G_M23047_IG06
-                       ;; size=28 bbWeight=0 PerfScore 0.00
-G_M23047_IG11:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x15]
-            mov     w11, wzr
-            b       G_M23047_IG29
-                       ;; size=8 bbWeight=0 PerfScore 0.00
-G_M23047_IG12:        ; bbWeight=0.00, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG07:        ; bbWeight=0.00, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x2]
             movn    w1, #0
             str     w1, [x0, #0x20]
@@ -170,10 +120,10 @@ G_M23047_IG12:        ; bbWeight=0.00, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}
             ; gcr arg pop 0
             mov     x15, x0
             ; gcrRegs +[x15]
-            cbz     x15, G_M23047_IG28
+            cbz     x15, G_M23047_IG29
             ldr     w14, [x15, #0x10]
             cmp     w14, #0
-            ble     G_M23047_IG28
+            ble     G_M23047_IG29
             ldr     w0, [x15, #0x14]
             ; gcrRegs -[x0]
             ldr     x2, [fp, #0x10]    // [V00 this]
@@ -200,60 +150,99 @@ G_M23047_IG12:        ; bbWeight=0.00, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}
             ; gcrRegs -[x2]
             ; byrRegs -[x0]
             ; gcr arg pop 0
-            cbz     w0, G_M23047_IG27
+            cbz     w0, G_M23047_IG28
                        ;; size=124 bbWeight=0.00 PerfScore 0.03
-G_M23047_IG13:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG08:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             ldr     x2, [fp, #0x10]    // [V00 this]
             ; gcrRegs +[x2]
             ldr     x1, [x2, #0x30]
             ; gcrRegs +[x1]
             mov     x19, x1
             ; gcrRegs +[x19]
-            cbz     x19, G_M23047_IG16
+            cbz     x19, G_M23047_IG10
                        ;; size=16 bbWeight=0.01 PerfScore 0.09
-G_M23047_IG14:        ; bbWeight=0.01, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG09:        ; bbWeight=0.01, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x2]
             ldr     x0, [x19]
             movz    x3, #0xD1FFAB1E
             movk    x3, #0xD1FFAB1E LSL #16
             movk    x3, #0xD1FFAB1E LSL #32
             cmp     x0, x3
-            beq     G_M23047_IG16
+            bne     G_M23047_IG20
                        ;; size=24 bbWeight=0.01 PerfScore 0.04
-G_M23047_IG15:        ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x19]
-            movz    x0, #0xD1FFAB1E
-            movk    x0, #0xD1FFAB1E LSL #16
-            movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFCLASS
-            ; gcrRegs -[x1] +[x0]
-            ; gcr arg pop 0
-            mov     x19, x0
-            ; gcrRegs +[x19]
-                       ;; size=20 bbWeight=0.00 PerfScore 0.01
-G_M23047_IG16:        ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0]
-            cbz     x19, G_M23047_IG26
+G_M23047_IG10:        ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x1]
+            cbz     x19, G_M23047_IG25
             ldr     x20, [x19]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             cmp     x20, x0
-            bne     G_M23047_IG07
+            bne     G_M23047_IG13
                        ;; size=28 bbWeight=0.01 PerfScore 0.10
-G_M23047_IG17:        ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG11:        ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x19, #0x18]
             ; gcrRegs +[x0]
-            cbz     x0, G_M23047_IG19
+            cbz     x0, G_M23047_IG18
                        ;; size=8 bbWeight=0.01 PerfScore 0.06
-G_M23047_IG18:        ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M23047_IG12:        ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
             ldr     x0, [x19, #0x18]
             ; gcrRegs +[x0]
-            b       G_M23047_IG20
+            b       G_M23047_IG19
                        ;; size=8 bbWeight=0.01 PerfScore 0.06
-G_M23047_IG19:        ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M23047_IG13:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
+            mov     x0, x19
+            ; gcrRegs +[x0]
+            ldr     x1, [x19]
+            ldr     x1, [x1, #0x48]
+            ldr     x1, [x1, #0x20]
+            blr     x1
+            ; gcr arg pop 0
+                       ;; size=20 bbWeight=0 PerfScore 0.00
+G_M23047_IG14:        ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+            ldr     x1, [x0]
+            ldr     x1, [x1, #0x48]
+            ldr     x1, [x1, #0x38]
+            blr     x1
+            ; gcr arg pop 0
+            b       G_M23047_IG21
+                       ;; size=20 bbWeight=0 PerfScore 0.00
+G_M23047_IG15:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x19]
+            movz    x20, #0xD1FFAB1E      // code for <unknown method>
+            movk    x20, #0xD1FFAB1E LSL #16
+            movk    x20, #0xD1FFAB1E LSL #32
+            mov     x11, x20
+            ldr     x1, [x11]
+            blr     x1
+            ; gcr arg pop 0
+            mov     x15, x0
+            ; gcrRegs +[x15]
+            b       G_M23047_IG22
+                       ;; size=32 bbWeight=0 PerfScore 0.00
+G_M23047_IG16:        ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0 x15] +[x1]
+            mov     x0, x1
+            ; gcrRegs +[x0]
+            add     x11, x20, #16
+            ldr     x1, [x11]
+            ; gcrRegs -[x1]
+            blr     x1
+            ; gcr arg pop 0
+            mov     x15, x0
+            ; gcrRegs +[x15]
+            ldr     x0, [fp, #0x10]    // [V00 this]
+            b       G_M23047_IG06
+                       ;; size=28 bbWeight=0 PerfScore 0.00
+G_M23047_IG17:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x15]
+            mov     w11, wzr
+            b       G_M23047_IG30
+                       ;; size=8 bbWeight=0 PerfScore 0.00
+G_M23047_IG18:        ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0] +[x19]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -269,18 +258,31 @@ G_M23047_IG19:        ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-            b       G_M23047_IG18
+            b       G_M23047_IG12
                        ;; size=40 bbWeight=0.00 PerfScore 0.01
-G_M23047_IG20:        ; bbWeight=0.06, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG19:        ; bbWeight=0.06, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x0]
             ldr     x1, [x0]
             movz    x3, #0xD1FFAB1E
             movk    x3, #0xD1FFAB1E LSL #16
             movk    x3, #0xD1FFAB1E LSL #32
             cmp     x1, x3
-            bne     G_M23047_IG08
+            bne     G_M23047_IG14
...

+32 (+2.48%) : 524320.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1ubyte

@@ -9,21 +9,21 @@
 ; 5 inlinees with PGO data; 45 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T03] (  7,  5.00)     ref  ->  x19         class-hnd single-def <Xunit.Sdk.CollectionTracker>
-;  V01 arg1         [V01,T04] (  7,  5.00)     ref  ->  x20         class-hnd single-def <Xunit.Sdk.CollectionTracker>
-;  V02 arg2         [V02,T12] (  4,  3.00)     ref  ->  x22         class-hnd single-def <System.Collections.IEqualityComparer>
-;  V03 arg3         [V03,T13] (  3,  3.00)   ubyte  ->  x23         single-def
-;  V04 arg4         [V04,T05] (  4,  4.00)   byref  ->  x21         single-def
+;  V00 arg0         [V00,T04] (  7,  5.00)     ref  ->  x19         class-hnd single-def <Xunit.Sdk.CollectionTracker>
+;  V01 arg1         [V01,T05] (  7,  5.00)     ref  ->  x20         class-hnd single-def <Xunit.Sdk.CollectionTracker>
+;  V02 arg2         [V02,T13] (  4,  3.00)     ref  ->  x22         class-hnd single-def <System.Collections.IEqualityComparer>
+;  V03 arg3         [V03,T14] (  3,  3.00)   ubyte  ->  x23         single-def
+;  V04 arg4         [V04,T06] (  4,  4.00)   byref  ->  x21         single-def
 ;  V05 loc0         [V05,T00] ( 15,  8.99)     ref  ->  x24         class-hnd single-def <System.Array>
 ;  V06 loc1         [V06,T01] ( 13,  8.99)     ref  ->  x25         class-hnd single-def <System.Array>
-;  V07 loc2         [V07,T29] (  3,  0   )     ref  ->  x19         class-hnd single-def <<unknown class>>
-;  V08 loc3         [V08,T30] (  3,  0   )     ref  ->  x20         class-hnd single-def <<unknown class>>
+;  V07 loc2         [V07,T31] (  3,  0   )     ref  ->  x19         class-hnd single-def <<unknown class>>
+;  V08 loc3         [V08,T32] (  3,  0   )     ref  ->  x20         class-hnd single-def <<unknown class>>
 ;* V09 loc4         [V09    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] ld-addr-op <System.Nullable`1[ubyte]>
-;  V10 loc5         [V10,T28] (  8,  0   )     int  ->  x21        
-;  V11 loc6         [V11,T34] (  3,  0   )   ubyte  ->  x21        
-;  V12 loc7         [V12,T35] (  3,  0   )   ubyte  ->   x0        
+;  V10 loc5         [V10,T30] (  8,  0   )     int  ->  x21        
+;  V11 loc6         [V11,T36] (  3,  0   )   ubyte  ->  x21        
+;  V12 loc7         [V12,T37] (  3,  0   )   ubyte  ->   x0        
 ;# V13 OutArgs      [V13    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V14 tmp1         [V14,T42] (  2,  0   )     int  ->  x21         "impAppendStmt"
+;  V14 tmp1         [V14,T44] (  2,  0   )     int  ->  x21         "impAppendStmt"
 ;* V15 tmp2         [V15    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
 ;  V16 tmp3         [V16    ] (  3,  0   )  struct ( 8) [fp+0x30]  do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
 ;* V17 tmp4         [V17    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
@@ -32,60 +32,62 @@
 ;  V20 tmp7         [V20    ] (  3,  0   )  struct ( 8) [fp+0x20]  do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
 ;  V21 tmp8         [V21    ] (  3,  0   )  struct ( 8) [fp+0x18]  do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
 ;  V22 tmp9         [V22    ] (  3,  5.99)  struct ( 8) [fp+0x10]  do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-;  V23 tmp10        [V23,T16] (  2,  2.00)     int  ->   x0         "Inline return value spill temp"
+;  V23 tmp10        [V23,T18] (  2,  2.00)     int  ->   x0         "Inline return value spill temp"
 ;* V24 tmp11        [V24    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;  V25 tmp12        [V25,T17] (  3,  3.00)     int  ->   x0         single-def "Inline stloc first use temp"
-;  V26 tmp13        [V26,T06] (  3,  5.99)   byref  ->  x26         single-def "Inlining Arg"
-;  V27 tmp14        [V27,T18] (  2,  2.00)     int  ->   x0         "Inline return value spill temp"
+;  V25 tmp12        [V25,T19] (  3,  3.00)     int  ->   x0         single-def "Inline stloc first use temp"
+;  V26 tmp13        [V26,T07] (  3,  5.99)   byref  ->  x26         single-def "Inlining Arg"
+;  V27 tmp14        [V27,T20] (  2,  2.00)     int  ->   x0         "Inline return value spill temp"
 ;* V28 tmp15        [V28    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V29 tmp16        [V29    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V30 tmp17        [V30,T19] (  3,  3.00)     int  ->  x26         single-def "Inline stloc first use temp"
-;  V31 tmp18        [V31,T07] (  3,  5.99)   byref  ->  x26         single-def "Inlining Arg"
-;  V32 tmp19        [V32,T26] (  2,  2.00)     int  ->   x0         single-def "Inline stloc first use temp"
-;  V33 tmp20        [V33,T08] (  3,  5.99)   byref  ->  x27         single-def "Inlining Arg"
-;  V34 tmp21        [V34,T20] (  2,  2.00)     int  ->   x0         "Inline return value spill temp"
+;  V30 tmp17        [V30,T21] (  3,  3.00)     int  ->  x26         single-def "Inline stloc first use temp"
+;  V31 tmp18        [V31,T08] (  3,  5.99)   byref  ->  x26         single-def "Inlining Arg"
+;  V32 tmp19        [V32,T28] (  2,  2.00)     int  ->   x0         single-def "Inline stloc first use temp"
+;  V33 tmp20        [V33,T09] (  3,  5.99)   byref  ->  x27         single-def "Inlining Arg"
+;  V34 tmp21        [V34,T22] (  2,  2.00)     int  ->   x0         "Inline return value spill temp"
 ;* V35 tmp22        [V35    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;  V36 tmp23        [V36,T21] (  3,  3.00)     int  ->   x0         single-def "Inline stloc first use temp"
-;  V37 tmp24        [V37,T09] (  3,  5.99)   byref  ->  x26         single-def "Inlining Arg"
-;  V38 tmp25        [V38,T22] (  2,  2.00)     int  ->   x3         "Inline return value spill temp"
+;  V36 tmp23        [V36,T23] (  3,  3.00)     int  ->   x0         single-def "Inline stloc first use temp"
+;  V37 tmp24        [V37,T10] (  3,  5.99)   byref  ->  x26         single-def "Inlining Arg"
+;  V38 tmp25        [V38,T24] (  2,  2.00)     int  ->   x3         "Inline return value spill temp"
 ;* V39 tmp26        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V40 tmp27        [V40    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V41 tmp28        [V41,T23] (  3,  3.00)     int  ->  x26         single-def "Inline stloc first use temp"
-;  V42 tmp29        [V42,T10] (  3,  5.99)   byref  ->  x26         single-def "Inlining Arg"
-;  V43 tmp30        [V43,T27] (  2,  2.00)     int  ->   x0         single-def "Inline stloc first use temp"
-;  V44 tmp31        [V44,T11] (  3,  5.99)   byref  ->  x27         single-def "Inlining Arg"
+;  V41 tmp28        [V41,T25] (  3,  3.00)     int  ->  x26         single-def "Inline stloc first use temp"
+;  V42 tmp29        [V42,T11] (  3,  5.99)   byref  ->  x26         single-def "Inlining Arg"
+;  V43 tmp30        [V43,T29] (  2,  2.00)     int  ->   x0         single-def "Inline stloc first use temp"
+;  V44 tmp31        [V44,T12] (  3,  5.99)   byref  ->  x27         single-def "Inlining Arg"
 ;* V45 tmp32        [V45    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V46 tmp33        [V46    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;  V47 tmp34        [V47,T36] (  3,  0   )     int  ->   x0         single-def "Inline stloc first use temp"
-;  V48 tmp35        [V48,T31] (  3,  0   )   byref  ->  x21         single-def "Inlining Arg"
-;  V49 tmp36        [V49,T43] (  2,  0   )     int  ->   x0         "Inline return value spill temp"
+;  V47 tmp34        [V47,T38] (  3,  0   )     int  ->   x0         single-def "Inline stloc first use temp"
+;  V48 tmp35        [V48,T33] (  3,  0   )   byref  ->  x21         single-def "Inlining Arg"
+;  V49 tmp36        [V49,T45] (  2,  0   )     int  ->   x0         "Inline return value spill temp"
 ;* V50 tmp37        [V50    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;  V51 tmp38        [V51,T37] (  3,  0   )     int  ->   x0         single-def "Inline stloc first use temp"
-;  V52 tmp39        [V52,T32] (  3,  0   )   byref  ->  x23         single-def "Inlining Arg"
-;  V53 tmp40        [V53,T38] (  3,  0   )     int  ->   x1         "Inline return value spill temp"
+;  V51 tmp38        [V51,T39] (  3,  0   )     int  ->   x0         single-def "Inline stloc first use temp"
+;  V52 tmp39        [V52,T34] (  3,  0   )   byref  ->  x23         single-def "Inlining Arg"
+;  V53 tmp40        [V53,T40] (  3,  0   )     int  ->   x1         "Inline return value spill temp"
 ;* V54 tmp41        [V54    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;  V55 tmp42        [V55,T39] (  3,  0   )     int  ->   x0         "Inline stloc first use temp"
-;  V56 tmp43        [V56,T33] (  3,  0   )   byref  ->  x23         "Inlining Arg"
+;  V55 tmp42        [V55,T41] (  3,  0   )     int  ->   x0         "Inline stloc first use temp"
+;  V56 tmp43        [V56,T35] (  3,  0   )   byref  ->  x23         "Inlining Arg"
 ;* V57 tmp44        [V57    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V58 tmp45        [V58,T15] (  7,  4.00)  struct ( 8)  x0         "Single return block return value" <System.Nullable`1[ubyte]>
+;  V58 tmp45        [V58,T17] (  7,  4.00)  struct ( 8)  x0         "Single return block return value" <System.Nullable`1[ubyte]>
 ;* V59 tmp46        [V59    ] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[] "field V09.hasValue (fldOffset=0x0)" P-DEP
 ;* V60 tmp47        [V60    ] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[] "field V09.value (fldOffset=0x1)" P-DEP
-;  V61 tmp48        [V61,T44] (  2,  0   )   ubyte  ->  [fp+0x30]  do-not-enreg[] "field V16.hasValue (fldOffset=0x0)" P-DEP
-;  V62 tmp49        [V62,T45] (  2,  0   )   ubyte  ->  [fp+0x31]  do-not-enreg[] "field V16.value (fldOffset=0x1)" P-DEP
-;  V63 tmp50        [V63,T46] (  2,  0   )   ubyte  ->  [fp+0x28]  do-not-enreg[] "field V18.hasValue (fldOffset=0x0)" P-DEP
-;  V64 tmp51        [V64,T47] (  2,  0   )   ubyte  ->  [fp+0x29]  do-not-enreg[] "field V18.value (fldOffset=0x1)" P-DEP
-;  V65 tmp52        [V65,T48] (  2,  0   )   ubyte  ->  [fp+0x20]  do-not-enreg[] "field V20.hasValue (fldOffset=0x0)" P-DEP
-;  V66 tmp53        [V66,T49] (  2,  0   )   ubyte  ->  [fp+0x21]  do-not-enreg[] "field V20.value (fldOffset=0x1)" P-DEP
-;  V67 tmp54        [V67,T50] (  2,  0   )   ubyte  ->  [fp+0x18]  do-not-enreg[] "field V21.hasValue (fldOffset=0x0)" P-DEP
-;  V68 tmp55        [V68,T51] (  2,  0   )   ubyte  ->  [fp+0x19]  do-not-enreg[] "field V21.value (fldOffset=0x1)" P-DEP
-;  V69 tmp56        [V69,T24] (  2,  3.00)   ubyte  ->  [fp+0x10]  do-not-enreg[] "field V22.hasValue (fldOffset=0x0)" P-DEP
-;  V70 tmp57        [V70,T25] (  2,  3.00)   ubyte  ->  [fp+0x11]  do-not-enreg[] "field V22.value (fldOffset=0x1)" P-DEP
+;  V61 tmp48        [V61,T46] (  2,  0   )   ubyte  ->  [fp+0x30]  do-not-enreg[] "field V16.hasValue (fldOffset=0x0)" P-DEP
+;  V62 tmp49        [V62,T47] (  2,  0   )   ubyte  ->  [fp+0x31]  do-not-enreg[] "field V16.value (fldOffset=0x1)" P-DEP
+;  V63 tmp50        [V63,T48] (  2,  0   )   ubyte  ->  [fp+0x28]  do-not-enreg[] "field V18.hasValue (fldOffset=0x0)" P-DEP
+;  V64 tmp51        [V64,T49] (  2,  0   )   ubyte  ->  [fp+0x29]  do-not-enreg[] "field V18.value (fldOffset=0x1)" P-DEP
+;  V65 tmp52        [V65,T50] (  2,  0   )   ubyte  ->  [fp+0x20]  do-not-enreg[] "field V20.hasValue (fldOffset=0x0)" P-DEP
+;  V66 tmp53        [V66,T51] (  2,  0   )   ubyte  ->  [fp+0x21]  do-not-enreg[] "field V20.value (fldOffset=0x1)" P-DEP
+;  V67 tmp54        [V67,T52] (  2,  0   )   ubyte  ->  [fp+0x18]  do-not-enreg[] "field V21.hasValue (fldOffset=0x0)" P-DEP
+;  V68 tmp55        [V68,T53] (  2,  0   )   ubyte  ->  [fp+0x19]  do-not-enreg[] "field V21.value (fldOffset=0x1)" P-DEP
+;  V69 tmp56        [V69,T26] (  2,  3.00)   ubyte  ->  [fp+0x10]  do-not-enreg[] "field V22.hasValue (fldOffset=0x0)" P-DEP
+;  V70 tmp57        [V70,T27] (  2,  3.00)   ubyte  ->  [fp+0x11]  do-not-enreg[] "field V22.value (fldOffset=0x1)" P-DEP
 ;* V71 tmp58        [V71    ] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
 ;* V72 tmp59        [V72    ] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V73 tmp60        [V73,T40] (  2,  0   )     ref  ->   x2         "argument with side effect"
-;  V74 tmp61        [V74,T41] (  2,  0   )     ref  ->  x21         "argument with side effect"
-;  V75 rat0         [V75,T14] (  3,  4.30)     ref  ->   x1         "Spilling to split statement for tree"
-;  V76 rat1         [V76,T02] (  5,  7.30)     ref  ->  x24         class-hnd "replacement local" <System.Array>
+;  V73 tmp60        [V73,T42] (  2,  0   )     ref  ->   x2         "argument with side effect"
+;  V74 tmp61        [V74,T43] (  2,  0   )     ref  ->  x21         "argument with side effect"
+;  V75 rat0         [V75,T16] (  3,  4.21)     ref  ->   x1         "Spilling to split statement for tree"
+;  V76 rat1         [V76,T03] (  5,  7.21)     ref  ->  x24         class-hnd "replacement local" <System.Array>
+;  V77 rat2         [V77,T15] (  3,  4.49)     ref  ->   x1         "Spilling to split statement for tree"
+;  V78 rat3         [V78,T02] (  5,  7.49)     ref  ->  x25         class-hnd "replacement local" <System.Array>
 ;
 ; Lcl frame size = 40
 
@@ -109,8 +111,8 @@ G_M53565_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
                        ;; size=48 bbWeight=1 PerfScore 9.00
 G_M53565_IG02:        ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=200000 {x21}, byref, isz
             str     xzr, [x21]
-            cbz     x19, G_M53565_IG21
-            cbz     x20, G_M53565_IG21
+            cbz     x19, G_M53565_IG24
+            cbz     x20, G_M53565_IG24
             ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
             mov     x24, x1
@@ -123,12 +125,26 @@ G_M53565_IG03:        ; bbWeight=0.50, gcrefRegs=1580002 {x1 x19 x20 x22 x24}, b
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x0, x2
-            bne     G_M53565_IG06
+            bne     G_M53565_IG09
                        ;; size=24 bbWeight=0.50 PerfScore 3.00
 G_M53565_IG04:        ; bbWeight=1, gcrefRegs=1580000 {x19 x20 x22 x24}, byrefRegs=200000 {x21}, byref, isz
             ; gcrRegs -[x1]
             ldr     x1, [x20, #0x08]
             ; gcrRegs +[x1]
+            mov     x25, x1
+            ; gcrRegs +[x25]
+            cbz     x25, G_M53565_IG07
+                       ;; size=12 bbWeight=1 PerfScore 4.50
+G_M53565_IG05:        ; bbWeight=0.50, gcrefRegs=3580002 {x1 x19 x20 x22 x24 x25}, byrefRegs=200000 {x21}, byref, isz
+            ldr     x0, [x25]
+            movz    x2, #0xD1FFAB1E
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #0xD1FFAB1E LSL #32
+            cmp     x0, x2
+            beq     G_M53565_IG07
+                       ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M53565_IG06:        ; bbWeight=0.24, gcrefRegs=1580002 {x1 x19 x20 x22 x24}, byrefRegs=200000 {x21}, byref
+            ; gcrRegs -[x25]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -136,11 +152,13 @@ G_M53565_IG04:        ; bbWeight=1, gcrefRegs=1580000 {x19 x20 x22 x24}, byrefRe
             ; gcrRegs -[x1] +[x0]
             mov     x25, x0
             ; gcrRegs +[x25]
-            cbz     x24, G_M53565_IG21
-                       ;; size=28 bbWeight=1 PerfScore 7.00
-G_M53565_IG05:        ; bbWeight=1.00, gcrefRegs=3580000 {x19 x20 x22 x24 x25}, byrefRegs=200000 {x21}, byref, isz
+                       ;; size=20 bbWeight=0.24 PerfScore 0.74
+G_M53565_IG07:        ; bbWeight=1, gcrefRegs=3580000 {x19 x20 x22 x24 x25}, byrefRegs=200000 {x21}, byref, isz
             ; gcrRegs -[x0]
-            cbz     x25, G_M53565_IG21
+            cbz     x24, G_M53565_IG24
+                       ;; size=4 bbWeight=1 PerfScore 1.00
+G_M53565_IG08:        ; bbWeight=1.00, gcrefRegs=3580000 {x19 x20 x22 x24 x25}, byrefRegs=200000 {x21}, byref, isz
+            cbz     x25, G_M53565_IG24
             ldr     x26, [x24]
             ldr     w0, [x26]
             tst     w0, #0xD1FFAB1E
@@ -154,12 +172,12 @@ G_M53565_IG05:        ; bbWeight=1.00, gcrefRegs=3580000 {x19 x20 x22 x24 x25},
             ldr     w0, [x26, #0x04]
             sub     w0, w0, #24
             lsr     w0, w0, #3
-            cbz     w0, G_M53565_IG08
+            cbz     w0, G_M53565_IG11
             cmp     w0, #1
-            bne     G_M53565_IG12
-            b       G_M53565_IG08
+            bne     G_M53565_IG15
+            b       G_M53565_IG11
                        ;; size=68 bbWeight=1.00 PerfScore 21.47
-G_M53565_IG06:        ; bbWeight=0.15, gcrefRegs=580002 {x1 x19 x20 x22}, byrefRegs=200000 {x21}, byref
+G_M53565_IG09:        ; bbWeight=0.11, gcrefRegs=580002 {x1 x19 x20 x22}, byrefRegs=200000 {x21}, byref
             ; gcrRegs -[x24-x25] +[x1]
             ; byrRegs -[x26]
             movz    x0, #0xD1FFAB1E
@@ -170,8 +188,8 @@ G_M53565_IG06:        ; bbWeight=0.15, gcrefRegs=580002 {x1 x19 x20 x22}, byrefR
             mov     x24, x0
             ; gcrRegs +[x24]
             b       G_M53565_IG04
-                       ;; size=24 bbWeight=0.15 PerfScore 0.60
-G_M53565_IG07:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+                       ;; size=24 bbWeight=0.11 PerfScore 0.42
+G_M53565_IG10:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
             ; gcrRegs -[x0 x19-x20 x22 x24]
             ; byrRegs -[x21]
             ldr     x27, [sp, #0x78]
@@ -182,7 +200,7 @@ G_M53565_IG07:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ldp     fp, lr, [sp], #0x80
             ret     lr
                        ;; size=28 bbWeight=1 PerfScore 8.00
-G_M53565_IG08:        ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=3580000 {x19 x20 x22 x24 x25}, byrefRegs=200000 {x21}, gcvars, byref, isz
+G_M53565_IG11:        ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=3580000 {x19 x20 x22 x24 x25}, byrefRegs=200000 {x21}, gcvars, byref, isz
             ; gcrRegs +[x19-x20 x22 x24-x25]
             ; byrRegs +[x21]
             ldr     x26, [x24]
@@ -199,7 +217,7 @@ G_M53565_IG08:        ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=358
             sub     w0, w0, #24
             lsr     w26, w0, #3
             ; byrRegs -[x26]
-            cbz     w26, G_M53565_IG09
+            cbz     w26, G_M53565_IG12
             ldr     x27, [x24]
             ldr     w0, [x27]
             tst     w0, #0xD1FFAB1E
@@ -225,9 +243,9 @@ G_M53565_IG08:        ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=358
             ; byrRegs +[x0]
             ldr     w0, [x0, w26, SXTW #2]
             ; byrRegs -[x0]
-            cbnz    w0, G_M53565_IG12
+            cbnz    w0, G_M53565_IG15
                        ;; size=140 bbWeight=1.00 PerfScore 45.94
-G_M53565_IG09:        ; bbWeight=1.00, gcrefRegs=3580000 {x19 x20 x22 x24 x25}, byrefRegs=200000 {x21}, byref, isz
+G_M53565_IG12:        ; bbWeight=1.00, gcrefRegs=3580000 {x19 x20 x22 x24 x25}, byrefRegs=200000 {x21}, byref, isz
             ldr     x26, [x25]
             ldr     w0, [x26]
             tst     w0, #0xD1FFAB1E
...

+40 (+8.77%) : 398419.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)

@@ -9,31 +9,32 @@
 ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T02] (  7,  4.89)   byref  ->  x19         this single-def
-;  V01 arg1         [V01,T04] (  6,  3   )     ref  ->  x20         class-hnd single-def <System.Runtime.CompilerServices.IAsyncStateMachineBox>
-;  V02 loc0         [V02,T01] ( 11,  7.97)     ref  ->  x21         class-hnd single-def <System.Object>
-;  V03 loc1         [V03,T06] (  3,  2.11)     ref  ->   x0         class-hnd single-def <System.Threading.Tasks.Task>
+;  V00 this         [V00,T03] (  7,  4.89)   byref  ->  x19         this single-def
+;  V01 arg1         [V01,T05] (  6,  3   )     ref  ->  x20         class-hnd single-def <System.Runtime.CompilerServices.IAsyncStateMachineBox>
+;  V02 loc0         [V02,T00] ( 12,  8.21)     ref  ->  x21         class-hnd single-def <System.Object>
+;  V03 loc1         [V03,T07] (  3,  2.11)     ref  ->   x0         class-hnd single-def <System.Threading.Tasks.Task>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V05 tmp1         [V05,T07] (  3,  2   )     int  ->   x0        
+;  V05 tmp1         [V05,T08] (  3,  2   )     int  ->   x0        
 ;* V06 tmp2         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "updating class info" <<unknown class>>
-;  V07 tmp3         [V07,T05] (  3,  3.57)     int  ->   x3         "impAppendStmt"
+;  V07 tmp3         [V07,T06] (  3,  3.57)     int  ->   x3         "impAppendStmt"
 ;* V08 tmp4         [V08    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V09 tmp5         [V09,T08] (  3,  1.79)     ref  ->   x1         single-def
+;  V09 tmp5         [V09,T09] (  3,  1.79)     ref  ->   x1         single-def
 ;* V10 tmp6         [V10    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V11 tmp7         [V11    ] (  0,  0   )     int  ->  zero-ref   
 ;* V12 tmp8         [V12    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V13 tmp9         [V13    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V14 tmp10        [V14    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V15 tmp11        [V15    ] (  0,  0   )     int  ->  zero-ref   
-;  V16 tmp12        [V16,T09] (  3,  1.79)     int  ->   x4        
+;  V16 tmp12        [V16,T10] (  3,  1.79)     int  ->   x4        
 ;* V17 tmp13        [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <System.Net.Quic.ValueTaskSource>
 ;* V18 tmp14        [V18    ] (  0,  0   )   short  ->  zero-ref    "Inlining Arg"
-;  V19 rat0         [V19,T00] (  6,  8   )     ref  ->   x2         class-hnd "replacement local" <System.Threading.Tasks.Task>
-;  V20 rat1         [V20,T03] (  5,  6.66)     ref  ->   x2         class-hnd "replacement local" <<unknown class>>
+;  V19 rat0         [V19,T01] (  6,  8   )     ref  ->   x2         class-hnd "replacement local" <System.Threading.Tasks.Task>
+;  V20 rat1         [V20,T04] (  5,  6.66)     ref  ->   x2         class-hnd "replacement local" <<unknown class>>
+;  V21 rat2         [V21,T02] (  6,  8   )     ref  ->   x0         class-hnd "replacement local" <System.Threading.Tasks.Task>
 ;
 ; Lcl frame size = 8
 
-G_M19176_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M19176_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x30]!
             stp     x19, x20, [sp, #0x18]
             str     x21, [sp, #0x28]
@@ -46,7 +47,7 @@ G_M19176_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M19176_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
             ldr     x21, [x19]
             ; gcrRegs +[x21]
-            cbz     x21, G_M19176_IG19
+            cbz     x21, G_M19176_IG14
             mov     x2, x21
             ; gcrRegs +[x2]
             cbz     x2, G_M19176_IG06
@@ -78,7 +79,7 @@ G_M19176_IG05:        ; bbWeight=0.30, gcrefRegs=300000 {x20 x21}, byrefRegs=800
             ; gcrRegs +[x2]
                        ;; size=4 bbWeight=0.30 PerfScore 0.15
 G_M19176_IG06:        ; bbWeight=1, gcrefRegs=300004 {x2 x20 x21}, byrefRegs=80000 {x19}, byref, isz
-            cbnz    x2, G_M19176_IG19
+            cbnz    x2, G_M19176_IG14
                        ;; size=4 bbWeight=1 PerfScore 1.00
 G_M19176_IG07:        ; bbWeight=0.89, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref, isz
             ; gcrRegs -[x2]
@@ -118,6 +119,20 @@ G_M19176_IG11:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=80000
             movk    x1, #0xD1FFAB1E LSL #32
             ldr     x1, [x1]
             blr     x1
+            mov     x0, x21
+            ; gcrRegs +[x0]
+            cbz     x0, G_M19176_IG16
+                       ;; size=28 bbWeight=1 PerfScore 7.00
+G_M19176_IG12:        ; bbWeight=0.50, gcrefRegs=300001 {x0 x20 x21}, byrefRegs=80000 {x19}, byref, isz
+            ldr     x1, [x0]
+            movz    x0, #0xD1FFAB1E
+            ; gcrRegs -[x0]
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            cmp     x1, x0
+            beq     G_M19176_IG15
+                       ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M19176_IG13:        ; bbWeight=0.24, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref
             mov     x1, x21
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
@@ -125,11 +140,23 @@ G_M19176_IG11:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=80000
             movk    x0, #0xD1FFAB1E LSL #32
             bl      CORINFO_HELP_ISINSTANCEOFCLASS
             ; gcrRegs -[x1] +[x0]
-            cbnz    x0, G_M19176_IG17
-                       ;; size=44 bbWeight=1 PerfScore 9.50
-G_M19176_IG12:        ; bbWeight=0.89, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref, isz
+            b       G_M19176_IG16
+                       ;; size=24 bbWeight=0.24 PerfScore 0.96
+G_M19176_IG14:        ; bbWeight=0.11, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref
             ; gcrRegs -[x0]
-            cbz     x21, G_M19176_IG20
+            mov     w0, #1
+            b       G_M19176_IG11
+                       ;; size=8 bbWeight=0.11 PerfScore 0.16
+G_M19176_IG15:        ; bbWeight=0.26, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref
+            mov     x0, xzr
+            ; gcrRegs +[x0]
+                       ;; size=4 bbWeight=0.26 PerfScore 0.13
+G_M19176_IG16:        ; bbWeight=1, gcrefRegs=300001 {x0 x20 x21}, byrefRegs=80000 {x19}, byref, isz
+            cbnz    x0, G_M19176_IG22
+                       ;; size=4 bbWeight=1 PerfScore 1.00
+G_M19176_IG17:        ; bbWeight=0.89, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref, isz
+            ; gcrRegs -[x0]
+            cbz     x21, G_M19176_IG24
             ldrsh   w3, [x19, #0x08]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
@@ -144,9 +171,9 @@ G_M19176_IG12:        ; bbWeight=0.89, gcrefRegs=300000 {x20 x21}, byrefRegs=800
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x0, x2
-            bne     G_M19176_IG15
+            bne     G_M19176_IG20
                        ;; size=60 bbWeight=0.89 PerfScore 16.52
-G_M19176_IG13:        ; bbWeight=0.54, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=0000 {}, byref
+G_M19176_IG18:        ; bbWeight=0.54, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=0000 {}, byref
             ; byrRegs -[x19]
             add     x0, x21, #16
             ; byrRegs +[x0]
@@ -158,13 +185,13 @@ G_M19176_IG13:        ; bbWeight=0.54, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=
             movk    x5, #0xD1FFAB1E LSL #32
             ldr     x5, [x5]
                        ;; size=28 bbWeight=0.54 PerfScore 3.22
-G_M19176_IG14:        ; bbWeight=0.54, epilog, nogc, extend
+G_M19176_IG19:        ; bbWeight=0.54, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             br      x5
                        ;; size=16 bbWeight=0.54 PerfScore 2.68
-G_M19176_IG15:        ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M19176_IG20:        ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x2]
             ; byrRegs -[x0]
             mov     x0, x21
@@ -176,13 +203,13 @@ G_M19176_IG15:        ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=300
             movk    x11, #0xD1FFAB1E LSL #32
             ldr     x5, [x11]
                        ;; size=24 bbWeight=0.36 PerfScore 1.96
-G_M19176_IG16:        ; bbWeight=0.36, epilog, nogc, extend
+G_M19176_IG21:        ; bbWeight=0.36, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             br      x5
                        ;; size=16 bbWeight=0.36 PerfScore 1.79
-G_M19176_IG17:        ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, gcvars, byref
+G_M19176_IG22:        ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, gcvars, byref
             ; gcrRegs -[x1-x2 x21]
             ; byrRegs +[x19]
             ldrb    w2, [x19, #0x0A]
@@ -193,19 +220,14 @@ G_M19176_IG17:        ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=100
             movk    x3, #0xD1FFAB1E LSL #32
             ldr     x3, [x3]
                        ;; size=24 bbWeight=0.11 PerfScore 0.86
-G_M19176_IG18:        ; bbWeight=0.11, epilog, nogc, extend
+G_M19176_IG23:        ; bbWeight=0.11, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             br      x3
                        ;; size=16 bbWeight=0.11 PerfScore 0.53
-G_M19176_IG19:        ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, gcvars, byref
-            ; gcrRegs -[x0-x1] +[x21]
-            mov     w0, #1
-            b       G_M19176_IG11
-                       ;; size=8 bbWeight=0.11 PerfScore 0.16
-G_M19176_IG20:        ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            ; gcrRegs -[x21]
+G_M19176_IG24:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, gcvars, byref
+            ; gcrRegs -[x0-x1]
             ldrb    w2, [x19, #0x0A]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
@@ -219,14 +241,14 @@ G_M19176_IG20:        ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19
             movk    x3, #0xD1FFAB1E LSL #32
             ldr     x3, [x3]
                        ;; size=40 bbWeight=0 PerfScore 0.00
-G_M19176_IG21:        ; bbWeight=0, epilog, nogc, extend
+G_M19176_IG25:        ; bbWeight=0, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             br      x3
                        ;; size=16 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 456, prolog size 16, PerfScore 57.88, instruction count 114, allocated bytes for code 456 (MethodHash=decbb517) for method System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
+; Total bytes of code 496, prolog size 16, PerfScore 60.47, instruction count 124, allocated bytes for code 496 (MethodHash=decbb517) for method System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -237,7 +259,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 114 (0x00072) Actual length = 456 (0x0001c8)
+  Function Length   : 124 (0x0007c) Actual length = 496 (0x0001f0)
   ---- 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.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.linux.arm64.checked.mch 1 0 1 0 -0 +36
benchmarks.run_tiered.linux.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.linux.arm64.checked.mch 2 2 0 0 -88 +0
libraries.crossgen2.linux.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.linux.arm64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.linux.arm64.Release.mch 23 1 13 9 -8 +140
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 0 0 0 0 -0 +0
realworld.run.linux.arm64.checked.mch 0 0 0 0 -0 +0
smoke_tests.nativeaot.linux.arm64.checked.mch 0 0 0 0 -0 +0
26 3 14 9 -96 +176

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm64.checked.mch 33,395 2,755 30,640 4 (0.01%) 241 (0.72%)
benchmarks.run_pgo.linux.arm64.checked.mch 153,548 60,106 93,442 162 (0.11%) 308 (0.20%)
benchmarks.run_tiered.linux.arm64.checked.mch 63,895 47,942 15,953 2 (0.00%) 88 (0.14%)
coreclr_tests.run.linux.arm64.checked.mch 627,645 383,770 243,875 415 (0.07%) 826 (0.13%)
libraries.crossgen2.linux.arm64.checked.mch 233,777 15 233,762 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm64.checked.mch 292,327 6 292,321 8 (0.00%) 1,913 (0.65%)
libraries_tests.run.linux.arm64.Release.mch 736,193 487,495 248,698 3,456 (0.47%) 4,645 (0.63%)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 301,977 21,560 280,417 10 (0.00%) 2,094 (0.69%)
realworld.run.linux.arm64.checked.mch 32,964 151 32,813 3 (0.01%) 340 (1.02%)
smoke_tests.nativeaot.linux.arm64.checked.mch 19,039 6 19,033 0 (0.00%) 2 (0.01%)
2,494,760 1,003,806 1,490,954 4,060 (0.16%) 10,457 (0.42%)

jit-analyze output

benchmarks.run_pgo.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 80916664 (overridden on cmd)
Total bytes of diff: 80916700 (overridden on cmd)
Total bytes of delta: 36 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          36 : 128897.dasm (7.63 % of base)

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

Top method regressions (bytes):
          36 (7.63 % of base) : 128897.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)

Top method regressions (percentages):
          36 (7.63 % of base) : 128897.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)

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


coreclr_tests.run.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 508918764 (overridden on cmd)
Total bytes of diff: 508918676 (overridden on cmd)
Total bytes of delta: -88 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -48 : 425431.dasm (-2.84 % of base)
         -40 : 416664.dasm (-2.30 % of base)

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

Top method improvements (bytes):
         -48 (-2.84 % of base) : 425431.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
         -40 (-2.30 % of base) : 416664.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

Top method improvements (percentages):
         -48 (-2.84 % of base) : 425431.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
         -40 (-2.30 % of base) : 416664.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.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 379714156 (overridden on cmd)
Total bytes of diff: 379714288 (overridden on cmd)
Total bytes of delta: 132 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          40 : 398419.dasm (8.77 % of base)
          32 : 524320.dasm (2.48 % of base)
          12 : 471778.dasm (1.30 % of base)
           8 : 226027.dasm (0.75 % of base)
           8 : 180842.dasm (0.83 % of base)
           8 : 641521.dasm (0.73 % of base)
           8 : 713901.dasm (1.15 % of base)
           4 : 126691.dasm (0.51 % of base)
           4 : 609678.dasm (0.58 % of base)
           4 : 670083.dasm (0.05 % of base)
           4 : 178133.dasm (0.93 % of base)
           4 : 359191.dasm (0.21 % of base)
           4 : 709290.dasm (0.13 % of base)

Top file improvements (bytes):
          -8 : 176599.dasm (-0.61 % of base)

14 total files with Code Size differences (1 improved, 13 regressed), 9 unchanged.

Top method regressions (bytes):
          40 (8.77 % of base) : 398419.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
          32 (2.48 % of base) : 524320.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
          12 (1.30 % of base) : 471778.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
           8 (0.83 % of base) : 180842.dasm - Microsoft.Cci.MetadataWriter:ResolveEntityHandleFromPseudoToken(int):System.Reflection.Metadata.EntityHandle:this (Tier1)
           8 (1.15 % of base) : 713901.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
           8 (0.75 % of base) : 226027.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
           8 (0.73 % of base) : 641521.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
           4 (0.05 % of base) : 670083.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1054_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (Tier1)
           4 (0.93 % of base) : 178133.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetVariablesContainingSymbol(Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)
           4 (0.13 % of base) : 709290.dasm - Microsoft.CodeAnalysis.Options.SolutionOptionSet:GetInternalOptionValue(Microsoft.CodeAnalysis.Options.OptionKey):System.Object:this (Tier1)
           4 (0.51 % of base) : 126691.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
           4 (0.21 % of base) : 359191.dasm - System.Linq.Enumerable+AppendPrepend1Iterator`1[int]:LazyToArray():int[]:this (Tier1)
           4 (0.58 % of base) : 609678.dasm - System.Text.Json.ReadStack:<JsonPath>g__AppendStackFrame|22_0(System.Text.StringBuilder,byref) (Tier1)

Top method improvements (bytes):
          -8 (-0.61 % of base) : 176599.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:<EnsureRequiredMembersCalculated>g__tryCalculateRequiredMembers|191_0(byref):ubyte:this (Tier1)

Top method regressions (percentages):
          40 (8.77 % of base) : 398419.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
          32 (2.48 % of base) : 524320.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
          12 (1.30 % of base) : 471778.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
           8 (1.15 % of base) : 713901.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
           4 (0.93 % of base) : 178133.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetVariablesContainingSymbol(Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)
           8 (0.83 % of base) : 180842.dasm - Microsoft.Cci.MetadataWriter:ResolveEntityHandleFromPseudoToken(int):System.Reflection.Metadata.EntityHandle:this (Tier1)
           8 (0.75 % of base) : 226027.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
           8 (0.73 % of base) : 641521.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
           4 (0.58 % of base) : 609678.dasm - System.Text.Json.ReadStack:<JsonPath>g__AppendStackFrame|22_0(System.Text.StringBuilder,byref) (Tier1)
           4 (0.51 % of base) : 126691.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
           4 (0.21 % of base) : 359191.dasm - System.Linq.Enumerable+AppendPrepend1Iterator`1[int]:LazyToArray():int[]:this (Tier1)
           4 (0.13 % of base) : 709290.dasm - Microsoft.CodeAnalysis.Options.SolutionOptionSet:GetInternalOptionValue(Microsoft.CodeAnalysis.Options.OptionKey):System.Object:this (Tier1)
           4 (0.05 % of base) : 670083.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1054_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (Tier1)

Top method improvements (percentages):
          -8 (-0.61 % of base) : 176599.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:<EnsureRequiredMembersCalculated>g__tryCalculateRequiredMembers|191_0(byref):ubyte:this (Tier1)

14 total methods with Code Size differences (1 improved, 13 regressed).



linux x64

Diffs are based on 2,588,583 contexts (1,052,329 MinOpts, 1,536,254 FullOpts).

MISSED contexts: base: 3,628 (0.14%), diff: 10,052 (0.39%)

Overall (+230 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 68,442,860 +60
coreclr_tests.run.linux.x64.checked.mch 458,922,977 -64
libraries_tests.run.linux.x64.Release.mch 332,086,382 +234

FullOpts (+230 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 48,613,103 +60
coreclr_tests.run.linux.x64.checked.mch 132,364,842 -64
libraries_tests.run.linux.x64.Release.mch 147,696,861 +234

Example diffs

benchmarks.run_pgo.linux.x64.checked.mch

+60 (+17.96%) : 141275.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)

@@ -10,76 +10,78 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  8,  6.00)     ref  ->  rbx         this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-;  V01 loc0         [V01,T01] (  5,  3.00)     int  ->  r15        
-;  V02 loc1         [V02,T22] (  3,  0.00)     ref  ->  r14         class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V03 loc2         [V03,T03] (  7,  2.50)     int  ->  r14        
-;  V04 loc3         [V04,T11] (  7,  0.00)     int  ->  rbx        
+;  V01 loc0         [V01,T02] (  5,  3.00)     int  ->  r15        
+;  V02 loc1         [V02,T24] (  3,  0.00)     ref  ->  r13         class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V03 loc2         [V03,T04] (  7,  2.50)     int  ->  r14        
+;  V04 loc3         [V04,T13] (  7,  0.00)     int  ->  r14        
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T23] (  3,  0.00)     ref  ->  rsi         single-def "CASTCLASS eval op1"
-;  V07 tmp2         [V07,T25] (  3,  0.00)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
-;  V08 tmp3         [V08,T13] (  5,  0.00)     ref  ->  r14         class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V09 tmp4         [V09,T14] (  2,  0.00)     ref  ->  rax         class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
-;  V10 tmp5         [V10,T06] (  4,  2.00)     int  ->  r15         "Inline return value spill temp"
-;  V11 tmp6         [V11,T08] (  3,  1.43)     ref  ->  rax         class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V12 tmp7         [V12,T09] (  3,  1.00)     ref  ->  rdi         class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
-;  V13 tmp8         [V13,T05] (  2,  2.00)     ref  ->  rdi         "CASTCLASS eval op1"
+;  V06 tmp1         [V06,T25] (  3,  0.00)     ref  ->  rsi         single-def "CASTCLASS eval op1"
+;  V07 tmp2         [V07,T27] (  3,  0.00)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
+;  V08 tmp3         [V08,T15] (  5,  0.00)     ref  ->  r13         class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V09 tmp4         [V09,T16] (  2,  0.00)     ref  ->  rax         class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
+;  V10 tmp5         [V10,T08] (  4,  2.00)     int  ->  r15         "Inline return value spill temp"
+;  V11 tmp6         [V11,T10] (  3,  1.43)     ref  ->  rax         class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V12 tmp7         [V12,T11] (  3,  1.00)     ref  ->  rdi         class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+;  V13 tmp8         [V13,T07] (  2,  2.00)     ref  ->  rdi         "CASTCLASS eval op1"
 ;* V14 tmp9         [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
-;  V15 tmp10        [V15,T07] (  4,  1.75)     ref  ->  rdi         class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-;  V16 tmp11        [V16,T04] (  3,  2.00)     ref  ->  rax         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V17 tmp12        [V17,T10] (  4,  0.00)     int  ->  rdx         "Inlining Arg"
-;  V18 tmp13        [V18,T26] (  3,  0   )     ref  ->  rax         "arr expr"
-;  V19 tmp14        [V19,T12] (  3,  0.00)     ref  ->  rax         "arr expr"
-;  V20 tmp15        [V20,T15] (  2,  0.00)     ref  ->  rsi         "arr expr"
-;  V21 tmp16        [V21,T16] (  2,  0.00)     ref  ->  rdi         "argument with side effect"
-;  V22 tmp17        [V22,T17] (  2,  0.00)     ref  ->  rsi         "argument with side effect"
-;  V23 cse0         [V23,T19] (  3,  0.00)     int  ->  rdi         "CSE - conservative"
-;  V24 cse1         [V24,T18] (  3,  0.00)     ref  ->  rsi         "CSE - conservative"
-;  V25 cse2         [V25,T24] (  3,  0.00)     int  ->  r15         "CSE - conservative"
-;  V26 cse3         [V26,T20] (  3,  0.00)     int  ->  rcx         "CSE - conservative"
-;  V27 cse4         [V27,T21] (  3,  0.00)     int  ->  rbx         "CSE - conservative"
-;  V28 cse5         [V28,T02] (  3,  2.71)     ref  ->  rsi         "CSE - aggressive"
+;  V15 tmp10        [V15,T09] (  4,  1.75)     ref  ->  rdi         class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
+;  V16 tmp11        [V16,T06] (  3,  2.00)     ref  ->  r13         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V17 tmp12        [V17,T12] (  4,  0.00)     int  ->  rdx         "Inlining Arg"
+;  V18 tmp13        [V18,T28] (  3,  0   )     ref  ->  rax         "arr expr"
+;  V19 tmp14        [V19,T14] (  3,  0.00)     ref  ->  rax         "arr expr"
+;  V20 tmp15        [V20,T17] (  2,  0.00)     ref  ->  rsi         "arr expr"
+;  V21 tmp16        [V21,T18] (  2,  0.00)     ref  ->  rdi         "argument with side effect"
+;  V22 tmp17        [V22,T19] (  2,  0.00)     ref  ->  rsi         "argument with side effect"
+;  V23 cse0         [V23,T21] (  3,  0.00)     int  ->  rdi         "CSE - conservative"
+;  V24 cse1         [V24,T20] (  3,  0.00)     ref  ->  rsi         "CSE - conservative"
+;  V25 cse2         [V25,T26] (  3,  0.00)     int  ->  r15         "CSE - conservative"
+;  V26 cse3         [V26,T22] (  3,  0.00)     int  ->  rcx         "CSE - conservative"
+;  V27 cse4         [V27,T23] (  3,  0.00)     int  ->  r14         "CSE - conservative"
+;  V28 cse5         [V28,T03] (  3,  2.71)     ref  ->  rsi         "CSE - aggressive"
+;  V29 rat0         [V29,T05] (  3,  2.25)     ref  ->  rsi         "Spilling to split statement for tree"
+;  V30 rat1         [V30,T01] (  5,  3.75)     ref  ->  r13         class-hnd "replacement local" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
 ;
-; Lcl frame size = 8
+; Lcl frame size = 0
 
 G_M41283_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rbp
        push     r15
        push     r14
+       push     r13
        push     rbx
-       push     rax
        lea      rbp, [rsp+0x20]
        mov      rbx, rdi
        ; gcrRegs +[rbx]
-                       ;; size=15 bbWeight=1 PerfScore 5.75
-G_M41283_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+                       ;; size=16 bbWeight=1 PerfScore 5.75
+G_M41283_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        call     <unknown method>
        test     eax, eax
-       je       G_M41283_IG21
+       je       G_M41283_IG24
        test     byte  ptr [rbx+0x28], 64
-       jne      G_M41283_IG21
+       jne      G_M41283_IG24
        mov      rsi, gword ptr [rbx+0x08]
        ; gcrRegs +[rsi]
        test     rsi, rsi
-       je       SHORT G_M41283_IG11
-                       ;; size=32 bbWeight=1 PerfScore 9.50
+       je       G_M41283_IG14
+                       ;; size=36 bbWeight=1 PerfScore 9.50
 G_M41283_IG03:        ; bbWeight=0.71, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]
        call     CORINFO_HELP_ISINSTANCEOFCLASS
        ; gcrRegs -[rsi] +[rax]
        test     rax, rax
-       jne      G_M41283_IG23
+       jne      G_M41283_IG26
        mov      r15d, 1
                        ;; size=30 bbWeight=0.71 PerfScore 1.96
-G_M41283_IG04:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG04:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
        test     r15d, r15d
-       je       SHORT G_M41283_IG13
-                       ;; size=5 bbWeight=1 PerfScore 1.25
-G_M41283_IG05:        ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+       je       G_M41283_IG16
+                       ;; size=9 bbWeight=1 PerfScore 1.25
+G_M41283_IG05:        ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        xor      r14d, r14d
        test     r15d, r15d
-       jle      SHORT G_M41283_IG13
-                       ;; size=8 bbWeight=0.50 PerfScore 0.75
+       jle      G_M41283_IG16
+                       ;; size=12 bbWeight=0.50 PerfScore 0.75
 G_M41283_IG06:        ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        mov      rdi, gword ptr [rbx+0x08]
        ; gcrRegs +[rdi]
@@ -89,135 +91,153 @@ G_M41283_IG06:        ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
 G_M41283_IG07:        ; bbWeight=0.25, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
        mov      rsi, 0xD1FFAB1E      ; System.Text.RegularExpressions.RegexNode
        cmp      qword ptr [rdi], rsi
-       je       SHORT G_M41283_IG12
+       je       SHORT G_M41283_IG15
                        ;; size=15 bbWeight=0.25 PerfScore 1.06
 G_M41283_IG08:        ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rdi]
        mov      rsi, gword ptr [rbx+0x08]
        ; gcrRegs +[rsi]
+       mov      r13, rsi
+       ; gcrRegs +[r13]
+       test     r13, r13
+       je       SHORT G_M41283_IG11
+                       ;; size=12 bbWeight=0.50 PerfScore 1.75
+G_M41283_IG09:        ; bbWeight=0.25, gcrefRegs=2048 {rbx rsi r13}, byrefRegs=0000 {}, byref, isz
+       mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]
+       cmp      qword ptr [r13], rdi
+       je       SHORT G_M41283_IG11
+                       ;; size=16 bbWeight=0.25 PerfScore 1.06
+G_M41283_IG10:        ; bbWeight=0.13, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[r13]
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]
        call     CORINFO_HELP_CHKCASTCLASS
        ; gcrRegs -[rsi] +[rax]
-       cmp      r14d, dword ptr [rax+0x10]
-       jb       SHORT G_M41283_IG10
-                       ;; size=25 bbWeight=0.50 PerfScore 3.63
-G_M41283_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rax rbx]
+       mov      r13, rax
+       ; gcrRegs +[r13]
+                       ;; size=18 bbWeight=0.13 PerfScore 0.19
+G_M41283_IG11:        ; bbWeight=0.50, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rax]
+       cmp      r14d, dword ptr [r13+0x10]
+       jb       SHORT G_M41283_IG13
+                       ;; size=6 bbWeight=0.50 PerfScore 2.00
+G_M41283_IG12:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rbx r13]
        call     [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()]
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
-G_M41283_IG10:        ; bbWeight=0, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs +[rax rbx]
-       mov      rax, gword ptr [rax+0x08]
+G_M41283_IG13:        ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs +[rbx r13]
+       mov      rax, gword ptr [r13+0x08]
+       ; gcrRegs +[rax]
        cmp      r14d, dword ptr [rax+0x08]
-       jae      G_M41283_IG20
+       jae      G_M41283_IG23
        mov      ecx, r14d
        mov      rdi, gword ptr [rax+8*rcx+0x10]
        ; gcrRegs +[rdi]
-       jmp      SHORT G_M41283_IG12
+       jmp      SHORT G_M41283_IG15
                        ;; size=24 bbWeight=0 PerfScore 0.00
-G_M41283_IG11:        ; bbWeight=0.29, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rax rdi]
+G_M41283_IG14:        ; bbWeight=0.29, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rax rdi r13]
        xor      r15d, r15d
-       jmp      SHORT G_M41283_IG04
-                       ;; size=5 bbWeight=0.29 PerfScore 0.64
-G_M41283_IG12:        ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+       jmp      G_M41283_IG04
+                       ;; size=8 bbWeight=0.29 PerfScore 0.64
+G_M41283_IG15:        ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rdi]
        cmp      dword ptr [rdi], edi
        call     [System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this]
        ; gcrRegs -[rdi]
        inc      r14d
        cmp      r14d, r15d
-       jl       SHORT G_M41283_IG06
-                       ;; size=16 bbWeight=0.50 PerfScore 3.75
-G_M41283_IG13:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+       jl       G_M41283_IG06
+                       ;; size=20 bbWeight=0.50 PerfScore 3.75
+G_M41283_IG16:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        cmp      byte  ptr [rbx+0x2E], 25
-       jne      SHORT G_M41283_IG21
-                       ;; size=6 bbWeight=1 PerfScore 4.00
-G_M41283_IG14:        ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+       jne      G_M41283_IG24
+                       ;; size=10 bbWeight=1 PerfScore 4.00
+G_M41283_IG17:        ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        mov      rsi, gword ptr [rbx+0x08]
        ; gcrRegs +[rsi]
-       mov      r14, rsi
-       ; gcrRegs +[r14]
-       test     r14, r14
-       jne      SHORT G_M41283_IG18
+       mov      r13, rsi
+       ; gcrRegs +[r13]
+       test     r13, r13
+       jne      SHORT G_M41283_IG21
                        ;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG15:        ; bbWeight=0.00, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG18:        ; bbWeight=0.00, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rbx rsi]
-       xor      ebx, ebx
+       xor      r14d, r14d
        dec      r15d
        test     r15d, r15d
-       jle      SHORT G_M41283_IG21
-                       ;; size=10 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG16:        ; bbWeight=0.00, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
-       mov      edi, dword ptr [r14+0x10]
-       cmp      ebx, edi
-       jae      SHORT G_M41283_IG09
-       mov      rsi, gword ptr [r14+0x08]
+       jle      SHORT G_M41283_IG24
+                       ;; size=11 bbWeight=0.00 PerfScore 0.00
+G_M41283_IG19:        ; bbWeight=0.00, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
+       mov      edi, dword ptr [r13+0x10]
+       cmp      r14d, edi
+       jae      SHORT G_M41283_IG12
+       mov      rsi, gword ptr [r13+0x08]
        ; gcrRegs +[rsi]
        mov      rax, rsi
        ; gcrRegs +[rax]
        mov      ecx, dword ptr [rax+0x08]
-       cmp      ebx, ecx
-       jae      SHORT G_M41283_IG20
-       mov      edx, ebx
+       cmp      r14d, ecx
...

coreclr_tests.run.linux.x64.checked.mch

-35 (-2.77%) : 415741.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

@@ -15,71 +15,70 @@
 ;  V03 loc1         [V03,T04] (  8,  5.67)     ref  ->  r13         class-hnd exact <Internal.TypeSystem.InstantiatedType>
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct (24) [rsp+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   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V07 tmp3         [V07,T32] (  2,  0.83)     ref  ->  rdi         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-;  V08 tmp4         [V08,T21] (  3,  1.66)    long  ->  rax         "fgMakeTemp is creating a new local variable"
-;  V09 tmp5         [V09,T43] (  2,  0   )     ref  ->  rbx         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2         [V06,T32] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V07 tmp3         [V07,T31] (  2,  0.83)     ref  ->  rdi         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+;  V08 tmp4         [V08,T20] (  3,  1.66)    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V09 tmp5         [V09,T42] (  2,  0   )     ref  ->  rbx         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
 ;  V10 tmp6         [V10,T05] (  7,  5.18)     ref  ->  r12         class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
 ;  V11 tmp7         [V11,T06] ( 14,  5.17)     ref  ->  r14         "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.57)     ref  ->  r15         "guarded devirt return temp"
+;  V13 tmp9         [V13,T10] (  8,  2.57)     ref  ->  r15         "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,T18] (  4,  1.76)     ref  ->  r15         "guarded devirt return temp"
+;  V15 tmp11        [V15,T17] (  4,  1.76)     ref  ->  r15         "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,T17] (  8,  1.84)     ref  ->  r13         "guarded devirt return temp"
+;  V17 tmp13        [V17,T16] (  8,  1.84)     ref  ->  r13         "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.17)     int  ->  rdi        
-;  V21 tmp17        [V21,T20] (  3,  1.67)     ref  ->  [rbp-0x38]  class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;  V20 tmp16        [V20,T28] (  3,  1.17)     int  ->  rdi        
+;  V21 tmp17        [V21,T19] (  3,  1.67)     ref  ->  [rbp-0x38]  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,T34] (  3,  0.80)     ref  ->  rax         "guarded devirt return temp"
+;  V23 tmp19        [V23,T33] (  3,  0.80)     ref  ->  rax         "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,T35] (  3,  0.76)     ref  ->  registers   "guarded devirt return temp"
-;  V26 tmp22        [V26,T15] (  5,  2.15)     ref  ->  rdi         single-def "guarded devirt arg temp"
+;  V25 tmp21        [V25,T34] (  3,  0.76)     ref  ->  registers   "guarded devirt return temp"
+;  V26 tmp22        [V26,T14] (  5,  2.15)     ref  ->  rdi         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.69)     ref  ->  rax         "guarded devirt return temp"
-;  V29 tmp25        [V29,T16] (  5,  2.08)     ref  ->  rdi         single-def "guarded devirt arg temp"
+;  V28 tmp24        [V28,T35] (  3,  0.69)     ref  ->  rax         "guarded devirt return temp"
+;  V29 tmp25        [V29,T15] (  5,  2.08)     ref  ->  rdi         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,T10] (  5,  2.63)     ref  ->  rdi         class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-;  V32 tmp28        [V32,T30] (  3,  0.88)     ref  ->  r15         "guarded devirt return temp"
+;  V31 tmp27        [V31,T08] (  5,  2.63)     ref  ->  rdi         class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+;  V32 tmp28        [V32,T29] (  3,  0.88)     ref  ->  r15         "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,T02] (  5,  5.86)     ref  ->  rdi         class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
 ;  V36 tmp32        [V36,T03] (  5,  5.86)     ref  ->  rdi         class-hnd "spilling QMark2" <<unknown class>>
 ;* V37 tmp33        [V37    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
 ;  V38 tmp34        [V38,T07] (  4,  3.90)     ref  ->  r15         class-hnd exact single-def "impAppendStmt" <<unknown class>>
-;  V39 tmp35        [V39,T14] (  2,  2.34)     int  ->  rbx         "impAppendStmt"
-;  V40 tmp36        [V40,T27] (  4,  1.17)     ref  ->  rdi         "guarded devirt return temp"
+;  V39 tmp35        [V39,T13] (  2,  2.34)     int  ->  rbx         "impAppendStmt"
+;  V40 tmp36        [V40,T26] (  4,  1.17)     ref  ->  rdi         "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.07)   byref  ->  r12         single-def "impAppendStmt"
-;  V43 tmp39        [V43,T42] (  3,  0.03)     int  ->  rax         "guarded devirt return temp"
-;  V44 tmp40        [V44,T40] (  5,  0.10)     ref  ->  rdi         single-def "guarded devirt arg temp"
+;  V42 tmp38        [V42,T40] (  2,  0.07)   byref  ->  r12         single-def "impAppendStmt"
+;  V43 tmp39        [V43,T41] (  3,  0.03)     int  ->  rax         "guarded devirt return temp"
+;  V44 tmp40        [V44,T39] (  5,  0.10)     ref  ->  rdi         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.17)     ref  ->  rax         class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+;  V47 tmp43        [V47,T27] (  3,  1.17)     ref  ->  rax         class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
 ;* V48 tmp44        [V48    ] (  0,  0   )  struct (24) zero-ref    "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
 ;  V49 tmp45        [V49    ] (  2,  0.98)     ref  ->  [rbp-0x30]  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,T22] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-;  V51 tmp47        [V51,T09] (  4,  2.66)     ref  ->  rax         class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-;  V52 tmp48        [V52,T31] (  3,  0.83)     int  ->  rdi        
-;  V53 tmp49        [V53,T26] (  3,  1.18)     ref  ->  r12         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V50 tmp46        [V50,T21] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+;  V51 tmp47        [V51,T12] (  3,  2.49)     ref  ->  rax         class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+;  V52 tmp48        [V52,T30] (  3,  0.83)     int  ->  rdi        
+;  V53 tmp49        [V53,T25] (  3,  1.18)     ref  ->  r12         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,T37] (  3,  0.56)     ref  ->  rax         "guarded devirt return temp"
+;  V55 tmp51        [V55,T36] (  3,  0.56)     ref  ->  rax         "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,T38] (  3,  0.54)     ref  ->  r12         "guarded devirt return temp"
-;  V58 tmp54        [V58,T23] (  5,  1.52)     ref  ->  rdi         single-def "guarded devirt arg temp"
+;  V57 tmp53        [V57,T37] (  3,  0.54)     ref  ->  r12         "guarded devirt return temp"
+;  V58 tmp54        [V58,T22] (  5,  1.52)     ref  ->  rdi         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,T39] (  3,  0.49)     ref  ->  rax         "guarded devirt return temp"
-;  V61 tmp57        [V61,T24] (  5,  1.47)     ref  ->  rdi         single-def "guarded devirt arg temp"
+;  V60 tmp56        [V60,T38] (  3,  0.49)     ref  ->  rax         "guarded devirt return temp"
+;  V61 tmp57        [V61,T23] (  5,  1.47)     ref  ->  rdi         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,T13] (  8,  2.54)     ref  ->  r14         single-def "field V37._typicalMethodDef (fldOffset=0x0)" P-INDEP
-;  V64 tmp60        [V64,T11] (  8,  2.59)     ref  ->  r13         single-def "field V37._instantiatedType (fldOffset=0x8)" P-INDEP
-;  V65 tmp61        [V65,T25] (  3,  1.37)     int  ->  rbx         single-def "field V37._hashcode (fldOffset=0x10)" P-INDEP
+;  V63 tmp59        [V63,T11] (  8,  2.54)     ref  ->  r14         single-def "field V37._typicalMethodDef (fldOffset=0x0)" P-INDEP
+;  V64 tmp60        [V64,T09] (  8,  2.59)     ref  ->  r13         single-def "field V37._instantiatedType (fldOffset=0x8)" P-INDEP
+;  V65 tmp61        [V65,T24] (  3,  1.37)     int  ->  rbx         single-def "field V37._hashcode (fldOffset=0x10)" 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=0x8)" P-INDEP
 ;* V68 tmp64        [V68    ] (  0,  0   )     int  ->  zero-ref    single-def "field V48._hashcode (fldOffset=0x10)" P-INDEP
-;  V69 cse0         [V69,T19] (  3,  1.76)     ref  ->  rdi         "CSE - moderate"
-;  V70 rat0         [V70,T08] (  6,  3.32)     ref  ->  rcx         class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
+;  V69 cse0         [V69,T18] (  3,  1.76)     ref  ->  rdi         "CSE - moderate"
 ;
 ; Lcl frame size = 40
 
@@ -134,7 +133,7 @@ G_M10698_IG07:        ; bbWeight=0.59, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0
        ; gcrRegs +[r12]
        mov      rdi, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaMethod
        cmp      qword ptr [r14], rdi
-       jne      G_M10698_IG49
+       jne      G_M10698_IG34
        mov      r15, gword ptr [r14+0x10]
        ; gcrRegs +[r15]
                        ;; size=27 bbWeight=0.59 PerfScore 4.83
@@ -149,17 +148,17 @@ G_M10698_IG09:        ; bbWeight=0.55, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byr
 G_M10698_IG10:        ; bbWeight=0.40, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
        mov      rdi, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaType
        cmp      qword ptr [r12], rdi
-       jne      G_M10698_IG42
+       jne      G_M10698_IG43
                        ;; size=20 bbWeight=0.40 PerfScore 1.69
 G_M10698_IG11:        ; bbWeight=0.36, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
        mov      rdi, gword ptr [r12+0x58]
        ; gcrRegs +[rdi]
        mov      rax, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaAssembly
        cmp      qword ptr [rdi], rax
-       jne      G_M10698_IG50
+       jne      G_M10698_IG35
        mov      rax, gword ptr [rdi+0x08]
        ; gcrRegs +[rax]
-       jmp      G_M10698_IG35
+       jmp      G_M10698_IG36
                        ;; size=33 bbWeight=0.36 PerfScore 3.67
 G_M10698_IG12:        ; bbWeight=0.41, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax rdi r12-r14]
@@ -186,7 +185,7 @@ G_M10698_IG14:        ; bbWeight=0.59, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byr
        ; gcrRegs -[r12 r15]
        mov      rdi, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaMethod
        cmp      qword ptr [rbx], rdi
-       jne      G_M10698_IG44
+       jne      G_M10698_IG41
                        ;; size=40 bbWeight=0.59 PerfScore 6.88
 G_M10698_IG15:        ; bbWeight=0.44, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref
        mov      rdi, gword ptr [rbx+0x10]
@@ -194,7 +193,7 @@ G_M10698_IG15:        ; bbWeight=0.44, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0
        mov      rdi, gword ptr [rdi+0x58]
        mov      rax, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaAssembly
        cmp      qword ptr [rdi], rax
-       jne      G_M10698_IG52
+       jne      G_M10698_IG48
        mov      r15, gword ptr [rdi+0x08]
        ; gcrRegs +[r15]
                        ;; size=31 bbWeight=0.44 PerfScore 4.50
@@ -235,11 +234,11 @@ G_M10698_IG17:        ; bbWeight=0.59, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0
        mov      ebx, dword ptr [r13+0x68]
        mov      rdi, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaMethod
        cmp      qword ptr [r14], rdi
-       jne      G_M10698_IG55
+       jne      G_M10698_IG51
        mov      rdi, gword ptr [r14+0x20]
        ; gcrRegs +[rdi]
        test     rdi, rdi
-       je       G_M10698_IG54
+       je       G_M10698_IG50
                        ;; size=36 bbWeight=0.59 PerfScore 5.56
 G_M10698_IG18:        ; bbWeight=0.59, gcrefRegs=E080 {rdi r13 r14 r15}, byrefRegs=0000 {}, byref
        call     [Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int]
@@ -255,7 +254,7 @@ G_M10698_IG18:        ; bbWeight=0.59, gcrefRegs=E080 {rdi r13 r14 r15}, byrefRe
        call     [<unknown method>]
        ; gcrRegs -[rdi]
        test     eax, eax
-       je       G_M10698_IG45
+       je       G_M10698_IG40
                        ;; size=45 bbWeight=0.59 PerfScore 8.34
 G_M10698_IG19:        ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[r13-r15]
@@ -280,7 +279,7 @@ G_M10698_IG21:        ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=E00
        ; gcrRegs +[rdi]
        mov      rax, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaType
        cmp      qword ptr [rdi], rax
-       jne      G_M10698_IG53
+       jne      G_M10698_IG49
        call     [Internal.TypeSystem.Ecma.EcmaType:GetHashCode():int:this]
        ; gcrRegs -[rdi]
                        ;; size=33 bbWeight=0.02 PerfScore 0.17
@@ -302,26 +301,26 @@ G_M10698_IG23:        ; bbWeight=0.41, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
        je       G_M10698_IG32
        mov      rdi, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaMethod
        cmp      qword ptr [r14], rdi
-       jne      G_M10698_IG59
+       jne      G_M10698_IG55
        mov      r13, gword ptr [r14+0x10]
        ; gcrRegs +[r13]
                        ;; size=42 bbWeight=0.41 PerfScore 4.35
 G_M10698_IG24:        ; bbWeight=0.41, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbx]
        test     r13, r13
-       je       G_M10698_IG46
+       je       G_M10698_IG42
                        ;; size=9 bbWeight=0.41 PerfScore 0.52
 G_M10698_IG25:        ; bbWeight=0.28, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref
        mov      rdi, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaType
        cmp      qword ptr [r15], rdi
-       jne      G_M10698_IG47
+       jne      G_M10698_IG45
                        ;; size=19 bbWeight=0.28 PerfScore 1.20
 G_M10698_IG26:        ; bbWeight=0.25, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref
        mov      rdi, gword ptr [r15+0x58]
        ; gcrRegs +[rdi]
        mov      rax, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaAssembly
        cmp      qword ptr [rdi], rax
-       jne      G_M10698_IG60
+       jne      G_M10698_IG56
        mov      r12, gword ptr [rdi+0x08]
        ; gcrRegs +[r12]
                        ;; size=27 bbWeight=0.25 PerfScore 2.09
@@ -329,14 +328,14 @@ G_M10698_IG27:        ; bbWeight=0.28, gcrefRegs=F000 {r12 r13 r14 r15}, byrefRe
        ; gcrRegs -[rdi]
        mov      rdi, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaType
        cmp      qword ptr [r13], rdi
-       jne      G_M10698_IG48
+       jne      G_M10698_IG46
                        ;; size=20 bbWeight=0.28 PerfScore 1.20
 G_M10698_IG28:        ; bbWeight=0.25, gcrefRegs=F000 {r12 r13 r14 r15}, byrefRegs=0000 {}, byref
        mov      rdi, gword ptr [r13+0x58]
        ; gcrRegs +[rdi]
        mov      rax, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaAssembly
        cmp      qword ptr [rdi], rax
-       jne      G_M10698_IG61
+       jne      G_M10698_IG57
        mov      rax, gword ptr [rdi+0x08]
        ; gcrRegs +[rax]
                        ;; size=27 bbWeight=0.25 PerfScore 2.02
@@ -367,7 +366,7 @@ G_M10698_IG31:        ; bbWeight=0.41, epilog, nogc, extend
        pop      rbp
        ret      
                        ;; size=15 bbWeight=0.41 PerfScore 1.76
-G_M10698_IG32:        ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10698_IG32:        ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs -[rax r14] +[rbx r15]
        mov      rdi, rbx
        ; gcrRegs +[rdi]
@@ -376,154 +375,28 @@ G_M10698_IG32:        ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=800
        call     [rax+0x18]<unknown method>
        ; gcrRegs -[rdi] +[rax]
        cmp      byte  ptr [rax], al
-       mov      rcx, rax
-       ; gcrRegs +[rcx]
...

-29 (-2.22%) : 420658.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

@@ -15,87 +15,86 @@
 ;  V03 loc1         [V03,T05] (  5,  3.62)     ref  ->  r12         class-hnd exact <Internal.TypeSystem.InstantiatedType>
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct (24) [rsp+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,T36] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V07 tmp3         [V07,T35] (  2,  0.88)     ref  ->  rdi         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-;  V08 tmp4         [V08,T20] (  3,  1.75)    long  ->  rax         "fgMakeTemp is creating a new local variable"
-;  V09 tmp5         [V09,T46] (  2,  0   )     ref  ->  rbx         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2         [V06,T35] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V07 tmp3         [V07,T34] (  2,  0.88)     ref  ->  rdi         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+;  V08 tmp4         [V08,T19] (  3,  1.75)    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V09 tmp5         [V09,T45] (  2,  0   )     ref  ->  rbx         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
 ;  V10 tmp6         [V10,T04] (  7,  5.03)     ref  ->  r15         class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
-;  V11 tmp7         [V11,T17] (  3,  2   )     ref  ->  r13         "guarded devirt return temp"
+;  V11 tmp7         [V11,T16] (  3,  2   )     ref  ->  r13         "guarded devirt return temp"
 ;* V12 tmp8         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-;  V13 tmp9         [V13,T12] (  8,  2.47)     ref  ->  [rbp-0x38]  "guarded devirt return temp"
+;  V13 tmp9         [V13,T11] (  8,  2.47)     ref  ->  [rbp-0x38]  "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,T22] (  4,  1.69)     ref  ->  rbx         "guarded devirt return temp"
+;  V15 tmp11        [V15,T21] (  4,  1.69)     ref  ->  rbx         "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,T18] (  8,  1.94)     ref  ->  r12         "guarded devirt return temp"
+;  V17 tmp13        [V17,T17] (  8,  1.94)     ref  ->  r12         "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    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V21 tmp17        [V21    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V22 tmp18        [V22,T28] (  2,  0.79)     int  ->  rdi        
-;  V23 tmp19        [V23,T27] (  3,  1.66)     ref  ->  [rbp-0x40]  class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;  V22 tmp18        [V22,T27] (  2,  0.79)     int  ->  rdi        
+;  V23 tmp19        [V23,T26] (  3,  1.66)     ref  ->  [rbp-0x40]  class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
 ;* 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.79)     ref  ->  rcx         "guarded devirt return temp"
+;  V25 tmp21        [V25,T36] (  3,  0.79)     ref  ->  rcx         "guarded devirt return temp"
 ;* V26 tmp22        [V26    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V27 tmp23        [V27,T39] (  3,  0.75)     ref  ->  registers   "guarded devirt return temp"
-;  V28 tmp24        [V28,T16] (  5,  2.13)     ref  ->  rdi         single-def "guarded devirt arg temp"
+;  V27 tmp23        [V27,T38] (  3,  0.75)     ref  ->  registers   "guarded devirt return temp"
+;  V28 tmp24        [V28,T15] (  5,  2.13)     ref  ->  rdi         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,T38] (  3,  0.76)     ref  ->  rcx         "guarded devirt return temp"
-;  V31 tmp27        [V31,T14] (  5,  2.27)     ref  ->  rdi         single-def "guarded devirt arg temp"
+;  V30 tmp26        [V30,T37] (  3,  0.76)     ref  ->  rcx         "guarded devirt return temp"
+;  V31 tmp27        [V31,T13] (  5,  2.27)     ref  ->  rdi         single-def "guarded devirt arg 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   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V34 tmp30        [V34    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V35 tmp31        [V35    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V36 tmp32        [V36    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V37 tmp33        [V37,T09] (  5,  3.38)     ref  ->  rdi         class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-;  V38 tmp34        [V38,T32] (  3,  1.12)     ref  ->  rbx         "guarded devirt return temp"
+;  V37 tmp33        [V37,T08] (  5,  3.38)     ref  ->  rdi         class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+;  V38 tmp34        [V38,T31] (  3,  1.12)     ref  ->  rbx         "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,T24] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V42 tmp38        [V42,T25] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;* V41 tmp37        [V41,T23] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
+;* V42 tmp38        [V42,T24] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
 ;* V43 tmp39        [V43    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
 ;  V44 tmp40        [V44,T07] (  4,  3.77)     ref  ->  rbx         class-hnd exact single-def "impAppendStmt" <<unknown class>>
 ;* V45 tmp41        [V45    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V46 tmp42        [V46    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V47 tmp43        [V47    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V48 tmp44        [V48    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V49 tmp45        [V49,T15] (  2,  2.25)     int  ->  r15         "impAppendStmt"
-;  V50 tmp46        [V50,T31] (  4,  1.12)     ref  ->  rdi         "guarded devirt return temp"
+;  V49 tmp45        [V49,T14] (  2,  2.25)     int  ->  r15         "impAppendStmt"
+;  V50 tmp46        [V50,T30] (  4,  1.12)     ref  ->  rdi         "guarded devirt return temp"
 ;* V51 tmp47        [V51    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-;  V52 tmp48        [V52,T44] (  2,  0.08)   byref  ->  r15         single-def "impAppendStmt"
-;  V53 tmp49        [V53,T45] (  3,  0.04)     int  ->  rax         "guarded devirt return temp"
-;  V54 tmp50        [V54,T43] (  5,  0.12)     ref  ->  rdi         single-def "guarded devirt arg temp"
+;  V52 tmp48        [V52,T43] (  2,  0.08)   byref  ->  r15         single-def "impAppendStmt"
+;  V53 tmp49        [V53,T44] (  3,  0.04)     int  ->  rax         "guarded devirt return temp"
+;  V54 tmp50        [V54,T42] (  5,  0.12)     ref  ->  rdi         single-def "guarded devirt arg temp"
 ;* V55 tmp51        [V55    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
 ;* V56 tmp52        [V56    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V57 tmp53        [V57,T33] (  3,  1.12)     ref  ->  rax         class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+;  V57 tmp53        [V57,T32] (  3,  1.12)     ref  ->  rax         class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
 ;* V58 tmp54        [V58    ] (  0,  0   )  struct (24) zero-ref    "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
 ;  V59 tmp55        [V59    ] (  2,  0.93)     ref  ->  [rbp-0x30]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V60 tmp56        [V60,T21] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-;  V61 tmp57        [V61,T10] (  4,  2.82)     ref  ->  rax         class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-;  V62 tmp58        [V62,T34] (  2,  0.61)     int  ->  rdi        
-;  V63 tmp59        [V63,T30] (  3,  1.29)     ref  ->  rbx         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V60 tmp56        [V60,T20] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+;  V61 tmp57        [V61,T09] (  3,  2.62)     ref  ->  rax         class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+;  V62 tmp58        [V62,T33] (  2,  0.61)     int  ->  rdi        
+;  V63 tmp59        [V63,T29] (  3,  1.29)     ref  ->  rbx         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
 ;* V64 tmp60        [V64    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V65 tmp61        [V65,T40] (  3,  0.61)     ref  ->  rax         "guarded devirt return temp"
+;  V65 tmp61        [V65,T39] (  3,  0.61)     ref  ->  rax         "guarded devirt return temp"
 ;* V66 tmp62        [V66    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V67 tmp63        [V67,T42] (  3,  0.58)     ref  ->  rbx         "guarded devirt return temp"
-;  V68 tmp64        [V68,T26] (  5,  1.66)     ref  ->  rdi         single-def "guarded devirt arg temp"
+;  V67 tmp63        [V67,T41] (  3,  0.58)     ref  ->  rbx         "guarded devirt return temp"
+;  V68 tmp64        [V68,T25] (  5,  1.66)     ref  ->  rdi         single-def "guarded devirt arg temp"
 ;* V69 tmp65        [V69    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-;  V70 tmp66        [V70,T41] (  3,  0.59)     ref  ->  rax         "guarded devirt return temp"
-;  V71 tmp67        [V71,T19] (  5,  1.77)     ref  ->  rdi         single-def "guarded devirt arg temp"
+;  V70 tmp66        [V70,T40] (  3,  0.59)     ref  ->  rax         "guarded devirt return temp"
+;  V71 tmp67        [V71,T18] (  5,  1.77)     ref  ->  rdi         single-def "guarded devirt arg temp"
 ;* V72 tmp68        [V72    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
 ;* V73 tmp69        [V73    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V74 tmp70        [V74    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V75 tmp71        [V75    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V76 tmp72        [V76    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V77 tmp73        [V77,T13] (  8,  2.45)     ref  ->  r13         single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
-;  V78 tmp74        [V78,T11] (  8,  2.51)     ref  ->  r12         single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
-;  V79 tmp75        [V79,T29] (  3,  1.32)     int  ->  r15         single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
+;  V77 tmp73        [V77,T12] (  8,  2.45)     ref  ->  r13         single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
+;  V78 tmp74        [V78,T10] (  8,  2.51)     ref  ->  r12         single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
+;  V79 tmp75        [V79,T28] (  3,  1.32)     int  ->  r15         single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
 ;* V80 tmp76        [V80    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V58._typicalMethodDef (fldOffset=0x0)" P-INDEP
 ;* V81 tmp77        [V81    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V58._instantiatedType (fldOffset=0x8)" P-INDEP
 ;* V82 tmp78        [V82    ] (  0,  0   )     int  ->  zero-ref    single-def "field V58._hashcode (fldOffset=0x10)" P-INDEP
-;  V83 cse0         [V83,T23] (  3,  1.69)     ref  ->  rdi         "CSE - moderate"
+;  V83 cse0         [V83,T22] (  3,  1.69)     ref  ->  rdi         "CSE - moderate"
 ;  V84 cse1         [V84,T00] ( 18,  9.38)     ref  ->  rsi         multi-def "CSE - aggressive"
 ;  V85 cse2         [V85,T06] (  6,  4.12)    long  ->  r14         "CSE - moderate"
-;  V86 rat0         [V86,T08] (  6,  3.50)     ref  ->  rcx         class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
 ;
 ; Lcl frame size = 56
 
@@ -140,7 +139,7 @@ G_M10698_IG06:        ; bbWeight=0.56, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0
        mov      r15, gword ptr [r12+0x50]
        ; gcrRegs +[r15]
        cmp      qword ptr [r13], r14
-       jne      G_M10698_IG54
+       jne      G_M10698_IG48
        jmp      SHORT G_M10698_IG08
                        ;; size=17 bbWeight=0.56 PerfScore 4.50
 G_M10698_IG07:        ; bbWeight=0.44, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
@@ -178,7 +177,7 @@ G_M10698_IG12:        ; bbWeight=0.36, gcrefRegs=B009 {rax rbx r12 r13 r15}, byr
        ; gcrRegs +[rdi]
        mov      rcx, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaAssembly
        cmp      qword ptr [rdi], rcx
-       jne      G_M10698_IG55
+       jne      G_M10698_IG49
        mov      rcx, gword ptr [rdi+0x08]
        ; gcrRegs +[rcx]
                        ;; size=27 bbWeight=0.36 PerfScore 2.93
@@ -192,7 +191,7 @@ G_M10698_IG13:        ; bbWeight=0.39, gcrefRegs=B00B {rax rcx rbx r12 r13 r15},
        cmp      qword ptr [rax], rdi
        jne      SHORT G_M10698_IG16
                        ;; size=22 bbWeight=0.39 PerfScore 2.17
-G_M10698_IG14:        ; bbWeight=0.38, gcVars=0000000000001000 {V13}, gcrefRegs=B00C {rdx rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M10698_IG14:        ; bbWeight=0.38, gcVars=0000000000000800 {V13}, gcrefRegs=B00C {rdx rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs -[rax rcx]
        mov      rax, gword ptr [rbp-0x38]
        ; gcrRegs +[rax]
@@ -200,7 +199,7 @@ G_M10698_IG14:        ; bbWeight=0.38, gcVars=0000000000001000 {V13}, gcrefRegs=
        ; gcrRegs +[rdi]
        mov      rcx, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaAssembly
        cmp      qword ptr [rdi], rcx
-       jne      G_M10698_IG56
+       jne      G_M10698_IG50
        mov      rcx, gword ptr [rdi+0x08]
        ; gcrRegs +[rcx]
                        ;; size=31 bbWeight=0.38 PerfScore 3.51
@@ -214,9 +213,9 @@ G_M10698_IG15:        ; bbWeight=0.39, gcVars=0000000000000000 {}, gcrefRegs=B00
        jne      SHORT G_M10698_IG20
        jmp      SHORT G_M10698_IG19
                        ;; size=16 bbWeight=0.39 PerfScore 1.88
-G_M10698_IG16:        ; bbWeight=0.20, gcVars=0000000000001000 {V13}, gcrefRegs=B00C {rdx rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10698_IG16:        ; bbWeight=0.20, gcVars=0000000000000800 {V13}, gcrefRegs=B00C {rdx rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs -[rax rcx]
-       ; GC ptr vars +{V13}
+       ; GC ptr vars +{V11 V13}
        mov      gword ptr [rbp-0x40], rdx
        ; GC ptr vars +{V23}
        mov      rax, gword ptr [rbp-0x38]
@@ -225,7 +224,7 @@ G_M10698_IG16:        ; bbWeight=0.20, gcVars=0000000000001000 {V13}, gcrefRegs=
                        ;; size=10 bbWeight=0.20 PerfScore 0.79
 G_M10698_IG17:        ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs -[rdx]
-       ; GC ptr vars -{V13 V23}
+       ; GC ptr vars -{V11 V13 V23}
        mov      gword ptr [rbp-0x38], rax
        ; GC ptr vars +{V13}
        mov      rdi, r15
@@ -238,7 +237,7 @@ G_M10698_IG17:        ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=B00
        ; GC ptr vars +{V23}
        mov      rax, gword ptr [rbp-0x38]
                        ;; size=25 bbWeight=0.04 PerfScore 0.40
-G_M10698_IG18:        ; bbWeight=0.02, gcVars=0000000008000000 {V23}, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10698_IG18:        ; bbWeight=0.02, gcVars=0000000004000000 {V23}, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
        ; GC ptr vars -{V13}
        mov      rdi, rax
        ; gcrRegs +[rdi]
@@ -282,13 +281,13 @@ G_M10698_IG20:        ; bbWeight=0.56, gcVars=0000000000000000 {}, gcrefRegs=B00
                        ;; size=24 bbWeight=0.56 PerfScore 2.67
 G_M10698_IG21:        ; bbWeight=0.56, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref
        cmp      qword ptr [rbx], r14
-       jne      G_M10698_IG58
+       jne      G_M10698_IG52
        mov      rdi, gword ptr [rbx+0x10]
        ; gcrRegs +[rdi]
        mov      rdi, gword ptr [rdi+0x58]
        mov      rsi, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaAssembly
        cmp      qword ptr [rdi], rsi
-       jne      G_M10698_IG57
+       jne      G_M10698_IG51
        mov      rbx, gword ptr [rdi+0x08]
                        ;; size=40 bbWeight=0.56 PerfScore 8.02
 G_M10698_IG22:        ; bbWeight=0.56, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref, isz
@@ -323,11 +322,11 @@ G_M10698_IG24:        ; bbWeight=0.56, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0
 G_M10698_IG25:        ; bbWeight=0.56, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref
        mov      r15d, dword ptr [r12+0x68]
        cmp      qword ptr [r13], r14
-       jne      G_M10698_IG61
+       jne      G_M10698_IG54
        mov      rdi, gword ptr [r13+0x20]
        ; gcrRegs +[rdi]
        test     rdi, rdi
-       je       G_M10698_IG59
+       je       G_M10698_IG42
                        ;; size=28 bbWeight=0.56 PerfScore 5.20
 G_M10698_IG26:        ; bbWeight=0.56, gcrefRegs=3088 {rbx rdi r12 r13}, byrefRegs=0000 {}, byref
        call     [Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int]
@@ -368,14 +367,14 @@ G_M10698_IG29:        ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=B00
 G_M10698_IG30:        ; bbWeight=0.31, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0000 {}, byref
        mov      rdi, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaType
        cmp      qword ptr [r15], rdi
-       jne      G_M10698_IG52
+       jne      G_M10698_IG46
                        ;; size=19 bbWeight=0.31 PerfScore 1.31
 G_M10698_IG31:        ; bbWeight=0.28, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0000 {}, byref
        mov      rdi, gword ptr [r15+0x58]
        ; gcrRegs +[rdi]
        mov      rax, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaAssembly
        cmp      qword ptr [rdi], rax
-       jne      G_M10698_IG51
+       jne      G_M10698_IG59
        mov      rbx, gword ptr [rdi+0x08]
        ; gcrRegs +[rbx]
                        ;; size=27 bbWeight=0.28 PerfScore 2.28
@@ -383,14 +382,14 @@ G_M10698_IG32:        ; bbWeight=0.31, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRe
        ; gcrRegs -[rdi]
        mov      rdi, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaType
        cmp      qword ptr [r12], rdi
-       jne      G_M10698_IG53
+       jne      G_M10698_IG47
                        ;; size=20 bbWeight=0.31 PerfScore 1.31
 G_M10698_IG33:        ; bbWeight=0.29, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref
        mov      rdi, gword ptr [r12+0x58]
        ; gcrRegs +[rdi]
        mov      rax, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaAssembly
...

libraries_tests.run.linux.x64.Release.mch

-15 (-1.31%) : 52289.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:g_tryCalculateRequiredMembers|1910(byref):ubyte:this (Tier1)

@@ -12,10 +12,10 @@
 ;  V00 this         [V00,T13] ( 19,  9.24)     ref  ->  rbx         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
 ;  V01 arg1         [V01,T20] (  6,  3   )   byref  ->  r15         single-def
 ;* V02 loc0         [V02    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.String,Microsoft.CodeAnalysis.CSharp.Symbol]>
-;  V03 loc1         [V03,T31] (  2,  1   )   ubyte  ->  [rbp-0x2C]  single-def
+;  V03 loc1         [V03,T31] (  2,  1   )   ubyte  ->  [rbp-0x2C]  spill-single-def
 ;* V04 loc2         [V04    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbol]>
 ;* V05 loc3         [V05    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]>
-;  V06 loc4         [V06,T01] ( 13, 55.32)     ref  ->  rbx         class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+;  V06 loc4         [V06,T01] ( 13, 55.02)     ref  ->  rbx         class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
 ;  V07 loc5         [V07,T06] ( 10, 28.74)     ref  ->  [rbp-0x38]  class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol>
 ;  V08 loc6         [V08,T15] (  2,  0.38)     ref  ->  [rbp-0x40]  ld-addr-op class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
 ;  V09 loc7         [V09,T43] (  4,  0   )     ref  ->  rax         class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
@@ -37,7 +37,7 @@
 ;* V25 tmp15        [V25    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
 ;  V26 tmp16        [V26,T41] (  3,  0.13)     int  ->  rax         "guarded devirt return temp"
 ;* V27 tmp17        [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SubstitutedPropertySymbol>
-;  V28 tmp18        [V28,T11] (  3, 19.78)     ref  ->  registers   "guarded devirt return temp"
+;  V28 tmp18        [V28,T11] (  3, 19.78)     ref  ->  rsi         "guarded devirt return temp"
 ;* V29 tmp19        [V29    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol>
 ;  V30 tmp20        [V30,T35] (  3,  0.39)   byref  ->  r12         single-def "impAppendStmt"
 ;  V31 tmp21        [V31,T38] (  2,  0.26)     ref  ->  rsi         class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
@@ -59,7 +59,7 @@
 ;* V47 tmp37        [V47    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
 ;  V48 tmp38        [V48,T10] (  3, 20.16)   byref  ->  rax         "Inline stloc first use temp"
 ;* V49 tmp39        [V49    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V50 tmp40        [V50,T08] (  6, 21.11)     ref  ->  rdi         class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
+;  V50 tmp40        [V50,T08] (  6, 21.11)     ref  ->  rax         class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
 ;  V51 tmp41        [V51,T07] (  6, 22.45)     ref  ->  rdi         class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol>
 ;* V52 tmp42        [V52,T17] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
 ;  V53 tmp43        [V53,T30] (  3,  1.06)     int  ->  rax         "guarded devirt return temp"
@@ -85,7 +85,7 @@
 ;  V73 tmp63        [V73,T18] (  3,  8.04)     ref  ->  rsi         "field V41.array (fldOffset=0x0)" P-INDEP
 ;* V74 tmp64        [V74    ] (  0,  0   )     ref  ->  zero-ref    "field V58._dictionary (fldOffset=0x0)" P-INDEP
 ;  V75 tmp65        [V75,T02] (  2, 39.56)    long  ->  rsi         "Cast away GC"
-;  V76 cse0         [V76,T05] (  3, 29.37)     ref  ->  [rbp-0x60]  "CSE - aggressive"
+;  V76 cse0         [V76,T05] (  3, 29.37)     ref  ->  [rbp-0x60]  spill-single-def "CSE - aggressive"
 ;  V77 cse1         [V77,T42] (  3,  0.10)    long  ->  rbx         "CSE - conservative"
 ;  V78 cse2         [V78,T12] (  3, 11.99)     int  ->  r14         "CSE - moderate"
 ;  V79 cse3         [V79,T19] (  9,  6.29)    long  ->  r14         "CSE - moderate"
@@ -136,11 +136,11 @@ G_M20484_IG05:        ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=8000 {r1
        call     [Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:get_HasRequiredMembersError():ubyte:this]
        ; gcrRegs -[rdi]
        test     eax, eax
-       jne      G_M20484_IG67
+       jne      G_M20484_IG66
                        ;; size=19 bbWeight=1 PerfScore 5.50
 G_M20484_IG06:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
        cmp      r14, r13
-       jne      G_M20484_IG35
+       jne      G_M20484_IG51
                        ;; size=9 bbWeight=1 PerfScore 1.25
 G_M20484_IG07:        ; bbWeight=0.70, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
        mov      rdi, gword ptr [rbx+0x60]
@@ -165,7 +165,7 @@ G_M20484_IG09:        ; bbWeight=9.99, gcrefRegs=3000 {r12 r13}, byrefRegs=8000
 G_M20484_IG10:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[r12-r13]
        ; byrRegs -[r15]
-       jmp      G_M20484_IG65
+       jmp      G_M20484_IG52
                        ;; size=5 bbWeight=1 PerfScore 2.00
 G_M20484_IG11:        ; bbWeight=0.06, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
        ; gcrRegs +[rbx]
@@ -182,7 +182,7 @@ G_M20484_IG11:        ; bbWeight=0.06, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15
        mov      rdx, gword ptr [rdi]
        ; gcrRegs +[rdx]
        test     r12, r12
-       je       G_M20484_IG69
+       je       G_M20484_IG68
        mov      rdi, r12
        ; byrRegs +[rdi]
        call     <unknown method>
@@ -235,7 +235,7 @@ G_M20484_IG15:        ; bbWeight=0.07, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15
        mov      rdx, gword ptr [rdi]
        ; gcrRegs +[rdx]
        test     r12, r12
-       je       G_M20484_IG69
+       je       G_M20484_IG68
        mov      rdi, r12
        ; byrRegs +[rdi]
        call     <unknown method>
@@ -249,7 +249,7 @@ G_M20484_IG16:        ; bbWeight=0.70, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15
                        ;; size=4 bbWeight=0.70 PerfScore 1.40
 G_M20484_IG17:        ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=8000 {r15}, byref
        test     rdi, rdi
-       je       G_M20484_IG32
+       je       G_M20484_IG47
                        ;; size=9 bbWeight=1 PerfScore 1.25
 G_M20484_IG18:        ; bbWeight=0.86, gcrefRegs=0088 {rbx rdi}, byrefRegs=8000 {r15}, byref
        call     [Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:get_AllRequiredMembers():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.String,Microsoft.CodeAnalysis.CSharp.Symbol]:this]
@@ -273,10 +273,10 @@ G_M20484_IG21:        ; bbWeight=1, gcrefRegs=1008 {rbx r12}, byrefRegs=8000 {r1
        cmp      r14, r13
        jne      G_M20484_IG12
                        ;; size=12 bbWeight=1 PerfScore 2.25
-G_M20484_IG22:        ; bbWeight=0.61, gcrefRegs=1008 {rbx r12}, byrefRegs=8000 {r15}, byref, isz
+G_M20484_IG22:        ; bbWeight=0.61, gcrefRegs=1008 {rbx r12}, byrefRegs=8000 {r15}, byref
        cmp      gword ptr [rbx+0x50], 0
-       je       SHORT G_M20484_IG28
-                       ;; size=7 bbWeight=0.61 PerfScore 2.44
+       je       G_M20484_IG44
+                       ;; size=11 bbWeight=0.61 PerfScore 2.44
 G_M20484_IG23:        ; bbWeight=0.61, gcrefRegs=1008 {rbx r12}, byrefRegs=8000 {r15}, byref
        mov      r13, gword ptr [rbx+0x90]
        ; gcrRegs +[r13]
@@ -288,7 +288,7 @@ G_M20484_IG24:        ; bbWeight=1, gcrefRegs=3000 {r12 r13}, byrefRegs=8000 {r1
        xor      ecx, ecx
        mov      dword ptr [rbp-0x30], ecx
        test     r14d, r14d
-       jle      G_M20484_IG65
+       jle      G_M20484_IG52
                        ;; size=20 bbWeight=1 PerfScore 4.75
 G_M20484_IG25:        ; bbWeight=9.95, gcrefRegs=3000 {r12 r13}, byrefRegs=8000 {r15}, byref, isz
        mov      esi, ebx
@@ -297,40 +297,21 @@ G_M20484_IG25:        ; bbWeight=9.95, gcrefRegs=3000 {r12 r13}, byrefRegs=8000
        mov      rdx, rbx
        ; gcrRegs +[rdx]
        test     rdx, rdx
-       je       SHORT G_M20484_IG30
+       je       SHORT G_M20484_IG28
                        ;; size=15 bbWeight=9.95 PerfScore 37.32
-G_M20484_IG26:        ; bbWeight=4.98, gcrefRegs=300C {rdx rbx r12 r13}, byrefRegs=8000 {r15}, byref, isz
+G_M20484_IG26:        ; bbWeight=4.98, gcrefRegs=300C {rdx rbx r12 r13}, byrefRegs=8000 {r15}, byref
        mov      rsi, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol
        cmp      qword ptr [rdx], rsi
-       je       SHORT G_M20484_IG29
-                       ;; size=15 bbWeight=4.98 PerfScore 21.15
-G_M20484_IG27:        ; bbWeight=1.79, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8000 {r15}, byref, isz
+       jne      G_M20484_IG39
+                       ;; size=19 bbWeight=4.98 PerfScore 21.15
+G_M20484_IG27:        ; bbWeight=3.48, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8000 {r15}, byref
        ; gcrRegs -[rdx]
-       mov      rsi, rbx
-       ; gcrRegs +[rsi]
-       mov      rdi, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol
-       call     CORINFO_HELP_ISINSTANCEOFCLASS
-       ; gcrRegs -[rsi] +[rax]
-       mov      rdx, rax
-       ; gcrRegs +[rdx]
-       jmp      SHORT G_M20484_IG30
-                       ;; size=23 bbWeight=1.79 PerfScore 6.72
-G_M20484_IG28:        ; bbWeight=0.05, gcrefRegs=1008 {rbx r12}, byrefRegs=8000 {r15}, byref, isz
-       ; gcrRegs -[rax rdx r13]
-       mov      rdi, rbx
-       ; gcrRegs +[rdi]
-       call     [<unknown method>]
-       ; gcrRegs -[rdi]
-       jmp      SHORT G_M20484_IG23
-                       ;; size=11 bbWeight=0.05 PerfScore 0.24
-G_M20484_IG29:        ; bbWeight=3.18, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8000 {r15}, byref
-       ; gcrRegs +[r13]
        xor      rdi, rdi
        ; gcrRegs +[rdi]
        xor      rdx, rdx
        ; gcrRegs +[rdx]
-                       ;; size=4 bbWeight=3.18 PerfScore 1.59
-G_M20484_IG30:        ; bbWeight=9.95, gcrefRegs=300C {rdx rbx r12 r13}, byrefRegs=8000 {r15}, byref, isz
+                       ;; size=4 bbWeight=3.48 PerfScore 1.74
+G_M20484_IG28:        ; bbWeight=9.95, gcrefRegs=300C {rdx rbx r12 r13}, byrefRegs=8000 {r15}, byref, isz
        ; gcrRegs -[rdi]
        mov      rdi, rdx
        ; gcrRegs +[rdi]
@@ -340,76 +321,104 @@ G_M20484_IG30:        ; bbWeight=9.95, gcrefRegs=300C {rdx rbx r12 r13}, byrefRe
        mov      gword ptr [rbp-0x38], rdx
        ; GC ptr vars +{V07}
        test     rdx, rdx
-       je       SHORT G_M20484_IG33
+       jne      SHORT G_M20484_IG37
                        ;; size=19 bbWeight=9.95 PerfScore 37.32
-G_M20484_IG31:        ; bbWeight=1.61, gcVars=0000000000000060 {V07 V76}, gcrefRegs=300C {rdx rbx r12 r13}, byrefRegs=8000 {r15}, gcvars, byref, isz
-       ; gcrRegs -[rdi]
-       jmp      SHORT G_M20484_IG38
-                       ;; size=2 bbWeight=1.61 PerfScore 3.22
-G_M20484_IG32:        ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref
-       ; gcrRegs -[rdx r12-r13]
-       ; GC ptr vars -{V07 V76}
-       mov      rdi, 0xD1FFAB1E      ; box for <unknown class>:<unknown field>
-       mov      rdi, gword ptr [rdi]
-       ; gcrRegs +[rdi]
-       mov      r12, gword ptr [rdi+0x08]
-       ; gcrRegs +[r12]
-       jmp      G_M20484_IG19
-                       ;; size=22 bbWeight=0.14 PerfScore 0.90
-G_M20484_IG33:        ; bbWeight=9.89, gcVars=0000000000000020 {V76}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8000 {r15}, gcvars, byref
-       ; gcrRegs -[rdi] +[r13]
-       ; GC ptr vars +{V76}
+G_M20484_IG29:        ; bbWeight=9.89, gcVars=0000000000000020 {V76}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8000 {r15}, gcvars, byref
+       ; gcrRegs -[rdx rdi]
+       ; GC ptr vars -{V07}
        mov      rdx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol
        cmp      qword ptr [rbx], rdx
-       jne      G_M20484_IG53
+       jne      G_M20484_IG40
                        ;; size=19 bbWeight=9.89 PerfScore 42.03
-G_M20484_IG34:        ; bbWeight=5.93, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8000 {r15}, byref
-       jmp      G_M20484_IG50
-                       ;; size=5 bbWeight=5.93 PerfScore 11.87
-G_M20484_IG35:        ; bbWeight=0.30, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref
-       ; gcrRegs -[r12-r13]
-       ; GC ptr vars -{V76}
-       mov      rdi, rbx
+G_M20484_IG30:        ; bbWeight=5.93, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8000 {r15}, byref
+       mov      rsi, gword ptr [rbx+0x18]
+       ; gcrRegs +[rsi]
+                       ;; size=4 bbWeight=5.93 PerfScore 11.87
+G_M20484_IG31:        ; bbWeight=9.89, gcrefRegs=3048 {rbx rsi r12 r13}, byrefRegs=8000 {r15}, byref
+       cmp      byte  ptr [r12], r12b
+       mov      rdi, r12
        ; gcrRegs +[rdi]
-       mov      rax, qword ptr [r14+0xA0]
-       call     [rax+0x30]<unknown method>
-       ; gcrRegs -[rdi] +[rax]
-       mov      rdi, rax
-       ; gcrRegs +[rdi]
-       jmp      G_M20484_IG17
-                       ;; size=21 bbWeight=0.30 PerfScore 2.25
-G_M20484_IG36:        ; bbWeight=9.89, gcVars=0000000000000020 {V76}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8000 {r15}, gcvars, byref
-       ; gcrRegs -[rax rdi] +[r12-r13]
-       ; GC ptr vars +{V76}
+       call     [<unknown method>]
+       ; gcrRegs -[rsi rdi]
+       ; byrRegs +[rax]
+       mov      rsi, rax
+       test     rsi, rsi
+       jne      G_M20484_IG58
+                       ;; size=25 bbWeight=9.89 PerfScore 76.65
+G_M20484_IG32:        ; bbWeight=9.89, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8000 {r15}, byref, isz
+       ; byrRegs -[rax]
        mov      rsi, rbx
        ; gcrRegs +[rsi]
        mov      rdi, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol
        call     CORINFO_HELP_ISINSTANCEOFCLASS
        ; gcrRegs -[rsi] +[rax]
-       mov      rdi, rax
+       test     rax, rax
+       jne      SHORT G_M20484_IG35
+                       ;; size=23 bbWeight=9.89 PerfScore 27.20
+G_M20484_IG33:        ; bbWeight=9.47, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8000 {r15}, byref
+       ; gcrRegs -[rax]
+       mov      rdi, gword ptr [rbp-0x60]
        ; gcrRegs +[rdi]
        test     rdi, rdi
-       je       G_M20484_IG48
-                       ;; size=30 bbWeight=9.89 PerfScore 29.67
-G_M20484_IG37:        ; bbWeight=0.53, gcVars=0000000000000000 {}, gcrefRegs=3088 {rbx rdi r12 r13}, byrefRegs=8000 {r15}, gcvars, byref
-       ; gcrRegs -[rax]
+       je       G_M20484_IG09
+                       ;; size=13 bbWeight=9.47 PerfScore 21.31
+G_M20484_IG34:        ; bbWeight=1.53, gcVars=0000000000000000 {}, gcrefRegs=3088 {rbx rdi r12 r13}, byrefRegs=8000 {r15}, gcvars, byref
        ; GC ptr vars -{V76}
-       jmp      G_M20484_IG56
...

-11 (-1.19%) : 558185.dasm - System.Linq.Expressions.Compiler.VariableBinder:MergeScopes(System.Linq.Expressions.Expression):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]:this (Tier1)

@@ -10,7 +10,7 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T06] (  3,  3   )     ref  ->  r15         this class-hnd single-def <System.Linq.Expressions.Compiler.VariableBinder>
-;  V01 arg1         [V01,T05] (  5,  3.21)     ref  ->  rbx         class-hnd single-def <System.Linq.Expressions.Expression>
+;  V01 arg1         [V01,T05] (  5,  3.18)     ref  ->  rbx         class-hnd single-def <System.Linq.Expressions.Expression>
 ;  V02 loc0         [V02,T07] (  8,  4   )     ref  ->  r14         class-hnd <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]>
 ;  V03 loc1         [V03,T09] (  3,  3   )     ref  ->  r14         class-hnd single-def <System.Linq.Expressions.LambdaExpression>
 ;  V04 loc2         [V04,T17] (  6,  0   )     ref  ->  [rbp-0x28]  must-init class-hnd exact EH-live single-def <<unknown class>>
@@ -46,7 +46,7 @@
 ;  V34 PSPSym       [V34,T15] (  1,  1   )    long  ->  [rbp-0x50]  do-not-enreg[V] "PSPSym"
 ;  V35 cse0         [V35,T14] (  2,  2   )     int  ->  rcx         "CSE - moderate"
 ;  V36 cse1         [V36,T12] (  3,  3   )    long  ->  rcx         "CSE - moderate"
-;  V37 rat0         [V37,T00] (  5,  7.42)     ref  ->  r14         class-hnd "replacement local" <System.Linq.Expressions.LambdaExpression>
+;  V37 rat0         [V37,T00] (  5,  7.36)     ref  ->  r14         class-hnd "replacement local" <System.Linq.Expressions.LambdaExpression>
 ;
 ; Lcl frame size = 56
 
@@ -70,28 +70,16 @@ G_M14872_IG02:        ; bbWeight=1, gcVars=0000000004000000 {V08}, gcrefRegs=800
        mov      r14, rbx
        ; gcrRegs +[r14]
        test     r14, r14
-       je       SHORT G_M14872_IG05
+       je       SHORT G_M14872_IG04
                        ;; size=8 bbWeight=1 PerfScore 1.50
-G_M14872_IG03:        ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M14872_IG03:        ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
        mov      rsi, 0xD1FFAB1E      ; System.Linq.Expressions.Expression0`1[System.Action]
        cmp      qword ptr [r14], rsi
-       je       SHORT G_M14872_IG05
-                       ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M14872_IG04:        ; bbWeight=0.21, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[r14]
-       mov      rsi, rbx
-       ; gcrRegs +[rsi]
-       mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.LambdaExpression
-       call     CORINFO_HELP_ISINSTANCEOFCLASS
-       ; gcrRegs -[rsi] +[rax]
-       ; gcr arg pop 0
-       mov      r14, rax
-       ; gcrRegs +[r14]
-                       ;; size=21 bbWeight=0.21 PerfScore 0.37
-G_M14872_IG05:        ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rax]
+       jne      G_M14872_IG07
+                       ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M14872_IG04:        ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
        test     r14, r14
-       je       G_M14872_IG28
+       je       G_M14872_IG10
        mov      rdi, 0xD1FFAB1E      ; <unknown class>
        mov      esi, 1
        call     CORINFO_HELP_NEWARR_1_OBJ
@@ -120,7 +108,7 @@ G_M14872_IG05:        ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
        ; gcrRegs -[rax rbx rsi]
        ; byrRegs -[rdi]
                        ;; size=75 bbWeight=1 PerfScore 9.75
-G_M14872_IG06:        ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
+G_M14872_IG05:        ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
        mov      rdi, gword ptr [r15+0x10]
        ; gcrRegs +[rdi]
        mov      r11d, dword ptr [rdi+0x10]
@@ -129,7 +117,7 @@ G_M14872_IG06:        ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {},
        ; gcrRegs +[rax]
        mov      ecx, dword ptr [rax+0x08]
        cmp      ecx, r11d
-       jbe      G_M14872_IG29
+       jbe      G_M14872_IG30
        mov      edi, r11d
        ; gcrRegs -[rdi]
        mov      rdi, gword ptr [rax+8*rdi+0x10]
@@ -137,7 +125,7 @@ G_M14872_IG06:        ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {},
        mov      gword ptr [rbp-0x28], rdi
        ; GC ptr vars +{V04}
                        ;; size=39 bbWeight=1 PerfScore 12.75
-G_M14872_IG07:        ; bbWeight=1, gcVars=0000000004020000 {V04 V08}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
+G_M14872_IG06:        ; bbWeight=1, gcVars=0000000004020000 {V04 V08}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs -[rax rdi r15]
        ; GC ptr vars -{V26}
        mov      rdi, gword ptr [r14+0x08]
@@ -147,7 +135,7 @@ G_M14872_IG07:        ; bbWeight=1, gcVars=0000000004020000 {V04 V08}, gcrefRegs
        ; gcrRegs -[rdi]
        ; gcr arg pop 0
        cmp      eax, 1
-       jne      G_M14872_IG24
+       jne      SHORT G_M14872_IG08
        mov      rdi, gword ptr [r14+0x08]
        ; gcrRegs +[rdi]
        mov      r11, 0xD1FFAB1E      ; code for <unknown method>
@@ -158,7 +146,7 @@ G_M14872_IG07:        ; bbWeight=1, gcVars=0000000004020000 {V04 V08}, gcrefRegs
        mov      rcx, qword ptr [rax]
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.FieldExpression
        cmp      rcx, rdi
-       je       G_M14872_IG24
+       je       SHORT G_M14872_IG08
        mov      rdi, rax
        ; gcrRegs +[rdi]
        mov      rax, qword ptr [rcx+0x48]
@@ -167,14 +155,117 @@ G_M14872_IG07:        ; bbWeight=1, gcVars=0000000004020000 {V04 V08}, gcrefRegs
        ; gcrRegs -[rdi]
        ; gcr arg pop 0
        cmp      eax, 47
-       je       G_M14872_IG30
-       jmp      G_M14872_IG24
-                       ;; size=91 bbWeight=1 PerfScore 24.00
-G_M14872_IG08:        ; bbWeight=0, gcVars=0000000004070000 {V04 V05 V06 V08}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; GC ptr vars +{V05 V06 V16 V18}
-       jmp      SHORT G_M14872_IG10
+       je       SHORT G_M14872_IG11
+       jmp      SHORT G_M14872_IG08
+                       ;; size=76 bbWeight=1 PerfScore 24.00
+G_M14872_IG07:        ; bbWeight=0.18, gcVars=0000000004000000 {V08}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[r14] +[rbx r15]
+       ; GC ptr vars -{V04}
+       mov      rsi, rbx
+       ; gcrRegs +[rsi]
+       mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.LambdaExpression
+       call     CORINFO_HELP_ISINSTANCEOFCLASS
+       ; gcrRegs -[rsi] +[rax]
+       ; gcr arg pop 0
+       mov      r14, rax
+       ; gcrRegs +[r14]
+       jmp      G_M14872_IG04
+                       ;; size=26 bbWeight=0.18 PerfScore 0.68
+G_M14872_IG08:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[rax rbx r15]
+       ; GC ptr vars -{V08}
+       mov      rax, r14
+       ; gcrRegs +[rax]
+                       ;; size=3 bbWeight=1 PerfScore 0.25
+G_M14872_IG09:        ; bbWeight=1, epilog, nogc, extend
+       add      rsp, 56
+       pop      rbx
+       pop      r14
+       pop      r15
+       pop      rbp
+       ret      
+                       ;; size=11 bbWeight=1 PerfScore 3.25
+G_M14872_IG10:        ; bbWeight=0, gcVars=0000000004000000 {V08}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[rax r14] +[rbx r15]
+       ; GC ptr vars +{V08 V26}
+       mov      rsi, rbx
+       ; gcrRegs +[rsi]
+       mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.BlockExpression
+       call     CORINFO_HELP_CHKCASTCLASS
+       ; gcrRegs -[rbx rsi] +[rax]
+       ; gcr arg pop 0
+       mov      rdi, rax
+       ; gcrRegs +[rdi]
+       mov      rax, qword ptr [rax]
+       ; gcrRegs -[rax]
+       mov      rax, qword ptr [rax+0x50]
+       call     [rax+0x30]<unknown method>
+       ; gcrRegs -[rdi] +[rax]
+       ; gcr arg pop 0
+       mov      r14, rax
+       ; gcrRegs +[r14]
+       jmp      G_M14872_IG05
+                       ;; size=39 bbWeight=0 PerfScore 0.00
+G_M14872_IG11:        ; bbWeight=0, gcVars=0000000004020000 {V04 V08}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[rax r15]
+       ; GC ptr vars -{V26} +{V04 V17}
+       mov      rdi, gword ptr [r14+0x08]
+       ; gcrRegs +[rdi]
+       mov      r11, 0xD1FFAB1E      ; code for <unknown method>
+       xor      esi, esi
+       call     [r11]<unknown method>
+       ; gcrRegs -[rdi] +[rax]
+       ; gcr arg pop 0
+       mov      rsi, rax
+       ; gcrRegs +[rsi]
+       mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.BlockExpression
+       call     CORINFO_HELP_CHKCASTCLASS
+       ; gcrRegs -[rsi]
+       ; gcr arg pop 0
+       mov      gword ptr [rbp-0x30], rax
+       ; GC ptr vars +{V05}
+       mov      rdi, gword ptr [rbp-0x30]
+       ; gcrRegs +[rdi]
+       mov      rax, gword ptr [rbp-0x30]
+       mov      rax, qword ptr [rax]
+       ; gcrRegs -[rax]
+       mov      rax, qword ptr [rax+0x50]
+       ; GC ptr vars -{V17}
+       call     [rax+0x38]<unknown method>
+       ; gcrRegs -[rdi] +[rax]
+       ; gcr arg pop 0
+       mov      rdi, gword ptr [rax+0x08]
+       ; gcrRegs +[rdi]
+       mov      r11, 0xD1FFAB1E      ; code for <unknown method>
+       call     [r11]<unknown method>
+       ; gcrRegs -[rax rdi]
+       ; gcr arg pop 0
+       test     eax, eax
+       jle      G_M14872_IG27
+       mov      rdi, gword ptr [rbp-0x30]
+       ; gcrRegs +[rdi]
+       mov      rax, gword ptr [rbp-0x30]
+       ; gcrRegs +[rax]
+       mov      rax, qword ptr [rax]
+       ; gcrRegs -[rax]
+       mov      rax, qword ptr [rax+0x50]
+       call     [rax+0x38]<unknown method>
+       ; gcrRegs -[rdi] +[rax]
+       ; gcr arg pop 0
+       mov      rdi, rax
+       ; gcrRegs +[rdi]
+       cmp      dword ptr [rdi], edi
+       call     [System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this]
+       ; gcrRegs -[rdi]
+       ; gcr arg pop 0
+       mov      gword ptr [rbp-0x38], rax
+       ; GC ptr vars +{V06}
+                       ;; size=117 bbWeight=0 PerfScore 0.00
+G_M14872_IG12:        ; bbWeight=0, gcVars=0000000004070000 {V04 V05 V06 V08}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
+       ; gcrRegs -[rax]
+       jmp      SHORT G_M14872_IG14
                        ;; size=2 bbWeight=0 PerfScore 0.00
-G_M14872_IG09:        ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+G_M14872_IG13:        ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
        mov      rdi, gword ptr [rbp-0x38]
        ; gcrRegs +[rdi]
        mov      r11, 0xD1FFAB1E      ; code for <unknown method>
@@ -193,9 +284,9 @@ G_M14872_IG09:        ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byr
        ; byrRegs +[rax]
        ; gcr arg pop 0
        test     rax, rax
-       jne      SHORT G_M14872_IG11
+       jne      SHORT G_M14872_IG15
                        ;; size=44 bbWeight=0 PerfScore 0.00
-G_M14872_IG10:        ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+G_M14872_IG14:        ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
        ; byrRegs -[rax]
        mov      rdi, gword ptr [rbp-0x38]
        ; gcrRegs +[rdi]
@@ -204,34 +295,34 @@ G_M14872_IG10:        ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byr
        ; gcrRegs -[rdi]
        ; gcr arg pop 0
        test     eax, eax
-       jne      SHORT G_M14872_IG09
-       jmp      SHORT G_M14872_IG12
+       jne      SHORT G_M14872_IG13
+       jmp      SHORT G_M14872_IG16
                        ;; size=23 bbWeight=0 PerfScore 0.00
-G_M14872_IG11:        ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+G_M14872_IG15:        ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
        mov      gword ptr [rbp-0x40], r14
-       jmp      SHORT G_M14872_IG14
+       jmp      SHORT G_M14872_IG18
                        ;; size=6 bbWeight=0 PerfScore 0.00
...

+0 (0.00%) : 300153.dasm - System.Dynamic.DynamicMetaObjectBinder:Bind(System.Object[],System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression],System.Linq.Expressions.LabelTarget):System.Linq.Expressions.Expression:this (Tier1)

@@ -18,7 +18,7 @@
 ;* V06 loc2         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Dynamic.DynamicMetaObject[]>
 ;* V07 loc3         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Dynamic.DynamicMetaObject>
 ;  V08 loc4         [V08,T06] ( 18, 10.42)     ref  ->  r13         class-hnd <System.Linq.Expressions.Expression>
-;  V09 loc5         [V09,T22] (  7,  4.29)     ref  ->  r12         class-hnd single-def <System.Dynamic.BindingRestrictions>
+;  V09 loc5         [V09,T21] (  7,  4.29)     ref  ->  r12         class-hnd single-def <System.Dynamic.BindingRestrictions>
 ;# V10 OutArgs      [V10    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V11 tmp1         [V11,T24] (  3,  4   )     int  ->  r12         "impAppendStmt"
 ;  V12 tmp2         [V12,T14] (  3,  6   )     ref  ->  [rbp-0x60]  class-hnd spill-single-def "impAppendStmt" <System.Object>
@@ -142,7 +142,7 @@
 ;  V130 cse1        [V130,T78] (  3,  0.00)    long  ->  rax         "CSE - conservative"
 ;  V131 cse2        [V131,T77] (  3,  0.00)     ref  ->  rdi         "CSE - conservative"
 ;  V132 cse3        [V132,T11] (  8,  7.05)     int  ->  r12         multi-def "CSE - aggressive"
-;  V133 rat0        [V133,T21] (  3,  4.37)     ref  ->  rsi         "Spilling to split statement for tree"
+;  V133 rat0        [V133,T22] (  3,  4.28)     ref  ->  rsi         "Spilling to split statement for tree"
 ;  V134 rat1        [V134,T12] (  6,  7.91)     ref  ->  rax         class-hnd "replacement local" <<unknown class>>
 ;
 ; Lcl frame size = 168
@@ -522,7 +522,7 @@ G_M33592_IG24:        ; bbWeight=0.37, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
        mov      rcx, gword ptr [rbp-0x58]
        ; gcrRegs +[rcx]
        test     rcx, rcx
-       je       G_M33592_IG91
+       je       G_M33592_IG86
        mov      r12, gword ptr [rbp-0xA0]
        ; gcrRegs +[r12]
        test     r12, r12
@@ -621,7 +621,7 @@ G_M33592_IG31:        ; bbWeight=1.00, gcrefRegs=F00A {rcx rbx r12 r13 r14 r15},
 G_M33592_IG32:        ; bbWeight=0.50, gcVars=00000000000000000000020080000000 {V05 V20}, gcrefRegs=F049 {rax rbx rsi r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs -[rcx]
        ; GC ptr vars -{V04 V31}
-       jmp      G_M33592_IG68
+       jmp      G_M33592_IG69
                        ;; size=5 bbWeight=0.50 PerfScore 1.00
 G_M33592_IG33:        ; bbWeight=0.50, gcrefRegs=F009 {rax rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rsi]
@@ -633,7 +633,7 @@ G_M33592_IG34:        ; bbWeight=0.50, gcVars=00000000000000000000000080000000 {
        ; GC ptr vars -{V20}
        mov      gword ptr [rbp-0x68], rcx
        ; GC ptr vars +{V20}
-       jmp      G_M33592_IG73
+       jmp      G_M33592_IG74
                        ;; size=9 bbWeight=0.50 PerfScore 1.50
 G_M33592_IG35:        ; bbWeight=1.00, gcVars=00000000000000000000020080000000 {V05 V20}, gcrefRegs=F009 {rax rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs -[rcx]
@@ -683,7 +683,7 @@ G_M33592_IG39:        ; bbWeight=1.00, gcVars=00000000000000000000020080000008 {
        test     edi, edi
        mov      rax, gword ptr [rbp-0x50]
        ; gcrRegs +[rax]
-       je       G_M33592_IG73
+       je       G_M33592_IG74
                        ;; size=16 bbWeight=1.00 PerfScore 2.50
 G_M33592_IG40:        ; bbWeight=0.96, gcVars=00000000000000000000000080000000 {V05}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs -[rax]
@@ -794,7 +794,7 @@ G_M33592_IG49:        ; bbWeight=1, gcVars=00000000000000000000000080000000 {V05
        ; GC ptr vars -{V04}
        mov      rdi, 0xD1FFAB1E      ; Microsoft.CSharp.RuntimeBinder.CSharpConvertBinder
        cmp      qword ptr [rbx], rdi
-       jne      G_M33592_IG71
+       jne      G_M33592_IG72
                        ;; size=19 bbWeight=1 PerfScore 4.25
 G_M33592_IG50:        ; bbWeight=0.99, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
        mov      edi, dword ptr [r15+0x08]
@@ -809,24 +809,23 @@ G_M33592_IG51:        ; bbWeight=0.49, gcrefRegs=7049 {rax rbx rsi r12 r13 r14},
        ; gcrRegs -[r15]
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        cmp      qword ptr [rax], rdi
-       je       G_M33592_IG77
+       jne      G_M33592_IG68
                        ;; size=19 bbWeight=0.49 PerfScore 2.10
-G_M33592_IG52:        ; bbWeight=0.21, gcrefRegs=7048 {rbx rsi r12 r13 r14}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rax]
-       mov      rdi, 0xD1FFAB1E      ; <unknown class>
-       call     CORINFO_HELP_ISINSTANCEOFINTERFACE
-       ; gcrRegs -[rsi] +[rax]
-                       ;; size=15 bbWeight=0.21 PerfScore 0.26
+G_M33592_IG52:        ; bbWeight=0.33, gcrefRegs=7008 {rbx r12 r13 r14}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rax rsi]
+       xor      rax, rax
+       ; gcrRegs +[rax]
+                       ;; size=2 bbWeight=0.33 PerfScore 0.08
 G_M33592_IG53:        ; bbWeight=0.99, gcrefRegs=7009 {rax rbx r12 r13 r14}, byrefRegs=0000 {}, byref
        test     rax, rax
-       jne      G_M33592_IG85
+       jne      G_M33592_IG139
                        ;; size=9 bbWeight=0.99 PerfScore 1.24
 G_M33592_IG54:        ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs -[rax rbx]
        ; GC ptr vars -{V05}
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.UnaryExpression
        cmp      qword ptr [r13], rdi
-       jne      G_M33592_IG86
+       jne      G_M33592_IG78
                        ;; size=20 bbWeight=1 PerfScore 4.25
 G_M33592_IG55:        ; bbWeight=0.76, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, byref
        mov      ebx, dword ptr [r13+0x20]
@@ -846,24 +845,24 @@ G_M33592_IG57:        ; bbWeight=0.67, gcrefRegs=5000 {r12 r14}, byrefRegs=0000
        ; gcrRegs +[r15]
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.ParameterExpression
        cmp      qword ptr [r15], rdi
-       jne      G_M33592_IG93
+       jne      G_M33592_IG88
                        ;; size=27 bbWeight=0.67 PerfScore 4.83
 G_M33592_IG58:        ; bbWeight=0.45, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
        mov      r13d, 38
                        ;; size=6 bbWeight=0.45 PerfScore 0.11
 G_M33592_IG59:        ; bbWeight=0.67, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
        cmp      r13d, 23
-       je       G_M33592_IG96
+       je       G_M33592_IG95
                        ;; size=10 bbWeight=0.67 PerfScore 0.83
 G_M33592_IG60:        ; bbWeight=0.65, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
-       jmp      G_M33592_IG78
+       jmp      G_M33592_IG79
                        ;; size=5 bbWeight=0.65 PerfScore 1.30
 G_M33592_IG61:        ; bbWeight=0.33, gcrefRegs=5000 {r12 r14}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbx r15]
        mov      rdi, 0xD1FFAB1E
        ; gcrRegs +[rdi]
        cmp      gword ptr [r14+0x10], rdi
-       jne      G_M33592_IG92
+       jne      G_M33592_IG87
        mov      rdi, 0xD1FFAB1E
        mov      rsi, 0xD1FFAB1E
        ; gcrRegs +[rsi]
@@ -950,27 +949,35 @@ G_M33592_IG67:        ; bbWeight=1, epilog, nogc, extend
        pop      rbp
        ret      
                        ;; size=18 bbWeight=1 PerfScore 4.25
-G_M33592_IG68:        ; bbWeight=0.50, gcVars=00000000000000000000020080000000 {V05 V20}, gcrefRegs=F049 {rax rbx rsi r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs +[rbx rsi r12 r14-r15]
-       ; GC ptr vars +{V05 V20 V31 V41}
+G_M33592_IG68:        ; bbWeight=0.16, gcVars=00000000000000000000000080000000 {V05}, gcrefRegs=7048 {rbx rsi r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[rax] +[rbx rsi r12 r14]
+       ; GC ptr vars +{V05 V31}
+       mov      rdi, 0xD1FFAB1E      ; <unknown class>
+       call     CORINFO_HELP_ISINSTANCEOFINTERFACE
+       ; gcrRegs -[rsi] +[rax]
+       jmp      G_M33592_IG53
+                       ;; size=20 bbWeight=0.16 PerfScore 0.53
+G_M33592_IG69:        ; bbWeight=0.50, gcVars=00000000000000000000020080000000 {V05 V20}, gcrefRegs=F049 {rax rbx rsi r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+       ; gcrRegs +[rsi r15]
+       ; GC ptr vars -{V31} +{V20 V41}
        mov      rdi, 0xD1FFAB1E      ; System.RuntimeType
        cmp      qword ptr [rsi], rdi
-       jne      SHORT G_M33592_IG70
+       jne      SHORT G_M33592_IG71
                        ;; size=15 bbWeight=0.50 PerfScore 2.13
-G_M33592_IG69:        ; bbWeight=1.00, gcrefRegs=F049 {rax rbx rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M33592_IG70:        ; bbWeight=1.00, gcrefRegs=F049 {rax rbx rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
        cmp      rsi, rax
        jne      G_M33592_IG37
        jmp      G_M33592_IG35
                        ;; size=14 bbWeight=1.00 PerfScore 3.25
-G_M33592_IG70:        ; bbWeight=0.25, gcrefRegs=F009 {rax rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M33592_IG71:        ; bbWeight=0.25, gcrefRegs=F009 {rax rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rsi]
        mov      rcx, gword ptr [rbp-0x68]
        ; gcrRegs +[rcx]
        jmp      G_M33592_IG134
                        ;; size=9 bbWeight=0.25 PerfScore 0.75
-G_M33592_IG71:        ; bbWeight=1, gcVars=00000000000000000000000080000000 {V05}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M33592_IG72:        ; bbWeight=1, gcVars=00000000000000000000000080000000 {V05}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs -[rax rcx]
-       ; GC ptr vars -{V20 V31 V41}
+       ; GC ptr vars -{V20 V41}
        mov      rdi, rbx
        ; gcrRegs +[rdi]
        mov      rax, qword ptr [rbx]
@@ -980,10 +987,10 @@ G_M33592_IG71:        ; bbWeight=1, gcVars=00000000000000000000000080000000 {V05
        test     eax, eax
        je       G_M33592_IG54
                        ;; size=20 bbWeight=1 PerfScore 8.50
-G_M33592_IG72:        ; bbWeight=0.99, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M33592_IG73:        ; bbWeight=0.99, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
        jmp      G_M33592_IG50
                        ;; size=5 bbWeight=0.99 PerfScore 1.98
-G_M33592_IG73:        ; bbWeight=0.04, gcVars=00000000000000000000020080000000 {V05 V20}, gcrefRegs=F009 {rax rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M33592_IG74:        ; bbWeight=0.04, gcVars=00000000000000000000020080000000 {V05 V20}, gcrefRegs=F009 {rax rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs +[rax]
        ; GC ptr vars +{V20 V41}
        mov      rdi, rax
@@ -998,7 +1005,7 @@ G_M33592_IG73:        ; bbWeight=0.04, gcVars=00000000000000000000020080000000 {
        test     eax, eax
        jne      G_M33592_IG137
                        ;; size=28 bbWeight=0.04 PerfScore 0.40
-G_M33592_IG74:        ; bbWeight=0.04, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M33592_IG75:        ; bbWeight=0.04, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
        mov      rdi, gword ptr [rbp-0x68]
        ; gcrRegs +[rdi]
        mov      gword ptr [rbp-0x68], rdi
@@ -1009,7 +1016,7 @@ G_M33592_IG74:        ; bbWeight=0.04, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byr
        test     eax, eax
        jne      G_M33592_IG137
                        ;; size=29 bbWeight=0.04 PerfScore 0.41
-G_M33592_IG75:        ; bbWeight=0.02, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M33592_IG76:        ; bbWeight=0.02, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
        mov      rdi, 0xD1FFAB1E      ; System.RuntimeType
        mov      rax, gword ptr [rbp-0x50]
        ; gcrRegs +[rax]
@@ -1024,97 +1031,12 @@ G_M33592_IG75:        ; bbWeight=0.02, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byr
        call     [System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this]
        ; gcrRegs -[rax rsi rdi]
                        ;; size=40 bbWeight=0.02 PerfScore 0.24
-G_M33592_IG76:        ; bbWeight=0.02, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M33592_IG77:        ; bbWeight=0.02, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
        jmp      G_M33592_IG48
                        ;; size=5 bbWeight=0.02 PerfScore 0.05
-G_M33592_IG77:        ; bbWeight=0.29, gcVars=00000000000000000000000080000000 {V05}, gcrefRegs=7008 {rbx r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref
-       ; gcrRegs -[r15]
-       ; GC ptr vars -{V04}
-       xor      rax, rax
-       ; gcrRegs +[rax]
-       jmp      G_M33592_IG53
-                       ;; size=7 bbWeight=0.29 PerfScore 0.64
-G_M33592_IG78:        ; bbWeight=0.65, gcVars=00000000000000000000000000000000 {}, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs -[rax r13] +[r15]
-       ; GC ptr vars -{V05}
-       cmp      r13d, 55
-       je       SHORT G_M33592_IG83
-                       ;; size=6 bbWeight=0.65 PerfScore 0.81
-G_M33592_IG79:        ; bbWeight=0.67, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[r15]
-       mov      rdi, 0xD1FFAB1E
-       ; gcrRegs +[rdi]
-       cmp      rbx, rdi
-       je       G_M33592_IG62
-                       ;; size=19 bbWeight=0.67 PerfScore 1.00
-G_M33592_IG80:        ; bbWeight=0.64, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rdi]
-       mov      rdi, gword ptr [rbp-0x48]
-       ; gcrRegs +[rdi]
-       mov      rax, 0xD1FFAB1E      ; System.Linq.Expressions.FullConditionalExpression
-       cmp      qword ptr [rdi], rax
-       jne      G_M33592_IG87
-                       ;; size=23 bbWeight=0.64 PerfScore 3.35
-G_M33592_IG81:        ; bbWeight=0.34, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRegs=0000 {}, byref
-       mov      rdi, gword ptr [rdi+0x10]
-       mov      rax, qword ptr [rdi]
-       mov      rcx, 0xD1FFAB1E      ; System.Linq.Expressions.DefaultExpression
-       cmp      rax, rcx
-       jne      G_M33592_IG104
-                       ;; size=26 bbWeight=0.34 PerfScore 1.89
-G_M33592_IG82:        ; bbWeight=0.17, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRegs=0000 {}, byref
-       jmp      G_M33592_IG103
-                       ;; size=5 bbWeight=0.17 PerfScore 0.34
-G_M33592_IG83:        ; bbWeight=0.00, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rdi] +[r15]
-       mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.IndexExpression
-       cmp      qword ptr [r15], rdi
...

+23 (+4.11%) : 138648.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)

@@ -10,7 +10,7 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T03] (  8,  3.75)     ref  ->  r15         this class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope>
-;  V01 arg1         [V01,T00] ( 12,  6.23)     ref  ->  rbx         class-hnd single-def <System.Object>
+;  V01 arg1         [V01,T00] ( 12,  6.08)     ref  ->  rbx         class-hnd single-def <System.Object>
 ;  V02 loc0         [V02,T09] (  3,  0.36)   ubyte  ->  r14        
 ;  V03 loc1         [V03,T08] (  4,  0.36)     ref  ->  [rbp-0x28]  class-hnd EH-live spill-single-def <System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey,System.Object]>
 ;  V04 loc2         [V04    ] (  6,  0.89)   ubyte  ->  [rbp-0x20]  do-not-enreg[X] must-init addr-exposed ld-addr-op
@@ -51,73 +51,53 @@ G_M19770_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
                        ;; size=31 bbWeight=1 PerfScore 7.50
 G_M19770_IG02:        ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
        cmp      r15, rbx
-       je       SHORT G_M19770_IG12
+       je       SHORT G_M19770_IG10
        mov      rax, rbx
        ; gcrRegs +[rax]
        test     rax, rax
-       je       SHORT G_M19770_IG06
+       je       SHORT G_M19770_IG05
                        ;; size=13 bbWeight=1 PerfScore 2.75
-G_M19770_IG03:        ; bbWeight=0.50, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG03:        ; bbWeight=0.50, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref
        mov      rsi, 0xD1FFAB1E      ; Microsoft.Extensions.Options.UnnamedOptionsManager`1[Microsoft.Extensions.Logging.LoggerFactoryOptions]
        cmp      qword ptr [rax], rsi
-       je       SHORT G_M19770_IG05
-                       ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M19770_IG04:        ; bbWeight=0.21, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+       jne      G_M19770_IG23
+                       ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M19770_IG04:        ; bbWeight=0.37, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
-       mov      rsi, rbx
-       ; gcrRegs +[rsi]
-       mov      rdi, 0xD1FFAB1E      ; <unknown class>
-       call     CORINFO_HELP_ISINSTANCEOFINTERFACE
-       ; gcrRegs -[rsi] +[rax]
-       ; gcr arg pop 0
-       jmp      SHORT G_M19770_IG06
-                       ;; size=20 bbWeight=0.21 PerfScore 0.73
-G_M19770_IG05:        ; bbWeight=0.29, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+       xor      rax, rax
+       ; gcrRegs +[rax]
+                       ;; size=2 bbWeight=0.37 PerfScore 0.09
+G_M19770_IG05:        ; bbWeight=1, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
+       test     rax, rax
+       jne      SHORT G_M19770_IG12
+                       ;; size=5 bbWeight=1 PerfScore 1.25
+G_M19770_IG06:        ; bbWeight=0.82, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rax]
+       mov      rax, rbx
+       ; gcrRegs +[rax]
+       test     rax, rax
+       je       SHORT G_M19770_IG09
+                       ;; size=8 bbWeight=0.82 PerfScore 1.23
+G_M19770_IG07:        ; bbWeight=0.41, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref
+       mov      rsi, 0xD1FFAB1E      ; Microsoft.Extensions.Options.IValidateOptions`1[Microsoft.Extensions.Hosting.HostOptions][]
+       cmp      qword ptr [rax], rsi
+       jne      G_M19770_IG22
+                       ;; size=19 bbWeight=0.41 PerfScore 1.75
+G_M19770_IG08:        ; bbWeight=0.29, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
        xor      rax, rax
        ; gcrRegs +[rax]
                        ;; size=2 bbWeight=0.29 PerfScore 0.07
-G_M19770_IG06:        ; bbWeight=1, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG09:        ; bbWeight=0.82, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
        test     rax, rax
-       jne      SHORT G_M19770_IG14
-                       ;; size=5 bbWeight=1 PerfScore 1.25
-G_M19770_IG07:        ; bbWeight=0.82, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rax]
-       mov      rax, rbx
-       ; gcrRegs +[rax]
-       test     rax, rax
-       je       SHORT G_M19770_IG11
-                       ;; size=8 bbWeight=0.82 PerfScore 1.23
-G_M19770_IG08:        ; bbWeight=0.41, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
-       mov      rsi, 0xD1FFAB1E      ; Microsoft.Extensions.Options.IValidateOptions`1[Microsoft.Extensions.Hosting.HostOptions][]
-       cmp      qword ptr [rax], rsi
-       je       SHORT G_M19770_IG10
-                       ;; size=15 bbWeight=0.41 PerfScore 1.75
-G_M19770_IG09:        ; bbWeight=0.20, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rax]
-       mov      rsi, rbx
-       ; gcrRegs +[rsi]
-       mov      rdi, 0xD1FFAB1E      ; <unknown class>
-       call     CORINFO_HELP_ISINSTANCEOFINTERFACE
-       ; gcrRegs -[rsi] +[rax]
-       ; gcr arg pop 0
-       jmp      SHORT G_M19770_IG11
-                       ;; size=20 bbWeight=0.20 PerfScore 0.69
-G_M19770_IG10:        ; bbWeight=0.21, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rax]
-       xor      rax, rax
-       ; gcrRegs +[rax]
-                       ;; size=2 bbWeight=0.21 PerfScore 0.05
-G_M19770_IG11:        ; bbWeight=0.82, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
-       test     rax, rax
-       jne      SHORT G_M19770_IG14
+       jne      SHORT G_M19770_IG12
                        ;; size=5 bbWeight=0.82 PerfScore 1.03
-G_M19770_IG12:        ; bbWeight=0.82, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M19770_IG10:        ; bbWeight=0.82, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax r15]
        mov      rax, rbx
        ; gcrRegs +[rax]
                        ;; size=3 bbWeight=0.82 PerfScore 0.21
-G_M19770_IG13:        ; bbWeight=0.82, epilog, nogc, extend
+G_M19770_IG11:        ; bbWeight=0.82, epilog, nogc, extend
        add      rsp, 24
        pop      rbx
        pop      r14
@@ -125,7 +105,7 @@ G_M19770_IG13:        ; bbWeight=0.82, epilog, nogc, extend
        pop      rbp
        ret      
                        ;; size=11 bbWeight=0.82 PerfScore 2.67
-G_M19770_IG14:        ; bbWeight=0.18, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
+G_M19770_IG12:        ; bbWeight=0.18, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs -[rax] +[r15]
        xor      r14d, r14d
        mov      rdi, gword ptr [r15+0x10]
@@ -135,9 +115,9 @@ G_M19770_IG14:        ; bbWeight=0.18, gcVars=0000000000000000 {}, gcrefRegs=800
        xor      esi, esi
        mov      dword ptr [rbp-0x20], esi
                        ;; size=16 bbWeight=0.18 PerfScore 0.80
-G_M19770_IG15:        ; bbWeight=0.18, gcVars=0000000000000100 {V03}, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M19770_IG13:        ; bbWeight=0.18, gcVars=0000000000000100 {V03}, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz
        cmp      byte  ptr [rbp-0x20], 0
-       jne      G_M19770_IG20
+       jne      G_M19770_IG18
        lea      rsi, [rbp-0x20]
        call     <unknown method>
        ; gcrRegs -[rdi]
@@ -146,11 +126,11 @@ G_M19770_IG15:        ; bbWeight=0.18, gcVars=0000000000000100 {V03}, gcrefRegs=
        call     [<unknown method>]
        ; gcr arg pop 0
        cmp      byte  ptr [r15+0x20], 0
-       jne      SHORT G_M19770_IG19
+       jne      SHORT G_M19770_IG17
        cmp      gword ptr [r15+0x08], 0
-       je       SHORT G_M19770_IG18
+       je       SHORT G_M19770_IG16
                        ;; size=44 bbWeight=0.18 PerfScore 2.95
-G_M19770_IG16:        ; bbWeight=0.18, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG14:        ; bbWeight=0.18, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
        mov      rdi, gword ptr [r15+0x08]
        ; gcrRegs +[rdi]
        inc      dword ptr [rdi+0x14]
@@ -158,9 +138,9 @@ G_M19770_IG16:        ; bbWeight=0.18, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
        ; gcrRegs +[rdx]
        mov      esi, dword ptr [rdi+0x10]
        cmp      dword ptr [rdx+0x08], esi
-       jbe      SHORT G_M19770_IG21
+       jbe      SHORT G_M19770_IG19
                        ;; size=19 bbWeight=0.18 PerfScore 2.32
-G_M19770_IG17:        ; bbWeight=0.13, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG15:        ; bbWeight=0.13, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[r15]
        lea      eax, [rsi+0x01]
        mov      dword ptr [rdi+0x10], eax
@@ -170,9 +150,9 @@ G_M19770_IG17:        ; bbWeight=0.13, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0
        call     CORINFO_HELP_ARRADDR_ST
        ; gcrRegs -[rdx rdi]
        ; gcr arg pop 0
-       jmp      SHORT G_M19770_IG22
+       jmp      SHORT G_M19770_IG20
                        ;; size=22 bbWeight=0.13 PerfScore 0.69
-G_M19770_IG18:        ; bbWeight=0.04, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG16:        ; bbWeight=0.04, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[r15]
        mov      rdi, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_NEWSFAST
@@ -189,20 +169,20 @@ G_M19770_IG18:        ; bbWeight=0.04, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
        call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rax rsi]
        ; byrRegs -[rdi]
-       jmp      SHORT G_M19770_IG16
+       jmp      SHORT G_M19770_IG14
                        ;; size=43 bbWeight=0.04 PerfScore 0.22
-G_M19770_IG19:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG17:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[r15]
        mov      r14d, 1
-       jmp      SHORT G_M19770_IG22
+       jmp      SHORT G_M19770_IG20
                        ;; size=8 bbWeight=0 PerfScore 0.00
-G_M19770_IG20:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19770_IG18:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbx]
        call     [System.Threading.Monitor:ThrowLockTakenException()]
        ; gcr arg pop 0
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
-G_M19770_IG21:        ; bbWeight=0.05, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+G_M19770_IG19:        ; bbWeight=0.05, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rbx rdi]
        mov      rsi, rbx
        ; gcrRegs +[rsi]
@@ -211,9 +191,9 @@ G_M19770_IG21:        ; bbWeight=0.05, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
        ; gcr arg pop 0
        nop      
                        ;; size=10 bbWeight=0.05 PerfScore 0.16
-G_M19770_IG22:        ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG20:        ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        cmp      byte  ptr [rbp-0x20], 0
-       je       SHORT G_M19770_IG23
+       je       SHORT G_M19770_IG21
        mov      rdi, gword ptr [rbp-0x28]
        ; gcrRegs +[rdi]
        ; GC ptr vars -{V03}
@@ -221,28 +201,33 @@ G_M19770_IG22:        ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
        ; gcrRegs -[rdi]
        ; gcr arg pop 0
                        ;; size=15 bbWeight=0.18 PerfScore 0.89
-G_M19770_IG23:        ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M19770_IG21:        ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        test     r14d, r14d
-       je       G_M19770_IG12
-                       ;; size=9 bbWeight=0.18 PerfScore 0.22
-G_M19770_IG24:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+       jne      G_M19770_IG26
+       jmp      G_M19770_IG10
+                       ;; size=14 bbWeight=0.18 PerfScore 0.58
+G_M19770_IG22:        ; bbWeight=0.12, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+       ; gcrRegs +[r15]
        mov      rsi, rbx
        ; gcrRegs +[rsi]
        mov      rdi, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_ISINSTANCEOFINTERFACE
        ; gcrRegs -[rsi] +[rax]
        ; gcr arg pop 0
-       test     rax, rax
-       je       SHORT G_M19770_IG25
-       mov      rdi, rax
-       ; gcrRegs +[rdi]
-       mov      r11, 0xD1FFAB1E      ; code for <unknown method>
-       call     [r11]<unknown method>
-       ; gcrRegs -[rax rdi]
+       jmp      G_M19770_IG09
+                       ;; size=23 bbWeight=0.12 PerfScore 0.43
+G_M19770_IG23:        ; bbWeight=0.13, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rax]
+       mov      rsi, rbx
+       ; gcrRegs +[rsi]
+       mov      rdi, 0xD1FFAB1E      ; <unknown class>
+       call     CORINFO_HELP_ISINSTANCEOFINTERFACE
+       ; gcrRegs -[rsi] +[rax]
        ; gcr arg pop 0
-       jmp      SHORT G_M19770_IG26
...

+10 (+5.10%) : 87154.dasm - Microsoft.CodeAnalysis.CSharp.BoundNode:get_HasAnyErrors():ubyte:this (Tier1)

@@ -9,7 +9,7 @@
 ; 2 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  6,  5.18)     ref  ->  rbx         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundNode>
+;  V00 this         [V00,T01] (  6,  5.14)     ref  ->  rbx         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundNode>
 ;* V01 loc0         [V01    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Nullable`1[ubyte]>
 ;* V02 loc1         [V02    ] (  0,  0   )   ubyte  ->  zero-ref   
 ;* V03 loc2         [V03    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Nullable`1[ubyte]>
@@ -36,7 +36,7 @@
 ;  V24 tmp20        [V24,T07] (  3,  1.98)   ubyte  ->  rbx         "field V10.hasValue (fldOffset=0x0)" P-INDEP
 ;  V25 tmp21        [V25,T08] (  3,  1.98)   ubyte  ->  r15         "field V10.value (fldOffset=0x1)" P-INDEP
 ;  V26 cse0         [V26,T05] (  3,  2.99)     ref  ->  rdi         "CSE - aggressive"
-;  V27 rat0         [V27,T00] (  5,  7.32)     ref  ->  r15         class-hnd "replacement local" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+;  V27 rat0         [V27,T00] (  5,  7.23)     ref  ->  r15         class-hnd "replacement local" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
 ;
 ; Lcl frame size = 0
 
@@ -48,10 +48,10 @@ G_M41946_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
        mov      rbx, rdi
        ; gcrRegs +[rbx]
                        ;; size=12 bbWeight=1 PerfScore 3.75
-G_M41946_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M41946_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        test     byte  ptr [rbx+0x10], 1
-       jne      SHORT G_M41946_IG12
-                       ;; size=6 bbWeight=1 PerfScore 4.00
+       jne      G_M41946_IG16
+                       ;; size=10 bbWeight=1 PerfScore 4.00
 G_M41946_IG03:        ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        mov      rdi, gword ptr [rbx+0x08]
        ; gcrRegs +[rdi]
@@ -66,21 +66,46 @@ G_M41946_IG04:        ; bbWeight=1.00, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
        call     [Microsoft.CodeAnalysis.SyntaxNode:HasErrorsSlow():ubyte:this]
        ; gcrRegs -[rax rdi]
        test     eax, eax
-       jne      SHORT G_M41946_IG12
-                       ;; size=20 bbWeight=1.00 PerfScore 10.22
+       jne      G_M41946_IG16
+                       ;; size=24 bbWeight=1.00 PerfScore 10.22
 G_M41946_IG05:        ; bbWeight=0.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        mov      r15, rbx
        ; gcrRegs +[r15]
        test     r15, r15
-       je       SHORT G_M41946_IG08
+       je       SHORT G_M41946_IG07
                        ;; size=8 bbWeight=0.99 PerfScore 1.49
 G_M41946_IG06:        ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
        mov      rsi, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.BoundLiteral
        cmp      qword ptr [r15], rsi
-       je       SHORT G_M41946_IG08
+       jne      SHORT G_M41946_IG11
                        ;; size=15 bbWeight=0.50 PerfScore 2.10
-G_M41946_IG07:        ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M41946_IG07:        ; bbWeight=0.99, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rbx]
+       test     r15, r15
+       je       SHORT G_M41946_IG18
+       mov      rdi, gword ptr [r15+0x18]
+       ; gcrRegs +[rdi]
+       test     rdi, rdi
+       je       SHORT G_M41946_IG10
+                       ;; size=14 bbWeight=0.99 PerfScore 4.46
+G_M41946_IG08:        ; bbWeight=0.90, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[r15]
+       mov      rax, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric
+       cmp      qword ptr [rdi], rax
+       jne      SHORT G_M41946_IG12
+                       ;; size=15 bbWeight=0.90 PerfScore 3.82
+G_M41946_IG09:        ; bbWeight=0.84, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rdi]
+       mov      ebx, 11
+       jmp      SHORT G_M41946_IG13
+                       ;; size=7 bbWeight=0.84 PerfScore 1.88
+G_M41946_IG10:        ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+       xor      ebx, ebx
+       xor      r15d, r15d
+       jmp      SHORT G_M41946_IG14
+                       ;; size=7 bbWeight=0.09 PerfScore 0.23
+G_M41946_IG11:        ; bbWeight=0.15, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs +[rbx]
        mov      rsi, rbx
        ; gcrRegs +[rsi]
        mov      rdi, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.BoundExpression
@@ -88,68 +113,44 @@ G_M41946_IG07:        ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
        ; gcrRegs -[rbx rsi] +[rax]
        mov      r15, rax
        ; gcrRegs +[r15]
-                       ;; size=21 bbWeight=0.19 PerfScore 0.34
-G_M41946_IG08:        ; bbWeight=0.99, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rax]
-       test     r15, r15
-       je       SHORT G_M41946_IG18
-       mov      rdi, gword ptr [r15+0x18]
-       ; gcrRegs +[rdi]
-       test     rdi, rdi
-       je       SHORT G_M41946_IG11
-                       ;; size=14 bbWeight=0.99 PerfScore 4.46
-G_M41946_IG09:        ; bbWeight=0.90, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[r15]
-       mov      rax, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric
-       cmp      qword ptr [rdi], rax
-       jne      SHORT G_M41946_IG14
-                       ;; size=15 bbWeight=0.90 PerfScore 3.82
-G_M41946_IG10:        ; bbWeight=0.84, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rdi]
-       mov      ebx, 11
-       jmp      SHORT G_M41946_IG15
-                       ;; size=7 bbWeight=0.84 PerfScore 1.88
-G_M41946_IG11:        ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       xor      ebx, ebx
-       xor      r15d, r15d
-       jmp      SHORT G_M41946_IG16
-                       ;; size=7 bbWeight=0.09 PerfScore 0.23
-G_M41946_IG12:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      eax, 1
-                       ;; size=5 bbWeight=0.01 PerfScore 0.00
-G_M41946_IG13:        ; bbWeight=0.01, epilog, nogc, extend
-       pop      rbx
-       pop      r15
-       pop      rbp
-       ret      
-                       ;; size=5 bbWeight=0.01 PerfScore 0.02
-G_M41946_IG14:        ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
-       ; gcrRegs +[rdi]
+       jmp      SHORT G_M41946_IG07
+                       ;; size=23 bbWeight=0.15 PerfScore 0.56
+G_M41946_IG12:        ; bbWeight=0.06, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rax r15] +[rdi]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x58]
        call     [rax]<unknown method>
        ; gcrRegs -[rdi]
        mov      ebx, eax
                        ;; size=11 bbWeight=0.06 PerfScore 0.46
-G_M41946_IG15:        ; bbWeight=0.90, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41946_IG13:        ; bbWeight=0.90, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        xor      r15d, r15d
        cmp      ebx, 4
        sete     r15b
        mov      ebx, 1
                        ;; size=15 bbWeight=0.90 PerfScore 1.57
-G_M41946_IG16:        ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41946_IG14:        ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        xor      eax, eax
        cmp      r15b, 1
        sete     al
        movzx    rcx, bl
        and      eax, ecx
                        ;; size=14 bbWeight=0.99 PerfScore 1.98
-G_M41946_IG17:        ; bbWeight=0.99, epilog, nogc, extend
+G_M41946_IG15:        ; bbWeight=0.99, epilog, nogc, extend
        pop      rbx
        pop      r15
        pop      rbp
        ret      
                        ;; size=5 bbWeight=0.99 PerfScore 2.48
+G_M41946_IG16:        ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+       mov      eax, 1
+                       ;; size=5 bbWeight=0.01 PerfScore 0.00
+G_M41946_IG17:        ; bbWeight=0.01, epilog, nogc, extend
+       pop      rbx
+       pop      r15
+       pop      rbp
+       ret      
+                       ;; size=5 bbWeight=0.01 PerfScore 0.02
 G_M41946_IG18:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
        xor      eax, eax
                        ;; size=2 bbWeight=0 PerfScore 0.00
@@ -160,7 +161,7 @@ G_M41946_IG19:        ; bbWeight=0, epilog, nogc, extend
        ret      
                        ;; size=5 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 196, prolog size 9, PerfScore 42.04, instruction count 66, allocated bytes for code 196 (MethodHash=090c5c25) for method Microsoft.CodeAnalysis.CSharp.BoundNode:get_HasAnyErrors():ubyte:this (Tier1)
+; Total bytes of code 206, prolog size 9, PerfScore 42.26, instruction count 67, allocated bytes for code 206 (MethodHash=090c5c25) for method Microsoft.CodeAnalysis.CSharp.BoundNode:get_HasAnyErrors():ubyte:this (Tier1)
 ; ============================================================
 
 Unwind Info:

+18 (+5.56%) : 129399.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:Dispose():this (Tier1)

@@ -19,12 +19,12 @@
 ;* V07 tmp3         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.Extensions.DependencyInjection.Specification.Fakes.FakeService>
 ;  V08 tmp4         [V08,T08] (  3,  0   )     ref  ->  rbx         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;  V09 tmp5         [V09,T02] (  3,  5.90)     ref  ->  rsi         "arr expr"
-;  V10 tmp6         [V10,T06] (  3,  4.29)     ref  ->  rsi         "argument with side effect"
+;  V10 tmp6         [V10,T06] (  3,  4.26)     ref  ->  rsi         "argument with side effect"
 ;  V11 tmp7         [V11,T10] (  2,  0   )     ref  ->  rdi         "argument with side effect"
 ;  V12 tmp8         [V12,T11] (  2,  0   )     ref  ->  rsi         "argument with side effect"
 ;  V13 tmp9         [V13,T12] (  2,  0   )     ref  ->  rsi         "argument with side effect"
 ;  V14 tmp10        [V14,T13] (  2,  0   )     ref  ->  rsi         "argument with side effect"
-;  V15 rat0         [V15,T00] (  5,  7.23)     ref  ->  rdi         class-hnd "replacement local" <System.IDisposable>
+;  V15 rat0         [V15,T00] (  5,  7.21)     ref  ->  rdi         class-hnd "replacement local" <System.IDisposable>
 ;
 ; Lcl frame size = 0
 
@@ -46,15 +46,15 @@ G_M1675_IG02:        ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byre
        test     rbx, rbx
        je       G_M1675_IG11
                        ;; size=18 bbWeight=1 PerfScore 4.50
-G_M1675_IG03:        ; bbWeight=0.44, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M1675_IG03:        ; bbWeight=0.44, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
        mov      r15d, dword ptr [rbx+0x10]
        dec      r15d
-       js       SHORT G_M1675_IG11
-                       ;; size=9 bbWeight=0.44 PerfScore 1.44
+       js       G_M1675_IG11
+                       ;; size=13 bbWeight=0.44 PerfScore 1.44
 G_M1675_IG04:        ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        cmp      r15d, dword ptr [rbx+0x10]
-       jae      SHORT G_M1675_IG12
+       jae      G_M1675_IG12
        mov      rsi, gword ptr [rbx+0x08]
        ; gcrRegs +[rsi]
        cmp      r15d, dword ptr [rsi+0x08]
@@ -64,46 +64,48 @@ G_M1675_IG04:        ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
        mov      rdi, rsi
        ; gcrRegs +[rdi]
        test     rdi, rdi
-       je       SHORT G_M1675_IG07
-                       ;; size=36 bbWeight=0.98 PerfScore 13.52
+       je       SHORT G_M1675_IG06
+                       ;; size=40 bbWeight=0.98 PerfScore 13.52
 G_M1675_IG05:        ; bbWeight=0.49, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
        mov      rax, 0xD1FFAB1E      ; Microsoft.Extensions.DependencyInjection.Specification.Fakes.FakeService
        cmp      qword ptr [rdi], rax
-       je       SHORT G_M1675_IG07
+       jne      SHORT G_M1675_IG08
                        ;; size=15 bbWeight=0.49 PerfScore 2.09
-G_M1675_IG06:        ; bbWeight=0.18, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rdi]
+G_M1675_IG06:        ; bbWeight=0.98, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rsi]
+       test     rdi, rdi
+       je       G_M1675_IG14
+       mov      r11, 0xD1FFAB1E      ; Microsoft.Extensions.DependencyInjection.Specification.Fakes.FakeService
+       cmp      qword ptr [rdi], r11
+       jne      SHORT G_M1675_IG09
+                       ;; size=24 bbWeight=0.98 PerfScore 5.41
+G_M1675_IG07:        ; bbWeight=0.66, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+       cmp      byte  ptr [rdi+0x10], 0
+       jne      SHORT G_M1675_IG13
+       mov      byte  ptr [rdi+0x10], 1
+       jmp      SHORT G_M1675_IG10
+                       ;; size=12 bbWeight=0.66 PerfScore 4.61
+G_M1675_IG08:        ; bbWeight=0.16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rdi] +[rsi]
        mov      rdi, 0xD1FFAB1E      ; System.IDisposable
        call     CORINFO_HELP_ISINSTANCEOFINTERFACE
        ; gcrRegs -[rsi] +[rax]
        ; gcr arg pop 0
        mov      rdi, rax
        ; gcrRegs +[rdi]
-                       ;; size=18 bbWeight=0.18 PerfScore 0.27
-G_M1675_IG07:        ; bbWeight=0.98, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rax]
-       test     rdi, rdi
-       je       SHORT G_M1675_IG14
-       mov      r11, 0xD1FFAB1E      ; Microsoft.Extensions.DependencyInjection.Specification.Fakes.FakeService
-       cmp      qword ptr [rdi], r11
-       jne      SHORT G_M1675_IG09
-                       ;; size=20 bbWeight=0.98 PerfScore 5.41
-G_M1675_IG08:        ; bbWeight=0.66, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
-       cmp      byte  ptr [rdi+0x10], 0
-       jne      SHORT G_M1675_IG13
-       mov      byte  ptr [rdi+0x10], 1
-       jmp      SHORT G_M1675_IG10
-                       ;; size=12 bbWeight=0.66 PerfScore 4.61
+       jmp      SHORT G_M1675_IG06
+                       ;; size=20 bbWeight=0.16 PerfScore 0.57
 G_M1675_IG09:        ; bbWeight=0.98, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rax]
        mov      r11, 0xD1FFAB1E      ; code for <unknown method>
        call     [r11]<unknown method>
        ; gcrRegs -[rdi]
        ; gcr arg pop 0
                        ;; size=13 bbWeight=0.98 PerfScore 3.19
-G_M1675_IG10:        ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M1675_IG10:        ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        dec      r15d
-       jns      SHORT G_M1675_IG04
-                       ;; size=5 bbWeight=0.98 PerfScore 1.23
+       jns      G_M1675_IG04
+                       ;; size=9 bbWeight=0.98 PerfScore 1.23
 G_M1675_IG11:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        ; gcrRegs -[rbx]
        pop      rbx
@@ -192,7 +194,7 @@ G_M1675_IG15:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 324, prolog size 13, PerfScore 45.25, instruction count 82, allocated bytes for code 324 (MethodHash=713bf974) for method Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:Dispose():this (Tier1)
+; Total bytes of code 342, prolog size 13, PerfScore 45.55, instruction count 83, allocated bytes for code 342 (MethodHash=713bf974) for method Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:Dispose():this (Tier1)
 ; ============================================================
 
 Unwind Info:

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.x64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.linux.x64.checked.mch 1 0 1 0 -0 +60
benchmarks.run_tiered.linux.x64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.linux.x64.checked.mch 2 2 0 0 -64 +0
libraries.crossgen2.linux.x64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.linux.x64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.linux.x64.Release.mch 33 2 28 3 -26 +260
librariestestsnotieredcompilation.run.linux.x64.Release.mch 0 0 0 0 -0 +0
realworld.run.linux.x64.checked.mch 0 0 0 0 -0 +0
smoke_tests.nativeaot.linux.x64.checked.mch 0 0 0 0 -0 +0
36 4 29 3 -90 +320

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.x64.checked.mch 34,758 3,164 31,594 4 (0.01%) 241 (0.69%)
benchmarks.run_pgo.linux.x64.checked.mch 155,813 58,399 97,414 151 (0.10%) 307 (0.20%)
benchmarks.run_tiered.linux.x64.checked.mch 58,811 44,312 14,499 2 (0.00%) 79 (0.13%)
coreclr_tests.run.linux.x64.checked.mch 693,643 429,241 264,402 329 (0.05%) 770 (0.11%)
libraries.crossgen2.linux.x64.checked.mch 233,626 15 233,611 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.x64.checked.mch 293,508 6 293,502 8 (0.00%) 1,914 (0.65%)
libraries_tests.run.linux.x64.Release.mch 755,639 495,271 260,368 3,121 (0.41%) 4,304 (0.57%)
librariestestsnotieredcompilation.run.linux.x64.Release.mch 302,520 21,873 280,647 10 (0.00%) 2,095 (0.69%)
realworld.run.linux.x64.checked.mch 32,827 39 32,788 3 (0.01%) 340 (1.03%)
smoke_tests.nativeaot.linux.x64.checked.mch 27,438 9 27,429 0 (0.00%) 2 (0.01%)
2,588,583 1,052,329 1,536,254 3,628 (0.14%) 10,052 (0.39%)

jit-analyze output

benchmarks.run_pgo.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 68442860 (overridden on cmd)
Total bytes of diff: 68442920 (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):
          60 : 141275.dasm (17.96 % of base)

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

Top method regressions (bytes):
          60 (17.96 % of base) : 141275.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)

Top method regressions (percentages):
          60 (17.96 % of base) : 141275.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)

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


coreclr_tests.run.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 458922977 (overridden on cmd)
Total bytes of diff: 458922913 (overridden on cmd)
Total bytes of delta: -64 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -35 : 415741.dasm (-2.77 % of base)
         -29 : 420658.dasm (-2.22 % of base)

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

Top method improvements (bytes):
         -35 (-2.77 % of base) : 415741.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
         -29 (-2.22 % of base) : 420658.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

Top method improvements (percentages):
         -35 (-2.77 % of base) : 415741.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
         -29 (-2.22 % of base) : 420658.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.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 332086382 (overridden on cmd)
Total bytes of diff: 332086616 (overridden on cmd)
Total bytes of delta: 234 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          33 : 222080.dasm (2.99 % of base)
          31 : 520288.dasm (0.60 % of base)
          23 : 138648.dasm (4.11 % of base)
          18 : 129399.dasm (5.56 % of base)
          12 : 187938.dasm (1.61 % of base)
          12 : 370134.dasm (1.09 % of base)
          12 : 485510.dasm (1.57 % of base)
          10 : 505893.dasm (0.56 % of base)
          10 : 625763.dasm (0.61 % of base)
          10 : 653689.dasm (0.61 % of base)
          10 : 87154.dasm (5.10 % of base)
           9 : 299054.dasm (0.73 % of base)
           9 : 32993.dasm (1.80 % of base)
           9 : 371128.dasm (1.27 % of base)
           9 : 197421.dasm (2.52 % of base)
           6 : 185247.dasm (2.84 % of base)
           6 : 627655.dasm (1.17 % of base)
           5 : 198475.dasm (0.29 % of base)
           5 : 203028.dasm (0.38 % of base)
           4 : 728593.dasm (1.65 % of base)

Top file improvements (bytes):
         -15 : 52289.dasm (-1.31 % of base)
         -11 : 558185.dasm (-1.19 % of base)

30 total files with Code Size differences (2 improved, 28 regressed), 3 unchanged.

Top method regressions (bytes):
          33 (2.99 % of base) : 222080.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
          31 (0.60 % of base) : 520288.dasm - System.Runtime.Serialization.Formatters.Tests.EqualityExtensions:CheckSequenceEquals(System.Collections.IEnumerable,System.Collections.IEnumerable,ubyte) (Tier1)
          23 (4.11 % of base) : 138648.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
          18 (5.56 % of base) : 129399.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:Dispose():this (Tier1)
          12 (1.61 % of base) : 187938.dasm - Microsoft.Cci.MetadataWriter:ResolveEntityHandleFromPseudoToken(int):System.Reflection.Metadata.EntityHandle:this (Tier1)
          12 (1.57 % of base) : 485510.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
          12 (1.09 % of base) : 370134.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
          10 (5.10 % of base) : 87154.dasm - Microsoft.CodeAnalysis.CSharp.BoundNode:get_HasAnyErrors():ubyte:this (Tier1)
          10 (0.56 % of base) : 505893.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
          10 (0.61 % of base) : 625763.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
          10 (0.61 % of base) : 653689.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
           9 (1.80 % of base) : 32993.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
           9 (2.52 % of base) : 197421.dasm - System.Convert:ToString(System.Object,System.IFormatProvider):System.String (Tier1)
           9 (1.27 % of base) : 371128.dasm - System.Linq.Enumerable:TryGetLast[int](System.Collections.Generic.IEnumerable`1[int],byref):int (Tier1)
           9 (0.73 % of base) : 299054.dasm - System.Linq.Expressions.Compiler.VariableBinder:MergeScopes(System.Linq.Expressions.Expression):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]:this (Tier1)
           6 (2.84 % of base) : 185247.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
           6 (1.17 % of base) : 627655.dasm - System.Text.Json.ReadStack:<JsonPath>g__AppendStackFrame|22_0(System.Text.StringBuilder,byref) (Tier1)
           5 (0.29 % of base) : 198475.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToInteger(System.Object):int (Tier1)
           5 (0.38 % of base) : 203028.dasm - Microsoft.VisualBasic.CompilerServices.StringType:FromObject(System.Object):System.String (Tier1)
           4 (1.65 % of base) : 728593.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:ShouldSkipSyntaxNodeAnalysis(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol):ubyte:this (Tier1)

Top method improvements (bytes):
         -15 (-1.31 % of base) : 52289.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:<EnsureRequiredMembersCalculated>g__tryCalculateRequiredMembers|191_0(byref):ubyte:this (Tier1)
         -11 (-1.19 % of base) : 558185.dasm - System.Linq.Expressions.Compiler.VariableBinder:MergeScopes(System.Linq.Expressions.Expression):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]:this (Tier1)

Top method regressions (percentages):
          18 (5.56 % of base) : 129399.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:Dispose():this (Tier1)
          10 (5.10 % of base) : 87154.dasm - Microsoft.CodeAnalysis.CSharp.BoundNode:get_HasAnyErrors():ubyte:this (Tier1)
          23 (4.11 % of base) : 138648.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
          33 (2.99 % of base) : 222080.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
           6 (2.84 % of base) : 185247.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
           9 (2.52 % of base) : 197421.dasm - System.Convert:ToString(System.Object,System.IFormatProvider):System.String (Tier1)
           9 (1.80 % of base) : 32993.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
           4 (1.65 % of base) : 728593.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:ShouldSkipSyntaxNodeAnalysis(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol):ubyte:this (Tier1)
          12 (1.61 % of base) : 187938.dasm - Microsoft.Cci.MetadataWriter:ResolveEntityHandleFromPseudoToken(int):System.Reflection.Metadata.EntityHandle:this (Tier1)
          12 (1.57 % of base) : 485510.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
           9 (1.27 % of base) : 371128.dasm - System.Linq.Enumerable:TryGetLast[int](System.Collections.Generic.IEnumerable`1[int],byref):int (Tier1)
           2 (1.25 % of base) : 693278.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,int):ubyte:this (Tier1)
           6 (1.17 % of base) : 627655.dasm - System.Text.Json.ReadStack:<JsonPath>g__AppendStackFrame|22_0(System.Text.StringBuilder,byref) (Tier1)
          12 (1.09 % of base) : 370134.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
           9 (0.73 % of base) : 299054.dasm - System.Linq.Expressions.Compiler.VariableBinder:MergeScopes(System.Linq.Expressions.Expression):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]:this (Tier1)
          10 (0.61 % of base) : 625763.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
          10 (0.61 % of base) : 653689.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
          31 (0.60 % of base) : 520288.dasm - System.Runtime.Serialization.Formatters.Tests.EqualityExtensions:CheckSequenceEquals(System.Collections.IEnumerable,System.Collections.IEnumerable,ubyte) (Tier1)
          10 (0.56 % of base) : 505893.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
           3 (0.51 % of base) : 129348.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)

Top method improvements (percentages):
         -15 (-1.31 % of base) : 52289.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:<EnsureRequiredMembersCalculated>g__tryCalculateRequiredMembers|191_0(byref):ubyte:this (Tier1)
         -11 (-1.19 % of base) : 558185.dasm - System.Linq.Expressions.Compiler.VariableBinder:MergeScopes(System.Linq.Expressions.Expression):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]:this (Tier1)

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



osx arm64

Diffs are based on 2,256,559 contexts (930,876 MinOpts, 1,325,683 FullOpts).

MISSED contexts: base: 3,256 (0.14%), diff: 9,406 (0.42%)

Overall (-16 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 34,446,500 +72
coreclr_tests.run.osx.arm64.checked.mch 484,502,820 -84
libraries_tests.run.osx.arm64.Release.mch 311,678,540 -4

FullOpts (-16 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 17,973,220 +72
coreclr_tests.run.osx.arm64.checked.mch 152,196,364 -84
libraries_tests.run.osx.arm64.Release.mch 107,738,036 -4

Example diffs

benchmarks.run_pgo.osx.arm64.checked.mch

+36 (+7.89%) : 73778.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)

@@ -10,54 +10,56 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  8,  6.00)     ref  ->  x19         this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-;  V01 loc0         [V01,T01] (  5,  3.00)     int  ->  x20        
-;  V02 loc1         [V02,T17] (  3,  0.00)     ref  ->  x21         class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V03 loc2         [V03,T03] (  7,  2.50)     int  ->  x21        
-;  V04 loc3         [V04,T11] (  7,  0.00)     int  ->   x2        
+;  V01 loc0         [V01,T02] (  5,  3.00)     int  ->  x20        
+;  V02 loc1         [V02,T19] (  3,  0.00)     ref  ->  x22         class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V03 loc2         [V03,T04] (  7,  2.50)     int  ->  x21        
+;  V04 loc3         [V04,T13] (  7,  0.00)     int  ->   x2        
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T18] (  3,  0.00)     ref  ->   x1         single-def "CASTCLASS eval op1"
-;  V07 tmp2         [V07,T24] (  3,  0.00)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V08 tmp3         [V08,T13] (  5,  0.00)     ref  ->  x21         class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V09 tmp4         [V09,T14] (  2,  0.00)     ref  ->   x4         class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
-;  V10 tmp5         [V10,T06] (  4,  2   )     int  ->  x20         "Inline return value spill temp"
-;  V11 tmp6         [V11,T08] (  3,  1.50)     ref  ->   x0         class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V12 tmp7         [V12,T09] (  3,  1.00)     ref  ->   x0         class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
-;  V13 tmp8         [V13,T05] (  2,  2.00)     ref  ->   x0         "CASTCLASS eval op1"
+;  V06 tmp1         [V06,T20] (  3,  0.00)     ref  ->   x1         single-def "CASTCLASS eval op1"
+;  V07 tmp2         [V07,T26] (  3,  0.00)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V08 tmp3         [V08,T15] (  5,  0.00)     ref  ->  x22         class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V09 tmp4         [V09,T16] (  2,  0.00)     ref  ->   x4         class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
+;  V10 tmp5         [V10,T08] (  4,  2   )     int  ->  x20         "Inline return value spill temp"
+;  V11 tmp6         [V11,T10] (  3,  1.50)     ref  ->   x0         class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V12 tmp7         [V12,T11] (  3,  1.00)     ref  ->   x0         class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+;  V13 tmp8         [V13,T07] (  2,  2.00)     ref  ->   x0         "CASTCLASS eval op1"
 ;* V14 tmp9         [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
-;  V15 tmp10        [V15,T07] (  4,  1.75)     ref  ->   x0         class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-;  V16 tmp11        [V16,T04] (  3,  2.00)     ref  ->   x0         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V17 tmp12        [V17,T10] (  4,  0.00)     int  ->   x2         "Inlining Arg"
-;  V18 tmp13        [V18,T27] (  3,  0   )     ref  ->   x0         "arr expr"
-;  V19 tmp14        [V19,T12] (  3,  0.00)     ref  ->   x1         "arr expr"
-;* V20 tmp15        [V20,T26] (  0,  0   )     ref  ->  zero-ref    "arr expr"
-;  V21 tmp16        [V21,T15] (  2,  0.00)     ref  ->   x0         "argument with side effect"
-;  V22 tmp17        [V22,T16] (  2,  0.00)     ref  ->   x1         "argument with side effect"
-;  V23 cse0         [V23,T21] (  3,  0.00)     int  ->   x0         "CSE - conservative"
-;  V24 cse1         [V24,T19] (  2,  0.00)     ref  ->   x1         "CSE - conservative"
-;  V25 cse2         [V25,T25] (  3,  0.00)     int  ->  x19         "CSE - conservative"
-;  V26 cse3         [V26,T22] (  3,  0.00)     int  ->   x3         "CSE - conservative"
-;  V27 cse4         [V27,T20] (  3,  0.00)   byref  ->   x1         "CSE - conservative"
-;  V28 cse5         [V28,T23] (  3,  0.00)     int  ->  x20         "CSE - conservative"
-;  V29 cse6         [V29,T02] (  3,  2.75)     ref  ->   x1         "CSE - aggressive"
+;  V15 tmp10        [V15,T09] (  4,  1.75)     ref  ->   x0         class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
+;  V16 tmp11        [V16,T06] (  3,  2.00)     ref  ->  x22         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V17 tmp12        [V17,T12] (  4,  0.00)     int  ->   x2         "Inlining Arg"
+;  V18 tmp13        [V18,T29] (  3,  0   )     ref  ->   x0         "arr expr"
+;  V19 tmp14        [V19,T14] (  3,  0.00)     ref  ->   x1         "arr expr"
+;* V20 tmp15        [V20,T28] (  0,  0   )     ref  ->  zero-ref    "arr expr"
+;  V21 tmp16        [V21,T17] (  2,  0.00)     ref  ->   x0         "argument with side effect"
+;  V22 tmp17        [V22,T18] (  2,  0.00)     ref  ->   x1         "argument with side effect"
+;  V23 cse0         [V23,T23] (  3,  0.00)     int  ->   x0         "CSE - conservative"
+;  V24 cse1         [V24,T21] (  2,  0.00)     ref  ->   x1         "CSE - conservative"
+;  V25 cse2         [V25,T27] (  3,  0.00)     int  ->  x21         "CSE - conservative"
+;  V26 cse3         [V26,T24] (  3,  0.00)     int  ->   x3         "CSE - conservative"
+;  V27 cse4         [V27,T22] (  3,  0.00)   byref  ->   x1         "CSE - conservative"
+;  V28 cse5         [V28,T25] (  3,  0.00)     int  ->  x19         "CSE - conservative"
+;  V29 cse6         [V29,T03] (  3,  2.75)     ref  ->   x1         "CSE - aggressive"
+;  V30 rat0         [V30,T05] (  3,  2.25)     ref  ->   x1         "Spilling to split statement for tree"
+;  V31 rat1         [V31,T01] (  5,  3.75)     ref  ->  x22         class-hnd "replacement local" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
 ;
-; Lcl frame size = 8
+; Lcl frame size = 0
 
 G_M41283_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x30]!
-            stp     x19, x20, [sp, #0x18]
-            str     x21, [sp, #0x28]
+            stp     x19, x20, [sp, #0x10]
+            stp     x21, x22, [sp, #0x20]
             mov     fp, sp
             mov     x19, x0
             ; gcrRegs +[x19]
                        ;; size=20 bbWeight=1 PerfScore 4.00
 G_M41283_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             bl      <unknown method>
-            cbz     w0, G_M41283_IG21
+            cbz     w0, G_M41283_IG24
             ldr     w1, [x19, #0x28]
-            tbnz    w1, #6, G_M41283_IG21
+            tbnz    w1, #6, G_M41283_IG24
             ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
-            cbz     x1, G_M41283_IG11
+            cbz     x1, G_M41283_IG14
                        ;; size=24 bbWeight=1 PerfScore 10.00
 G_M41283_IG03:        ; bbWeight=0.75, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
             movz    x0, #0xD1FFAB1E
@@ -65,17 +67,17 @@ G_M41283_IG03:        ; bbWeight=0.75, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
             movk    x0, #1 LSL #32
             bl      CORINFO_HELP_ISINSTANCEOFCLASS
             ; gcrRegs -[x1] +[x0]
-            cbnz    x0, G_M41283_IG22
+            cbnz    x0, G_M41283_IG25
             mov     w20, #1
                        ;; size=24 bbWeight=0.75 PerfScore 3.00
 G_M41283_IG04:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
-            cbz     w20, G_M41283_IG13
+            cbz     w20, G_M41283_IG16
                        ;; size=4 bbWeight=1 PerfScore 1.00
 G_M41283_IG05:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             mov     w21, wzr
             cmp     w20, #0
-            ble     G_M41283_IG13
+            ble     G_M41283_IG16
                        ;; size=12 bbWeight=0.50 PerfScore 1.00
 G_M41283_IG06:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x19, #0x08]
@@ -88,23 +90,42 @@ G_M41283_IG07:        ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             cmp     x1, x2
-            beq     G_M41283_IG12
+            beq     G_M41283_IG15
                        ;; size=24 bbWeight=0.25 PerfScore 1.50
 G_M41283_IG08:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
             ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
+            mov     x22, x1
+            ; gcrRegs +[x22]
+            cbz     x22, G_M41283_IG11
+                       ;; size=12 bbWeight=0.50 PerfScore 2.25
+G_M41283_IG09:        ; bbWeight=0.25, gcrefRegs=480002 {x1 x19 x22}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x22]
+            movz    x2, #0xD1FFAB1E
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #1 LSL #32
+            cmp     x0, x2
+            beq     G_M41283_IG11
+                       ;; size=24 bbWeight=0.25 PerfScore 1.50
+G_M41283_IG10:        ; bbWeight=0.13, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x22]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             bl      CORINFO_HELP_CHKCASTCLASS
             ; gcrRegs -[x1] +[x0]
-            ldr     w1, [x0, #0x10]
-            cmp     w21, w1
-            blo     G_M41283_IG10
-                       ;; size=32 bbWeight=0.50 PerfScore 5.00
-G_M41283_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0 x19]
+            mov     x22, x0
+            ; gcrRegs +[x22]
+                       ;; size=20 bbWeight=0.13 PerfScore 0.38
+G_M41283_IG11:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x0]
+            ldr     w0, [x22, #0x10]
+            cmp     w21, w0
+            blo     G_M41283_IG13
+                       ;; size=12 bbWeight=0.50 PerfScore 2.25
+G_M41283_IG12:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x19 x22]
             movz    x0, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
@@ -112,26 +133,27 @@ G_M41283_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             blr     x0
             brk_unix #0
                        ;; size=24 bbWeight=0 PerfScore 0.00
-G_M41283_IG10:        ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs +[x0 x19]
-            ldr     x0, [x0, #0x08]
+G_M41283_IG13:        ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs +[x19 x22]
+            ldr     x0, [x22, #0x08]
+            ; gcrRegs +[x0]
             ldr     w1, [x0, #0x08]
             cmp     w21, w1
-            bhs     G_M41283_IG20
+            bhs     G_M41283_IG23
             add     x0, x0, #16
             ; gcrRegs -[x0]
             ; byrRegs +[x0]
             ldr     x0, [x0, w21, UXTW #3]
             ; gcrRegs +[x0]
             ; byrRegs -[x0]
-            b       G_M41283_IG12
+            b       G_M41283_IG15
                        ;; size=28 bbWeight=0 PerfScore 0.00
-G_M41283_IG11:        ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
+G_M41283_IG14:        ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0 x22]
             mov     w20, wzr
             b       G_M41283_IG04
                        ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M41283_IG12:        ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG15:        ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this
             movk    x1, #0xD1FFAB1E LSL #16
@@ -144,47 +166,47 @@ G_M41283_IG12:        ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
             cmp     w21, w20
             blt     G_M41283_IG06
                        ;; size=36 bbWeight=0.50 PerfScore 5.25
-G_M41283_IG13:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG16:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldrb    w0, [x19, #0x2E]
             cmp     w0, #25
-            bne     G_M41283_IG21
+            bne     G_M41283_IG24
                        ;; size=12 bbWeight=1 PerfScore 4.50
-G_M41283_IG14:        ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG17:        ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
-            mov     x21, x1
-            ; gcrRegs +[x21]
-            cbnz    x21, G_M41283_IG18
+            mov     x22, x1
+            ; gcrRegs +[x22]
+            cbnz    x22, G_M41283_IG21
                        ;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG15:        ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG18:        ; bbWeight=0.00, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x1 x19]
             mov     w2, wzr
-            sub     w19, w20, #1
-            cmp     w19, #0
-            ble     G_M41283_IG21
+            sub     w21, w20, #1
+            cmp     w21, #0
+            ble     G_M41283_IG24
                        ;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG16:        ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
-            ldr     w0, [x21, #0x10]
+G_M41283_IG19:        ; bbWeight=0.00, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+            ldr     w0, [x22, #0x10]
             cmp     w2, w0
-            bhs     G_M41283_IG09
-            ldr     x1, [x21, #0x08]
+            bhs     G_M41283_IG12
+            ldr     x1, [x22, #0x08]
             ; gcrRegs +[x1]
             ldr     w3, [x1, #0x08]
             cmp     w2, w3
-            bhs     G_M41283_IG20
+            bhs     G_M41283_IG23
             add     x1, x1, #16
             ; gcrRegs -[x1]
             ; byrRegs +[x1]
             ldr     x4, [x1, w2, UXTW #3]
             ; gcrRegs +[x4]
-            add     w20, w2, #1
...

+36 (+7.89%) : 77072.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)

@@ -10,54 +10,56 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  8,  6.00)     ref  ->  x19         this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-;  V01 loc0         [V01,T01] (  5,  3.00)     int  ->  x20        
-;  V02 loc1         [V02,T22] (  3,  0.00)     ref  ->  x21         class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V03 loc2         [V03,T03] (  7,  2.50)     int  ->  x21        
-;  V04 loc3         [V04,T11] (  7,  0.00)     int  ->   x2        
+;  V01 loc0         [V01,T02] (  5,  3.00)     int  ->  x20        
+;  V02 loc1         [V02,T24] (  3,  0.00)     ref  ->  x22         class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V03 loc2         [V03,T04] (  7,  2.50)     int  ->  x21        
+;  V04 loc3         [V04,T13] (  7,  0.00)     int  ->   x2        
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T23] (  3,  0.00)     ref  ->   x1         single-def "CASTCLASS eval op1"
-;  V07 tmp2         [V07,T26] (  3,  0.00)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V08 tmp3         [V08,T13] (  5,  0.00)     ref  ->  x21         class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V09 tmp4         [V09,T14] (  2,  0.00)     ref  ->   x4         class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
-;  V10 tmp5         [V10,T06] (  4,  2   )     int  ->  x20         "Inline return value spill temp"
-;  V11 tmp6         [V11,T08] (  3,  1.43)     ref  ->   x0         class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V12 tmp7         [V12,T09] (  3,  1.00)     ref  ->   x0         class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
-;  V13 tmp8         [V13,T05] (  2,  2.00)     ref  ->   x0         "CASTCLASS eval op1"
+;  V06 tmp1         [V06,T25] (  3,  0.00)     ref  ->   x1         single-def "CASTCLASS eval op1"
+;  V07 tmp2         [V07,T28] (  3,  0.00)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V08 tmp3         [V08,T15] (  5,  0.00)     ref  ->  x22         class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V09 tmp4         [V09,T16] (  2,  0.00)     ref  ->   x4         class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
+;  V10 tmp5         [V10,T08] (  4,  2   )     int  ->  x20         "Inline return value spill temp"
+;  V11 tmp6         [V11,T10] (  3,  1.43)     ref  ->   x0         class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V12 tmp7         [V12,T11] (  3,  1.00)     ref  ->   x0         class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+;  V13 tmp8         [V13,T07] (  2,  2.00)     ref  ->   x0         "CASTCLASS eval op1"
 ;* V14 tmp9         [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
-;  V15 tmp10        [V15,T07] (  4,  1.75)     ref  ->   x0         class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-;  V16 tmp11        [V16,T04] (  3,  2.00)     ref  ->   x0         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V17 tmp12        [V17,T10] (  4,  0.00)     int  ->   x2         "Inlining Arg"
-;  V18 tmp13        [V18,T27] (  3,  0   )     ref  ->   x0         "arr expr"
-;  V19 tmp14        [V19,T12] (  3,  0.00)     ref  ->   x1         "arr expr"
-;* V20 tmp15        [V20,T25] (  0,  0   )     ref  ->  zero-ref    "arr expr"
-;  V21 tmp16        [V21,T15] (  2,  0.00)     ref  ->   x0         "argument with side effect"
-;  V22 tmp17        [V22,T16] (  2,  0.00)     ref  ->   x1         "argument with side effect"
-;  V23 cse0         [V23,T19] (  3,  0.00)     int  ->   x0         "CSE - conservative"
-;  V24 cse1         [V24,T17] (  2,  0.00)     ref  ->   x1         "CSE - conservative"
-;  V25 cse2         [V25,T24] (  3,  0.00)     int  ->  x19         "CSE - conservative"
-;  V26 cse3         [V26,T20] (  3,  0.00)     int  ->   x3         "CSE - conservative"
-;  V27 cse4         [V27,T18] (  3,  0.00)   byref  ->   x1         "CSE - conservative"
-;  V28 cse5         [V28,T21] (  3,  0.00)     int  ->  x20         "CSE - conservative"
-;  V29 cse6         [V29,T02] (  3,  2.71)     ref  ->   x1         "CSE - aggressive"
+;  V15 tmp10        [V15,T09] (  4,  1.75)     ref  ->   x0         class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
+;  V16 tmp11        [V16,T06] (  3,  2.00)     ref  ->  x22         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V17 tmp12        [V17,T12] (  4,  0.00)     int  ->   x2         "Inlining Arg"
+;  V18 tmp13        [V18,T29] (  3,  0   )     ref  ->   x0         "arr expr"
+;  V19 tmp14        [V19,T14] (  3,  0.00)     ref  ->   x1         "arr expr"
+;* V20 tmp15        [V20,T27] (  0,  0   )     ref  ->  zero-ref    "arr expr"
+;  V21 tmp16        [V21,T17] (  2,  0.00)     ref  ->   x0         "argument with side effect"
+;  V22 tmp17        [V22,T18] (  2,  0.00)     ref  ->   x1         "argument with side effect"
+;  V23 cse0         [V23,T21] (  3,  0.00)     int  ->   x0         "CSE - conservative"
+;  V24 cse1         [V24,T19] (  2,  0.00)     ref  ->   x1         "CSE - conservative"
+;  V25 cse2         [V25,T26] (  3,  0.00)     int  ->  x21         "CSE - conservative"
+;  V26 cse3         [V26,T22] (  3,  0.00)     int  ->   x3         "CSE - conservative"
+;  V27 cse4         [V27,T20] (  3,  0.00)   byref  ->   x1         "CSE - conservative"
+;  V28 cse5         [V28,T23] (  3,  0.00)     int  ->  x19         "CSE - conservative"
+;  V29 cse6         [V29,T03] (  3,  2.71)     ref  ->   x1         "CSE - aggressive"
+;  V30 rat0         [V30,T05] (  3,  2.25)     ref  ->   x1         "Spilling to split statement for tree"
+;  V31 rat1         [V31,T01] (  5,  3.75)     ref  ->  x22         class-hnd "replacement local" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
 ;
-; Lcl frame size = 8
+; Lcl frame size = 0
 
 G_M41283_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x30]!
-            stp     x19, x20, [sp, #0x18]
-            str     x21, [sp, #0x28]
+            stp     x19, x20, [sp, #0x10]
+            stp     x21, x22, [sp, #0x20]
             mov     fp, sp
             mov     x19, x0
             ; gcrRegs +[x19]
                        ;; size=20 bbWeight=1 PerfScore 4.00
 G_M41283_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             bl      <unknown method>
-            cbz     w0, G_M41283_IG21
+            cbz     w0, G_M41283_IG24
             ldr     w1, [x19, #0x28]
-            tbnz    w1, #6, G_M41283_IG21
+            tbnz    w1, #6, G_M41283_IG24
             ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
-            cbz     x1, G_M41283_IG11
+            cbz     x1, G_M41283_IG14
                        ;; size=24 bbWeight=1 PerfScore 10.00
 G_M41283_IG03:        ; bbWeight=0.71, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
             movz    x0, #0xD1FFAB1E
@@ -65,17 +67,17 @@ G_M41283_IG03:        ; bbWeight=0.71, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
             movk    x0, #1 LSL #32
             bl      CORINFO_HELP_ISINSTANCEOFCLASS
             ; gcrRegs -[x1] +[x0]
-            cbnz    x0, G_M41283_IG22
+            cbnz    x0, G_M41283_IG25
             mov     w20, #1
                        ;; size=24 bbWeight=0.71 PerfScore 2.86
 G_M41283_IG04:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
-            cbz     w20, G_M41283_IG13
+            cbz     w20, G_M41283_IG16
                        ;; size=4 bbWeight=1 PerfScore 1.00
 G_M41283_IG05:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             mov     w21, wzr
             cmp     w20, #0
-            ble     G_M41283_IG13
+            ble     G_M41283_IG16
                        ;; size=12 bbWeight=0.50 PerfScore 1.00
 G_M41283_IG06:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x19, #0x08]
@@ -88,23 +90,42 @@ G_M41283_IG07:        ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             cmp     x1, x2
-            beq     G_M41283_IG12
+            beq     G_M41283_IG15
                        ;; size=24 bbWeight=0.25 PerfScore 1.50
 G_M41283_IG08:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
             ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
+            mov     x22, x1
+            ; gcrRegs +[x22]
+            cbz     x22, G_M41283_IG11
+                       ;; size=12 bbWeight=0.50 PerfScore 2.25
+G_M41283_IG09:        ; bbWeight=0.25, gcrefRegs=480002 {x1 x19 x22}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x22]
+            movz    x2, #0xD1FFAB1E
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #1 LSL #32
+            cmp     x0, x2
+            beq     G_M41283_IG11
+                       ;; size=24 bbWeight=0.25 PerfScore 1.50
+G_M41283_IG10:        ; bbWeight=0.13, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x22]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             bl      CORINFO_HELP_CHKCASTCLASS
             ; gcrRegs -[x1] +[x0]
-            ldr     w1, [x0, #0x10]
-            cmp     w21, w1
-            blo     G_M41283_IG10
-                       ;; size=32 bbWeight=0.50 PerfScore 5.00
-G_M41283_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0 x19]
+            mov     x22, x0
+            ; gcrRegs +[x22]
+                       ;; size=20 bbWeight=0.13 PerfScore 0.38
+G_M41283_IG11:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x0]
+            ldr     w0, [x22, #0x10]
+            cmp     w21, w0
+            blo     G_M41283_IG13
+                       ;; size=12 bbWeight=0.50 PerfScore 2.25
+G_M41283_IG12:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x19 x22]
             movz    x0, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
@@ -112,26 +133,27 @@ G_M41283_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             blr     x0
             brk_unix #0
                        ;; size=24 bbWeight=0 PerfScore 0.00
-G_M41283_IG10:        ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs +[x0 x19]
-            ldr     x0, [x0, #0x08]
+G_M41283_IG13:        ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs +[x19 x22]
+            ldr     x0, [x22, #0x08]
+            ; gcrRegs +[x0]
             ldr     w1, [x0, #0x08]
             cmp     w21, w1
-            bhs     G_M41283_IG20
+            bhs     G_M41283_IG23
             add     x0, x0, #16
             ; gcrRegs -[x0]
             ; byrRegs +[x0]
             ldr     x0, [x0, w21, UXTW #3]
             ; gcrRegs +[x0]
             ; byrRegs -[x0]
-            b       G_M41283_IG12
+            b       G_M41283_IG15
                        ;; size=28 bbWeight=0 PerfScore 0.00
-G_M41283_IG11:        ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
+G_M41283_IG14:        ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0 x22]
             mov     w20, wzr
             b       G_M41283_IG04
                        ;; size=8 bbWeight=0.29 PerfScore 0.43
-G_M41283_IG12:        ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG15:        ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this
             movk    x1, #0xD1FFAB1E LSL #16
@@ -144,47 +166,47 @@ G_M41283_IG12:        ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
             cmp     w21, w20
             blt     G_M41283_IG06
                        ;; size=36 bbWeight=0.50 PerfScore 5.25
-G_M41283_IG13:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG16:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldrb    w0, [x19, #0x2E]
             cmp     w0, #25
-            bne     G_M41283_IG21
+            bne     G_M41283_IG24
                        ;; size=12 bbWeight=1 PerfScore 4.50
-G_M41283_IG14:        ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG17:        ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
-            mov     x21, x1
-            ; gcrRegs +[x21]
-            cbnz    x21, G_M41283_IG18
+            mov     x22, x1
+            ; gcrRegs +[x22]
+            cbnz    x22, G_M41283_IG21
                        ;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG15:        ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG18:        ; bbWeight=0.00, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x1 x19]
             mov     w2, wzr
-            sub     w19, w20, #1
-            cmp     w19, #0
-            ble     G_M41283_IG21
+            sub     w21, w20, #1
+            cmp     w21, #0
+            ble     G_M41283_IG24
                        ;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG16:        ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
-            ldr     w0, [x21, #0x10]
+G_M41283_IG19:        ; bbWeight=0.00, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+            ldr     w0, [x22, #0x10]
             cmp     w2, w0
-            bhs     G_M41283_IG09
-            ldr     x1, [x21, #0x08]
+            bhs     G_M41283_IG12
+            ldr     x1, [x22, #0x08]
             ; gcrRegs +[x1]
             ldr     w3, [x1, #0x08]
             cmp     w2, w3
-            bhs     G_M41283_IG20
+            bhs     G_M41283_IG23
             add     x1, x1, #16
             ; gcrRegs -[x1]
             ; byrRegs +[x1]
             ldr     x4, [x1, w2, UXTW #3]
             ; gcrRegs +[x4]
-            add     w20, w2, #1
...

coreclr_tests.run.osx.arm64.checked.mch

-44 (-2.49%) : 384030.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

@@ -15,90 +15,89 @@
 ;  V03 loc1         [V03,T06] (  5,  3.72)     ref  ->  x22         class-hnd exact <Internal.TypeSystem.InstantiatedType>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [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,T41] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V07 tmp3         [V07,T40] (  2,  0.78)     ref  ->   x0         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-;  V08 tmp4         [V08,T26] (  3,  1.55)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V09 tmp5         [V09,T48] (  2,  0   )     ref  ->  x19         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2         [V06,T40] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V07 tmp3         [V07,T39] (  2,  0.78)     ref  ->   x0         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+;  V08 tmp4         [V08,T25] (  3,  1.55)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V09 tmp5         [V09,T47] (  2,  0   )     ref  ->  x19         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
 ;  V10 tmp6         [V10,T03] (  7,  5.52)     ref  ->  x23         class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
-;  V11 tmp7         [V11,T17] (  3,  2   )     ref  ->  x21         "guarded devirt return temp"
+;  V11 tmp7         [V11,T16] (  3,  2   )     ref  ->  x21         "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.77)     ref  ->  x25         "guarded devirt return temp"
+;  V13 tmp9         [V13,T09] (  8,  2.77)     ref  ->  x25         "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.83)     ref  ->  x26         "guarded devirt return temp"
+;  V15 tmp11        [V15,T18] (  4,  1.83)     ref  ->  x26         "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,T23] (  8,  1.78)     ref  ->  x25         "guarded devirt return temp"
+;  V17 tmp13        [V17,T22] (  8,  1.78)     ref  ->  x25         "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    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V21 tmp17        [V21    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V22 tmp18        [V22,T28] (  2,  0.92)     int  ->   x0        
-;  V23 tmp19        [V23,T18] (  3,  1.85)     ref  ->  x20         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;  V22 tmp18        [V22,T27] (  2,  0.92)     int  ->   x0        
+;  V23 tmp19        [V23,T17] (  3,  1.85)     ref  ->  x20         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
 ;* V24 tmp20        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V25 tmp21        [V25,T35] (  3,  0.92)     ref  ->  x26         "guarded devirt return temp"
+;  V25 tmp21        [V25,T34] (  3,  0.92)     ref  ->  x26         "guarded devirt return temp"
 ;* V26 tmp22        [V26    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V27 tmp23        [V27,T36] (  3,  0.92)     ref  ->  x20         "guarded devirt return temp"
-;  V28 tmp24        [V28,T09] (  5,  2.77)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V27 tmp23        [V27,T35] (  3,  0.92)     ref  ->  x20         "guarded devirt return temp"
+;  V28 tmp24        [V28,T08] (  5,  2.77)     ref  ->   x0         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,T38] (  3,  0.84)     ref  ->  x26         "guarded devirt return temp"
-;  V31 tmp27        [V31,T13] (  5,  2.52)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V30 tmp26        [V30,T37] (  3,  0.84)     ref  ->  x26         "guarded devirt return temp"
+;  V31 tmp27        [V31,T12] (  5,  2.52)     ref  ->   x0         single-def "guarded devirt arg 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   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V34 tmp30        [V34    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V35 tmp31        [V35    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V36 tmp32        [V36    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V37 tmp33        [V37,T11] (  5,  2.75)     ref  ->   x0         class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-;  V38 tmp34        [V38,T37] (  3,  0.92)     ref  ->  x26         "guarded devirt return temp"
+;  V37 tmp33        [V37,T10] (  5,  2.75)     ref  ->   x0         class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+;  V38 tmp34        [V38,T36] (  3,  0.92)     ref  ->  x26         "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,T21] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V42 tmp38        [V42,T22] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;* V41 tmp37        [V41,T20] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
+;* V42 tmp38        [V42,T21] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
 ;* V43 tmp39        [V43    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
 ;  V44 tmp40        [V44,T04] (  4,  4.07)     ref  ->  x26         class-hnd exact single-def "impAppendStmt" <<unknown class>>
 ;* V45 tmp41        [V45    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V46 tmp42        [V46    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V47 tmp43        [V47    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V48 tmp44        [V48    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V49 tmp45        [V49,T15] (  2,  2.45)     int  ->  x28         "impAppendStmt"
-;  V50 tmp46        [V50,T30] (  4,  1.22)     ref  ->   x0         "guarded devirt return temp"
+;  V49 tmp45        [V49,T13] (  2,  2.45)     int  ->  x28         "impAppendStmt"
+;  V50 tmp46        [V50,T29] (  4,  1.22)     ref  ->   x0         "guarded devirt return temp"
 ;* V51 tmp47        [V51    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-;  V52 tmp48        [V52,T46] (  2,  0.07)   byref  ->  x27         single-def "impAppendStmt"
-;  V53 tmp49        [V53,T47] (  3,  0.04)     int  ->   x0         "guarded devirt return temp"
-;  V54 tmp50        [V54,T45] (  5,  0.11)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V52 tmp48        [V52,T45] (  2,  0.07)   byref  ->  x27         single-def "impAppendStmt"
+;  V53 tmp49        [V53,T46] (  3,  0.04)     int  ->   x0         "guarded devirt return temp"
+;  V54 tmp50        [V54,T44] (  5,  0.11)     ref  ->   x0         single-def "guarded devirt arg temp"
 ;* V55 tmp51        [V55    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
 ;* V56 tmp52        [V56    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V57 tmp53        [V57,T31] (  3,  1.22)     ref  ->   x0         class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+;  V57 tmp53        [V57,T30] (  3,  1.22)     ref  ->   x0         class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
 ;* V58 tmp54        [V58    ] (  0,  0   )  struct (24) zero-ref    "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
 ;  V59 tmp55        [V59    ] (  2,  1.02)     ref  ->  [fp+0x28]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V60 tmp56        [V60,T27] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-;  V61 tmp57        [V61,T14] (  4,  2.45)     ref  ->   x0         class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-;  V62 tmp58        [V62,T34] (  2,  0.59)     int  ->   x0        
-;  V63 tmp59        [V63,T33] (  3,  1.17)     ref  ->  x26         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V60 tmp56        [V60,T26] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+;  V61 tmp57        [V61,T14] (  3,  2.33)     ref  ->   x0         class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+;  V62 tmp58        [V62,T33] (  2,  0.59)     int  ->   x0        
+;  V63 tmp59        [V63,T32] (  3,  1.17)     ref  ->  x26         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
 ;* V64 tmp60        [V64    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V65 tmp61        [V65,T42] (  3,  0.59)     ref  ->  x27         "guarded devirt return temp"
+;  V65 tmp61        [V65,T41] (  3,  0.59)     ref  ->  x27         "guarded devirt return temp"
 ;* V66 tmp62        [V66    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V67 tmp63        [V67,T43] (  3,  0.59)     ref  ->  x26         "guarded devirt return temp"
-;  V68 tmp64        [V68,T24] (  5,  1.76)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V67 tmp63        [V67,T42] (  3,  0.59)     ref  ->  x26         "guarded devirt return temp"
+;  V68 tmp64        [V68,T23] (  5,  1.76)     ref  ->   x0         single-def "guarded devirt arg temp"
 ;* V69 tmp65        [V69    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-;  V70 tmp66        [V70,T44] (  3,  0.53)     ref  ->  x27         "guarded devirt return temp"
-;  V71 tmp67        [V71,T25] (  5,  1.60)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V70 tmp66        [V70,T43] (  3,  0.53)     ref  ->  x27         "guarded devirt return temp"
+;  V71 tmp67        [V71,T24] (  5,  1.60)     ref  ->   x0         single-def "guarded devirt arg temp"
 ;* V72 tmp68        [V72    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
 ;* V73 tmp69        [V73    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V74 tmp70        [V74    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V75 tmp71        [V75    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V76 tmp72        [V76    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V77 tmp73        [V77,T16] (  6,  2.04)     ref  ->  x21         single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
-;  V78 tmp74        [V78,T12] (  8,  2.70)     ref  ->  x22         single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
-;  V79 tmp75        [V79,T29] (  3,  1.42)     int  ->  x24         single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
+;  V77 tmp73        [V77,T15] (  6,  2.04)     ref  ->  x21         single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
+;  V78 tmp74        [V78,T11] (  8,  2.70)     ref  ->  x22         single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
+;  V79 tmp75        [V79,T28] (  3,  1.42)     int  ->  x24         single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
 ;* V80 tmp76        [V80    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V58._typicalMethodDef (fldOffset=0x0)" P-INDEP
 ;* V81 tmp77        [V81    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V58._instantiatedType (fldOffset=0x8)" P-INDEP
 ;* V82 tmp78        [V82    ] (  0,  0   )     int  ->  zero-ref    single-def "field V58._hashcode (fldOffset=0x10)" P-INDEP
 ;  V83 tmp79        [V83    ] (  8,  6.50)  struct (24) [fp+0x10]  do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-;* V84 tmp80        [V84,T32] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V85 tmp81        [V85,T39] (  2,  0.80)     ref  ->   x0         single-def "argument with side effect"
-;  V86 cse0         [V86,T20] (  3,  1.83)     ref  ->   x0         "CSE - moderate"
+;* V84 tmp80        [V84,T31] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;  V85 tmp81        [V85,T38] (  2,  0.80)     ref  ->   x0         single-def "argument with side effect"
+;  V86 cse0         [V86,T19] (  3,  1.83)     ref  ->   x0         "CSE - moderate"
 ;  V87 cse1         [V87,T00] ( 18,  9.67)     ref  ->   x1         multi-def "CSE - aggressive"
 ;  V88 cse2         [V88,T07] ( 10,  3.83)    long  ->  x24         multi-def "CSE - aggressive"
-;  V89 rat0         [V89,T08] (  6,  3.11)     ref  ->   x2         class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
 ;
 ; Lcl frame size = 32
 
@@ -152,7 +151,7 @@ G_M10698_IG06:        ; bbWeight=0.61, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             cmp     x24, x0
-            bne     G_M10698_IG57
+            bne     G_M10698_IG46
             b       G_M10698_IG08
                        ;; size=32 bbWeight=0.61 PerfScore 6.12
 G_M10698_IG07:        ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
@@ -184,7 +183,7 @@ G_M10698_IG11:        ; bbWeight=0.46, gcrefRegs=2E80000 {x19 x21 x22 x23 x25},
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
             cmp     x0, x1
-            bne     G_M10698_IG59
+            bne     G_M10698_IG48
             ldr     x0, [x23, #0x58]
             ; gcrRegs +[x0]
             ldr     x1, [x0]
@@ -192,7 +191,7 @@ G_M10698_IG11:        ; bbWeight=0.46, gcrefRegs=2E80000 {x19 x21 x22 x23 x25},
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG58
+            bne     G_M10698_IG47
             ldr     x20, [x0, #0x08]
             ; gcrRegs +[x20]
                        ;; size=56 bbWeight=0.46 PerfScore 8.32
@@ -213,7 +212,7 @@ G_M10698_IG13:        ; bbWeight=0.42, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x2
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG60
+            bne     G_M10698_IG49
             ldr     x26, [x0, #0x08]
             ; gcrRegs +[x26]
                        ;; size=32 bbWeight=0.42 PerfScore 5.05
@@ -270,7 +269,7 @@ G_M10698_IG18:        ; bbWeight=0.46, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG61
+            bne     G_M10698_IG50
             ldr     x26, [x0, #0x08]
             ; gcrRegs +[x26]
             b       G_M10698_IG20
@@ -343,7 +342,7 @@ G_M10698_IG22:        ; bbWeight=0.61, gcrefRegs=4600000 {x21 x22 x26}, byrefReg
 G_M10698_IG23:        ; bbWeight=0.61, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=0000 {}, byref, isz
             ldr     x26, [x26, #0x50]
             ldr     w0, [x22, #0x68]
-            cbz     w0, G_M10698_IG47
+            cbz     w0, G_M10698_IG42
                        ;; size=12 bbWeight=0.61 PerfScore 4.28
 G_M10698_IG24:        ; bbWeight=0.61, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=0000 {}, byref, isz
             ldr     w28, [x22, #0x68]
@@ -351,10 +350,10 @@ G_M10698_IG24:        ; bbWeight=0.61, gcrefRegs=4600000 {x21 x22 x26}, byrefReg
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             cmp     x24, x0
-            bne     G_M10698_IG49
+            bne     G_M10698_IG52
             ldr     x0, [x21, #0x20]
             ; gcrRegs +[x0]
-            cbz     x0, G_M10698_IG62
+            cbz     x0, G_M10698_IG41
                        ;; size=32 bbWeight=0.61 PerfScore 6.12
 G_M10698_IG25:        ; bbWeight=0.61, gcrefRegs=4600001 {x0 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
             movz    x1, #0xD1FFAB1E      // code for Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int
@@ -377,7 +376,7 @@ G_M10698_IG25:        ; bbWeight=0.61, gcrefRegs=4600001 {x0 x21 x22 x26}, byref
             ldr     x3, [x3]
             blr     x3
             ; gcrRegs -[x0]
-            cbz     w0, G_M10698_IG45
+            cbz     w0, G_M10698_IG44
                        ;; size=72 bbWeight=0.61 PerfScore 11.62
 G_M10698_IG26:        ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x21-x22 x26]
@@ -406,7 +405,7 @@ G_M10698_IG28:        ; bbWeight=0.39, gcVars=0000000000000000 {}, gcrefRegs=380
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             cmp     x24, x0
-            bne     G_M10698_IG53
+            bne     G_M10698_IG56
             ldr     x25, [x21, #0x10]
             ; gcrRegs +[x25]
                        ;; size=52 bbWeight=0.39 PerfScore 5.83
@@ -420,7 +419,7 @@ G_M10698_IG30:        ; bbWeight=0.29, gcrefRegs=2300000 {x20 x21 x25}, byrefReg
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
             cmp     x0, x1
-            bne     G_M10698_IG55
+            bne     G_M10698_IG58
                        ;; size=24 bbWeight=0.29 PerfScore 1.76
 G_M10698_IG31:        ; bbWeight=0.29, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x20, #0x58]
@@ -430,7 +429,7 @@ G_M10698_IG31:        ; bbWeight=0.29, gcrefRegs=2300000 {x20 x21 x25}, byrefReg
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG54
+            bne     G_M10698_IG57
             ldr     x26, [x0, #0x08]
             ; gcrRegs +[x26]
                        ;; size=32 bbWeight=0.29 PerfScore 3.52
@@ -441,7 +440,7 @@ G_M10698_IG32:        ; bbWeight=0.29, gcrefRegs=6300000 {x20 x21 x25 x26}, byre
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
             cmp     x0, x1
-            bne     G_M10698_IG46
+            bne     G_M10698_IG45
                        ;; size=24 bbWeight=0.29 PerfScore 1.76
 G_M10698_IG33:        ; bbWeight=0.27, gcrefRegs=6300000 {x20 x21 x25 x26}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x25, #0x58]
@@ -451,7 +450,7 @@ G_M10698_IG33:        ; bbWeight=0.27, gcrefRegs=6300000 {x20 x21 x25 x26}, byre
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG56
+            bne     G_M10698_IG59
             ldr     x27, [x0, #0x08]
...

-40 (-2.31%) : 379802.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

@@ -15,90 +15,89 @@
 ;  V03 loc1         [V03,T06] (  5,  3.72)     ref  ->  x23         class-hnd exact <Internal.TypeSystem.InstantiatedType>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [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,T40] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V07 tmp3         [V07,T39] (  2,  0.78)     ref  ->   x0         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-;  V08 tmp4         [V08,T26] (  3,  1.55)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V09 tmp5         [V09,T48] (  2,  0   )     ref  ->  x19         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2         [V06,T39] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V07 tmp3         [V07,T38] (  2,  0.78)     ref  ->   x0         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+;  V08 tmp4         [V08,T25] (  3,  1.55)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V09 tmp5         [V09,T47] (  2,  0   )     ref  ->  x19         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
 ;  V10 tmp6         [V10,T04] (  7,  5.52)     ref  ->  x24         class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
-;  V11 tmp7         [V11,T17] (  3,  2   )     ref  ->  x22         "guarded devirt return temp"
+;  V11 tmp7         [V11,T16] (  3,  2   )     ref  ->  x22         "guarded devirt return temp"
 ;* V12 tmp8         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-;  V13 tmp9         [V13,T09] (  8,  2.79)     ref  ->  x25         "guarded devirt return temp"
+;  V13 tmp9         [V13,T08] (  8,  2.79)     ref  ->  x25         "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.83)     ref  ->  x27         "guarded devirt return temp"
+;  V15 tmp11        [V15,T18] (  4,  1.83)     ref  ->  x27         "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,T23] (  8,  1.79)     ref  ->  x23         "guarded devirt return temp"
+;  V17 tmp13        [V17,T22] (  8,  1.79)     ref  ->  x23         "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    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V21 tmp17        [V21    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V22 tmp18        [V22,T28] (  2,  0.93)     int  ->   x0        
-;  V23 tmp19        [V23,T18] (  3,  1.85)     ref  ->  x26         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;  V22 tmp18        [V22,T27] (  2,  0.93)     int  ->   x0        
+;  V23 tmp19        [V23,T17] (  3,  1.85)     ref  ->  x26         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
 ;* V24 tmp20        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V25 tmp21        [V25,T35] (  3,  0.93)     ref  ->  x27         "guarded devirt return temp"
+;  V25 tmp21        [V25,T34] (  3,  0.93)     ref  ->  x27         "guarded devirt return temp"
 ;* V26 tmp22        [V26    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V27 tmp23        [V27,T36] (  3,  0.93)     ref  ->  x26         "guarded devirt return temp"
-;  V28 tmp24        [V28,T10] (  5,  2.78)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V27 tmp23        [V27,T35] (  3,  0.93)     ref  ->  x26         "guarded devirt return temp"
+;  V28 tmp24        [V28,T09] (  5,  2.78)     ref  ->   x0         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,T38] (  3,  0.82)     ref  ->  x27         "guarded devirt return temp"
-;  V31 tmp27        [V31,T15] (  5,  2.45)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V30 tmp26        [V30,T37] (  3,  0.82)     ref  ->  x27         "guarded devirt return temp"
+;  V31 tmp27        [V31,T13] (  5,  2.45)     ref  ->   x0         single-def "guarded devirt arg 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   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V34 tmp30        [V34    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V35 tmp31        [V35    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V36 tmp32        [V36    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V37 tmp33        [V37,T13] (  5,  2.61)     ref  ->   x0         class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-;  V38 tmp34        [V38,T37] (  3,  0.87)     ref  ->  x27         "guarded devirt return temp"
+;  V37 tmp33        [V37,T12] (  5,  2.61)     ref  ->   x0         class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+;  V38 tmp34        [V38,T36] (  3,  0.87)     ref  ->  x27         "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,T21] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V42 tmp38        [V42,T22] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;* V41 tmp37        [V41,T20] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
+;* V42 tmp38        [V42,T21] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
 ;* V43 tmp39        [V43    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
 ;  V44 tmp40        [V44,T05] (  4,  4.03)     ref  ->  x27         class-hnd exact single-def "impAppendStmt" <<unknown class>>
 ;* V45 tmp41        [V45    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V46 tmp42        [V46    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V47 tmp43        [V47    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V48 tmp44        [V48    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V49 tmp45        [V49,T16] (  2,  2.45)     int  ->  x28         "impAppendStmt"
-;  V50 tmp46        [V50,T30] (  4,  1.22)     ref  ->   x0         "guarded devirt return temp"
+;  V49 tmp45        [V49,T14] (  2,  2.45)     int  ->  x28         "impAppendStmt"
+;  V50 tmp46        [V50,T29] (  4,  1.22)     ref  ->   x0         "guarded devirt return temp"
 ;* V51 tmp47        [V51    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-;  V52 tmp48        [V52,T46] (  2,  0.05)   byref  ->  x28         single-def "impAppendStmt"
-;  V53 tmp49        [V53,T47] (  3,  0.03)     int  ->   x0         "guarded devirt return temp"
-;  V54 tmp50        [V54,T45] (  5,  0.08)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V52 tmp48        [V52,T45] (  2,  0.05)   byref  ->  x28         single-def "impAppendStmt"
+;  V53 tmp49        [V53,T46] (  3,  0.03)     int  ->   x0         "guarded devirt return temp"
+;  V54 tmp50        [V54,T44] (  5,  0.08)     ref  ->   x0         single-def "guarded devirt arg temp"
 ;* V55 tmp51        [V55    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
 ;* V56 tmp52        [V56    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V57 tmp53        [V57,T31] (  3,  1.22)     ref  ->   x0         class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+;  V57 tmp53        [V57,T30] (  3,  1.22)     ref  ->   x0         class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
 ;* V58 tmp54        [V58    ] (  0,  0   )  struct (24) zero-ref    "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
 ;  V59 tmp55        [V59    ] (  2,  1.04)     ref  ->  [fp+0x28]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V60 tmp56        [V60,T27] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-;  V61 tmp57        [V61,T14] (  4,  2.52)     ref  ->   x0         class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-;  V62 tmp58        [V62,T34] (  2,  0.59)     int  ->   x0        
-;  V63 tmp59        [V63,T33] (  3,  1.18)     ref  ->  x27         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V60 tmp56        [V60,T26] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+;  V61 tmp57        [V61,T15] (  3,  2.33)     ref  ->   x0         class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+;  V62 tmp58        [V62,T33] (  2,  0.59)     int  ->   x0        
+;  V63 tmp59        [V63,T32] (  3,  1.18)     ref  ->  x27         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
 ;* V64 tmp60        [V64    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V65 tmp61        [V65,T42] (  3,  0.59)     ref  ->   x1         "guarded devirt return temp"
+;  V65 tmp61        [V65,T41] (  3,  0.59)     ref  ->   x1         "guarded devirt return temp"
 ;* V66 tmp62        [V66    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V67 tmp63        [V67,T43] (  3,  0.59)     ref  ->  x27         "guarded devirt return temp"
-;  V68 tmp64        [V68,T24] (  5,  1.77)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V67 tmp63        [V67,T42] (  3,  0.59)     ref  ->  x27         "guarded devirt return temp"
+;  V68 tmp64        [V68,T23] (  5,  1.77)     ref  ->   x0         single-def "guarded devirt arg temp"
 ;* V69 tmp65        [V69    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-;  V70 tmp66        [V70,T44] (  3,  0.52)     ref  ->   x1         "guarded devirt return temp"
-;  V71 tmp67        [V71,T25] (  5,  1.55)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V70 tmp66        [V70,T43] (  3,  0.52)     ref  ->   x1         "guarded devirt return temp"
+;  V71 tmp67        [V71,T24] (  5,  1.55)     ref  ->   x0         single-def "guarded devirt arg temp"
 ;* V72 tmp68        [V72    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
 ;* V73 tmp69        [V73    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V74 tmp70        [V74    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V75 tmp71        [V75    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V76 tmp72        [V76    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V77 tmp73        [V77,T12] (  8,  2.62)     ref  ->  x22         single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
-;  V78 tmp74        [V78,T11] (  8,  2.66)     ref  ->  x23         single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
-;  V79 tmp75        [V79,T29] (  3,  1.40)     int  ->  x20         single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
+;  V77 tmp73        [V77,T11] (  8,  2.62)     ref  ->  x22         single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
+;  V78 tmp74        [V78,T10] (  8,  2.66)     ref  ->  x23         single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
+;  V79 tmp75        [V79,T28] (  3,  1.40)     int  ->  x20         single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
 ;* V80 tmp76        [V80    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V58._typicalMethodDef (fldOffset=0x0)" P-INDEP
 ;* V81 tmp77        [V81    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V58._instantiatedType (fldOffset=0x8)" P-INDEP
 ;* V82 tmp78        [V82    ] (  0,  0   )     int  ->  zero-ref    single-def "field V58._hashcode (fldOffset=0x10)" P-INDEP
 ;  V83 tmp79        [V83    ] (  8,  6.32)  struct (24) [fp+0x10]  do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-;* V84 tmp80        [V84,T32] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V85 tmp81        [V85,T41] (  2,  0.71)     ref  ->   x0         single-def "argument with side effect"
-;  V86 cse0         [V86,T20] (  3,  1.83)     ref  ->   x0         "CSE - moderate"
+;* V84 tmp80        [V84,T31] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;  V85 tmp81        [V85,T40] (  2,  0.71)     ref  ->   x0         single-def "argument with side effect"
+;  V86 cse0         [V86,T19] (  3,  1.83)     ref  ->   x0         "CSE - moderate"
 ;  V87 cse1         [V87,T00] ( 18,  9.67)     ref  ->   x1         multi-def "CSE - aggressive"
 ;  V88 cse2         [V88,T07] (  6,  4.22)    long  ->  x21         "CSE - aggressive"
-;  V89 rat0         [V89,T08] (  6,  3.11)     ref  ->   x2         class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
 ;
 ; Lcl frame size = 32
 
@@ -162,7 +161,7 @@ G_M10698_IG07:        ; bbWeight=0.61, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs
             ; gcrRegs +[x24]
             ldr     x0, [x22]
             cmp     x0, x21
-            bne     G_M10698_IG53
+            bne     G_M10698_IG45
             ldr     x25, [x22, #0x10]
             ; gcrRegs +[x25]
                        ;; size=20 bbWeight=0.61 PerfScore 6.42
@@ -178,7 +177,7 @@ G_M10698_IG10:        ; bbWeight=0.46, gcrefRegs=3C80000 {x19 x22 x23 x24 x25},
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
             cmp     x0, x1
-            bne     G_M10698_IG55
+            bne     G_M10698_IG47
             ldr     x0, [x24, #0x58]
             ; gcrRegs +[x0]
             ldr     x1, [x0]
@@ -186,7 +185,7 @@ G_M10698_IG10:        ; bbWeight=0.46, gcrefRegs=3C80000 {x19 x22 x23 x24 x25},
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG54
+            bne     G_M10698_IG46
             ldr     x26, [x0, #0x08]
             ; gcrRegs +[x26]
                        ;; size=56 bbWeight=0.46 PerfScore 8.34
@@ -207,7 +206,7 @@ G_M10698_IG12:        ; bbWeight=0.41, gcrefRegs=7C80000 {x19 x22 x23 x24 x25 x2
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG56
+            bne     G_M10698_IG48
             ldr     x27, [x0, #0x08]
             ; gcrRegs +[x27]
                        ;; size=32 bbWeight=0.41 PerfScore 4.89
@@ -274,7 +273,7 @@ G_M10698_IG18:        ; bbWeight=0.43, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG57
+            bne     G_M10698_IG49
             ldr     x27, [x0, #0x08]
             ; gcrRegs +[x27]
                        ;; size=36 bbWeight=0.43 PerfScore 6.51
@@ -342,10 +341,10 @@ G_M10698_IG23:        ; bbWeight=0.61, gcrefRegs=8C00000 {x22 x23 x27}, byrefReg
             ldr     w28, [x23, #0x68]
             ldr     x0, [x22]
             cmp     x0, x21
-            bne     G_M10698_IG60
+            bne     G_M10698_IG51
             ldr     x0, [x22, #0x20]
             ; gcrRegs +[x0]
-            cbz     x0, G_M10698_IG58
+            cbz     x0, G_M10698_IG40
                        ;; size=24 bbWeight=0.61 PerfScore 7.03
 G_M10698_IG24:        ; bbWeight=0.61, gcrefRegs=8C00001 {x0 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
             movz    x1, #0xD1FFAB1E      // code for Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int
@@ -394,7 +393,7 @@ G_M10698_IG27:        ; bbWeight=0.39, gcVars=0000000000000000 {}, gcrefRegs=580
             beq     G_M10698_IG38
             ldr     x0, [x22]
             cmp     x0, x21
-            bne     G_M10698_IG48
+            bne     G_M10698_IG55
             ldr     x23, [x22, #0x10]
             ; gcrRegs +[x23]
                        ;; size=40 bbWeight=0.39 PerfScore 5.24
@@ -408,7 +407,7 @@ G_M10698_IG29:        ; bbWeight=0.29, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
             cmp     x0, x1
-            bne     G_M10698_IG50
+            bne     G_M10698_IG57
             ldr     x0, [x20, #0x58]
             ; gcrRegs +[x0]
             ldr     x1, [x0]
@@ -416,7 +415,7 @@ G_M10698_IG29:        ; bbWeight=0.29, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG49
+            bne     G_M10698_IG56
                        ;; size=52 bbWeight=0.29 PerfScore 4.42
 G_M10698_IG30:        ; bbWeight=0.29, gcrefRegs=D00001 {x0 x20 x22 x23}, byrefRegs=0000 {}, byref
             ldr     x27, [x0, #0x08]
@@ -429,7 +428,7 @@ G_M10698_IG31:        ; bbWeight=0.29, gcrefRegs=8D00000 {x20 x22 x23 x27}, byre
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
             cmp     x0, x1
-            bne     G_M10698_IG52
+            bne     G_M10698_IG44
                        ;; size=24 bbWeight=0.29 PerfScore 1.77
 G_M10698_IG32:        ; bbWeight=0.26, gcrefRegs=8D00000 {x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x23, #0x58]
@@ -439,7 +438,7 @@ G_M10698_IG32:        ; bbWeight=0.26, gcrefRegs=8D00000 {x20 x22 x23 x27}, byre
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG51
+            bne     G_M10698_IG58
             ldr     x1, [x0, #0x08]
             ; gcrRegs +[x1]
                        ;; size=32 bbWeight=0.26 PerfScore 3.11
@@ -501,20 +500,6 @@ G_M10698_IG38:        ; bbWeight=0.39, gcVars=0000000000000000 {}, gcrefRegs=180
             ldr     x1, [x1, #0x18]
             blr     x1
             ldrsb   wzr, [x0]
-            mov     x2, x0
-            ; gcrRegs +[x2]
-            cbz     x2, G_M10698_IG45
-                       ;; size=32 bbWeight=0.39 PerfScore 5.83
-G_M10698_IG39:        ; bbWeight=0.19, gcrefRegs=180005 {x0 x2 x19 x20}, byrefRegs=0000 {}, byref, isz
-            ldr     x1, [x2]
-            movz    x2, #0xD1FFAB1E
-            ; gcrRegs -[x2]
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #1 LSL #32
-            cmp     x1, x2
-            beq     G_M10698_IG44
...

libraries_tests.run.osx.arm64.Release.mch

-4 (-0.22%) : 630301.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)

@@ -10,7 +10,7 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T02] ( 15,  3.31)     ref  ->  [fp+0x30]  this class-hnd EH-live single-def <System.Threading.Tasks.Task>
-;  V01 arg1         [V01,T01] ( 10,  4.83)     ref  ->  x19         class-hnd single-def <System.Object>
+;  V01 arg1         [V01,T01] ( 10,  4.75)     ref  ->  x19         class-hnd single-def <System.Object>
 ;  V02 loc0         [V02,T09] (  6,  1   )     ref  ->  [fp+0x28]  must-init class-hnd exact EH-live single-def <System.Threading.Tasks.TplEventSource>
 ;  V03 loc1         [V03,T06] (  5,  2   )   ubyte  ->  [fp+0x5C]  do-not-enreg[Z] EH-live
 ;  V04 loc2         [V04,T05] ( 11,  2   )   ubyte  ->  [fp+0x58]  do-not-enreg[Z] EH-live
@@ -93,11 +93,11 @@ G_M51094_IG02:        ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=800
             ldrb    w1, [x0, #0x9D]
             str     w1, [fp, #0x5C]    // [V03 loc1]
             ldr     w1, [fp, #0x5C]    // [V03 loc1]
-            cbnz    w1, G_M51094_IG43
+            cbnz    w1, G_M51094_IG47
             ldr     x1, [fp, #0x30]    // [V00 this]
             ; gcrRegs +[x1]
             ldapur  w2, [x1, #0x34]
-            tbnz    w2, #6, G_M51094_IG44
+            tbnz    w2, #6, G_M51094_IG48
                        ;; size=76 bbWeight=1 PerfScore 25.00
 G_M51094_IG03:        ; bbWeight=1, gcVars=0000000000000204 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0-x1]
@@ -109,7 +109,7 @@ G_M51094_IG04:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             str     w1, [fp, #0x58]    // [V04 loc2]
             mov     x0, x19
             ; gcrRegs +[x0]
-            cbz     x0, G_M51094_IG08
+            cbz     x0, G_M51094_IG07
                        ;; size=16 bbWeight=1 PerfScore 3.00
 G_M51094_IG05:        ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
             ldr     x1, [x0]
@@ -118,28 +118,16 @@ G_M51094_IG05:        ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #2 LSL #32
             cmp     x1, x0
-            beq     G_M51094_IG07
+            bne     G_M51094_IG17
                        ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M51094_IG06:        ; bbWeight=0.21, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            mov     x1, x19
-            ; gcrRegs +[x1]
-            movz    x0, #0xD1FFAB1E
-            movk    x0, #0xD1FFAB1E LSL #16
-            movk    x0, #2 LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
-            ; gcrRegs -[x1] +[x0]
-            ; gcr arg pop 0
-            b       G_M51094_IG08
-                       ;; size=24 bbWeight=0.21 PerfScore 0.84
-G_M51094_IG07:        ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
+G_M51094_IG06:        ; bbWeight=0.38, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x0, xzr
             ; gcrRegs +[x0]
-                       ;; size=4 bbWeight=0.29 PerfScore 0.14
-G_M51094_IG08:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
-            cbz     x0, G_M51094_IG13
+                       ;; size=4 bbWeight=0.38 PerfScore 0.19
+G_M51094_IG07:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+            cbz     x0, G_M51094_IG11
                        ;; size=4 bbWeight=1 PerfScore 1.00
-G_M51094_IG09:        ; bbWeight=0.69, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M51094_IG08:        ; bbWeight=0.69, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x19]
             ; GC ptr vars -{V00 V02}
             ldr     w1, [fp, #0x58]    // [V04 loc2]
@@ -151,7 +139,7 @@ G_M51094_IG09:        ; bbWeight=0.69, gcVars=0000000000000000 {}, gcrefRegs=000
             ; gcrRegs -[x0]
             ; gcr arg pop 0
                        ;; size=24 bbWeight=0.69 PerfScore 5.16
-G_M51094_IG10:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51094_IG09:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movz    x0, #0xD1FFAB1E      // code for System.Threading.Tasks.Task:LogFinishCompletionNotification()
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #2 LSL #32
@@ -159,38 +147,30 @@ G_M51094_IG10:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             blr     x0
             ; gcr arg pop 0
                        ;; size=20 bbWeight=1 PerfScore 5.50
-G_M51094_IG11:        ; bbWeight=1, epilog, nogc, extend
+G_M51094_IG10:        ; bbWeight=1, epilog, nogc, extend
             ldr     x23, [sp, #0x88]
             ldp     x21, x22, [sp, #0x78]
             ldp     x19, x20, [sp, #0x68]
             ldp     fp, lr, [sp], #0x90
             ret     lr
                        ;; size=20 bbWeight=1 PerfScore 6.00
-G_M51094_IG12:        ; bbWeight=0.31, gcVars=0000000000000004 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M51094_IG11:        ; bbWeight=0.31, gcVars=0000000000000204 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; gcrRegs +[x19]
+            ; GC ptr vars +{V00 V02 V09}
+            mov     x0, x19
             ; gcrRegs +[x0]
-            ; GC ptr vars +{V00 V02}
+            cbz     x0, G_M51094_IG13
+                       ;; size=8 bbWeight=0.31 PerfScore 0.47
+G_M51094_IG12:        ; bbWeight=0.16, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
             ldr     x1, [x0]
             movz    x2, #0xD1FFAB1E
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #2 LSL #32
             cmp     x1, x2
-            bne     G_M51094_IG46
-            ldr     x1, [fp, #0x30]    // [V00 this]
-            ; gcrRegs +[x1]
-            ldr     w2, [fp, #0x58]    // [V04 loc2]
-            movz    x3, #0xD1FFAB1E      // code for System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation:Run(System.Threading.Tasks.Task,ubyte):this
-            movk    x3, #0xD1FFAB1E LSL #16
-            movk    x3, #2 LSL #32
-            ldr     x3, [x3]
-            ; GC ptr vars -{V00 V02}
-            blr     x3
-            ; gcrRegs -[x0-x1]
-            ; gcr arg pop 0
-            b       G_M51094_IG10
-                       ;; size=56 bbWeight=0.31 PerfScore 5.16
-G_M51094_IG13:        ; bbWeight=0.31, gcVars=0000000000000204 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs +[x19]
-            ; GC ptr vars +{V00 V02 V09}
+            beq     G_M51094_IG18
+                       ;; size=24 bbWeight=0.16 PerfScore 0.94
+G_M51094_IG13:        ; bbWeight=0.31, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x0]
             mov     x0, x19
             ; gcrRegs +[x0]
             cbz     x0, G_M51094_IG15
@@ -201,29 +181,111 @@ G_M51094_IG14:        ; bbWeight=0.16, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #2 LSL #32
             cmp     x1, x2
-            beq     G_M51094_IG45
+            bne     G_M51094_IG49
                        ;; size=24 bbWeight=0.16 PerfScore 0.94
-G_M51094_IG15:        ; bbWeight=0.31, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0]
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            cbz     x0, G_M51094_IG17
-                       ;; size=8 bbWeight=0.31 PerfScore 0.47
-G_M51094_IG16:        ; bbWeight=0.16, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG15:        ; bbWeight=0.31, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+            cbz     x0, G_M51094_IG50
+                       ;; size=4 bbWeight=0.31 PerfScore 0.31
+G_M51094_IG16:        ; bbWeight=0.31, gcVars=0000000000000004 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; gcrRegs -[x19]
+            ; GC ptr vars -{V02 V09}
             ldr     x1, [x0]
             movz    x2, #0xD1FFAB1E
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #2 LSL #32
             cmp     x1, x2
-            bne     G_M51094_IG48
-                       ;; size=24 bbWeight=0.16 PerfScore 0.94
-G_M51094_IG17:        ; bbWeight=0.31, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
-            cbz     x0, G_M51094_IG49
-            b       G_M51094_IG12
-                       ;; size=8 bbWeight=0.31 PerfScore 0.62
-G_M51094_IG18:        ; bbWeight=0, gcVars=0000000100001204 {V00 V02 V05 V11}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
-            ; gcrRegs -[x0 x19]
-            ; GC ptr vars -{V09} +{V05 V11 V32}
+            bne     G_M51094_IG19
+            ldr     x1, [fp, #0x30]    // [V00 this]
+            ; gcrRegs +[x1]
+            ldr     w2, [fp, #0x58]    // [V04 loc2]
+            movz    x3, #0xD1FFAB1E      // code for System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation:Run(System.Threading.Tasks.Task,ubyte):this
+            movk    x3, #0xD1FFAB1E LSL #16
+            movk    x3, #2 LSL #32
+            ldr     x3, [x3]
+            ; GC ptr vars -{V00}
+            blr     x3
+            ; gcrRegs -[x0-x1]
+            ; gcr arg pop 0
+            b       G_M51094_IG09
+                       ;; size=56 bbWeight=0.31 PerfScore 5.16
+G_M51094_IG17:        ; bbWeight=0.12, gcVars=0000000000000204 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs +[x19]
+            ; GC ptr vars +{V00 V02 V09}
+            mov     x1, x19
+            ; gcrRegs +[x1]
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #2 LSL #32
+            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            ; gcrRegs -[x1] +[x0]
+            ; gcr arg pop 0
+            b       G_M51094_IG07
+                       ;; size=24 bbWeight=0.12 PerfScore 0.48
+G_M51094_IG18:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs -[x19]
+            ; GC ptr vars -{V00 V02 V09}
+            ldr     w1, [fp, #0x58]    // [V04 loc2]
+            movz    x2, #0xD1FFAB1E      // code for <unknown method>
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #2 LSL #32
+            ldr     x2, [x2]
+            blr     x2
+            ; gcrRegs -[x0]
+            ; gcr arg pop 0
+            b       G_M51094_IG09
+                       ;; size=28 bbWeight=0 PerfScore 0.00
+G_M51094_IG19:        ; bbWeight=0, gcVars=0000000000000004 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs +[x0]
+            ; GC ptr vars +{V00 V02}
+            ldr     x1, [fp, #0x30]    // [V00 this]
+            ; gcrRegs +[x1]
+            ldr     w2, [fp, #0x58]    // [V04 loc2]
+            ldr     x3, [x0]
+            ldr     x3, [x3, #0x48]
+            ldr     x3, [x3, #0x20]
+            ; GC ptr vars -{V00 V02}
+            blr     x3
+            ; gcrRegs -[x0-x1]
+            ; gcr arg pop 0
+            b       G_M51094_IG09
+                       ;; size=28 bbWeight=0 PerfScore 0.00
+G_M51094_IG20:        ; bbWeight=0, gcVars=0000000000000004 {V00}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs +[x1]
+            ; GC ptr vars +{V00 V02}
+            ldr     x0, [fp, #0x30]    // [V00 this]
+            ; gcrRegs +[x0]
+            ldr     w2, [fp, #0x58]    // [V04 loc2]
+            movz    x3, #0xD1FFAB1E      // code for System.Threading.Tasks.Task:RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction,ubyte):this
+            movk    x3, #0xD1FFAB1E LSL #16
+            movk    x3, #2 LSL #32
+            ldr     x3, [x3]
+            ; GC ptr vars -{V00 V02}
+            blr     x3
+            ; gcrRegs -[x0-x1]
+            ; gcr arg pop 0
+            b       G_M51094_IG09
+                       ;; size=32 bbWeight=0 PerfScore 0.00
+G_M51094_IG21:        ; bbWeight=0, gcVars=0000000000000204 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs +[x19]
+            ; GC ptr vars +{V00 V02 V09}
+            mov     x1, x19
+            ; gcrRegs +[x1]
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #2 LSL #32
+            bl      CORINFO_HELP_CHKCASTCLASS
+            ; gcrRegs -[x1 x19] +[x0]
+            ; gcr arg pop 0
+            str     x0, [fp, #0x20]    // [V05 loc3]
+            ; GC ptr vars +{V05}
+            ldr     x0, [fp, #0x20]    // [V05 loc3]
+            str     x0, [fp, #0x18]    // [V11 loc9]
+            ; GC ptr vars +{V11}
+            str     wzr, [fp, #0x50]   // [V12 loc10]
+                       ;; size=36 bbWeight=0 PerfScore 0.00
...

+0 (0.00%) : 160865.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:HasYieldOperations(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)

@@ -22,7 +22,7 @@
 ;  V10 tmp4         [V10,T31] (  2,   0.14)     ref  ->  x19         class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
 ;  V11 tmp5         [V11,T29] (  6,   0.41)     ref  ->  x21         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
 ;  V12 tmp6         [V12,T33] (  3,   0.10)     int  ->  x22         single-def "Inline stloc first use temp"
-;  V13 tmp7         [V13,T04] (  7,   7.10)     ref  ->  x19         class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.GreenNode>
+;  V13 tmp7         [V13,T04] (  7,   7.02)     ref  ->  x19         class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.GreenNode>
 ;* V14 tmp8         [V14    ] (  0,   0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
 ;  V15 tmp9         [V15,T10] (  4,   3.32)     int  ->   x3         "Inlining Arg"
 ;  V16 tmp10        [V16,T21] (  2,   1.66)     ref  ->   x4         class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
@@ -135,18 +135,18 @@ G_M14867_IG06:        ; bbWeight=867.80, gcrefRegs=580000 {x19 x20 x22}, byrefRe
             add     w23, w23, #1
             ldrb    w25, [x19, #0x0F]
             cmp     w25, #255
-            beq     G_M14867_IG50
+            beq     G_M14867_IG52
                        ;; size=16 bbWeight=867.80 PerfScore 4338.98
 G_M14867_IG07:        ; bbWeight=1.21, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
             cmp     w23, w25
-            beq     G_M14867_IG38
+            beq     G_M14867_IG37
                        ;; size=8 bbWeight=1.21 PerfScore 1.81
 G_M14867_IG08:        ; bbWeight=0.92, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             cmp     x21, x0
-            bne     G_M14867_IG30
+            bne     G_M14867_IG28
                        ;; size=20 bbWeight=0.92 PerfScore 2.75
 G_M14867_IG09:        ; bbWeight=0.44, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
             mov     x0, x19
@@ -160,7 +160,7 @@ G_M14867_IG09:        ; bbWeight=0.44, gcrefRegs=580000 {x19 x20 x22}, byrefRegs
             ; gcr arg pop 0
             mov     x25, x0
             ; gcrRegs +[x25]
-            b       G_M14867_IG31
+            b       G_M14867_IG29
                        ;; size=36 bbWeight=0.44 PerfScore 3.52
 G_M14867_IG10:        ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0 x20 x22 x25]
@@ -207,7 +207,7 @@ G_M14867_IG10:        ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             ldr     w1, [x1, #0x10]
             ; gcrRegs -[x1]
             cmp     w1, #0
-            ble     G_M14867_IG45
+            ble     G_M14867_IG47
                        ;; size=120 bbWeight=0.03 PerfScore 1.44
 G_M14867_IG11:        ; bbWeight=0.42, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x21]
@@ -219,22 +219,22 @@ G_M14867_IG11:        ; bbWeight=0.42, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
             mov     x4, x0
             ; gcrRegs +[x4]
             cmp     w3, w1
-            bge     G_M14867_IG53
+            bge     G_M14867_IG49
             ldr     x4, [x4, #0x08]
             ldr     w5, [x4, #0x08]
             cmp     w3, w5
-            bhs     G_M14867_IG49
+            bhs     G_M14867_IG51
             add     x4, x4, #16
             ; gcrRegs -[x4]
             ; byrRegs +[x4]
             ldr     x19, [x4, w3, UXTW #3]
             ; gcrRegs +[x19]
             ldrsb   wzr, [x0]
-            tbnz    w2, #31, G_M14867_IG54
+            tbnz    w2, #31, G_M14867_IG50
             cmp     w2, w1
             cset    x1, lt
             tst     w1, #255
-            beq     G_M14867_IG54
+            beq     G_M14867_IG50
             ldr     w1, [x0, #0x10]
             sub     w1, w1, #1
             movz    x2, #0xD1FFAB1E      // code for System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:set_Count(int):this
@@ -245,7 +245,7 @@ G_M14867_IG11:        ; bbWeight=0.42, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
             ; gcrRegs -[x0]
             ; byrRegs -[x4]
             ; gcr arg pop 0
-            cbz     x19, G_M14867_IG38
+            cbz     x19, G_M14867_IG37
                        ;; size=108 bbWeight=0.42 PerfScore 15.16
 G_M14867_IG12:        ; bbWeight=1.66, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             ldrh    w1, [x19, #0x0C]
@@ -254,12 +254,12 @@ G_M14867_IG12:        ; bbWeight=1.66, gcrefRegs=180000 {x19 x20}, byrefRegs=000
             mov     w2, #0xD1FFAB1E
             cmp     w0, #2
             ccmp    w1, w2, z, hi
-            beq     G_M14867_IG38
+            beq     G_M14867_IG37
                        ;; size=28 bbWeight=1.66 PerfScore 10.80
 G_M14867_IG13:        ; bbWeight=0.42, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             mov     x2, x19
             ; gcrRegs +[x2]
-            cbz     x2, G_M14867_IG17
+            cbz     x2, G_M14867_IG16
                        ;; size=8 bbWeight=0.42 PerfScore 0.62
 G_M14867_IG14:        ; bbWeight=0.21, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
             ldr     x1, [x2]
@@ -267,10 +267,35 @@ G_M14867_IG14:        ; bbWeight=0.21, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             cmp     x1, x0
-            beq     G_M14867_IG16
+            bne     G_M14867_IG18
                        ;; size=24 bbWeight=0.21 PerfScore 1.25
-G_M14867_IG15:        ; bbWeight=0.10, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M14867_IG15:        ; bbWeight=0.15, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x2]
+            mov     x2, xzr
+            ; gcrRegs +[x2]
+                       ;; size=4 bbWeight=0.15 PerfScore 0.07
+G_M14867_IG16:        ; bbWeight=0.42, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
+            cbnz    x2, G_M14867_IG37
+                       ;; size=4 bbWeight=0.42 PerfScore 0.42
+G_M14867_IG17:        ; bbWeight=0.27, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x2]
+            mov     x0, x19
+            ; gcrRegs +[x0]
+            ldr     x21, [x0]
+            movz    x0, #0xD1FFAB1E
+            ; gcrRegs -[x0]
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #1 LSL #32
+            cmp     x21, x0
+            beq     G_M14867_IG45
+            mov     x22, xzr
+            ; gcrRegs +[x22]
+            movn    w23, #0
+            movn    w24, #0
+            b       G_M14867_IG22
+                       ;; size=44 bbWeight=0.27 PerfScore 2.44
+G_M14867_IG18:        ; bbWeight=0.06, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x22]
             mov     x1, x19
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
@@ -281,35 +306,10 @@ G_M14867_IG15:        ; bbWeight=0.10, gcrefRegs=180000 {x19 x20}, byrefRegs=000
             ; gcr arg pop 0
             mov     x2, x0
             ; gcrRegs +[x2]
-            b       G_M14867_IG17
-                       ;; size=28 bbWeight=0.10 PerfScore 0.45
-G_M14867_IG16:        ; bbWeight=0.11, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0 x2]
-            mov     x2, xzr
-            ; gcrRegs +[x2]
-                       ;; size=4 bbWeight=0.11 PerfScore 0.05
-G_M14867_IG17:        ; bbWeight=0.42, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
-            cbnz    x2, G_M14867_IG38
-                       ;; size=4 bbWeight=0.42 PerfScore 0.42
-G_M14867_IG18:        ; bbWeight=0.27, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x2]
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            ldr     x21, [x0]
-            movz    x0, #0xD1FFAB1E
-            ; gcrRegs -[x0]
-            movk    x0, #0xD1FFAB1E LSL #16
-            movk    x0, #1 LSL #32
-            cmp     x21, x0
-            beq     G_M14867_IG47
-            mov     x22, xzr
-            ; gcrRegs +[x22]
-            movn    w23, #0
-            movn    w24, #0
-            b       G_M14867_IG22
-                       ;; size=44 bbWeight=0.27 PerfScore 2.44
+            b       G_M14867_IG16
+                       ;; size=28 bbWeight=0.06 PerfScore 0.28
 G_M14867_IG19:        ; bbWeight=0.72, gcrefRegs=2580000 {x19 x20 x22 x25}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs +[x25]
+            ; gcrRegs -[x0 x2] +[x22 x25]
             ldr     x1, [x25]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
@@ -335,7 +335,7 @@ G_M14867_IG20:        ; bbWeight=0.38, gcrefRegs=2580000 {x19 x20 x22 x25}, byre
             ldr     w1, [x1, #0x08]
             ; gcrRegs -[x1]
             cmp     w1, w27
-            blt     G_M14867_IG28
+            blt     G_M14867_IG31
                        ;; size=28 bbWeight=0.38 PerfScore 5.34
 G_M14867_IG21:        ; bbWeight=0.38, gcrefRegs=6580000 {x19 x20 x22 x25 x26}, byrefRegs=0000 {}, byref
             ldrsw   x1, [x26, #0x10]
@@ -356,7 +356,7 @@ G_M14867_IG23:        ; bbWeight=0.04, gcrefRegs=580000 {x19 x20 x22}, byrefRegs
             add     w24, w24, #1
             ldrb    w25, [x22, #0x0F]
             cmp     w25, #255
-            beq     G_M14867_IG51
+            beq     G_M14867_IG53
                        ;; size=16 bbWeight=0.04 PerfScore 0.21
 G_M14867_IG24:        ; bbWeight=0.04, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
             cmp     w24, w25
@@ -368,14 +368,14 @@ G_M14867_IG25:        ; bbWeight=0.03, gcrefRegs=580000 {x19 x20 x22}, byrefRegs
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
             cmp     x0, x1
-            bne     G_M14867_IG36
+            bne     G_M14867_IG39
                        ;; size=24 bbWeight=0.03 PerfScore 0.20
 G_M14867_IG26:        ; bbWeight=0.03, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x22, #0x10]
             ; gcrRegs +[x0]
             ldr     w1, [x0, #0x08]
             cmp     w24, w1
-            bhs     G_M14867_IG49
+            bhs     G_M14867_IG51
             ubfiz   x1, x24, #3, #32
             add     x1, x1, #16
             ldr     x25, [x0, x1]
@@ -385,7 +385,26 @@ G_M14867_IG27:        ; bbWeight=0.03, gcrefRegs=2580000 {x19 x20 x22 x25}, byre
             ; gcrRegs -[x0]
             b       G_M14867_IG19
                        ;; size=4 bbWeight=0.03 PerfScore 0.03
-G_M14867_IG28:        ; bbWeight=0.00, gcrefRegs=6580000 {x19 x20 x22 x25 x26}, byrefRegs=0000 {}, byref, isz
+G_M14867_IG28:        ; bbWeight=0.48, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x25]
+            mov     x0, x19
+            ; gcrRegs +[x0]
+            mov     w1, w23
+            ldr     x2, [x21, #0x50]
+            ldr     x2, [x2, #0x20]
+            blr     x2
+            ; gcr arg pop 0
+            mov     x25, x0
+            ; gcrRegs +[x25]
+                       ;; size=24 bbWeight=0.48 PerfScore 4.05
+G_M14867_IG29:        ; bbWeight=0.92, gcrefRegs=2580000 {x19 x20 x22 x25}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x0]
+            cbz     x25, G_M14867_IG06
+                       ;; size=4 bbWeight=0.92 PerfScore 0.92
+G_M14867_IG30:        ; bbWeight=0.67, gcrefRegs=2580000 {x19 x20 x22 x25}, byrefRegs=0000 {}, byref
+            b       G_M14867_IG33
+                       ;; size=4 bbWeight=0.67 PerfScore 0.67
+G_M14867_IG31:        ; bbWeight=0.00, gcrefRegs=6580000 {x19 x20 x22 x25 x26}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x26]
             ldr     x1, [x26, #0x08]
             ; gcrRegs +[x1]
@@ -393,9 +412,9 @@ G_M14867_IG28:        ; bbWeight=0.00, gcrefRegs=6580000 {x19 x20 x22 x25 x26},
             ; gcrRegs -[x1]
             lsl     w2, w1, #1
             cmp     w2, w27
-            blt     G_M14867_IG33
+            blt     G_M14867_IG35
                        ;; size=20 bbWeight=0.00 PerfScore 0.03
-G_M14867_IG29:        ; bbWeight=0.00, gcrefRegs=6580000 {x19 x20 x22 x25 x26}, byrefRegs=0000 {}, byref
+G_M14867_IG32:        ; bbWeight=0.00, gcrefRegs=6580000 {x19 x20 x22 x25 x26}, byrefRegs=0000 {}, byref
             add     x1, x26, #8
...

+0 (0.00%) : 332101.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)

@@ -10,7 +10,7 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T02] ( 15,  3.54)     ref  ->  [fp+0x30]  this class-hnd EH-live single-def <System.Threading.Tasks.Task>
-;  V01 arg1         [V01,T01] ( 10,  5.36)     ref  ->  x19         class-hnd single-def <System.Object>
+;  V01 arg1         [V01,T01] ( 10,  5.26)     ref  ->  x19         class-hnd single-def <System.Object>
 ;  V02 loc0         [V02,T10] (  6,  1   )     ref  ->  [fp+0x28]  must-init class-hnd exact EH-live single-def <System.Threading.Tasks.TplEventSource>
 ;  V03 loc1         [V03,T07] (  5,  2   )   ubyte  ->  [fp+0x5C]  do-not-enreg[Z] EH-live
 ;  V04 loc2         [V04,T06] ( 11,  2   )   ubyte  ->  [fp+0x58]  do-not-enreg[Z] EH-live
@@ -109,7 +109,7 @@ G_M51094_IG04:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             str     w1, [fp, #0x58]    // [V04 loc2]
             mov     x0, x19
             ; gcrRegs +[x0]
-            cbz     x0, G_M51094_IG08
+            cbz     x0, G_M51094_IG07
                        ;; size=16 bbWeight=1 PerfScore 3.00
 G_M51094_IG05:        ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
             ldr     x1, [x0]
@@ -118,34 +118,22 @@ G_M51094_IG05:        ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             cmp     x1, x0
-            beq     G_M51094_IG07
+            bne     G_M51094_IG18
                        ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M51094_IG06:        ; bbWeight=0.24, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            mov     x1, x19
-            ; gcrRegs +[x1]
-            movz    x0, #0xD1FFAB1E
-            movk    x0, #0xD1FFAB1E LSL #16
-            movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
-            ; gcrRegs -[x1] +[x0]
-            ; gcr arg pop 0
-            b       G_M51094_IG08
-                       ;; size=24 bbWeight=0.24 PerfScore 0.98
-G_M51094_IG07:        ; bbWeight=0.26, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
+G_M51094_IG06:        ; bbWeight=0.36, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x0, xzr
             ; gcrRegs +[x0]
-                       ;; size=4 bbWeight=0.26 PerfScore 0.13
-G_M51094_IG08:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
-            cbnz    x0, G_M51094_IG16
+                       ;; size=4 bbWeight=0.36 PerfScore 0.18
+G_M51094_IG07:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+            cbnz    x0, G_M51094_IG15
                        ;; size=4 bbWeight=1 PerfScore 1.00
-G_M51094_IG09:        ; bbWeight=0.54, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG08:        ; bbWeight=0.54, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
             mov     x0, x19
             ; gcrRegs +[x0]
-            cbz     x0, G_M51094_IG11
+            cbz     x0, G_M51094_IG10
                        ;; size=8 bbWeight=0.54 PerfScore 0.81
-G_M51094_IG10:        ; bbWeight=0.27, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG09:        ; bbWeight=0.27, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
             ldr     x1, [x0]
             movz    x2, #0xD1FFAB1E
             movk    x2, #0xD1FFAB1E LSL #16
@@ -153,21 +141,21 @@ G_M51094_IG10:        ; bbWeight=0.27, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
             cmp     x1, x2
             beq     G_M51094_IG50
                        ;; size=24 bbWeight=0.27 PerfScore 1.62
-G_M51094_IG11:        ; bbWeight=0.54, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG10:        ; bbWeight=0.54, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
             mov     x0, x19
             ; gcrRegs +[x0]
-            cbz     x0, G_M51094_IG13
+            cbz     x0, G_M51094_IG12
                        ;; size=8 bbWeight=0.54 PerfScore 0.81
-G_M51094_IG12:        ; bbWeight=0.27, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG11:        ; bbWeight=0.27, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
             ldr     x1, [x0]
             movz    x2, #0xD1FFAB1E
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             cmp     x1, x2
-            bne     G_M51094_IG15
+            bne     G_M51094_IG14
                        ;; size=24 bbWeight=0.27 PerfScore 1.62
-G_M51094_IG13:        ; bbWeight=0.54, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG12:        ; bbWeight=0.54, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
             cbz     x0, G_M51094_IG49
             ldr     x1, [x0]
             movz    x2, #0xD1FFAB1E
@@ -176,7 +164,7 @@ G_M51094_IG13:        ; bbWeight=0.54, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
             cmp     x1, x2
             bne     G_M51094_IG19
                        ;; size=28 bbWeight=0.54 PerfScore 3.77
-G_M51094_IG14:        ; bbWeight=0.46, gcVars=0000000000000004 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M51094_IG13:        ; bbWeight=0.46, gcVars=0000000000000004 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x19]
             ; GC ptr vars -{V02}
             ldr     x1, [fp, #0x30]    // [V00 this]
@@ -190,9 +178,9 @@ G_M51094_IG14:        ; bbWeight=0.46, gcVars=0000000000000004 {V00}, gcrefRegs=
             blr     x3
             ; gcrRegs -[x0-x1]
             ; gcr arg pop 0
-            b       G_M51094_IG17
+            b       G_M51094_IG16
                        ;; size=32 bbWeight=0.46 PerfScore 4.81
-G_M51094_IG15:        ; bbWeight=0.04, gcVars=0000000000000404 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M51094_IG14:        ; bbWeight=0.04, gcVars=0000000000000404 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs +[x19]
             ; GC ptr vars +{V00 V02 V10}
             mov     x1, x19
@@ -203,9 +191,9 @@ G_M51094_IG15:        ; bbWeight=0.04, gcVars=0000000000000404 {V00 V02}, gcrefR
             bl      CORINFO_HELP_ISINSTANCEOFCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-            b       G_M51094_IG13
+            b       G_M51094_IG12
                        ;; size=24 bbWeight=0.04 PerfScore 0.16
-G_M51094_IG16:        ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M51094_IG15:        ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x19]
             ; GC ptr vars -{V00 V02 V10}
             ldr     w1, [fp, #0x58]    // [V04 loc2]
@@ -217,7 +205,7 @@ G_M51094_IG16:        ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=000
             ; gcrRegs -[x0]
             ; gcr arg pop 0
                        ;; size=24 bbWeight=0.46 PerfScore 3.46
-G_M51094_IG17:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51094_IG16:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movz    x0, #0xD1FFAB1E      // code for System.Threading.Tasks.Task:LogFinishCompletionNotification()
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
@@ -225,27 +213,40 @@ G_M51094_IG17:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             blr     x0
             ; gcr arg pop 0
                        ;; size=20 bbWeight=1 PerfScore 5.50
-G_M51094_IG18:        ; bbWeight=1, epilog, nogc, extend
+G_M51094_IG17:        ; bbWeight=1, epilog, nogc, extend
             ldr     x23, [sp, #0x88]
             ldp     x21, x22, [sp, #0x78]
             ldp     x19, x20, [sp, #0x68]
             ldp     fp, lr, [sp], #0x90
             ret     lr
                        ;; size=20 bbWeight=1 PerfScore 6.00
+G_M51094_IG18:        ; bbWeight=0.14, gcVars=0000000000000404 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs +[x19]
+            ; GC ptr vars +{V00 V02 V10}
+            mov     x1, x19
+            ; gcrRegs +[x1]
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #1 LSL #32
+            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            ; gcrRegs -[x1] +[x0]
+            ; gcr arg pop 0
+            b       G_M51094_IG07
+                       ;; size=24 bbWeight=0.14 PerfScore 0.56
 G_M51094_IG19:        ; bbWeight=0.08, gcVars=0000000000000004 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
-            ; gcrRegs +[x0]
-            ; GC ptr vars +{V00 V02}
+            ; gcrRegs -[x19]
+            ; GC ptr vars -{V02 V10}
             ldr     x1, [fp, #0x30]    // [V00 this]
             ; gcrRegs +[x1]
             ldr     w2, [fp, #0x58]    // [V04 loc2]
             ldr     x3, [x0]
             ldr     x3, [x3, #0x48]
             ldr     x3, [x3, #0x20]
-            ; GC ptr vars -{V00 V02}
+            ; GC ptr vars -{V00}
             blr     x3
             ; gcrRegs -[x0-x1]
             ; gcr arg pop 0
-            b       G_M51094_IG17
+            b       G_M51094_IG16
                        ;; size=28 bbWeight=0.08 PerfScore 1.21
 G_M51094_IG20:        ; bbWeight=0, gcVars=0000000000000004 {V00}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs +[x1]
@@ -261,7 +262,7 @@ G_M51094_IG20:        ; bbWeight=0, gcVars=0000000000000004 {V00}, gcrefRegs=000
             blr     x3
             ; gcrRegs -[x0-x1]
             ; gcr arg pop 0
-            b       G_M51094_IG17
+            b       G_M51094_IG16
                        ;; size=32 bbWeight=0 PerfScore 0.00
 G_M51094_IG21:        ; bbWeight=0, gcVars=0000000000000404 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs +[x19]
@@ -720,7 +721,7 @@ G_M51094_IG43:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
 G_M51094_IG44:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
             cmp     w20, w19
             blt     G_M51094_IG37
-            b       G_M51094_IG17
+            b       G_M51094_IG16
                        ;; size=12 bbWeight=0 PerfScore 0.00
 G_M51094_IG45:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0]
@@ -796,7 +797,7 @@ G_M51094_IG50:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {
             blr     x2
             ; gcrRegs -[x0]
             ; gcr arg pop 0
-            b       G_M51094_IG17
+            b       G_M51094_IG16
                        ;; size=28 bbWeight=0 PerfScore 0.00
 G_M51094_IG51:        ; bbWeight=0, gcVars=0000000000001404 {V00 V02 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
             ; GC ptr vars +{V00 V02 V05 V10}
@@ -824,7 +825,7 @@ G_M51094_IG53:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ret     lr
                        ;; size=20 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1840, prolog size 52, PerfScore 74.36, instruction count 460, allocated bytes for code 1840 (MethodHash=8bc43869) for method System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
+; Total bytes of code 1840, prolog size 52, PerfScore 74.00, instruction count 460, allocated bytes for code 1840 (MethodHash=8bc43869) for method System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
 ; ============================================================
 
 Unwind Info:

+12 (+1.30%) : 402314.dasm - OLEDB.Test.ModuleCore.CTestModule+d__56:MoveNext():ubyte:this (Tier1)

@@ -60,12 +60,12 @@ G_M23047_IG02:        ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=000
             ldr     w1, [x0, #0x20]
             ldr     x2, [x0, #0x10]
             ; gcrRegs +[x2]
-            cbz     w1, G_M23047_IG12
+            cbz     w1, G_M23047_IG07
                        ;; size=12 bbWeight=1 PerfScore 7.00
 G_M23047_IG03:        ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x2]
             cmp     w1, #1
-            bne     G_M23047_IG11
+            bne     G_M23047_IG17
                        ;; size=8 bbWeight=1.00 PerfScore 1.50
 G_M23047_IG04:        ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
             movn    w11, #3
@@ -79,7 +79,7 @@ G_M23047_IG04:        ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
             blr     x1
             ; gcrRegs -[x0]
             ; gcr arg pop 0
-            cbz     w0, G_M23047_IG24
+            cbz     w0, G_M23047_IG23
                        ;; size=40 bbWeight=0.01 PerfScore 0.16
 G_M23047_IG05:        ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [fp, #0x10]    // [V00 this]
@@ -91,7 +91,7 @@ G_M23047_IG05:        ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movk    x15, #0xD1FFAB1E LSL #16
             movk    x15, #1 LSL #32
             cmp     x14, x15
-            bne     G_M23047_IG10
+            bne     G_M23047_IG16
             ldr     x15, [x1, #0x08]
             ; gcrRegs +[x15]
                        ;; size=36 bbWeight=1.00 PerfScore 13.99
@@ -104,59 +104,9 @@ G_M23047_IG06:        ; bbWeight=1.00, gcrefRegs=8001 {x0 x15}, byrefRegs=0000 {
             ; byrRegs -[x14]
             mov     w11, #1
             str     w11, [x0, #0x20]
-            b       G_M23047_IG29
+            b       G_M23047_IG30
                        ;; size=20 bbWeight=1.00 PerfScore 4.00
-G_M23047_IG07:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0] +[x19]
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            ldr     x1, [x19]
-            ldr     x1, [x1, #0x48]
-            ldr     x1, [x1, #0x20]
-            blr     x1
-            ; gcr arg pop 0
-                       ;; size=20 bbWeight=0 PerfScore 0.00
-G_M23047_IG08:        ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
-            ldr     x1, [x0]
-            ldr     x1, [x1, #0x48]
-            ldr     x1, [x1, #0x38]
-            blr     x1
-            ; gcr arg pop 0
-            b       G_M23047_IG21
-                       ;; size=20 bbWeight=0 PerfScore 0.00
-G_M23047_IG09:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x19]
-            movz    x20, #0xD1FFAB1E      // code for <unknown method>
-            movk    x20, #0xD1FFAB1E LSL #16
-            movk    x20, #1 LSL #32
-            mov     x11, x20
-            ldr     x1, [x11]
-            blr     x1
-            ; gcr arg pop 0
-            mov     x15, x0
-            ; gcrRegs +[x15]
-            b       G_M23047_IG22
-                       ;; size=32 bbWeight=0 PerfScore 0.00
-G_M23047_IG10:        ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0 x15] +[x1]
-            mov     x0, x1
-            ; gcrRegs +[x0]
-            add     x11, x20, #16
-            ldr     x1, [x11]
-            ; gcrRegs -[x1]
-            blr     x1
-            ; gcr arg pop 0
-            mov     x15, x0
-            ; gcrRegs +[x15]
-            ldr     x0, [fp, #0x10]    // [V00 this]
-            b       G_M23047_IG06
-                       ;; size=28 bbWeight=0 PerfScore 0.00
-G_M23047_IG11:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x15]
-            mov     w11, wzr
-            b       G_M23047_IG29
-                       ;; size=8 bbWeight=0 PerfScore 0.00
-G_M23047_IG12:        ; bbWeight=0.00, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG07:        ; bbWeight=0.00, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x2]
             movn    w1, #0
             str     w1, [x0, #0x20]
@@ -170,10 +120,10 @@ G_M23047_IG12:        ; bbWeight=0.00, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}
             ; gcr arg pop 0
             mov     x15, x0
             ; gcrRegs +[x15]
-            cbz     x15, G_M23047_IG28
+            cbz     x15, G_M23047_IG29
             ldr     w14, [x15, #0x10]
             cmp     w14, #0
-            ble     G_M23047_IG28
+            ble     G_M23047_IG29
             ldr     w0, [x15, #0x14]
             ; gcrRegs -[x0]
             ldr     x2, [fp, #0x10]    // [V00 this]
@@ -200,60 +150,99 @@ G_M23047_IG12:        ; bbWeight=0.00, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}
             ; gcrRegs -[x2]
             ; byrRegs -[x0]
             ; gcr arg pop 0
-            cbz     w0, G_M23047_IG27
+            cbz     w0, G_M23047_IG28
                        ;; size=124 bbWeight=0.00 PerfScore 0.03
-G_M23047_IG13:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG08:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             ldr     x2, [fp, #0x10]    // [V00 this]
             ; gcrRegs +[x2]
             ldr     x1, [x2, #0x30]
             ; gcrRegs +[x1]
             mov     x19, x1
             ; gcrRegs +[x19]
-            cbz     x19, G_M23047_IG16
+            cbz     x19, G_M23047_IG10
                        ;; size=16 bbWeight=0.01 PerfScore 0.09
-G_M23047_IG14:        ; bbWeight=0.01, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG09:        ; bbWeight=0.01, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x2]
             ldr     x0, [x19]
             movz    x3, #0xD1FFAB1E
             movk    x3, #0xD1FFAB1E LSL #16
             movk    x3, #1 LSL #32
             cmp     x0, x3
-            beq     G_M23047_IG16
+            bne     G_M23047_IG20
                        ;; size=24 bbWeight=0.01 PerfScore 0.04
-G_M23047_IG15:        ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x19]
-            movz    x0, #0xD1FFAB1E
-            movk    x0, #0xD1FFAB1E LSL #16
-            movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFCLASS
-            ; gcrRegs -[x1] +[x0]
-            ; gcr arg pop 0
-            mov     x19, x0
-            ; gcrRegs +[x19]
-                       ;; size=20 bbWeight=0.00 PerfScore 0.01
-G_M23047_IG16:        ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0]
-            cbz     x19, G_M23047_IG26
+G_M23047_IG10:        ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x1]
+            cbz     x19, G_M23047_IG25
             ldr     x20, [x19]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             cmp     x20, x0
-            bne     G_M23047_IG07
+            bne     G_M23047_IG13
                        ;; size=28 bbWeight=0.01 PerfScore 0.10
-G_M23047_IG17:        ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG11:        ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x19, #0x18]
             ; gcrRegs +[x0]
-            cbz     x0, G_M23047_IG19
+            cbz     x0, G_M23047_IG18
                        ;; size=8 bbWeight=0.01 PerfScore 0.06
-G_M23047_IG18:        ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M23047_IG12:        ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
             ldr     x0, [x19, #0x18]
             ; gcrRegs +[x0]
-            b       G_M23047_IG20
+            b       G_M23047_IG19
                        ;; size=8 bbWeight=0.01 PerfScore 0.06
-G_M23047_IG19:        ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M23047_IG13:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
+            mov     x0, x19
+            ; gcrRegs +[x0]
+            ldr     x1, [x19]
+            ldr     x1, [x1, #0x48]
+            ldr     x1, [x1, #0x20]
+            blr     x1
+            ; gcr arg pop 0
+                       ;; size=20 bbWeight=0 PerfScore 0.00
+G_M23047_IG14:        ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+            ldr     x1, [x0]
+            ldr     x1, [x1, #0x48]
+            ldr     x1, [x1, #0x38]
+            blr     x1
+            ; gcr arg pop 0
+            b       G_M23047_IG21
+                       ;; size=20 bbWeight=0 PerfScore 0.00
+G_M23047_IG15:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x19]
+            movz    x20, #0xD1FFAB1E      // code for <unknown method>
+            movk    x20, #0xD1FFAB1E LSL #16
+            movk    x20, #1 LSL #32
+            mov     x11, x20
+            ldr     x1, [x11]
+            blr     x1
+            ; gcr arg pop 0
+            mov     x15, x0
+            ; gcrRegs +[x15]
+            b       G_M23047_IG22
+                       ;; size=32 bbWeight=0 PerfScore 0.00
+G_M23047_IG16:        ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0 x15] +[x1]
+            mov     x0, x1
+            ; gcrRegs +[x0]
+            add     x11, x20, #16
+            ldr     x1, [x11]
+            ; gcrRegs -[x1]
+            blr     x1
+            ; gcr arg pop 0
+            mov     x15, x0
+            ; gcrRegs +[x15]
+            ldr     x0, [fp, #0x10]    // [V00 this]
+            b       G_M23047_IG06
+                       ;; size=28 bbWeight=0 PerfScore 0.00
+G_M23047_IG17:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x15]
+            mov     w11, wzr
+            b       G_M23047_IG30
+                       ;; size=8 bbWeight=0 PerfScore 0.00
+G_M23047_IG18:        ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0] +[x19]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
@@ -269,18 +258,31 @@ G_M23047_IG19:        ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-            b       G_M23047_IG18
+            b       G_M23047_IG12
                        ;; size=40 bbWeight=0.00 PerfScore 0.01
-G_M23047_IG20:        ; bbWeight=0.06, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG19:        ; bbWeight=0.06, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x0]
             ldr     x1, [x0]
             movz    x3, #0xD1FFAB1E
             movk    x3, #0xD1FFAB1E LSL #16
             movk    x3, #1 LSL #32
             cmp     x1, x3
-            bne     G_M23047_IG08
+            bne     G_M23047_IG14
...

+4 (+1.37%) : 161572.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)

@@ -9,7 +9,7 @@
 ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T00] (  7,  6.04)     ref  ->  x19         class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+;  V00 arg0         [V00,T00] (  7,  6.00)     ref  ->  x19         class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
 ;  V01 loc0         [V01,T02] (  4,  2.54)     ref  ->   x1         class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundConditionalOperator>
 ;  V02 loc1         [V02,T03] (  4,  2.41)     ref  ->   x2         class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundConvertedSwitchExpression>
 ;  V03 loc2         [V03,T05] (  6,  2.04)     ref  ->   x0         class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpressionBase>
@@ -43,7 +43,7 @@ G_M35670_IG03:        ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             cmp     x0, x2
-            beq     G_M35670_IG15
+            beq     G_M35670_IG14
                        ;; size=24 bbWeight=0.50 PerfScore 3.00
 G_M35670_IG04:        ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x1]
@@ -63,7 +63,7 @@ G_M35670_IG06:        ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             ; gcrRegs -[x2]
             mov     x0, x19
             ; gcrRegs +[x0]
-            cbz     x0, G_M35670_IG10
+            cbz     x0, G_M35670_IG09
                        ;; size=8 bbWeight=0.96 PerfScore 1.45
 G_M35670_IG07:        ; bbWeight=0.48, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
             ldr     x1, [x0]
@@ -72,31 +72,20 @@ G_M35670_IG07:        ; bbWeight=0.48, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             cmp     x1, x0
-            beq     G_M35670_IG09
+            bne     G_M35670_IG17
                        ;; size=24 bbWeight=0.48 PerfScore 2.89
-G_M35670_IG08:        ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            mov     x1, x19
-            ; gcrRegs +[x1]
-            movz    x0, #0xD1FFAB1E
-            movk    x0, #0xD1FFAB1E LSL #16
-            movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFCLASS
-            ; gcrRegs -[x1] +[x0]
-            b       G_M35670_IG10
-                       ;; size=24 bbWeight=0.20 PerfScore 0.81
-G_M35670_IG09:        ; bbWeight=0.28, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
+G_M35670_IG08:        ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x0, xzr
             ; gcrRegs +[x0]
-                       ;; size=4 bbWeight=0.28 PerfScore 0.14
-G_M35670_IG10:        ; bbWeight=0.96, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
-            cbnz    x0, G_M35670_IG18
+                       ;; size=4 bbWeight=0.32 PerfScore 0.16
+G_M35670_IG09:        ; bbWeight=0.96, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+            cbnz    x0, G_M35670_IG20
                        ;; size=4 bbWeight=0.96 PerfScore 0.96
-G_M35670_IG11:        ; bbWeight=0.91, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35670_IG10:        ; bbWeight=0.91, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
-            cbz     x19, G_M35670_IG16
+            cbz     x19, G_M35670_IG15
                        ;; size=4 bbWeight=0.91 PerfScore 0.91
-G_M35670_IG12:        ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35670_IG11:        ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x19]
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
@@ -104,29 +93,47 @@ G_M35670_IG12:        ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             cmp     x0, x1
             beq     G_M35670_IG22
                        ;; size=24 bbWeight=0.46 PerfScore 2.74
-G_M35670_IG13:        ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35670_IG12:        ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x19]
-            b       G_M35670_IG16
+            b       G_M35670_IG15
                        ;; size=4 bbWeight=0.23 PerfScore 0.23
-G_M35670_IG14:        ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35670_IG13:        ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             mov     w0, #1
-            b       G_M35670_IG17
+            b       G_M35670_IG16
                        ;; size=8 bbWeight=0.04 PerfScore 0.05
-G_M35670_IG15:        ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M35670_IG14:        ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x1]
             ldrb    w2, [x1, #0x49]
-            cbnz    w2, G_M35670_IG14
+            cbnz    w2, G_M35670_IG13
                        ;; size=8 bbWeight=0.04 PerfScore 0.14
-G_M35670_IG16:        ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35670_IG15:        ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x1]
             mov     w0, wzr
                        ;; size=4 bbWeight=0.96 PerfScore 0.48
-G_M35670_IG17:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M35670_IG16:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
             ldp     x19, x20, [sp, #0x10]
             ldp     fp, lr, [sp], #0x20
             ret     lr
                        ;; size=12 bbWeight=1 PerfScore 3.00
-G_M35670_IG18:        ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35670_IG17:        ; bbWeight=0.16, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs +[x19]
+            mov     x1, x19
+            ; gcrRegs +[x1]
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #1 LSL #32
+            bl      CORINFO_HELP_ISINSTANCEOFCLASS
+            ; gcrRegs -[x1] +[x0]
+            b       G_M35670_IG09
+                       ;; size=24 bbWeight=0.16 PerfScore 0.64
+G_M35670_IG18:        ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x0 x19]
+            cbnz    w20, G_M35670_IG13
+                       ;; size=4 bbWeight=0.05 PerfScore 0.05
+G_M35670_IG19:        ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            b       G_M35670_IG15
+                       ;; size=4 bbWeight=0.02 PerfScore 0.02
+G_M35670_IG20:        ; bbWeight=0.05, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x0]
             ldr     x1, [x0]
             movz    x2, #0xD1FFAB1E
@@ -135,25 +142,19 @@ G_M35670_IG18:        ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=000
             cmp     x1, x2
             bne     G_M35670_IG23
             ldrb    w20, [x0, #0x39]
-                       ;; size=28 bbWeight=0.05 PerfScore 0.47
-G_M35670_IG19:        ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0]
-            cbnz    w20, G_M35670_IG14
-                       ;; size=4 bbWeight=0.05 PerfScore 0.05
-G_M35670_IG20:        ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            b       G_M35670_IG16
-                       ;; size=4 bbWeight=0.02 PerfScore 0.02
+            b       G_M35670_IG18
+                       ;; size=32 bbWeight=0.05 PerfScore 0.53
 G_M35670_IG21:        ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs +[x2]
+            ; gcrRegs -[x0] +[x2]
             ldrb    w0, [x2, #0x50]
-            cbnz    w0, G_M35670_IG14
-            b       G_M35670_IG16
+            cbnz    w0, G_M35670_IG13
+            b       G_M35670_IG15
                        ;; size=12 bbWeight=0 PerfScore 0.00
 G_M35670_IG22:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x2] +[x19]
             ldrb    w0, [x19, #0x31]
-            cbz     w0, G_M35670_IG16
-            b       G_M35670_IG14
+            cbz     w0, G_M35670_IG15
+            b       G_M35670_IG13
                        ;; size=12 bbWeight=0 PerfScore 0.00
 G_M35670_IG23:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x19] +[x0]
@@ -163,10 +164,10 @@ G_M35670_IG23:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
             blr     x1
             ; gcrRegs -[x0]
             sxtw    w20, w0
-            b       G_M35670_IG19
+            b       G_M35670_IG18
                        ;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 292, prolog size 12, PerfScore 26.20, instruction count 73, allocated bytes for code 292 (MethodHash=471574a9) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
+; Total bytes of code 296, prolog size 12, PerfScore 26.10, instruction count 74, allocated bytes for code 296 (MethodHash=471574a9) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -177,7 +178,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 73 (0x00049) Actual length = 292 (0x000124)
+  Function Length   : 74 (0x0004a) Actual length = 296 (0x000128)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+36 (+13.43%) : 312028.dasm - System.Linq.Enumerable+Concat2Iterator1[int]:Concat(System.Collections.Generic.IEnumerable1[int]):System.Linq.Enumerable+ConcatIterator`1[int]:this (Tier1)

@@ -9,16 +9,17 @@
 ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T02] (  5,  3.89)     ref  ->  x20         this class-hnd single-def <System.Linq.Enumerable+Concat2Iterator`1[int]>
-;  V01 arg1         [V01,T01] (  4,  4   )     ref  ->  x19         class-hnd single-def <System.Collections.Generic.IEnumerable`1[int]>
-;  V02 loc0         [V02,T08] (  2,  2   )   ubyte  ->  x21        
+;  V00 this         [V00,T03] (  5,  3.89)     ref  ->  x20         this class-hnd single-def <System.Linq.Enumerable+Concat2Iterator`1[int]>
+;  V01 arg1         [V01,T02] (  5,  4.22)     ref  ->  x19         class-hnd single-def <System.Collections.Generic.IEnumerable`1[int]>
+;  V02 loc0         [V02,T09] (  2,  2   )   ubyte  ->  x21        
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T07] (  3,  2   )     int  ->   x0        
+;  V04 tmp1         [V04,T08] (  3,  2   )     int  ->   x0        
 ;  V05 tmp2         [V05,T00] (  7, 14   )     ref  ->  x22         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+ConcatNIterator`1[int]>
-;  V06 rat0         [V06,T05] (  3,  2   )     ref  ->   x1         "Spilling to split statement for tree"
-;  V07 rat1         [V07,T03] (  5,  3.33)     ref  ->   x2         class-hnd "replacement local" <<unknown class>>
-;  V08 rat2         [V08,T06] (  3,  2   )     ref  ->   x1         "Spilling to split statement for tree"
-;  V09 rat3         [V09,T04] (  5,  3.33)     ref  ->   x2         class-hnd "replacement local" <<unknown class>>
+;  V06 rat0         [V06,T01] (  5,  7.44)     ref  ->   x2         class-hnd "replacement local" <<unknown class>>
+;  V07 rat1         [V07,T06] (  3,  2   )     ref  ->   x1         "Spilling to split statement for tree"
+;  V08 rat2         [V08,T04] (  5,  3.33)     ref  ->   x2         class-hnd "replacement local" <<unknown class>>
+;  V09 rat3         [V09,T07] (  3,  2   )     ref  ->   x1         "Spilling to split statement for tree"
+;  V10 rat4         [V10,T05] (  5,  3.33)     ref  ->   x2         class-hnd "replacement local" <<unknown class>>
 ;
 ; Lcl frame size = 0
 
@@ -33,6 +34,20 @@ G_M16061_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[x19]
                        ;; size=24 bbWeight=1 PerfScore 4.50
 G_M16061_IG02:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+            mov     x2, x19
+            ; gcrRegs +[x2]
+            cbz     x2, G_M16061_IG05
+                       ;; size=8 bbWeight=1 PerfScore 1.50
+G_M16061_IG03:        ; bbWeight=0.50, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
+            ldr     x1, [x2]
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #1 LSL #32
+            cmp     x1, x0
+            beq     G_M16061_IG05
+                       ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M16061_IG04:        ; bbWeight=0.22, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x2]
             mov     x1, x19
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
@@ -40,13 +55,18 @@ G_M16061_IG02:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
             movk    x0, #1 LSL #32
             bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
             ; gcrRegs -[x1] +[x0]
-            cbnz    x0, G_M16061_IG06
-                       ;; size=24 bbWeight=1 PerfScore 4.00
-G_M16061_IG03:        ; bbWeight=0.56, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+            mov     x2, x0
+            ; gcrRegs +[x2]
+                       ;; size=24 bbWeight=0.22 PerfScore 0.77
+G_M16061_IG05:        ; bbWeight=1, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
+            cbnz    x2, G_M16061_IG09
+                       ;; size=4 bbWeight=1 PerfScore 1.00
+G_M16061_IG06:        ; bbWeight=0.56, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x2]
             mov     w0, wzr
                        ;; size=4 bbWeight=0.56 PerfScore 0.28
-G_M16061_IG04:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M16061_IG07:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
             uxtb    w21, w0
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
@@ -78,46 +98,20 @@ G_M16061_IG04:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
             mov     x0, x22
             ; gcrRegs +[x0]
                        ;; size=72 bbWeight=1 PerfScore 12.50
-G_M16061_IG05:        ; bbWeight=1, epilog, nogc, extend
+G_M16061_IG08:        ; bbWeight=1, epilog, nogc, extend
             ldp     x21, x22, [sp, #0x20]
             ldp     x19, x20, [sp, #0x10]
             ldp     fp, lr, [sp], #0x30
             ret     lr
                        ;; size=16 bbWeight=1 PerfScore 4.00
-G_M16061_IG06:        ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M16061_IG09:        ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[x0 x22] +[x19-x20]
             ldr     x1, [x20, #0x20]
             ; gcrRegs +[x1]
             mov     x2, x1
             ; gcrRegs +[x2]
-            cbz     x2, G_M16061_IG09
-                       ;; size=12 bbWeight=0.44 PerfScore 2.00
-G_M16061_IG07:        ; bbWeight=0.22, gcrefRegs=180006 {x1 x2 x19 x20}, byrefRegs=0000 {}, byref, isz
-            ldr     x0, [x2]
-            movz    x3, #0xD1FFAB1E
-            movk    x3, #0xD1FFAB1E LSL #16
-            movk    x3, #1 LSL #32
-            cmp     x0, x3
-            beq     G_M16061_IG09
-                       ;; size=24 bbWeight=0.22 PerfScore 1.33
-G_M16061_IG08:        ; bbWeight=0.11, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x2]
-            movz    x0, #0xD1FFAB1E
-            movk    x0, #0xD1FFAB1E LSL #16
-            movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
-            ; gcrRegs -[x1] +[x0]
-            mov     x2, x0
-            ; gcrRegs +[x2]
-                       ;; size=20 bbWeight=0.11 PerfScore 0.33
-G_M16061_IG09:        ; bbWeight=0.44, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0]
-            cbz     x2, G_M16061_IG03
-            ldr     x1, [x20, #0x28]
-            ; gcrRegs +[x1]
-            mov     x2, x1
             cbz     x2, G_M16061_IG12
-                       ;; size=16 bbWeight=0.44 PerfScore 2.44
+                       ;; size=12 bbWeight=0.44 PerfScore 2.00
 G_M16061_IG10:        ; bbWeight=0.22, gcrefRegs=180006 {x1 x2 x19 x20}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x2]
             movz    x3, #0xD1FFAB1E
@@ -136,14 +130,40 @@ G_M16061_IG11:        ; bbWeight=0.11, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=
             mov     x2, x0
             ; gcrRegs +[x2]
                        ;; size=20 bbWeight=0.11 PerfScore 0.33
-G_M16061_IG12:        ; bbWeight=0.44, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref
+G_M16061_IG12:        ; bbWeight=0.44, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x0]
+            cbz     x2, G_M16061_IG06
+            ldr     x1, [x20, #0x28]
+            ; gcrRegs +[x1]
+            mov     x2, x1
+            cbz     x2, G_M16061_IG15
+                       ;; size=16 bbWeight=0.44 PerfScore 2.44
+G_M16061_IG13:        ; bbWeight=0.22, gcrefRegs=180006 {x1 x2 x19 x20}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x2]
+            movz    x3, #0xD1FFAB1E
+            movk    x3, #0xD1FFAB1E LSL #16
+            movk    x3, #1 LSL #32
+            cmp     x0, x3
+            beq     G_M16061_IG15
+                       ;; size=24 bbWeight=0.22 PerfScore 1.33
+G_M16061_IG14:        ; bbWeight=0.11, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x2]
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #1 LSL #32
+            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            ; gcrRegs -[x1] +[x0]
+            mov     x2, x0
+            ; gcrRegs +[x2]
+                       ;; size=20 bbWeight=0.11 PerfScore 0.33
+G_M16061_IG15:        ; bbWeight=0.44, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
             cmp     x2, #0
             cset    x0, ne
-            b       G_M16061_IG04
+            b       G_M16061_IG07
                        ;; size=12 bbWeight=0.44 PerfScore 0.89
 
-; Total bytes of code 268, prolog size 16, PerfScore 33.94, instruction count 67, allocated bytes for code 268 (MethodHash=7d72c142) for method System.Linq.Enumerable+Concat2Iterator`1[int]:Concat(System.Collections.Generic.IEnumerable`1[int]):System.Linq.Enumerable+ConcatIterator`1[int]:this (Tier1)
+; Total bytes of code 304, prolog size 16, PerfScore 36.21, instruction count 76, allocated bytes for code 304 (MethodHash=7d72c142) for method System.Linq.Enumerable+Concat2Iterator`1[int]:Concat(System.Collections.Generic.IEnumerable`1[int]):System.Linq.Enumerable+ConcatIterator`1[int]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -154,7 +174,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 67 (0x00043) Actual length = 268 (0x00010c)
+  Function Length   : 76 (0x0004c) Actual length = 304 (0x000130)
   ---- 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.osx.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.osx.arm64.checked.mch 2 0 2 0 -0 +72
benchmarks.run_tiered.osx.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.osx.arm64.checked.mch 2 2 0 0 -84 +0
libraries.crossgen2.osx.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.osx.arm64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.osx.arm64.Release.mch 20 2 10 8 -96 +92
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 0 0 0 0 -0 +0
realworld.run.osx.arm64.checked.mch 0 0 0 0 -0 +0
24 4 12 8 -180 +164

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.osx.arm64.checked.mch 24,614 4 24,610 4 (0.02%) 241 (0.97%)
benchmarks.run_pgo.osx.arm64.checked.mch 84,399 48,412 35,987 93 (0.11%) 275 (0.32%)
benchmarks.run_tiered.osx.arm64.checked.mch 48,192 37,318 10,874 4 (0.01%) 69 (0.14%)
coreclr_tests.run.osx.arm64.checked.mch 585,436 357,177 228,259 391 (0.07%) 785 (0.13%)
libraries.crossgen2.osx.arm64.checked.mch 233,353 15 233,338 0 (0.00%) 0 (0.00%)
libraries.pmi.osx.arm64.checked.mch 312,682 18 312,664 7 (0.00%) 2,034 (0.65%)
libraries_tests.run.osx.arm64.Release.mch 636,285 466,371 169,914 2,745 (0.43%) 3,581 (0.56%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 300,380 21,558 278,822 11 (0.00%) 2,095 (0.69%)
realworld.run.osx.arm64.checked.mch 31,218 3 31,215 1 (0.00%) 326 (1.03%)
2,256,559 930,876 1,325,683 3,256 (0.14%) 9,406 (0.42%)

jit-analyze output

benchmarks.run_pgo.osx.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 34446500 (overridden on cmd)
Total bytes of diff: 34446572 (overridden on cmd)
Total bytes of delta: 72 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          36 : 77072.dasm (7.89 % of base)
          36 : 73778.dasm (7.89 % of base)

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

Top method regressions (bytes):
          36 (7.89 % of base) : 77072.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)
          36 (7.89 % of base) : 73778.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)

Top method regressions (percentages):
          36 (7.89 % of base) : 77072.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)
          36 (7.89 % of base) : 73778.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)

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


coreclr_tests.run.osx.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 484502820 (overridden on cmd)
Total bytes of diff: 484502736 (overridden on cmd)
Total bytes of delta: -84 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -44 : 384030.dasm (-2.49 % of base)
         -40 : 379802.dasm (-2.31 % of base)

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

Top method improvements (bytes):
         -44 (-2.49 % of base) : 384030.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
         -40 (-2.31 % of base) : 379802.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

Top method improvements (percentages):
         -44 (-2.49 % of base) : 384030.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
         -40 (-2.31 % of base) : 379802.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.osx.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 311678540 (overridden on cmd)
Total bytes of diff: 311678536 (overridden on cmd)
Total bytes of delta: -4 (-0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          36 : 312028.dasm (13.43 % of base)
          12 : 402314.dasm (1.30 % of base)
           8 : 345586.dasm (0.93 % of base)
           8 : 303299.dasm (0.60 % of base)
           8 : 463361.dasm (0.49 % of base)
           4 : 601346.dasm (0.55 % of base)
           4 : 161572.dasm (1.37 % of base)
           4 : 351759.dasm (0.27 % of base)
           4 : 626806.dasm (0.56 % of base)
           4 : 84374.dasm (0.64 % of base)

Top file improvements (bytes):
         -92 : 594261.dasm (-2.15 % of base)
          -4 : 630301.dasm (-0.22 % of base)

12 total files with Code Size differences (2 improved, 10 regressed), 8 unchanged.

Top method regressions (bytes):
          36 (13.43 % of base) : 312028.dasm - System.Linq.Enumerable+Concat2Iterator`1[int]:Concat(System.Collections.Generic.IEnumerable`1[int]):System.Linq.Enumerable+ConcatIterator`1[int]:this (Tier1)
          12 (1.30 % of base) : 402314.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
           8 (0.93 % of base) : 345586.dasm - System.Threading.Tasks.Task:ContinueWithCore(System.Threading.Tasks.Task,System.Threading.Tasks.TaskScheduler,System.Threading.CancellationToken,int):this (Tier1)
           8 (0.60 % of base) : 303299.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
           8 (0.49 % of base) : 463361.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
           4 (0.55 % of base) : 601346.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement,Microsoft.CodeAnalysis.CodeGen.ILBuilder,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,int,ubyte):this (Tier1)
           4 (1.37 % of base) : 161572.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
           4 (0.27 % of base) : 351759.dasm - ReflectionAbstractionExtensions:DisposeTestClass(Xunit.Abstractions.ITest,System.Object,Xunit.Sdk.IMessageBus,Xunit.Sdk.ExecutionTimer,System.Threading.CancellationTokenSource) (Tier1)
           4 (0.64 % of base) : 84374.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
           4 (0.56 % of base) : 626806.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)

Top method improvements (bytes):
         -92 (-2.15 % of base) : 594261.dasm - Microsoft.Cci.MetadataWriter:AddCustomAttributesToTable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.Reflection.Metadata.EntityHandle]):this (Tier1-OSR)
          -4 (-0.22 % of base) : 630301.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)

Top method regressions (percentages):
          36 (13.43 % of base) : 312028.dasm - System.Linq.Enumerable+Concat2Iterator`1[int]:Concat(System.Collections.Generic.IEnumerable`1[int]):System.Linq.Enumerable+ConcatIterator`1[int]:this (Tier1)
           4 (1.37 % of base) : 161572.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
          12 (1.30 % of base) : 402314.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
           8 (0.93 % of base) : 345586.dasm - System.Threading.Tasks.Task:ContinueWithCore(System.Threading.Tasks.Task,System.Threading.Tasks.TaskScheduler,System.Threading.CancellationToken,int):this (Tier1)
           4 (0.64 % of base) : 84374.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
           8 (0.60 % of base) : 303299.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
           4 (0.56 % of base) : 626806.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
           4 (0.55 % of base) : 601346.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement,Microsoft.CodeAnalysis.CodeGen.ILBuilder,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,int,ubyte):this (Tier1)
           8 (0.49 % of base) : 463361.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
           4 (0.27 % of base) : 351759.dasm - ReflectionAbstractionExtensions:DisposeTestClass(Xunit.Abstractions.ITest,System.Object,Xunit.Sdk.IMessageBus,Xunit.Sdk.ExecutionTimer,System.Threading.CancellationTokenSource) (Tier1)

Top method improvements (percentages):
         -92 (-2.15 % of base) : 594261.dasm - Microsoft.Cci.MetadataWriter:AddCustomAttributesToTable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.Reflection.Metadata.EntityHandle]):this (Tier1-OSR)
          -4 (-0.22 % of base) : 630301.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)

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



windows arm64

Diffs are based on 2,312,039 contexts (931,543 MinOpts, 1,380,496 FullOpts).

MISSED contexts: base: 2,687 (0.12%), diff: 8,855 (0.38%)

Overall (-80 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 47,253,428 +36
coreclr_tests.run.windows.arm64.checked.mch 494,497,636 -84
libraries_tests.run.windows.arm64.Release.mch 309,394,148 -32

FullOpts (-80 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 31,003,044 +36
coreclr_tests.run.windows.arm64.checked.mch 155,406,108 -84
libraries_tests.run.windows.arm64.Release.mch 107,812,644 -32

Example diffs

benchmarks.run_pgo.windows.arm64.checked.mch

+36 (+7.89%) : 31478.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)

@@ -10,54 +10,56 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  8,  6.00)     ref  ->  x19         this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-;  V01 loc0         [V01,T01] (  5,  3.00)     int  ->  x20        
-;  V02 loc1         [V02,T17] (  3,  0.00)     ref  ->  x21         class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V03 loc2         [V03,T03] (  7,  2.51)     int  ->  x21        
-;  V04 loc3         [V04,T11] (  7,  0.00)     int  ->   x2        
+;  V01 loc0         [V01,T02] (  5,  3.00)     int  ->  x20        
+;  V02 loc1         [V02,T19] (  3,  0.00)     ref  ->  x22         class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V03 loc2         [V03,T04] (  7,  2.51)     int  ->  x21        
+;  V04 loc3         [V04,T13] (  7,  0.00)     int  ->   x2        
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T23] (  3,  0.00)     ref  ->   x1         single-def "CASTCLASS eval op1"
-;  V07 tmp2         [V07,T26] (  3,  0.00)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V08 tmp3         [V08,T13] (  5,  0.00)     ref  ->  x21         class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V09 tmp4         [V09,T14] (  2,  0.00)     ref  ->   x4         class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
-;  V10 tmp5         [V10,T06] (  4,  2   )     int  ->  x20         "Inline return value spill temp"
-;  V11 tmp6         [V11,T08] (  3,  1.43)     ref  ->   x0         class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V12 tmp7         [V12,T09] (  3,  1.00)     ref  ->   x0         class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
-;  V13 tmp8         [V13,T05] (  2,  2.01)     ref  ->   x0         "CASTCLASS eval op1"
+;  V06 tmp1         [V06,T25] (  3,  0.00)     ref  ->   x1         single-def "CASTCLASS eval op1"
+;  V07 tmp2         [V07,T28] (  3,  0.00)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V08 tmp3         [V08,T15] (  5,  0.00)     ref  ->  x22         class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V09 tmp4         [V09,T16] (  2,  0.00)     ref  ->   x4         class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
+;  V10 tmp5         [V10,T08] (  4,  2   )     int  ->  x20         "Inline return value spill temp"
+;  V11 tmp6         [V11,T10] (  3,  1.43)     ref  ->   x0         class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V12 tmp7         [V12,T11] (  3,  1.00)     ref  ->   x0         class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+;  V13 tmp8         [V13,T07] (  2,  2.01)     ref  ->   x0         "CASTCLASS eval op1"
 ;* V14 tmp9         [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
-;  V15 tmp10        [V15,T07] (  4,  1.75)     ref  ->   x0         class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-;  V16 tmp11        [V16,T04] (  3,  2.01)     ref  ->   x0         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V17 tmp12        [V17,T10] (  4,  0.00)     int  ->   x2         "Inlining Arg"
-;  V18 tmp13        [V18,T27] (  3,  0   )     ref  ->   x0         "arr expr"
-;  V19 tmp14        [V19,T12] (  3,  0.00)     ref  ->   x1         "arr expr"
-;* V20 tmp15        [V20,T25] (  0,  0   )     ref  ->  zero-ref    "arr expr"
-;  V21 tmp16        [V21,T15] (  2,  0.00)     ref  ->   x0         "argument with side effect"
-;  V22 tmp17        [V22,T16] (  2,  0.00)     ref  ->   x1         "argument with side effect"
-;  V23 cse0         [V23,T20] (  3,  0.00)     int  ->   x0         "CSE - conservative"
-;  V24 cse1         [V24,T18] (  2,  0.00)     ref  ->   x1         "CSE - conservative"
-;  V25 cse2         [V25,T24] (  3,  0.00)     int  ->  x19         "CSE - conservative"
-;  V26 cse3         [V26,T21] (  3,  0.00)     int  ->   x3         "CSE - conservative"
-;  V27 cse4         [V27,T19] (  3,  0.00)   byref  ->   x1         "CSE - conservative"
-;  V28 cse5         [V28,T22] (  3,  0.00)     int  ->  x20         "CSE - conservative"
-;  V29 cse6         [V29,T02] (  3,  2.71)     ref  ->   x1         "CSE - aggressive"
+;  V15 tmp10        [V15,T09] (  4,  1.75)     ref  ->   x0         class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
+;  V16 tmp11        [V16,T06] (  3,  2.01)     ref  ->  x22         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V17 tmp12        [V17,T12] (  4,  0.00)     int  ->   x2         "Inlining Arg"
+;  V18 tmp13        [V18,T29] (  3,  0   )     ref  ->   x0         "arr expr"
+;  V19 tmp14        [V19,T14] (  3,  0.00)     ref  ->   x1         "arr expr"
+;* V20 tmp15        [V20,T27] (  0,  0   )     ref  ->  zero-ref    "arr expr"
+;  V21 tmp16        [V21,T17] (  2,  0.00)     ref  ->   x0         "argument with side effect"
+;  V22 tmp17        [V22,T18] (  2,  0.00)     ref  ->   x1         "argument with side effect"
+;  V23 cse0         [V23,T22] (  3,  0.00)     int  ->   x0         "CSE - conservative"
+;  V24 cse1         [V24,T20] (  2,  0.00)     ref  ->   x1         "CSE - conservative"
+;  V25 cse2         [V25,T26] (  3,  0.00)     int  ->  x21         "CSE - conservative"
+;  V26 cse3         [V26,T23] (  3,  0.00)     int  ->   x3         "CSE - conservative"
+;  V27 cse4         [V27,T21] (  3,  0.00)   byref  ->   x1         "CSE - conservative"
+;  V28 cse5         [V28,T24] (  3,  0.00)     int  ->  x19         "CSE - conservative"
+;  V29 cse6         [V29,T03] (  3,  2.71)     ref  ->   x1         "CSE - aggressive"
+;  V30 rat0         [V30,T05] (  3,  2.26)     ref  ->   x1         "Spilling to split statement for tree"
+;  V31 rat1         [V31,T01] (  5,  3.76)     ref  ->  x22         class-hnd "replacement local" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
 ;
-; Lcl frame size = 8
+; Lcl frame size = 0
 
 G_M41283_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x30]!
-            stp     x19, x20, [sp, #0x18]
-            str     x21, [sp, #0x28]
+            stp     x19, x20, [sp, #0x10]
+            stp     x21, x22, [sp, #0x20]
             mov     fp, sp
             mov     x19, x0
             ; gcrRegs +[x19]
                        ;; size=20 bbWeight=1 PerfScore 4.00
 G_M41283_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             bl      <unknown method>
-            cbz     w0, G_M41283_IG21
+            cbz     w0, G_M41283_IG24
             ldr     w1, [x19, #0x28]
-            tbnz    w1, #6, G_M41283_IG21
+            tbnz    w1, #6, G_M41283_IG24
             ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
-            cbz     x1, G_M41283_IG11
+            cbz     x1, G_M41283_IG14
                        ;; size=24 bbWeight=1 PerfScore 10.00
 G_M41283_IG03:        ; bbWeight=0.71, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
             movz    x0, #0xD1FFAB1E
@@ -65,17 +67,17 @@ G_M41283_IG03:        ; bbWeight=0.71, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
             movk    x0, #0xD1FFAB1E LSL #32
             bl      CORINFO_HELP_ISINSTANCEOFCLASS
             ; gcrRegs -[x1] +[x0]
-            cbnz    x0, G_M41283_IG22
+            cbnz    x0, G_M41283_IG25
             mov     w20, #1
                        ;; size=24 bbWeight=0.71 PerfScore 2.86
 G_M41283_IG04:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
-            cbz     w20, G_M41283_IG13
+            cbz     w20, G_M41283_IG16
                        ;; size=4 bbWeight=1 PerfScore 1.00
 G_M41283_IG05:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             mov     w21, wzr
             cmp     w20, #0
-            ble     G_M41283_IG13
+            ble     G_M41283_IG16
                        ;; size=12 bbWeight=0.50 PerfScore 1.00
 G_M41283_IG06:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x19, #0x08]
@@ -88,23 +90,42 @@ G_M41283_IG07:        ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            beq     G_M41283_IG12
+            beq     G_M41283_IG15
                        ;; size=24 bbWeight=0.25 PerfScore 1.50
 G_M41283_IG08:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
             ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
+            mov     x22, x1
+            ; gcrRegs +[x22]
+            cbz     x22, G_M41283_IG11
+                       ;; size=12 bbWeight=0.50 PerfScore 2.26
+G_M41283_IG09:        ; bbWeight=0.25, gcrefRegs=480002 {x1 x19 x22}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x22]
+            movz    x2, #0xD1FFAB1E
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #0xD1FFAB1E LSL #32
+            cmp     x0, x2
+            beq     G_M41283_IG11
+                       ;; size=24 bbWeight=0.25 PerfScore 1.50
+G_M41283_IG10:        ; bbWeight=0.13, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x22]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             bl      CORINFO_HELP_CHKCASTCLASS
             ; gcrRegs -[x1] +[x0]
-            ldr     w1, [x0, #0x10]
-            cmp     w21, w1
-            blo     G_M41283_IG10
-                       ;; size=32 bbWeight=0.50 PerfScore 5.01
-G_M41283_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0 x19]
+            mov     x22, x0
+            ; gcrRegs +[x22]
+                       ;; size=20 bbWeight=0.13 PerfScore 0.38
+G_M41283_IG11:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x0]
+            ldr     w0, [x22, #0x10]
+            cmp     w21, w0
+            blo     G_M41283_IG13
+                       ;; size=12 bbWeight=0.50 PerfScore 2.26
+G_M41283_IG12:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x19 x22]
             movz    x0, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -112,26 +133,27 @@ G_M41283_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             blr     x0
             brk_windows #0
                        ;; size=24 bbWeight=0 PerfScore 0.00
-G_M41283_IG10:        ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs +[x0 x19]
-            ldr     x0, [x0, #0x08]
+G_M41283_IG13:        ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs +[x19 x22]
+            ldr     x0, [x22, #0x08]
+            ; gcrRegs +[x0]
             ldr     w1, [x0, #0x08]
             cmp     w21, w1
-            bhs     G_M41283_IG20
+            bhs     G_M41283_IG23
             add     x0, x0, #16
             ; gcrRegs -[x0]
             ; byrRegs +[x0]
             ldr     x0, [x0, w21, UXTW #3]
             ; gcrRegs +[x0]
             ; byrRegs -[x0]
-            b       G_M41283_IG12
+            b       G_M41283_IG15
                        ;; size=28 bbWeight=0 PerfScore 0.00
-G_M41283_IG11:        ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
+G_M41283_IG14:        ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0 x22]
             mov     w20, wzr
             b       G_M41283_IG04
                        ;; size=8 bbWeight=0.29 PerfScore 0.43
-G_M41283_IG12:        ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG15:        ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this
             movk    x1, #0xD1FFAB1E LSL #16
@@ -144,47 +166,47 @@ G_M41283_IG12:        ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
             cmp     w21, w20
             blt     G_M41283_IG06
                        ;; size=36 bbWeight=0.50 PerfScore 5.26
-G_M41283_IG13:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG16:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldrb    w0, [x19, #0x2E]
             cmp     w0, #25
-            bne     G_M41283_IG21
+            bne     G_M41283_IG24
                        ;; size=12 bbWeight=1 PerfScore 4.50
-G_M41283_IG14:        ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG17:        ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
-            mov     x21, x1
-            ; gcrRegs +[x21]
-            cbnz    x21, G_M41283_IG18
+            mov     x22, x1
+            ; gcrRegs +[x22]
+            cbnz    x22, G_M41283_IG21
                        ;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG15:        ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG18:        ; bbWeight=0.00, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x1 x19]
             mov     w2, wzr
-            sub     w19, w20, #1
-            cmp     w19, #0
-            ble     G_M41283_IG21
+            sub     w21, w20, #1
+            cmp     w21, #0
+            ble     G_M41283_IG24
                        ;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG16:        ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
-            ldr     w0, [x21, #0x10]
+G_M41283_IG19:        ; bbWeight=0.00, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+            ldr     w0, [x22, #0x10]
             cmp     w2, w0
-            bhs     G_M41283_IG09
-            ldr     x1, [x21, #0x08]
+            bhs     G_M41283_IG12
+            ldr     x1, [x22, #0x08]
             ; gcrRegs +[x1]
             ldr     w3, [x1, #0x08]
             cmp     w2, w3
-            bhs     G_M41283_IG20
+            bhs     G_M41283_IG23
             add     x1, x1, #16
             ; gcrRegs -[x1]
             ; byrRegs +[x1]
             ldr     x4, [x1, w2, UXTW #3]
             ; gcrRegs +[x4]
-            add     w20, w2, #1
...

coreclr_tests.run.windows.arm64.checked.mch

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

@@ -15,90 +15,89 @@
 ;  V03 loc1         [V03,T06] (  5,  3.77)     ref  ->  x22         class-hnd exact <Internal.TypeSystem.InstantiatedType>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [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,T40] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V07 tmp3         [V07,T39] (  2,  0.73)     ref  ->   x0         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-;  V08 tmp4         [V08,T24] (  3,  1.46)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V09 tmp5         [V09,T48] (  2,  0   )     ref  ->  x19         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2         [V06,T39] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V07 tmp3         [V07,T38] (  2,  0.73)     ref  ->   x0         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+;  V08 tmp4         [V08,T23] (  3,  1.46)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V09 tmp5         [V09,T47] (  2,  0   )     ref  ->  x19         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
 ;  V10 tmp6         [V10,T03] (  7,  5.38)     ref  ->  x23         class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
-;  V11 tmp7         [V11,T16] (  3,  2   )     ref  ->  x21         "guarded devirt return temp"
+;  V11 tmp7         [V11,T15] (  3,  2   )     ref  ->  x21         "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.65)     ref  ->  x25         "guarded devirt return temp"
+;  V13 tmp9         [V13,T09] (  8,  2.65)     ref  ->  x25         "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,T18] (  4,  1.90)     ref  ->  x27         "guarded devirt return temp"
+;  V15 tmp11        [V15,T17] (  4,  1.90)     ref  ->  x27         "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,T23] (  8,  1.56)     ref  ->  x25         "guarded devirt return temp"
+;  V17 tmp13        [V17,T22] (  8,  1.56)     ref  ->  x25         "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    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V21 tmp17        [V21    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V22 tmp18        [V22,T26] (  2,  0.79)     int  ->   x0        
-;  V23 tmp19        [V23,T22] (  3,  1.58)     ref  ->  x20         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;  V22 tmp18        [V22,T25] (  2,  0.79)     int  ->   x0        
+;  V23 tmp19        [V23,T21] (  3,  1.58)     ref  ->  x20         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
 ;* V24 tmp20        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V25 tmp21        [V25,T36] (  3,  0.79)     ref  ->  x26         "guarded devirt return temp"
+;  V25 tmp21        [V25,T35] (  3,  0.79)     ref  ->  x26         "guarded devirt return temp"
 ;* V26 tmp22        [V26    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V27 tmp23        [V27,T37] (  3,  0.79)     ref  ->  x20         "guarded devirt return temp"
-;  V28 tmp24        [V28,T13] (  5,  2.37)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V27 tmp23        [V27,T36] (  3,  0.79)     ref  ->  x20         "guarded devirt return temp"
+;  V28 tmp24        [V28,T12] (  5,  2.37)     ref  ->   x0         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,T38] (  3,  0.79)     ref  ->  x26         "guarded devirt return temp"
-;  V31 tmp27        [V31,T14] (  5,  2.37)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V30 tmp26        [V30,T37] (  3,  0.79)     ref  ->  x26         "guarded devirt return temp"
+;  V31 tmp27        [V31,T13] (  5,  2.37)     ref  ->   x0         single-def "guarded devirt arg 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   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V34 tmp30        [V34    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V35 tmp31        [V35    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V36 tmp32        [V36    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;  V37 tmp33        [V37,T08] (  5,  2.97)     ref  ->   x0         class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-;  V38 tmp34        [V38,T33] (  3,  0.99)     ref  ->  x27         "guarded devirt return temp"
+;  V38 tmp34        [V38,T32] (  3,  0.99)     ref  ->  x27         "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,T20] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V42 tmp38        [V42,T21] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;* V41 tmp37        [V41,T19] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
+;* V42 tmp38        [V42,T20] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
 ;* V43 tmp39        [V43    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
 ;  V44 tmp40        [V44,T05] (  4,  3.97)     ref  ->  x27         class-hnd exact single-def "impAppendStmt" <<unknown class>>
 ;* V45 tmp41        [V45    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V46 tmp42        [V46    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V47 tmp43        [V47    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V48 tmp44        [V48    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V49 tmp45        [V49,T12] (  2,  2.54)     int  ->  x28         "impAppendStmt"
-;  V50 tmp46        [V50,T30] (  4,  1.27)     ref  ->   x0         "guarded devirt return temp"
+;  V49 tmp45        [V49,T11] (  2,  2.54)     int  ->  x28         "impAppendStmt"
+;  V50 tmp46        [V50,T29] (  4,  1.27)     ref  ->   x0         "guarded devirt return temp"
 ;* V51 tmp47        [V51    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-;  V52 tmp48        [V52,T46] (  2,  0.00)   byref  ->  x28         single-def "impAppendStmt"
-;  V53 tmp49        [V53,T47] (  3,  0.00)     int  ->   x0         "guarded devirt return temp"
-;  V54 tmp50        [V54,T45] (  5,  0.00)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V52 tmp48        [V52,T45] (  2,  0.00)   byref  ->  x28         single-def "impAppendStmt"
+;  V53 tmp49        [V53,T46] (  3,  0.00)     int  ->   x0         "guarded devirt return temp"
+;  V54 tmp50        [V54,T44] (  5,  0.00)     ref  ->   x0         single-def "guarded devirt arg temp"
 ;* V55 tmp51        [V55    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
 ;* V56 tmp52        [V56    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V57 tmp53        [V57,T31] (  3,  1.27)     ref  ->   x0         class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+;  V57 tmp53        [V57,T30] (  3,  1.27)     ref  ->   x0         class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
 ;* V58 tmp54        [V58    ] (  0,  0   )  struct (24) zero-ref    "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
 ;  V59 tmp55        [V59    ] (  2,  1.18)     ref  ->  [fp+0x28]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V60 tmp56        [V60,T25] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-;  V61 tmp57        [V61,T15] (  4,  2.31)     ref  ->   x0         class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-;  V62 tmp58        [V62,T35] (  2,  0.46)     int  ->   x0        
-;  V63 tmp59        [V63,T34] (  3,  0.91)     ref  ->  x26         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V60 tmp56        [V60,T24] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+;  V61 tmp57        [V61,T14] (  3,  2.20)     ref  ->   x0         class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+;  V62 tmp58        [V62,T34] (  2,  0.46)     int  ->   x0        
+;  V63 tmp59        [V63,T33] (  3,  0.91)     ref  ->  x26         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
 ;* V64 tmp60        [V64    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V65 tmp61        [V65,T41] (  3,  0.46)     ref  ->  x27         "guarded devirt return temp"
+;  V65 tmp61        [V65,T40] (  3,  0.46)     ref  ->  x27         "guarded devirt return temp"
 ;* V66 tmp62        [V66    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V67 tmp63        [V67,T42] (  3,  0.46)     ref  ->  x26         "guarded devirt return temp"
-;  V68 tmp64        [V68,T27] (  5,  1.37)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V67 tmp63        [V67,T41] (  3,  0.46)     ref  ->  x26         "guarded devirt return temp"
+;  V68 tmp64        [V68,T26] (  5,  1.37)     ref  ->   x0         single-def "guarded devirt arg temp"
 ;* V69 tmp65        [V69    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-;  V70 tmp66        [V70,T43] (  3,  0.46)     ref  ->  x27         "guarded devirt return temp"
-;  V71 tmp67        [V71,T28] (  5,  1.37)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V70 tmp66        [V70,T42] (  3,  0.46)     ref  ->  x27         "guarded devirt return temp"
+;  V71 tmp67        [V71,T27] (  5,  1.37)     ref  ->   x0         single-def "guarded devirt arg temp"
 ;* V72 tmp68        [V72    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
 ;* V73 tmp69        [V73    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V74 tmp70        [V74    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V75 tmp71        [V75    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V76 tmp72        [V76    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V77 tmp73        [V77,T17] (  6,  1.98)     ref  ->  x21         single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
-;  V78 tmp74        [V78,T11] (  8,  2.62)     ref  ->  x22         single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
-;  V79 tmp75        [V79,T29] (  3,  1.35)     int  ->  x24         single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
+;  V77 tmp73        [V77,T16] (  6,  1.98)     ref  ->  x21         single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
+;  V78 tmp74        [V78,T10] (  8,  2.62)     ref  ->  x22         single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
+;  V79 tmp75        [V79,T28] (  3,  1.35)     int  ->  x24         single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
 ;* V80 tmp76        [V80    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V58._typicalMethodDef (fldOffset=0x0)" P-INDEP
 ;* V81 tmp77        [V81    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V58._instantiatedType (fldOffset=0x8)" P-INDEP
 ;* V82 tmp78        [V82    ] (  0,  0   )     int  ->  zero-ref    single-def "field V58._hashcode (fldOffset=0x10)" P-INDEP
 ;  V83 tmp79        [V83    ] (  8,  5.73)  struct (24) [fp+0x10]  do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-;* V84 tmp80        [V84,T32] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V85 tmp81        [V85,T44] (  2,  0.33)     ref  ->   x0         single-def "argument with side effect"
-;  V86 cse0         [V86,T19] (  3,  1.90)     ref  ->   x0         "CSE - moderate"
+;* V84 tmp80        [V84,T31] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;  V85 tmp81        [V85,T43] (  2,  0.33)     ref  ->   x0         single-def "argument with side effect"
+;  V86 cse0         [V86,T18] (  3,  1.90)     ref  ->   x0         "CSE - moderate"
 ;  V87 cse1         [V87,T00] ( 18,  9.80)     ref  ->   x1         multi-def "CSE - aggressive"
 ;  V88 cse2         [V88,T07] ( 10,  3.90)    long  ->  x24         multi-def "CSE - aggressive"
-;  V89 rat0         [V89,T09] (  6,  2.93)     ref  ->   x2         class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
 ;
 ; Lcl frame size = 32
 
@@ -152,7 +151,7 @@ G_M10698_IG06:        ; bbWeight=0.63, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             cmp     x24, x0
-            bne     G_M10698_IG53
+            bne     G_M10698_IG41
             b       G_M10698_IG08
                        ;; size=32 bbWeight=0.63 PerfScore 6.34
 G_M10698_IG07:        ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
@@ -184,7 +183,7 @@ G_M10698_IG11:        ; bbWeight=0.40, gcrefRegs=2E80000 {x19 x21 x22 x23 x25},
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x0, x1
-            bne     G_M10698_IG55
+            bne     G_M10698_IG43
             ldr     x0, [x23, #0x58]
             ; gcrRegs +[x0]
             ldr     x1, [x0]
@@ -192,7 +191,7 @@ G_M10698_IG11:        ; bbWeight=0.40, gcrefRegs=2E80000 {x19 x21 x22 x23 x25},
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG54
+            bne     G_M10698_IG42
             ldr     x20, [x0, #0x08]
             ; gcrRegs +[x20]
                        ;; size=56 bbWeight=0.40 PerfScore 7.12
@@ -203,7 +202,7 @@ G_M10698_IG12:        ; bbWeight=0.40, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x2
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x0, x1
-            bne     G_M10698_IG57
+            bne     G_M10698_IG45
             ldr     x0, [x25, #0x58]
             ; gcrRegs +[x0]
             ldr     x1, [x0]
@@ -211,7 +210,7 @@ G_M10698_IG12:        ; bbWeight=0.40, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x2
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG56
+            bne     G_M10698_IG44
             ldr     x26, [x0, #0x08]
             ; gcrRegs +[x26]
                        ;; size=56 bbWeight=0.40 PerfScore 7.12
@@ -268,7 +267,7 @@ G_M10698_IG17:        ; bbWeight=0.49, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG58
+            bne     G_M10698_IG46
             ldr     x27, [x0, #0x08]
             ; gcrRegs +[x27]
                        ;; size=36 bbWeight=0.49 PerfScore 7.42
@@ -328,7 +327,7 @@ G_M10698_IG20:        ; bbWeight=0.63, gcrefRegs=8600000 {x21 x22 x27}, byrefReg
 G_M10698_IG21:        ; bbWeight=0.63, gcrefRegs=8600000 {x21 x22 x27}, byrefRegs=0000 {}, byref, isz
             ldr     x27, [x27, #0x50]
             ldr     w0, [x22, #0x68]
-            cbz     w0, G_M10698_IG42
+            cbz     w0, G_M10698_IG38
                        ;; size=12 bbWeight=0.63 PerfScore 4.44
 G_M10698_IG22:        ; bbWeight=0.63, gcrefRegs=8600000 {x21 x22 x27}, byrefRegs=0000 {}, byref, isz
             ldr     w28, [x22, #0x68]
@@ -336,10 +335,10 @@ G_M10698_IG22:        ; bbWeight=0.63, gcrefRegs=8600000 {x21 x22 x27}, byrefReg
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             cmp     x24, x0
-            bne     G_M10698_IG44
+            bne     G_M10698_IG48
             ldr     x0, [x21, #0x20]
             ; gcrRegs +[x0]
-            cbz     x0, G_M10698_IG59
+            cbz     x0, G_M10698_IG37
                        ;; size=32 bbWeight=0.63 PerfScore 6.34
 G_M10698_IG23:        ; bbWeight=0.63, gcrefRegs=8600001 {x0 x21 x22 x27}, byrefRegs=0000 {}, byref, isz
             movz    x1, #0xD1FFAB1E      // code for Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int
@@ -362,7 +361,7 @@ G_M10698_IG23:        ; bbWeight=0.63, gcrefRegs=8600001 {x0 x21 x22 x27}, byref
             ldr     x3, [x3]
             blr     x3
             ; gcrRegs -[x0]
-            cbz     w0, G_M10698_IG41
+            cbz     w0, G_M10698_IG40
                        ;; size=72 bbWeight=0.63 PerfScore 12.04
 G_M10698_IG24:        ; bbWeight=0.55, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x21-x22 x27]
@@ -391,7 +390,7 @@ G_M10698_IG26:        ; bbWeight=0.37, gcVars=0000000000000000 {}, gcrefRegs=380
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             cmp     x24, x0
-            bne     G_M10698_IG48
+            bne     G_M10698_IG52
             ldr     x25, [x21, #0x10]
             ; gcrRegs +[x25]
                        ;; size=52 bbWeight=0.37 PerfScore 5.49
@@ -405,7 +404,7 @@ G_M10698_IG28:        ; bbWeight=0.23, gcrefRegs=2300000 {x20 x21 x25}, byrefReg
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x0, x1
-            bne     G_M10698_IG50
+            bne     G_M10698_IG54
             ldr     x0, [x20, #0x58]
             ; gcrRegs +[x0]
             ldr     x1, [x0]
@@ -413,7 +412,7 @@ G_M10698_IG28:        ; bbWeight=0.23, gcrefRegs=2300000 {x20 x21 x25}, byrefReg
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG49
+            bne     G_M10698_IG53
             ldr     x26, [x0, #0x08]
             ; gcrRegs +[x26]
                        ;; size=56 bbWeight=0.23 PerfScore 4.11
@@ -424,7 +423,7 @@ G_M10698_IG29:        ; bbWeight=0.23, gcrefRegs=6300000 {x20 x21 x25 x26}, byre
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x0, x1
-            bne     G_M10698_IG52
+            bne     G_M10698_IG56
             ldr     x0, [x25, #0x58]
             ; gcrRegs +[x0]
...

-40 (-2.31%) : 391679.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

@@ -15,90 +15,89 @@
 ;  V03 loc1         [V03,T06] (  5,  3.79)     ref  ->  x23         class-hnd exact <Internal.TypeSystem.InstantiatedType>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [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,T39] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V07 tmp3         [V07,T38] (  2,  0.71)     ref  ->   x0         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-;  V08 tmp4         [V08,T25] (  3,  1.41)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V09 tmp5         [V09,T48] (  2,  0   )     ref  ->  x19         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2         [V06,T38] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V07 tmp3         [V07,T37] (  2,  0.71)     ref  ->   x0         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+;  V08 tmp4         [V08,T24] (  3,  1.41)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V09 tmp5         [V09,T47] (  2,  0   )     ref  ->  x19         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
 ;  V10 tmp6         [V10,T04] (  7,  5.59)     ref  ->  x24         class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
-;  V11 tmp7         [V11,T17] (  3,  2   )     ref  ->  x22         "guarded devirt return temp"
+;  V11 tmp7         [V11,T16] (  3,  2   )     ref  ->  x22         "guarded devirt return temp"
 ;* V12 tmp8         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-;  V13 tmp9         [V13,T09] (  8,  2.82)     ref  ->  x25         "guarded devirt return temp"
+;  V13 tmp9         [V13,T08] (  8,  2.82)     ref  ->  x25         "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,T18] (  4,  1.94)     ref  ->  x26         "guarded devirt return temp"
+;  V15 tmp11        [V15,T17] (  4,  1.94)     ref  ->  x26         "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,T23] (  8,  1.56)     ref  ->  x25         "guarded devirt return temp"
+;  V17 tmp13        [V17,T22] (  8,  1.56)     ref  ->  x25         "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    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V21 tmp17        [V21    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V22 tmp18        [V22,T24] (  2,  0.84)     int  ->   x0        
-;  V23 tmp19        [V23,T22] (  3,  1.71)     ref  ->  x20         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;  V22 tmp18        [V22,T23] (  2,  0.84)     int  ->   x0        
+;  V23 tmp19        [V23,T21] (  3,  1.71)     ref  ->  x20         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
 ;* V24 tmp20        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V25 tmp21        [V25,T35] (  3,  0.84)     ref  ->  x26         "guarded devirt return temp"
+;  V25 tmp21        [V25,T34] (  3,  0.84)     ref  ->  x26         "guarded devirt return temp"
 ;* V26 tmp22        [V26    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V27 tmp23        [V27,T36] (  3,  0.82)     ref  ->  x20         "guarded devirt return temp"
-;  V28 tmp24        [V28,T14] (  5,  2.42)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V27 tmp23        [V27,T35] (  3,  0.82)     ref  ->  x20         "guarded devirt return temp"
+;  V28 tmp24        [V28,T13] (  5,  2.42)     ref  ->   x0         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,T40] (  3,  0.68)     ref  ->  x26         "guarded devirt return temp"
-;  V31 tmp27        [V31,T16] (  5,  2.04)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V30 tmp26        [V30,T39] (  3,  0.68)     ref  ->  x26         "guarded devirt return temp"
+;  V31 tmp27        [V31,T15] (  5,  2.04)     ref  ->   x0         single-def "guarded devirt arg 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   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V34 tmp30        [V34    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V35 tmp31        [V35    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V36 tmp32        [V36    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V37 tmp33        [V37,T12] (  5,  2.64)     ref  ->   x0         class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-;  V38 tmp34        [V38,T34] (  3,  0.88)     ref  ->  x26         "guarded devirt return temp"
+;  V37 tmp33        [V37,T11] (  5,  2.64)     ref  ->   x0         class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+;  V38 tmp34        [V38,T33] (  3,  0.88)     ref  ->  x26         "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,T20] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V42 tmp38        [V42,T21] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;* V41 tmp37        [V41,T19] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
+;* V42 tmp38        [V42,T20] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
 ;* V43 tmp39        [V43    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
 ;  V44 tmp40        [V44,T05] (  4,  4.04)     ref  ->  x26         class-hnd exact single-def "impAppendStmt" <<unknown class>>
 ;* V45 tmp41        [V45    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V46 tmp42        [V46    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V47 tmp43        [V47    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V48 tmp44        [V48    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V49 tmp45        [V49,T13] (  2,  2.59)     int  ->  x28         "impAppendStmt"
-;  V50 tmp46        [V50,T29] (  4,  1.29)     ref  ->   x0         "guarded devirt return temp"
+;  V49 tmp45        [V49,T12] (  2,  2.59)     int  ->  x28         "impAppendStmt"
+;  V50 tmp46        [V50,T28] (  4,  1.29)     ref  ->   x0         "guarded devirt return temp"
 ;* V51 tmp47        [V51    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-;  V52 tmp48        [V52,T46] (  2,  0.00)   byref  ->  x27         single-def "impAppendStmt"
-;  V53 tmp49        [V53,T47] (  3,  0.00)     int  ->   x0         "guarded devirt return temp"
-;  V54 tmp50        [V54,T45] (  5,  0.00)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V52 tmp48        [V52,T45] (  2,  0.00)   byref  ->  x27         single-def "impAppendStmt"
+;  V53 tmp49        [V53,T46] (  3,  0.00)     int  ->   x0         "guarded devirt return temp"
+;  V54 tmp50        [V54,T44] (  5,  0.00)     ref  ->   x0         single-def "guarded devirt arg temp"
 ;* V55 tmp51        [V55    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
 ;* V56 tmp52        [V56    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V57 tmp53        [V57,T30] (  3,  1.29)     ref  ->   x0         class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+;  V57 tmp53        [V57,T29] (  3,  1.29)     ref  ->   x0         class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
 ;* V58 tmp54        [V58    ] (  0,  0   )  struct (24) zero-ref    "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
 ;  V59 tmp55        [V59    ] (  2,  1.21)     ref  ->  [fp+0x28]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V60 tmp56        [V60,T26] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-;  V61 tmp57        [V61,T15] (  4,  2.26)     ref  ->   x0         class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-;  V62 tmp58        [V62,T37] (  2,  0.46)     int  ->   x0        
-;  V63 tmp59        [V63,T33] (  3,  0.94)     ref  ->  x26         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V60 tmp56        [V60,T25] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+;  V61 tmp57        [V61,T14] (  3,  2.12)     ref  ->   x0         class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+;  V62 tmp58        [V62,T36] (  2,  0.46)     int  ->   x0        
+;  V63 tmp59        [V63,T32] (  3,  0.94)     ref  ->  x26         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
 ;* V64 tmp60        [V64    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V65 tmp61        [V65,T41] (  3,  0.46)     ref  ->  x27         "guarded devirt return temp"
+;  V65 tmp61        [V65,T40] (  3,  0.46)     ref  ->  x27         "guarded devirt return temp"
 ;* V66 tmp62        [V66    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V67 tmp63        [V67,T42] (  3,  0.45)     ref  ->  x26         "guarded devirt return temp"
-;  V68 tmp64        [V68,T28] (  5,  1.32)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V67 tmp63        [V67,T41] (  3,  0.45)     ref  ->  x26         "guarded devirt return temp"
+;  V68 tmp64        [V68,T27] (  5,  1.32)     ref  ->   x0         single-def "guarded devirt arg temp"
 ;* V69 tmp65        [V69    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-;  V70 tmp66        [V70,T43] (  3,  0.37)     ref  ->  x27         "guarded devirt return temp"
-;  V71 tmp67        [V71,T32] (  5,  1.12)     ref  ->   x0         single-def "guarded devirt arg temp"
+;  V70 tmp66        [V70,T42] (  3,  0.37)     ref  ->  x27         "guarded devirt return temp"
+;  V71 tmp67        [V71,T31] (  5,  1.12)     ref  ->   x0         single-def "guarded devirt arg temp"
 ;* V72 tmp68        [V72    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
 ;* V73 tmp69        [V73    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V74 tmp70        [V74    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V75 tmp71        [V75    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V76 tmp72        [V76    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V77 tmp73        [V77,T11] (  8,  2.67)     ref  ->  x22         single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
-;  V78 tmp74        [V78,T10] (  8,  2.67)     ref  ->  x23         single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
-;  V79 tmp75        [V79,T27] (  3,  1.37)     int  ->  x25         single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
+;  V77 tmp73        [V77,T10] (  8,  2.67)     ref  ->  x22         single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
+;  V78 tmp74        [V78,T09] (  8,  2.67)     ref  ->  x23         single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
+;  V79 tmp75        [V79,T26] (  3,  1.37)     int  ->  x25         single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
 ;* V80 tmp76        [V80    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V58._typicalMethodDef (fldOffset=0x0)" P-INDEP
 ;* V81 tmp77        [V81    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V58._instantiatedType (fldOffset=0x8)" P-INDEP
 ;* V82 tmp78        [V82    ] (  0,  0   )     int  ->  zero-ref    single-def "field V58._hashcode (fldOffset=0x10)" P-INDEP
 ;  V83 tmp79        [V83    ] (  8,  5.82)  struct (24) [fp+0x10]  do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-;* V84 tmp80        [V84,T31] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V85 tmp81        [V85,T44] (  2,  0.32)     ref  ->   x0         single-def "argument with side effect"
-;  V86 cse0         [V86,T19] (  3,  1.94)     ref  ->   x0         "CSE - moderate"
+;* V84 tmp80        [V84,T30] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;  V85 tmp81        [V85,T43] (  2,  0.32)     ref  ->   x0         single-def "argument with side effect"
+;  V86 cse0         [V86,T18] (  3,  1.94)     ref  ->   x0         "CSE - moderate"
 ;  V87 cse1         [V87,T00] ( 18,  9.88)     ref  ->   x1         multi-def "CSE - aggressive"
 ;  V88 cse2         [V88,T07] (  6,  4.29)    long  ->  x21         "CSE - aggressive"
-;  V89 rat0         [V89,T08] (  6,  2.83)     ref  ->   x2         class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
 ;
 ; Lcl frame size = 32
 
@@ -149,7 +148,7 @@ G_M10698_IG06:        ; bbWeight=0.65, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs
             ; gcrRegs +[x24]
             ldr     x0, [x22]
             cmp     x0, x21
-            bne     G_M10698_IG55
+            bne     G_M10698_IG49
             b       G_M10698_IG08
                        ;; size=20 bbWeight=0.65 PerfScore 5.50
 G_M10698_IG07:        ; bbWeight=0.41, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
@@ -191,7 +190,7 @@ G_M10698_IG12:        ; bbWeight=0.40, gcrefRegs=3C80000 {x19 x22 x23 x24 x25},
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG56
+            bne     G_M10698_IG50
             ldr     x20, [x0, #0x08]
             ; gcrRegs +[x20]
                        ;; size=32 bbWeight=0.40 PerfScore 4.84
@@ -212,7 +211,7 @@ G_M10698_IG14:        ; bbWeight=0.34, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x2
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG57
+            bne     G_M10698_IG51
             ldr     x26, [x0, #0x08]
             ; gcrRegs +[x26]
                        ;; size=32 bbWeight=0.34 PerfScore 4.08
@@ -266,7 +265,7 @@ G_M10698_IG19:        ; bbWeight=0.44, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG58
+            bne     G_M10698_IG52
             ldr     x26, [x0, #0x08]
             ; gcrRegs +[x26]
             b       G_M10698_IG22
@@ -358,10 +357,10 @@ G_M10698_IG26:        ; bbWeight=0.65, gcrefRegs=4C00000 {x22 x23 x26}, byrefReg
             ldr     w28, [x23, #0x68]
             ldr     x0, [x22]
             cmp     x0, x21
-            bne     G_M10698_IG61
+            bne     G_M10698_IG54
             ldr     x0, [x22, #0x20]
             ; gcrRegs +[x0]
-            cbz     x0, G_M10698_IG59
+            cbz     x0, G_M10698_IG43
                        ;; size=24 bbWeight=0.65 PerfScore 7.44
 G_M10698_IG27:        ; bbWeight=0.65, gcrefRegs=4C00001 {x0 x22 x23 x26}, byrefRegs=0000 {}, byref, isz
             movz    x1, #0xD1FFAB1E      // code for Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int
@@ -410,7 +409,7 @@ G_M10698_IG30:        ; bbWeight=0.35, gcVars=0000000000000000 {}, gcrefRegs=580
             beq     G_M10698_IG41
             ldr     x0, [x22]
             cmp     x0, x21
-            bne     G_M10698_IG51
+            bne     G_M10698_IG58
             ldr     x25, [x22, #0x10]
             ; gcrRegs +[x25]
                        ;; size=40 bbWeight=0.35 PerfScore 4.77
@@ -424,7 +423,7 @@ G_M10698_IG32:        ; bbWeight=0.23, gcrefRegs=2500000 {x20 x22 x25}, byrefReg
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x0, x1
-            bne     G_M10698_IG53
+            bne     G_M10698_IG47
                        ;; size=24 bbWeight=0.23 PerfScore 1.38
 G_M10698_IG33:        ; bbWeight=0.22, gcrefRegs=2500000 {x20 x22 x25}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x20, #0x58]
@@ -434,7 +433,7 @@ G_M10698_IG33:        ; bbWeight=0.22, gcrefRegs=2500000 {x20 x22 x25}, byrefReg
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG52
+            bne     G_M10698_IG59
             ldr     x26, [x0, #0x08]
             ; gcrRegs +[x26]
                        ;; size=32 bbWeight=0.22 PerfScore 2.64
@@ -445,7 +444,7 @@ G_M10698_IG34:        ; bbWeight=0.23, gcrefRegs=6500000 {x20 x22 x25 x26}, byre
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x0, x1
-            bne     G_M10698_IG54
+            bne     G_M10698_IG48
                        ;; size=24 bbWeight=0.23 PerfScore 1.38
 G_M10698_IG35:        ; bbWeight=0.19, gcrefRegs=6500000 {x20 x22 x25 x26}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x25, #0x58]
@@ -455,7 +454,7 @@ G_M10698_IG35:        ; bbWeight=0.19, gcrefRegs=6500000 {x20 x22 x25 x26}, byre
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            bne     G_M10698_IG63
+            bne     G_M10698_IG60
             ldr     x27, [x0, #0x08]
             ; gcrRegs +[x27]
                        ;; size=32 bbWeight=0.19 PerfScore 2.23
@@ -517,20 +516,6 @@ G_M10698_IG41:        ; bbWeight=0.35, gcVars=0000000000000000 {}, gcrefRegs=180
             ldr     x1, [x1, #0x18]
             blr     x1
             ldrsb   wzr, [x0]
-            mov     x2, x0
-            ; gcrRegs +[x2]
-            cbz     x2, G_M10698_IG48
-                       ;; size=32 bbWeight=0.35 PerfScore 5.30
-G_M10698_IG42:        ; bbWeight=0.18, gcrefRegs=180005 {x0 x2 x19 x20}, byrefRegs=0000 {}, byref, isz
-            ldr     x1, [x2]
-            movz    x2, #0xD1FFAB1E
-            ; gcrRegs -[x2]
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            cmp     x1, x2
-            beq     G_M10698_IG47
-                       ;; size=24 bbWeight=0.18 PerfScore 1.06
-G_M10698_IG43:        ; bbWeight=0.07, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
             mov     x1, x0
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
@@ -539,12 +524,40 @@ G_M10698_IG43:        ; bbWeight=0.07, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=
             movk    x0, #0xD1FFAB1E LSL #32
             bl      CORINFO_HELP_ISINSTANCEOFCLASS
             ; gcrRegs -[x1] +[x0]
...

+0 (0.00%) : 221274.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 3210
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T00] (  6,  5.21)     ref  ->   x0         class-hnd single-def <System.Object>
+;  V00 arg0         [V00,T00] (  6,  5.15)     ref  ->   x0         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,  8   )     ref  ->  registers   class-hnd "replacement local" <System.Collections.IEnumerable>
 ;
 ; Lcl frame size = 0
 
-G_M8290_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M8290_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x10]!
             mov     fp, sp
                        ;; size=8 bbWeight=1 PerfScore 1.50
@@ -30,7 +30,7 @@ G_M8290_IG02:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
             beq     G_M8290_IG08
             mov     x2, x0
             ; gcrRegs +[x2]
-            cbz     x2, G_M8290_IG06
+            cbz     x2, G_M8290_IG05
                        ;; size=36 bbWeight=1 PerfScore 8.50
 G_M8290_IG03:        ; bbWeight=0.50, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
             ldr     x1, [x2]
@@ -39,9 +39,26 @@ G_M8290_IG03:        ; bbWeight=0.50, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {},
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            beq     G_M8290_IG05
+            bne     G_M8290_IG07
                        ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M8290_IG04:        ; bbWeight=0.21, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M8290_IG04:        ; bbWeight=0.35, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0]
+            mov     x0, xzr
+            ; gcrRegs +[x0]
+            mov     x2, x0
+            ; gcrRegs +[x2]
+                       ;; size=8 bbWeight=0.35 PerfScore 0.35
+G_M8290_IG05:        ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0]
+            mov     x0, x2
+            ; gcrRegs +[x0]
+                       ;; size=4 bbWeight=1 PerfScore 0.50
+G_M8290_IG06:        ; bbWeight=1, epilog, nogc, extend
+            ldp     fp, lr, [sp], #0x10
+            ret     lr
+                       ;; size=8 bbWeight=1 PerfScore 2.00
+G_M8290_IG07:        ; bbWeight=0.15, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs -[x2]
             mov     x1, x0
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
@@ -52,34 +69,18 @@ G_M8290_IG04:        ; bbWeight=0.21, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, by
             ; gcrRegs -[x1] +[x0]
             mov     x2, x0
             ; gcrRegs +[x2]
-            b       G_M8290_IG06
-                       ;; size=28 bbWeight=0.21 PerfScore 0.95
-G_M8290_IG05:        ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            b       G_M8290_IG05
+                       ;; size=28 bbWeight=0.15 PerfScore 0.67
+G_M8290_IG08:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0 x2]
             mov     x0, xzr
-            ; gcrRegs +[x0]
-            mov     x2, x0
-            ; gcrRegs +[x2]
-                       ;; size=8 bbWeight=0.29 PerfScore 0.29
-G_M8290_IG06:        ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
-            mov     x0, x2
-            ; gcrRegs +[x0]
-                       ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8290_IG07:        ; bbWeight=1, epilog, nogc, extend
+                       ;; size=4 bbWeight=0 PerfScore 0.00
+G_M8290_IG09:        ; bbWeight=0, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             ret     lr
-                       ;; size=8 bbWeight=1 PerfScore 2.00
-G_M8290_IG08:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
-            ; gcrRegs -[x0 x2]
-            mov     x0, xzr
-                       ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8290_IG09:        ; bbWeight=1, epilog, nogc, extend
-            ldp     fp, lr, [sp], #0x10
-            ret     lr
-                       ;; size=8 bbWeight=1 PerfScore 2.00
+                       ;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 128, prolog size 8, PerfScore 19.24, instruction count 32, allocated bytes for code 128 (MethodHash=a242df9d) for method Xunit.Sdk.CollectionTrackerExtensions:AsNonStringEnumerable(System.Object):System.Collections.IEnumerable (Tier1)
+; Total bytes of code 128, prolog size 8, PerfScore 16.52, instruction count 32, allocated bytes for code 128 (MethodHash=a242df9d) for method Xunit.Sdk.CollectionTrackerExtensions:AsNonStringEnumerable(System.Object):System.Collections.IEnumerable (Tier1)
 ; ============================================================
 
 Unwind Info:

libraries_tests.run.windows.arm64.Release.mch

-4 (-0.42%) : 308650.dasm - System.Linq.Enumerable:TryGetFirstint:int (Tier1)

@@ -9,7 +9,7 @@
 ; 1 inlinees with PGO data; 11 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] ( 13,  7.30)     ref  ->  x19         class-hnd single-def <System.Collections.Generic.IEnumerable`1[int]>
+;  V00 arg0         [V00,T01] ( 13,  7.26)     ref  ->  x19         class-hnd single-def <System.Collections.Generic.IEnumerable`1[int]>
 ;  V01 arg1         [V01,T04] (  6,  3   )   byref  ->  [fp+0x20]  EH-live single-def
 ;  V02 loc0         [V02,T09] (  3,  2.20)     ref  ->   x0         class-hnd single-def <System.Linq.IPartition`1[int]>
 ;  V03 loc1         [V03,T14] (  4,  1.67)     ref  ->  x20         class-hnd single-def <System.Collections.Generic.IList`1[int]>
@@ -54,10 +54,10 @@ G_M29477_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[x19]
                        ;; size=28 bbWeight=1 PerfScore 5.50
 G_M29477_IG02:        ; bbWeight=1, gcVars=0000000000000010 {V01}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
-            cbz     x19, G_M29477_IG43
+            cbz     x19, G_M29477_IG45
             mov     x0, x19
             ; gcrRegs +[x0]
-            cbz     x0, G_M29477_IG06
+            cbz     x0, G_M29477_IG05
                        ;; size=12 bbWeight=1 PerfScore 2.50
 G_M29477_IG03:        ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x0]
@@ -66,54 +66,42 @@ G_M29477_IG03:        ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x0, x2
-            beq     G_M29477_IG05
+            bne     G_M29477_IG40
                        ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M29477_IG04:        ; bbWeight=0.19, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            mov     x1, x19
-            ; gcrRegs +[x1]
-            movz    x0, #0xD1FFAB1E
-            movk    x0, #0xD1FFAB1E LSL #16
-            movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
-            ; gcrRegs -[x1] +[x0]
-            ; gcr arg pop 0
-            b       G_M29477_IG06
-                       ;; size=24 bbWeight=0.19 PerfScore 0.78
-G_M29477_IG05:        ; bbWeight=0.30, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
+G_M29477_IG04:        ; bbWeight=0.35, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x0, xzr
             ; gcrRegs +[x0]
-                       ;; size=4 bbWeight=0.30 PerfScore 0.15
-G_M29477_IG06:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
-            cbnz    x0, G_M29477_IG15
+                       ;; size=4 bbWeight=0.35 PerfScore 0.17
+G_M29477_IG05:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+            cbnz    x0, G_M29477_IG14
                        ;; size=4 bbWeight=1 PerfScore 1.00
-G_M29477_IG07:        ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M29477_IG06:        ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
             mov     x20, x19
             ; gcrRegs +[x20]
-            cbz     x20, G_M29477_IG10
+            cbz     x20, G_M29477_IG09
                        ;; size=8 bbWeight=0.80 PerfScore 1.20
-G_M29477_IG08:        ; bbWeight=0.40, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M29477_IG07:        ; bbWeight=0.40, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x20]
             movz    x2, #0xD1FFAB1E
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x0, x2
-            bne     G_M29477_IG12
+            bne     G_M29477_IG11
                        ;; size=24 bbWeight=0.40 PerfScore 2.41
-G_M29477_IG09:        ; bbWeight=0.27, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M29477_IG08:        ; bbWeight=0.27, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x20]
             mov     x20, xzr
             ; gcrRegs +[x20]
                        ;; size=4 bbWeight=0.27 PerfScore 0.13
-G_M29477_IG10:        ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
-            cbz     x20, G_M29477_IG13
+G_M29477_IG09:        ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+            cbz     x20, G_M29477_IG12
                        ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M29477_IG11:        ; bbWeight=0.06, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M29477_IG10:        ; bbWeight=0.06, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x19]
-            b       G_M29477_IG41
+            b       G_M29477_IG42
                        ;; size=4 bbWeight=0.06 PerfScore 0.06
-G_M29477_IG12:        ; bbWeight=0.13, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M29477_IG11:        ; bbWeight=0.13, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x20] +[x19]
             mov     x1, x19
             ; gcrRegs +[x1]
@@ -125,21 +113,21 @@ G_M29477_IG12:        ; bbWeight=0.13, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             ; gcr arg pop 0
             mov     x20, x0
             ; gcrRegs +[x20]
-            b       G_M29477_IG10
+            b       G_M29477_IG09
                        ;; size=28 bbWeight=0.13 PerfScore 0.60
-G_M29477_IG13:        ; bbWeight=0.74, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M29477_IG12:        ; bbWeight=0.74, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0 x20]
             ldr     x0, [x19]
             movz    x21, #0xD1FFAB1E
             movk    x21, #0xD1FFAB1E LSL #16
             movk    x21, #0xD1FFAB1E LSL #32
             cmp     x0, x21
-            bne     G_M29477_IG17
+            bne     G_M29477_IG16
                        ;; size=24 bbWeight=0.74 PerfScore 4.43
-G_M29477_IG14:        ; bbWeight=0.54, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            b       G_M29477_IG33
+G_M29477_IG13:        ; bbWeight=0.54, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            b       G_M29477_IG32
                        ;; size=4 bbWeight=0.54 PerfScore 0.54
-G_M29477_IG15:        ; bbWeight=0.20, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M29477_IG14:        ; bbWeight=0.20, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x19] +[x0]
             ldr     x1, [fp, #0x20]    // [V01 arg1]
             ; byrRegs +[x1]
@@ -153,13 +141,13 @@ G_M29477_IG15:        ; bbWeight=0.20, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
             ; byrRegs -[x1]
             ; gcr arg pop 0
                        ;; size=24 bbWeight=0.20 PerfScore 1.48
-G_M29477_IG16:        ; bbWeight=0.20, epilog, nogc, extend
+G_M29477_IG15:        ; bbWeight=0.20, epilog, nogc, extend
             ldp     x21, x22, [sp, #0x40]
             ldp     x19, x20, [sp, #0x30]
             ldp     fp, lr, [sp], #0x50
             ret     lr
                        ;; size=16 bbWeight=0.20 PerfScore 0.79
-G_M29477_IG17:        ; bbWeight=0.20, gcVars=0000000000000010 {V01}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M29477_IG16:        ; bbWeight=0.20, gcVars=0000000000000010 {V01}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs +[x19]
             ; GC ptr vars +{V01 V04}
             mov     x0, x19
@@ -174,22 +162,22 @@ G_M29477_IG17:        ; bbWeight=0.20, gcVars=0000000000000010 {V01}, gcrefRegs=
             mov     x22, x0
             ; gcrRegs +[x22]
                        ;; size=28 bbWeight=0.20 PerfScore 1.30
-G_M29477_IG18:        ; bbWeight=0.74, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M29477_IG17:        ; bbWeight=0.74, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
             str     x22, [fp, #0x18]   // [V04 loc2]
                        ;; size=4 bbWeight=0.74 PerfScore 0.74
-G_M29477_IG19:        ; bbWeight=0.74, gcVars=0000000000020010 {V01 V04}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M29477_IG18:        ; bbWeight=0.74, gcVars=0000000000020010 {V01 V04}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz
             ldr     x1, [x22]
             cmp     x1, x21
-            bne     G_M29477_IG26
+            bne     G_M29477_IG25
                        ;; size=12 bbWeight=0.74 PerfScore 3.33
-G_M29477_IG20:        ; bbWeight=0.58, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+G_M29477_IG19:        ; bbWeight=0.58, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
             ldr     w1, [x22, #0x0C]
             sub     w2, w1, #2
             cmn     w2, #2
-            ble     G_M29477_IG25
+            ble     G_M29477_IG24
             cmp     w1, #1
-            bne     G_M29477_IG21
+            bne     G_M29477_IG20
             ldr     x0, [x22, #0x18]
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for System.Linq.Enumerable:ToArray[int](System.Collections.Generic.IEnumerable`1[int]):int[]
@@ -210,16 +198,16 @@ G_M29477_IG20:        ; bbWeight=0.58, gcrefRegs=400000 {x22}, byrefRegs=0000 {}
             add     w0, w0, #2
             str     w0, [x22, #0x0C]
                        ;; size=72 bbWeight=0.58 PerfScore 12.55
-G_M29477_IG21:        ; bbWeight=0.58, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+G_M29477_IG20:        ; bbWeight=0.58, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
             ldr     w11, [x22, #0x0C]
             sub     w1, w11, #3
             cmn     w1, #1
-            beq     G_M29477_IG25
+            beq     G_M29477_IG24
             ldr     x2, [x22, #0x20]
             ; gcrRegs +[x2]
             ldr     w3, [x2, #0x08]
             cmp     w1, w3
-            bhs     G_M29477_IG24
+            bhs     G_M29477_IG23
             add     x2, x2, #16
             ; gcrRegs -[x2]
             ; byrRegs +[x2]
@@ -228,7 +216,7 @@ G_M29477_IG21:        ; bbWeight=0.58, gcrefRegs=400000 {x22}, byrefRegs=0000 {}
             sub     w11, w11, #1
             str     w11, [x22, #0x0C]
                        ;; size=52 bbWeight=0.58 PerfScore 10.80
-G_M29477_IG22:        ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+G_M29477_IG21:        ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
             ; byrRegs -[x2]
             mov     w11, #1
             ldr     x1, [fp, #0x20]    // [V01 arg1]
@@ -236,27 +224,27 @@ G_M29477_IG22:        ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}
             strb    w11, [x1]
             ldr     x11, [x22]
             cmp     x11, x21
-            bne     G_M29477_IG28
+            bne     G_M29477_IG27
                        ;; size=24 bbWeight=0.40 PerfScore 3.22
-G_M29477_IG23:        ; bbWeight=0.25, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M29477_IG22:        ; bbWeight=0.25, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
             ; byrRegs -[x1]
             ldr     w20, [x22, #0x10]
-            b       G_M29477_IG29
+            b       G_M29477_IG28
                        ;; size=8 bbWeight=0.25 PerfScore 1.01
-G_M29477_IG24:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29477_IG23:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x22]
             bl      CORINFO_HELP_RNGCHKFAIL
             ; gcr arg pop 0
                        ;; size=4 bbWeight=0 PerfScore 0.00
-G_M29477_IG25:        ; bbWeight=0.58, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M29477_IG24:        ; bbWeight=0.58, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
             ; gcrRegs +[x22]
             str     xzr, [x22, #0x20]
             str     wzr, [x22, #0x10]
             movn    w11, #0
             str     w11, [x22, #0x0C]
-            b       G_M29477_IG36
+            b       G_M29477_IG35
                        ;; size=20 bbWeight=0.58 PerfScore 2.63
-G_M29477_IG26:        ; bbWeight=0.16, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+G_M29477_IG25:        ; bbWeight=0.16, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
             mov     x0, x22
             ; gcrRegs +[x0]
             movz    x11, #0xD1FFAB1E      // code for <unknown method>
@@ -266,12 +254,12 @@ G_M29477_IG26:        ; bbWeight=0.16, gcrefRegs=400000 {x22}, byrefRegs=0000 {}
             blr     x1
             ; gcrRegs -[x0]
             ; gcr arg pop 0
-            cbz     w0, G_M29477_IG36
+            cbz     w0, G_M29477_IG35
                        ;; size=28 bbWeight=0.16 PerfScore 1.09
-G_M29477_IG27:        ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
-            b       G_M29477_IG22
+G_M29477_IG26:        ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+            b       G_M29477_IG21
                        ;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M29477_IG28:        ; bbWeight=0.15, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M29477_IG27:        ; bbWeight=0.15, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
             mov     x0, x22
             ; gcrRegs +[x0]
             movz    x11, #0xD1FFAB1E      // code for <unknown method>
@@ -283,35 +271,35 @@ G_M29477_IG28:        ; bbWeight=0.15, gcrefRegs=400000 {x22}, byrefRegs=0000 {}
             ; gcr arg pop 0
             sxtw    w20, w0
                        ;; size=28 bbWeight=0.15 PerfScore 0.97
...

-4 (-0.18%) : 538090.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)

@@ -204,7 +204,7 @@ G_M58093_IG11:        ; bbWeight=0.75, gcrefRegs=100001 {x0 x20}, byrefRegs=0000
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x21, x1
-            beq     G_M58093_IG33
+            beq     G_M58093_IG26
                        ;; size=20 bbWeight=0.75 PerfScore 2.24
 G_M58093_IG12:        ; bbWeight=0.37, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
             b       G_M58093_IG19
@@ -297,7 +297,7 @@ G_M58093_IG16:        ; bbWeight=0.02, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x0, x1
-            bne     G_M58093_IG30
+            bne     G_M58093_IG23
             mov     x0, x27
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for System.Reflection.RuntimeMethodInfo:get_DeclaringType():System.Type:this
@@ -340,23 +340,23 @@ G_M58093_IG19:        ; bbWeight=0.75, gcrefRegs=100001 {x0 x20}, byrefRegs=0000
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x21, x1
-            beq     G_M58093_IG34
+            beq     G_M58093_IG27
             movz    x22, #0xD1FFAB1E
             movk    x22, #0xD1FFAB1E LSL #16
             movk    x22, #0xD1FFAB1E LSL #32
             cmp     x21, x22
-            beq     G_M58093_IG29
+            beq     G_M58093_IG22
             add     x1, x22, #0xD1FFAB1E
             cmp     x21, x1
-            beq     G_M58093_IG29
+            beq     G_M58093_IG22
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x21, x1
-            beq     G_M58093_IG32
+            beq     G_M58093_IG25
                        ;; size=72 bbWeight=0.75 PerfScore 8.22
 G_M58093_IG20:        ; bbWeight=0.37, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
-            b       G_M58093_IG35
+            b       G_M58093_IG28
                        ;; size=4 bbWeight=0.37 PerfScore 0.37
 G_M58093_IG21:        ; bbWeight=0, gcrefRegs=8000000 {x27}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0 x20] +[x27]
@@ -379,22 +379,323 @@ G_M58093_IG21:        ; bbWeight=0, gcrefRegs=8000000 {x27}, byrefRegs=0000 {},
             ; gcrRegs +[x1]
             mov     x19, x1
             ; gcrRegs +[x19]
-            cbz     x19, G_M58093_IG31
+            cbz     x19, G_M58093_IG24
             ldr     x0, [x19]
             ; gcrRegs -[x0]
             movz    x2, #0xD1FFAB1E
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x0, x2
-            beq     G_M58093_IG31
+            beq     G_M58093_IG24
             mov     x0, x2
             bl      CORINFO_HELP_CHKCASTCLASS_SPECIAL
             ; gcrRegs -[x1 x19] +[x0]
             ; gcr arg pop 0
             brk_windows #0
                        ;; size=88 bbWeight=0 PerfScore 0.00
-G_M58093_IG22:        ; bbWeight=0, gcrefRegs=2200000 {x21 x25}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0] +[x21 x25]
+G_M58093_IG22:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+            movz    x1, #0xD1FFAB1E      // code for Xunit.Internal.ArgumentFormatter:FormatDateTimeValue(System.Object):System.String
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            ldr     x1, [x1]
+            blr     x1
+            ; gcr arg pop 0
+            str     x0, [fp, #0x10]    // [V09 loc7]
+            ; GC ptr vars +{V09}
+            b       G_M58093_IG51
+                       ;; size=28 bbWeight=0 PerfScore 0.00
+G_M58093_IG23:        ; bbWeight=0, gcrefRegs=8100000 {x20 x27}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0] +[x20 x27]
+            ; GC ptr vars -{V09}
+            mov     x0, x27
+            ; gcrRegs +[x0]
+            ldr     x1, [x27]
+            ldr     x1, [x1, #0x48]
+            ldr     x1, [x1, #0x38]
+            blr     x1
+            ; gcr arg pop 0
+            b       G_M58093_IG17
+                       ;; size=24 bbWeight=0 PerfScore 0.00
+G_M58093_IG24:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0 x20 x27] +[x19]
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            cmp     x19, #0
+            csel    x19, x19, x0, ne
+            str     x19, [fp, #0x10]   // [V09 loc7]
+            ; GC ptr vars +{V09}
+            b       G_M58093_IG51
+                       ;; size=28 bbWeight=0 PerfScore 0.00
+G_M58093_IG25:        ; bbWeight=0.75, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x19] +[x0]
+            ; GC ptr vars -{V09}
+            mov     x1, x0
+            ; gcrRegs +[x1]
+            movz    x1, #0xD1FFAB1E      // code for Xunit.Internal.ArgumentFormatter:FormatStringValue(System.String):System.String
+            ; gcrRegs -[x1]
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            ldr     x1, [x1]
+            blr     x1
+            ; gcr arg pop 0
+            str     x0, [fp, #0x10]    // [V09 loc7]
+            ; GC ptr vars +{V09}
+            b       G_M58093_IG51
+                       ;; size=32 bbWeight=0.75 PerfScore 5.98
+G_M58093_IG26:        ; bbWeight=0.75, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+            ; GC ptr vars -{V09}
+            movz    x1, #0xD1FFAB1E      // code for Xunit.Internal.ArgumentFormatter:FormatFloatValue(System.Object):System.String
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            ldr     x1, [x1]
+            blr     x1
+            ; gcr arg pop 0
+            str     x0, [fp, #0x10]    // [V09 loc7]
+            ; GC ptr vars +{V09}
+            b       G_M58093_IG51
+                       ;; size=28 bbWeight=0.75 PerfScore 5.61
+G_M58093_IG27:        ; bbWeight=0.75, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+            ; GC ptr vars -{V09}
+            movz    x1, #0xD1FFAB1E      // code for Xunit.Internal.ArgumentFormatter:FormatDoubleValue(System.Object):System.String
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            ldr     x1, [x1]
+            blr     x1
+            ; gcr arg pop 0
+            str     x0, [fp, #0x10]    // [V09 loc7]
+            ; GC ptr vars +{V09}
+            b       G_M58093_IG51
+                       ;; size=28 bbWeight=0.75 PerfScore 5.61
+G_M58093_IG28:        ; bbWeight=0.58, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs +[x20]
+            ; GC ptr vars -{V09}
+            mov     x2, x0
+            ; gcrRegs +[x2]
+            cbz     x2, G_M58093_IG31
+                       ;; size=8 bbWeight=0.58 PerfScore 0.86
+G_M58093_IG29:        ; bbWeight=0.29, gcrefRegs=100005 {x0 x2 x20}, byrefRegs=0000 {}, byref, isz
+            ldr     x1, [x2]
+            movz    x2, #0xD1FFAB1E
+            ; gcrRegs -[x2]
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #0xD1FFAB1E LSL #32
+            cmp     x1, x2
+            bne     G_M58093_IG38
+                       ;; size=24 bbWeight=0.29 PerfScore 1.73
+G_M58093_IG30:        ; bbWeight=0.24, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
+            mov     x2, xzr
+            ; gcrRegs +[x2]
+                       ;; size=4 bbWeight=0.24 PerfScore 0.12
+G_M58093_IG31:        ; bbWeight=0.58, gcrefRegs=100005 {x0 x2 x20}, byrefRegs=0000 {}, byref, isz
+            cbnz    x2, G_M58093_IG37
+                       ;; size=4 bbWeight=0.58 PerfScore 0.58
+G_M58093_IG32:        ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x2]
+            mov     x21, x20
+            ; gcrRegs +[x21]
+            movz    x22, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
+            movk    x22, #0xD1FFAB1E LSL #16
+            movk    x22, #0xD1FFAB1E LSL #32
+            ldr     x1, [x22]
+            ; gcrRegs +[x1]
+            cbz     x1, G_M58093_IG35
+            ldr     x1, [x20]
+            ; gcrRegs -[x1]
+            movz    x2, #0xD1FFAB1E
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #0xD1FFAB1E LSL #32
+            cmp     x1, x2
+            bne     G_M58093_IG44
+            mov     x0, x20
+            movz    x1, #0xD1FFAB1E      // code for System.RuntimeType:GetInterfaces():System.Type[]:this
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            ldr     x1, [x1]
+            blr     x1
+            ; gcr arg pop 0
+            mov     x23, x0
+            ; gcrRegs +[x23]
+                       ;; size=76 bbWeight=0.50 PerfScore 9.22
+G_M58093_IG33:        ; bbWeight=0.50, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x0]
+            ldr     x24, [x22]
+            ; gcrRegs +[x24]
+            mov     x1, x23
+            ; gcrRegs +[x1]
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            ; gcrRegs -[x1] +[x0]
+            ; gcr arg pop 0
+            cbz     x0, G_M58093_IG46
+            mov     x1, x24
+            ; gcrRegs +[x1]
+            movz    x11, #0xD1FFAB1E      // code for <unknown method>
+            movk    x11, #0xD1FFAB1E LSL #16
+            movk    x11, #0xD1FFAB1E LSL #32
+            ldr     x2, [x11]
+            blr     x2
+            ; gcrRegs -[x0-x1 x23-x24]
+            ; gcr arg pop 0
+                       ;; size=52 bbWeight=0.50 PerfScore 6.48
+G_M58093_IG34:        ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+            cbnz    w0, G_M58093_IG45
+                       ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M58093_IG35:        ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+            mov     x0, x20
+            ; gcrRegs +[x0]
+            ldr     x1, [x20]
+            ldr     x1, [x1, #0x80]
+            ldr     x1, [x1, #0x08]
+            blr     x1
+            ; gcrRegs -[x0]
+            ; gcr arg pop 0
+            cbz     w0, G_M58093_IG39
+                       ;; size=24 bbWeight=0.50 PerfScore 5.73
+G_M58093_IG36:        ; bbWeight=0.48, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x20]
+            ldr     x0, [fp, #0x18]    // [V00 arg0]
+            ; gcrRegs +[x0]
+            mov     x1, x21
+            ; gcrRegs +[x1]
+            movz    x2, #0xD1FFAB1E      // code for Xunit.Internal.ArgumentFormatter:FormatValueTypeValue(System.Object,System.Reflection.TypeInfo):System.String
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #0xD1FFAB1E LSL #32
+            ldr     x2, [x2]
+            blr     x2
+            ; gcrRegs -[x1 x21]
+            ; gcr arg pop 0
+            str     x0, [fp, #0x10]    // [V09 loc7]
+            ; GC ptr vars +{V09}
+            b       G_M58093_IG51
+                       ;; size=36 bbWeight=0.48 PerfScore 4.76
+G_M58093_IG37:        ; bbWeight=0.08, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0] +[x2]
+            ; GC ptr vars -{V09}
...

+0 (0.00%) : 421165.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 255428
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T00] (  6,  5.19)     ref  ->   x0         class-hnd single-def <System.Object>
+;  V00 arg0         [V00,T00] (  6,  5.15)     ref  ->   x0         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,  8.00)     ref  ->  registers   class-hnd "replacement local" <System.Collections.IEnumerable>
 ;
 ; Lcl frame size = 0
 
-G_M8290_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M8290_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x10]!
             mov     fp, sp
                        ;; size=8 bbWeight=1 PerfScore 1.50
@@ -32,7 +32,7 @@ G_M8290_IG02:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
 G_M8290_IG03:        ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
             mov     x2, x0
             ; gcrRegs +[x2]
-            cbz     x2, G_M8290_IG07
+            cbz     x2, G_M8290_IG06
                        ;; size=8 bbWeight=1.00 PerfScore 1.50
 G_M8290_IG04:        ; bbWeight=0.50, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
             ldr     x1, [x2]
@@ -41,9 +41,26 @@ G_M8290_IG04:        ; bbWeight=0.50, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {},
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x1, x2
-            beq     G_M8290_IG06
+            bne     G_M8290_IG08
                        ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M8290_IG05:        ; bbWeight=0.19, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M8290_IG05:        ; bbWeight=0.35, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0]
+            mov     x0, xzr
+            ; gcrRegs +[x0]
+            mov     x2, x0
+            ; gcrRegs +[x2]
+                       ;; size=8 bbWeight=0.35 PerfScore 0.35
+G_M8290_IG06:        ; bbWeight=1.00, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0]
+            mov     x0, x2
+            ; gcrRegs +[x0]
+                       ;; size=4 bbWeight=1.00 PerfScore 0.50
+G_M8290_IG07:        ; bbWeight=1.00, epilog, nogc, extend
+            ldp     fp, lr, [sp], #0x10
+            ret     lr
+                       ;; size=8 bbWeight=1.00 PerfScore 2.00
+G_M8290_IG08:        ; bbWeight=0.15, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs -[x2]
             mov     x1, x0
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
@@ -54,25 +71,9 @@ G_M8290_IG05:        ; bbWeight=0.19, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, by
             ; gcrRegs -[x1] +[x0]
             mov     x2, x0
             ; gcrRegs +[x2]
-            b       G_M8290_IG07
-                       ;; size=28 bbWeight=0.19 PerfScore 0.88
-G_M8290_IG06:        ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0 x2]
-            mov     x0, xzr
-            ; gcrRegs +[x0]
-            mov     x2, x0
-            ; gcrRegs +[x2]
-                       ;; size=8 bbWeight=0.30 PerfScore 0.30
-G_M8290_IG07:        ; bbWeight=1.00, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
-            mov     x0, x2
-            ; gcrRegs +[x0]
-                       ;; size=4 bbWeight=1.00 PerfScore 0.50
-G_M8290_IG08:        ; bbWeight=1.00, epilog, nogc, extend
-            ldp     fp, lr, [sp], #0x10
-            ret     lr
-                       ;; size=8 bbWeight=1.00 PerfScore 2.00
-G_M8290_IG09:        ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+            b       G_M8290_IG06
+                       ;; size=28 bbWeight=0.15 PerfScore 0.67
+G_M8290_IG09:        ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0 x2]
             mov     x0, xzr
                        ;; size=4 bbWeight=0.00 PerfScore 0.00
@@ -81,7 +82,7 @@ G_M8290_IG10:        ; bbWeight=0.00, epilog, nogc, extend
             ret     lr
                        ;; size=8 bbWeight=0.00 PerfScore 0.00
 
-; Total bytes of code 128, prolog size 8, PerfScore 16.68, instruction count 32, allocated bytes for code 128 (MethodHash=a242df9d) for method Xunit.Sdk.CollectionTrackerExtensions:AsNonStringEnumerable(System.Object):System.Collections.IEnumerable (Tier1)
+; Total bytes of code 128, prolog size 8, PerfScore 16.52, instruction count 32, allocated bytes for code 128 (MethodHash=a242df9d) for method Xunit.Sdk.CollectionTrackerExtensions:AsNonStringEnumerable(System.Object):System.Collections.IEnumerable (Tier1)
 ; ============================================================
 
 Unwind Info:

+4 (+1.37%) : 155426.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)

@@ -9,7 +9,7 @@
 ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T00] (  7,  6.02)     ref  ->  x19         class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+;  V00 arg0         [V00,T00] (  7,  5.97)     ref  ->  x19         class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
 ;  V01 loc0         [V01,T02] (  4,  2.54)     ref  ->   x1         class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundConditionalOperator>
 ;  V02 loc1         [V02,T03] (  4,  2.41)     ref  ->   x2         class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundConvertedSwitchExpression>
 ;  V03 loc2         [V03,T05] (  6,  2.04)     ref  ->   x0         class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpressionBase>
@@ -43,7 +43,7 @@ G_M35670_IG03:        ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             cmp     x0, x2
-            beq     G_M35670_IG15
+            beq     G_M35670_IG14
                        ;; size=24 bbWeight=0.50 PerfScore 3.00
 G_M35670_IG04:        ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x1]
@@ -63,7 +63,7 @@ G_M35670_IG06:        ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             ; gcrRegs -[x2]
             mov     x0, x19
             ; gcrRegs +[x0]
-            cbz     x0, G_M35670_IG10
+            cbz     x0, G_M35670_IG09
                        ;; size=8 bbWeight=0.96 PerfScore 1.45
 G_M35670_IG07:        ; bbWeight=0.48, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
             ldr     x1, [x0]
@@ -72,31 +72,20 @@ G_M35670_IG07:        ; bbWeight=0.48, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             cmp     x1, x0
-            beq     G_M35670_IG09
+            bne     G_M35670_IG17
                        ;; size=24 bbWeight=0.48 PerfScore 2.89
-G_M35670_IG08:        ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            mov     x1, x19
-            ; gcrRegs +[x1]
-            movz    x0, #0xD1FFAB1E
-            movk    x0, #0xD1FFAB1E LSL #16
-            movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFCLASS
-            ; gcrRegs -[x1] +[x0]
-            b       G_M35670_IG10
-                       ;; size=24 bbWeight=0.17 PerfScore 0.69
-G_M35670_IG09:        ; bbWeight=0.31, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
+G_M35670_IG08:        ; bbWeight=0.35, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x0, xzr
             ; gcrRegs +[x0]
-                       ;; size=4 bbWeight=0.31 PerfScore 0.15
-G_M35670_IG10:        ; bbWeight=0.96, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
-            cbnz    x0, G_M35670_IG18
+                       ;; size=4 bbWeight=0.35 PerfScore 0.18
+G_M35670_IG09:        ; bbWeight=0.96, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+            cbnz    x0, G_M35670_IG20
                        ;; size=4 bbWeight=0.96 PerfScore 0.96
-G_M35670_IG11:        ; bbWeight=0.91, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35670_IG10:        ; bbWeight=0.91, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
-            cbz     x19, G_M35670_IG16
+            cbz     x19, G_M35670_IG15
                        ;; size=4 bbWeight=0.91 PerfScore 0.91
-G_M35670_IG12:        ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35670_IG11:        ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x19]
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
@@ -104,29 +93,47 @@ G_M35670_IG12:        ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             cmp     x0, x1
             beq     G_M35670_IG22
                        ;; size=24 bbWeight=0.46 PerfScore 2.74
-G_M35670_IG13:        ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35670_IG12:        ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x19]
-            b       G_M35670_IG16
+            b       G_M35670_IG15
                        ;; size=4 bbWeight=0.23 PerfScore 0.23
-G_M35670_IG14:        ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35670_IG13:        ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             mov     w0, #1
-            b       G_M35670_IG17
+            b       G_M35670_IG16
                        ;; size=8 bbWeight=0.04 PerfScore 0.05
-G_M35670_IG15:        ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M35670_IG14:        ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x1]
             ldrb    w2, [x1, #0x49]
-            cbnz    w2, G_M35670_IG14
+            cbnz    w2, G_M35670_IG13
                        ;; size=8 bbWeight=0.04 PerfScore 0.14
-G_M35670_IG16:        ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35670_IG15:        ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x1]
             mov     w0, wzr
                        ;; size=4 bbWeight=0.96 PerfScore 0.48
-G_M35670_IG17:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M35670_IG16:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
             ldp     x19, x20, [sp, #0x10]
             ldp     fp, lr, [sp], #0x20
             ret     lr
                        ;; size=12 bbWeight=1 PerfScore 3.00
-G_M35670_IG18:        ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35670_IG17:        ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs +[x19]
+            mov     x1, x19
+            ; gcrRegs +[x1]
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_ISINSTANCEOFCLASS
+            ; gcrRegs -[x1] +[x0]
+            b       G_M35670_IG09
+                       ;; size=24 bbWeight=0.13 PerfScore 0.52
+G_M35670_IG18:        ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x0 x19]
+            cbnz    w20, G_M35670_IG13
+                       ;; size=4 bbWeight=0.05 PerfScore 0.05
+G_M35670_IG19:        ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            b       G_M35670_IG15
+                       ;; size=4 bbWeight=0.02 PerfScore 0.02
+G_M35670_IG20:        ; bbWeight=0.05, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x0]
             ldr     x1, [x0]
             movz    x2, #0xD1FFAB1E
@@ -135,25 +142,19 @@ G_M35670_IG18:        ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=000
             cmp     x1, x2
             bne     G_M35670_IG23
             ldrb    w20, [x0, #0x39]
-                       ;; size=28 bbWeight=0.05 PerfScore 0.47
-G_M35670_IG19:        ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0]
-            cbnz    w20, G_M35670_IG14
-                       ;; size=4 bbWeight=0.05 PerfScore 0.05
-G_M35670_IG20:        ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            b       G_M35670_IG16
-                       ;; size=4 bbWeight=0.02 PerfScore 0.02
+            b       G_M35670_IG18
+                       ;; size=32 bbWeight=0.05 PerfScore 0.53
 G_M35670_IG21:        ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs +[x2]
+            ; gcrRegs -[x0] +[x2]
             ldrb    w0, [x2, #0x50]
-            cbnz    w0, G_M35670_IG14
-            b       G_M35670_IG16
+            cbnz    w0, G_M35670_IG13
+            b       G_M35670_IG15
                        ;; size=12 bbWeight=0 PerfScore 0.00
 G_M35670_IG22:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x2] +[x19]
             ldrb    w0, [x19, #0x31]
-            cbz     w0, G_M35670_IG16
-            b       G_M35670_IG14
+            cbz     w0, G_M35670_IG15
+            b       G_M35670_IG13
                        ;; size=12 bbWeight=0 PerfScore 0.00
 G_M35670_IG23:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x19] +[x0]
@@ -163,10 +164,10 @@ G_M35670_IG23:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
             blr     x1
             ; gcrRegs -[x0]
             sxtw    w20, w0
-            b       G_M35670_IG19
+            b       G_M35670_IG18
                        ;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 292, prolog size 12, PerfScore 26.09, instruction count 73, allocated bytes for code 292 (MethodHash=471574a9) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
+; Total bytes of code 296, prolog size 12, PerfScore 26.00, instruction count 74, allocated bytes for code 296 (MethodHash=471574a9) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -177,7 +178,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 73 (0x00049) Actual length = 292 (0x000124)
+  Function Length   : 74 (0x0004a) Actual length = 296 (0x000128)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+1.75%) : 61180.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,int):ubyte:this (Tier1)

@@ -10,7 +10,7 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T02] (  5,  3   )     ref  ->  x20         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
-;  V01 arg1         [V01,T01] (  6,  5.20)     ref  ->  x19         class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
+;  V01 arg1         [V01,T01] (  6,  5.17)     ref  ->  x19         class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
 ;  V02 arg2         [V02,T03] (  4,  2   )     int  ->  x21         single-def
 ;  V03 loc0         [V03,T05] (  3,  2   )     ref  ->   x0         class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SubstitutedMethodSymbol>
 ;  V04 loc1         [V04,T04] (  4,  2.50)     ref  ->   x0         class-hnd exact <Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerMethodSymbol>
@@ -34,7 +34,7 @@ G_M476_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
 G_M476_IG02:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             mov     x0, x19
             ; gcrRegs +[x0]
-            cbz     x0, G_M476_IG06
+            cbz     x0, G_M476_IG05
                        ;; size=8 bbWeight=1 PerfScore 1.50
 G_M476_IG03:        ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
             ldr     x1, [x0]
@@ -43,9 +43,30 @@ G_M476_IG03:        ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=00
             movk    x0, #104 LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             cmp     x1, x0
-            beq     G_M476_IG05
+            bne     G_M476_IG08
                        ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M476_IG04:        ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M476_IG04:        ; bbWeight=0.34, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+            mov     x0, xzr
+            ; gcrRegs +[x0]
+                       ;; size=4 bbWeight=0.34 PerfScore 0.17
+G_M476_IG05:        ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+            cbnz    x0, G_M476_IG11
+            mov     x0, x19
+            cbz     x0, G_M476_IG09
+                       ;; size=12 bbWeight=1 PerfScore 2.50
+G_M476_IG06:        ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+            ldr     x1, [x0]
+            movz    x2, #24
+            movk    x2, #97 LSL #16
+            movk    x2, #0xD1FFAB1E LSL #32
+            cmp     x1, x2
+            beq     G_M476_IG13
+                       ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M476_IG07:        ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0]
+            b       G_M476_IG09
+                       ;; size=4 bbWeight=0.25 PerfScore 0.25
+G_M476_IG08:        ; bbWeight=0.17, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
             mov     x1, x19
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
@@ -54,38 +75,20 @@ G_M476_IG04:        ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
             bl      CORINFO_HELP_ISINSTANCEOFCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-            b       G_M476_IG06
-                       ;; size=24 bbWeight=0.20 PerfScore 0.78
-G_M476_IG05:        ; bbWeight=0.30, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
-            mov     x0, xzr
-            ; gcrRegs +[x0]
-                       ;; size=4 bbWeight=0.30 PerfScore 0.15
-G_M476_IG06:        ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
-            cbnz    x0, G_M476_IG10
-            mov     x0, x19
-            cbz     x0, G_M476_IG08
-                       ;; size=12 bbWeight=1 PerfScore 2.50
-G_M476_IG07:        ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
-            ldr     x1, [x0]
-            movz    x2, #24
-            movk    x2, #97 LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            cmp     x1, x2
-            beq     G_M476_IG12
-                       ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M476_IG08:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+            b       G_M476_IG05
+                       ;; size=24 bbWeight=0.17 PerfScore 0.66
+G_M476_IG09:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
             cmp     x20, x19
             cset    x0, eq
                        ;; size=8 bbWeight=1 PerfScore 1.00
-G_M476_IG09:        ; bbWeight=1, epilog, nogc, extend
+G_M476_IG10:        ; bbWeight=1, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             ret     lr
                        ;; size=16 bbWeight=1 PerfScore 5.00
-G_M476_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M476_IG11:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x19] +[x0]
             mov     x1, x20
             ; gcrRegs +[x1]
@@ -95,14 +98,14 @@ G_M476_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100001 {
             movk    x3, #0xD1FFAB1E LSL #32
             ldr     x3, [x3]
                        ;; size=24 bbWeight=0 PerfScore 0.00
-G_M476_IG11:        ; bbWeight=0, epilog, nogc, extend
+G_M476_IG12:        ; bbWeight=0, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             br      x3
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0 PerfScore 0.00
-G_M476_IG12:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M476_IG13:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x1]
             mov     x1, x20
             ; gcrRegs +[x1]
@@ -112,7 +115,7 @@ G_M476_IG12:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100001 {
             movk    x3, #0xD1FFAB1E LSL #32
             ldr     x3, [x3]
                        ;; size=24 bbWeight=0 PerfScore 0.00
-G_M476_IG13:        ; bbWeight=0, epilog, nogc, extend
+G_M476_IG14:        ; bbWeight=0, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
@@ -120,7 +123,7 @@ G_M476_IG13:        ; bbWeight=0, epilog, nogc, extend
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 228, prolog size 28, PerfScore 21.93, instruction count 57, allocated bytes for code 228 (MethodHash=66bdfe23) for method Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,int):ubyte:this (Tier1)
+; Total bytes of code 232, prolog size 28, PerfScore 22.08, instruction count 58, allocated bytes for code 232 (MethodHash=66bdfe23) for method Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,int):ubyte:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -131,7 +134,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 57 (0x00039) Actual length = 228 (0x0000e4)
+  Function Length   : 58 (0x0003a) Actual length = 232 (0x0000e8)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+3.95%) : 559549.dasm - Xunit.Internal.ArgumentFormatter:SafeToMultiEnumerate(System.Collections.IEnumerable):ubyte (Tier1)

@@ -8,16 +8,16 @@
 ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1385
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T00] ( 10,  6.20)     ref  ->  x19         class-hnd single-def <System.Collections.IEnumerable>
+;  V00 arg0         [V00,T00] ( 10,  6.07)     ref  ->  x19         class-hnd single-def <System.Collections.IEnumerable>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V02 tmp1         [V02,T04] (  3,  3.84)     ref  ->   x1         class-hnd "spilling QMark2" <<unknown class>>
-;  V03 rat0         [V03,T01] (  5,  7.42)     ref  ->   x2         class-hnd "replacement local" <<unknown class>>
+;  V03 rat0         [V03,T01] (  5,  7.33)     ref  ->   x2         class-hnd "replacement local" <<unknown class>>
 ;  V04 rat1         [V04,T02] (  6,  6.14)     ref  ->   x2         class-hnd "replacement local" <<unknown class>>
 ;  V05 rat2         [V05,T03] (  6,  5.44)     ref  ->   x2         class-hnd "replacement local" <<unknown class>>
 ;
 ; Lcl frame size = 8
 
-G_M49662_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M49662_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x20]!
             str     x19, [sp, #0x18]
             mov     fp, sp
@@ -27,7 +27,7 @@ G_M49662_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
 G_M49662_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             mov     x2, x19
             ; gcrRegs +[x2]
-            cbz     x2, G_M49662_IG05
+            cbz     x2, G_M49662_IG04
                        ;; size=8 bbWeight=1 PerfScore 1.50
 G_M49662_IG03:        ; bbWeight=0.50, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
             ldr     x1, [x2]
@@ -35,10 +35,90 @@ G_M49662_IG03:        ; bbWeight=0.50, gcrefRegs=80004 {x2 x19}, byrefRegs=0000
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             cmp     x1, x0
-            beq     G_M49662_IG05
+            bne     G_M49662_IG18
                        ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M49662_IG04:        ; bbWeight=0.21, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M49662_IG04:        ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
+            cbnz    x2, G_M49662_IG19
+                       ;; size=4 bbWeight=1 PerfScore 1.00
+G_M49662_IG05:        ; bbWeight=0.77, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x2]
+            mov     x1, x19
+            ; gcrRegs +[x1]
+            cbz     x1, G_M49662_IG07
+                       ;; size=8 bbWeight=0.77 PerfScore 1.15
+G_M49662_IG06:        ; bbWeight=0.38, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+            ldr     x1, [x1]
+            ; gcrRegs -[x1]
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            cmp     x1, x0
+            beq     G_M49662_IG19
+                       ;; size=24 bbWeight=0.38 PerfScore 2.30
+G_M49662_IG07:        ; bbWeight=0.77, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            mov     x2, x19
+            ; gcrRegs +[x2]
+            cbz     x2, G_M49662_IG10
+                       ;; size=8 bbWeight=0.77 PerfScore 1.15
+G_M49662_IG08:        ; bbWeight=0.38, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
+            ldr     x1, [x2]
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            cmp     x1, x0
+            bne     G_M49662_IG14
+                       ;; size=24 bbWeight=0.38 PerfScore 2.30
+G_M49662_IG09:        ; bbWeight=0.27, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x2]
+            mov     x2, xzr
+            ; gcrRegs +[x2]
+                       ;; size=4 bbWeight=0.27 PerfScore 0.13
+G_M49662_IG10:        ; bbWeight=0.77, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
+            cbnz    x2, G_M49662_IG19
+                       ;; size=4 bbWeight=0.77 PerfScore 0.77
+G_M49662_IG11:        ; bbWeight=0.68, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x2]
+            mov     x2, x19
+            ; gcrRegs +[x2]
+            cbz     x2, G_M49662_IG16
+                       ;; size=8 bbWeight=0.68 PerfScore 1.02
+G_M49662_IG12:        ; bbWeight=0.34, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
+            ldr     x2, [x2]
+            ; gcrRegs -[x2]
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            cmp     x2, x0
+            beq     G_M49662_IG15
+                       ;; size=24 bbWeight=0.34 PerfScore 2.04
+G_M49662_IG13:        ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            b       G_M49662_IG23
+                       ;; size=4 bbWeight=0.10 PerfScore 0.10
+G_M49662_IG14:        ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            mov     x1, x19
+            ; gcrRegs +[x1]
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            ; gcrRegs -[x1] +[x0]
+            mov     x2, x0
+            ; gcrRegs +[x2]
+            b       G_M49662_IG10
+                       ;; size=28 bbWeight=0.12 PerfScore 0.52
+G_M49662_IG15:        ; bbWeight=0.24, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0 x2]
+            mov     x2, xzr
+            ; gcrRegs +[x2]
+                       ;; size=4 bbWeight=0.24 PerfScore 0.12
+G_M49662_IG16:        ; bbWeight=0.68, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
+            cbnz    x2, G_M49662_IG19
+                       ;; size=4 bbWeight=0.68 PerfScore 0.68
+G_M49662_IG17:        ; bbWeight=0.47, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x2]
+            b       G_M49662_IG21
+                       ;; size=4 bbWeight=0.47 PerfScore 0.47
+G_M49662_IG18:        ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x1, x19
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
@@ -48,97 +128,19 @@ G_M49662_IG04:        ; bbWeight=0.21, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             ; gcrRegs -[x1] +[x0]
             mov     x2, x0
             ; gcrRegs +[x2]
-                       ;; size=24 bbWeight=0.21 PerfScore 0.74
-G_M49662_IG05:        ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0]
-            cbnz    x2, G_M49662_IG20
-                       ;; size=4 bbWeight=1 PerfScore 1.00
-G_M49662_IG06:        ; bbWeight=0.77, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x2]
-            mov     x1, x19
-            ; gcrRegs +[x1]
-            cbz     x1, G_M49662_IG08
-                       ;; size=8 bbWeight=0.77 PerfScore 1.15
-G_M49662_IG07:        ; bbWeight=0.38, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
-            ldr     x1, [x1]
-            ; gcrRegs -[x1]
-            movz    x0, #0xD1FFAB1E
-            movk    x0, #0xD1FFAB1E LSL #16
-            movk    x0, #0xD1FFAB1E LSL #32
-            cmp     x1, x0
-            beq     G_M49662_IG20
-                       ;; size=24 bbWeight=0.38 PerfScore 2.30
-G_M49662_IG08:        ; bbWeight=0.77, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            mov     x2, x19
-            ; gcrRegs +[x2]
-            cbz     x2, G_M49662_IG12
-                       ;; size=8 bbWeight=0.77 PerfScore 1.15
-G_M49662_IG09:        ; bbWeight=0.38, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
-            ldr     x1, [x2]
-            movz    x0, #0xD1FFAB1E
-            movk    x0, #0xD1FFAB1E LSL #16
-            movk    x0, #0xD1FFAB1E LSL #32
-            cmp     x1, x0
-            beq     G_M49662_IG11
-                       ;; size=24 bbWeight=0.38 PerfScore 2.30
-G_M49662_IG10:        ; bbWeight=0.15, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x2]
-            mov     x1, x19
-            ; gcrRegs +[x1]
-            movz    x0, #0xD1FFAB1E
-            movk    x0, #0xD1FFAB1E LSL #16
-            movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
-            ; gcrRegs -[x1] +[x0]
-            mov     x2, x0
-            ; gcrRegs +[x2]
-            b       G_M49662_IG12
-                       ;; size=28 bbWeight=0.15 PerfScore 0.67
-G_M49662_IG11:        ; bbWeight=0.23, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0 x2]
-            mov     x2, xzr
-            ; gcrRegs +[x2]
-                       ;; size=4 bbWeight=0.23 PerfScore 0.12
-G_M49662_IG12:        ; bbWeight=0.77, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
-            cbnz    x2, G_M49662_IG20
-                       ;; size=4 bbWeight=0.77 PerfScore 0.77
-G_M49662_IG13:        ; bbWeight=0.68, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x2]
-            mov     x2, x19
-            ; gcrRegs +[x2]
-            cbz     x2, G_M49662_IG17
-                       ;; size=8 bbWeight=0.68 PerfScore 1.02
-G_M49662_IG14:        ; bbWeight=0.34, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
-            ldr     x1, [x2]
-            movz    x0, #0xD1FFAB1E
-            movk    x0, #0xD1FFAB1E LSL #16
-            movk    x0, #0xD1FFAB1E LSL #32
-            cmp     x1, x0
-            beq     G_M49662_IG16
-                       ;; size=24 bbWeight=0.34 PerfScore 2.04
-G_M49662_IG15:        ; bbWeight=0.15, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x2]
-            mov     x1, x19
-            ; gcrRegs +[x1]
-            movz    x0, #0xD1FFAB1E
-            movk    x0, #0xD1FFAB1E LSL #16
-            movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
-            ; gcrRegs -[x1] +[x0]
-            mov     x2, x0
-            ; gcrRegs +[x2]
-            b       G_M49662_IG17
-                       ;; size=28 bbWeight=0.15 PerfScore 0.69
-G_M49662_IG16:        ; bbWeight=0.19, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0 x2]
-            mov     x2, xzr
-            ; gcrRegs +[x2]
-                       ;; size=4 bbWeight=0.19 PerfScore 0.09
-G_M49662_IG17:        ; bbWeight=0.68, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
-            cbnz    x2, G_M49662_IG20
-                       ;; size=4 bbWeight=0.68 PerfScore 0.68
-G_M49662_IG18:        ; bbWeight=0.47, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x2]
+            b       G_M49662_IG04
+                       ;; size=28 bbWeight=0.17 PerfScore 0.74
+G_M49662_IG19:        ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0 x2 x19]
+            mov     w0, #1
+                       ;; size=4 bbWeight=0.53 PerfScore 0.26
+G_M49662_IG20:        ; bbWeight=0.53, epilog, nogc, extend
+            ldr     x19, [sp, #0x18]
+            ldp     fp, lr, [sp], #0x20
+            ret     lr
+                       ;; size=12 bbWeight=0.53 PerfScore 2.11
+G_M49662_IG21:        ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs +[x19]
             mov     x0, x19
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for Xunit.Internal.ArgumentFormatter:GetSetElementType(System.Object):System.Type
@@ -151,21 +153,26 @@ G_M49662_IG18:        ; bbWeight=0.47, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             cset    x0, ne
             ; gcrRegs -[x0]
                        ;; size=32 bbWeight=0.47 PerfScore 3.32
-G_M49662_IG19:        ; bbWeight=0.47, epilog, nogc, extend
+G_M49662_IG22:        ; bbWeight=0.47, epilog, nogc, extend
             ldr     x19, [sp, #0x18]
             ldp     fp, lr, [sp], #0x20
             ret     lr
                        ;; size=12 bbWeight=0.47 PerfScore 1.89
-G_M49662_IG20:        ; bbWeight=0.53, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
-            mov     w0, #1
-                       ;; size=4 bbWeight=0.53 PerfScore 0.26
-G_M49662_IG21:        ; bbWeight=0.53, epilog, nogc, extend
-            ldr     x19, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x20
-            ret     lr
...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.windows.arm64.checked.mch 1 0 1 0 -0 +36
benchmarks.run_tiered.windows.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.windows.arm64.checked.mch 3 2 0 1 -84 +0
libraries.crossgen2.windows.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.arm64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.windows.arm64.Release.mch 18 3 12 3 -104 +72
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 0 0 0 0 -0 +0
realworld.run.windows.arm64.checked.mch 0 0 0 0 -0 +0
smoke_tests.nativeaot.windows.arm64.checked.mch 0 0 0 0 -0 +0
22 5 13 4 -188 +108

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.arm64.checked.mch 24,217 4 24,213 4 (0.02%) 232 (0.95%)
benchmarks.run_pgo.windows.arm64.checked.mch 98,203 48,543 49,660 125 (0.13%) 230 (0.23%)
benchmarks.run_tiered.windows.arm64.checked.mch 48,440 36,685 11,755 4 (0.01%) 65 (0.13%)
coreclr_tests.run.windows.arm64.checked.mch 594,979 362,737 232,242 317 (0.05%) 706 (0.12%)
libraries.crossgen2.windows.arm64.checked.mch 243,430 15 243,415 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.arm64.checked.mch 301,994 6 301,988 7 (0.00%) 2,059 (0.68%)
libraries_tests.run.windows.arm64.Release.mch 629,655 461,984 167,671 2,223 (0.35%) 3,007 (0.48%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 314,117 21,559 292,558 4 (0.00%) 2,184 (0.69%)
realworld.run.windows.arm64.checked.mch 32,826 3 32,823 3 (0.01%) 369 (1.11%)
smoke_tests.nativeaot.windows.arm64.checked.mch 24,178 7 24,171 0 (0.00%) 3 (0.01%)
2,312,039 931,543 1,380,496 2,687 (0.12%) 8,855 (0.38%)

jit-analyze output

benchmarks.run_pgo.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 47253428 (overridden on cmd)
Total bytes of diff: 47253464 (overridden on cmd)
Total bytes of delta: 36 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          36 : 31478.dasm (7.89 % of base)

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

Top method regressions (bytes):
          36 (7.89 % of base) : 31478.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)

Top method regressions (percentages):
          36 (7.89 % of base) : 31478.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)

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


coreclr_tests.run.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 494497636 (overridden on cmd)
Total bytes of diff: 494497552 (overridden on cmd)
Total bytes of delta: -84 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -44 : 387579.dasm (-2.50 % of base)
         -40 : 391679.dasm (-2.31 % of base)

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

Top method improvements (bytes):
         -44 (-2.50 % of base) : 387579.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
         -40 (-2.31 % of base) : 391679.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

Top method improvements (percentages):
         -44 (-2.50 % of base) : 387579.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
         -40 (-2.31 % of base) : 391679.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.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 309394148 (overridden on cmd)
Total bytes of diff: 309394116 (overridden on cmd)
Total bytes of delta: -32 (-0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          12 : 405715.dasm (1.30 % of base)
          12 : 559549.dasm (3.95 % of base)
           8 : 196500.dasm (0.26 % of base)
           8 : 83702.dasm (0.39 % of base)
           4 : 196233.dasm (0.42 % of base)
           4 : 196422.dasm (0.09 % of base)
           4 : 196530.dasm (0.15 % of base)
           4 : 49361.dasm (0.64 % of base)
           4 : 61180.dasm (1.75 % of base)
           4 : 155426.dasm (1.37 % of base)
           4 : 116678.dasm (0.53 % of base)
           4 : 331594.dasm (0.17 % of base)

Top file improvements (bytes):
         -96 : 578100.dasm (-2.19 % of base)
          -4 : 538090.dasm (-0.18 % of base)
          -4 : 308650.dasm (-0.42 % of base)

15 total files with Code Size differences (3 improved, 12 regressed), 3 unchanged.

Top method regressions (bytes):
          12 (1.30 % of base) : 405715.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
          12 (3.95 % of base) : 559549.dasm - Xunit.Internal.ArgumentFormatter:SafeToMultiEnumerate(System.Collections.IEnumerable):ubyte (Tier1)
           8 (0.26 % of base) : 196500.dasm - System.Collections.Tests.IEnumerable_NonGeneric_Tests:IEnumerable_NonGeneric_Enumerator_Current_ReturnsSameObjectsOnDifferentEnumerators(int):this (Tier1)
           8 (0.39 % of base) : 83702.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
           4 (1.37 % of base) : 155426.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
           4 (1.75 % of base) : 61180.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,int):ubyte:this (Tier1)
           4 (0.64 % of base) : 49361.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
           4 (0.15 % of base) : 196530.dasm - System.Collections.Tests.IEnumerable_NonGeneric_Tests:IEnumerable_NonGeneric_GetEnumerator_ReturnsUniqueEnumerator(int):this (Tier1)
           4 (0.09 % of base) : 196422.dasm - System.Linq.Enumerable:SequenceEqual[int](System.Collections.Generic.IEnumerable`1[int],System.Collections.Generic.IEnumerable`1[int],System.Collections.Generic.IEqualityComparer`1[int]):ubyte (Tier1)
           4 (0.53 % of base) : 116678.dasm - System.Linq.Expressions.Compiler.ILGen:TryEmitConstant(System.Reflection.Emit.ILGenerator,System.Object,System.Type,System.Linq.Expressions.Compiler.ILocalCache):ubyte (Tier1)
           4 (0.42 % of base) : 196233.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectReader:Deserialize(System.Runtime.Serialization.Formatters.Binary.BinaryParser):System.Object:this (Tier1)
           4 (0.17 % of base) : 331594.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)

Top method improvements (bytes):
         -96 (-2.19 % of base) : 578100.dasm - Microsoft.Cci.MetadataWriter:AddCustomAttributesToTable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.Reflection.Metadata.EntityHandle]):this (Tier1-OSR)
          -4 (-0.42 % of base) : 308650.dasm - System.Linq.Enumerable:TryGetFirst[int](System.Collections.Generic.IEnumerable`1[int],byref):int (Tier1)
          -4 (-0.18 % of base) : 538090.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)

Top method regressions (percentages):
          12 (3.95 % of base) : 559549.dasm - Xunit.Internal.ArgumentFormatter:SafeToMultiEnumerate(System.Collections.IEnumerable):ubyte (Tier1)
           4 (1.75 % of base) : 61180.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,int):ubyte:this (Tier1)
           4 (1.37 % of base) : 155426.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
          12 (1.30 % of base) : 405715.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
           4 (0.64 % of base) : 49361.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
           4 (0.53 % of base) : 116678.dasm - System.Linq.Expressions.Compiler.ILGen:TryEmitConstant(System.Reflection.Emit.ILGenerator,System.Object,System.Type,System.Linq.Expressions.Compiler.ILocalCache):ubyte (Tier1)
           4 (0.42 % of base) : 196233.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectReader:Deserialize(System.Runtime.Serialization.Formatters.Binary.BinaryParser):System.Object:this (Tier1)
           8 (0.39 % of base) : 83702.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
           8 (0.26 % of base) : 196500.dasm - System.Collections.Tests.IEnumerable_NonGeneric_Tests:IEnumerable_NonGeneric_Enumerator_Current_ReturnsSameObjectsOnDifferentEnumerators(int):this (Tier1)
           4 (0.17 % of base) : 331594.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
           4 (0.15 % of base) : 196530.dasm - System.Collections.Tests.IEnumerable_NonGeneric_Tests:IEnumerable_NonGeneric_GetEnumerator_ReturnsUniqueEnumerator(int):this (Tier1)
           4 (0.09 % of base) : 196422.dasm - System.Linq.Enumerable:SequenceEqual[int](System.Collections.Generic.IEnumerable`1[int],System.Collections.Generic.IEnumerable`1[int],System.Collections.Generic.IEqualityComparer`1[int]):ubyte (Tier1)

Top method improvements (percentages):
         -96 (-2.19 % of base) : 578100.dasm - Microsoft.Cci.MetadataWriter:AddCustomAttributesToTable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.Reflection.Metadata.EntityHandle]):this (Tier1-OSR)
          -4 (-0.42 % of base) : 308650.dasm - System.Linq.Enumerable:TryGetFirst[int](System.Collections.Generic.IEnumerable`1[int],byref):int (Tier1)
          -4 (-0.18 % of base) : 538090.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)

15 total methods with Code Size differences (3 improved, 12 regressed).



windows x64

Diffs are based on 2,486,103 contexts (983,689 MinOpts, 1,502,414 FullOpts).

MISSED contexts: base: 3,899 (0.16%), diff: 10,701 (0.43%)

Overall (+256 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 41,693,796 +119
benchmarks.run_pgo.windows.x64.checked.mch 35,261,613 +38
coreclr_tests.run.windows.x64.checked.mch 392,818,845 -68
libraries_tests.run.windows.x64.Release.mch 280,544,593 +167

FullOpts (+256 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 27,035,071 +119
benchmarks.run_pgo.windows.x64.checked.mch 21,026,636 +38
coreclr_tests.run.windows.x64.checked.mch 119,275,853 -68
libraries_tests.run.windows.x64.Release.mch 102,176,277 +167

Example diffs

aspnet.run.windows.x64.checked.mch

+16 (+3.09%) : 96756.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)

@@ -10,7 +10,7 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T02] (  8,  3.80)     ref  ->  rsi         this class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope>
-;  V01 arg1         [V01,T00] ( 11,  5.97)     ref  ->  rbx         class-hnd single-def <System.Object>
+;  V01 arg1         [V01,T00] ( 11,  5.92)     ref  ->  rbx         class-hnd single-def <System.Object>
 ;  V02 loc0         [V02,T07] (  3,  0.38)   ubyte  ->  rdi        
 ;  V03 loc1         [V03,T08] (  4,  0.38)     ref  ->  [rbp-0x28]  class-hnd EH-live spill-single-def <System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey,System.Object]>
 ;  V04 loc2         [V04    ] (  5,  0.76)   ubyte  ->  [rbp-0x20]  do-not-enreg[X] must-init addr-exposed ld-addr-op
@@ -50,7 +50,7 @@ G_M19770_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
                        ;; size=29 bbWeight=1 PerfScore 7.50
 G_M19770_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        cmp      rsi, rbx
-       je       SHORT G_M19770_IG09
+       je       SHORT G_M19770_IG08
                        ;; size=5 bbWeight=1 PerfScore 1.25
 G_M19770_IG03:        ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        mov      rdx, rbx
@@ -60,45 +60,35 @@ G_M19770_IG03:        ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
        ; gcrRegs -[rdx] +[rax]
        ; gcr arg pop 0
        test     rax, rax
-       jne      SHORT G_M19770_IG11
+       jne      SHORT G_M19770_IG10
                        ;; size=23 bbWeight=0.99 PerfScore 2.72
 G_M19770_IG04:        ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rax]
        mov      rax, rbx
        ; gcrRegs +[rax]
        test     rax, rax
-       je       SHORT G_M19770_IG08
+       je       SHORT G_M19770_IG07
                        ;; size=8 bbWeight=0.80 PerfScore 1.20
-G_M19770_IG05:        ; bbWeight=0.40, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG05:        ; bbWeight=0.40, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref
        mov      rdx, 0xD1FFAB1E      ; OrchardCore.Environment.Shell.Descriptor.Models.ShellFeature
        cmp      qword ptr [rax], rdx
-       je       SHORT G_M19770_IG07
-                       ;; size=15 bbWeight=0.40 PerfScore 1.70
-G_M19770_IG06:        ; bbWeight=0.18, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rax]
-       mov      rdx, rbx
-       ; gcrRegs +[rdx]
-       mov      rcx, 0xD1FFAB1E      ; <unknown class>
-       call     CORINFO_HELP_ISINSTANCEOFINTERFACE
-       ; gcrRegs -[rdx] +[rax]
-       ; gcr arg pop 0
-       jmp      SHORT G_M19770_IG08
-                       ;; size=20 bbWeight=0.18 PerfScore 0.63
-G_M19770_IG07:        ; bbWeight=0.22, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+       jne      G_M19770_IG21
+                       ;; size=19 bbWeight=0.40 PerfScore 1.70
+G_M19770_IG06:        ; bbWeight=0.27, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
        xor      rax, rax
        ; gcrRegs +[rax]
-                       ;; size=2 bbWeight=0.22 PerfScore 0.05
-G_M19770_IG08:        ; bbWeight=0.80, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
+                       ;; size=2 bbWeight=0.27 PerfScore 0.07
+G_M19770_IG07:        ; bbWeight=0.80, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
        test     rax, rax
-       jne      SHORT G_M19770_IG11
+       jne      SHORT G_M19770_IG10
                        ;; size=5 bbWeight=0.80 PerfScore 1.00
-G_M19770_IG09:        ; bbWeight=0.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M19770_IG08:        ; bbWeight=0.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax rsi]
        mov      rax, rbx
        ; gcrRegs +[rax]
                        ;; size=3 bbWeight=0.81 PerfScore 0.20
-G_M19770_IG10:        ; bbWeight=0.81, epilog, nogc, extend
+G_M19770_IG09:        ; bbWeight=0.81, epilog, nogc, extend
        add      rsp, 56
        pop      rbx
        pop      rsi
@@ -106,7 +96,7 @@ G_M19770_IG10:        ; bbWeight=0.81, epilog, nogc, extend
        pop      rbp
        ret      
                        ;; size=9 bbWeight=0.81 PerfScore 2.63
-G_M19770_IG11:        ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M19770_IG10:        ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs -[rax] +[rsi]
        xor      edi, edi
        mov      rcx, gword ptr [rsi+0x10]
@@ -116,21 +106,21 @@ G_M19770_IG11:        ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=004
        xor      edx, edx
        mov      dword ptr [rbp-0x20], edx
                        ;; size=15 bbWeight=0.19 PerfScore 0.86
-G_M19770_IG12:        ; bbWeight=0.19, gcVars=0000000000000100 {V03}, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M19770_IG11:        ; bbWeight=0.19, gcVars=0000000000000100 {V03}, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
        cmp      byte  ptr [rbp-0x20], 0
-       jne      G_M19770_IG19
+       jne      G_M19770_IG18
        lea      rdx, [rbp-0x20]
        call     <unknown method>
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
        cmp      byte  ptr [rsi+0x20], 0
-       jne      SHORT G_M19770_IG18
+       jne      SHORT G_M19770_IG17
                        ;; size=25 bbWeight=0.19 PerfScore 1.62
-G_M19770_IG13:        ; bbWeight=0.19, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG12:        ; bbWeight=0.19, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        cmp      gword ptr [rsi+0x08], 0
-       je       SHORT G_M19770_IG16
+       je       SHORT G_M19770_IG15
                        ;; size=7 bbWeight=0.19 PerfScore 0.76
-G_M19770_IG14:        ; bbWeight=0.19, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG13:        ; bbWeight=0.19, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        mov      rcx, gword ptr [rsi+0x08]
        ; gcrRegs +[rcx]
        inc      dword ptr [rcx+0x14]
@@ -138,9 +128,9 @@ G_M19770_IG14:        ; bbWeight=0.19, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
        ; gcrRegs +[r8]
        mov      edx, dword ptr [rcx+0x10]
        cmp      dword ptr [r8+0x08], edx
-       jbe      SHORT G_M19770_IG17
+       jbe      SHORT G_M19770_IG16
                        ;; size=20 bbWeight=0.19 PerfScore 2.46
-G_M19770_IG15:        ; bbWeight=0.08, gcrefRegs=010A {rcx rbx r8}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG14:        ; bbWeight=0.08, gcrefRegs=010A {rcx rbx r8}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rsi]
        lea      eax, [rdx+0x01]
        mov      dword ptr [rcx+0x10], eax
@@ -150,9 +140,9 @@ G_M19770_IG15:        ; bbWeight=0.08, gcrefRegs=010A {rcx rbx r8}, byrefRegs=00
        call     CORINFO_HELP_ARRADDR_ST
        ; gcrRegs -[rcx r8]
        ; gcr arg pop 0
-       jmp      SHORT G_M19770_IG20
+       jmp      SHORT G_M19770_IG19
                        ;; size=22 bbWeight=0.08 PerfScore 0.42
-G_M19770_IG16:        ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG15:        ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[rsi]
        mov      rcx, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_NEWSFAST
@@ -169,31 +159,31 @@ G_M19770_IG16:        ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
        call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx]
-       jmp      SHORT G_M19770_IG14
+       jmp      SHORT G_M19770_IG13
                        ;; size=43 bbWeight=0.04 PerfScore 0.24
-G_M19770_IG17:        ; bbWeight=0.11, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG16:        ; bbWeight=0.11, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rsi] +[rcx]
        mov      rdx, rbx
        ; gcrRegs +[rdx]
        call     [<unknown method>]
        ; gcrRegs -[rcx rdx]
        ; gcr arg pop 0
-       jmp      SHORT G_M19770_IG20
+       jmp      SHORT G_M19770_IG19
                        ;; size=11 bbWeight=0.11 PerfScore 0.58
-G_M19770_IG18:        ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG17:        ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        mov      edi, 1
-       jmp      SHORT G_M19770_IG20
+       jmp      SHORT G_M19770_IG19
                        ;; size=7 bbWeight=0.00 PerfScore 0.00
-G_M19770_IG19:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19770_IG18:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbx]
        call     [System.Threading.Monitor:ThrowLockTakenException()]
        ; gcr arg pop 0
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
-G_M19770_IG20:        ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG19:        ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[rbx]
        cmp      byte  ptr [rbp-0x20], 0
-       je       SHORT G_M19770_IG21
+       je       SHORT G_M19770_IG20
        mov      rcx, gword ptr [rbp-0x28]
        ; gcrRegs +[rcx]
        ; GC ptr vars -{V03}
@@ -201,28 +191,23 @@ G_M19770_IG20:        ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
                        ;; size=15 bbWeight=0.19 PerfScore 0.95
-G_M19770_IG21:        ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M19770_IG20:        ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        test     edi, edi
-       je       G_M19770_IG09
-                       ;; size=8 bbWeight=0.19 PerfScore 0.24
-G_M19770_IG22:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+       jne      G_M19770_IG24
+       jmp      G_M19770_IG08
+                       ;; size=13 bbWeight=0.19 PerfScore 0.62
+G_M19770_IG21:        ; bbWeight=0.13, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+       ; gcrRegs +[rsi]
        mov      rdx, rbx
        ; gcrRegs +[rdx]
        mov      rcx, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_ISINSTANCEOFINTERFACE
        ; gcrRegs -[rdx] +[rax]
        ; gcr arg pop 0
-       test     rax, rax
-       je       SHORT G_M19770_IG23
-       mov      rcx, rax
-       ; gcrRegs +[rcx]
-       mov      r11, 0xD1FFAB1E      ; code for <unknown method>
-       call     [r11]<unknown method>
-       ; gcrRegs -[rax rcx]
-       ; gcr arg pop 0
-       jmp      SHORT G_M19770_IG24
-                       ;; size=41 bbWeight=0 PerfScore 0.00
-G_M19770_IG23:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+       jmp      G_M19770_IG07
+                       ;; size=23 bbWeight=0.13 PerfScore 0.46
+G_M19770_IG22:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rax rsi]
        mov      rcx, 0xD1FFAB1E      ; Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope+<>c__DisplayClass24_0
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
@@ -266,7 +251,7 @@ G_M19770_IG23:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
        mov      ecx, dword ptr [rax+0x34]
        and      ecx, 0xD1FFAB1E
        cmp      ecx, 0xD1FFAB1E
-       je       SHORT G_M19770_IG24
+       je       SHORT G_M19770_IG23
        mov      rcx, rax
        ; gcrRegs +[rcx]
        xor      edx, edx
@@ -274,11 +259,28 @@ G_M19770_IG23:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
        ; gcrRegs -[rax rcx]
        ; gcr arg pop 0
                        ;; size=120 bbWeight=0 PerfScore 0.00
-G_M19770_IG24:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M19770_IG23:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        call     [<unknown method>]
        ; gcr arg pop 0
-       jmp      G_M19770_IG09
+       jmp      G_M19770_IG08
                        ;; size=11 bbWeight=0 PerfScore 0.00
+G_M19770_IG24:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+       mov      rdx, rbx
+       ; gcrRegs +[rdx]
+       mov      rcx, 0xD1FFAB1E      ; <unknown class>
+       call     CORINFO_HELP_ISINSTANCEOFINTERFACE
+       ; gcrRegs -[rdx] +[rax]
+       ; gcr arg pop 0
+       test     rax, rax
+       je       G_M19770_IG22
+       mov      rcx, rax
+       ; gcrRegs +[rcx]
+       mov      r11, 0xD1FFAB1E      ; code for <unknown method>
+       call     [r11]<unknown method>
+       ; gcrRegs -[rax rcx]
+       ; gcr arg pop 0
...

+24 (+10.57%) : 98626.dasm - System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)

@@ -9,18 +9,19 @@
 ; 1 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T00] (  6,  4.93)     ref  ->  rbx         class-hnd single-def <System.Object>
-;  V01 arg1         [V01,T01] (  4,  2.28)     ref  ->  rsi         class-hnd single-def <System.Threading.Thread>
-;  V02 loc0         [V02,T02] (  6,  2.56)     ref  ->  rax         class-hnd single-def <System.Threading.Tasks.Task>
+;  V00 arg0         [V00,T01] (  7,  5.17)     ref  ->  rbx         class-hnd single-def <System.Object>
+;  V01 arg1         [V01,T02] (  4,  2.28)     ref  ->  rsi         class-hnd single-def <System.Threading.Thread>
+;  V02 loc0         [V02,T03] (  6,  2.56)     ref  ->  rcx         class-hnd single-def <System.Threading.Tasks.Task>
 ;  V03 OutArgs      [V03    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "updating class info" <System.Threading.IThreadPoolWorkItem>
 ;* V05 tmp2         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Net.Http.HttpConnection,System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<WaitWithCancellationAsync>d__1[System.Net.Http.HttpConnection]]>
 ;* V06 tmp3         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.KestrelConnection`1[Microsoft.AspNetCore.Connections.ConnectionContext]>
 ;  V07 tmp4         [V07    ] (  6,  2.90)  struct (96) [rsp+0x28]  do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.KestrelConnection`1+<ExecuteAsync>d__8[Microsoft.AspNetCore.Connections.ConnectionContext]>
 ;* V08 tmp5         [V08    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.CompilerServices.AsyncTaskMethodBuilder>
-;  V09 tmp6         [V09,T03] (  2,  1.93)     ref  ->  rcx         class-hnd single-def "dup spill" <<unknown class>>
+;  V09 tmp6         [V09,T04] (  2,  1.93)     ref  ->  rcx         class-hnd single-def "dup spill" <<unknown class>>
 ;* V10 tmp7         [V10    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V11 tmp8         [V11    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V08.m_task (fldOffset=0x0)" P-INDEP
+;  V12 rat0         [V12,T00] (  6,  8   )     ref  ->  rcx         class-hnd "replacement local" <System.Threading.Tasks.Task>
 ;
 ; Lcl frame size = 136
 
@@ -40,22 +41,44 @@ G_M60059_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        ; gcrRegs +[rsi]
                        ;; size=51 bbWeight=1 PerfScore 9.33
 G_M60059_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+       mov      rcx, rbx
+       ; gcrRegs +[rcx]
+       test     rcx, rcx
+       je       SHORT G_M60059_IG06
+                       ;; size=8 bbWeight=1 PerfScore 1.50
+G_M60059_IG03:        ; bbWeight=0.50, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
+       mov      rdx, 0xD1FFAB1E      ; Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.KestrelConnection`1[Microsoft.AspNetCore.Connections.ConnectionContext]
+       cmp      qword ptr [rcx], rdx
+       je       SHORT G_M60059_IG05
+                       ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M60059_IG04:        ; bbWeight=0.24, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rcx]
        mov      rdx, rbx
        ; gcrRegs +[rdx]
        mov      rcx, 0xD1FFAB1E      ; System.Threading.Tasks.Task
        call     CORINFO_HELP_ISINSTANCEOFCLASS
        ; gcrRegs -[rdx] +[rax]
        ; gcr arg pop 0
-       test     rax, rax
-       jne      SHORT G_M60059_IG05
-                       ;; size=23 bbWeight=1 PerfScore 2.75
-G_M60059_IG03:        ; bbWeight=0.72, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rax rsi]
+       mov      rcx, rax
+       ; gcrRegs +[rcx]
+       jmp      SHORT G_M60059_IG06
+                       ;; size=23 bbWeight=0.24 PerfScore 0.90
+G_M60059_IG05:        ; bbWeight=0.26, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rax rcx]
+       xor      rcx, rcx
+       ; gcrRegs +[rcx]
+                       ;; size=2 bbWeight=0.26 PerfScore 0.07
+G_M60059_IG06:        ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
+       test     rcx, rcx
+       jne      SHORT G_M60059_IG09
+                       ;; size=5 bbWeight=1 PerfScore 1.25
+G_M60059_IG07:        ; bbWeight=0.72, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rcx rsi]
        mov      rdx, 0xD1FFAB1E      ; Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.KestrelConnection`1[Microsoft.AspNetCore.Connections.ConnectionContext]
        cmp      qword ptr [rbx], rdx
-       jne      SHORT G_M60059_IG08
+       jne      SHORT G_M60059_IG12
                        ;; size=15 bbWeight=0.72 PerfScore 3.07
-G_M60059_IG04:        ; bbWeight=0.48, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M60059_IG08:        ; bbWeight=0.48, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        xor      edx, edx
        mov      qword ptr [rsp+0x68], rdx
        mov      gword ptr [rsp+0x28], rbx
@@ -68,37 +91,35 @@ G_M60059_IG04:        ; bbWeight=0.48, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
        mov      rcx, gword ptr [rsp+0x68]
        ; gcrRegs +[rcx]
        test     rcx, rcx
-       jne      SHORT G_M60059_IG06
+       jne      SHORT G_M60059_IG10
        lea      rcx, [rsp+0x68]
        ; gcrRegs -[rcx]
        call     [<unknown method>]
        ; gcrRegs +[rax]
        ; gcr arg pop 0
-       jmp      SHORT G_M60059_IG06
+       jmp      SHORT G_M60059_IG10
                        ;; size=64 bbWeight=0.48 PerfScore 7.14
-G_M60059_IG05:        ; bbWeight=0.28, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs +[rsi]
-       mov      rcx, 0xD1FFAB1E      ; System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Net.Http.HttpConnection,System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<WaitWithCancellationAsync>d__1[System.Net.Http.HttpConnection]]
-       cmp      qword ptr [rax], rcx
-       jne      SHORT G_M60059_IG09
-       mov      rcx, rax
-       ; gcrRegs +[rcx]
+G_M60059_IG09:        ; bbWeight=0.28, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rax] +[rcx rsi]
+       mov      rdx, 0xD1FFAB1E      ; System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Net.Http.HttpConnection,System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<WaitWithCancellationAsync>d__1[System.Net.Http.HttpConnection]]
+       cmp      qword ptr [rcx], rdx
+       jne      SHORT G_M60059_IG13
        mov      rdx, rsi
        ; gcrRegs +[rdx]
        call     [System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.__Canon,System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<WaitWithCancellationAsync>d__1[System.__Canon]]:MoveNext(System.Threading.Thread):this]
-       ; gcrRegs -[rax rcx rdx rsi]
+       ; gcrRegs -[rcx rdx rsi]
        ; gcr arg pop 0
-                       ;; size=27 bbWeight=0.28 PerfScore 2.15
-G_M60059_IG06:        ; bbWeight=0.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+                       ;; size=24 bbWeight=0.28 PerfScore 2.08
+G_M60059_IG10:        ; bbWeight=0.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        nop      
                        ;; size=1 bbWeight=0.28 PerfScore 0.07
-G_M60059_IG07:        ; bbWeight=0.28, epilog, nogc, extend
+G_M60059_IG11:        ; bbWeight=0.28, epilog, nogc, extend
        add      rsp, 136
        pop      rbx
        pop      rsi
        ret      
                        ;; size=10 bbWeight=0.28 PerfScore 0.63
-G_M60059_IG08:        ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60059_IG12:        ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs +[rbx]
        mov      rcx, rbx
        ; gcrRegs +[rcx]
@@ -106,24 +127,21 @@ G_M60059_IG08:        ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=000
        call     [r11]<unknown method>
        ; gcrRegs -[rcx rbx]
        ; gcr arg pop 0
-       jmp      SHORT G_M60059_IG06
+       jmp      SHORT G_M60059_IG10
                        ;; size=18 bbWeight=0.72 PerfScore 3.97
-G_M60059_IG09:        ; bbWeight=0, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs +[rax rsi]
-       mov      rcx, rax
-       ; gcrRegs +[rcx]
+G_M60059_IG13:        ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs +[rcx rsi]
        mov      rdx, rsi
        ; gcrRegs +[rdx]
-       mov      rax, qword ptr [rax]
-       ; gcrRegs -[rax]
+       mov      rax, qword ptr [rcx]
        mov      rax, qword ptr [rax+0x48]
        call     [rax+0x18]<unknown method>
        ; gcrRegs -[rcx rdx rsi]
        ; gcr arg pop 0
-       jmp      SHORT G_M60059_IG06
-                       ;; size=18 bbWeight=0 PerfScore 0.00
+       jmp      SHORT G_M60059_IG10
+                       ;; size=15 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 227, prolog size 45, PerfScore 29.11, instruction count 53, allocated bytes for code 227 (MethodHash=13841564) for method System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)
+; Total bytes of code 251, prolog size 45, PerfScore 32.13, instruction count 60, allocated bytes for code 251 (MethodHash=13841564) for method System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)
 ; ============================================================
 
 Unwind Info:

+23 (+11.73%) : 113150.dasm - OrchardCore.Liquid.Startup+<>c:b_13(System.Object):System.Object:this (Tier1)

@@ -10,19 +10,20 @@
 ; Final local variable assignments
 ;
 ;* V00 this         [V00    ] (  0,  0   )     ref  ->  zero-ref    this class-hnd single-def <OrchardCore.Liquid.Startup+<>c>
-;  V01 arg1         [V01,T00] (  6,  3.94)     ref  ->  rbx         class-hnd single-def <System.Object>
-;  V02 loc0         [V02,T02] (  3,  2.47)     ref  ->  rsi         class-hnd single-def <Newtonsoft.Json.Linq.JObject>
-;  V03 loc1         [V03,T05] (  3,  1.18)     ref  ->  rax         class-hnd single-def <Newtonsoft.Json.Linq.JValue>
+;  V01 arg1         [V01,T01] (  7,  4.17)     ref  ->  rbx         class-hnd single-def <System.Object>
+;  V02 loc0         [V02,T03] (  3,  2.47)     ref  ->  rsi         class-hnd single-def <Newtonsoft.Json.Linq.JObject>
+;  V03 loc1         [V03,T06] (  3,  1.18)     ref  ->  rax         class-hnd single-def <Newtonsoft.Json.Linq.JValue>
 ;* V04 loc2         [V04    ] (  0,  0   )  struct ( 8) zero-ref    <System.DateTime>
-;  V05 loc3         [V05,T04] (  5,  2   )     ref  ->  rsi         class-hnd <System.Object>
+;  V05 loc3         [V05,T05] (  5,  2   )     ref  ->  rsi         class-hnd <System.Object>
 ;  V06 OutArgs      [V06    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V07 tmp1         [V07,T01] (  3,  2.83)     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
-;  V08 tmp2         [V08,T03] (  3,  2.04)     ref  ->  rcx         class-hnd "spilling QMark2" <System.DateTime>
-;  V09 tmp3         [V09,T06] (  3,  0.04)     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.DateTime>
-;  V10 tmp4         [V10,T07] (  3,  0.04)     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
+;  V07 tmp1         [V07,T02] (  3,  2.83)     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
+;  V08 tmp2         [V08,T04] (  3,  2.04)     ref  ->  rcx         class-hnd "spilling QMark2" <System.DateTime>
+;  V09 tmp3         [V09,T07] (  3,  0.04)     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.DateTime>
+;  V10 tmp4         [V10,T08] (  3,  0.04)     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
 ;* V11 tmp5         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.DateTime>
 ;* V12 tmp6         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.DateTime>
-;  V13 tmp7         [V13,T08] (  2,  0.01)    long  ->  rsi         single-def "field V04._dateData (fldOffset=0x0)" P-INDEP
+;  V13 tmp7         [V13,T09] (  2,  0.01)    long  ->  rsi         single-def "field V04._dateData (fldOffset=0x0)" P-INDEP
+;  V14 rat0         [V14,T00] (  5,  7.45)     ref  ->  rsi         class-hnd "replacement local" <Newtonsoft.Json.Linq.JObject>
 ;
 ; Lcl frame size = 40
 
@@ -34,6 +35,18 @@ G_M10757_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        ; gcrRegs +[rbx]
                        ;; size=9 bbWeight=1 PerfScore 2.50
 G_M10757_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+       mov      rsi, rbx
+       ; gcrRegs +[rsi]
+       test     rsi, rsi
+       je       SHORT G_M10757_IG05
+                       ;; size=8 bbWeight=1 PerfScore 1.50
+G_M10757_IG03:        ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+       mov      rdx, 0xD1FFAB1E      ; Newtonsoft.Json.Linq.JObject
+       cmp      qword ptr [rsi], rdx
+       je       SHORT G_M10757_IG05
+                       ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M10757_IG04:        ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rsi]
        mov      rdx, rbx
        ; gcrRegs +[rdx]
        mov      rcx, 0xD1FFAB1E      ; Newtonsoft.Json.Linq.JObject
@@ -42,11 +55,14 @@ G_M10757_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
        ; gcr arg pop 0
        mov      rsi, rax
        ; gcrRegs +[rsi]
+                       ;; size=21 bbWeight=0.23 PerfScore 0.39
+G_M10757_IG05:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rax]
        test     rsi, rsi
-       jne      SHORT G_M10757_IG07
-                       ;; size=26 bbWeight=1 PerfScore 3.00
-G_M10757_IG03:        ; bbWeight=0.53, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rax rsi]
+       jne      SHORT G_M10757_IG10
+                       ;; size=5 bbWeight=1 PerfScore 1.25
+G_M10757_IG06:        ; bbWeight=0.53, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rsi]
        mov      rdx, rbx
        ; gcrRegs +[rdx]
        mov      rcx, 0xD1FFAB1E      ; Newtonsoft.Json.Linq.JValue
@@ -54,21 +70,21 @@ G_M10757_IG03:        ; bbWeight=0.53, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
        ; gcrRegs -[rdx] +[rax]
        ; gcr arg pop 0
        test     rax, rax
-       jne      G_M10757_IG11
+       jne      G_M10757_IG14
                        ;; size=27 bbWeight=0.53 PerfScore 1.45
-G_M10757_IG04:        ; bbWeight=0.41, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M10757_IG07:        ; bbWeight=0.41, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rax]
        mov      rcx, rbx
        ; gcrRegs +[rcx]
        test     rcx, rcx
-       je       SHORT G_M10757_IG10
+       je       SHORT G_M10757_IG13
                        ;; size=8 bbWeight=0.41 PerfScore 0.61
-G_M10757_IG05:        ; bbWeight=0.20, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+G_M10757_IG08:        ; bbWeight=0.20, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
        mov      rax, 0xD1FFAB1E      ; System.DateTime
        cmp      qword ptr [rcx], rax
-       jne      SHORT G_M10757_IG10
+       jne      SHORT G_M10757_IG13
                        ;; size=15 bbWeight=0.20 PerfScore 0.87
-G_M10757_IG06:        ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M10757_IG09:        ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rcx]
        mov      rsi, qword ptr [rbx+0x08]
        mov      rcx, 0xD1FFAB1E      ; System.DateTime
@@ -90,9 +106,9 @@ G_M10757_IG06:        ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
        call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rax rdx rbx]
        ; byrRegs -[rcx]
-       jmp      SHORT G_M10757_IG08
+       jmp      SHORT G_M10757_IG11
                        ;; size=58 bbWeight=0.01 PerfScore 0.06
-G_M10757_IG07:        ; bbWeight=0.47, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M10757_IG10:        ; bbWeight=0.47, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
        mov      rcx, 0xD1FFAB1E      ; Fluid.Values.ObjectValue
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
@@ -109,31 +125,31 @@ G_M10757_IG07:        ; bbWeight=0.47, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
        mov      rsi, rbx
        ; gcrRegs +[rsi]
                        ;; size=33 bbWeight=0.47 PerfScore 1.65
-G_M10757_IG08:        ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M10757_IG11:        ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbx]
        mov      rax, rsi
        ; gcrRegs +[rax]
                        ;; size=3 bbWeight=1 PerfScore 0.25
-G_M10757_IG09:        ; bbWeight=1, epilog, nogc, extend
+G_M10757_IG12:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 40
        pop      rbx
        pop      rsi
        ret      
                        ;; size=7 bbWeight=1 PerfScore 2.25
-G_M10757_IG10:        ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10757_IG13:        ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs -[rax rsi]
        xor      rsi, rsi
        ; gcrRegs +[rsi]
-       jmp      SHORT G_M10757_IG08
+       jmp      SHORT G_M10757_IG11
                        ;; size=4 bbWeight=0.40 PerfScore 0.90
-G_M10757_IG11:        ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+G_M10757_IG14:        ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rsi] +[rax]
        mov      rsi, gword ptr [rax+0x28]
        ; gcrRegs +[rsi]
-       jmp      SHORT G_M10757_IG08
+       jmp      SHORT G_M10757_IG11
                        ;; size=6 bbWeight=0.12 PerfScore 0.48
 
-; Total bytes of code 196, prolog size 6, PerfScore 14.03, instruction count 49, allocated bytes for code 196 (MethodHash=1d8cd5fa) for method OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
+; Total bytes of code 219, prolog size 6, PerfScore 16.30, instruction count 55, allocated bytes for code 219 (MethodHash=1d8cd5fa) for method OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
 ; ============================================================
 
 Unwind Info:

+23 (+11.73%) : 96259.dasm - OrchardCore.Liquid.Startup+<>c:b_13(System.Object):System.Object:this (Tier1)

@@ -10,19 +10,20 @@
 ; Final local variable assignments
 ;
 ;* V00 this         [V00    ] (  0,  0   )     ref  ->  zero-ref    this class-hnd single-def <OrchardCore.Liquid.Startup+<>c>
-;  V01 arg1         [V01,T00] (  6,  3.93)     ref  ->  rbx         class-hnd single-def <System.Object>
-;  V02 loc0         [V02,T02] (  3,  2.48)     ref  ->  rsi         class-hnd single-def <Newtonsoft.Json.Linq.JObject>
-;  V03 loc1         [V03,T05] (  3,  1.16)     ref  ->  rax         class-hnd single-def <Newtonsoft.Json.Linq.JValue>
+;  V01 arg1         [V01,T01] (  7,  4.17)     ref  ->  rbx         class-hnd single-def <System.Object>
+;  V02 loc0         [V02,T03] (  3,  2.48)     ref  ->  rsi         class-hnd single-def <Newtonsoft.Json.Linq.JObject>
+;  V03 loc1         [V03,T06] (  3,  1.16)     ref  ->  rax         class-hnd single-def <Newtonsoft.Json.Linq.JValue>
 ;* V04 loc2         [V04    ] (  0,  0   )  struct ( 8) zero-ref    <System.DateTime>
-;  V05 loc3         [V05,T04] (  5,  2.00)     ref  ->  rsi         class-hnd <System.Object>
+;  V05 loc3         [V05,T05] (  5,  2.00)     ref  ->  rsi         class-hnd <System.Object>
 ;  V06 OutArgs      [V06    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V07 tmp1         [V07,T01] (  3,  2.88)     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
-;  V08 tmp2         [V08,T03] (  3,  2.01)     ref  ->  rcx         class-hnd "spilling QMark2" <System.DateTime>
-;  V09 tmp3         [V09,T06] (  3,  0.02)     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.DateTime>
-;  V10 tmp4         [V10,T07] (  3,  0.02)     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
+;  V07 tmp1         [V07,T02] (  3,  2.88)     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
+;  V08 tmp2         [V08,T04] (  3,  2.01)     ref  ->  rcx         class-hnd "spilling QMark2" <System.DateTime>
+;  V09 tmp3         [V09,T07] (  3,  0.02)     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.DateTime>
+;  V10 tmp4         [V10,T08] (  3,  0.02)     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
 ;* V11 tmp5         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.DateTime>
 ;* V12 tmp6         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.DateTime>
-;  V13 tmp7         [V13,T08] (  2,  0.01)    long  ->  rsi         single-def "field V04._dateData (fldOffset=0x0)" P-INDEP
+;  V13 tmp7         [V13,T09] (  2,  0.01)    long  ->  rsi         single-def "field V04._dateData (fldOffset=0x0)" P-INDEP
+;  V14 rat0         [V14,T00] (  5,  7.48)     ref  ->  rsi         class-hnd "replacement local" <Newtonsoft.Json.Linq.JObject>
 ;
 ; Lcl frame size = 40
 
@@ -34,6 +35,18 @@ G_M10757_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        ; gcrRegs +[rbx]
                        ;; size=9 bbWeight=1 PerfScore 2.50
 G_M10757_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+       mov      rsi, rbx
+       ; gcrRegs +[rsi]
+       test     rsi, rsi
+       je       SHORT G_M10757_IG05
+                       ;; size=8 bbWeight=1 PerfScore 1.50
+G_M10757_IG03:        ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+       mov      rdx, 0xD1FFAB1E      ; Newtonsoft.Json.Linq.JObject
+       cmp      qword ptr [rsi], rdx
+       je       SHORT G_M10757_IG05
+                       ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M10757_IG04:        ; bbWeight=0.24, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rsi]
        mov      rdx, rbx
        ; gcrRegs +[rdx]
        mov      rcx, 0xD1FFAB1E      ; Newtonsoft.Json.Linq.JObject
@@ -42,11 +55,14 @@ G_M10757_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
        ; gcr arg pop 0
        mov      rsi, rax
        ; gcrRegs +[rsi]
+                       ;; size=21 bbWeight=0.24 PerfScore 0.42
+G_M10757_IG05:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rax]
        test     rsi, rsi
-       jne      SHORT G_M10757_IG07
-                       ;; size=26 bbWeight=1 PerfScore 3.00
-G_M10757_IG03:        ; bbWeight=0.52, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rax rsi]
+       jne      SHORT G_M10757_IG10
+                       ;; size=5 bbWeight=1 PerfScore 1.25
+G_M10757_IG06:        ; bbWeight=0.52, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rsi]
        mov      rdx, rbx
        ; gcrRegs +[rdx]
        mov      rcx, 0xD1FFAB1E      ; Newtonsoft.Json.Linq.JValue
@@ -54,21 +70,21 @@ G_M10757_IG03:        ; bbWeight=0.52, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
        ; gcrRegs -[rdx] +[rax]
        ; gcr arg pop 0
        test     rax, rax
-       jne      G_M10757_IG11
+       jne      G_M10757_IG14
                        ;; size=27 bbWeight=0.52 PerfScore 1.43
-G_M10757_IG04:        ; bbWeight=0.40, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M10757_IG07:        ; bbWeight=0.40, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rax]
        mov      rcx, rbx
        ; gcrRegs +[rcx]
        test     rcx, rcx
-       je       SHORT G_M10757_IG10
+       je       SHORT G_M10757_IG13
                        ;; size=8 bbWeight=0.40 PerfScore 0.60
-G_M10757_IG05:        ; bbWeight=0.20, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+G_M10757_IG08:        ; bbWeight=0.20, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
        mov      rax, 0xD1FFAB1E      ; System.DateTime
        cmp      qword ptr [rcx], rax
-       jne      SHORT G_M10757_IG10
+       jne      SHORT G_M10757_IG13
                        ;; size=15 bbWeight=0.20 PerfScore 0.86
-G_M10757_IG06:        ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M10757_IG09:        ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rcx]
        mov      rsi, qword ptr [rbx+0x08]
        mov      rcx, 0xD1FFAB1E      ; System.DateTime
@@ -90,9 +106,9 @@ G_M10757_IG06:        ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
        call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rax rdx rbx]
        ; byrRegs -[rcx]
-       jmp      SHORT G_M10757_IG08
+       jmp      SHORT G_M10757_IG11
                        ;; size=58 bbWeight=0.00 PerfScore 0.03
-G_M10757_IG07:        ; bbWeight=0.48, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M10757_IG10:        ; bbWeight=0.48, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
        mov      rcx, 0xD1FFAB1E      ; Fluid.Values.ObjectValue
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
@@ -109,31 +125,31 @@ G_M10757_IG07:        ; bbWeight=0.48, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
        mov      rsi, rbx
        ; gcrRegs +[rsi]
                        ;; size=33 bbWeight=0.48 PerfScore 1.68
-G_M10757_IG08:        ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M10757_IG11:        ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbx]
        mov      rax, rsi
        ; gcrRegs +[rax]
                        ;; size=3 bbWeight=1 PerfScore 0.25
-G_M10757_IG09:        ; bbWeight=1, epilog, nogc, extend
+G_M10757_IG12:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 40
        pop      rbx
        pop      rsi
        ret      
                        ;; size=7 bbWeight=1 PerfScore 2.25
-G_M10757_IG10:        ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10757_IG13:        ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs -[rax rsi]
        xor      rsi, rsi
        ; gcrRegs +[rsi]
-       jmp      SHORT G_M10757_IG08
+       jmp      SHORT G_M10757_IG11
                        ;; size=4 bbWeight=0.40 PerfScore 0.90
-G_M10757_IG11:        ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+G_M10757_IG14:        ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rsi] +[rax]
        mov      rsi, gword ptr [rax+0x28]
        ; gcrRegs +[rsi]
-       jmp      SHORT G_M10757_IG08
+       jmp      SHORT G_M10757_IG11
                        ;; size=6 bbWeight=0.12 PerfScore 0.47
 
-; Total bytes of code 196, prolog size 6, PerfScore 13.97, instruction count 49, allocated bytes for code 196 (MethodHash=1d8cd5fa) for method OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
+; Total bytes of code 219, prolog size 6, PerfScore 16.27, instruction count 55, allocated bytes for code 219 (MethodHash=1d8cd5fa) for method OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
 ; ============================================================
 
 Unwind Info:

+33 (+16.84%) : 92536.dasm - OrchardCore.Liquid.Startup+<>c:b_13(System.Object):System.Object:this (Tier1)

@@ -10,30 +10,32 @@
 ; Final local variable assignments
 ;
 ;* V00 this         [V00    ] (  0,  0   )     ref  ->  zero-ref    this class-hnd single-def <OrchardCore.Liquid.Startup+<>c>
-;  V01 arg1         [V01,T00] (  6,  3.93)     ref  ->  rbx         class-hnd single-def <System.Object>
-;  V02 loc0         [V02,T02] (  3,  2.48)     ref  ->  rsi         class-hnd single-def <Newtonsoft.Json.Linq.JObject>
-;  V03 loc1         [V03,T05] (  3,  1.17)     ref  ->  rax         class-hnd single-def <Newtonsoft.Json.Linq.JValue>
+;  V01 arg1         [V01,T00] (  7,  4.05)     ref  ->  rbx         class-hnd single-def <System.Object>
+;  V02 loc0         [V02,T03] (  3,  2.48)     ref  ->  rsi         class-hnd single-def <Newtonsoft.Json.Linq.JObject>
+;  V03 loc1         [V03,T06] (  3,  1.17)     ref  ->  rdi         class-hnd single-def <Newtonsoft.Json.Linq.JValue>
 ;* V04 loc2         [V04    ] (  0,  0   )  struct ( 8) zero-ref    <System.DateTime>
-;  V05 loc3         [V05,T04] (  5,  2.00)     ref  ->  rsi         class-hnd <System.Object>
+;  V05 loc3         [V05,T05] (  5,  2.00)     ref  ->  rbx         class-hnd <System.Object>
 ;  V06 OutArgs      [V06    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V07 tmp1         [V07,T01] (  3,  2.86)     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
-;  V08 tmp2         [V08,T03] (  3,  2.01)     ref  ->  rcx         class-hnd "spilling QMark2" <System.DateTime>
-;  V09 tmp3         [V09,T06] (  3,  0.01)     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.DateTime>
-;  V10 tmp4         [V10,T07] (  3,  0.01)     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
+;  V07 tmp1         [V07,T02] (  3,  2.86)     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
+;  V08 tmp2         [V08,T04] (  3,  2.01)     ref  ->  rcx         class-hnd "spilling QMark2" <System.DateTime>
+;  V09 tmp3         [V09,T07] (  3,  0.01)     ref  ->  rdi         class-hnd exact single-def "Single-def Box Helper" <System.DateTime>
+;  V10 tmp4         [V10,T08] (  3,  0.01)     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
 ;* V11 tmp5         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.DateTime>
 ;* V12 tmp6         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.DateTime>
-;  V13 tmp7         [V13,T08] (  2,  0.00)    long  ->  rsi         single-def "field V04._dateData (fldOffset=0x0)" P-INDEP
+;  V13 tmp7         [V13,T09] (  2,  0.00)    long  ->  rsi         single-def "field V04._dateData (fldOffset=0x0)" P-INDEP
+;  V14 rat0         [V14,T01] (  6,  4.19)     ref  ->  rdi         class-hnd "replacement local" <Newtonsoft.Json.Linq.JValue>
 ;
-; Lcl frame size = 40
+; Lcl frame size = 32
 
 G_M10757_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+       push     rdi
        push     rsi
        push     rbx
-       sub      rsp, 40
+       sub      rsp, 32
        mov      rbx, rdx
        ; gcrRegs +[rbx]
-                       ;; size=9 bbWeight=1 PerfScore 2.50
-G_M10757_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+                       ;; size=10 bbWeight=1 PerfScore 3.50
+G_M10757_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        mov      rdx, rbx
        ; gcrRegs +[rdx]
        mov      rcx, 0xD1FFAB1E      ; Newtonsoft.Json.Linq.JObject
@@ -43,56 +45,79 @@ G_M10757_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
        mov      rsi, rax
        ; gcrRegs +[rsi]
        test     rsi, rsi
-       jne      SHORT G_M10757_IG07
-                       ;; size=26 bbWeight=1 PerfScore 3.00
-G_M10757_IG03:        ; bbWeight=0.52, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+       jne      G_M10757_IG11
+                       ;; size=30 bbWeight=1 PerfScore 3.00
+G_M10757_IG03:        ; bbWeight=0.52, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rax rsi]
+       mov      rdi, rbx
+       ; gcrRegs +[rdi]
+       test     rdi, rdi
+       je       SHORT G_M10757_IG07
+                       ;; size=8 bbWeight=0.52 PerfScore 0.79
+G_M10757_IG04:        ; bbWeight=0.26, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+       mov      rdx, 0xD1FFAB1E      ; OrchardCore.ContentManagement.ContentItem
+       cmp      qword ptr [rdi], rdx
+       je       SHORT G_M10757_IG06
+                       ;; size=15 bbWeight=0.26 PerfScore 1.11
+G_M10757_IG05:        ; bbWeight=0.13, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rdi]
        mov      rdx, rbx
        ; gcrRegs +[rdx]
        mov      rcx, 0xD1FFAB1E      ; Newtonsoft.Json.Linq.JValue
        call     CORINFO_HELP_ISINSTANCEOFCLASS
        ; gcrRegs -[rdx] +[rax]
        ; gcr arg pop 0
-       test     rax, rax
-       jne      G_M10757_IG11
-                       ;; size=27 bbWeight=0.52 PerfScore 1.44
-G_M10757_IG04:        ; bbWeight=0.40, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rax]
+       mov      rdi, rax
+       ; gcrRegs +[rdi]
+       jmp      SHORT G_M10757_IG07
+                       ;; size=23 bbWeight=0.13 PerfScore 0.47
+G_M10757_IG06:        ; bbWeight=0.14, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rax rdi]
+       xor      rdi, rdi
+       ; gcrRegs +[rdi]
+                       ;; size=2 bbWeight=0.14 PerfScore 0.03
+G_M10757_IG07:        ; bbWeight=0.52, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+       test     rdi, rdi
+       jne      G_M10757_IG15
+                       ;; size=9 bbWeight=0.52 PerfScore 0.65
+G_M10757_IG08:        ; bbWeight=0.40, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rdi]
        mov      rcx, rbx
        ; gcrRegs +[rcx]
        test     rcx, rcx
-       je       SHORT G_M10757_IG10
+       je       SHORT G_M10757_IG14
                        ;; size=8 bbWeight=0.40 PerfScore 0.60
-G_M10757_IG05:        ; bbWeight=0.20, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+G_M10757_IG09:        ; bbWeight=0.20, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
        mov      rax, 0xD1FFAB1E      ; System.DateTime
        cmp      qword ptr [rcx], rax
-       jne      SHORT G_M10757_IG10
+       jne      SHORT G_M10757_IG14
                        ;; size=15 bbWeight=0.20 PerfScore 0.85
-G_M10757_IG06:        ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M10757_IG10:        ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rcx]
        mov      rsi, qword ptr [rbx+0x08]
        mov      rcx, 0xD1FFAB1E      ; System.DateTime
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs -[rbx] +[rax]
        ; gcr arg pop 0
-       mov      rbx, rax
-       ; gcrRegs +[rbx]
-       mov      qword ptr [rbx+0x08], rsi
+       mov      rdi, rax
+       ; gcrRegs +[rdi]
+       mov      qword ptr [rdi+0x08], rsi
        mov      rcx, 0xD1FFAB1E      ; Fluid.Values.ObjectValue
        call     CORINFO_HELP_NEWSFAST
        ; gcr arg pop 0
-       mov      rsi, rax
-       ; gcrRegs +[rsi]
-       lea      rcx, bword ptr [rsi+0x08]
+       mov      rbx, rax
+       ; gcrRegs +[rbx]
+       lea      rcx, bword ptr [rbx+0x08]
        ; byrRegs +[rcx]
-       mov      rdx, rbx
+       mov      rdx, rdi
        ; gcrRegs +[rdx]
        call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rdx rbx]
+       ; gcrRegs -[rax rdx rdi]
        ; byrRegs -[rcx]
-       jmp      SHORT G_M10757_IG08
+       jmp      SHORT G_M10757_IG12
                        ;; size=58 bbWeight=0.00 PerfScore 0.01
-G_M10757_IG07:        ; bbWeight=0.48, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M10757_IG11:        ; bbWeight=0.48, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rbx] +[rsi]
        mov      rcx, 0xD1FFAB1E      ; Fluid.Values.ObjectValue
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
@@ -106,34 +131,32 @@ G_M10757_IG07:        ; bbWeight=0.48, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
        call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rax rdx rsi]
        ; byrRegs -[rcx]
-       mov      rsi, rbx
-       ; gcrRegs +[rsi]
-                       ;; size=33 bbWeight=0.48 PerfScore 1.67
-G_M10757_IG08:        ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rbx]
-       mov      rax, rsi
+                       ;; size=30 bbWeight=0.48 PerfScore 1.55
+G_M10757_IG12:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+       mov      rax, rbx
        ; gcrRegs +[rax]
                        ;; size=3 bbWeight=1 PerfScore 0.25
-G_M10757_IG09:        ; bbWeight=1, epilog, nogc, extend
-       add      rsp, 40
+G_M10757_IG13:        ; bbWeight=1, epilog, nogc, extend
+       add      rsp, 32
        pop      rbx
        pop      rsi
+       pop      rdi
        ret      
-                       ;; size=7 bbWeight=1 PerfScore 2.25
-G_M10757_IG10:        ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs -[rax rsi]
-       xor      rsi, rsi
-       ; gcrRegs +[rsi]
-       jmp      SHORT G_M10757_IG08
+                       ;; size=8 bbWeight=1 PerfScore 2.75
+G_M10757_IG14:        ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+       ; gcrRegs -[rax rbx]
+       xor      rbx, rbx
+       ; gcrRegs +[rbx]
+       jmp      SHORT G_M10757_IG12
                        ;; size=4 bbWeight=0.40 PerfScore 0.90
-G_M10757_IG11:        ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rsi] +[rax]
-       mov      rsi, gword ptr [rax+0x28]
-       ; gcrRegs +[rsi]
-       jmp      SHORT G_M10757_IG08
+G_M10757_IG15:        ; bbWeight=0.12, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rbx] +[rdi]
+       mov      rbx, gword ptr [rdi+0x28]
+       ; gcrRegs +[rbx]
+       jmp      SHORT G_M10757_IG12
                        ;; size=6 bbWeight=0.12 PerfScore 0.49
 
-; Total bytes of code 196, prolog size 6, PerfScore 13.97, instruction count 49, allocated bytes for code 196 (MethodHash=1d8cd5fa) for method OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
+; Total bytes of code 229, prolog size 7, PerfScore 16.97, instruction count 59, allocated bytes for code 229 (MethodHash=1d8cd5fa) for method OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -141,11 +164,12 @@ Unwind Info:
   >>   End offset   : 0xd1ffab1e (not in unwind data)
   Version           : 1
   Flags             : 0x00
-  SizeOfProlog      : 0x06
-  CountOfUnwindCodes: 3
+  SizeOfProlog      : 0x07
+  CountOfUnwindCodes: 4
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 4 * 8 + 8 = 40 = 0x28
-    CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
-    CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
+    CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 3 * 8 + 8 = 32 = 0x20
+    CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
+    CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
+    CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)

benchmarks.run_pgo.windows.x64.checked.mch

+38 (+11.95%) : 100256.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)

@@ -10,75 +10,78 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  8,  6.00)     ref  ->  rbx         this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-;  V01 loc0         [V01,T01] (  5,  3.00)     int  ->  rsi        
-;  V02 loc1         [V02,T22] (  3,  0.00)     ref  ->  rdi         class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V03 loc2         [V03,T03] (  7,  2.50)     int  ->  rdi        
-;  V04 loc3         [V04,T11] (  7,  0.00)     int  ->  rbx        
+;  V01 loc0         [V01,T02] (  5,  3.00)     int  ->  rsi        
+;  V02 loc1         [V02,T24] (  3,  0.00)     ref  ->  rbp         class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V03 loc2         [V03,T04] (  7,  2.50)     int  ->  rdi        
+;  V04 loc3         [V04,T13] (  7,  0.00)     int  ->  rdi        
 ;  V05 OutArgs      [V05    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T23] (  3,  0.00)     ref  ->  rdx         single-def "CASTCLASS eval op1"
-;  V07 tmp2         [V07,T25] (  3,  0.00)    long  ->  rcx         "fgMakeTemp is creating a new local variable"
-;  V08 tmp3         [V08,T13] (  5,  0.00)     ref  ->  rdi         class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V09 tmp4         [V09,T14] (  2,  0.00)     ref  ->  rax         class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
-;  V10 tmp5         [V10,T06] (  4,  2   )     int  ->  rsi         "Inline return value spill temp"
-;  V11 tmp6         [V11,T08] (  3,  1.43)     ref  ->  rax         class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V12 tmp7         [V12,T09] (  3,  1.00)     ref  ->  rcx         class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
-;  V13 tmp8         [V13,T05] (  2,  2.00)     ref  ->  rcx         "CASTCLASS eval op1"
+;  V06 tmp1         [V06,T25] (  3,  0.00)     ref  ->  rdx         single-def "CASTCLASS eval op1"
+;  V07 tmp2         [V07,T27] (  3,  0.00)    long  ->  rcx         "fgMakeTemp is creating a new local variable"
+;  V08 tmp3         [V08,T15] (  5,  0.00)     ref  ->  rbp         class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V09 tmp4         [V09,T16] (  2,  0.00)     ref  ->  rax         class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
+;  V10 tmp5         [V10,T08] (  4,  2   )     int  ->  rsi         "Inline return value spill temp"
+;  V11 tmp6         [V11,T10] (  3,  1.43)     ref  ->  rax         class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V12 tmp7         [V12,T11] (  3,  1.00)     ref  ->  rcx         class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+;  V13 tmp8         [V13,T07] (  2,  2.00)     ref  ->  rcx         "CASTCLASS eval op1"
 ;* V14 tmp9         [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
-;  V15 tmp10        [V15,T07] (  4,  1.75)     ref  ->  rcx         class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-;  V16 tmp11        [V16,T04] (  3,  2.00)     ref  ->  rax         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-;  V17 tmp12        [V17,T10] (  4,  0.00)     int  ->  r10         "Inlining Arg"
-;  V18 tmp13        [V18,T26] (  3,  0   )     ref  ->  rax         "arr expr"
-;  V19 tmp14        [V19,T12] (  3,  0.00)     ref  ->  rax         "arr expr"
-;  V20 tmp15        [V20,T15] (  2,  0.00)     ref  ->  rdx         "arr expr"
-;  V21 tmp16        [V21,T16] (  2,  0.00)     ref  ->  rcx         "argument with side effect"
-;  V22 tmp17        [V22,T17] (  2,  0.00)     ref  ->  rdx         "argument with side effect"
-;  V23 cse0         [V23,T19] (  3,  0.00)     int  ->  rcx         "CSE - conservative"
-;  V24 cse1         [V24,T18] (  3,  0.00)     ref  ->  rdx         "CSE - conservative"
-;  V25 cse2         [V25,T24] (  3,  0.00)     int  ->  rsi         "CSE - conservative"
-;  V26 cse3         [V26,T20] (  3,  0.00)     int  ->   r8         "CSE - conservative"
-;  V27 cse4         [V27,T21] (  3,  0.00)     int  ->  rbx         "CSE - conservative"
-;  V28 cse5         [V28,T02] (  3,  2.71)     ref  ->  rdx         "CSE - aggressive"
+;  V15 tmp10        [V15,T09] (  4,  1.75)     ref  ->  rcx         class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
+;  V16 tmp11        [V16,T06] (  3,  2.00)     ref  ->  rbp         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+;  V17 tmp12        [V17,T12] (  4,  0.00)     int  ->  r10         "Inlining Arg"
+;  V18 tmp13        [V18,T28] (  3,  0   )     ref  ->  rax         "arr expr"
+;  V19 tmp14        [V19,T14] (  3,  0.00)     ref  ->  rax         "arr expr"
+;  V20 tmp15        [V20,T17] (  2,  0.00)     ref  ->  rdx         "arr expr"
+;  V21 tmp16        [V21,T18] (  2,  0.00)     ref  ->  rcx         "argument with side effect"
+;  V22 tmp17        [V22,T19] (  2,  0.00)     ref  ->  rdx         "argument with side effect"
+;  V23 cse0         [V23,T21] (  3,  0.00)     int  ->  rcx         "CSE - conservative"
+;  V24 cse1         [V24,T20] (  3,  0.00)     ref  ->  rdx         "CSE - conservative"
+;  V25 cse2         [V25,T26] (  3,  0.00)     int  ->  rsi         "CSE - conservative"
+;  V26 cse3         [V26,T22] (  3,  0.00)     int  ->   r8         "CSE - conservative"
+;  V27 cse4         [V27,T23] (  3,  0.00)     int  ->  rdi         "CSE - conservative"
+;  V28 cse5         [V28,T03] (  3,  2.71)     ref  ->  rdx         "CSE - aggressive"
+;  V29 rat0         [V29,T05] (  3,  2.25)     ref  ->  rdx         "Spilling to split statement for tree"
+;  V30 rat1         [V30,T01] (  5,  3.75)     ref  ->  rbp         class-hnd "replacement local" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
 ;
-; Lcl frame size = 32
+; Lcl frame size = 40
 
 G_M41283_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rdi
        push     rsi
+       push     rbp
        push     rbx
-       sub      rsp, 32
+       sub      rsp, 40
        mov      rbx, rcx
        ; gcrRegs +[rbx]
-                       ;; size=10 bbWeight=1 PerfScore 3.50
-G_M41283_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+                       ;; size=11 bbWeight=1 PerfScore 4.50
+G_M41283_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        call     <unknown method>
        ; gcr arg pop 0
        test     eax, eax
-       je       G_M41283_IG21
+       je       G_M41283_IG24
        test     byte  ptr [rbx+0x28], 64
-       jne      G_M41283_IG21
+       jne      G_M41283_IG24
        mov      rdx, gword ptr [rbx+0x08]
        ; gcrRegs +[rdx]
        test     rdx, rdx
-       je       SHORT G_M41283_IG11
-                       ;; size=32 bbWeight=1 PerfScore 9.50
+       je       G_M41283_IG14
+                       ;; size=36 bbWeight=1 PerfScore 9.50
 G_M41283_IG03:        ; bbWeight=0.71, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
        mov      rcx, 0xD1FFAB1E      ; System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]
        call     CORINFO_HELP_ISINSTANCEOFCLASS
        ; gcrRegs -[rdx] +[rax]
        ; gcr arg pop 0
        test     rax, rax
-       jne      G_M41283_IG23
+       jne      G_M41283_IG26
        mov      esi, 1
                        ;; size=29 bbWeight=0.71 PerfScore 1.96
-G_M41283_IG04:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG04:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
        test     esi, esi
-       je       SHORT G_M41283_IG13
-                       ;; size=4 bbWeight=1 PerfScore 1.25
+       je       G_M41283_IG16
+                       ;; size=8 bbWeight=1 PerfScore 1.25
 G_M41283_IG05:        ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        xor      edi, edi
        test     esi, esi
-       jle      SHORT G_M41283_IG13
+       jle      SHORT G_M41283_IG16
                        ;; size=6 bbWeight=0.50 PerfScore 0.75
 G_M41283_IG06:        ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        mov      rcx, gword ptr [rbx+0x08]
@@ -89,41 +92,59 @@ G_M41283_IG06:        ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
 G_M41283_IG07:        ; bbWeight=0.25, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
        mov      rdx, 0xD1FFAB1E      ; System.Text.RegularExpressions.RegexNode
        cmp      qword ptr [rcx], rdx
-       je       SHORT G_M41283_IG12
+       je       SHORT G_M41283_IG15
                        ;; size=15 bbWeight=0.25 PerfScore 1.06
 G_M41283_IG08:        ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rcx]
        mov      rdx, gword ptr [rbx+0x08]
        ; gcrRegs +[rdx]
+       mov      rbp, rdx
+       ; gcrRegs +[rbp]
+       test     rbp, rbp
+       je       SHORT G_M41283_IG11
+                       ;; size=12 bbWeight=0.50 PerfScore 1.75
+G_M41283_IG09:        ; bbWeight=0.25, gcrefRegs=002C {rdx rbx rbp}, byrefRegs=0000 {}, byref, isz
+       mov      rcx, 0xD1FFAB1E      ; System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]
+       cmp      qword ptr [rbp], rcx
+       je       SHORT G_M41283_IG11
+                       ;; size=16 bbWeight=0.25 PerfScore 1.06
+G_M41283_IG10:        ; bbWeight=0.13, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rbp]
        mov      rcx, 0xD1FFAB1E      ; System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]
        call     CORINFO_HELP_CHKCASTCLASS
        ; gcrRegs -[rdx] +[rax]
        ; gcr arg pop 0
-       cmp      edi, dword ptr [rax+0x10]
-       jb       SHORT G_M41283_IG10
-                       ;; size=24 bbWeight=0.50 PerfScore 3.63
-G_M41283_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rax rbx]
+       mov      rbp, rax
+       ; gcrRegs +[rbp]
+                       ;; size=18 bbWeight=0.13 PerfScore 0.19
+G_M41283_IG11:        ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rax]
+       cmp      edi, dword ptr [rbp+0x10]
+       jb       SHORT G_M41283_IG13
+                       ;; size=5 bbWeight=0.50 PerfScore 2.00
+G_M41283_IG12:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rbx rbp]
        call     [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()]
        ; gcr arg pop 0
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
-G_M41283_IG10:        ; bbWeight=0, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs +[rax rbx]
-       mov      rax, gword ptr [rax+0x08]
+G_M41283_IG13:        ; bbWeight=0, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs +[rbx rbp]
+       mov      rax, gword ptr [rbp+0x08]
+       ; gcrRegs +[rax]
        cmp      edi, dword ptr [rax+0x08]
-       jae      G_M41283_IG20
+       jae      G_M41283_IG23
        mov      ecx, edi
        mov      rcx, gword ptr [rax+8*rcx+0x10]
        ; gcrRegs +[rcx]
-       jmp      SHORT G_M41283_IG12
+       jmp      SHORT G_M41283_IG15
                        ;; size=22 bbWeight=0 PerfScore 0.00
-G_M41283_IG11:        ; bbWeight=0.29, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rax rcx]
+G_M41283_IG14:        ; bbWeight=0.29, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rax rcx rbp]
        xor      esi, esi
        jmp      SHORT G_M41283_IG04
                        ;; size=4 bbWeight=0.29 PerfScore 0.64
-G_M41283_IG12:        ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG15:        ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[rcx]
        cmp      dword ptr [rcx], ecx
        call     [System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this]
@@ -133,96 +154,97 @@ G_M41283_IG12:        ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000
        cmp      edi, esi
        jl       SHORT G_M41283_IG06
                        ;; size=14 bbWeight=0.50 PerfScore 3.75
-G_M41283_IG13:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG16:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        cmp      byte  ptr [rbx+0x2E], 25
-       jne      SHORT G_M41283_IG21
+       jne      SHORT G_M41283_IG24
                        ;; size=6 bbWeight=1 PerfScore 4.00
-G_M41283_IG14:        ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG17:        ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        mov      rdx, gword ptr [rbx+0x08]
        ; gcrRegs +[rdx]
-       mov      rdi, rdx
-       ; gcrRegs +[rdi]
-       test     rdi, rdi
-       jne      SHORT G_M41283_IG18
+       mov      rbp, rdx
+       ; gcrRegs +[rbp]
+       test     rbp, rbp
+       jne      SHORT G_M41283_IG21
                        ;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG15:        ; bbWeight=0.00, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG18:        ; bbWeight=0.00, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rdx rbx]
-       xor      ebx, ebx
+       xor      edi, edi
        dec      esi
        test     esi, esi
-       jle      SHORT G_M41283_IG21
+       jle      SHORT G_M41283_IG24
                        ;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG16:        ; bbWeight=0.00, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
-       mov      ecx, dword ptr [rdi+0x10]
-       cmp      ebx, ecx
-       jae      SHORT G_M41283_IG09
-       mov      rdx, gword ptr [rdi+0x08]
+G_M41283_IG19:        ; bbWeight=0.00, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
+       mov      ecx, dword ptr [rbp+0x10]
+       cmp      edi, ecx
+       jae      SHORT G_M41283_IG12
+       mov      rdx, gword ptr [rbp+0x08]
        ; gcrRegs +[rdx]
        mov      rax, rdx
        ; gcrRegs +[rax]
        mov      r8d, dword ptr [rax+0x08]
-       cmp      ebx, r8d
-       jae      SHORT G_M41283_IG20
-       mov      r10d, ebx
+       cmp      edi, r8d
+       jae      SHORT G_M41283_IG23
+       mov      r10d, edi
        mov      rax, gword ptr [rax+8*r10+0x10]
-       inc      ebx
-       mov      r10d, ebx
+       inc      edi
+       mov      r10d, edi
...

coreclr_tests.run.windows.x64.checked.mch

-43 (-3.48%) : 371075.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

@@ -15,75 +15,74 @@
 ;  V03 loc1         [V03,T04] (  8,  5.68)     ref  ->  r14         class-hnd exact <Internal.TypeSystem.InstantiatedType>
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct (32) [rsp+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,T34] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V07 tmp3         [V07,T33] (  2,  0.82)     ref  ->  rcx         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-;  V08 tmp4         [V08,T21] (  3,  1.64)    long  ->  rax         "fgMakeTemp is creating a new local variable"
-;  V09 tmp5         [V09,T46] (  2,  0   )     ref  ->  rbx         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2         [V06,T33] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V07 tmp3         [V07,T32] (  2,  0.82)     ref  ->  rcx         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+;  V08 tmp4         [V08,T20] (  3,  1.64)    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V09 tmp5         [V09,T45] (  2,  0   )     ref  ->  rbx         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
 ;  V10 tmp6         [V10,T06] (  7,  4.89)     ref  ->  r15         class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
 ;  V11 tmp7         [V11,T05] ( 14,  5.18)     ref  ->  rbp         "guarded devirt return temp"
 ;* V12 tmp8         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-;  V13 tmp9         [V13,T13] (  8,  2.40)     ref  ->  r13         "guarded devirt return temp"
+;  V13 tmp9         [V13,T12] (  8,  2.40)     ref  ->  r13         "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,T18] (  4,  1.77)     ref  ->  rsi         "guarded devirt return temp"
+;  V15 tmp11        [V15,T17] (  4,  1.77)     ref  ->  rsi         "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,T20] (  8,  1.71)     ref  ->  r14         "guarded devirt return temp"
+;  V17 tmp13        [V17,T19] (  8,  1.71)     ref  ->  r14         "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.18)     int  ->  rcx        
-;  V21 tmp17        [V21,T25] (  3,  1.36)     ref  ->  r12         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;  V20 tmp16        [V20,T28] (  3,  1.18)     int  ->  rcx        
+;  V21 tmp17        [V21,T24] (  3,  1.36)     ref  ->  r12         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,T36] (  3,  0.68)     ref  ->  rax         "guarded devirt return temp"
+;  V23 tmp19        [V23,T35] (  3,  0.68)     ref  ->  rax         "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.68)     ref  ->  r12         "guarded devirt return temp"
-;  V26 tmp22        [V26,T16] (  5,  2.04)     ref  ->  rcx         single-def "guarded devirt arg temp"
+;  V25 tmp21        [V25,T36] (  3,  0.68)     ref  ->  r12         "guarded devirt return temp"
+;  V26 tmp22        [V26,T15] (  5,  2.04)     ref  ->  rcx         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,T38] (  3,  0.68)     ref  ->  rax         "guarded devirt return temp"
-;  V29 tmp25        [V29,T17] (  5,  2.04)     ref  ->  rcx         single-def "guarded devirt arg temp"
+;  V28 tmp24        [V28,T37] (  3,  0.68)     ref  ->  rax         "guarded devirt return temp"
+;  V29 tmp25        [V29,T16] (  5,  2.04)     ref  ->  rcx         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,T15] (  5,  2.09)     ref  ->  rcx         class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-;  V32 tmp28        [V32,T35] (  3,  0.70)     ref  ->  rsi         "guarded devirt return temp"
+;  V31 tmp27        [V31,T14] (  5,  2.09)     ref  ->  rcx         class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+;  V32 tmp28        [V32,T34] (  3,  0.70)     ref  ->  rsi         "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,T02] (  5,  5.89)     ref  ->  rcx         class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
 ;  V36 tmp32        [V36,T03] (  5,  5.89)     ref  ->  rcx         class-hnd "spilling QMark2" <<unknown class>>
 ;* V37 tmp33        [V37    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
 ;  V38 tmp34        [V38,T07] (  4,  3.66)     ref  ->  rsi         class-hnd exact single-def "impAppendStmt" <<unknown class>>
-;  V39 tmp35        [V39,T14] (  2,  2.36)     int  ->  rbx         "impAppendStmt"
-;  V40 tmp36        [V40,T27] (  4,  1.18)     ref  ->  rcx         "guarded devirt return temp"
+;  V39 tmp35        [V39,T13] (  2,  2.36)     int  ->  rbx         "impAppendStmt"
+;  V40 tmp36        [V40,T26] (  4,  1.18)     ref  ->  rcx         "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,T44] (  2,  0.00)   byref  ->  r12         single-def "impAppendStmt"
-;  V43 tmp39        [V43,T45] (  3,  0.00)     int  ->  rax         "guarded devirt return temp"
-;  V44 tmp40        [V44,T43] (  5,  0.01)     ref  ->  rcx         single-def "guarded devirt arg temp"
+;  V42 tmp38        [V42,T43] (  2,  0.00)   byref  ->  r12         single-def "impAppendStmt"
+;  V43 tmp39        [V43,T44] (  3,  0.00)     int  ->  rax         "guarded devirt return temp"
+;  V44 tmp40        [V44,T42] (  5,  0.01)     ref  ->  rcx         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.18)     ref  ->  rax         class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+;  V47 tmp43        [V47,T27] (  3,  1.18)     ref  ->  rax         class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
 ;* V48 tmp44        [V48    ] (  0,  0   )  struct (24) zero-ref    "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
 ;  V49 tmp45        [V49    ] (  2,  1.11)     ref  ->  [rsp+0x40]  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,T22] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-;  V51 tmp47        [V51,T10] (  4,  2.67)     ref  ->  rax         class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-;  V52 tmp48        [V52,T32] (  3,  0.82)     int  ->  rcx        
-;  V53 tmp49        [V53,T31] (  3,  0.95)     ref  ->  rdi         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V50 tmp46        [V50,T21] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+;  V51 tmp47        [V51,T09] (  3,  2.46)     ref  ->  rax         class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+;  V52 tmp48        [V52,T31] (  3,  0.82)     int  ->  rcx        
+;  V53 tmp49        [V53,T30] (  3,  0.95)     ref  ->  rdi         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,T39] (  3,  0.47)     ref  ->  rax         "guarded devirt return temp"
+;  V55 tmp51        [V55,T38] (  3,  0.47)     ref  ->  rax         "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,T40] (  3,  0.47)     ref  ->  rdi         "guarded devirt return temp"
-;  V58 tmp54        [V58,T23] (  5,  1.42)     ref  ->  rcx         single-def "guarded devirt arg temp"
+;  V57 tmp53        [V57,T39] (  3,  0.47)     ref  ->  rdi         "guarded devirt return temp"
+;  V58 tmp54        [V58,T22] (  5,  1.42)     ref  ->  rcx         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,T41] (  3,  0.47)     ref  ->  rax         "guarded devirt return temp"
-;  V61 tmp57        [V61,T24] (  5,  1.42)     ref  ->  rcx         single-def "guarded devirt arg temp"
+;  V60 tmp56        [V60,T40] (  3,  0.47)     ref  ->  rax         "guarded devirt return temp"
+;  V61 tmp57        [V61,T23] (  5,  1.42)     ref  ->  rcx         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,T12] (  8,  2.42)     ref  ->  rbp         single-def "field V37._typicalMethodDef (fldOffset=0x0)" P-INDEP
-;  V64 tmp60        [V64,T11] (  8,  2.42)     ref  ->  r14         single-def "field V37._instantiatedType (fldOffset=0x8)" P-INDEP
-;  V65 tmp61        [V65,T26] (  3,  1.24)     int  ->  rbx         single-def "field V37._hashcode (fldOffset=0x10)" P-INDEP
+;  V63 tmp59        [V63,T11] (  8,  2.42)     ref  ->  rbp         single-def "field V37._typicalMethodDef (fldOffset=0x0)" P-INDEP
+;  V64 tmp60        [V64,T10] (  8,  2.42)     ref  ->  r14         single-def "field V37._instantiatedType (fldOffset=0x8)" P-INDEP
+;  V65 tmp61        [V65,T25] (  3,  1.24)     int  ->  rbx         single-def "field V37._hashcode (fldOffset=0x10)" 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=0x8)" P-INDEP
 ;* V68 tmp64        [V68    ] (  0,  0   )     int  ->  zero-ref    single-def "field V48._hashcode (fldOffset=0x10)" P-INDEP
 ;  V69 tmp65        [V69    ] (  8,  5.23)  struct (24) [rsp+0x28]  do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-;* V70 tmp66        [V70,T30] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V71 tmp67        [V71,T42] (  2,  0.26)     ref  ->  rcx         single-def "argument with side effect"
-;  V72 cse0         [V72,T19] (  3,  1.77)     ref  ->  rcx         "CSE - moderate"
+;* V70 tmp66        [V70,T29] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;  V71 tmp67        [V71,T41] (  2,  0.26)     ref  ->  rcx         single-def "argument with side effect"
+;  V72 cse0         [V72,T18] (  3,  1.77)     ref  ->  rcx         "CSE - moderate"
 ;  V73 cse1         [V73,T08] (  6,  4.18)    long  ->  rdi         "CSE - aggressive"
-;  V74 rat0         [V74,T09] (  6,  3.29)     ref  ->   r8         class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
 ;
 ; Lcl frame size = 72
 
@@ -156,7 +155,7 @@ G_M10698_IG08:        ; bbWeight=0.59, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0
        mov      r15, gword ptr [r14+0x50]
        ; gcrRegs +[r15]
        cmp      qword ptr [rbp], rdi
-       jne      G_M10698_IG43
+       jne      G_M10698_IG46
        mov      r13, gword ptr [rbp+0x10]
        ; gcrRegs +[r13]
                        ;; size=18 bbWeight=0.59 PerfScore 4.71
@@ -171,12 +170,12 @@ G_M10698_IG10:        ; bbWeight=0.54, gcrefRegs=E028 {rbx rbp r13 r14 r15}, byr
 G_M10698_IG11:        ; bbWeight=0.34, gcrefRegs=E028 {rbx rbp r13 r14 r15}, byrefRegs=0000 {}, byref
        mov      rcx, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaType
        cmp      qword ptr [r15], rcx
-       jne      G_M10698_IG45
+       jne      G_M10698_IG48
        mov      rcx, gword ptr [r15+0x58]
        ; gcrRegs +[rcx]
        mov      rax, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaAssembly
        cmp      qword ptr [rcx], rax
-       jne      G_M10698_IG44
+       jne      G_M10698_IG47
        mov      r12, gword ptr [rcx+0x08]
        ; gcrRegs +[r12]
                        ;; size=46 bbWeight=0.34 PerfScore 4.25
@@ -184,12 +183,12 @@ G_M10698_IG12:        ; bbWeight=0.34, gcrefRegs=F028 {rbx rbp r12 r13 r14 r15},
        ; gcrRegs -[rcx]
        mov      rcx, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaType
        cmp      qword ptr [r13], rcx
-       jne      G_M10698_IG47
+       jne      G_M10698_IG50
        mov      rcx, gword ptr [r13+0x58]
        ; gcrRegs +[rcx]
        mov      rax, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaAssembly
        cmp      qword ptr [rcx], rax
-       jne      G_M10698_IG46
+       jne      G_M10698_IG49
        mov      rax, gword ptr [rcx+0x08]
        ; gcrRegs +[rax]
                        ;; size=47 bbWeight=0.34 PerfScore 4.25
@@ -218,7 +217,7 @@ G_M10698_IG15:        ; bbWeight=0.35, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0
        mov      rcx, gword ptr [rcx+0x58]
        mov      rax, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaAssembly
        cmp      qword ptr [rcx], rax
-       jne      G_M10698_IG48
+       jne      G_M10698_IG51
        mov      rsi, gword ptr [rcx+0x08]
        ; gcrRegs +[rsi]
        jmp      SHORT G_M10698_IG17
@@ -266,11 +265,11 @@ G_M10698_IG17:        ; bbWeight=0.59, gcrefRegs=4060 {rbp rsi r14}, byrefRegs=0
 G_M10698_IG18:        ; bbWeight=0.59, gcrefRegs=4060 {rbp rsi r14}, byrefRegs=0000 {}, byref
        mov      ebx, dword ptr [r14+0x68]
        cmp      qword ptr [rbp], rdi
-       jne      G_M10698_IG40
+       jne      G_M10698_IG53
        mov      rcx, gword ptr [rbp+0x20]
        ; gcrRegs +[rcx]
        test     rcx, rcx
-       je       G_M10698_IG39
+       je       G_M10698_IG52
                        ;; size=27 bbWeight=0.59 PerfScore 5.45
 G_M10698_IG19:        ; bbWeight=0.59, gcrefRegs=4062 {rcx rbp rsi r14}, byrefRegs=0000 {}, byref
        call     [Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int]
@@ -289,7 +288,7 @@ G_M10698_IG19:        ; bbWeight=0.59, gcrefRegs=4062 {rcx rbp rsi r14}, byrefRe
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
        test     eax, eax
-       je       G_M10698_IG41
+       je       G_M10698_IG37
                        ;; size=52 bbWeight=0.59 PerfScore 8.69
 G_M10698_IG20:        ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbp rsi r14]
@@ -316,7 +315,7 @@ G_M10698_IG22:        ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=406
        ; gcrRegs +[rcx]
        mov      rax, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaType
        cmp      qword ptr [rcx], rax
-       jne      G_M10698_IG49
+       jne      G_M10698_IG34
        call     [Internal.TypeSystem.Ecma.EcmaType:GetHashCode():int:this]
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
@@ -342,26 +341,26 @@ G_M10698_IG24:        ; bbWeight=0.41, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0
        cmp      qword ptr [rsi], rcx
        je       G_M10698_IG32
        cmp      qword ptr [rbp], rdi
-       jne      G_M10698_IG53
+       jne      G_M10698_IG41
        mov      r14, gword ptr [rbp+0x10]
        ; gcrRegs +[r14]
                        ;; size=33 bbWeight=0.41 PerfScore 4.21
 G_M10698_IG25:        ; bbWeight=0.41, gcrefRegs=4060 {rbp rsi r14}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbx]
        test     r14, r14
-       je       G_M10698_IG42
+       je       G_M10698_IG36
                        ;; size=9 bbWeight=0.41 PerfScore 0.51
 G_M10698_IG26:        ; bbWeight=0.24, gcrefRegs=4060 {rbp rsi r14}, byrefRegs=0000 {}, byref
        mov      rcx, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaType
        cmp      qword ptr [rsi], rcx
-       jne      G_M10698_IG55
+       jne      G_M10698_IG43
                        ;; size=19 bbWeight=0.24 PerfScore 1.01
 G_M10698_IG27:        ; bbWeight=0.24, gcrefRegs=4060 {rbp rsi r14}, byrefRegs=0000 {}, byref
        mov      rcx, gword ptr [rsi+0x58]
        ; gcrRegs +[rcx]
        mov      rax, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaAssembly
        cmp      qword ptr [rcx], rax
-       jne      G_M10698_IG54
+       jne      G_M10698_IG42
        mov      rdi, gword ptr [rcx+0x08]
        ; gcrRegs +[rdi]
                        ;; size=27 bbWeight=0.24 PerfScore 1.95
@@ -369,12 +368,12 @@ G_M10698_IG28:        ; bbWeight=0.24, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRe
        ; gcrRegs -[rcx]
        mov      rcx, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaType
        cmp      qword ptr [r14], rcx
-       jne      G_M10698_IG57
+       jne      G_M10698_IG45
        mov      rcx, gword ptr [r14+0x58]
        ; gcrRegs +[rcx]
        mov      rax, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaAssembly
        cmp      qword ptr [rcx], rax
-       jne      G_M10698_IG56
+       jne      G_M10698_IG44
        mov      rax, gword ptr [rcx+0x08]
        ; gcrRegs +[rax]
                        ;; size=46 bbWeight=0.24 PerfScore 2.96
@@ -419,31 +418,38 @@ G_M10698_IG32:        ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=004
        ; gcrRegs -[rcx] +[rax]
        ; gcr arg pop 0
        cmp      byte  ptr [rax], al
-       mov      r8, rax
-       ; gcrRegs +[r8]
-       test     r8, r8
-       je       SHORT G_M10698_IG37
-                       ;; size=23 bbWeight=0.41 PerfScore 4.83
-G_M10698_IG33:        ; bbWeight=0.21, gcrefRegs=0149 {rax rbx rsi r8}, byrefRegs=0000 {}, byref, isz
-       mov      rdx, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaMethod
...

-25 (-1.94%) : 367012.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

@@ -15,36 +15,36 @@
 ;  V03 loc1         [V03,T02] (  8,  5.89)     ref  ->  rbp         class-hnd exact <Internal.TypeSystem.InstantiatedType>
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct (32) [rsp+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,T40] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V07 tmp3         [V07,T39] (  2,  0.61)     ref  ->  rcx         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-;  V08 tmp4         [V08,T28] (  3,  1.22)    long  ->  rax         "fgMakeTemp is creating a new local variable"
-;  V09 tmp5         [V09,T48] (  2,  0   )     ref  ->  rbx         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2         [V06,T39] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V07 tmp3         [V07,T38] (  2,  0.61)     ref  ->  rcx         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+;  V08 tmp4         [V08,T27] (  3,  1.22)    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V09 tmp5         [V09,T47] (  2,  0   )     ref  ->  rbx         class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
 ;  V10 tmp6         [V10,T03] (  7,  5.84)     ref  ->  r14         class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
 ;  V11 tmp7         [V11,T07] ( 12,  5.39)     ref  ->  rdi         "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,T09] (  8,  2.92)     ref  ->  r13         "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,T18] (  4,  2.09)     ref  ->  rsi         "guarded devirt return temp"
+;  V15 tmp11        [V15,T17] (  4,  2.09)     ref  ->  rsi         "guarded devirt return temp"
 ;* V16 tmp12        [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;  V17 tmp13        [V17,T27] (  8,  1.29)     ref  ->  rbp         "guarded devirt return temp"
+;  V17 tmp13        [V17,T26] (  8,  1.29)     ref  ->  rbp         "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,T25] (  3,  1.39)     int  ->  rcx        
-;  V21 tmp17        [V21,T21] (  3,  1.67)     ref  ->  r12         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;  V20 tmp16        [V20,T24] (  3,  1.39)     int  ->  rcx        
+;  V21 tmp17        [V21,T20] (  3,  1.67)     ref  ->  r12         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,T32] (  3,  0.83)     ref  ->  rax         "guarded devirt return temp"
+;  V23 tmp19        [V23,T31] (  3,  0.83)     ref  ->  rax         "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,T33] (  3,  0.83)     ref  ->  r12         "guarded devirt return temp"
+;  V25 tmp21        [V25,T32] (  3,  0.83)     ref  ->  r12         "guarded devirt return temp"
 ;  V26 tmp22        [V26,T12] (  5,  2.50)     ref  ->  rcx         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.75)     ref  ->  rax         "guarded devirt return temp"
-;  V29 tmp25        [V29,T16] (  5,  2.25)     ref  ->  rcx         single-def "guarded devirt arg temp"
+;  V28 tmp24        [V28,T35] (  3,  0.75)     ref  ->  rax         "guarded devirt return temp"
+;  V29 tmp25        [V29,T15] (  5,  2.25)     ref  ->  rcx         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,T34] (  3,  0.78)     ref  ->  rsi         "guarded devirt return temp"
-;  V32 tmp28        [V32,T14] (  5,  2.34)     ref  ->  rcx         single-def "guarded devirt arg temp"
+;  V31 tmp27        [V31,T33] (  3,  0.78)     ref  ->  rsi         "guarded devirt return temp"
+;  V32 tmp28        [V32,T13] (  5,  2.34)     ref  ->  rcx         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.EcmaMethod>
-;  V34 tmp30        [V34,T15] (  5,  2.34)     ref  ->  rcx         class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-;  V35 tmp31        [V35,T35] (  3,  0.78)     ref  ->  rsi         "guarded devirt return temp"
+;  V34 tmp30        [V34,T14] (  5,  2.34)     ref  ->  rcx         class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+;  V35 tmp31        [V35,T34] (  3,  0.78)     ref  ->  rsi         "guarded devirt return temp"
 ;* V36 tmp32        [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
 ;* V37 tmp33        [V37    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaType>
 ;  V38 tmp34        [V38,T05] (  4,  5.57)     ref  ->  rcx         class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
@@ -52,41 +52,40 @@
 ;* V40 tmp36        [V40    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
 ;  V41 tmp37        [V41,T04] (  4,  4.34)     ref  ->  rsi         class-hnd exact single-def "impAppendStmt" <<unknown class>>
 ;  V42 tmp38        [V42,T11] (  2,  2.78)     int  ->  rbx         "impAppendStmt"
-;  V43 tmp39        [V43,T23] (  4,  1.39)     ref  ->  rcx         "guarded devirt return temp"
+;  V43 tmp39        [V43,T22] (  4,  1.39)     ref  ->  rcx         "guarded devirt return temp"
 ;* V44 tmp40        [V44    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-;  V45 tmp41        [V45,T46] (  2,  0.00)   byref  ->  r12         single-def "impAppendStmt"
-;  V46 tmp42        [V46,T47] (  3,  0.00)     int  ->  rax         "guarded devirt return temp"
-;  V47 tmp43        [V47,T45] (  5,  0.00)     ref  ->  rcx         single-def "guarded devirt arg temp"
+;  V45 tmp41        [V45,T45] (  2,  0.00)   byref  ->  r12         single-def "impAppendStmt"
+;  V46 tmp42        [V46,T46] (  3,  0.00)     int  ->  rax         "guarded devirt return temp"
+;  V47 tmp43        [V47,T44] (  5,  0.00)     ref  ->  rcx         single-def "guarded devirt arg temp"
 ;* V48 tmp44        [V48    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
 ;* V49 tmp45        [V49    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V50 tmp46        [V50,T24] (  3,  1.39)     ref  ->  rax         class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+;  V50 tmp46        [V50,T23] (  3,  1.39)     ref  ->  rax         class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
 ;* V51 tmp47        [V51    ] (  0,  0   )  struct (24) zero-ref    "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
 ;  V52 tmp48        [V52    ] (  2,  1.31)     ref  ->  [rsp+0x40]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V53 tmp49        [V53,T29] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-;  V54 tmp50        [V54,T20] (  4,  1.93)     ref  ->  rax         class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-;  V55 tmp51        [V55,T38] (  3,  0.61)     int  ->  rcx        
-;  V56 tmp52        [V56,T37] (  3,  0.73)     ref  ->  r12         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V53 tmp49        [V53,T28] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+;  V54 tmp50        [V54,T19] (  3,  1.82)     ref  ->  rax         class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+;  V55 tmp51        [V55,T37] (  3,  0.61)     int  ->  rcx        
+;  V56 tmp52        [V56,T36] (  3,  0.73)     ref  ->  r12         class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
 ;* V57 tmp53        [V57    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V58 tmp54        [V58,T41] (  3,  0.36)     ref  ->  rax         "guarded devirt return temp"
+;  V58 tmp54        [V58,T40] (  3,  0.36)     ref  ->  rax         "guarded devirt return temp"
 ;* V59 tmp55        [V59    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-;  V60 tmp56        [V60,T42] (  3,  0.36)     ref  ->  r12         "guarded devirt return temp"
-;  V61 tmp57        [V61,T30] (  5,  1.09)     ref  ->  rcx         single-def "guarded devirt arg temp"
+;  V60 tmp56        [V60,T41] (  3,  0.36)     ref  ->  r12         "guarded devirt return temp"
+;  V61 tmp57        [V61,T29] (  5,  1.09)     ref  ->  rcx         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,T43] (  3,  0.33)     ref  ->  rax         "guarded devirt return temp"
-;  V64 tmp60        [V64,T31] (  5,  0.98)     ref  ->  rcx         single-def "guarded devirt arg temp"
+;  V63 tmp59        [V63,T42] (  3,  0.33)     ref  ->  rax         "guarded devirt return temp"
+;  V64 tmp60        [V64,T30] (  5,  0.98)     ref  ->  rcx         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.EcmaAssembly>
-;  V66 tmp62        [V66,T17] (  6,  2.17)     ref  ->  rdi         single-def "field V40._typicalMethodDef (fldOffset=0x0)" P-INDEP
+;  V66 tmp62        [V66,T16] (  6,  2.17)     ref  ->  rdi         single-def "field V40._typicalMethodDef (fldOffset=0x0)" P-INDEP
 ;  V67 tmp63        [V67,T10] (  8,  2.87)     ref  ->  rbp         single-def "field V40._instantiatedType (fldOffset=0x8)" P-INDEP
-;  V68 tmp64        [V68,T22] (  3,  1.47)     int  ->  rbx         single-def "field V40._hashcode (fldOffset=0x10)" P-INDEP
+;  V68 tmp64        [V68,T21] (  3,  1.47)     int  ->  rbx         single-def "field V40._hashcode (fldOffset=0x10)" P-INDEP
 ;* V69 tmp65        [V69    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V51._typicalMethodDef (fldOffset=0x0)" P-INDEP
 ;* V70 tmp66        [V70    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V51._instantiatedType (fldOffset=0x8)" P-INDEP
 ;* V71 tmp67        [V71    ] (  0,  0   )     int  ->  zero-ref    single-def "field V51._hashcode (fldOffset=0x10)" P-INDEP
 ;  V72 tmp68        [V72    ] (  8,  6.22)  struct (24) [rsp+0x28]  do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-;* V73 tmp69        [V73,T26] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V74 tmp70        [V74,T44] (  2,  0.33)     ref  ->  rcx         single-def "argument with side effect"
-;  V75 cse0         [V75,T19] (  3,  2.09)     ref  ->  rcx         "CSE - moderate"
+;* V73 tmp69        [V73,T25] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;  V74 tmp70        [V74,T43] (  2,  0.33)     ref  ->  rcx         single-def "argument with side effect"
+;  V75 cse0         [V75,T18] (  3,  2.09)     ref  ->  rcx         "CSE - moderate"
 ;  V76 cse1         [V76,T08] ( 10,  4.09)    long  ->  r15         multi-def "CSE - aggressive"
-;  V77 rat0         [V77,T13] (  6,  2.43)     ref  ->  rdx         class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
 ;
 ; Lcl frame size = 72
 
@@ -147,7 +146,7 @@ G_M10698_IG07:        ; bbWeight=0.70, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0
        mov      r15, qword ptr [rdi]
        mov      rcx, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaMethod
        cmp      r15, rcx
-       jne      G_M10698_IG55
+       jne      G_M10698_IG47
        mov      r13, gword ptr [rdi+0x10]
        ; gcrRegs +[r13]
                        ;; size=30 bbWeight=0.70 PerfScore 5.22
@@ -162,12 +161,12 @@ G_M10698_IG09:        ; bbWeight=0.65, gcrefRegs=60A8 {rbx rbp rdi r13 r14}, byr
 G_M10698_IG10:        ; bbWeight=0.42, gcrefRegs=60A8 {rbx rbp rdi r13 r14}, byrefRegs=0000 {}, byref
        mov      rcx, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaType
        cmp      qword ptr [r14], rcx
-       jne      G_M10698_IG57
+       jne      G_M10698_IG49
        mov      rcx, gword ptr [r14+0x58]
        ; gcrRegs +[rcx]
        mov      rax, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaAssembly
        cmp      qword ptr [rcx], rax
-       jne      G_M10698_IG56
+       jne      G_M10698_IG48
        mov      r12, gword ptr [rcx+0x08]
        ; gcrRegs +[r12]
        jmp      G_M10698_IG27
@@ -236,13 +235,13 @@ G_M10698_IG14:        ; bbWeight=0.70, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0
        mov      ebx, dword ptr [rbp+0x68]
        mov      rcx, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaMethod
        cmp      r15, rcx
-       jne      G_M10698_IG62
+       jne      G_M10698_IG54
                        ;; size=22 bbWeight=0.70 PerfScore 2.44
 G_M10698_IG15:        ; bbWeight=0.70, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref
        mov      rcx, gword ptr [rdi+0x20]
        ; gcrRegs +[rcx]
        test     rcx, rcx
-       je       G_M10698_IG61
+       je       G_M10698_IG53
                        ;; size=13 bbWeight=0.70 PerfScore 2.26
 G_M10698_IG16:        ; bbWeight=0.70, gcrefRegs=00E2 {rcx rbp rsi rdi}, byrefRegs=0000 {}, byref
        call     [Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int]
@@ -338,12 +337,12 @@ G_M10698_IG25:        ; bbWeight=0.39, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0
        ; gcrRegs +[rcx]
        mov      rax, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaMethod
        cmp      qword ptr [rcx], rax
-       jne      G_M10698_IG60
+       jne      G_M10698_IG52
        mov      rcx, gword ptr [rcx+0x10]
        mov      rcx, gword ptr [rcx+0x58]
        mov      rax, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaAssembly
        cmp      qword ptr [rcx], rax
-       jne      G_M10698_IG59
+       jne      G_M10698_IG51
        mov      rsi, gword ptr [rcx+0x08]
        ; gcrRegs +[rsi]
                        ;; size=54 bbWeight=0.39 PerfScore 6.43
@@ -362,7 +361,7 @@ G_M10698_IG28:        ; bbWeight=0.38, gcrefRegs=70A8 {rbx rbp rdi r12 r13 r14},
        ; gcrRegs +[rcx]
        mov      rax, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaAssembly
        cmp      qword ptr [rcx], rax
-       jne      G_M10698_IG58
+       jne      G_M10698_IG50
        mov      rax, gword ptr [rcx+0x08]
        ; gcrRegs +[rax]
                        ;; size=27 bbWeight=0.38 PerfScore 3.10
@@ -407,7 +406,7 @@ G_M10698_IG33:        ; bbWeight=0.08, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0
        ; gcr arg pop 0
        jmp      G_M10698_IG18
                        ;; size=33 bbWeight=0.08 PerfScore 0.71
-G_M10698_IG34:        ; bbWeight=0.30, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M10698_IG34:        ; bbWeight=0.30, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax] +[rbx rsi]
        mov      rcx, rbx
        ; gcrRegs +[rcx]
@@ -419,133 +418,75 @@ G_M10698_IG34:        ; bbWeight=0.30, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
        cmp      byte  ptr [rax], al
        mov      rdx, rax
        ; gcrRegs +[rdx]
-       test     rdx, rdx
-       je       SHORT G_M10698_IG42
-                       ;; size=23 bbWeight=0.30 PerfScore 3.57
-G_M10698_IG35:        ; bbWeight=0.15, gcrefRegs=004D {rax rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
-       jmp      SHORT G_M10698_IG39
-                       ;; size=2 bbWeight=0.15 PerfScore 0.30
-G_M10698_IG36:        ; bbWeight=0.30, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rax rdx rbx] +[rdi]
-       mov      r15, qword ptr [rdi]
-       mov      rcx, 0xD1FFAB1E      ; Internal.TypeSystem.Ecma.EcmaMethod
-       cmp      r15, rcx
-       jne      SHORT G_M10698_IG45
-       mov      rbp, gword ptr [rdi+0x10]
-       ; gcrRegs +[rbp]
-                       ;; size=22 bbWeight=0.30 PerfScore 1.67
-G_M10698_IG37:        ; bbWeight=0.30, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref
-       test     rbp, rbp
-       je       G_M10698_IG53
-                       ;; size=9 bbWeight=0.30 PerfScore 0.38
-G_M10698_IG38:        ; bbWeight=0.18, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
-       jmp      SHORT G_M10698_IG46
-                       ;; size=2 bbWeight=0.18 PerfScore 0.36
-G_M10698_IG39:        ; bbWeight=0.15, gcrefRegs=004D {rax rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rbp rdi] +[rax rdx rbx]
-       mov      rcx, 0xD1FFAB1E      ; Internal.TypeSystem.MethodForInstantiatedType
-       cmp      qword ptr [rdx], rcx
-       je       SHORT G_M10698_IG41
-                       ;; size=15 bbWeight=0.15 PerfScore 0.65
-G_M10698_IG40:        ; bbWeight=0.05, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rdx]
-       mov      rdx, rax
-       ; gcrRegs +[rdx]
        mov      rcx, 0xD1FFAB1E      ; Internal.TypeSystem.ArrayType
        call     CORINFO_HELP_ISINSTANCEOFCLASS
        ; gcrRegs -[rdx]
        ; gcr arg pop 0
-       mov      rdx, rax
-       ; gcrRegs +[rdx]
-       jmp      SHORT G_M10698_IG42
-                       ;; size=23 bbWeight=0.05 PerfScore 0.20
-G_M10698_IG41:        ; bbWeight=0.10, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rax rdx]
-       xor      rdx, rdx
-       ; gcrRegs +[rdx]
-                       ;; size=2 bbWeight=0.10 PerfScore 0.02
-G_M10698_IG42:        ; bbWeight=0.30, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
        xor      ecx, ecx
-       test     rdx, rdx
+       test     rax, rax
        setne    cl
        call     [<unknown method>]
-       ; gcrRegs -[rdx]
+       ; gcrRegs -[rax]
        ; gcr arg pop 0
        mov      rcx, rsi
        ; gcrRegs +[rcx]
        mov      rax, 0xD1FFAB1E      ; Internal.TypeSystem.ArrayMethod
        cmp      qword ptr [rbx], rax
-       jne      G_M10698_IG63
...

libraries_tests.run.windows.x64.Release.mch

-4 (-0.76%) : 168536.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] ( 20,  7.76)     ref  ->  rbx         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]>
-;  V01 arg1         [V01,T03] ( 10,  3.31)     ref  ->  rsi         class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundNode>
+;  V01 arg1         [V01,T03] ( 10,  3.28)     ref  ->  rsi         class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundNode>
 ;  V02 loc0         [V02,T04] (  9,  3.77)     ref  ->  rdi         class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
 ;  V03 OutArgs      [V03    ] (  1,  1   )  struct (32) [rsp+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>
@@ -35,7 +35,7 @@
 ;* V23 tmp20        [V23    ] (  0,  0   )     ref  ->  zero-ref    "guarded devirt return temp"
 ;* V24 tmp21        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.BoundBlock>
 ;* V25 tmp22        [V25    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1>
-;  V26 rat0         [V26,T02] (  5,  7.36)     ref  ->  rdi         class-hnd "replacement local" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+;  V26 rat0         [V26,T02] (  5,  7.30)     ref  ->  rdi         class-hnd "replacement local" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
 ;
 ; Lcl frame size = 32
 
@@ -55,41 +55,29 @@ G_M16580_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
        mov      rdi, rsi
        ; gcrRegs +[rdi]
        test     rdi, rdi
-       je       SHORT G_M16580_IG05
+       je       SHORT G_M16580_IG04
                        ;; size=8 bbWeight=1 PerfScore 1.50
 G_M16580_IG03:        ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
        mov      rdx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.BoundAttribute
        cmp      qword ptr [rdi], rdx
-       je       SHORT G_M16580_IG05
+       jne      SHORT G_M16580_IG08
                        ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M16580_IG04:        ; bbWeight=0.18, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rdi]
-       mov      rdx, rsi
-       ; gcrRegs +[rdx]
-       mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.BoundExpression
-       call     CORINFO_HELP_ISINSTANCEOFCLASS
-       ; gcrRegs -[rdx] +[rax]
-       ; gcr arg pop 0
-       mov      rdi, rax
-       ; gcrRegs +[rdi]
-                       ;; size=21 bbWeight=0.18 PerfScore 0.32
-G_M16580_IG05:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rax]
+G_M16580_IG04:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
        test     rdi, rdi
-       je       G_M16580_IG22
+       je       G_M16580_IG23
                        ;; size=9 bbWeight=1 PerfScore 1.25
-G_M16580_IG06:        ; bbWeight=0.96, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M16580_IG05:        ; bbWeight=0.96, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rsi]
        lea      rbp, bword ptr [rbx+0x68]
        ; byrRegs +[rbp]
        inc      dword ptr [rbp]
        cmp      dword ptr [rbp], 1
-       jg       SHORT G_M16580_IG08
+       jg       SHORT G_M16580_IG12
                        ;; size=13 bbWeight=0.96 PerfScore 7.19
-G_M16580_IG07:        ; bbWeight=0.56, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
+G_M16580_IG06:        ; bbWeight=0.56, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
        mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.NullableWalker
        cmp      qword ptr [rbx], rcx
-       je       G_M16580_IG18
+       je       SHORT G_M16580_IG09
        mov      rcx, rbx
        ; gcrRegs +[rcx]
        mov      rax, qword ptr [rbx]
@@ -98,19 +86,59 @@ G_M16580_IG07:        ; bbWeight=0.56, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
        test     eax, eax
-       jne      G_M16580_IG18
-                       ;; size=40 bbWeight=0.56 PerfScore 7.10
-G_M16580_IG08:        ; bbWeight=0.40, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
+       jne      SHORT G_M16580_IG09
+                       ;; size=32 bbWeight=0.56 PerfScore 7.10
+G_M16580_IG07:        ; bbWeight=0.40, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
+       jmp      SHORT G_M16580_IG12
+                       ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M16580_IG08:        ; bbWeight=0.15, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rdi] +[rsi]
+       ; byrRegs -[rbp]
+       mov      rdx, rsi
+       ; gcrRegs +[rdx]
+       mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.BoundExpression
+       call     CORINFO_HELP_ISINSTANCEOFCLASS
+       ; gcrRegs -[rdx] +[rax]
+       ; gcr arg pop 0
+       mov      rdi, rax
+       ; gcrRegs +[rdi]
+       jmp      SHORT G_M16580_IG04
+                       ;; size=23 bbWeight=0.15 PerfScore 0.56
+G_M16580_IG09:        ; bbWeight=0.56, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
+       ; gcrRegs -[rax rsi]
+       ; byrRegs +[rbp]
+       mov      rcx, rbx
+       ; gcrRegs +[rcx]
+       mov      rdx, rdi
+       ; gcrRegs +[rdx]
+       call     [<unknown method>]
+       ; gcrRegs -[rcx rdx rbx rdi] +[rax]
+       ; gcr arg pop 0
+                       ;; size=12 bbWeight=0.56 PerfScore 1.95
+G_M16580_IG10:        ; bbWeight=0.96, gcrefRegs=0001 {rax}, byrefRegs=0020 {rbp}, byref
+       dec      dword ptr [rbp]
+                       ;; size=3 bbWeight=0.96 PerfScore 2.88
+G_M16580_IG11:        ; bbWeight=0.96, epilog, nogc, extend
+       add      rsp, 32
+       pop      rbx
+       pop      rbp
+       pop      rsi
+       pop      rdi
+       pop      r14
+       ret      
+                       ;; size=11 bbWeight=0.96 PerfScore 3.60
+G_M16580_IG12:        ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+       ; gcrRegs -[rax] +[rbx rdi]
        mov      r14d, dword ptr [rbp]
        mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.NullableWalker
        cmp      qword ptr [rbx], rcx
-       jne      SHORT G_M16580_IG17
+       jne      SHORT G_M16580_IG21
                        ;; size=19 bbWeight=0.40 PerfScore 2.51
-G_M16580_IG09:        ; bbWeight=0.28, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
+G_M16580_IG13:        ; bbWeight=0.28, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
        cmp      r14d, 20
-       jg       G_M16580_IG33
+       jg       G_M16580_IG34
                        ;; size=10 bbWeight=0.28 PerfScore 0.35
-G_M16580_IG10:        ; bbWeight=0.25, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
+G_M16580_IG14:        ; bbWeight=0.25, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
        mov      rsi, rbx
        ; gcrRegs +[rsi]
        mov      rcx, rsi
@@ -120,9 +148,9 @@ G_M16580_IG10:        ; bbWeight=0.25, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020
        ; gcr arg pop 0
        mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.BoundBlock
        cmp      qword ptr [rdi], rcx
-       jne      SHORT G_M16580_IG21
+       jne      SHORT G_M16580_IG22
                        ;; size=27 bbWeight=0.25 PerfScore 1.90
-G_M16580_IG11:        ; bbWeight=0.13, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref
+G_M16580_IG15:        ; bbWeight=0.13, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref
        mov      rcx, rsi
        ; gcrRegs +[rcx]
        mov      rdx, rdi
@@ -133,22 +161,22 @@ G_M16580_IG11:        ; bbWeight=0.13, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
        mov      rdx, rax
        ; gcrRegs +[rdx]
                        ;; size=15 bbWeight=0.13 PerfScore 0.49
-G_M16580_IG12:        ; bbWeight=0.25, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
+G_M16580_IG16:        ; bbWeight=0.25, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
        ; gcrRegs -[rax]
        test     rdx, rdx
-       je       SHORT G_M16580_IG15
+       je       SHORT G_M16580_IG19
                        ;; size=5 bbWeight=0.25 PerfScore 0.31
-G_M16580_IG13:        ; bbWeight=0.12, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
+G_M16580_IG17:        ; bbWeight=0.12, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
        mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.BoundExpression
        cmp      qword ptr [rdx], rcx
-       je       SHORT G_M16580_IG15
+       je       SHORT G_M16580_IG19
                        ;; size=15 bbWeight=0.12 PerfScore 0.52
-G_M16580_IG14:        ; bbWeight=0.06, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0020 {rbp}, byref
+G_M16580_IG18:        ; bbWeight=0.06, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0020 {rbp}, byref
        call     CORINFO_HELP_CHKCASTCLASS_SPECIAL
        ; gcrRegs -[rdx] +[rax]
        ; gcr arg pop 0
                        ;; size=5 bbWeight=0.06 PerfScore 0.06
-G_M16580_IG15:        ; bbWeight=0.25, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
+G_M16580_IG19:        ; bbWeight=0.25, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
        ; gcrRegs -[rax]
        mov      rcx, rbx
        ; gcrRegs +[rcx]
@@ -160,10 +188,10 @@ G_M16580_IG15:        ; bbWeight=0.25, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020
        xor      rax, rax
        ; gcrRegs +[rax]
                        ;; size=14 bbWeight=0.25 PerfScore 0.92
-G_M16580_IG16:        ; bbWeight=0.40, gcrefRegs=0001 {rax}, byrefRegs=0020 {rbp}, byref, isz
-       jmp      SHORT G_M16580_IG19
+G_M16580_IG20:        ; bbWeight=0.40, gcrefRegs=0001 {rax}, byrefRegs=0020 {rbp}, byref, isz
+       jmp      SHORT G_M16580_IG10
                        ;; size=2 bbWeight=0.40 PerfScore 0.80
-G_M16580_IG17:        ; bbWeight=0.40, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
+G_M16580_IG21:        ; bbWeight=0.40, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
        ; gcrRegs -[rax] +[rbx rdi]
        mov      rcx, rbx
        ; gcrRegs +[rcx]
@@ -182,31 +210,9 @@ G_M16580_IG17:        ; bbWeight=0.40, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020
        call     [rax]<unknown method>
        ; gcrRegs -[rcx rdx rbx rdi] +[rax]
        ; gcr arg pop 0
-       jmp      SHORT G_M16580_IG16
+       jmp      SHORT G_M16580_IG20
                        ;; size=33 bbWeight=0.40 PerfScore 6.84
-G_M16580_IG18:        ; bbWeight=0.56, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
-       ; gcrRegs -[rax] +[rbx rdi]
-       mov      rcx, rbx
-       ; gcrRegs +[rcx]
-       mov      rdx, rdi
-       ; gcrRegs +[rdx]
-       call     [<unknown method>]
-       ; gcrRegs -[rcx rdx rbx rdi] +[rax]
-       ; gcr arg pop 0
-                       ;; size=12 bbWeight=0.56 PerfScore 1.95
-G_M16580_IG19:        ; bbWeight=0.96, gcrefRegs=0001 {rax}, byrefRegs=0020 {rbp}, byref
-       dec      dword ptr [rbp]
-                       ;; size=3 bbWeight=0.96 PerfScore 2.88
-G_M16580_IG20:        ; bbWeight=0.96, epilog, nogc, extend
-       add      rsp, 32
-       pop      rbx
-       pop      rbp
-       pop      rsi
-       pop      rdi
-       pop      r14
-       ret      
-                       ;; size=11 bbWeight=0.96 PerfScore 3.60
-G_M16580_IG21:        ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+G_M16580_IG22:        ; bbWeight=0.09, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref, isz
        ; gcrRegs -[rax] +[rbx rsi rdi]
        mov      rcx, rdi
        ; gcrRegs +[rcx]
@@ -219,31 +225,31 @@ G_M16580_IG21:        ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=00C
        ; gcr arg pop 0
        mov      rdx, rax
        ; gcrRegs +[rdx]
-       jmp      SHORT G_M16580_IG12
+       jmp      SHORT G_M16580_IG16
                        ;; size=21 bbWeight=0.09 PerfScore 0.92
-G_M16580_IG22:        ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M16580_IG23:        ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rax rdx rdi] +[rsi]
        ; byrRegs -[rbp]
        test     rsi, rsi
-       je       SHORT G_M16580_IG31
+       je       SHORT G_M16580_IG32
                        ;; size=5 bbWeight=0.04 PerfScore 0.05
-G_M16580_IG23:        ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M16580_IG24:        ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.BoundBlock
        cmp      qword ptr [rsi], rcx
-       jne      SHORT G_M16580_IG29
+       jne      SHORT G_M16580_IG30
                        ;; size=15 bbWeight=0.04 PerfScore 0.16
-G_M16580_IG24:        ; bbWeight=0.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M16580_IG25:        ; bbWeight=0.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1
        cmp      qword ptr [rbx], rcx
...

-7 (-0.47%) : 621014.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:g_tryCalculateRequiredMembers|1910(byref):ubyte:this (Tier1)

@@ -15,7 +15,7 @@
 ;  V03 loc1         [V03,T29] (  3,  1   )   ubyte  ->  r15        
 ;* V04 loc2         [V04    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbol]>
 ;* V05 loc3         [V05    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]>
-;  V06 loc4         [V06,T01] ( 13, 24.01)     ref  ->  rbp         class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+;  V06 loc4         [V06,T01] ( 13, 23.88)     ref  ->  rdi         class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
 ;  V07 loc5         [V07,T10] ( 10,  8.83)     ref  ->  [rsp+0x30]  class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol>
 ;  V08 loc6         [V08,T16] (  2,  0.07)     ref  ->  [rsp+0x28]  ld-addr-op class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
 ;  V09 loc7         [V09,T53] (  4,  0   )     ref  ->  rax         class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
@@ -51,7 +51,7 @@
 ;  V39 tmp29        [V39,T34] (  3,  0.04)   byref  ->  rcx         single-def "Inlining Arg"
 ;  V40 tmp30        [V40,T38] (  2,  0.03)     ref  ->   r8         class-hnd exact single-def "Inlining Arg" <<unknown class>>
 ;  V41 tmp31        [V41,T43] (  2,  0.01)   ubyte  ->  rax         "Inline stloc first use temp"
-;  V42 tmp32        [V42,T37] (  4,  0.03)     ref  ->  r14         class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag>
+;  V42 tmp32        [V42,T37] (  4,  0.03)     ref  ->  r15         class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag>
 ;  V43 tmp33        [V43,T47] (  2,  0.01)     ref  ->  rdx         class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
 ;  V44 tmp34        [V44,T41] (  5,  0.02)     ref  ->  rcx         class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
 ;  V45 tmp35        [V45,T49] (  3,  0.01)   ubyte  ->  rax         single-def "Inline stloc first use temp"
@@ -84,7 +84,7 @@
 ;* V72 tmp62        [V72    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
 ;  V73 tmp63        [V73,T11] (  3,  8.81)   byref  ->  rax         "Inline stloc first use temp"
 ;* V74 tmp64        [V74    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V75 tmp65        [V75,T05] (  6, 12.79)     ref  ->  rax         class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
+;  V75 tmp65        [V75,T05] (  6, 12.79)     ref  ->  rcx         class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
 ;  V76 tmp66        [V76,T13] (  4,  6.71)     ref  ->  rcx         class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol>
 ;* V77 tmp67        [V77,T18] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
 ;  V78 tmp68        [V78,T25] (  2,  2.03)     int  ->  rax         "guarded devirt return temp"
@@ -93,10 +93,10 @@
 ;* V81 tmp71        [V81    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.String,Microsoft.CodeAnalysis.CSharp.Symbol]>
 ;  V82 tmp72        [V82,T57] (  2,  0   )     ref  ->  [rsp+0x20]  class-hnd exact spill-single-def "Inlining Arg" <System.String>
 ;  V83 tmp73        [V83,T56] (  3,  0   )     ref  ->  rax         class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
-;  V84 tmp74        [V84,T02] (  5, 18.48)     int  ->  rax         "Inline stloc first use temp"
+;  V84 tmp74        [V84,T02] (  5, 18.48)     int  ->  rbx         "Inline stloc first use temp"
 ;  V85 tmp75        [V85,T09] (  4,  9.74)     ref  ->  r14         single-def "field V02._dictionary (fldOffset=0x0)" P-INDEP
 ;  V86 tmp76        [V86,T14] (  2,  5.37)     ref  ->  r12         single-def "field V04._array (fldOffset=0x0)" P-INDEP
-;  V87 tmp77        [V87,T04] (  4, 14.11)     int  ->  rdi         "field V04._index (fldOffset=0x8)" P-INDEP
+;  V87 tmp77        [V87,T04] (  4, 14.11)     int  ->  rbp         "field V04._index (fldOffset=0x8)" P-INDEP
 ;* V88 tmp78        [V88    ] (  0,  0   )     ref  ->  zero-ref    "field V05.array (fldOffset=0x0)" P-INDEP
 ;  V89 tmp79        [V89,T27] (  3,  2   )     ref  ->  r14         single-def "field V16._dictionary (fldOffset=0x0)" P-INDEP
 ;  V90 tmp80        [V90,T23] (  4,  3   )     ref  ->  rdx         single-def "field V24.array (fldOffset=0x0)" P-INDEP
@@ -146,11 +146,11 @@ G_M20484_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
        mov      rdi, qword ptr [rbx]
        mov      rbp, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol
        cmp      rdi, rbp
-       jne      G_M20484_IG38
+       jne      G_M20484_IG55
        mov      rcx, gword ptr [rbx+0xE0]
        mov      rax, 0xD1FFAB1E      ; const ptr
        cmp      rcx, gword ptr [rax]
-       je       G_M20484_IG26
+       je       G_M20484_IG40
                        ;; size=53 bbWeight=1 PerfScore 11.00
 G_M20484_IG03:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
        ; gcrRegs -[rcx]
@@ -164,16 +164,16 @@ G_M20484_IG04:        ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0040 {rs
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
        test     eax, eax
-       jne      G_M20484_IG58
+       jne      G_M20484_IG59
                        ;; size=19 bbWeight=1 PerfScore 5.50
 G_M20484_IG05:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
        cmp      rdi, rbp
-       jne      G_M20484_IG63
+       jne      G_M20484_IG57
        mov      rcx, gword ptr [rbx+0xE0]
        ; gcrRegs +[rcx]
        mov      rax, 0xD1FFAB1E      ; const ptr
        cmp      rcx, gword ptr [rax]
-       je       G_M20484_IG21
+       je       G_M20484_IG37
                        ;; size=35 bbWeight=1 PerfScore 7.50
 G_M20484_IG06:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
        ; gcrRegs -[rcx]
@@ -182,7 +182,7 @@ G_M20484_IG06:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
                        ;; size=7 bbWeight=1 PerfScore 2.00
 G_M20484_IG07:        ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0040 {rsi}, byref
        test     rcx, rcx
-       je       G_M20484_IG18
+       je       G_M20484_IG35
                        ;; size=9 bbWeight=1 PerfScore 1.25
 G_M20484_IG08:        ; bbWeight=1.00, gcrefRegs=000A {rcx rbx}, byrefRegs=0040 {rsi}, byref
        call     [<unknown method>]
@@ -191,10 +191,10 @@ G_M20484_IG08:        ; bbWeight=1.00, gcrefRegs=000A {rcx rbx}, byrefRegs=0040
        mov      r14, rax
        ; gcrRegs +[r14]
                        ;; size=9 bbWeight=1.00 PerfScore 3.25
-G_M20484_IG09:        ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref, isz
+G_M20484_IG09:        ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref
        ; gcrRegs -[rax]
        cmp      rdi, rbp
-       jne      G_M20484_IG64
+       jne      G_M20484_IG58
        mov      rcx, rbx
        ; gcrRegs +[rcx]
        call     [Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:get_HasDeclaredRequiredMembers():ubyte:this]
@@ -204,38 +204,150 @@ G_M20484_IG09:        ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rs
        mov      rdx, gword ptr [rbx+0xA8]
        ; gcrRegs +[rdx]
        test     rdx, rdx
-       je       SHORT G_M20484_IG14
-                       ;; size=33 bbWeight=1 PerfScore 8.00
+       je       G_M20484_IG27
+                       ;; size=37 bbWeight=1 PerfScore 8.00
 G_M20484_IG10:        ; bbWeight=1, gcrefRegs=4004 {rdx r14}, byrefRegs=0040 {rsi}, byref
        ; gcrRegs -[rbx]
        mov      r13d, dword ptr [rdx+0x08]
        mov      r12, rdx
        ; gcrRegs +[r12]
-       xor      eax, eax
-       xor      edi, edi
+       xor      ebx, ebx
+       xor      ebp, ebp
        test     r13d, r13d
-       jle      G_M20484_IG44
+       jle      G_M20484_IG21
                        ;; size=20 bbWeight=1 PerfScore 4.00
 G_M20484_IG11:        ; bbWeight=4.37, gcrefRegs=5000 {r12 r14}, byrefRegs=0040 {rsi}, byref, isz
        ; gcrRegs -[rdx]
-       cmp      eax, r13d
-       jae      G_M20484_IG60
-       mov      edx, eax
-       mov      rbp, gword ptr [r12+8*rdx+0x10]
-       ; gcrRegs +[rbp]
-       mov      rbx, rbp
+       cmp      ebx, r13d
+       jae      G_M20484_IG48
+       mov      ecx, ebx
+       mov      rdi, gword ptr [r12+8*rcx+0x10]
+       ; gcrRegs +[rdi]
+       mov      rbx, rdi
        ; gcrRegs +[rbx]
        test     rbx, rbx
-       je       SHORT G_M20484_IG16
+       je       SHORT G_M20484_IG14
                        ;; size=24 bbWeight=4.37 PerfScore 21.85
-G_M20484_IG12:        ; bbWeight=2.19, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0040 {rsi}, byref, isz
-       mov      rdx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberFieldSymbolFromDeclarator
-       cmp      qword ptr [rbx], rdx
-       je       SHORT G_M20484_IG15
-                       ;; size=15 bbWeight=2.19 PerfScore 9.29
-G_M20484_IG13:        ; bbWeight=0.85, gcrefRegs=5020 {rbp r12 r14}, byrefRegs=0040 {rsi}, byref, isz
+G_M20484_IG12:        ; bbWeight=2.19, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRegs=0040 {rsi}, byref
+       mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberFieldSymbolFromDeclarator
+       cmp      qword ptr [rbx], rcx
+       jne      G_M20484_IG26
+                       ;; size=19 bbWeight=2.19 PerfScore 9.29
+G_M20484_IG13:        ; bbWeight=1.46, gcrefRegs=5080 {rdi r12 r14}, byrefRegs=0040 {rsi}, byref
        ; gcrRegs -[rbx]
-       mov      rdx, rbp
+       xor      rbx, rbx
+       ; gcrRegs +[rbx]
+                       ;; size=2 bbWeight=1.46 PerfScore 0.37
+G_M20484_IG14:        ; bbWeight=4.37, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRegs=0040 {rsi}, byref
+       mov      rax, rbx
+       ; gcrRegs +[rax]
+       mov      gword ptr [rsp+0x30], rax
+       ; GC ptr vars +{V07}
+       test     rax, rax
+       jne      G_M20484_IG29
+                       ;; size=17 bbWeight=4.37 PerfScore 10.93
+G_M20484_IG15:        ; bbWeight=4.37, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRegs=0040 {rsi}, byref, isz
+       ; gcrRegs -[rax]
+       ; GC ptr vars -{V07}
+       mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberFieldSymbolFromDeclarator
+       cmp      qword ptr [rdi], rcx
+       jne      SHORT G_M20484_IG23
+                       ;; size=15 bbWeight=4.37 PerfScore 18.57
+G_M20484_IG16:        ; bbWeight=3.06, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRegs=0040 {rsi}, byref
+       mov      rdx, gword ptr [rdi+0x28]
+       ; gcrRegs +[rdx]
+                       ;; size=4 bbWeight=3.06 PerfScore 6.12
+G_M20484_IG17:        ; bbWeight=4.37, gcrefRegs=508C {rdx rbx rdi r12 r14}, byrefRegs=0040 {rsi}, byref
+       cmp      byte  ptr [r14], r14b
+       mov      rcx, r14
+       ; gcrRegs +[rcx]
+       call     [<unknown method>]
+       ; gcrRegs -[rcx rdx]
+       ; byrRegs +[rax]
+       ; gcr arg pop 0
+       mov      rdx, rax
+       test     rdx, rdx
+       jne      G_M20484_IG28
+                       ;; size=24 bbWeight=4.37 PerfScore 33.87
+G_M20484_IG18:        ; bbWeight=4.37, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRegs=0040 {rsi}, byref, isz
+       ; byrRegs -[rax]
+       mov      rdx, rdi
+       ; gcrRegs +[rdx]
+       mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol
+       call     CORINFO_HELP_ISINSTANCEOFCLASS
+       ; gcrRegs -[rdx] +[rax]
+       ; gcr arg pop 0
+       mov      rcx, rax
+       ; gcrRegs +[rcx]
+       test     rcx, rcx
+       jne      SHORT G_M20484_IG24
+                       ;; size=26 bbWeight=4.37 PerfScore 13.11
+G_M20484_IG19:        ; bbWeight=3.36, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRegs=0040 {rsi}, byref
+       ; gcrRegs -[rax rcx]
+       mov      rcx, rbx
+       ; gcrRegs +[rcx]
+       test     rcx, rcx
+       jne      G_M20484_IG49
+                       ;; size=12 bbWeight=3.36 PerfScore 5.03
+G_M20484_IG20:        ; bbWeight=4.37, gcrefRegs=5000 {r12 r14}, byrefRegs=0040 {rsi}, byref
+       ; gcrRegs -[rcx rbx rdi]
+       lea      ebx, [rbp+0x01]
+       mov      ebp, ebx
+       cmp      r13d, ebp
+       jg       G_M20484_IG11
+                       ;; size=14 bbWeight=4.37 PerfScore 8.74
+G_M20484_IG21:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[r12 r14]
+       ; byrRegs -[rsi]
+       mov      eax, 1
+                       ;; size=5 bbWeight=1 PerfScore 0.25
+G_M20484_IG22:        ; bbWeight=1, epilog, nogc, extend
+       add      rsp, 56
+       pop      rbx
+       pop      rbp
+       pop      rsi
+       pop      rdi
+       pop      r12
+       pop      r13
+       pop      r14
+       pop      r15
+       ret      
+                       ;; size=17 bbWeight=1 PerfScore 5.25
+G_M20484_IG23:        ; bbWeight=1.31, gcVars=0000000000000000 {}, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRegs=0040 {rsi}, gcvars, byref, isz
+       ; gcrRegs +[rbx rdi r12 r14]
+       ; byrRegs +[rsi]
+       mov      rcx, rdi
+       ; gcrRegs +[rcx]
+       mov      rax, qword ptr [rdi]
+       mov      rax, qword ptr [rax+0x50]
+       call     [rax+0x28]<unknown method>
+       ; gcrRegs -[rcx] +[rax]
+       ; gcr arg pop 0
+       mov      rdx, rax
+       ; gcrRegs +[rdx]
+       jmp      SHORT G_M20484_IG17
+                       ;; size=18 bbWeight=1.31 PerfScore 12.45
+G_M20484_IG24:        ; bbWeight=1.01, gcrefRegs=5082 {rcx rdi r12 r14}, byrefRegs=0040 {rsi}, byref, isz
+       ; gcrRegs -[rax rdx rbx] +[rcx]
+       mov      rax, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberFieldSymbolFromDeclarator
+       cmp      qword ptr [rcx], rax
+       jne      SHORT G_M20484_IG25
+       test     dword ptr [rcx+0x60], 0xD1FFAB1E
+       jne      G_M20484_IG51
+       jmp      SHORT G_M20484_IG20
...

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

@@ -8,37 +8,55 @@
 ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 3086
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T00] (  6,  4.92)     ref  ->  rcx         class-hnd single-def <System.Object>
+;  V00 arg0         [V00,T00] (  6,  4.88)     ref  ->  rcx         class-hnd single-def <System.Object>
 ;  V01 OutArgs      [V01    ] (  1,  1   )  struct (32) [rsp+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,  6.24)     ref  ->  rax         class-hnd "replacement local" <System.Collections.IEnumerable>
 ;
 ; Lcl frame size = 40
 
-G_M8290_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M8290_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        sub      rsp, 40
                        ;; size=4 bbWeight=1 PerfScore 0.25
 G_M8290_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[rcx]
        test     rcx, rcx
-       je       SHORT G_M8290_IG08
+       je       SHORT G_M8290_IG07
        mov      rdx, 0xD1FFAB1E      ; <unknown class>
        cmp      qword ptr [rcx], rdx
-       je       SHORT G_M8290_IG08
+       je       SHORT G_M8290_IG07
                        ;; size=20 bbWeight=1 PerfScore 5.50
 G_M8290_IG03:        ; bbWeight=0.78, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
        mov      rax, rcx
        ; gcrRegs +[rax]
        test     rax, rax
-       je       SHORT G_M8290_IG07
+       je       SHORT G_M8290_IG06
                        ;; size=8 bbWeight=0.78 PerfScore 1.17
 G_M8290_IG04:        ; bbWeight=0.39, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
        mov      rdx, 0xD1FFAB1E      ; System.Int32
        cmp      qword ptr [rax], rdx
-       je       SHORT G_M8290_IG06
+       jne      SHORT G_M8290_IG09
                        ;; size=15 bbWeight=0.39 PerfScore 1.66
-G_M8290_IG05:        ; bbWeight=0.14, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M8290_IG05:        ; bbWeight=0.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rax rcx]
+       xor      rax, rax
+       ; gcrRegs +[rax]
+                       ;; size=2 bbWeight=0.28 PerfScore 0.07
+G_M8290_IG06:        ; bbWeight=0.78, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+       add      rsp, 40
+       ret      
+                       ;; size=5 bbWeight=0.78 PerfScore 0.97
+G_M8290_IG07:        ; bbWeight=0.22, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs -[rax]
+       xor      rax, rax
+       ; gcrRegs +[rax]
+                       ;; size=2 bbWeight=0.22 PerfScore 0.06
+G_M8290_IG08:        ; bbWeight=0.22, epilog, nogc, extend
+       add      rsp, 40
+       ret      
+                       ;; size=5 bbWeight=0.22 PerfScore 0.28
+G_M8290_IG09:        ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+       ; gcrRegs -[rax] +[rcx]
        mov      rdx, rcx
        ; gcrRegs +[rdx]
        mov      rcx, 0xD1FFAB1E      ; System.Collections.IEnumerable
@@ -46,28 +64,10 @@ G_M8290_IG05:        ; bbWeight=0.14, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, b
        call     CORINFO_HELP_ISINSTANCEOFINTERFACE
        ; gcrRegs -[rdx] +[rax]
        ; gcr arg pop 0
-       jmp      SHORT G_M8290_IG07
-                       ;; size=20 bbWeight=0.14 PerfScore 0.49
-G_M8290_IG06:        ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rax]
-       xor      rax, rax
-       ; gcrRegs +[rax]
-                       ;; size=2 bbWeight=0.25 PerfScore 0.06
-G_M8290_IG07:        ; bbWeight=0.78, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
-       add      rsp, 40
-       ret      
-                       ;; size=5 bbWeight=0.78 PerfScore 0.97
-G_M8290_IG08:        ; bbWeight=0.22, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
-       ; gcrRegs -[rax]
-       xor      rax, rax
-       ; gcrRegs +[rax]
-                       ;; size=2 bbWeight=0.22 PerfScore 0.06
-G_M8290_IG09:        ; bbWeight=0.22, epilog, nogc, extend
-       add      rsp, 40
-       ret      
-                       ;; size=5 bbWeight=0.22 PerfScore 0.28
+       jmp      SHORT G_M8290_IG06
+                       ;; size=20 bbWeight=0.11 PerfScore 0.37
 
-; Total bytes of code 81, prolog size 4, PerfScore 10.43, instruction count 22, allocated bytes for code 81 (MethodHash=a242df9d) for method Xunit.Sdk.CollectionTrackerExtensions:AsNonStringEnumerable(System.Object):System.Collections.IEnumerable (Tier1)
+; Total bytes of code 81, prolog size 4, PerfScore 10.32, instruction count 22, allocated bytes for code 81 (MethodHash=a242df9d) for method Xunit.Sdk.CollectionTrackerExtensions:AsNonStringEnumerable(System.Object):System.Collections.IEnumerable (Tier1)
 ; ============================================================
 
 Unwind Info:

+4 (+1.72%) : 364035.dasm - System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo:GetSingleParsedValue():System.Object:this (Tier1)

@@ -27,7 +27,7 @@
 ;* V15 tmp10        [V15,T10] (  0,  0   )     ref  ->  zero-ref    single-def "field V09._current (fldOffset=0x8)" P-INDEP
 ;* V16 tmp11        [V16,T11] (  0,  0   )     int  ->  zero-ref    single-def "field V09._index (fldOffset=0x10)" P-INDEP
 ;  V17 tmp12        [V17,T09] (  2,  0.03)     int  ->  rcx         single-def "field V09._version (fldOffset=0x14)" P-INDEP
-;  V18 cse0         [V18,T03] (  6,  4.78)     ref  ->  rbx         "CSE - aggressive"
+;  V18 cse0         [V18,T03] (  6,  4.73)     ref  ->  rbx         "CSE - aggressive"
 ;  V19 rat0         [V19,T00] (  6,  8   )     ref  ->  rsi         class-hnd "replacement local" <System.Collections.Generic.List`1[System.Object]>
 ;
 ; Lcl frame size = 56
@@ -46,20 +46,59 @@ G_M59589_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
        mov      rbx, gword ptr [rcx+0x10]
        ; gcrRegs +[rbx]
        test     rbx, rbx
-       je       SHORT G_M59589_IG10
+       je       SHORT G_M59589_IG09
        mov      rsi, rbx
        ; gcrRegs +[rsi]
        test     rsi, rsi
-       je       SHORT G_M59589_IG06
+       je       SHORT G_M59589_IG05
                        ;; size=17 bbWeight=1 PerfScore 4.75
 G_M59589_IG03:        ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rcx]
        mov      rdx, 0xD1FFAB1E      ; System.Net.Http.Headers.HttpHeaders+InvalidValue
        cmp      qword ptr [rsi], rdx
-       je       SHORT G_M59589_IG05
+       jne      SHORT G_M59589_IG11
                        ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M59589_IG04:        ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M59589_IG04:        ; bbWeight=0.36, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rsi]
+       xor      rsi, rsi
+       ; gcrRegs +[rsi]
+                       ;; size=2 bbWeight=0.36 PerfScore 0.09
+G_M59589_IG05:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+       test     rsi, rsi
+       jne      SHORT G_M59589_IG12
+                       ;; size=5 bbWeight=1 PerfScore 1.25
+G_M59589_IG06:        ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rsi]
+       mov      rax, rbx
+       ; gcrRegs +[rax]
+       mov      rcx, 0xD1FFAB1E      ; System.Net.Http.Headers.HttpHeaders+InvalidValue
+       cmp      qword ptr [rax], rcx
+       je       SHORT G_M59589_IG09
+                       ;; size=18 bbWeight=0.98 PerfScore 4.43
+G_M59589_IG07:        ; bbWeight=0.61, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rax]
+       mov      rax, rbx
+       ; gcrRegs +[rax]
+                       ;; size=3 bbWeight=0.61 PerfScore 0.15
+G_M59589_IG08:        ; bbWeight=0.61, epilog, nogc, extend
+       add      rsp, 56
+       pop      rbx
+       pop      rsi
+       ret      
+                       ;; size=7 bbWeight=0.61 PerfScore 1.38
+G_M59589_IG09:        ; bbWeight=0.37, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[rax rbx]
+       xor      rax, rax
+       ; gcrRegs +[rax]
+                       ;; size=2 bbWeight=0.37 PerfScore 0.09
+G_M59589_IG10:        ; bbWeight=0.37, epilog, nogc, extend
+       add      rsp, 56
+       pop      rbx
+       pop      rsi
+       ret      
+                       ;; size=7 bbWeight=0.37 PerfScore 0.84
+G_M59589_IG11:        ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+       ; gcrRegs -[rax] +[rbx]
        mov      rdx, rbx
        ; gcrRegs +[rdx]
        mov      rcx, 0xD1FFAB1E      ; System.Collections.Generic.List`1[System.Object]
@@ -68,49 +107,10 @@ G_M59589_IG04:        ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
        ; gcr arg pop 0
        mov      rsi, rax
        ; gcrRegs +[rsi]
-       jmp      SHORT G_M59589_IG06
-                       ;; size=23 bbWeight=0.18 PerfScore 0.68
-G_M59589_IG05:        ; bbWeight=0.32, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rax rsi]
-       xor      rsi, rsi
-       ; gcrRegs +[rsi]
-                       ;; size=2 bbWeight=0.32 PerfScore 0.08
-G_M59589_IG06:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
-       test     rsi, rsi
-       jne      SHORT G_M59589_IG12
-                       ;; size=5 bbWeight=1 PerfScore 1.25
-G_M59589_IG07:        ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rsi]
-       mov      rax, rbx
-       ; gcrRegs +[rax]
-       mov      rcx, 0xD1FFAB1E      ; System.Net.Http.Headers.HttpHeaders+InvalidValue
-       cmp      qword ptr [rax], rcx
-       je       SHORT G_M59589_IG10
-                       ;; size=18 bbWeight=0.98 PerfScore 4.43
-G_M59589_IG08:        ; bbWeight=0.61, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rax]
-       mov      rax, rbx
-       ; gcrRegs +[rax]
-                       ;; size=3 bbWeight=0.61 PerfScore 0.15
-G_M59589_IG09:        ; bbWeight=0.61, epilog, nogc, extend
-       add      rsp, 56
-       pop      rbx
-       pop      rsi
-       ret      
-                       ;; size=7 bbWeight=0.61 PerfScore 1.38
-G_M59589_IG10:        ; bbWeight=0.37, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+       jmp      SHORT G_M59589_IG05
+                       ;; size=23 bbWeight=0.14 PerfScore 0.51
+G_M59589_IG12:        ; bbWeight=0.02, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax rbx]
-       xor      rax, rax
-       ; gcrRegs +[rax]
-                       ;; size=2 bbWeight=0.37 PerfScore 0.09
-G_M59589_IG11:        ; bbWeight=0.37, epilog, nogc, extend
-       add      rsp, 56
-       pop      rbx
-       pop      rsi
-       ret      
-                       ;; size=7 bbWeight=0.37 PerfScore 0.84
-G_M59589_IG12:        ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
-       ; gcrRegs -[rax] +[rsi]
        mov      ecx, dword ptr [rsi+0x14]
        mov      gword ptr [rsp+0x20], rsi
        xor      rdx, rdx
@@ -126,7 +126,7 @@ G_M59589_IG13:        ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        call     [System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this]
        ; gcr arg pop 0
        test     eax, eax
-       je       SHORT G_M59589_IG10
+       je       SHORT G_M59589_IG09
                        ;; size=33 bbWeight=0.02 PerfScore 0.12
 G_M59589_IG14:        ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        mov      rax, gword ptr [rsp+0x28]
@@ -148,9 +148,9 @@ G_M59589_IG16:        ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        call     [System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this]
        ; gcr arg pop 0
        test     eax, eax
-       je       SHORT G_M59589_IG10
+       je       G_M59589_IG09
        jmp      SHORT G_M59589_IG14
-                       ;; size=27 bbWeight=0.02 PerfScore 0.17
+                       ;; size=31 bbWeight=0.02 PerfScore 0.17
 G_M59589_IG17:        ; bbWeight=0.02, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
        ; gcrRegs +[rax]
        add      rsp, 56
@@ -159,7 +159,7 @@ G_M59589_IG17:        ; bbWeight=0.02, gcrefRegs=0001 {rax}, byrefRegs=0000 {},
        ret      
                        ;; size=7 bbWeight=0.02 PerfScore 0.04
 
-; Total bytes of code 232, prolog size 23, PerfScore 22.11, instruction count 66, allocated bytes for code 232 (MethodHash=ea4d173a) for method System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo:GetSingleParsedValue():System.Object:this (Tier1)
+; Total bytes of code 236, prolog size 23, PerfScore 21.95, instruction count 66, allocated bytes for code 236 (MethodHash=ea4d173a) for method System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo:GetSingleParsedValue():System.Object:this (Tier1)
 ; ============================================================
 
 Unwind Info:

+27 (+1.89%) : 385672.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)

@@ -10,7 +10,7 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T02] ( 14,  3.42)     ref  ->  rsi         this class-hnd single-def <System.Threading.Tasks.Task>
-;  V01 arg1         [V01,T01] ( 12,  5.09)     ref  ->  rbx         class-hnd single-def <System.Object>
+;  V01 arg1         [V01,T01] ( 12,  5.02)     ref  ->  rbx         class-hnd single-def <System.Object>
 ;  V02 loc0         [V02,T06] (  6,  2   )     ref  ->  rdi         class-hnd exact single-def <System.Threading.Tasks.TplEventSource>
 ;  V03 loc1         [V03,T07] (  5,  2   )   ubyte  ->  r14        
 ;  V04 loc2         [V04,T05] ( 11,  2   )   ubyte  ->  r15        
@@ -92,12 +92,12 @@ G_M51094_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
        ; gcrRegs +[rdi]
        movzx    r14, byte  ptr [rdi+0x9D]
        test     r14d, r14d
-       jne      G_M51094_IG54
+       jne      G_M51094_IG38
                        ;; size=44 bbWeight=1 PerfScore 10.00
-G_M51094_IG03:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG03:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
        test     byte  ptr [rsi+0x34], 64
-       jne      SHORT G_M51094_IG08
-                       ;; size=6 bbWeight=1 PerfScore 4.00
+       jne      G_M51094_IG22
+                       ;; size=10 bbWeight=1 PerfScore 4.00
 G_M51094_IG04:        ; bbWeight=0.97, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
        call     <unknown method>
        ; gcr arg pop 0
@@ -107,38 +107,34 @@ G_M51094_IG05:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
        mov      rcx, rbx
        ; gcrRegs +[rcx]
        test     rcx, rcx
-       je       SHORT G_M51094_IG10
+       je       SHORT G_M51094_IG08
                        ;; size=12 bbWeight=1 PerfScore 1.75
-G_M51094_IG06:        ; bbWeight=0.50, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG06:        ; bbWeight=0.50, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref
        mov      rdx, 0xD1FFAB1E      ; System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation
        cmp      qword ptr [rcx], rdx
-       je       SHORT G_M51094_IG09
-                       ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M51094_IG07:        ; bbWeight=0.23, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+       jne      G_M51094_IG20
+                       ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M51094_IG07:        ; bbWeight=0.35, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rcx]
-       mov      rdx, rbx
-       ; gcrRegs +[rdx]
-       mov      rcx, 0xD1FFAB1E      ; <unknown class>
-       call     CORINFO_HELP_ISINSTANCEOFINTERFACE
-       ; gcrRegs -[rdx] +[rax]
-       ; gcr arg pop 0
-       mov      rcx, rax
-       ; gcrRegs +[rcx]
-       jmp      SHORT G_M51094_IG10
-                       ;; size=23 bbWeight=0.23 PerfScore 0.84
-G_M51094_IG08:        ; bbWeight=0.03, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rax rcx]
-       xor      eax, eax
-       jmp      SHORT G_M51094_IG05
-                       ;; size=4 bbWeight=0.03 PerfScore 0.06
-G_M51094_IG09:        ; bbWeight=0.27, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
        xor      rcx, rcx
        ; gcrRegs +[rcx]
-                       ;; size=2 bbWeight=0.27 PerfScore 0.07
-G_M51094_IG10:        ; bbWeight=1, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+                       ;; size=2 bbWeight=0.35 PerfScore 0.09
+G_M51094_IG08:        ; bbWeight=1, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
        test     rcx, rcx
-       jne      SHORT G_M51094_IG19
+       jne      SHORT G_M51094_IG17
                        ;; size=5 bbWeight=1 PerfScore 1.25
+G_M51094_IG09:        ; bbWeight=0.42, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rcx]
+       mov      rcx, rbx
+       ; gcrRegs +[rcx]
+       test     rcx, rcx
+       je       SHORT G_M51094_IG11
+                       ;; size=8 bbWeight=0.42 PerfScore 0.62
+G_M51094_IG10:        ; bbWeight=0.21, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref
+       mov      rdx, 0xD1FFAB1E      ; <unknown class>
+       cmp      qword ptr [rcx], rdx
+       je       G_M51094_IG39
+                       ;; size=19 bbWeight=0.21 PerfScore 0.88
 G_M51094_IG11:        ; bbWeight=0.42, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rcx]
        mov      rcx, rbx
@@ -146,43 +142,31 @@ G_M51094_IG11:        ; bbWeight=0.42, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
        test     rcx, rcx
        je       SHORT G_M51094_IG13
                        ;; size=8 bbWeight=0.42 PerfScore 0.62
-G_M51094_IG12:        ; bbWeight=0.21, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref
-       mov      rdx, 0xD1FFAB1E      ; <unknown class>
-       cmp      qword ptr [rcx], rdx
-       je       G_M51094_IG55
-                       ;; size=19 bbWeight=0.21 PerfScore 0.88
-G_M51094_IG13:        ; bbWeight=0.42, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rcx]
-       mov      rcx, rbx
-       ; gcrRegs +[rcx]
-       test     rcx, rcx
-       je       SHORT G_M51094_IG15
-                       ;; size=8 bbWeight=0.42 PerfScore 0.62
-G_M51094_IG14:        ; bbWeight=0.21, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG12:        ; bbWeight=0.21, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
        mov      rdx, 0xD1FFAB1E      ; System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation
        cmp      qword ptr [rcx], rdx
-       jne      SHORT G_M51094_IG18
+       jne      SHORT G_M51094_IG16
                        ;; size=15 bbWeight=0.21 PerfScore 0.88
-G_M51094_IG15:        ; bbWeight=0.42, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG13:        ; bbWeight=0.42, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref
        test     rcx, rcx
-       je       SHORT G_M51094_IG23
-                       ;; size=5 bbWeight=0.42 PerfScore 0.52
-G_M51094_IG16:        ; bbWeight=0.42, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+       je       G_M51094_IG23
+                       ;; size=9 bbWeight=0.42 PerfScore 0.52
+G_M51094_IG14:        ; bbWeight=0.42, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rbx rdi]
        mov      rdx, 0xD1FFAB1E      ; System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation
        cmp      qword ptr [rcx], rdx
-       jne      SHORT G_M51094_IG22
+       jne      SHORT G_M51094_IG21
                        ;; size=15 bbWeight=0.42 PerfScore 1.77
-G_M51094_IG17:        ; bbWeight=0.34, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG15:        ; bbWeight=0.34, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
        mov      rdx, rsi
        ; gcrRegs +[rdx]
        mov      r8d, r15d
        call     [System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation:Run(System.Threading.Tasks.Task,ubyte):this]
        ; gcrRegs -[rcx rdx rsi]
        ; gcr arg pop 0
-       jmp      SHORT G_M51094_IG20
+       jmp      SHORT G_M51094_IG18
                        ;; size=14 bbWeight=0.34 PerfScore 1.85
-G_M51094_IG18:        ; bbWeight=0.03, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG16:        ; bbWeight=0.03, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[rbx rsi rdi]
        mov      rdx, rbx
        ; gcrRegs +[rdx]
@@ -192,21 +176,21 @@ G_M51094_IG18:        ; bbWeight=0.03, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
        ; gcr arg pop 0
        mov      rcx, rax
        ; gcrRegs +[rcx]
-       jmp      SHORT G_M51094_IG15
+       jmp      SHORT G_M51094_IG13
                        ;; size=23 bbWeight=0.03 PerfScore 0.12
-G_M51094_IG19:        ; bbWeight=0.58, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M51094_IG17:        ; bbWeight=0.58, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax rbx rsi rdi]
        mov      edx, r15d
        call     [<unknown method>]
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
                        ;; size=9 bbWeight=0.58 PerfScore 1.90
-G_M51094_IG20:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51094_IG18:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        call     [System.Threading.Tasks.Task:LogFinishCompletionNotification()]
        ; gcr arg pop 0
        nop      
                        ;; size=7 bbWeight=1 PerfScore 3.25
-G_M51094_IG21:        ; bbWeight=1, epilog, nogc, extend
+G_M51094_IG19:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 120
        pop      rbx
        pop      rsi
@@ -218,8 +202,20 @@ G_M51094_IG21:        ; bbWeight=1, epilog, nogc, extend
        pop      rbp
        ret      
                        ;; size=17 bbWeight=1 PerfScore 5.25
-G_M51094_IG22:        ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs +[rcx rsi]
+G_M51094_IG20:        ; bbWeight=0.15, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs +[rbx rsi rdi]
+       mov      rdx, rbx
+       ; gcrRegs +[rdx]
+       mov      rcx, 0xD1FFAB1E      ; <unknown class>
+       call     CORINFO_HELP_ISINSTANCEOFINTERFACE
+       ; gcrRegs -[rdx] +[rax]
+       ; gcr arg pop 0
+       mov      rcx, rax
+       ; gcrRegs +[rcx]
+       jmp      G_M51094_IG08
+                       ;; size=26 bbWeight=0.15 PerfScore 0.56
+G_M51094_IG21:        ; bbWeight=0.08, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rax rbx rdi]
        mov      rdx, rsi
        ; gcrRegs +[rdx]
        mov      r8d, r15d
@@ -228,94 +224,41 @@ G_M51094_IG22:        ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=004
        call     [rax+0x20]<unknown method>
        ; gcrRegs -[rcx rdx rsi]
        ; gcr arg pop 0
-       jmp      SHORT G_M51094_IG20
+       jmp      SHORT G_M51094_IG18
                        ;; size=18 bbWeight=0.08 PerfScore 0.75
-G_M51094_IG23:        ; bbWeight=0.00, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG22:        ; bbWeight=0.03, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rbx rsi rdi]
+       xor      eax, eax
+       jmp      G_M51094_IG05
+                       ;; size=7 bbWeight=0.03 PerfScore 0.06
+G_M51094_IG23:        ; bbWeight=0.00, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
        mov      rdx, rbx
        ; gcrRegs +[rdx]
        test     rdx, rdx
-       je       SHORT G_M51094_IG27
+       jne      SHORT G_M51094_IG28
                        ;; size=8 bbWeight=0.00 PerfScore 0.00
 G_M51094_IG24:        ; bbWeight=0.00, gcrefRegs=00CC {rdx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
-       jmp      SHORT G_M51094_IG26
-                       ;; size=2 bbWeight=0.00 PerfScore 0.00
-G_M51094_IG25:        ; bbWeight=0.00, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rbx rdi]
-       mov      rcx, rsi
-       ; gcrRegs +[rcx]
-       mov      r8d, r15d
-       call     [System.Threading.Tasks.Task:RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction,ubyte):this]
-       ; gcrRegs -[rcx rdx rsi]
-       ; gcr arg pop 0
-       jmp      SHORT G_M51094_IG20
-                       ;; size=14 bbWeight=0.00 PerfScore 0.00
-G_M51094_IG26:        ; bbWeight=0.00, gcrefRegs=00CC {rdx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs +[rdx rbx rsi rdi]
-       mov      rcx, 0xD1FFAB1E      ; System.Threading.Tasks.UnwrapPromise`1[Xunit.Sdk.RunSummary]
-       cmp      qword ptr [rdx], rcx
-       jne      SHORT G_M51094_IG36
-                       ;; size=15 bbWeight=0.00 PerfScore 0.00
-G_M51094_IG27:        ; bbWeight=0.00, gcrefRegs=00CC {rdx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
        test     rdx, rdx
-       jne      SHORT G_M51094_IG25
+       jne      SHORT G_M51094_IG30
                        ;; size=5 bbWeight=0.00 PerfScore 0.00
-G_M51094_IG28:        ; bbWeight=0.00, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG25:        ; bbWeight=0.00, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rdx]
        mov      r13, rbx
        ; gcrRegs +[r13]
        test     r13, r13
-       jne      SHORT G_M51094_IG34
-                       ;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M51094_IG29:        ; bbWeight=0.00, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0000 {}, byref
+       jne      G_M51094_IG35
+                       ;; size=12 bbWeight=0.00 PerfScore 0.00
+G_M51094_IG26:        ; bbWeight=0.00, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rbx]
        mov      gword ptr [rbp-0x68], r13
        ; GC ptr vars +{V11}
        xor      edx, edx
        mov      dword ptr [rbp-0x40], edx
-                       ;; size=9 bbWeight=0.00 PerfScore 0.00
...

+23 (+1.94%) : 596369.dasm - System.Text.Json.Serialization.Tests.PolymorphicTests+PolymorphicEqualityComparer`1[System.Canon]:Equals(System.Canon,System.__Canon):ubyte:this (Tier1)

@@ -10,40 +10,40 @@
 ; Final local variable assignments
 ;
 ;* V00 this         [V00    ] (  0,  0   )     ref  ->  zero-ref    this class-hnd single-def <System.Text.Json.Serialization.Tests.PolymorphicTests+PolymorphicEqualityComparer`1[System.__Canon]>
-;  V01 arg1         [V01,T02] (  9, 14.95)     ref  ->  rbx         class-hnd single-def <System.__Canon>
-;  V02 arg2         [V02,T04] (  8, 12.03)     ref  ->  rsi         class-hnd single-def <System.__Canon>
+;  V01 arg1         [V01,T02] (  9, 14.89)     ref  ->  rbx         class-hnd single-def <System.__Canon>
+;  V02 arg2         [V02,T04] (  9, 12.08)     ref  ->  rsi         class-hnd single-def <System.__Canon>
 ;  V03 loc0         [V03,T15] (  3,  2.74)     ref  ->  rdi         class-hnd exact single-def <System.RuntimeType>
-;  V04 loc1         [V04,T24] (  2,  1.26)     ref  ->  rbp         class-hnd exact single-def <<unknown class>>
+;  V04 loc1         [V04,T25] (  2,  1.26)     ref  ->  rbp         class-hnd exact single-def <<unknown class>>
 ;  V05 loc2         [V05,T18] (  4,  2.51)     ref  ->  r14         class-hnd single-def <System.Collections.IEnumerable>
-;  V06 loc3         [V06,T27] (  3,  0.77)     ref  ->  r15         class-hnd single-def <System.Collections.IEnumerable>
+;  V06 loc3         [V06,T28] (  3,  0.77)     ref  ->  r15         class-hnd single-def <System.Collections.IEnumerable>
 ;  V07 loc4         [V07,T11] (  4,  5.37)     ref  ->  rdi         class-hnd single-def <System.Reflection.PropertyInfo[]>
 ;  V08 loc5         [V08,T08] (  5,  8.51)     int  ->  r14        
 ;  V09 loc6         [V09,T00] (  8, 17.48)     ref  ->  r12         class-hnd <System.Reflection.PropertyInfo>
 ;  V10 OutArgs      [V10    ] (  1,  1   )  struct (48) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V11 tmp1         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Object>
-;  V12 tmp2         [V12,T25] (  3,  1.03)     ref  ->  r12         class-hnd "impAppendStmt" <<unknown class>>
-;  V13 tmp3         [V13,T28] (  3,  0.51)     ref  ->  r13         class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+;  V12 tmp2         [V12,T26] (  3,  1.03)     ref  ->  r12         class-hnd "impAppendStmt" <<unknown class>>
+;  V13 tmp3         [V13,T29] (  3,  0.51)     ref  ->  r13         class-hnd single-def "Inline stloc first use temp" <<unknown class>>
 ;  V14 tmp4         [V14,T16] (  5,  2.57)     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V15 tmp5         [V15,T29] (  3,  0.51)     ref  ->   r8         class-hnd "Inline return value spill temp" <<unknown class>>
-;  V16 tmp6         [V16,T30] (  3,  0.51)     ref  ->   r8         class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+;  V15 tmp5         [V15,T30] (  3,  0.51)     ref  ->   r8         class-hnd "Inline return value spill temp" <<unknown class>>
+;  V16 tmp6         [V16,T31] (  3,  0.51)     ref  ->   r8         class-hnd single-def "Inline stloc first use temp" <<unknown class>>
 ;  V17 tmp7         [V17,T17] (  5,  2.57)     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V18 tmp8         [V18    ] ( 12,  5.64)  struct (24) [rsp+0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]>
-;  V19 tmp9         [V19,T22] (  4,  1.49)     ref  ->  rdi         class-hnd "Inline return value spill temp" <System.Reflection.PropertyInfo[]>
-;  V20 tmp10        [V20,T23] (  3,  1.34)     ref  ->  rdi         class-hnd exact single-def "dup spill" <System.Reflection.PropertyInfo[]>
+;  V19 tmp9         [V19,T23] (  4,  1.49)     ref  ->  rdi         class-hnd "Inline return value spill temp" <System.Reflection.PropertyInfo[]>
+;  V20 tmp10        [V20,T24] (  3,  1.34)     ref  ->  rdi         class-hnd exact single-def "dup spill" <System.Reflection.PropertyInfo[]>
 ;  V21 tmp11        [V21,T14] (  7,  3.55)     int  ->  r14         "Inlining Arg"
-;  V22 tmp12        [V22,T21] (  5,  1.70)     ref  ->  rdi         class-hnd single-def "Inline stloc first use temp" <System.Reflection.PropertyInfo[]>
-;  V23 tmp13        [V23,T36] (  3,  0.22)     ref  ->  r12         class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.PropertyInfo[]>
-;  V24 tmp14        [V24,T33] (  3,  0.29)   byref  ->  rcx         single-def "impAppendStmt"
-;  V25 tmp15        [V25,T34] (  3,  0.29)   byref  ->  rdx         single-def "impAppendStmt"
-;  V26 tmp16        [V26,T37] (  2,  0.15)     int  ->  r14         "Inline return value spill temp"
-;  V27 tmp17        [V27,T32] (  3,  0.44)     int  ->   r8         "Inlining Arg"
-;  V28 tmp18        [V28,T35] (  2,  0.29)    long  ->   r8         "Inlining Arg"
-;  V29 tmp19        [V29,T31] (  4,  0.44)    long  ->   r8         "Inlining Arg"
+;  V22 tmp12        [V22,T22] (  5,  1.70)     ref  ->  rdi         class-hnd single-def "Inline stloc first use temp" <System.Reflection.PropertyInfo[]>
+;  V23 tmp13        [V23,T37] (  3,  0.22)     ref  ->  r12         class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.PropertyInfo[]>
+;  V24 tmp14        [V24,T34] (  3,  0.29)   byref  ->  rcx         single-def "impAppendStmt"
+;  V25 tmp15        [V25,T35] (  3,  0.29)   byref  ->  rdx         single-def "impAppendStmt"
+;  V26 tmp16        [V26,T38] (  2,  0.15)     int  ->  r14         "Inline return value spill temp"
+;  V27 tmp17        [V27,T33] (  3,  0.44)     int  ->   r8         "Inlining Arg"
+;  V28 tmp18        [V28,T36] (  2,  0.29)    long  ->   r8         "Inlining Arg"
+;  V29 tmp19        [V29,T32] (  4,  0.44)    long  ->   r8         "Inlining Arg"
 ;  V30 tmp20        [V30,T03] (  7, 15.54)     ref  ->  rbp         "guarded devirt return temp"
 ;* V31 tmp21        [V31    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimePropertyInfo>
 ;* V32 tmp22        [V32    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Object>
 ;* V33 tmp23        [V33    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo>
-;  V34 tmp24        [V34,T38] (  3,  0   )     ref  ->  rbx         class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V34 tmp24        [V34,T39] (  3,  0   )     ref  ->  rbx         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;  V35 tmp25        [V35,T06] (  4, 11.65)     ref  ->  rcx         class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
 ;* V36 tmp26        [V36,T19] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V37 tmp27        [V37    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
@@ -52,7 +52,7 @@
 ;* V40 tmp30        [V40    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimePropertyInfo>
 ;* V41 tmp31        [V41    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Object>
 ;* V42 tmp32        [V42    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo>
-;  V43 tmp33        [V43,T39] (  3,  0   )     ref  ->  rbx         class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V43 tmp33        [V43,T40] (  3,  0   )     ref  ->  rbx         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;  V44 tmp34        [V44,T07] (  4, 11.65)     ref  ->  rcx         class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
 ;* V45 tmp35        [V45,T20] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V46 tmp36        [V46    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
@@ -62,16 +62,17 @@
 ;  V50 tmp40        [V50,T13] (  3,  3.88)     int  ->   r8         "guarded devirt return temp"
 ;* V51 tmp41        [V51    ] (  0,  0   )     ref  ->  zero-ref    "guarded devirt arg temp"
 ;* V52 tmp42        [V52    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
-;  V53 tmp43        [V53,T26] (  3,  1.03)     int  ->  rax         "Single return block return value"
+;  V53 tmp43        [V53,T27] (  3,  1.03)     int  ->  rax         "Single return block return value"
 ;  V54 tmp44        [V54    ] (  6,  2.37)     ref  ->  [rsp+0x30]  do-not-enreg[X] addr-exposed "field V18._items (fldOffset=0x0)" P-DEP
 ;  V55 tmp45        [V55    ] (  2,  0.97)     ref  ->  [rsp+0x38]  do-not-enreg[X] addr-exposed "field V18._item (fldOffset=0x8)" P-DEP
 ;  V56 tmp46        [V56    ] (  5,  3.27)     int  ->  [rsp+0x40]  do-not-enreg[X] addr-exposed "field V18._count (fldOffset=0x10)" P-DEP
 ;  V57 tmp47        [V57    ] (  2,  1.26)     int  ->  [rsp+0x44]  do-not-enreg[X] addr-exposed "field V18._capacity (fldOffset=0x14)" P-DEP
-;  V58 tmp48        [V58,T40] (  2,  0   )     ref  ->  rdx         "argument with side effect"
-;  V59 tmp49        [V59,T41] (  2,  0   )     ref  ->  rdx         "argument with side effect"
+;  V58 tmp48        [V58,T41] (  2,  0   )     ref  ->  rdx         "argument with side effect"
+;  V59 tmp49        [V59,T42] (  2,  0   )     ref  ->  rdx         "argument with side effect"
 ;  V60 cse0         [V60,T10] (  3,  5.83)     ref  ->  rcx         "CSE - aggressive"
 ;  V61 cse1         [V61,T01] (  3, 17.48)     ref  ->  rcx         "CSE - aggressive"
 ;  V62 rat0         [V62,T09] (  6,  8   )     ref  ->  r14         class-hnd "replacement local" <System.Collections.IEnumerable>
+;  V63 rat1         [V63,T21] (  5,  1.90)     ref  ->  r15         class-hnd "replacement local" <System.Collections.IEnumerable>
 ;
 ; Lcl frame size = 72
 
@@ -96,9 +97,9 @@ G_M57964_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
                        ;; size=39 bbWeight=1 PerfScore 12.33
 G_M57964_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        test     rbx, rbx
-       je       G_M57964_IG34
+       je       G_M57964_IG37
        test     rsi, rsi
-       je       G_M57964_IG34
+       je       G_M57964_IG37
        mov      rcx, rbx
        ; gcrRegs +[rcx]
        call     <unknown method>
@@ -112,7 +113,7 @@ G_M57964_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
        cmp      rax, rdi
-       jne      G_M57964_IG46
+       jne      G_M57964_IG49
        mov      rdx, 0xD1FFAB1E      ; const ptr
        mov      rbp, gword ptr [rdx]
        ; gcrRegs +[rbp]
@@ -127,7 +128,7 @@ G_M57964_IG03:        ; bbWeight=0.50, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byr
        cmp      qword ptr [r14], rdx
        je       SHORT G_M57964_IG05
                        ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M57964_IG04:        ; bbWeight=0.24, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M57964_IG04:        ; bbWeight=0.18, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[r14]
        mov      rdx, rbx
        ; gcrRegs +[rdx]
@@ -138,12 +139,12 @@ G_M57964_IG04:        ; bbWeight=0.24, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRe
        mov      r14, rax
        ; gcrRegs +[r14]
        jmp      SHORT G_M57964_IG06
-                       ;; size=23 bbWeight=0.24 PerfScore 0.90
-G_M57964_IG05:        ; bbWeight=0.26, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+                       ;; size=23 bbWeight=0.18 PerfScore 0.68
+G_M57964_IG05:        ; bbWeight=0.32, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax r14]
        xor      r14, r14
        ; gcrRegs +[r14]
-                       ;; size=3 bbWeight=0.26 PerfScore 0.07
+                       ;; size=3 bbWeight=0.32 PerfScore 0.08
 G_M57964_IG06:        ; bbWeight=1, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=0000 {}, byref
        test     r14, r14
        jne      G_M57964_IG29
@@ -168,18 +169,18 @@ G_M57964_IG08:        ; bbWeight=0.74, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
        ; gcrRegs -[rcx rdi r8]
        ; gcr arg pop 0
        cmp      dword ptr [rsp+0x40], 0
-       je       G_M57964_IG35
+       je       G_M57964_IG38
        cmp      dword ptr [rsp+0x40], 1
        je       G_M57964_IG28
                        ;; size=49 bbWeight=0.74 PerfScore 8.36
 G_M57964_IG09:        ; bbWeight=0.52, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        mov      r14d, dword ptr [rsp+0x40]
        test     r14d, r14d
-       jl       G_M57964_IG36
+       jl       G_M57964_IG39
        mov      rdi, gword ptr [rsp+0x30]
        ; gcrRegs +[rdi]
        test     rdi, rdi
-       je       G_M57964_IG37
+       je       G_M57964_IG40
        cmp      dword ptr [rdi+0x08], r14d
        jne      G_M57964_IG25
                        ;; size=38 bbWeight=0.52 PerfScore 4.41
@@ -212,11 +213,11 @@ G_M57964_IG13:        ; bbWeight=1.94, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
        mov      rcx, gword ptr [r12+0x18]
        ; gcrRegs +[rcx]
        test     rcx, rcx
-       je       G_M57964_IG39
+       je       G_M57964_IG42
                        ;; size=42 bbWeight=1.94 PerfScore 18.94
 G_M57964_IG14:        ; bbWeight=1.94, gcrefRegs=10CA {rcx rbx rsi rdi r12}, byrefRegs=0000 {}, byref
        test     rcx, rcx
-       je       G_M57964_IG44
+       je       G_M57964_IG47
                        ;; size=9 bbWeight=1.94 PerfScore 2.43
 G_M57964_IG15:        ; bbWeight=7.77, gcrefRegs=10CA {rcx rbx rsi rdi r12}, byrefRegs=0000 {}, byref
        xor      rdx, rdx
@@ -241,12 +242,12 @@ G_M57964_IG16:        ; bbWeight=7.77, gcrefRegs=10CA {rcx rbx rsi rdi r12}, byr
        mov      rcx, gword ptr [r12+0x18]
        ; gcrRegs +[rcx]
        test     rcx, rcx
-       je       G_M57964_IG40
+       je       G_M57964_IG43
                        ;; size=40 bbWeight=7.77 PerfScore 64.09
 G_M57964_IG17:        ; bbWeight=1.94, gcrefRegs=00EA {rcx rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax r12]
        test     rcx, rcx
-       je       G_M57964_IG45
+       je       G_M57964_IG48
                        ;; size=9 bbWeight=1.94 PerfScore 2.43
 G_M57964_IG18:        ; bbWeight=7.77, gcrefRegs=00EA {rcx rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
        xor      rdx, rdx
@@ -272,12 +273,12 @@ G_M57964_IG19:        ; bbWeight=7.77, gcrefRegs=00EA {rcx rbx rbp rsi rdi}, byr
 G_M57964_IG20:        ; bbWeight=1.94, gcrefRegs=00EC {rdx rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
        test     rbp, rbp
-       je       G_M57964_IG43
-       test     rdx, rdx
        je       G_M57964_IG46
+       test     rdx, rdx
+       je       G_M57964_IG49
        mov      rax, 0xD1FFAB1E      ; System.RuntimeType
        cmp      qword ptr [rbp], rax
-       jne      G_M57964_IG42
+       jne      G_M57964_IG45
        xor      r8d, r8d
        cmp      rdx, rbp
        sete     r8b
@@ -286,7 +287,7 @@ G_M57964_IG21:        ; bbWeight=1.94, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
        ; gcrRegs -[rdx rbp]
        movzx    rax, r8b
        test     eax, eax
-       je       G_M57964_IG46
+       je       G_M57964_IG49
                        ;; size=12 bbWeight=1.94 PerfScore 2.91
 G_M57964_IG22:        ; bbWeight=1.94, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
        inc      r14d
@@ -328,7 +329,7 @@ G_M57964_IG25:        ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=00C
        mov      r8d, r14d
        shl      r8, 3
        cmp      r8, 0x400
-       ja       G_M57964_IG38
+       ja       G_M57964_IG41
        call     <unknown method>
        ; gcrRegs -[rax rdi]
        ; byrRegs -[rcx rdx]
@@ -353,7 +354,7 @@ G_M57964_IG27:        ; bbWeight=1.94, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRe
        ; gcr arg pop 0
        mov      rbp, rax
        ; gcrRegs +[rbp]
-       jmp      G_M57964_IG41
+       jmp      G_M57964_IG44
                        ;; size=28 bbWeight=1.94 PerfScore 19.42
 G_M57964_IG28:        ; bbWeight=0.22, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax rbp rdi r12]
@@ -374,8 +375,20 @@ G_M57964_IG28:        ; bbWeight=0.22, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
        ; gcr arg pop 0
        jmp      G_M57964_IG12
                        ;; size=43 bbWeight=0.22 PerfScore 1.40
-G_M57964_IG29:        ; bbWeight=0.26, gcrefRegs=4060 {rbp rsi r14}, byrefRegs=0000 {}, byref
+G_M57964_IG29:        ; bbWeight=0.26, gcrefRegs=4060 {rbp rsi r14}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rbx rdi] +[rbp r14]
+       mov      r15, rsi
+       ; gcrRegs +[r15]
+       test     r15, r15
+       je       SHORT G_M57964_IG32
+                       ;; size=8 bbWeight=0.26 PerfScore 0.39
+G_M57964_IG30:        ; bbWeight=0.13, gcrefRegs=C060 {rbp rsi r14 r15}, byrefRegs=0000 {}, byref, isz
+       mov      rdx, 0xD1FFAB1E      ; System.Text.Json.Serialization.Tests.PolymorphicTests+PolymorphicClass+DerivedCollection_TypeDiscriminator
+       cmp      qword ptr [r15], rdx
+       je       SHORT G_M57964_IG32
+                       ;; size=15 bbWeight=0.13 PerfScore 0.55
+G_M57964_IG31:        ; bbWeight=0.05, gcrefRegs=4060 {rbp rsi r14}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[r15]
        mov      rdx, rsi
...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
aspnet.run.windows.x64.checked.mch 5 0 5 0 -0 +119
benchmarks.run.windows.x64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.windows.x64.checked.mch 1 0 1 0 -0 +38
benchmarks.run_tiered.windows.x64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.windows.x64.checked.mch 2 2 0 0 -68 +0
libraries.crossgen2.windows.x64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.x64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.windows.x64.Release.mch 20 2 14 4 -11 +178
librariestestsnotieredcompilation.run.windows.x64.Release.mch 0 0 0 0 -0 +0
realworld.run.windows.x64.checked.mch 0 0 0 0 -0 +0
smoke_tests.nativeaot.windows.x64.checked.mch 0 0 0 0 -0 +0
28 4 20 4 -79 +335

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
aspnet.run.windows.x64.checked.mch 113,023 48,462 64,561 972 (0.85%) 1,384 (1.21%)
benchmarks.run.windows.x64.checked.mch 27,947 4 27,943 4 (0.01%) 231 (0.82%)
benchmarks.run_pgo.windows.x64.checked.mch 100,902 50,170 50,732 131 (0.13%) 251 (0.25%)
benchmarks.run_tiered.windows.x64.checked.mch 54,187 36,844 17,343 2 (0.00%) 68 (0.13%)
coreclr_tests.run.windows.x64.checked.mch 573,709 341,113 232,596 301 (0.05%) 703 (0.12%)
libraries.crossgen2.windows.x64.checked.mch 243,023 15 243,008 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.x64.checked.mch 305,581 6 305,575 9 (0.00%) 2,060 (0.67%)
libraries_tests.run.windows.x64.Release.mch 681,207 485,176 196,031 2,467 (0.36%) 3,410 (0.50%)
librariestestsnotieredcompilation.run.windows.x64.Release.mch 317,594 21,886 295,708 10 (0.00%) 2,192 (0.69%)
realworld.run.windows.x64.checked.mch 36,489 3 36,486 3 (0.01%) 399 (1.08%)
smoke_tests.nativeaot.windows.x64.checked.mch 32,441 10 32,431 0 (0.00%) 3 (0.01%)
2,486,103 983,689 1,502,414 3,899 (0.16%) 10,701 (0.43%)

jit-analyze output

aspnet.run.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 41693796 (overridden on cmd)
Total bytes of diff: 41693915 (overridden on cmd)
Total bytes of delta: 119 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          33 : 92536.dasm (16.84 % of base)
          24 : 98626.dasm (10.57 % of base)
          23 : 96259.dasm (11.73 % of base)
          23 : 113150.dasm (11.73 % of base)
          16 : 96756.dasm (3.09 % of base)

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

Top method regressions (bytes):
          33 (16.84 % of base) : 92536.dasm - OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
          24 (10.57 % of base) : 98626.dasm - System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)
          23 (11.73 % of base) : 96259.dasm - OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
          23 (11.73 % of base) : 113150.dasm - OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
          16 (3.09 % of base) : 96756.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)

Top method regressions (percentages):
          33 (16.84 % of base) : 92536.dasm - OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
          23 (11.73 % of base) : 96259.dasm - OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
          23 (11.73 % of base) : 113150.dasm - OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
          24 (10.57 % of base) : 98626.dasm - System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)
          16 (3.09 % of base) : 96756.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)

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


benchmarks.run_pgo.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 35261613 (overridden on cmd)
Total bytes of diff: 35261651 (overridden on cmd)
Total bytes of delta: 38 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          38 : 100256.dasm (11.95 % of base)

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

Top method regressions (bytes):
          38 (11.95 % of base) : 100256.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)

Top method regressions (percentages):
          38 (11.95 % of base) : 100256.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)

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


coreclr_tests.run.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 392818845 (overridden on cmd)
Total bytes of diff: 392818777 (overridden on cmd)
Total bytes of delta: -68 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -43 : 371075.dasm (-3.48 % of base)
         -25 : 367012.dasm (-1.94 % of base)

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

Top method improvements (bytes):
         -43 (-3.48 % of base) : 371075.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
         -25 (-1.94 % of base) : 367012.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)

Top method improvements (percentages):
         -43 (-3.48 % of base) : 371075.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
         -25 (-1.94 % of base) : 367012.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.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 280544593 (overridden on cmd)
Total bytes of diff: 280544760 (overridden on cmd)
Total bytes of delta: 167 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          27 : 385672.dasm (1.89 % of base)
          25 : 219872.dasm (1.08 % of base)
          23 : 596369.dasm (1.94 % of base)
          21 : 363657.dasm (0.74 % of base)
          16 : 490037.dasm (1.33 % of base)
          15 : 322478.dasm (1.08 % of base)
          12 : 439220.dasm (1.57 % of base)
          12 : 83487.dasm (0.82 % of base)
           7 : 367365.dasm (0.36 % of base)
           5 : 120114.dasm (0.87 % of base)
           4 : 364035.dasm (1.72 % of base)
           4 : 48495.dasm (0.79 % of base)
           4 : 342340.dasm (0.55 % of base)
           3 : 219856.dasm (0.38 % of base)

Top file improvements (bytes):
          -7 : 621014.dasm (-0.47 % of base)
          -4 : 168536.dasm (-0.76 % of base)

16 total files with Code Size differences (2 improved, 14 regressed), 4 unchanged.

Top method regressions (bytes):
          27 (1.89 % of base) : 385672.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
          25 (1.08 % of base) : 219872.dasm - System.Collections.Tests.IEnumerable_NonGeneric_Tests:IEnumerable_NonGeneric_Enumerator_Current_ReturnsSameObjectsOnDifferentEnumerators(int):this (Tier1)
          23 (1.94 % of base) : 596369.dasm - System.Text.Json.Serialization.Tests.PolymorphicTests+PolymorphicEqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this (Tier1)
          21 (0.74 % of base) : 363657.dasm - Xunit.Sdk.TestInvoker`1+<<RunAsync>b__47_0>d[System.__Canon]:MoveNext():this (Tier1)
          16 (1.33 % of base) : 490037.dasm - Xunit.MemberDataAttributeBase:GetData(System.Reflection.MethodInfo):System.Collections.Generic.IEnumerable`1[System.Object[]]:this (Tier1)
          15 (1.08 % of base) : 322478.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
          12 (1.57 % of base) : 439220.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
          12 (0.82 % of base) : 83487.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
           7 (0.36 % of base) : 367365.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
           5 (0.87 % of base) : 120114.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
           4 (0.55 % of base) : 342340.dasm - System.Collections.Generic.List`1[int]:AddRange(System.Collections.Generic.IEnumerable`1[int]):this (Tier1)
           4 (0.79 % of base) : 48495.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
           4 (1.72 % of base) : 364035.dasm - System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo:GetSingleParsedValue():System.Object:this (Tier1)
           3 (0.38 % of base) : 219856.dasm - System.Collections.Tests.IEnumerable_NonGeneric_Tests:CloneEnumerator_MatchesOriginal(int):this (Tier1)

Top method improvements (bytes):
          -7 (-0.47 % of base) : 621014.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:<EnsureRequiredMembersCalculated>g__tryCalculateRequiredMembers|191_0(byref):ubyte:this (Tier1)
          -4 (-0.76 % of base) : 168536.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)

Top method regressions (percentages):
          23 (1.94 % of base) : 596369.dasm - System.Text.Json.Serialization.Tests.PolymorphicTests+PolymorphicEqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this (Tier1)
          27 (1.89 % of base) : 385672.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
           4 (1.72 % of base) : 364035.dasm - System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo:GetSingleParsedValue():System.Object:this (Tier1)
          12 (1.57 % of base) : 439220.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
          16 (1.33 % of base) : 490037.dasm - Xunit.MemberDataAttributeBase:GetData(System.Reflection.MethodInfo):System.Collections.Generic.IEnumerable`1[System.Object[]]:this (Tier1)
          25 (1.08 % of base) : 219872.dasm - System.Collections.Tests.IEnumerable_NonGeneric_Tests:IEnumerable_NonGeneric_Enumerator_Current_ReturnsSameObjectsOnDifferentEnumerators(int):this (Tier1)
          15 (1.08 % of base) : 322478.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
           5 (0.87 % of base) : 120114.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
          12 (0.82 % of base) : 83487.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
           4 (0.79 % of base) : 48495.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
          21 (0.74 % of base) : 363657.dasm - Xunit.Sdk.TestInvoker`1+<<RunAsync>b__47_0>d[System.__Canon]:MoveNext():this (Tier1)
           4 (0.55 % of base) : 342340.dasm - System.Collections.Generic.List`1[int]:AddRange(System.Collections.Generic.IEnumerable`1[int]):this (Tier1)
           3 (0.38 % of base) : 219856.dasm - System.Collections.Tests.IEnumerable_NonGeneric_Tests:CloneEnumerator_MatchesOriginal(int):this (Tier1)
           7 (0.36 % of base) : 367365.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)

Top method improvements (percentages):
          -4 (-0.76 % of base) : 168536.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
          -7 (-0.47 % of base) : 621014.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:<EnsureRequiredMembersCalculated>g__tryCalculateRequiredMembers|191_0(byref):ubyte:this (Tier1)

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